Skip to main content

at_commands/generated/
translate.rs

1// Copyright 2021 The Fuchsia Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5// This file is generated code.  Please do not edit it; instead edit the AT
6// command definitions used to generate it.
7
8use crate::lowlevel;
9use crate::highlevel;
10use crate::serde::DeserializeErrorCause;
11use crate::translate_util::*;
12use num_traits::FromPrimitive;
13
14pub fn raise_command(lowlevel: &lowlevel::Command) -> Result<highlevel::Command, DeserializeErrorCause> {
15    match lowlevel {
16        lowlevel::Command::Execute { name, is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter, .. }} if
17            name == "TESTEX"
18            && delimiter == &None
19        => {
20            Ok(highlevel::Command::Testex {
21            })
22        },
23        lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, .. }} if
24            name == "TESTEXEXT"
25            && delimiter == &None
26        => {
27            Ok(highlevel::Command::Testexext {
28            })
29        },
30        lowlevel::Command::Execute { name, is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter, .. }} if
31            name == "TESTNEX"
32            && delimiter == &None
33        => {
34            Ok(highlevel::Command::TestCommand {
35            })
36        },
37        lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
38            name == "TESTEXEXTFI"
39            && delimiter == &Some(String::from("="))
40            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
41        => {
42            let arg_vec = extract_vec_from_args(&arguments)?;
43            let field_option = arg_vec.get(0);
44            let field_option_unwrapped = field_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
45            let field_option_unwrapped_primitive = extract_primitive_from_field(field_option_unwrapped, &arguments)?;
46            let field = extract_int_from_primitive(field_option_unwrapped_primitive, &arguments)?;
47            Ok(highlevel::Command::Testexextfi {
48                field,
49            })
50        },
51        lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
52            name == "TESTEXEXTFIC"
53            && delimiter == &Some(String::from("="))
54            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
55        => {
56            let arg_vec = extract_vec_from_args(&arguments)?;
57            let field_option = arg_vec.get(0);
58            let field_option_unwrapped = field_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
59            let field_option_unwrapped_primitive = extract_primitive_from_field(field_option_unwrapped, &arguments)?;
60            let field = extract_int_from_primitive(field_option_unwrapped_primitive, &arguments)?;
61            Ok(highlevel::Command::Testexextfic {
62                field,
63            })
64        },
65        lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
66            name == "TESTNSD"
67            && delimiter == &Some(String::from(">"))
68            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
69        => {
70            let arg_vec = extract_vec_from_args(&arguments)?;
71            let field_option = arg_vec.get(0);
72            let field_option_unwrapped = field_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
73            let field_option_unwrapped_primitive = extract_primitive_from_field(field_option_unwrapped, &arguments)?;
74            let field = extract_int_from_primitive(field_option_unwrapped_primitive, &arguments)?;
75            Ok(highlevel::Command::Testnsd {
76                field,
77            })
78        },
79        lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
80            name == "TESTNST"
81            && delimiter == &Some(String::from("="))
82            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
83        => {
84            let arg_vec = extract_vec_from_args(&arguments)?;
85            let field_option = arg_vec.get(0);
86            let field_option_unwrapped = field_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
87            let field_option_unwrapped_primitive = extract_primitive_from_field(field_option_unwrapped, &arguments)?;
88            let field = extract_int_from_primitive(field_option_unwrapped_primitive, &arguments)?;
89            Ok(highlevel::Command::Testnst {
90                field,
91            })
92        },
93        lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
94            name == "TESTNSDNST"
95            && delimiter == &Some(String::from(">"))
96            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
97        => {
98            let arg_vec = extract_vec_from_args(&arguments)?;
99            let field_option = arg_vec.get(0);
100            let field_option_unwrapped = field_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
101            let field_option_unwrapped_primitive = extract_primitive_from_field(field_option_unwrapped, &arguments)?;
102            let field = extract_int_from_primitive(field_option_unwrapped_primitive, &arguments)?;
103            Ok(highlevel::Command::Testnsdnst {
104                field,
105            })
106        },
107        lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
108            name == "TESTNOD"
109            && delimiter == &None
110            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
111        => {
112            let arg_vec = extract_vec_from_args(&arguments)?;
113            let field_option = arg_vec.get(0);
114            let field_option_unwrapped = field_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
115            let field_option_unwrapped_primitive = extract_primitive_from_field(field_option_unwrapped, &arguments)?;
116            let field = extract_int_from_primitive(field_option_unwrapped_primitive, &arguments)?;
117            Ok(highlevel::Command::Testnod {
118                field,
119            })
120        },
121        lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
122            name == "TESTEXEXTFS"
123            && delimiter == &Some(String::from("="))
124            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
125        => {
126            let arg_vec = extract_vec_from_args(&arguments)?;
127            let field_option = arg_vec.get(0);
128            let field_option_unwrapped = field_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
129            let field_option_unwrapped_primitive = extract_primitive_from_field(field_option_unwrapped, &arguments)?;
130            let field = field_option_unwrapped_primitive.clone();
131            Ok(highlevel::Command::Testexextfs {
132                field,
133            })
134        },
135        lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
136            name == "TESTEXEXTFSI"
137            && delimiter == &Some(String::from("="))
138            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
139        => {
140            let arg_vec = extract_vec_from_args(&arguments)?;
141            let field1_option = arg_vec.get(0);
142            let field1_option_unwrapped = field1_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
143            let field1_option_unwrapped_primitive = extract_primitive_from_field(field1_option_unwrapped, &arguments)?;
144            let field1 = field1_option_unwrapped_primitive.clone();
145            let field2_option = arg_vec.get(1);
146            let field2_option_unwrapped = field2_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
147            let field2_option_unwrapped_primitive = extract_primitive_from_field(field2_option_unwrapped, &arguments)?;
148            let field2 = extract_int_from_primitive(field2_option_unwrapped_primitive, &arguments)?;
149            Ok(highlevel::Command::Testexextfsi {
150                field1,
151                field2,
152            })
153        },
154        lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
155            name == "TESTEXEXTFSIC"
156            && delimiter == &Some(String::from("="))
157            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
158        => {
159            let arg_vec = extract_vec_from_args(&arguments)?;
160            let field1_option = arg_vec.get(0);
161            let field1_option_unwrapped = field1_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
162            let field1_option_unwrapped_primitive = extract_primitive_from_field(field1_option_unwrapped, &arguments)?;
163            let field1 = field1_option_unwrapped_primitive.clone();
164            let field2_option = arg_vec.get(1);
165            let field2_option_unwrapped = field2_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
166            let field2_option_unwrapped_primitive = extract_primitive_from_field(field2_option_unwrapped, &arguments)?;
167            let field2 = extract_int_from_primitive(field2_option_unwrapped_primitive, &arguments)?;
168            Ok(highlevel::Command::Testexextfsic {
169                field1,
170                field2,
171            })
172        },
173        lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
174            name == "TESTIO"
175            && delimiter == &Some(String::from("="))
176            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
177        => {
178            let arg_vec = extract_vec_from_args(&arguments)?;
179            let field1_option = arg_vec.get(0);
180            let field1_option_unwrapped = field1_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
181            let field1_option_unwrapped_primitive = extract_primitive_from_field(field1_option_unwrapped, &arguments)?;
182            let field1 = extract_int_from_primitive(field1_option_unwrapped_primitive, &arguments)?;
183            let field2_option = arg_vec.get(1);
184            let field2 = match field2_option {
185                Some(field2_option_unwrapped) if !field2_option_unwrapped.is_empty() => {
186                    let field2_option_unwrapped_primitive = extract_primitive_from_field(field2_option_unwrapped, &arguments)?;
187                    let field2_unwrapped = extract_int_from_primitive(field2_option_unwrapped_primitive, &arguments)?;
188                    Some(field2_unwrapped)
189                }
190                _ => None,
191            };
192            Ok(highlevel::Command::Testio {
193                field1,
194                field2,
195            })
196        },
197        lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
198            name == "TESTALLOPT"
199            && delimiter == &Some(String::from("="))
200            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
201        => {
202            let arg_vec = extract_vec_from_args(&arguments)?;
203            let field1_option = arg_vec.get(0);
204            let field1 = match field1_option {
205                Some(field1_option_unwrapped) if !field1_option_unwrapped.is_empty() => {
206                    let field1_option_unwrapped_primitive = extract_primitive_from_field(field1_option_unwrapped, &arguments)?;
207                    let field1_unwrapped = extract_int_from_primitive(field1_option_unwrapped_primitive, &arguments)?;
208                    Some(field1_unwrapped)
209                }
210                _ => None,
211            };
212            let field2_option = arg_vec.get(1);
213            let field2 = match field2_option {
214                Some(field2_option_unwrapped) if !field2_option_unwrapped.is_empty() => {
215                    let field2_option_unwrapped_primitive = extract_primitive_from_field(field2_option_unwrapped, &arguments)?;
216                    let field2_unwrapped = extract_int_from_primitive(field2_option_unwrapped_primitive, &arguments)?;
217                    Some(field2_unwrapped)
218                }
219                _ => None,
220            };
221            let field3_option = arg_vec.get(2);
222            let field3 = match field3_option {
223                Some(field3_option_unwrapped) if !field3_option_unwrapped.is_empty() => {
224                    let field3_option_unwrapped_primitive = extract_primitive_from_field(field3_option_unwrapped, &arguments)?;
225                    let field3_unwrapped = extract_int_from_primitive(field3_option_unwrapped_primitive, &arguments)?;
226                    Some(field3_unwrapped)
227                }
228                _ => None,
229            };
230            Ok(highlevel::Command::Testallopt {
231                field1,
232                field2,
233                field3,
234            })
235        },
236        lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
237            name == "TESTL"
238            && delimiter == &Some(String::from("="))
239            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
240        => {
241            let arg_vec = extract_vec_from_args(&arguments)?;
242            let mut field = Vec::new();
243            for field_element_raw in arg_vec[0..].iter() {
244                let field_element_option = if field_element_raw.is_empty() { None } else { Some(field_element_raw) };
245                let field_element_option_unwrapped = field_element_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
246                let field_element_option_unwrapped_primitive = extract_primitive_from_field(field_element_option_unwrapped, &arguments)?;
247                let field_element = extract_int_from_primitive(field_element_option_unwrapped_primitive, &arguments)?;
248                field.push(field_element);
249            }
250            Ok(highlevel::Command::Testl {
251                field,
252            })
253        },
254        lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
255            name == "TESTOL"
256            && delimiter == &Some(String::from("="))
257            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
258        => {
259            let arg_vec = extract_vec_from_args(&arguments)?;
260            let mut field = Vec::new();
261            for field_element_raw in arg_vec[0..].iter() {
262                let field_element_option = if field_element_raw.is_empty() { None } else { Some(field_element_raw) };
263                let field_element = match field_element_option {
264                    Some(field_element_option_unwrapped) if !field_element_option_unwrapped.is_empty() => {
265                        let field_element_option_unwrapped_primitive = extract_primitive_from_field(field_element_option_unwrapped, &arguments)?;
266                        let field_element_unwrapped = extract_int_from_primitive(field_element_option_unwrapped_primitive, &arguments)?;
267                        Some(field_element_unwrapped)
268                    }
269                    _ => None,
270                };
271                field.push(field_element);
272            }
273            Ok(highlevel::Command::Testol {
274                field,
275            })
276        },
277        lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
278            name == "TESTM"
279            && delimiter == &Some(String::from("="))
280            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
281        => {
282            let arg_vec = extract_vec_from_args(&arguments)?;
283            let mut field = std::collections::HashMap::new();
284            for field_element in arg_vec[0..].iter() {
285                let field_element_primitive = extract_key_from_field(field_element, &arguments)?;
286                let field_key = extract_int_from_primitive(field_element_primitive, &arguments)?;
287                let field_element_primitive = extract_value_from_field(field_element, &arguments)?;
288                let field_value = field_element_primitive.clone();
289                let _ = field.insert(field_key, field_value);
290            }   
291            Ok(highlevel::Command::Testm {
292                field,
293            })
294        },
295        lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
296            name == "TESTP"
297            && delimiter == &Some(String::from("="))
298            &&  matches!(arguments, lowlevel::Arguments::ParenthesisDelimitedArgumentLists(_))
299        => {
300            let arg_vec_vec = extract_vec_vec_from_args(&arguments)?;
301            let arg_vec = arg_vec_vec.get(0).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
302            let field_option = arg_vec.get(0);
303            let field_option_unwrapped = field_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
304            let field_option_unwrapped_primitive = extract_primitive_from_field(field_option_unwrapped, &arguments)?;
305            let field = extract_int_from_primitive(field_option_unwrapped_primitive, &arguments)?;
306            Ok(highlevel::Command::Testp {
307                field,
308            })
309        },
310        lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
311            name == "TESTPP"
312            && delimiter == &Some(String::from("="))
313            &&  matches!(arguments, lowlevel::Arguments::ParenthesisDelimitedArgumentLists(_))
314        => {
315            let arg_vec_vec = extract_vec_vec_from_args(&arguments)?;
316            let arg_vec = arg_vec_vec.get(0).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
317            let field1_option = arg_vec.get(0);
318            let field1_option_unwrapped = field1_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
319            let field1_option_unwrapped_primitive = extract_primitive_from_field(field1_option_unwrapped, &arguments)?;
320            let field1 = extract_int_from_primitive(field1_option_unwrapped_primitive, &arguments)?;
321            let arg_vec = arg_vec_vec.get(1).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
322            let field2_option = arg_vec.get(0);
323            let field2_option_unwrapped = field2_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
324            let field2_option_unwrapped_primitive = extract_primitive_from_field(field2_option_unwrapped, &arguments)?;
325            let field2 = extract_int_from_primitive(field2_option_unwrapped_primitive, &arguments)?;
326            let field3_option = arg_vec.get(1);
327            let field3_option_unwrapped = field3_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
328            let field3_option_unwrapped_primitive = extract_primitive_from_field(field3_option_unwrapped, &arguments)?;
329            let field3 = field3_option_unwrapped_primitive.clone();
330            Ok(highlevel::Command::Testpp {
331                field1,
332                field2,
333                field3,
334            })
335        },
336        lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
337            name == "TESTPMPIL"
338            && delimiter == &Some(String::from("="))
339            &&  matches!(arguments, lowlevel::Arguments::ParenthesisDelimitedArgumentLists(_))
340        => {
341            let arg_vec_vec = extract_vec_vec_from_args(&arguments)?;
342            let arg_vec = arg_vec_vec.get(0).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
343            let mut field1 = std::collections::HashMap::new();
344            for field1_element in arg_vec[0..].iter() {
345                let field1_element_primitive = extract_key_from_field(field1_element, &arguments)?;
346                let field1_key = extract_int_from_primitive(field1_element_primitive, &arguments)?;
347                let field1_element_primitive = extract_value_from_field(field1_element, &arguments)?;
348                let field1_value = field1_element_primitive.clone();
349                let _ = field1.insert(field1_key, field1_value);
350            }   
351            let arg_vec = arg_vec_vec.get(1).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
352            let field2_option = arg_vec.get(0);
353            let field2_option_unwrapped = field2_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
354            let field2_option_unwrapped_primitive = extract_primitive_from_field(field2_option_unwrapped, &arguments)?;
355            let field2 = extract_int_from_primitive(field2_option_unwrapped_primitive, &arguments)?;
356            let mut field3 = Vec::new();
357            for field3_element_raw in arg_vec[1..].iter() {
358                let field3_element_option = if field3_element_raw.is_empty() { None } else { Some(field3_element_raw) };
359                let field3_element_option_unwrapped = field3_element_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
360                let field3_element_option_unwrapped_primitive = extract_primitive_from_field(field3_element_option_unwrapped, &arguments)?;
361                let field3_element = extract_int_from_primitive(field3_element_option_unwrapped_primitive, &arguments)?;
362                field3.push(field3_element);
363            }
364            Ok(highlevel::Command::Testpmpil {
365                field1,
366                field2,
367                field3,
368            })
369        },
370        lowlevel::Command::Read { name, is_extension: false, ..} if
371            name == "TESTR"
372        => {
373            Ok(highlevel::Command::TestrRead {})
374        },
375        lowlevel::Command::Read { name, is_extension: true, ..} if
376            name == "TESTREX"
377        => {
378            Ok(highlevel::Command::TestrexRead {})
379        },
380        lowlevel::Command::Test { name, is_extension: false, ..} if
381            name == "TESTT"
382        => {
383            Ok(highlevel::Command::TesttTest {})
384        },
385        lowlevel::Command::Test { name, is_extension: true, ..} if
386            name == "TESTTEX"
387        => {
388            Ok(highlevel::Command::TesttexTest {})
389        },
390        lowlevel::Command::Execute { name, is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
391            name == "TESTENUM"
392            && delimiter == &Some(String::from("="))
393            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
394        => {
395            let arg_vec = extract_vec_from_args(&arguments)?;
396            let field_option = arg_vec.get(0);
397            let field_option_unwrapped = field_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
398            let field_option_unwrapped_primitive = extract_primitive_from_field(field_option_unwrapped, &arguments)?;
399            let field_option_unwrapped_int = extract_int_from_primitive(field_option_unwrapped_primitive, &arguments)?;
400            let field = super::types::TestOneVariantComma::from_i64(field_option_unwrapped_int).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
401            Ok(highlevel::Command::Testenum {
402                field,
403            })
404        },
405        lowlevel::Command::Execute { name, is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
406            name == "TESTBOOL"
407            && delimiter == &Some(String::from("="))
408            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
409        => {
410            let arg_vec = extract_vec_from_args(&arguments)?;
411            let field_option = arg_vec.get(0);
412            let field_option_unwrapped = field_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
413            let field_option_unwrapped_primitive = extract_primitive_from_field(field_option_unwrapped, &arguments)?;
414            let field_option_unwrapped_int = extract_int_from_primitive(field_option_unwrapped_primitive, &arguments)?;
415            let field = field_option_unwrapped_int != 0;
416            Ok(highlevel::Command::Testbool {
417                field,
418            })
419        },
420        lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, .. }} if
421            name == "TESTOTHERFILE"
422            && delimiter == &None
423        => {
424            Ok(highlevel::Command::Testotherfile {
425            })
426        },
427        lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
428            name == "BRSF"
429            && delimiter == &Some(String::from("="))
430            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
431        => {
432            let arg_vec = extract_vec_from_args(&arguments)?;
433            let features_option = arg_vec.get(0);
434            let features_option_unwrapped = features_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
435            let features_option_unwrapped_primitive = extract_primitive_from_field(features_option_unwrapped, &arguments)?;
436            let features = extract_int_from_primitive(features_option_unwrapped_primitive, &arguments)?;
437            Ok(highlevel::Command::Brsf {
438                features,
439            })
440        },
441        lowlevel::Command::Test { name, is_extension: true, ..} if
442            name == "CIND"
443        => {
444            Ok(highlevel::Command::CindTest {})
445        },
446        lowlevel::Command::Read { name, is_extension: true, ..} if
447            name == "CIND"
448        => {
449            Ok(highlevel::Command::CindRead {})
450        },
451        lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, .. }} if
452            name == "CLCC"
453            && delimiter == &None
454        => {
455            Ok(highlevel::Command::Clcc {
456            })
457        },
458        lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, .. }} if
459            name == "BCC"
460            && delimiter == &None
461        => {
462            Ok(highlevel::Command::Bcc {
463            })
464        },
465        lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
466            name == "BCS"
467            && delimiter == &Some(String::from("="))
468            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
469        => {
470            let arg_vec = extract_vec_from_args(&arguments)?;
471            let codec_option = arg_vec.get(0);
472            let codec_option_unwrapped = codec_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
473            let codec_option_unwrapped_primitive = extract_primitive_from_field(codec_option_unwrapped, &arguments)?;
474            let codec = extract_int_from_primitive(codec_option_unwrapped_primitive, &arguments)?;
475            Ok(highlevel::Command::Bcs {
476                codec,
477            })
478        },
479        lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
480            name == "BAC"
481            && delimiter == &Some(String::from("="))
482            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
483        => {
484            let arg_vec = extract_vec_from_args(&arguments)?;
485            let mut codecs = Vec::new();
486            for codecs_element_raw in arg_vec[0..].iter() {
487                let codecs_element_option = if codecs_element_raw.is_empty() { None } else { Some(codecs_element_raw) };
488                let codecs_element_option_unwrapped = codecs_element_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
489                let codecs_element_option_unwrapped_primitive = extract_primitive_from_field(codecs_element_option_unwrapped, &arguments)?;
490                let codecs_element = extract_int_from_primitive(codecs_element_option_unwrapped_primitive, &arguments)?;
491                codecs.push(codecs_element);
492            }
493            Ok(highlevel::Command::Bac {
494                codecs,
495            })
496        },
497        lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
498            name == "BIND"
499            && delimiter == &Some(String::from("="))
500            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
501        => {
502            let arg_vec = extract_vec_from_args(&arguments)?;
503            let mut indicators = Vec::new();
504            for indicators_element_raw in arg_vec[0..].iter() {
505                let indicators_element_option = if indicators_element_raw.is_empty() { None } else { Some(indicators_element_raw) };
506                let indicators_element_option_unwrapped = indicators_element_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
507                let indicators_element_option_unwrapped_primitive = extract_primitive_from_field(indicators_element_option_unwrapped, &arguments)?;
508                let indicators_element = extract_int_from_primitive(indicators_element_option_unwrapped_primitive, &arguments)?;
509                indicators.push(indicators_element);
510            }
511            Ok(highlevel::Command::Bind {
512                indicators,
513            })
514        },
515        lowlevel::Command::Test { name, is_extension: true, ..} if
516            name == "BIND"
517        => {
518            Ok(highlevel::Command::BindTest {})
519        },
520        lowlevel::Command::Read { name, is_extension: true, ..} if
521            name == "BIND"
522        => {
523            Ok(highlevel::Command::BindRead {})
524        },
525        lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
526            name == "BIEV"
527            && delimiter == &Some(String::from("="))
528            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
529        => {
530            let arg_vec = extract_vec_from_args(&arguments)?;
531            let anum_option = arg_vec.get(0);
532            let anum_option_unwrapped = anum_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
533            let anum_option_unwrapped_primitive = extract_primitive_from_field(anum_option_unwrapped, &arguments)?;
534            let anum_option_unwrapped_int = extract_int_from_primitive(anum_option_unwrapped_primitive, &arguments)?;
535            let anum = super::types::BluetoothHFIndicator::from_i64(anum_option_unwrapped_int).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
536            let value_option = arg_vec.get(1);
537            let value_option_unwrapped = value_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
538            let value_option_unwrapped_primitive = extract_primitive_from_field(value_option_unwrapped, &arguments)?;
539            let value = extract_int_from_primitive(value_option_unwrapped_primitive, &arguments)?;
540            Ok(highlevel::Command::Biev {
541                anum,
542                value,
543            })
544        },
545        lowlevel::Command::Test { name, is_extension: true, ..} if
546            name == "CHLD"
547        => {
548            Ok(highlevel::Command::ChldTest {})
549        },
550        lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
551            name == "CMER"
552            && delimiter == &Some(String::from("="))
553            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
554        => {
555            let arg_vec = extract_vec_from_args(&arguments)?;
556            let mode_option = arg_vec.get(0);
557            let mode = match mode_option {
558                Some(mode_option_unwrapped) if !mode_option_unwrapped.is_empty() => {
559                    let mode_option_unwrapped_primitive = extract_primitive_from_field(mode_option_unwrapped, &arguments)?;
560                    let mode_unwrapped = extract_int_from_primitive(mode_option_unwrapped_primitive, &arguments)?;
561                    Some(mode_unwrapped)
562                }
563                _ => None,
564            };
565            let keyp_option = arg_vec.get(1);
566            let keyp = match keyp_option {
567                Some(keyp_option_unwrapped) if !keyp_option_unwrapped.is_empty() => {
568                    let keyp_option_unwrapped_primitive = extract_primitive_from_field(keyp_option_unwrapped, &arguments)?;
569                    let keyp_unwrapped = extract_int_from_primitive(keyp_option_unwrapped_primitive, &arguments)?;
570                    Some(keyp_unwrapped)
571                }
572                _ => None,
573            };
574            let disp_option = arg_vec.get(2);
575            let disp = match disp_option {
576                Some(disp_option_unwrapped) if !disp_option_unwrapped.is_empty() => {
577                    let disp_option_unwrapped_primitive = extract_primitive_from_field(disp_option_unwrapped, &arguments)?;
578                    let disp_unwrapped = extract_int_from_primitive(disp_option_unwrapped_primitive, &arguments)?;
579                    Some(disp_unwrapped)
580                }
581                _ => None,
582            };
583            let ind_option = arg_vec.get(3);
584            let ind = match ind_option {
585                Some(ind_option_unwrapped) if !ind_option_unwrapped.is_empty() => {
586                    let ind_option_unwrapped_primitive = extract_primitive_from_field(ind_option_unwrapped, &arguments)?;
587                    let ind_unwrapped = extract_int_from_primitive(ind_option_unwrapped_primitive, &arguments)?;
588                    Some(ind_unwrapped)
589                }
590                _ => None,
591            };
592            Ok(highlevel::Command::Cmer {
593                mode,
594                keyp,
595                disp,
596                ind,
597            })
598        },
599        lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
600            name == "NREC"
601            && delimiter == &Some(String::from("="))
602            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
603        => {
604            let arg_vec = extract_vec_from_args(&arguments)?;
605            let nrec_option = arg_vec.get(0);
606            let nrec_option_unwrapped = nrec_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
607            let nrec_option_unwrapped_primitive = extract_primitive_from_field(nrec_option_unwrapped, &arguments)?;
608            let nrec_option_unwrapped_int = extract_int_from_primitive(nrec_option_unwrapped_primitive, &arguments)?;
609            let nrec = nrec_option_unwrapped_int != 0;
610            Ok(highlevel::Command::Nrec {
611                nrec,
612            })
613        },
614        lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
615            name == "COPS"
616            && delimiter == &Some(String::from("="))
617            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
618        => {
619            let arg_vec = extract_vec_from_args(&arguments)?;
620            let three_option = arg_vec.get(0);
621            let three_option_unwrapped = three_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
622            let three_option_unwrapped_primitive = extract_primitive_from_field(three_option_unwrapped, &arguments)?;
623            let three = extract_int_from_primitive(three_option_unwrapped_primitive, &arguments)?;
624            let format_option = arg_vec.get(1);
625            let format_option_unwrapped = format_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
626            let format_option_unwrapped_primitive = extract_primitive_from_field(format_option_unwrapped, &arguments)?;
627            let format_option_unwrapped_int = extract_int_from_primitive(format_option_unwrapped_primitive, &arguments)?;
628            let format = super::types::NetworkOperatorNameFormat::from_i64(format_option_unwrapped_int).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
629            Ok(highlevel::Command::Cops {
630                three,
631                format,
632            })
633        },
634        lowlevel::Command::Read { name, is_extension: true, ..} if
635            name == "COPS"
636        => {
637            Ok(highlevel::Command::CopsRead {})
638        },
639        lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
640            name == "CMEE"
641            && delimiter == &Some(String::from("="))
642            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
643        => {
644            let arg_vec = extract_vec_from_args(&arguments)?;
645            let enable_option = arg_vec.get(0);
646            let enable_option_unwrapped = enable_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
647            let enable_option_unwrapped_primitive = extract_primitive_from_field(enable_option_unwrapped, &arguments)?;
648            let enable_option_unwrapped_int = extract_int_from_primitive(enable_option_unwrapped_primitive, &arguments)?;
649            let enable = enable_option_unwrapped_int != 0;
650            Ok(highlevel::Command::Cmee {
651                enable,
652            })
653        },
654        lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
655            name == "CCWA"
656            && delimiter == &Some(String::from("="))
657            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
658        => {
659            let arg_vec = extract_vec_from_args(&arguments)?;
660            let enable_option = arg_vec.get(0);
661            let enable_option_unwrapped = enable_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
662            let enable_option_unwrapped_primitive = extract_primitive_from_field(enable_option_unwrapped, &arguments)?;
663            let enable_option_unwrapped_int = extract_int_from_primitive(enable_option_unwrapped_primitive, &arguments)?;
664            let enable = enable_option_unwrapped_int != 0;
665            Ok(highlevel::Command::Ccwa {
666                enable,
667            })
668        },
669        lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
670            name == "CLIP"
671            && delimiter == &Some(String::from("="))
672            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
673        => {
674            let arg_vec = extract_vec_from_args(&arguments)?;
675            let enable_option = arg_vec.get(0);
676            let enable_option_unwrapped = enable_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
677            let enable_option_unwrapped_primitive = extract_primitive_from_field(enable_option_unwrapped, &arguments)?;
678            let enable_option_unwrapped_int = extract_int_from_primitive(enable_option_unwrapped_primitive, &arguments)?;
679            let enable = enable_option_unwrapped_int != 0;
680            Ok(highlevel::Command::Clip {
681                enable,
682            })
683        },
684        lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, .. }} if
685            name == "CNUM"
686            && delimiter == &None
687        => {
688            Ok(highlevel::Command::Cnum {
689            })
690        },
691        lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
692            name == "VTS"
693            && delimiter == &Some(String::from("="))
694            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
695        => {
696            let arg_vec = extract_vec_from_args(&arguments)?;
697            let code_option = arg_vec.get(0);
698            let code_option_unwrapped = code_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
699            let code_option_unwrapped_primitive = extract_primitive_from_field(code_option_unwrapped, &arguments)?;
700            let code = code_option_unwrapped_primitive.clone();
701            Ok(highlevel::Command::Vts {
702                code,
703            })
704        },
705        lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
706            name == "VGS"
707            && delimiter == &Some(String::from("="))
708            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
709        => {
710            let arg_vec = extract_vec_from_args(&arguments)?;
711            let level_option = arg_vec.get(0);
712            let level_option_unwrapped = level_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
713            let level_option_unwrapped_primitive = extract_primitive_from_field(level_option_unwrapped, &arguments)?;
714            let level = extract_int_from_primitive(level_option_unwrapped_primitive, &arguments)?;
715            Ok(highlevel::Command::Vgs {
716                level,
717            })
718        },
719        lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
720            name == "VGM"
721            && delimiter == &Some(String::from("="))
722            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
723        => {
724            let arg_vec = extract_vec_from_args(&arguments)?;
725            let level_option = arg_vec.get(0);
726            let level_option_unwrapped = level_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
727            let level_option_unwrapped_primitive = extract_primitive_from_field(level_option_unwrapped, &arguments)?;
728            let level = extract_int_from_primitive(level_option_unwrapped_primitive, &arguments)?;
729            Ok(highlevel::Command::Vgm {
730                level,
731            })
732        },
733        lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
734            name == "BIA"
735            && delimiter == &Some(String::from("="))
736            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
737        => {
738            let arg_vec = extract_vec_from_args(&arguments)?;
739            let mut indrep = Vec::new();
740            for indrep_element_raw in arg_vec[0..].iter() {
741                let indrep_element_option = if indrep_element_raw.is_empty() { None } else { Some(indrep_element_raw) };
742                let indrep_element = match indrep_element_option {
743                    Some(indrep_element_option_unwrapped) if !indrep_element_option_unwrapped.is_empty() => {
744                        let indrep_element_option_unwrapped_primitive = extract_primitive_from_field(indrep_element_option_unwrapped, &arguments)?;
745                        let indrep_element_option_unwrapped_int = extract_int_from_primitive(indrep_element_option_unwrapped_primitive, &arguments)?;
746                        let indrep_element_unwrapped = indrep_element_option_unwrapped_int != 0;
747                        Some(indrep_element_unwrapped)
748                    }
749                    _ => None,
750                };
751                indrep.push(indrep_element);
752            }
753            Ok(highlevel::Command::Bia {
754                indrep,
755            })
756        },
757        lowlevel::Command::Execute { name, is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter, .. }} if
758            name == "A"
759            && delimiter == &None
760        => {
761            Ok(highlevel::Command::Answer {
762            })
763        },
764        lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, .. }} if
765            name == "CHUP"
766            && delimiter == &None
767        => {
768            Ok(highlevel::Command::Chup {
769            })
770        },
771        lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
772            name == "CHLD"
773            && delimiter == &Some(String::from("="))
774            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
775        => {
776            let arg_vec = extract_vec_from_args(&arguments)?;
777            let command_option = arg_vec.get(0);
778            let command_option_unwrapped = command_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
779            let command_option_unwrapped_primitive = extract_primitive_from_field(command_option_unwrapped, &arguments)?;
780            let command = command_option_unwrapped_primitive.clone();
781            Ok(highlevel::Command::Chld {
782                command,
783            })
784        },
785        lowlevel::Command::Execute { name, is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
786            name == "D"
787            && delimiter == &None
788            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
789        => {
790            let arg_vec = extract_vec_from_args(&arguments)?;
791            let number_option = arg_vec.get(0);
792            let number_option_unwrapped = number_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
793            let number_option_unwrapped_primitive = extract_primitive_from_field(number_option_unwrapped, &arguments)?;
794            let number = number_option_unwrapped_primitive.clone();
795            Ok(highlevel::Command::AtdNumber {
796                number,
797            })
798        },
799        lowlevel::Command::Execute { name, is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
800            name == "D"
801            && delimiter == &Some(String::from(">"))
802            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
803        => {
804            let arg_vec = extract_vec_from_args(&arguments)?;
805            let location_option = arg_vec.get(0);
806            let location_option_unwrapped = location_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
807            let location_option_unwrapped_primitive = extract_primitive_from_field(location_option_unwrapped, &arguments)?;
808            let location = location_option_unwrapped_primitive.clone();
809            Ok(highlevel::Command::AtdMemory {
810                location,
811            })
812        },
813        lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, .. }} if
814            name == "BLDN"
815            && delimiter == &None
816        => {
817            Ok(highlevel::Command::Bldn {
818            })
819        },
820        _ => Err(DeserializeErrorCause::UnknownCommand(lowlevel.clone())),
821    }
822}
823
824// Clients are responsible for ensuring this is only called with lowlevel::Result::Success.
825pub fn raise_success(lowlevel: &lowlevel::Response) -> Result<highlevel::Success, DeserializeErrorCause> {
826    match lowlevel {
827        lowlevel::Response::Success { name, is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter, .. }} if
828            name == "TEST"
829            && delimiter == &Some(String::from(":"))
830        => {
831            Ok(highlevel::Success::Test {
832            })
833        },
834        lowlevel::Response::Success { name, is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter, .. }} if
835            name == "TESTNOD"
836            && delimiter == &None
837        => {
838            Ok(highlevel::Success::Testnod {
839            })
840        },
841        lowlevel::Response::Success { name, is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter, .. }} if
842            name == "TESTN"
843            && delimiter == &Some(String::from(":"))
844        => {
845            Ok(highlevel::Success::TestResponse {
846            })
847        },
848        lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, .. }} if
849            name == "TESTEXT"
850            && delimiter == &Some(String::from(":"))
851        => {
852            Ok(highlevel::Success::Testext {
853            })
854        },
855        lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, .. }} if
856            name == "TESTEXTNOD"
857            && delimiter == &None
858        => {
859            Ok(highlevel::Success::Testextnod {
860            })
861        },
862        lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
863            name == "TESTI"
864            && delimiter == &Some(String::from(":"))
865            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
866        => {
867            let arg_vec = extract_vec_from_args(&arguments)?;
868            let field_option = arg_vec.get(0);
869            let field_option_unwrapped = field_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
870            let field_option_unwrapped_primitive = extract_primitive_from_field(field_option_unwrapped, &arguments)?;
871            let field = extract_int_from_primitive(field_option_unwrapped_primitive, &arguments)?;
872            Ok(highlevel::Success::Testi {
873                field,
874            })
875        },
876        lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
877            name == "TESTINOD"
878            && delimiter == &None
879            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
880        => {
881            let arg_vec = extract_vec_from_args(&arguments)?;
882            let field_option = arg_vec.get(0);
883            let field_option_unwrapped = field_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
884            let field_option_unwrapped_primitive = extract_primitive_from_field(field_option_unwrapped, &arguments)?;
885            let field = extract_int_from_primitive(field_option_unwrapped_primitive, &arguments)?;
886            Ok(highlevel::Success::Testinod {
887                field,
888            })
889        },
890        lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
891            name == "TESTIC"
892            && delimiter == &Some(String::from(":"))
893            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
894        => {
895            let arg_vec = extract_vec_from_args(&arguments)?;
896            let field_option = arg_vec.get(0);
897            let field_option_unwrapped = field_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
898            let field_option_unwrapped_primitive = extract_primitive_from_field(field_option_unwrapped, &arguments)?;
899            let field = extract_int_from_primitive(field_option_unwrapped_primitive, &arguments)?;
900            Ok(highlevel::Success::Testic {
901                field,
902            })
903        },
904        lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
905            name == "TESTS"
906            && delimiter == &Some(String::from(":"))
907            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
908        => {
909            let arg_vec = extract_vec_from_args(&arguments)?;
910            let field_option = arg_vec.get(0);
911            let field_option_unwrapped = field_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
912            let field_option_unwrapped_primitive = extract_primitive_from_field(field_option_unwrapped, &arguments)?;
913            let field = field_option_unwrapped_primitive.clone();
914            Ok(highlevel::Success::Tests {
915                field,
916            })
917        },
918        lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
919            name == "TESTSI"
920            && delimiter == &Some(String::from(":"))
921            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
922        => {
923            let arg_vec = extract_vec_from_args(&arguments)?;
924            let field1_option = arg_vec.get(0);
925            let field1_option_unwrapped = field1_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
926            let field1_option_unwrapped_primitive = extract_primitive_from_field(field1_option_unwrapped, &arguments)?;
927            let field1 = field1_option_unwrapped_primitive.clone();
928            let field2_option = arg_vec.get(1);
929            let field2_option_unwrapped = field2_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
930            let field2_option_unwrapped_primitive = extract_primitive_from_field(field2_option_unwrapped, &arguments)?;
931            let field2 = extract_int_from_primitive(field2_option_unwrapped_primitive, &arguments)?;
932            Ok(highlevel::Success::Testsi {
933                field1,
934                field2,
935            })
936        },
937        lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
938            name == "TESTSIC"
939            && delimiter == &Some(String::from(":"))
940            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
941        => {
942            let arg_vec = extract_vec_from_args(&arguments)?;
943            let field1_option = arg_vec.get(0);
944            let field1_option_unwrapped = field1_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
945            let field1_option_unwrapped_primitive = extract_primitive_from_field(field1_option_unwrapped, &arguments)?;
946            let field1 = field1_option_unwrapped_primitive.clone();
947            let field2_option = arg_vec.get(1);
948            let field2_option_unwrapped = field2_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
949            let field2_option_unwrapped_primitive = extract_primitive_from_field(field2_option_unwrapped, &arguments)?;
950            let field2 = extract_int_from_primitive(field2_option_unwrapped_primitive, &arguments)?;
951            Ok(highlevel::Success::Testsic {
952                field1,
953                field2,
954            })
955        },
956        lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
957            name == "TESTIO"
958            && delimiter == &Some(String::from(":"))
959            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
960        => {
961            let arg_vec = extract_vec_from_args(&arguments)?;
962            let field1_option = arg_vec.get(0);
963            let field1_option_unwrapped = field1_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
964            let field1_option_unwrapped_primitive = extract_primitive_from_field(field1_option_unwrapped, &arguments)?;
965            let field1 = extract_int_from_primitive(field1_option_unwrapped_primitive, &arguments)?;
966            let field2_option = arg_vec.get(1);
967            let field2 = match field2_option {
968                Some(field2_option_unwrapped) if !field2_option_unwrapped.is_empty() => {
969                    let field2_option_unwrapped_primitive = extract_primitive_from_field(field2_option_unwrapped, &arguments)?;
970                    let field2_unwrapped = extract_int_from_primitive(field2_option_unwrapped_primitive, &arguments)?;
971                    Some(field2_unwrapped)
972                }
973                _ => None,
974            };
975            Ok(highlevel::Success::Testio {
976                field1,
977                field2,
978            })
979        },
980        lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
981            name == "TESTIOO"
982            && delimiter == &Some(String::from(":"))
983            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
984        => {
985            let arg_vec = extract_vec_from_args(&arguments)?;
986            let field1_option = arg_vec.get(0);
987            let field1_option_unwrapped = field1_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
988            let field1_option_unwrapped_primitive = extract_primitive_from_field(field1_option_unwrapped, &arguments)?;
989            let field1 = extract_int_from_primitive(field1_option_unwrapped_primitive, &arguments)?;
990            let field2_option = arg_vec.get(1);
991            let field2 = match field2_option {
992                Some(field2_option_unwrapped) if !field2_option_unwrapped.is_empty() => {
993                    let field2_option_unwrapped_primitive = extract_primitive_from_field(field2_option_unwrapped, &arguments)?;
994                    let field2_unwrapped = extract_int_from_primitive(field2_option_unwrapped_primitive, &arguments)?;
995                    Some(field2_unwrapped)
996                }
997                _ => None,
998            };
999            let field3_option = arg_vec.get(2);
1000            let field3 = match field3_option {
1001                Some(field3_option_unwrapped) if !field3_option_unwrapped.is_empty() => {
1002                    let field3_option_unwrapped_primitive = extract_primitive_from_field(field3_option_unwrapped, &arguments)?;
1003                    let field3_unwrapped = field3_option_unwrapped_primitive.clone();
1004                    Some(field3_unwrapped)
1005                }
1006                _ => None,
1007            };
1008            Ok(highlevel::Success::Testioo {
1009                field1,
1010                field2,
1011                field3,
1012            })
1013        },
1014        lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1015            name == "TESTL"
1016            && delimiter == &Some(String::from(":"))
1017            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
1018        => {
1019            let arg_vec = extract_vec_from_args(&arguments)?;
1020            let mut field = Vec::new();
1021            for field_element_raw in arg_vec[0..].iter() {
1022                let field_element_option = if field_element_raw.is_empty() { None } else { Some(field_element_raw) };
1023                let field_element_option_unwrapped = field_element_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1024                let field_element_option_unwrapped_primitive = extract_primitive_from_field(field_element_option_unwrapped, &arguments)?;
1025                let field_element = extract_int_from_primitive(field_element_option_unwrapped_primitive, &arguments)?;
1026                field.push(field_element);
1027            }
1028            Ok(highlevel::Success::Testl {
1029                field,
1030            })
1031        },
1032        lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1033            name == "TESTOL"
1034            && delimiter == &Some(String::from(":"))
1035            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
1036        => {
1037            let arg_vec = extract_vec_from_args(&arguments)?;
1038            let mut field = Vec::new();
1039            for field_element_raw in arg_vec[0..].iter() {
1040                let field_element_option = if field_element_raw.is_empty() { None } else { Some(field_element_raw) };
1041                let field_element = match field_element_option {
1042                    Some(field_element_option_unwrapped) if !field_element_option_unwrapped.is_empty() => {
1043                        let field_element_option_unwrapped_primitive = extract_primitive_from_field(field_element_option_unwrapped, &arguments)?;
1044                        let field_element_unwrapped = extract_int_from_primitive(field_element_option_unwrapped_primitive, &arguments)?;
1045                        Some(field_element_unwrapped)
1046                    }
1047                    _ => None,
1048                };
1049                field.push(field_element);
1050            }
1051            Ok(highlevel::Success::Testol {
1052                field,
1053            })
1054        },
1055        lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1056            name == "TESTM"
1057            && delimiter == &Some(String::from(":"))
1058            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
1059        => {
1060            let arg_vec = extract_vec_from_args(&arguments)?;
1061            let mut field = std::collections::HashMap::new();
1062            for field_element in arg_vec[0..].iter() {
1063                let field_element_primitive = extract_key_from_field(field_element, &arguments)?;
1064                let field_key = extract_int_from_primitive(field_element_primitive, &arguments)?;
1065                let field_element_primitive = extract_value_from_field(field_element, &arguments)?;
1066                let field_value = field_element_primitive.clone();
1067                let _ = field.insert(field_key, field_value);
1068            }   
1069            Ok(highlevel::Success::Testm {
1070                field,
1071            })
1072        },
1073        lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1074            name == "TESTP"
1075            && delimiter == &Some(String::from(":"))
1076            &&  matches!(arguments, lowlevel::Arguments::ParenthesisDelimitedArgumentLists(_))
1077        => {
1078            let arg_vec_vec = extract_vec_vec_from_args(&arguments)?;
1079            let arg_vec = arg_vec_vec.get(0).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1080            let field_option = arg_vec.get(0);
1081            let field_option_unwrapped = field_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1082            let field_option_unwrapped_primitive = extract_primitive_from_field(field_option_unwrapped, &arguments)?;
1083            let field = extract_int_from_primitive(field_option_unwrapped_primitive, &arguments)?;
1084            Ok(highlevel::Success::Testp {
1085                field,
1086            })
1087        },
1088        lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1089            name == "TESTPP"
1090            && delimiter == &Some(String::from(":"))
1091            &&  matches!(arguments, lowlevel::Arguments::ParenthesisDelimitedArgumentLists(_))
1092        => {
1093            let arg_vec_vec = extract_vec_vec_from_args(&arguments)?;
1094            let arg_vec = arg_vec_vec.get(0).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1095            let field1_option = arg_vec.get(0);
1096            let field1_option_unwrapped = field1_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1097            let field1_option_unwrapped_primitive = extract_primitive_from_field(field1_option_unwrapped, &arguments)?;
1098            let field1 = extract_int_from_primitive(field1_option_unwrapped_primitive, &arguments)?;
1099            let arg_vec = arg_vec_vec.get(1).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1100            let field2_option = arg_vec.get(0);
1101            let field2_option_unwrapped = field2_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1102            let field2_option_unwrapped_primitive = extract_primitive_from_field(field2_option_unwrapped, &arguments)?;
1103            let field2 = extract_int_from_primitive(field2_option_unwrapped_primitive, &arguments)?;
1104            let field3_option = arg_vec.get(1);
1105            let field3_option_unwrapped = field3_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1106            let field3_option_unwrapped_primitive = extract_primitive_from_field(field3_option_unwrapped, &arguments)?;
1107            let field3 = field3_option_unwrapped_primitive.clone();
1108            Ok(highlevel::Success::Testpp {
1109                field1,
1110                field2,
1111                field3,
1112            })
1113        },
1114        lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1115            name == "TESTPMPIL"
1116            && delimiter == &Some(String::from(":"))
1117            &&  matches!(arguments, lowlevel::Arguments::ParenthesisDelimitedArgumentLists(_))
1118        => {
1119            let arg_vec_vec = extract_vec_vec_from_args(&arguments)?;
1120            let arg_vec = arg_vec_vec.get(0).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1121            let mut field1 = std::collections::HashMap::new();
1122            for field1_element in arg_vec[0..].iter() {
1123                let field1_element_primitive = extract_key_from_field(field1_element, &arguments)?;
1124                let field1_key = extract_int_from_primitive(field1_element_primitive, &arguments)?;
1125                let field1_element_primitive = extract_value_from_field(field1_element, &arguments)?;
1126                let field1_value = field1_element_primitive.clone();
1127                let _ = field1.insert(field1_key, field1_value);
1128            }   
1129            let arg_vec = arg_vec_vec.get(1).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1130            let field2_option = arg_vec.get(0);
1131            let field2_option_unwrapped = field2_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1132            let field2_option_unwrapped_primitive = extract_primitive_from_field(field2_option_unwrapped, &arguments)?;
1133            let field2 = extract_int_from_primitive(field2_option_unwrapped_primitive, &arguments)?;
1134            let mut field3 = Vec::new();
1135            for field3_element_raw in arg_vec[1..].iter() {
1136                let field3_element_option = if field3_element_raw.is_empty() { None } else { Some(field3_element_raw) };
1137                let field3_element_option_unwrapped = field3_element_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1138                let field3_element_option_unwrapped_primitive = extract_primitive_from_field(field3_element_option_unwrapped, &arguments)?;
1139                let field3_element = extract_int_from_primitive(field3_element_option_unwrapped_primitive, &arguments)?;
1140                field3.push(field3_element);
1141            }
1142            Ok(highlevel::Success::Testpmpil {
1143                field1,
1144                field2,
1145                field3,
1146            })
1147        },
1148        lowlevel::Response::Success { name, is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1149            name == "SAME"
1150            && delimiter == &Some(String::from(":"))
1151            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
1152        => {
1153            let arg_vec = extract_vec_from_args(&arguments)?;
1154            let field_option = arg_vec.get(0);
1155            let field_option_unwrapped = field_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1156            let field_option_unwrapped_primitive = extract_primitive_from_field(field_option_unwrapped, &arguments)?;
1157            let field = extract_int_from_primitive(field_option_unwrapped_primitive, &arguments)?;
1158            Ok(highlevel::Success::SameOne {
1159                field,
1160            })
1161        },
1162        lowlevel::Response::Success { name, is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1163            name == "SAME"
1164            && delimiter == &Some(String::from(":"))
1165            &&  matches!(arguments, lowlevel::Arguments::ParenthesisDelimitedArgumentLists(_))
1166        => {
1167            let arg_vec_vec = extract_vec_vec_from_args(&arguments)?;
1168            let arg_vec = arg_vec_vec.get(0).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1169            let field_option = arg_vec.get(0);
1170            let field_option_unwrapped = field_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1171            let field_option_unwrapped_primitive = extract_primitive_from_field(field_option_unwrapped, &arguments)?;
1172            let field = extract_int_from_primitive(field_option_unwrapped_primitive, &arguments)?;
1173            Ok(highlevel::Success::SameTwo {
1174                field,
1175            })
1176        },
1177        lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1178            name == "BRSF"
1179            && delimiter == &Some(String::from(":"))
1180            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
1181        => {
1182            let arg_vec = extract_vec_from_args(&arguments)?;
1183            let features_option = arg_vec.get(0);
1184            let features_option_unwrapped = features_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1185            let features_option_unwrapped_primitive = extract_primitive_from_field(features_option_unwrapped, &arguments)?;
1186            let features = extract_int_from_primitive(features_option_unwrapped_primitive, &arguments)?;
1187            Ok(highlevel::Success::Brsf {
1188                features,
1189            })
1190        },
1191        lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1192            name == "CIND"
1193            && delimiter == &Some(String::from(":"))
1194            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
1195        => {
1196            let arg_vec = extract_vec_from_args(&arguments)?;
1197            let mut ordered_values = Vec::new();
1198            for ordered_values_element_raw in arg_vec[0..].iter() {
1199                let ordered_values_element_option = if ordered_values_element_raw.is_empty() { None } else { Some(ordered_values_element_raw) };
1200                let ordered_values_element_option_unwrapped = ordered_values_element_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1201                let ordered_values_element_option_unwrapped_primitive = extract_primitive_from_field(ordered_values_element_option_unwrapped, &arguments)?;
1202                let ordered_values_element = extract_int_from_primitive(ordered_values_element_option_unwrapped_primitive, &arguments)?;
1203                ordered_values.push(ordered_values_element);
1204            }
1205            Ok(highlevel::Success::CindRead {
1206                ordered_values,
1207            })
1208        },
1209        lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1210            name == "CLCC"
1211            && delimiter == &Some(String::from(":"))
1212            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
1213        => {
1214            let arg_vec = extract_vec_from_args(&arguments)?;
1215            let index_option = arg_vec.get(0);
1216            let index_option_unwrapped = index_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1217            let index_option_unwrapped_primitive = extract_primitive_from_field(index_option_unwrapped, &arguments)?;
1218            let index = extract_int_from_primitive(index_option_unwrapped_primitive, &arguments)?;
1219            let direction_option = arg_vec.get(1);
1220            let direction_option_unwrapped = direction_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1221            let direction_option_unwrapped_primitive = extract_primitive_from_field(direction_option_unwrapped, &arguments)?;
1222            let direction = extract_int_from_primitive(direction_option_unwrapped_primitive, &arguments)?;
1223            let status_option = arg_vec.get(2);
1224            let status_option_unwrapped = status_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1225            let status_option_unwrapped_primitive = extract_primitive_from_field(status_option_unwrapped, &arguments)?;
1226            let status = extract_int_from_primitive(status_option_unwrapped_primitive, &arguments)?;
1227            let mode_option = arg_vec.get(3);
1228            let mode_option_unwrapped = mode_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1229            let mode_option_unwrapped_primitive = extract_primitive_from_field(mode_option_unwrapped, &arguments)?;
1230            let mode = extract_int_from_primitive(mode_option_unwrapped_primitive, &arguments)?;
1231            let multiparty_option = arg_vec.get(4);
1232            let multiparty_option_unwrapped = multiparty_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1233            let multiparty_option_unwrapped_primitive = extract_primitive_from_field(multiparty_option_unwrapped, &arguments)?;
1234            let multiparty = extract_int_from_primitive(multiparty_option_unwrapped_primitive, &arguments)?;
1235            let number_option = arg_vec.get(5);
1236            let number = match number_option {
1237                Some(number_option_unwrapped) if !number_option_unwrapped.is_empty() => {
1238                    let number_option_unwrapped_primitive = extract_primitive_from_field(number_option_unwrapped, &arguments)?;
1239                    let number_unwrapped = number_option_unwrapped_primitive.clone();
1240                    Some(number_unwrapped)
1241                }
1242                _ => None,
1243            };
1244            let ty_option = arg_vec.get(6);
1245            let ty = match ty_option {
1246                Some(ty_option_unwrapped) if !ty_option_unwrapped.is_empty() => {
1247                    let ty_option_unwrapped_primitive = extract_primitive_from_field(ty_option_unwrapped, &arguments)?;
1248                    let ty_unwrapped = extract_int_from_primitive(ty_option_unwrapped_primitive, &arguments)?;
1249                    Some(ty_unwrapped)
1250                }
1251                _ => None,
1252            };
1253            let alpha_option = arg_vec.get(7);
1254            let alpha = match alpha_option {
1255                Some(alpha_option_unwrapped) if !alpha_option_unwrapped.is_empty() => {
1256                    let alpha_option_unwrapped_primitive = extract_primitive_from_field(alpha_option_unwrapped, &arguments)?;
1257                    let alpha_unwrapped = alpha_option_unwrapped_primitive.clone();
1258                    Some(alpha_unwrapped)
1259                }
1260                _ => None,
1261            };
1262            let priority_option = arg_vec.get(8);
1263            let priority = match priority_option {
1264                Some(priority_option_unwrapped) if !priority_option_unwrapped.is_empty() => {
1265                    let priority_option_unwrapped_primitive = extract_primitive_from_field(priority_option_unwrapped, &arguments)?;
1266                    let priority_unwrapped = extract_int_from_primitive(priority_option_unwrapped_primitive, &arguments)?;
1267                    Some(priority_unwrapped)
1268                }
1269                _ => None,
1270            };
1271            Ok(highlevel::Success::Clcc {
1272                index,
1273                direction,
1274                status,
1275                mode,
1276                multiparty,
1277                number,
1278                ty,
1279                alpha,
1280                priority,
1281            })
1282        },
1283        lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1284            name == "BCS"
1285            && delimiter == &Some(String::from(":"))
1286            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
1287        => {
1288            let arg_vec = extract_vec_from_args(&arguments)?;
1289            let codec_option = arg_vec.get(0);
1290            let codec_option_unwrapped = codec_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1291            let codec_option_unwrapped_primitive = extract_primitive_from_field(codec_option_unwrapped, &arguments)?;
1292            let codec = extract_int_from_primitive(codec_option_unwrapped_primitive, &arguments)?;
1293            Ok(highlevel::Success::Bcs {
1294                codec,
1295            })
1296        },
1297        lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1298            name == "BIND"
1299            && delimiter == &Some(String::from(":"))
1300            &&  matches!(arguments, lowlevel::Arguments::ParenthesisDelimitedArgumentLists(_))
1301        => {
1302            let arg_vec_vec = extract_vec_vec_from_args(&arguments)?;
1303            let arg_vec = arg_vec_vec.get(0).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1304            let mut indicators = Vec::new();
1305            for indicators_element_raw in arg_vec[0..].iter() {
1306                let indicators_element_option = if indicators_element_raw.is_empty() { None } else { Some(indicators_element_raw) };
1307                let indicators_element_option_unwrapped = indicators_element_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1308                let indicators_element_option_unwrapped_primitive = extract_primitive_from_field(indicators_element_option_unwrapped, &arguments)?;
1309                let indicators_element_option_unwrapped_int = extract_int_from_primitive(indicators_element_option_unwrapped_primitive, &arguments)?;
1310                let indicators_element = super::types::BluetoothHFIndicator::from_i64(indicators_element_option_unwrapped_int).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1311                indicators.push(indicators_element);
1312            }
1313            Ok(highlevel::Success::BindList {
1314                indicators,
1315            })
1316        },
1317        lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1318            name == "BIND"
1319            && delimiter == &Some(String::from(":"))
1320            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
1321        => {
1322            let arg_vec = extract_vec_from_args(&arguments)?;
1323            let anum_option = arg_vec.get(0);
1324            let anum_option_unwrapped = anum_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1325            let anum_option_unwrapped_primitive = extract_primitive_from_field(anum_option_unwrapped, &arguments)?;
1326            let anum_option_unwrapped_int = extract_int_from_primitive(anum_option_unwrapped_primitive, &arguments)?;
1327            let anum = super::types::BluetoothHFIndicator::from_i64(anum_option_unwrapped_int).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1328            let state_option = arg_vec.get(1);
1329            let state_option_unwrapped = state_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1330            let state_option_unwrapped_primitive = extract_primitive_from_field(state_option_unwrapped, &arguments)?;
1331            let state_option_unwrapped_int = extract_int_from_primitive(state_option_unwrapped_primitive, &arguments)?;
1332            let state = state_option_unwrapped_int != 0;
1333            Ok(highlevel::Success::BindStatus {
1334                anum,
1335                state,
1336            })
1337        },
1338        lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1339            name == "CHLD"
1340            && delimiter == &Some(String::from(":"))
1341            &&  matches!(arguments, lowlevel::Arguments::ParenthesisDelimitedArgumentLists(_))
1342        => {
1343            let arg_vec_vec = extract_vec_vec_from_args(&arguments)?;
1344            let arg_vec = arg_vec_vec.get(0).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1345            let mut commands = Vec::new();
1346            for commands_element_raw in arg_vec[0..].iter() {
1347                let commands_element_option = if commands_element_raw.is_empty() { None } else { Some(commands_element_raw) };
1348                let commands_element_option_unwrapped = commands_element_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1349                let commands_element_option_unwrapped_primitive = extract_primitive_from_field(commands_element_option_unwrapped, &arguments)?;
1350                let commands_element = commands_element_option_unwrapped_primitive.clone();
1351                commands.push(commands_element);
1352            }
1353            Ok(highlevel::Success::Chld {
1354                commands,
1355            })
1356        },
1357        lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1358            name == "COPS"
1359            && delimiter == &Some(String::from(":"))
1360            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
1361        => {
1362            let arg_vec = extract_vec_from_args(&arguments)?;
1363            let format_option = arg_vec.get(0);
1364            let format_option_unwrapped = format_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1365            let format_option_unwrapped_primitive = extract_primitive_from_field(format_option_unwrapped, &arguments)?;
1366            let format_option_unwrapped_int = extract_int_from_primitive(format_option_unwrapped_primitive, &arguments)?;
1367            let format = super::types::NetworkOperatorNameFormat::from_i64(format_option_unwrapped_int).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1368            let zero_option = arg_vec.get(1);
1369            let zero_option_unwrapped = zero_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1370            let zero_option_unwrapped_primitive = extract_primitive_from_field(zero_option_unwrapped, &arguments)?;
1371            let zero = extract_int_from_primitive(zero_option_unwrapped_primitive, &arguments)?;
1372            let operator_option = arg_vec.get(2);
1373            let operator_option_unwrapped = operator_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1374            let operator_option_unwrapped_primitive = extract_primitive_from_field(operator_option_unwrapped, &arguments)?;
1375            let operator = operator_option_unwrapped_primitive.clone();
1376            Ok(highlevel::Success::Cops {
1377                format,
1378                zero,
1379                operator,
1380            })
1381        },
1382        lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1383            name == "CLIP"
1384            && delimiter == &Some(String::from(":"))
1385            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
1386        => {
1387            let arg_vec = extract_vec_from_args(&arguments)?;
1388            let number_option = arg_vec.get(0);
1389            let number_option_unwrapped = number_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1390            let number_option_unwrapped_primitive = extract_primitive_from_field(number_option_unwrapped, &arguments)?;
1391            let number = number_option_unwrapped_primitive.clone();
1392            let ty_option = arg_vec.get(1);
1393            let ty_option_unwrapped = ty_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1394            let ty_option_unwrapped_primitive = extract_primitive_from_field(ty_option_unwrapped, &arguments)?;
1395            let ty = extract_int_from_primitive(ty_option_unwrapped_primitive, &arguments)?;
1396            Ok(highlevel::Success::Clip {
1397                number,
1398                ty,
1399            })
1400        },
1401        lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1402            name == "CNUM"
1403            && delimiter == &Some(String::from(":"))
1404            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
1405        => {
1406            let arg_vec = extract_vec_from_args(&arguments)?;
1407            let alpha_option = arg_vec.get(0);
1408            let alpha_option_unwrapped = alpha_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1409            let alpha_option_unwrapped_primitive = extract_primitive_from_field(alpha_option_unwrapped, &arguments)?;
1410            let alpha = alpha_option_unwrapped_primitive.clone();
1411            let number_option = arg_vec.get(1);
1412            let number_option_unwrapped = number_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1413            let number_option_unwrapped_primitive = extract_primitive_from_field(number_option_unwrapped, &arguments)?;
1414            let number = number_option_unwrapped_primitive.clone();
1415            let ty_option = arg_vec.get(2);
1416            let ty_option_unwrapped = ty_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1417            let ty_option_unwrapped_primitive = extract_primitive_from_field(ty_option_unwrapped, &arguments)?;
1418            let ty = extract_int_from_primitive(ty_option_unwrapped_primitive, &arguments)?;
1419            let speed_option = arg_vec.get(3);
1420            let speed_option_unwrapped = speed_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1421            let speed_option_unwrapped_primitive = extract_primitive_from_field(speed_option_unwrapped, &arguments)?;
1422            let speed = speed_option_unwrapped_primitive.clone();
1423            let service_option = arg_vec.get(4);
1424            let service_option_unwrapped = service_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1425            let service_option_unwrapped_primitive = extract_primitive_from_field(service_option_unwrapped, &arguments)?;
1426            let service = extract_int_from_primitive(service_option_unwrapped_primitive, &arguments)?;
1427            Ok(highlevel::Success::Cnum {
1428                alpha,
1429                number,
1430                ty,
1431                speed,
1432                service,
1433            })
1434        },
1435        lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1436            name == "VGS"
1437            && delimiter == &Some(String::from(":"))
1438            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
1439        => {
1440            let arg_vec = extract_vec_from_args(&arguments)?;
1441            let level_option = arg_vec.get(0);
1442            let level_option_unwrapped = level_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1443            let level_option_unwrapped_primitive = extract_primitive_from_field(level_option_unwrapped, &arguments)?;
1444            let level = extract_int_from_primitive(level_option_unwrapped_primitive, &arguments)?;
1445            Ok(highlevel::Success::Vgs {
1446                level,
1447            })
1448        },
1449        lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1450            name == "VGM"
1451            && delimiter == &Some(String::from(":"))
1452            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
1453        => {
1454            let arg_vec = extract_vec_from_args(&arguments)?;
1455            let level_option = arg_vec.get(0);
1456            let level_option_unwrapped = level_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1457            let level_option_unwrapped_primitive = extract_primitive_from_field(level_option_unwrapped, &arguments)?;
1458            let level = extract_int_from_primitive(level_option_unwrapped_primitive, &arguments)?;
1459            Ok(highlevel::Success::Vgm {
1460                level,
1461            })
1462        },
1463        lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1464            name == "CIEV"
1465            && delimiter == &Some(String::from(":"))
1466            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
1467        => {
1468            let arg_vec = extract_vec_from_args(&arguments)?;
1469            let ind_option = arg_vec.get(0);
1470            let ind_option_unwrapped = ind_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1471            let ind_option_unwrapped_primitive = extract_primitive_from_field(ind_option_unwrapped, &arguments)?;
1472            let ind = extract_int_from_primitive(ind_option_unwrapped_primitive, &arguments)?;
1473            let value_option = arg_vec.get(1);
1474            let value_option_unwrapped = value_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1475            let value_option_unwrapped_primitive = extract_primitive_from_field(value_option_unwrapped, &arguments)?;
1476            let value = extract_int_from_primitive(value_option_unwrapped_primitive, &arguments)?;
1477            Ok(highlevel::Success::Ciev {
1478                ind,
1479                value,
1480            })
1481        },
1482        lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1483            name == "CCWA"
1484            && delimiter == &Some(String::from(":"))
1485            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
1486        => {
1487            let arg_vec = extract_vec_from_args(&arguments)?;
1488            let number_option = arg_vec.get(0);
1489            let number_option_unwrapped = number_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1490            let number_option_unwrapped_primitive = extract_primitive_from_field(number_option_unwrapped, &arguments)?;
1491            let number = number_option_unwrapped_primitive.clone();
1492            let ty_option = arg_vec.get(1);
1493            let ty_option_unwrapped = ty_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1494            let ty_option_unwrapped_primitive = extract_primitive_from_field(ty_option_unwrapped, &arguments)?;
1495            let ty = extract_int_from_primitive(ty_option_unwrapped_primitive, &arguments)?;
1496            Ok(highlevel::Success::Ccwa {
1497                number,
1498                ty,
1499            })
1500        },
1501        lowlevel::Response::Success { name, is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter, .. }} if
1502            name == "RING"
1503            && delimiter == &None
1504        => {
1505            Ok(highlevel::Success::Ring {
1506            })
1507        },
1508        lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1509            name == "BSIR"
1510            && delimiter == &Some(String::from(":"))
1511            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
1512        => {
1513            let arg_vec = extract_vec_from_args(&arguments)?;
1514            let enable_option = arg_vec.get(0);
1515            let enable_option_unwrapped = enable_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1516            let enable_option_unwrapped_primitive = extract_primitive_from_field(enable_option_unwrapped, &arguments)?;
1517            let enable_option_unwrapped_int = extract_int_from_primitive(enable_option_unwrapped_primitive, &arguments)?;
1518            let enable = enable_option_unwrapped_int != 0;
1519            Ok(highlevel::Success::Bsir {
1520                enable,
1521            })
1522        },
1523        _ => Err(DeserializeErrorCause::UnknownResponse(lowlevel.clone())),
1524    }
1525}
1526
1527pub fn lower_command(highlevel: &highlevel::Command) -> lowlevel::Command {
1528    match highlevel {
1529        highlevel::Command::Testex {        } => {
1530            let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
1531            lowlevel::Command::Execute { name: String::from("TESTEX"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
1532        },
1533        highlevel::Command::Testexext {        } => {
1534            let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
1535            lowlevel::Command::Execute { name: String::from("TESTEXEXT"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
1536        },
1537        highlevel::Command::TestCommand {        } => {
1538            let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
1539            lowlevel::Command::Execute { name: String::from("TESTNEX"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
1540        },
1541        highlevel::Command::Testexextfi {
1542            field,
1543        } => {
1544            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1545            let field_string = i64::to_string(&field);
1546            let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
1547            raw_arguments.push(field_primitive);
1548            while let Some(arg) = raw_arguments.last() {
1549                if arg.is_empty() {
1550                    let _ = raw_arguments.pop();
1551                } else {
1552                    break;
1553                }
1554            }
1555            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1556            lowlevel::Command::Execute { name: String::from("TESTEXEXTFI"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1557        },
1558        highlevel::Command::Testexextfic {
1559            field,
1560        } => {
1561            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1562            let field_string = i64::to_string(&field);
1563            let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
1564            raw_arguments.push(field_primitive);
1565            while let Some(arg) = raw_arguments.last() {
1566                if arg.is_empty() {
1567                    let _ = raw_arguments.pop();
1568                } else {
1569                    break;
1570                }
1571            }
1572            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1573            lowlevel::Command::Execute { name: String::from("TESTEXEXTFIC"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1574        },
1575        highlevel::Command::Testnsd {
1576            field,
1577        } => {
1578            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1579            let field_string = i64::to_string(&field);
1580            let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
1581            raw_arguments.push(field_primitive);
1582            while let Some(arg) = raw_arguments.last() {
1583                if arg.is_empty() {
1584                    let _ = raw_arguments.pop();
1585                } else {
1586                    break;
1587                }
1588            }
1589            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1590            lowlevel::Command::Execute { name: String::from("TESTNSD"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(">")), arguments, terminator: None } }
1591        },
1592        highlevel::Command::Testnst {
1593            field,
1594        } => {
1595            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1596            let field_string = i64::to_string(&field);
1597            let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
1598            raw_arguments.push(field_primitive);
1599            while let Some(arg) = raw_arguments.last() {
1600                if arg.is_empty() {
1601                    let _ = raw_arguments.pop();
1602                } else {
1603                    break;
1604                }
1605            }
1606            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1607            lowlevel::Command::Execute { name: String::from("TESTNST"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: Some(String::from(";")) } }
1608        },
1609        highlevel::Command::Testnsdnst {
1610            field,
1611        } => {
1612            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1613            let field_string = i64::to_string(&field);
1614            let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
1615            raw_arguments.push(field_primitive);
1616            while let Some(arg) = raw_arguments.last() {
1617                if arg.is_empty() {
1618                    let _ = raw_arguments.pop();
1619                } else {
1620                    break;
1621                }
1622            }
1623            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1624            lowlevel::Command::Execute { name: String::from("TESTNSDNST"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(">")), arguments, terminator: Some(String::from(";")) } }
1625        },
1626        highlevel::Command::Testnod {
1627            field,
1628        } => {
1629            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1630            let field_string = i64::to_string(&field);
1631            let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
1632            raw_arguments.push(field_primitive);
1633            while let Some(arg) = raw_arguments.last() {
1634                if arg.is_empty() {
1635                    let _ = raw_arguments.pop();
1636                } else {
1637                    break;
1638                }
1639            }
1640            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1641            lowlevel::Command::Execute { name: String::from("TESTNOD"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
1642        },
1643        highlevel::Command::Testexextfs {
1644            field,
1645        } => {
1646            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1647            let field_string = field.clone();
1648            let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
1649            raw_arguments.push(field_primitive);
1650            while let Some(arg) = raw_arguments.last() {
1651                if arg.is_empty() {
1652                    let _ = raw_arguments.pop();
1653                } else {
1654                    break;
1655                }
1656            }
1657            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1658            lowlevel::Command::Execute { name: String::from("TESTEXEXTFS"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1659        },
1660        highlevel::Command::Testexextfsi {
1661            field1,
1662            field2,
1663        } => {
1664            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1665            let field1_string = field1.clone();
1666            let field1_primitive = lowlevel::Argument::PrimitiveArgument(field1_string);
1667            raw_arguments.push(field1_primitive);
1668            let field2_string = i64::to_string(&field2);
1669            let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_string);
1670            raw_arguments.push(field2_primitive);
1671            while let Some(arg) = raw_arguments.last() {
1672                if arg.is_empty() {
1673                    let _ = raw_arguments.pop();
1674                } else {
1675                    break;
1676                }
1677            }
1678            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1679            lowlevel::Command::Execute { name: String::from("TESTEXEXTFSI"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1680        },
1681        highlevel::Command::Testexextfsic {
1682            field1,
1683            field2,
1684        } => {
1685            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1686            let field1_string = field1.clone();
1687            let field1_primitive = lowlevel::Argument::PrimitiveArgument(field1_string);
1688            raw_arguments.push(field1_primitive);
1689            let field2_string = i64::to_string(&field2);
1690            let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_string);
1691            raw_arguments.push(field2_primitive);
1692            while let Some(arg) = raw_arguments.last() {
1693                if arg.is_empty() {
1694                    let _ = raw_arguments.pop();
1695                } else {
1696                    break;
1697                }
1698            }
1699            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1700            lowlevel::Command::Execute { name: String::from("TESTEXEXTFSIC"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1701        },
1702        highlevel::Command::Testio {
1703            field1,
1704            field2,
1705        } => {
1706            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1707            let field1_string = i64::to_string(&field1);
1708            let field1_primitive = lowlevel::Argument::PrimitiveArgument(field1_string);
1709            raw_arguments.push(field1_primitive);
1710            match field2 {
1711            None => {
1712                raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
1713            }
1714            Some(field2_unwrapped) => {
1715                    let field2_unwrapped_string = i64::to_string(&field2_unwrapped);
1716                    let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_unwrapped_string);
1717                    raw_arguments.push(field2_primitive);
1718            }
1719            }
1720            while let Some(arg) = raw_arguments.last() {
1721                if arg.is_empty() {
1722                    let _ = raw_arguments.pop();
1723                } else {
1724                    break;
1725                }
1726            }
1727            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1728            lowlevel::Command::Execute { name: String::from("TESTIO"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1729        },
1730        highlevel::Command::Testallopt {
1731            field1,
1732            field2,
1733            field3,
1734        } => {
1735            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1736            match field1 {
1737            None => {
1738                raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
1739            }
1740            Some(field1_unwrapped) => {
1741                    let field1_unwrapped_string = i64::to_string(&field1_unwrapped);
1742                    let field1_primitive = lowlevel::Argument::PrimitiveArgument(field1_unwrapped_string);
1743                    raw_arguments.push(field1_primitive);
1744            }
1745            }
1746            match field2 {
1747            None => {
1748                raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
1749            }
1750            Some(field2_unwrapped) => {
1751                    let field2_unwrapped_string = i64::to_string(&field2_unwrapped);
1752                    let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_unwrapped_string);
1753                    raw_arguments.push(field2_primitive);
1754            }
1755            }
1756            match field3 {
1757            None => {
1758                raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
1759            }
1760            Some(field3_unwrapped) => {
1761                    let field3_unwrapped_string = i64::to_string(&field3_unwrapped);
1762                    let field3_primitive = lowlevel::Argument::PrimitiveArgument(field3_unwrapped_string);
1763                    raw_arguments.push(field3_primitive);
1764            }
1765            }
1766            while let Some(arg) = raw_arguments.last() {
1767                if arg.is_empty() {
1768                    let _ = raw_arguments.pop();
1769                } else {
1770                    break;
1771                }
1772            }
1773            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1774            lowlevel::Command::Execute { name: String::from("TESTALLOPT"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1775        },
1776        highlevel::Command::Testl {
1777            field,
1778        } => {
1779            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1780            for field_element in field.iter() {
1781                    let field_element_string = i64::to_string(&field_element);
1782                    let field_element_primitive = lowlevel::Argument::PrimitiveArgument(field_element_string);
1783                    raw_arguments.push(field_element_primitive);
1784            }   
1785            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1786            lowlevel::Command::Execute { name: String::from("TESTL"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1787        },
1788        highlevel::Command::Testol {
1789            field,
1790        } => {
1791            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1792            for field_element in field.iter() {
1793                    match field_element {
1794                    None => {
1795                        raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
1796                    }
1797                    Some(field_element_unwrapped) => {
1798                            let field_element_unwrapped_string = i64::to_string(&field_element_unwrapped);
1799                            let field_element_primitive = lowlevel::Argument::PrimitiveArgument(field_element_unwrapped_string);
1800                            raw_arguments.push(field_element_primitive);
1801                    }
1802                    }
1803            }   
1804            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1805            lowlevel::Command::Execute { name: String::from("TESTOL"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1806        },
1807        highlevel::Command::Testm {
1808            field,
1809        } => {
1810            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1811            for (field_typed_key, field_typed_value) in field {
1812                let field_primitive_key = i64::to_string(&field_typed_key);
1813                let field_primitive_value = field_typed_value.clone();
1814                let field_untyped_pair = lowlevel::Argument::KeyValueArgument { key: field_primitive_key, value: field_primitive_value };
1815                raw_arguments.push(field_untyped_pair);
1816            }   
1817            while let Some(arg) = raw_arguments.last() {
1818                if arg.is_empty() {
1819                    let _ = raw_arguments.pop();
1820                } else {
1821                    break;
1822                }
1823            }
1824            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1825            lowlevel::Command::Execute { name: String::from("TESTM"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1826        },
1827        highlevel::Command::Testp {
1828            field,
1829        } => {
1830            let mut raw_arguments_outer = Vec::<Vec<lowlevel::Argument>>::new();
1831            let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
1832            let field_string = i64::to_string(&field);
1833            let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
1834            raw_arguments_inner.push(field_primitive);
1835            raw_arguments_outer.push(raw_arguments_inner);
1836            let arguments = lowlevel::Arguments::ParenthesisDelimitedArgumentLists(raw_arguments_outer);
1837            lowlevel::Command::Execute { name: String::from("TESTP"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1838        },
1839        highlevel::Command::Testpp {
1840            field1,
1841            field2,
1842            field3,
1843        } => {
1844            let mut raw_arguments_outer = Vec::<Vec<lowlevel::Argument>>::new();
1845            let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
1846            let field1_string = i64::to_string(&field1);
1847            let field1_primitive = lowlevel::Argument::PrimitiveArgument(field1_string);
1848            raw_arguments_inner.push(field1_primitive);
1849            raw_arguments_outer.push(raw_arguments_inner);
1850            let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
1851            let field2_string = i64::to_string(&field2);
1852            let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_string);
1853            raw_arguments_inner.push(field2_primitive);
1854            let field3_string = field3.clone();
1855            let field3_primitive = lowlevel::Argument::PrimitiveArgument(field3_string);
1856            raw_arguments_inner.push(field3_primitive);
1857            raw_arguments_outer.push(raw_arguments_inner);
1858            let arguments = lowlevel::Arguments::ParenthesisDelimitedArgumentLists(raw_arguments_outer);
1859            lowlevel::Command::Execute { name: String::from("TESTPP"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1860        },
1861        highlevel::Command::Testpmpil {
1862            field1,
1863            field2,
1864            field3,
1865        } => {
1866            let mut raw_arguments_outer = Vec::<Vec<lowlevel::Argument>>::new();
1867            let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
1868            for (field1_typed_key, field1_typed_value) in field1 {
1869                let field1_primitive_key = i64::to_string(&field1_typed_key);
1870                let field1_primitive_value = field1_typed_value.clone();
1871                let field1_untyped_pair = lowlevel::Argument::KeyValueArgument { key: field1_primitive_key, value: field1_primitive_value };
1872                raw_arguments_inner.push(field1_untyped_pair);
1873            }   
1874            raw_arguments_outer.push(raw_arguments_inner);
1875            let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
1876            let field2_string = i64::to_string(&field2);
1877            let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_string);
1878            raw_arguments_inner.push(field2_primitive);
1879            for field3_element in field3.iter() {
1880                    let field3_element_string = i64::to_string(&field3_element);
1881                    let field3_element_primitive = lowlevel::Argument::PrimitiveArgument(field3_element_string);
1882                    raw_arguments_inner.push(field3_element_primitive);
1883            }   
1884            raw_arguments_outer.push(raw_arguments_inner);
1885            let arguments = lowlevel::Arguments::ParenthesisDelimitedArgumentLists(raw_arguments_outer);
1886            lowlevel::Command::Execute { name: String::from("TESTPMPIL"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1887        },
1888        highlevel::Command::TestrRead {} => {
1889            lowlevel::Command::Read { name: String::from("TESTR"), is_extension: false }
1890        },
1891        highlevel::Command::TestrexRead {} => {
1892            lowlevel::Command::Read { name: String::from("TESTREX"), is_extension: true }
1893        },
1894        highlevel::Command::TesttTest {} => {
1895            lowlevel::Command::Test { name: String::from("TESTT"), is_extension: false }
1896        },
1897        highlevel::Command::TesttexTest {} => {
1898            lowlevel::Command::Test { name: String::from("TESTTEX"), is_extension: true }
1899        },
1900        highlevel::Command::Testenum {
1901            field,
1902        } => {
1903            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1904            let field_string_int = *field as i64;
1905            let field_string = i64::to_string(&field_string_int);
1906            let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
1907            raw_arguments.push(field_primitive);
1908            while let Some(arg) = raw_arguments.last() {
1909                if arg.is_empty() {
1910                    let _ = raw_arguments.pop();
1911                } else {
1912                    break;
1913                }
1914            }
1915            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1916            lowlevel::Command::Execute { name: String::from("TESTENUM"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1917        },
1918        highlevel::Command::Testbool {
1919            field,
1920        } => {
1921            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1922            let field_string_int = if *field { 1 } else { 0 };
1923            let field_string = i64::to_string(&field_string_int);
1924            let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
1925            raw_arguments.push(field_primitive);
1926            while let Some(arg) = raw_arguments.last() {
1927                if arg.is_empty() {
1928                    let _ = raw_arguments.pop();
1929                } else {
1930                    break;
1931                }
1932            }
1933            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1934            lowlevel::Command::Execute { name: String::from("TESTBOOL"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1935        },
1936        highlevel::Command::Testotherfile {        } => {
1937            let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
1938            lowlevel::Command::Execute { name: String::from("TESTOTHERFILE"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
1939        },
1940        highlevel::Command::Brsf {
1941            features,
1942        } => {
1943            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1944            let features_string = i64::to_string(&features);
1945            let features_primitive = lowlevel::Argument::PrimitiveArgument(features_string);
1946            raw_arguments.push(features_primitive);
1947            while let Some(arg) = raw_arguments.last() {
1948                if arg.is_empty() {
1949                    let _ = raw_arguments.pop();
1950                } else {
1951                    break;
1952                }
1953            }
1954            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1955            lowlevel::Command::Execute { name: String::from("BRSF"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1956        },
1957        highlevel::Command::CindTest {} => {
1958            lowlevel::Command::Test { name: String::from("CIND"), is_extension: true }
1959        },
1960        highlevel::Command::CindRead {} => {
1961            lowlevel::Command::Read { name: String::from("CIND"), is_extension: true }
1962        },
1963        highlevel::Command::Clcc {        } => {
1964            let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
1965            lowlevel::Command::Execute { name: String::from("CLCC"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
1966        },
1967        highlevel::Command::Bcc {        } => {
1968            let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
1969            lowlevel::Command::Execute { name: String::from("BCC"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
1970        },
1971        highlevel::Command::Bcs {
1972            codec,
1973        } => {
1974            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1975            let codec_string = i64::to_string(&codec);
1976            let codec_primitive = lowlevel::Argument::PrimitiveArgument(codec_string);
1977            raw_arguments.push(codec_primitive);
1978            while let Some(arg) = raw_arguments.last() {
1979                if arg.is_empty() {
1980                    let _ = raw_arguments.pop();
1981                } else {
1982                    break;
1983                }
1984            }
1985            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1986            lowlevel::Command::Execute { name: String::from("BCS"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1987        },
1988        highlevel::Command::Bac {
1989            codecs,
1990        } => {
1991            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1992            for codecs_element in codecs.iter() {
1993                    let codecs_element_string = i64::to_string(&codecs_element);
1994                    let codecs_element_primitive = lowlevel::Argument::PrimitiveArgument(codecs_element_string);
1995                    raw_arguments.push(codecs_element_primitive);
1996            }   
1997            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1998            lowlevel::Command::Execute { name: String::from("BAC"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1999        },
2000        highlevel::Command::Bind {
2001            indicators,
2002        } => {
2003            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2004            for indicators_element in indicators.iter() {
2005                    let indicators_element_string = i64::to_string(&indicators_element);
2006                    let indicators_element_primitive = lowlevel::Argument::PrimitiveArgument(indicators_element_string);
2007                    raw_arguments.push(indicators_element_primitive);
2008            }   
2009            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2010            lowlevel::Command::Execute { name: String::from("BIND"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
2011        },
2012        highlevel::Command::BindTest {} => {
2013            lowlevel::Command::Test { name: String::from("BIND"), is_extension: true }
2014        },
2015        highlevel::Command::BindRead {} => {
2016            lowlevel::Command::Read { name: String::from("BIND"), is_extension: true }
2017        },
2018        highlevel::Command::Biev {
2019            anum,
2020            value,
2021        } => {
2022            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2023            let anum_string_int = *anum as i64;
2024            let anum_string = i64::to_string(&anum_string_int);
2025            let anum_primitive = lowlevel::Argument::PrimitiveArgument(anum_string);
2026            raw_arguments.push(anum_primitive);
2027            let value_string = i64::to_string(&value);
2028            let value_primitive = lowlevel::Argument::PrimitiveArgument(value_string);
2029            raw_arguments.push(value_primitive);
2030            while let Some(arg) = raw_arguments.last() {
2031                if arg.is_empty() {
2032                    let _ = raw_arguments.pop();
2033                } else {
2034                    break;
2035                }
2036            }
2037            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2038            lowlevel::Command::Execute { name: String::from("BIEV"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
2039        },
2040        highlevel::Command::ChldTest {} => {
2041            lowlevel::Command::Test { name: String::from("CHLD"), is_extension: true }
2042        },
2043        highlevel::Command::Cmer {
2044            mode,
2045            keyp,
2046            disp,
2047            ind,
2048        } => {
2049            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2050            match mode {
2051            None => {
2052                raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
2053            }
2054            Some(mode_unwrapped) => {
2055                    let mode_unwrapped_string = i64::to_string(&mode_unwrapped);
2056                    let mode_primitive = lowlevel::Argument::PrimitiveArgument(mode_unwrapped_string);
2057                    raw_arguments.push(mode_primitive);
2058            }
2059            }
2060            match keyp {
2061            None => {
2062                raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
2063            }
2064            Some(keyp_unwrapped) => {
2065                    let keyp_unwrapped_string = i64::to_string(&keyp_unwrapped);
2066                    let keyp_primitive = lowlevel::Argument::PrimitiveArgument(keyp_unwrapped_string);
2067                    raw_arguments.push(keyp_primitive);
2068            }
2069            }
2070            match disp {
2071            None => {
2072                raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
2073            }
2074            Some(disp_unwrapped) => {
2075                    let disp_unwrapped_string = i64::to_string(&disp_unwrapped);
2076                    let disp_primitive = lowlevel::Argument::PrimitiveArgument(disp_unwrapped_string);
2077                    raw_arguments.push(disp_primitive);
2078            }
2079            }
2080            match ind {
2081            None => {
2082                raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
2083            }
2084            Some(ind_unwrapped) => {
2085                    let ind_unwrapped_string = i64::to_string(&ind_unwrapped);
2086                    let ind_primitive = lowlevel::Argument::PrimitiveArgument(ind_unwrapped_string);
2087                    raw_arguments.push(ind_primitive);
2088            }
2089            }
2090            while let Some(arg) = raw_arguments.last() {
2091                if arg.is_empty() {
2092                    let _ = raw_arguments.pop();
2093                } else {
2094                    break;
2095                }
2096            }
2097            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2098            lowlevel::Command::Execute { name: String::from("CMER"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
2099        },
2100        highlevel::Command::Nrec {
2101            nrec,
2102        } => {
2103            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2104            let nrec_string_int = if *nrec { 1 } else { 0 };
2105            let nrec_string = i64::to_string(&nrec_string_int);
2106            let nrec_primitive = lowlevel::Argument::PrimitiveArgument(nrec_string);
2107            raw_arguments.push(nrec_primitive);
2108            while let Some(arg) = raw_arguments.last() {
2109                if arg.is_empty() {
2110                    let _ = raw_arguments.pop();
2111                } else {
2112                    break;
2113                }
2114            }
2115            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2116            lowlevel::Command::Execute { name: String::from("NREC"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
2117        },
2118        highlevel::Command::Cops {
2119            three,
2120            format,
2121        } => {
2122            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2123            let three_string = i64::to_string(&three);
2124            let three_primitive = lowlevel::Argument::PrimitiveArgument(three_string);
2125            raw_arguments.push(three_primitive);
2126            let format_string_int = *format as i64;
2127            let format_string = i64::to_string(&format_string_int);
2128            let format_primitive = lowlevel::Argument::PrimitiveArgument(format_string);
2129            raw_arguments.push(format_primitive);
2130            while let Some(arg) = raw_arguments.last() {
2131                if arg.is_empty() {
2132                    let _ = raw_arguments.pop();
2133                } else {
2134                    break;
2135                }
2136            }
2137            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2138            lowlevel::Command::Execute { name: String::from("COPS"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
2139        },
2140        highlevel::Command::CopsRead {} => {
2141            lowlevel::Command::Read { name: String::from("COPS"), is_extension: true }
2142        },
2143        highlevel::Command::Cmee {
2144            enable,
2145        } => {
2146            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2147            let enable_string_int = if *enable { 1 } else { 0 };
2148            let enable_string = i64::to_string(&enable_string_int);
2149            let enable_primitive = lowlevel::Argument::PrimitiveArgument(enable_string);
2150            raw_arguments.push(enable_primitive);
2151            while let Some(arg) = raw_arguments.last() {
2152                if arg.is_empty() {
2153                    let _ = raw_arguments.pop();
2154                } else {
2155                    break;
2156                }
2157            }
2158            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2159            lowlevel::Command::Execute { name: String::from("CMEE"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
2160        },
2161        highlevel::Command::Ccwa {
2162            enable,
2163        } => {
2164            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2165            let enable_string_int = if *enable { 1 } else { 0 };
2166            let enable_string = i64::to_string(&enable_string_int);
2167            let enable_primitive = lowlevel::Argument::PrimitiveArgument(enable_string);
2168            raw_arguments.push(enable_primitive);
2169            while let Some(arg) = raw_arguments.last() {
2170                if arg.is_empty() {
2171                    let _ = raw_arguments.pop();
2172                } else {
2173                    break;
2174                }
2175            }
2176            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2177            lowlevel::Command::Execute { name: String::from("CCWA"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
2178        },
2179        highlevel::Command::Clip {
2180            enable,
2181        } => {
2182            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2183            let enable_string_int = if *enable { 1 } else { 0 };
2184            let enable_string = i64::to_string(&enable_string_int);
2185            let enable_primitive = lowlevel::Argument::PrimitiveArgument(enable_string);
2186            raw_arguments.push(enable_primitive);
2187            while let Some(arg) = raw_arguments.last() {
2188                if arg.is_empty() {
2189                    let _ = raw_arguments.pop();
2190                } else {
2191                    break;
2192                }
2193            }
2194            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2195            lowlevel::Command::Execute { name: String::from("CLIP"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
2196        },
2197        highlevel::Command::Cnum {        } => {
2198            let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
2199            lowlevel::Command::Execute { name: String::from("CNUM"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
2200        },
2201        highlevel::Command::Vts {
2202            code,
2203        } => {
2204            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2205            let code_string = code.clone();
2206            let code_primitive = lowlevel::Argument::PrimitiveArgument(code_string);
2207            raw_arguments.push(code_primitive);
2208            while let Some(arg) = raw_arguments.last() {
2209                if arg.is_empty() {
2210                    let _ = raw_arguments.pop();
2211                } else {
2212                    break;
2213                }
2214            }
2215            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2216            lowlevel::Command::Execute { name: String::from("VTS"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
2217        },
2218        highlevel::Command::Vgs {
2219            level,
2220        } => {
2221            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2222            let level_string = i64::to_string(&level);
2223            let level_primitive = lowlevel::Argument::PrimitiveArgument(level_string);
2224            raw_arguments.push(level_primitive);
2225            while let Some(arg) = raw_arguments.last() {
2226                if arg.is_empty() {
2227                    let _ = raw_arguments.pop();
2228                } else {
2229                    break;
2230                }
2231            }
2232            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2233            lowlevel::Command::Execute { name: String::from("VGS"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
2234        },
2235        highlevel::Command::Vgm {
2236            level,
2237        } => {
2238            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2239            let level_string = i64::to_string(&level);
2240            let level_primitive = lowlevel::Argument::PrimitiveArgument(level_string);
2241            raw_arguments.push(level_primitive);
2242            while let Some(arg) = raw_arguments.last() {
2243                if arg.is_empty() {
2244                    let _ = raw_arguments.pop();
2245                } else {
2246                    break;
2247                }
2248            }
2249            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2250            lowlevel::Command::Execute { name: String::from("VGM"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
2251        },
2252        highlevel::Command::Bia {
2253            indrep,
2254        } => {
2255            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2256            for indrep_element in indrep.iter() {
2257                    match indrep_element {
2258                    None => {
2259                        raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
2260                    }
2261                    Some(indrep_element_unwrapped) => {
2262                            let indrep_element_unwrapped_string_int = if *indrep_element_unwrapped { 1 } else { 0 };
2263                            let indrep_element_unwrapped_string = i64::to_string(&indrep_element_unwrapped_string_int);
2264                            let indrep_element_primitive = lowlevel::Argument::PrimitiveArgument(indrep_element_unwrapped_string);
2265                            raw_arguments.push(indrep_element_primitive);
2266                    }
2267                    }
2268            }   
2269            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2270            lowlevel::Command::Execute { name: String::from("BIA"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
2271        },
2272        highlevel::Command::Answer {        } => {
2273            let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
2274            lowlevel::Command::Execute { name: String::from("A"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
2275        },
2276        highlevel::Command::Chup {        } => {
2277            let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
2278            lowlevel::Command::Execute { name: String::from("CHUP"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
2279        },
2280        highlevel::Command::Chld {
2281            command,
2282        } => {
2283            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2284            let command_string = command.clone();
2285            let command_primitive = lowlevel::Argument::PrimitiveArgument(command_string);
2286            raw_arguments.push(command_primitive);
2287            while let Some(arg) = raw_arguments.last() {
2288                if arg.is_empty() {
2289                    let _ = raw_arguments.pop();
2290                } else {
2291                    break;
2292                }
2293            }
2294            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2295            lowlevel::Command::Execute { name: String::from("CHLD"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
2296        },
2297        highlevel::Command::AtdNumber {
2298            number,
2299        } => {
2300            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2301            let number_string = number.clone();
2302            let number_primitive = lowlevel::Argument::PrimitiveArgument(number_string);
2303            raw_arguments.push(number_primitive);
2304            while let Some(arg) = raw_arguments.last() {
2305                if arg.is_empty() {
2306                    let _ = raw_arguments.pop();
2307                } else {
2308                    break;
2309                }
2310            }
2311            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2312            lowlevel::Command::Execute { name: String::from("D"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: Some(String::from(";")) } }
2313        },
2314        highlevel::Command::AtdMemory {
2315            location,
2316        } => {
2317            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2318            let location_string = location.clone();
2319            let location_primitive = lowlevel::Argument::PrimitiveArgument(location_string);
2320            raw_arguments.push(location_primitive);
2321            while let Some(arg) = raw_arguments.last() {
2322                if arg.is_empty() {
2323                    let _ = raw_arguments.pop();
2324                } else {
2325                    break;
2326                }
2327            }
2328            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2329            lowlevel::Command::Execute { name: String::from("D"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(">")), arguments, terminator: Some(String::from(";")) } }
2330        },
2331        highlevel::Command::Bldn {        } => {
2332            let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
2333            lowlevel::Command::Execute { name: String::from("BLDN"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
2334        },
2335    }
2336}
2337
2338pub fn lower_success(highlevel: &highlevel::Success) -> lowlevel::Response {
2339    match highlevel {
2340        highlevel::Success::Test {        } => {
2341            let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
2342            lowlevel::Response::Success { name: String::from("TEST"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2343        },
2344        highlevel::Success::Testnod {        } => {
2345            let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
2346            lowlevel::Response::Success { name: String::from("TESTNOD"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
2347        },
2348        highlevel::Success::TestResponse {        } => {
2349            let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
2350            lowlevel::Response::Success { name: String::from("TESTN"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2351        },
2352        highlevel::Success::Testext {        } => {
2353            let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
2354            lowlevel::Response::Success { name: String::from("TESTEXT"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2355        },
2356        highlevel::Success::Testextnod {        } => {
2357            let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
2358            lowlevel::Response::Success { name: String::from("TESTEXTNOD"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
2359        },
2360        highlevel::Success::Testi {
2361            field,
2362        } => {
2363            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2364            let field_string = i64::to_string(&field);
2365            let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
2366            raw_arguments.push(field_primitive);
2367            while let Some(arg) = raw_arguments.last() {
2368                if arg.is_empty() {
2369                    let _ = raw_arguments.pop();
2370                } else {
2371                    break;
2372                }
2373            }
2374            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2375            lowlevel::Response::Success { name: String::from("TESTI"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2376        },
2377        highlevel::Success::Testinod {
2378            field,
2379        } => {
2380            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2381            let field_string = i64::to_string(&field);
2382            let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
2383            raw_arguments.push(field_primitive);
2384            while let Some(arg) = raw_arguments.last() {
2385                if arg.is_empty() {
2386                    let _ = raw_arguments.pop();
2387                } else {
2388                    break;
2389                }
2390            }
2391            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2392            lowlevel::Response::Success { name: String::from("TESTINOD"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
2393        },
2394        highlevel::Success::Testic {
2395            field,
2396        } => {
2397            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2398            let field_string = i64::to_string(&field);
2399            let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
2400            raw_arguments.push(field_primitive);
2401            while let Some(arg) = raw_arguments.last() {
2402                if arg.is_empty() {
2403                    let _ = raw_arguments.pop();
2404                } else {
2405                    break;
2406                }
2407            }
2408            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2409            lowlevel::Response::Success { name: String::from("TESTIC"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2410        },
2411        highlevel::Success::Tests {
2412            field,
2413        } => {
2414            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2415            let field_string = field.clone();
2416            let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
2417            raw_arguments.push(field_primitive);
2418            while let Some(arg) = raw_arguments.last() {
2419                if arg.is_empty() {
2420                    let _ = raw_arguments.pop();
2421                } else {
2422                    break;
2423                }
2424            }
2425            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2426            lowlevel::Response::Success { name: String::from("TESTS"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2427        },
2428        highlevel::Success::Testsi {
2429            field1,
2430            field2,
2431        } => {
2432            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2433            let field1_string = field1.clone();
2434            let field1_primitive = lowlevel::Argument::PrimitiveArgument(field1_string);
2435            raw_arguments.push(field1_primitive);
2436            let field2_string = i64::to_string(&field2);
2437            let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_string);
2438            raw_arguments.push(field2_primitive);
2439            while let Some(arg) = raw_arguments.last() {
2440                if arg.is_empty() {
2441                    let _ = raw_arguments.pop();
2442                } else {
2443                    break;
2444                }
2445            }
2446            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2447            lowlevel::Response::Success { name: String::from("TESTSI"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2448        },
2449        highlevel::Success::Testsic {
2450            field1,
2451            field2,
2452        } => {
2453            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2454            let field1_string = field1.clone();
2455            let field1_primitive = lowlevel::Argument::PrimitiveArgument(field1_string);
2456            raw_arguments.push(field1_primitive);
2457            let field2_string = i64::to_string(&field2);
2458            let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_string);
2459            raw_arguments.push(field2_primitive);
2460            while let Some(arg) = raw_arguments.last() {
2461                if arg.is_empty() {
2462                    let _ = raw_arguments.pop();
2463                } else {
2464                    break;
2465                }
2466            }
2467            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2468            lowlevel::Response::Success { name: String::from("TESTSIC"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2469        },
2470        highlevel::Success::Testio {
2471            field1,
2472            field2,
2473        } => {
2474            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2475            let field1_string = i64::to_string(&field1);
2476            let field1_primitive = lowlevel::Argument::PrimitiveArgument(field1_string);
2477            raw_arguments.push(field1_primitive);
2478            match field2 {
2479            None => {
2480                raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
2481            }
2482            Some(field2_unwrapped) => {
2483                    let field2_unwrapped_string = i64::to_string(&field2_unwrapped);
2484                    let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_unwrapped_string);
2485                    raw_arguments.push(field2_primitive);
2486            }
2487            }
2488            while let Some(arg) = raw_arguments.last() {
2489                if arg.is_empty() {
2490                    let _ = raw_arguments.pop();
2491                } else {
2492                    break;
2493                }
2494            }
2495            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2496            lowlevel::Response::Success { name: String::from("TESTIO"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2497        },
2498        highlevel::Success::Testioo {
2499            field1,
2500            field2,
2501            field3,
2502        } => {
2503            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2504            let field1_string = i64::to_string(&field1);
2505            let field1_primitive = lowlevel::Argument::PrimitiveArgument(field1_string);
2506            raw_arguments.push(field1_primitive);
2507            match field2 {
2508            None => {
2509                raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
2510            }
2511            Some(field2_unwrapped) => {
2512                    let field2_unwrapped_string = i64::to_string(&field2_unwrapped);
2513                    let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_unwrapped_string);
2514                    raw_arguments.push(field2_primitive);
2515            }
2516            }
2517            match field3 {
2518            None => {
2519                raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
2520            }
2521            Some(field3_unwrapped) => {
2522                    let field3_unwrapped_string = field3_unwrapped.clone();
2523                    let field3_primitive = lowlevel::Argument::PrimitiveArgument(field3_unwrapped_string);
2524                    raw_arguments.push(field3_primitive);
2525            }
2526            }
2527            while let Some(arg) = raw_arguments.last() {
2528                if arg.is_empty() {
2529                    let _ = raw_arguments.pop();
2530                } else {
2531                    break;
2532                }
2533            }
2534            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2535            lowlevel::Response::Success { name: String::from("TESTIOO"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2536        },
2537        highlevel::Success::Testl {
2538            field,
2539        } => {
2540            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2541            for field_element in field.iter() {
2542                    let field_element_string = i64::to_string(&field_element);
2543                    let field_element_primitive = lowlevel::Argument::PrimitiveArgument(field_element_string);
2544                    raw_arguments.push(field_element_primitive);
2545            }   
2546            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2547            lowlevel::Response::Success { name: String::from("TESTL"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2548        },
2549        highlevel::Success::Testol {
2550            field,
2551        } => {
2552            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2553            for field_element in field.iter() {
2554                    match field_element {
2555                    None => {
2556                        raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
2557                    }
2558                    Some(field_element_unwrapped) => {
2559                            let field_element_unwrapped_string = i64::to_string(&field_element_unwrapped);
2560                            let field_element_primitive = lowlevel::Argument::PrimitiveArgument(field_element_unwrapped_string);
2561                            raw_arguments.push(field_element_primitive);
2562                    }
2563                    }
2564            }   
2565            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2566            lowlevel::Response::Success { name: String::from("TESTOL"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2567        },
2568        highlevel::Success::Testm {
2569            field,
2570        } => {
2571            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2572            for (field_typed_key, field_typed_value) in field {
2573                let field_primitive_key = i64::to_string(&field_typed_key);
2574                let field_primitive_value = field_typed_value.clone();
2575                let field_untyped_pair = lowlevel::Argument::KeyValueArgument { key: field_primitive_key, value: field_primitive_value };
2576                raw_arguments.push(field_untyped_pair);
2577            }   
2578            while let Some(arg) = raw_arguments.last() {
2579                if arg.is_empty() {
2580                    let _ = raw_arguments.pop();
2581                } else {
2582                    break;
2583                }
2584            }
2585            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2586            lowlevel::Response::Success { name: String::from("TESTM"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2587        },
2588        highlevel::Success::Testp {
2589            field,
2590        } => {
2591            let mut raw_arguments_outer = Vec::<Vec<lowlevel::Argument>>::new();
2592            let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
2593            let field_string = i64::to_string(&field);
2594            let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
2595            raw_arguments_inner.push(field_primitive);
2596            raw_arguments_outer.push(raw_arguments_inner);
2597            let arguments = lowlevel::Arguments::ParenthesisDelimitedArgumentLists(raw_arguments_outer);
2598            lowlevel::Response::Success { name: String::from("TESTP"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2599        },
2600        highlevel::Success::Testpp {
2601            field1,
2602            field2,
2603            field3,
2604        } => {
2605            let mut raw_arguments_outer = Vec::<Vec<lowlevel::Argument>>::new();
2606            let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
2607            let field1_string = i64::to_string(&field1);
2608            let field1_primitive = lowlevel::Argument::PrimitiveArgument(field1_string);
2609            raw_arguments_inner.push(field1_primitive);
2610            raw_arguments_outer.push(raw_arguments_inner);
2611            let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
2612            let field2_string = i64::to_string(&field2);
2613            let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_string);
2614            raw_arguments_inner.push(field2_primitive);
2615            let field3_string = field3.clone();
2616            let field3_primitive = lowlevel::Argument::PrimitiveArgument(field3_string);
2617            raw_arguments_inner.push(field3_primitive);
2618            raw_arguments_outer.push(raw_arguments_inner);
2619            let arguments = lowlevel::Arguments::ParenthesisDelimitedArgumentLists(raw_arguments_outer);
2620            lowlevel::Response::Success { name: String::from("TESTPP"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2621        },
2622        highlevel::Success::Testpmpil {
2623            field1,
2624            field2,
2625            field3,
2626        } => {
2627            let mut raw_arguments_outer = Vec::<Vec<lowlevel::Argument>>::new();
2628            let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
2629            for (field1_typed_key, field1_typed_value) in field1 {
2630                let field1_primitive_key = i64::to_string(&field1_typed_key);
2631                let field1_primitive_value = field1_typed_value.clone();
2632                let field1_untyped_pair = lowlevel::Argument::KeyValueArgument { key: field1_primitive_key, value: field1_primitive_value };
2633                raw_arguments_inner.push(field1_untyped_pair);
2634            }   
2635            raw_arguments_outer.push(raw_arguments_inner);
2636            let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
2637            let field2_string = i64::to_string(&field2);
2638            let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_string);
2639            raw_arguments_inner.push(field2_primitive);
2640            for field3_element in field3.iter() {
2641                    let field3_element_string = i64::to_string(&field3_element);
2642                    let field3_element_primitive = lowlevel::Argument::PrimitiveArgument(field3_element_string);
2643                    raw_arguments_inner.push(field3_element_primitive);
2644            }   
2645            raw_arguments_outer.push(raw_arguments_inner);
2646            let arguments = lowlevel::Arguments::ParenthesisDelimitedArgumentLists(raw_arguments_outer);
2647            lowlevel::Response::Success { name: String::from("TESTPMPIL"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2648        },
2649        highlevel::Success::SameOne {
2650            field,
2651        } => {
2652            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2653            let field_string = i64::to_string(&field);
2654            let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
2655            raw_arguments.push(field_primitive);
2656            while let Some(arg) = raw_arguments.last() {
2657                if arg.is_empty() {
2658                    let _ = raw_arguments.pop();
2659                } else {
2660                    break;
2661                }
2662            }
2663            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2664            lowlevel::Response::Success { name: String::from("SAME"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2665        },
2666        highlevel::Success::SameTwo {
2667            field,
2668        } => {
2669            let mut raw_arguments_outer = Vec::<Vec<lowlevel::Argument>>::new();
2670            let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
2671            let field_string = i64::to_string(&field);
2672            let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
2673            raw_arguments_inner.push(field_primitive);
2674            raw_arguments_outer.push(raw_arguments_inner);
2675            let arguments = lowlevel::Arguments::ParenthesisDelimitedArgumentLists(raw_arguments_outer);
2676            lowlevel::Response::Success { name: String::from("SAME"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2677        },
2678        highlevel::Success::Brsf {
2679            features,
2680        } => {
2681            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2682            let features_string = i64::to_string(&features);
2683            let features_primitive = lowlevel::Argument::PrimitiveArgument(features_string);
2684            raw_arguments.push(features_primitive);
2685            while let Some(arg) = raw_arguments.last() {
2686                if arg.is_empty() {
2687                    let _ = raw_arguments.pop();
2688                } else {
2689                    break;
2690                }
2691            }
2692            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2693            lowlevel::Response::Success { name: String::from("BRSF"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2694        },
2695        highlevel::Success::CindRead {
2696            ordered_values,
2697        } => {
2698            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2699            for ordered_values_element in ordered_values.iter() {
2700                    let ordered_values_element_string = i64::to_string(&ordered_values_element);
2701                    let ordered_values_element_primitive = lowlevel::Argument::PrimitiveArgument(ordered_values_element_string);
2702                    raw_arguments.push(ordered_values_element_primitive);
2703            }   
2704            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2705            lowlevel::Response::Success { name: String::from("CIND"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2706        },
2707        highlevel::Success::Clcc {
2708            index,
2709            direction,
2710            status,
2711            mode,
2712            multiparty,
2713            number,
2714            ty,
2715            alpha,
2716            priority,
2717        } => {
2718            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2719            let index_string = i64::to_string(&index);
2720            let index_primitive = lowlevel::Argument::PrimitiveArgument(index_string);
2721            raw_arguments.push(index_primitive);
2722            let direction_string = i64::to_string(&direction);
2723            let direction_primitive = lowlevel::Argument::PrimitiveArgument(direction_string);
2724            raw_arguments.push(direction_primitive);
2725            let status_string = i64::to_string(&status);
2726            let status_primitive = lowlevel::Argument::PrimitiveArgument(status_string);
2727            raw_arguments.push(status_primitive);
2728            let mode_string = i64::to_string(&mode);
2729            let mode_primitive = lowlevel::Argument::PrimitiveArgument(mode_string);
2730            raw_arguments.push(mode_primitive);
2731            let multiparty_string = i64::to_string(&multiparty);
2732            let multiparty_primitive = lowlevel::Argument::PrimitiveArgument(multiparty_string);
2733            raw_arguments.push(multiparty_primitive);
2734            match number {
2735            None => {
2736                raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
2737            }
2738            Some(number_unwrapped) => {
2739                    let number_unwrapped_string = number_unwrapped.clone();
2740                    let number_primitive = lowlevel::Argument::PrimitiveArgument(number_unwrapped_string);
2741                    raw_arguments.push(number_primitive);
2742            }
2743            }
2744            match ty {
2745            None => {
2746                raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
2747            }
2748            Some(ty_unwrapped) => {
2749                    let ty_unwrapped_string = i64::to_string(&ty_unwrapped);
2750                    let ty_primitive = lowlevel::Argument::PrimitiveArgument(ty_unwrapped_string);
2751                    raw_arguments.push(ty_primitive);
2752            }
2753            }
2754            match alpha {
2755            None => {
2756                raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
2757            }
2758            Some(alpha_unwrapped) => {
2759                    let alpha_unwrapped_string = alpha_unwrapped.clone();
2760                    let alpha_primitive = lowlevel::Argument::PrimitiveArgument(alpha_unwrapped_string);
2761                    raw_arguments.push(alpha_primitive);
2762            }
2763            }
2764            match priority {
2765            None => {
2766                raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
2767            }
2768            Some(priority_unwrapped) => {
2769                    let priority_unwrapped_string = i64::to_string(&priority_unwrapped);
2770                    let priority_primitive = lowlevel::Argument::PrimitiveArgument(priority_unwrapped_string);
2771                    raw_arguments.push(priority_primitive);
2772            }
2773            }
2774            while let Some(arg) = raw_arguments.last() {
2775                if arg.is_empty() {
2776                    let _ = raw_arguments.pop();
2777                } else {
2778                    break;
2779                }
2780            }
2781            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2782            lowlevel::Response::Success { name: String::from("CLCC"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2783        },
2784        highlevel::Success::Bcs {
2785            codec,
2786        } => {
2787            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2788            let codec_string = i64::to_string(&codec);
2789            let codec_primitive = lowlevel::Argument::PrimitiveArgument(codec_string);
2790            raw_arguments.push(codec_primitive);
2791            while let Some(arg) = raw_arguments.last() {
2792                if arg.is_empty() {
2793                    let _ = raw_arguments.pop();
2794                } else {
2795                    break;
2796                }
2797            }
2798            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2799            lowlevel::Response::Success { name: String::from("BCS"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2800        },
2801        highlevel::Success::BindList {
2802            indicators,
2803        } => {
2804            let mut raw_arguments_outer = Vec::<Vec<lowlevel::Argument>>::new();
2805            let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
2806            for indicators_element in indicators.iter() {
2807                    let indicators_element_string_int = *indicators_element as i64;
2808                    let indicators_element_string = i64::to_string(&indicators_element_string_int);
2809                    let indicators_element_primitive = lowlevel::Argument::PrimitiveArgument(indicators_element_string);
2810                    raw_arguments_inner.push(indicators_element_primitive);
2811            }   
2812            raw_arguments_outer.push(raw_arguments_inner);
2813            let arguments = lowlevel::Arguments::ParenthesisDelimitedArgumentLists(raw_arguments_outer);
2814            lowlevel::Response::Success { name: String::from("BIND"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2815        },
2816        highlevel::Success::BindStatus {
2817            anum,
2818            state,
2819        } => {
2820            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2821            let anum_string_int = *anum as i64;
2822            let anum_string = i64::to_string(&anum_string_int);
2823            let anum_primitive = lowlevel::Argument::PrimitiveArgument(anum_string);
2824            raw_arguments.push(anum_primitive);
2825            let state_string_int = if *state { 1 } else { 0 };
2826            let state_string = i64::to_string(&state_string_int);
2827            let state_primitive = lowlevel::Argument::PrimitiveArgument(state_string);
2828            raw_arguments.push(state_primitive);
2829            while let Some(arg) = raw_arguments.last() {
2830                if arg.is_empty() {
2831                    let _ = raw_arguments.pop();
2832                } else {
2833                    break;
2834                }
2835            }
2836            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2837            lowlevel::Response::Success { name: String::from("BIND"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2838        },
2839        highlevel::Success::Chld {
2840            commands,
2841        } => {
2842            let mut raw_arguments_outer = Vec::<Vec<lowlevel::Argument>>::new();
2843            let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
2844            for commands_element in commands.iter() {
2845                    let commands_element_string = commands_element.clone();
2846                    let commands_element_primitive = lowlevel::Argument::PrimitiveArgument(commands_element_string);
2847                    raw_arguments_inner.push(commands_element_primitive);
2848            }   
2849            raw_arguments_outer.push(raw_arguments_inner);
2850            let arguments = lowlevel::Arguments::ParenthesisDelimitedArgumentLists(raw_arguments_outer);
2851            lowlevel::Response::Success { name: String::from("CHLD"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2852        },
2853        highlevel::Success::Cops {
2854            format,
2855            zero,
2856            operator,
2857        } => {
2858            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2859            let format_string_int = *format as i64;
2860            let format_string = i64::to_string(&format_string_int);
2861            let format_primitive = lowlevel::Argument::PrimitiveArgument(format_string);
2862            raw_arguments.push(format_primitive);
2863            let zero_string = i64::to_string(&zero);
2864            let zero_primitive = lowlevel::Argument::PrimitiveArgument(zero_string);
2865            raw_arguments.push(zero_primitive);
2866            let operator_string = operator.clone();
2867            let operator_primitive = lowlevel::Argument::PrimitiveArgument(operator_string);
2868            raw_arguments.push(operator_primitive);
2869            while let Some(arg) = raw_arguments.last() {
2870                if arg.is_empty() {
2871                    let _ = raw_arguments.pop();
2872                } else {
2873                    break;
2874                }
2875            }
2876            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2877            lowlevel::Response::Success { name: String::from("COPS"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2878        },
2879        highlevel::Success::Clip {
2880            number,
2881            ty,
2882        } => {
2883            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2884            let number_string = number.clone();
2885            let number_primitive = lowlevel::Argument::PrimitiveArgument(number_string);
2886            raw_arguments.push(number_primitive);
2887            let ty_string = i64::to_string(&ty);
2888            let ty_primitive = lowlevel::Argument::PrimitiveArgument(ty_string);
2889            raw_arguments.push(ty_primitive);
2890            while let Some(arg) = raw_arguments.last() {
2891                if arg.is_empty() {
2892                    let _ = raw_arguments.pop();
2893                } else {
2894                    break;
2895                }
2896            }
2897            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2898            lowlevel::Response::Success { name: String::from("CLIP"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2899        },
2900        highlevel::Success::Cnum {
2901            alpha,
2902            number,
2903            ty,
2904            speed,
2905            service,
2906        } => {
2907            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2908            let alpha_string = alpha.clone();
2909            let alpha_primitive = lowlevel::Argument::PrimitiveArgument(alpha_string);
2910            raw_arguments.push(alpha_primitive);
2911            let number_string = number.clone();
2912            let number_primitive = lowlevel::Argument::PrimitiveArgument(number_string);
2913            raw_arguments.push(number_primitive);
2914            let ty_string = i64::to_string(&ty);
2915            let ty_primitive = lowlevel::Argument::PrimitiveArgument(ty_string);
2916            raw_arguments.push(ty_primitive);
2917            let speed_string = speed.clone();
2918            let speed_primitive = lowlevel::Argument::PrimitiveArgument(speed_string);
2919            raw_arguments.push(speed_primitive);
2920            let service_string = i64::to_string(&service);
2921            let service_primitive = lowlevel::Argument::PrimitiveArgument(service_string);
2922            raw_arguments.push(service_primitive);
2923            while let Some(arg) = raw_arguments.last() {
2924                if arg.is_empty() {
2925                    let _ = raw_arguments.pop();
2926                } else {
2927                    break;
2928                }
2929            }
2930            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2931            lowlevel::Response::Success { name: String::from("CNUM"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2932        },
2933        highlevel::Success::Vgs {
2934            level,
2935        } => {
2936            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2937            let level_string = i64::to_string(&level);
2938            let level_primitive = lowlevel::Argument::PrimitiveArgument(level_string);
2939            raw_arguments.push(level_primitive);
2940            while let Some(arg) = raw_arguments.last() {
2941                if arg.is_empty() {
2942                    let _ = raw_arguments.pop();
2943                } else {
2944                    break;
2945                }
2946            }
2947            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2948            lowlevel::Response::Success { name: String::from("VGS"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2949        },
2950        highlevel::Success::Vgm {
2951            level,
2952        } => {
2953            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2954            let level_string = i64::to_string(&level);
2955            let level_primitive = lowlevel::Argument::PrimitiveArgument(level_string);
2956            raw_arguments.push(level_primitive);
2957            while let Some(arg) = raw_arguments.last() {
2958                if arg.is_empty() {
2959                    let _ = raw_arguments.pop();
2960                } else {
2961                    break;
2962                }
2963            }
2964            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2965            lowlevel::Response::Success { name: String::from("VGM"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2966        },
2967        highlevel::Success::Ciev {
2968            ind,
2969            value,
2970        } => {
2971            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2972            let ind_string = i64::to_string(&ind);
2973            let ind_primitive = lowlevel::Argument::PrimitiveArgument(ind_string);
2974            raw_arguments.push(ind_primitive);
2975            let value_string = i64::to_string(&value);
2976            let value_primitive = lowlevel::Argument::PrimitiveArgument(value_string);
2977            raw_arguments.push(value_primitive);
2978            while let Some(arg) = raw_arguments.last() {
2979                if arg.is_empty() {
2980                    let _ = raw_arguments.pop();
2981                } else {
2982                    break;
2983                }
2984            }
2985            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2986            lowlevel::Response::Success { name: String::from("CIEV"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2987        },
2988        highlevel::Success::Ccwa {
2989            number,
2990            ty,
2991        } => {
2992            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2993            let number_string = number.clone();
2994            let number_primitive = lowlevel::Argument::PrimitiveArgument(number_string);
2995            raw_arguments.push(number_primitive);
2996            let ty_string = i64::to_string(&ty);
2997            let ty_primitive = lowlevel::Argument::PrimitiveArgument(ty_string);
2998            raw_arguments.push(ty_primitive);
2999            while let Some(arg) = raw_arguments.last() {
3000                if arg.is_empty() {
3001                    let _ = raw_arguments.pop();
3002                } else {
3003                    break;
3004                }
3005            }
3006            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
3007            lowlevel::Response::Success { name: String::from("CCWA"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
3008        },
3009        highlevel::Success::Ring {        } => {
3010            let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
3011            lowlevel::Response::Success { name: String::from("RING"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
3012        },
3013        highlevel::Success::Bsir {
3014            enable,
3015        } => {
3016            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
3017            let enable_string_int = if *enable { 1 } else { 0 };
3018            let enable_string = i64::to_string(&enable_string_int);
3019            let enable_primitive = lowlevel::Argument::PrimitiveArgument(enable_string);
3020            raw_arguments.push(enable_primitive);
3021            while let Some(arg) = raw_arguments.last() {
3022                if arg.is_empty() {
3023                    let _ = raw_arguments.pop();
3024                } else {
3025                    break;
3026                }
3027            }
3028            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
3029            lowlevel::Response::Success { name: String::from("BSIR"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
3030        },
3031    }
3032}
3033