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        _ => Err(DeserializeErrorCause::UnknownResponse(lowlevel.clone())),
1509    }
1510}
1511
1512pub fn lower_command(highlevel: &highlevel::Command) -> lowlevel::Command {
1513    match highlevel {
1514        highlevel::Command::Testex {        } => {
1515            let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
1516            lowlevel::Command::Execute { name: String::from("TESTEX"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
1517        },
1518        highlevel::Command::Testexext {        } => {
1519            let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
1520            lowlevel::Command::Execute { name: String::from("TESTEXEXT"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
1521        },
1522        highlevel::Command::TestCommand {        } => {
1523            let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
1524            lowlevel::Command::Execute { name: String::from("TESTNEX"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
1525        },
1526        highlevel::Command::Testexextfi {
1527            field,
1528        } => {
1529            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1530            let field_string = i64::to_string(&field);
1531            let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
1532            raw_arguments.push(field_primitive);
1533            while let Some(arg) = raw_arguments.last() {
1534                if arg.is_empty() {
1535                    let _ = raw_arguments.pop();
1536                } else {
1537                    break;
1538                }
1539            }
1540            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1541            lowlevel::Command::Execute { name: String::from("TESTEXEXTFI"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1542        },
1543        highlevel::Command::Testexextfic {
1544            field,
1545        } => {
1546            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1547            let field_string = i64::to_string(&field);
1548            let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
1549            raw_arguments.push(field_primitive);
1550            while let Some(arg) = raw_arguments.last() {
1551                if arg.is_empty() {
1552                    let _ = raw_arguments.pop();
1553                } else {
1554                    break;
1555                }
1556            }
1557            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1558            lowlevel::Command::Execute { name: String::from("TESTEXEXTFIC"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1559        },
1560        highlevel::Command::Testnsd {
1561            field,
1562        } => {
1563            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1564            let field_string = i64::to_string(&field);
1565            let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
1566            raw_arguments.push(field_primitive);
1567            while let Some(arg) = raw_arguments.last() {
1568                if arg.is_empty() {
1569                    let _ = raw_arguments.pop();
1570                } else {
1571                    break;
1572                }
1573            }
1574            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1575            lowlevel::Command::Execute { name: String::from("TESTNSD"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(">")), arguments, terminator: None } }
1576        },
1577        highlevel::Command::Testnst {
1578            field,
1579        } => {
1580            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1581            let field_string = i64::to_string(&field);
1582            let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
1583            raw_arguments.push(field_primitive);
1584            while let Some(arg) = raw_arguments.last() {
1585                if arg.is_empty() {
1586                    let _ = raw_arguments.pop();
1587                } else {
1588                    break;
1589                }
1590            }
1591            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1592            lowlevel::Command::Execute { name: String::from("TESTNST"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: Some(String::from(";")) } }
1593        },
1594        highlevel::Command::Testnsdnst {
1595            field,
1596        } => {
1597            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1598            let field_string = i64::to_string(&field);
1599            let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
1600            raw_arguments.push(field_primitive);
1601            while let Some(arg) = raw_arguments.last() {
1602                if arg.is_empty() {
1603                    let _ = raw_arguments.pop();
1604                } else {
1605                    break;
1606                }
1607            }
1608            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1609            lowlevel::Command::Execute { name: String::from("TESTNSDNST"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(">")), arguments, terminator: Some(String::from(";")) } }
1610        },
1611        highlevel::Command::Testnod {
1612            field,
1613        } => {
1614            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1615            let field_string = i64::to_string(&field);
1616            let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
1617            raw_arguments.push(field_primitive);
1618            while let Some(arg) = raw_arguments.last() {
1619                if arg.is_empty() {
1620                    let _ = raw_arguments.pop();
1621                } else {
1622                    break;
1623                }
1624            }
1625            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1626            lowlevel::Command::Execute { name: String::from("TESTNOD"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
1627        },
1628        highlevel::Command::Testexextfs {
1629            field,
1630        } => {
1631            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1632            let field_string = field.clone();
1633            let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
1634            raw_arguments.push(field_primitive);
1635            while let Some(arg) = raw_arguments.last() {
1636                if arg.is_empty() {
1637                    let _ = raw_arguments.pop();
1638                } else {
1639                    break;
1640                }
1641            }
1642            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1643            lowlevel::Command::Execute { name: String::from("TESTEXEXTFS"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1644        },
1645        highlevel::Command::Testexextfsi {
1646            field1,
1647            field2,
1648        } => {
1649            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1650            let field1_string = field1.clone();
1651            let field1_primitive = lowlevel::Argument::PrimitiveArgument(field1_string);
1652            raw_arguments.push(field1_primitive);
1653            let field2_string = i64::to_string(&field2);
1654            let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_string);
1655            raw_arguments.push(field2_primitive);
1656            while let Some(arg) = raw_arguments.last() {
1657                if arg.is_empty() {
1658                    let _ = raw_arguments.pop();
1659                } else {
1660                    break;
1661                }
1662            }
1663            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1664            lowlevel::Command::Execute { name: String::from("TESTEXEXTFSI"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1665        },
1666        highlevel::Command::Testexextfsic {
1667            field1,
1668            field2,
1669        } => {
1670            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1671            let field1_string = field1.clone();
1672            let field1_primitive = lowlevel::Argument::PrimitiveArgument(field1_string);
1673            raw_arguments.push(field1_primitive);
1674            let field2_string = i64::to_string(&field2);
1675            let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_string);
1676            raw_arguments.push(field2_primitive);
1677            while let Some(arg) = raw_arguments.last() {
1678                if arg.is_empty() {
1679                    let _ = raw_arguments.pop();
1680                } else {
1681                    break;
1682                }
1683            }
1684            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1685            lowlevel::Command::Execute { name: String::from("TESTEXEXTFSIC"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1686        },
1687        highlevel::Command::Testio {
1688            field1,
1689            field2,
1690        } => {
1691            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1692            let field1_string = i64::to_string(&field1);
1693            let field1_primitive = lowlevel::Argument::PrimitiveArgument(field1_string);
1694            raw_arguments.push(field1_primitive);
1695            match field2 {
1696            None => {
1697                raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
1698            }
1699            Some(field2_unwrapped) => {
1700                    let field2_unwrapped_string = i64::to_string(&field2_unwrapped);
1701                    let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_unwrapped_string);
1702                    raw_arguments.push(field2_primitive);
1703            }
1704            }
1705            while let Some(arg) = raw_arguments.last() {
1706                if arg.is_empty() {
1707                    let _ = raw_arguments.pop();
1708                } else {
1709                    break;
1710                }
1711            }
1712            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1713            lowlevel::Command::Execute { name: String::from("TESTIO"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1714        },
1715        highlevel::Command::Testallopt {
1716            field1,
1717            field2,
1718            field3,
1719        } => {
1720            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1721            match field1 {
1722            None => {
1723                raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
1724            }
1725            Some(field1_unwrapped) => {
1726                    let field1_unwrapped_string = i64::to_string(&field1_unwrapped);
1727                    let field1_primitive = lowlevel::Argument::PrimitiveArgument(field1_unwrapped_string);
1728                    raw_arguments.push(field1_primitive);
1729            }
1730            }
1731            match field2 {
1732            None => {
1733                raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
1734            }
1735            Some(field2_unwrapped) => {
1736                    let field2_unwrapped_string = i64::to_string(&field2_unwrapped);
1737                    let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_unwrapped_string);
1738                    raw_arguments.push(field2_primitive);
1739            }
1740            }
1741            match field3 {
1742            None => {
1743                raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
1744            }
1745            Some(field3_unwrapped) => {
1746                    let field3_unwrapped_string = i64::to_string(&field3_unwrapped);
1747                    let field3_primitive = lowlevel::Argument::PrimitiveArgument(field3_unwrapped_string);
1748                    raw_arguments.push(field3_primitive);
1749            }
1750            }
1751            while let Some(arg) = raw_arguments.last() {
1752                if arg.is_empty() {
1753                    let _ = raw_arguments.pop();
1754                } else {
1755                    break;
1756                }
1757            }
1758            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1759            lowlevel::Command::Execute { name: String::from("TESTALLOPT"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1760        },
1761        highlevel::Command::Testl {
1762            field,
1763        } => {
1764            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1765            for field_element in field.iter() {
1766                    let field_element_string = i64::to_string(&field_element);
1767                    let field_element_primitive = lowlevel::Argument::PrimitiveArgument(field_element_string);
1768                    raw_arguments.push(field_element_primitive);
1769            }   
1770            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1771            lowlevel::Command::Execute { name: String::from("TESTL"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1772        },
1773        highlevel::Command::Testol {
1774            field,
1775        } => {
1776            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1777            for field_element in field.iter() {
1778                    match field_element {
1779                    None => {
1780                        raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
1781                    }
1782                    Some(field_element_unwrapped) => {
1783                            let field_element_unwrapped_string = i64::to_string(&field_element_unwrapped);
1784                            let field_element_primitive = lowlevel::Argument::PrimitiveArgument(field_element_unwrapped_string);
1785                            raw_arguments.push(field_element_primitive);
1786                    }
1787                    }
1788            }   
1789            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1790            lowlevel::Command::Execute { name: String::from("TESTOL"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1791        },
1792        highlevel::Command::Testm {
1793            field,
1794        } => {
1795            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1796            for (field_typed_key, field_typed_value) in field {
1797                let field_primitive_key = i64::to_string(&field_typed_key);
1798                let field_primitive_value = field_typed_value.clone();
1799                let field_untyped_pair = lowlevel::Argument::KeyValueArgument { key: field_primitive_key, value: field_primitive_value };
1800                raw_arguments.push(field_untyped_pair);
1801            }   
1802            while let Some(arg) = raw_arguments.last() {
1803                if arg.is_empty() {
1804                    let _ = raw_arguments.pop();
1805                } else {
1806                    break;
1807                }
1808            }
1809            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1810            lowlevel::Command::Execute { name: String::from("TESTM"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1811        },
1812        highlevel::Command::Testp {
1813            field,
1814        } => {
1815            let mut raw_arguments_outer = Vec::<Vec<lowlevel::Argument>>::new();
1816            let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
1817            let field_string = i64::to_string(&field);
1818            let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
1819            raw_arguments_inner.push(field_primitive);
1820            raw_arguments_outer.push(raw_arguments_inner);
1821            let arguments = lowlevel::Arguments::ParenthesisDelimitedArgumentLists(raw_arguments_outer);
1822            lowlevel::Command::Execute { name: String::from("TESTP"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1823        },
1824        highlevel::Command::Testpp {
1825            field1,
1826            field2,
1827            field3,
1828        } => {
1829            let mut raw_arguments_outer = Vec::<Vec<lowlevel::Argument>>::new();
1830            let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
1831            let field1_string = i64::to_string(&field1);
1832            let field1_primitive = lowlevel::Argument::PrimitiveArgument(field1_string);
1833            raw_arguments_inner.push(field1_primitive);
1834            raw_arguments_outer.push(raw_arguments_inner);
1835            let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
1836            let field2_string = i64::to_string(&field2);
1837            let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_string);
1838            raw_arguments_inner.push(field2_primitive);
1839            let field3_string = field3.clone();
1840            let field3_primitive = lowlevel::Argument::PrimitiveArgument(field3_string);
1841            raw_arguments_inner.push(field3_primitive);
1842            raw_arguments_outer.push(raw_arguments_inner);
1843            let arguments = lowlevel::Arguments::ParenthesisDelimitedArgumentLists(raw_arguments_outer);
1844            lowlevel::Command::Execute { name: String::from("TESTPP"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1845        },
1846        highlevel::Command::Testpmpil {
1847            field1,
1848            field2,
1849            field3,
1850        } => {
1851            let mut raw_arguments_outer = Vec::<Vec<lowlevel::Argument>>::new();
1852            let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
1853            for (field1_typed_key, field1_typed_value) in field1 {
1854                let field1_primitive_key = i64::to_string(&field1_typed_key);
1855                let field1_primitive_value = field1_typed_value.clone();
1856                let field1_untyped_pair = lowlevel::Argument::KeyValueArgument { key: field1_primitive_key, value: field1_primitive_value };
1857                raw_arguments_inner.push(field1_untyped_pair);
1858            }   
1859            raw_arguments_outer.push(raw_arguments_inner);
1860            let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
1861            let field2_string = i64::to_string(&field2);
1862            let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_string);
1863            raw_arguments_inner.push(field2_primitive);
1864            for field3_element in field3.iter() {
1865                    let field3_element_string = i64::to_string(&field3_element);
1866                    let field3_element_primitive = lowlevel::Argument::PrimitiveArgument(field3_element_string);
1867                    raw_arguments_inner.push(field3_element_primitive);
1868            }   
1869            raw_arguments_outer.push(raw_arguments_inner);
1870            let arguments = lowlevel::Arguments::ParenthesisDelimitedArgumentLists(raw_arguments_outer);
1871            lowlevel::Command::Execute { name: String::from("TESTPMPIL"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1872        },
1873        highlevel::Command::TestrRead {} => {
1874            lowlevel::Command::Read { name: String::from("TESTR"), is_extension: false }
1875        },
1876        highlevel::Command::TestrexRead {} => {
1877            lowlevel::Command::Read { name: String::from("TESTREX"), is_extension: true }
1878        },
1879        highlevel::Command::TesttTest {} => {
1880            lowlevel::Command::Test { name: String::from("TESTT"), is_extension: false }
1881        },
1882        highlevel::Command::TesttexTest {} => {
1883            lowlevel::Command::Test { name: String::from("TESTTEX"), is_extension: true }
1884        },
1885        highlevel::Command::Testenum {
1886            field,
1887        } => {
1888            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1889            let field_string_int = *field as i64;
1890            let field_string = i64::to_string(&field_string_int);
1891            let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
1892            raw_arguments.push(field_primitive);
1893            while let Some(arg) = raw_arguments.last() {
1894                if arg.is_empty() {
1895                    let _ = raw_arguments.pop();
1896                } else {
1897                    break;
1898                }
1899            }
1900            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1901            lowlevel::Command::Execute { name: String::from("TESTENUM"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1902        },
1903        highlevel::Command::Testbool {
1904            field,
1905        } => {
1906            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1907            let field_string_int = if *field { 1 } else { 0 };
1908            let field_string = i64::to_string(&field_string_int);
1909            let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
1910            raw_arguments.push(field_primitive);
1911            while let Some(arg) = raw_arguments.last() {
1912                if arg.is_empty() {
1913                    let _ = raw_arguments.pop();
1914                } else {
1915                    break;
1916                }
1917            }
1918            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1919            lowlevel::Command::Execute { name: String::from("TESTBOOL"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1920        },
1921        highlevel::Command::Testotherfile {        } => {
1922            let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
1923            lowlevel::Command::Execute { name: String::from("TESTOTHERFILE"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
1924        },
1925        highlevel::Command::Brsf {
1926            features,
1927        } => {
1928            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1929            let features_string = i64::to_string(&features);
1930            let features_primitive = lowlevel::Argument::PrimitiveArgument(features_string);
1931            raw_arguments.push(features_primitive);
1932            while let Some(arg) = raw_arguments.last() {
1933                if arg.is_empty() {
1934                    let _ = raw_arguments.pop();
1935                } else {
1936                    break;
1937                }
1938            }
1939            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1940            lowlevel::Command::Execute { name: String::from("BRSF"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1941        },
1942        highlevel::Command::CindTest {} => {
1943            lowlevel::Command::Test { name: String::from("CIND"), is_extension: true }
1944        },
1945        highlevel::Command::CindRead {} => {
1946            lowlevel::Command::Read { name: String::from("CIND"), is_extension: true }
1947        },
1948        highlevel::Command::Clcc {        } => {
1949            let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
1950            lowlevel::Command::Execute { name: String::from("CLCC"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
1951        },
1952        highlevel::Command::Bcc {        } => {
1953            let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
1954            lowlevel::Command::Execute { name: String::from("BCC"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
1955        },
1956        highlevel::Command::Bcs {
1957            codec,
1958        } => {
1959            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1960            let codec_string = i64::to_string(&codec);
1961            let codec_primitive = lowlevel::Argument::PrimitiveArgument(codec_string);
1962            raw_arguments.push(codec_primitive);
1963            while let Some(arg) = raw_arguments.last() {
1964                if arg.is_empty() {
1965                    let _ = raw_arguments.pop();
1966                } else {
1967                    break;
1968                }
1969            }
1970            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1971            lowlevel::Command::Execute { name: String::from("BCS"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1972        },
1973        highlevel::Command::Bac {
1974            codecs,
1975        } => {
1976            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1977            for codecs_element in codecs.iter() {
1978                    let codecs_element_string = i64::to_string(&codecs_element);
1979                    let codecs_element_primitive = lowlevel::Argument::PrimitiveArgument(codecs_element_string);
1980                    raw_arguments.push(codecs_element_primitive);
1981            }   
1982            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1983            lowlevel::Command::Execute { name: String::from("BAC"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1984        },
1985        highlevel::Command::Bind {
1986            indicators,
1987        } => {
1988            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1989            for indicators_element in indicators.iter() {
1990                    let indicators_element_string = i64::to_string(&indicators_element);
1991                    let indicators_element_primitive = lowlevel::Argument::PrimitiveArgument(indicators_element_string);
1992                    raw_arguments.push(indicators_element_primitive);
1993            }   
1994            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1995            lowlevel::Command::Execute { name: String::from("BIND"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1996        },
1997        highlevel::Command::BindTest {} => {
1998            lowlevel::Command::Test { name: String::from("BIND"), is_extension: true }
1999        },
2000        highlevel::Command::BindRead {} => {
2001            lowlevel::Command::Read { name: String::from("BIND"), is_extension: true }
2002        },
2003        highlevel::Command::Biev {
2004            anum,
2005            value,
2006        } => {
2007            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2008            let anum_string_int = *anum as i64;
2009            let anum_string = i64::to_string(&anum_string_int);
2010            let anum_primitive = lowlevel::Argument::PrimitiveArgument(anum_string);
2011            raw_arguments.push(anum_primitive);
2012            let value_string = i64::to_string(&value);
2013            let value_primitive = lowlevel::Argument::PrimitiveArgument(value_string);
2014            raw_arguments.push(value_primitive);
2015            while let Some(arg) = raw_arguments.last() {
2016                if arg.is_empty() {
2017                    let _ = raw_arguments.pop();
2018                } else {
2019                    break;
2020                }
2021            }
2022            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2023            lowlevel::Command::Execute { name: String::from("BIEV"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
2024        },
2025        highlevel::Command::ChldTest {} => {
2026            lowlevel::Command::Test { name: String::from("CHLD"), is_extension: true }
2027        },
2028        highlevel::Command::Cmer {
2029            mode,
2030            keyp,
2031            disp,
2032            ind,
2033        } => {
2034            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2035            match mode {
2036            None => {
2037                raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
2038            }
2039            Some(mode_unwrapped) => {
2040                    let mode_unwrapped_string = i64::to_string(&mode_unwrapped);
2041                    let mode_primitive = lowlevel::Argument::PrimitiveArgument(mode_unwrapped_string);
2042                    raw_arguments.push(mode_primitive);
2043            }
2044            }
2045            match keyp {
2046            None => {
2047                raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
2048            }
2049            Some(keyp_unwrapped) => {
2050                    let keyp_unwrapped_string = i64::to_string(&keyp_unwrapped);
2051                    let keyp_primitive = lowlevel::Argument::PrimitiveArgument(keyp_unwrapped_string);
2052                    raw_arguments.push(keyp_primitive);
2053            }
2054            }
2055            match disp {
2056            None => {
2057                raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
2058            }
2059            Some(disp_unwrapped) => {
2060                    let disp_unwrapped_string = i64::to_string(&disp_unwrapped);
2061                    let disp_primitive = lowlevel::Argument::PrimitiveArgument(disp_unwrapped_string);
2062                    raw_arguments.push(disp_primitive);
2063            }
2064            }
2065            match ind {
2066            None => {
2067                raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
2068            }
2069            Some(ind_unwrapped) => {
2070                    let ind_unwrapped_string = i64::to_string(&ind_unwrapped);
2071                    let ind_primitive = lowlevel::Argument::PrimitiveArgument(ind_unwrapped_string);
2072                    raw_arguments.push(ind_primitive);
2073            }
2074            }
2075            while let Some(arg) = raw_arguments.last() {
2076                if arg.is_empty() {
2077                    let _ = raw_arguments.pop();
2078                } else {
2079                    break;
2080                }
2081            }
2082            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2083            lowlevel::Command::Execute { name: String::from("CMER"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
2084        },
2085        highlevel::Command::Nrec {
2086            nrec,
2087        } => {
2088            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2089            let nrec_string_int = if *nrec { 1 } else { 0 };
2090            let nrec_string = i64::to_string(&nrec_string_int);
2091            let nrec_primitive = lowlevel::Argument::PrimitiveArgument(nrec_string);
2092            raw_arguments.push(nrec_primitive);
2093            while let Some(arg) = raw_arguments.last() {
2094                if arg.is_empty() {
2095                    let _ = raw_arguments.pop();
2096                } else {
2097                    break;
2098                }
2099            }
2100            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2101            lowlevel::Command::Execute { name: String::from("NREC"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
2102        },
2103        highlevel::Command::Cops {
2104            three,
2105            format,
2106        } => {
2107            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2108            let three_string = i64::to_string(&three);
2109            let three_primitive = lowlevel::Argument::PrimitiveArgument(three_string);
2110            raw_arguments.push(three_primitive);
2111            let format_string_int = *format as i64;
2112            let format_string = i64::to_string(&format_string_int);
2113            let format_primitive = lowlevel::Argument::PrimitiveArgument(format_string);
2114            raw_arguments.push(format_primitive);
2115            while let Some(arg) = raw_arguments.last() {
2116                if arg.is_empty() {
2117                    let _ = raw_arguments.pop();
2118                } else {
2119                    break;
2120                }
2121            }
2122            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2123            lowlevel::Command::Execute { name: String::from("COPS"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
2124        },
2125        highlevel::Command::CopsRead {} => {
2126            lowlevel::Command::Read { name: String::from("COPS"), is_extension: true }
2127        },
2128        highlevel::Command::Cmee {
2129            enable,
2130        } => {
2131            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2132            let enable_string_int = if *enable { 1 } else { 0 };
2133            let enable_string = i64::to_string(&enable_string_int);
2134            let enable_primitive = lowlevel::Argument::PrimitiveArgument(enable_string);
2135            raw_arguments.push(enable_primitive);
2136            while let Some(arg) = raw_arguments.last() {
2137                if arg.is_empty() {
2138                    let _ = raw_arguments.pop();
2139                } else {
2140                    break;
2141                }
2142            }
2143            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2144            lowlevel::Command::Execute { name: String::from("CMEE"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
2145        },
2146        highlevel::Command::Ccwa {
2147            enable,
2148        } => {
2149            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2150            let enable_string_int = if *enable { 1 } else { 0 };
2151            let enable_string = i64::to_string(&enable_string_int);
2152            let enable_primitive = lowlevel::Argument::PrimitiveArgument(enable_string);
2153            raw_arguments.push(enable_primitive);
2154            while let Some(arg) = raw_arguments.last() {
2155                if arg.is_empty() {
2156                    let _ = raw_arguments.pop();
2157                } else {
2158                    break;
2159                }
2160            }
2161            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2162            lowlevel::Command::Execute { name: String::from("CCWA"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
2163        },
2164        highlevel::Command::Clip {
2165            enable,
2166        } => {
2167            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2168            let enable_string_int = if *enable { 1 } else { 0 };
2169            let enable_string = i64::to_string(&enable_string_int);
2170            let enable_primitive = lowlevel::Argument::PrimitiveArgument(enable_string);
2171            raw_arguments.push(enable_primitive);
2172            while let Some(arg) = raw_arguments.last() {
2173                if arg.is_empty() {
2174                    let _ = raw_arguments.pop();
2175                } else {
2176                    break;
2177                }
2178            }
2179            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2180            lowlevel::Command::Execute { name: String::from("CLIP"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
2181        },
2182        highlevel::Command::Cnum {        } => {
2183            let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
2184            lowlevel::Command::Execute { name: String::from("CNUM"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
2185        },
2186        highlevel::Command::Vts {
2187            code,
2188        } => {
2189            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2190            let code_string = code.clone();
2191            let code_primitive = lowlevel::Argument::PrimitiveArgument(code_string);
2192            raw_arguments.push(code_primitive);
2193            while let Some(arg) = raw_arguments.last() {
2194                if arg.is_empty() {
2195                    let _ = raw_arguments.pop();
2196                } else {
2197                    break;
2198                }
2199            }
2200            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2201            lowlevel::Command::Execute { name: String::from("VTS"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
2202        },
2203        highlevel::Command::Vgs {
2204            level,
2205        } => {
2206            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2207            let level_string = i64::to_string(&level);
2208            let level_primitive = lowlevel::Argument::PrimitiveArgument(level_string);
2209            raw_arguments.push(level_primitive);
2210            while let Some(arg) = raw_arguments.last() {
2211                if arg.is_empty() {
2212                    let _ = raw_arguments.pop();
2213                } else {
2214                    break;
2215                }
2216            }
2217            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2218            lowlevel::Command::Execute { name: String::from("VGS"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
2219        },
2220        highlevel::Command::Vgm {
2221            level,
2222        } => {
2223            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2224            let level_string = i64::to_string(&level);
2225            let level_primitive = lowlevel::Argument::PrimitiveArgument(level_string);
2226            raw_arguments.push(level_primitive);
2227            while let Some(arg) = raw_arguments.last() {
2228                if arg.is_empty() {
2229                    let _ = raw_arguments.pop();
2230                } else {
2231                    break;
2232                }
2233            }
2234            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2235            lowlevel::Command::Execute { name: String::from("VGM"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
2236        },
2237        highlevel::Command::Bia {
2238            indrep,
2239        } => {
2240            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2241            for indrep_element in indrep.iter() {
2242                    match indrep_element {
2243                    None => {
2244                        raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
2245                    }
2246                    Some(indrep_element_unwrapped) => {
2247                            let indrep_element_unwrapped_string_int = if *indrep_element_unwrapped { 1 } else { 0 };
2248                            let indrep_element_unwrapped_string = i64::to_string(&indrep_element_unwrapped_string_int);
2249                            let indrep_element_primitive = lowlevel::Argument::PrimitiveArgument(indrep_element_unwrapped_string);
2250                            raw_arguments.push(indrep_element_primitive);
2251                    }
2252                    }
2253            }   
2254            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2255            lowlevel::Command::Execute { name: String::from("BIA"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
2256        },
2257        highlevel::Command::Answer {        } => {
2258            let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
2259            lowlevel::Command::Execute { name: String::from("A"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
2260        },
2261        highlevel::Command::Chup {        } => {
2262            let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
2263            lowlevel::Command::Execute { name: String::from("CHUP"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
2264        },
2265        highlevel::Command::Chld {
2266            command,
2267        } => {
2268            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2269            let command_string = command.clone();
2270            let command_primitive = lowlevel::Argument::PrimitiveArgument(command_string);
2271            raw_arguments.push(command_primitive);
2272            while let Some(arg) = raw_arguments.last() {
2273                if arg.is_empty() {
2274                    let _ = raw_arguments.pop();
2275                } else {
2276                    break;
2277                }
2278            }
2279            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2280            lowlevel::Command::Execute { name: String::from("CHLD"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
2281        },
2282        highlevel::Command::AtdNumber {
2283            number,
2284        } => {
2285            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2286            let number_string = number.clone();
2287            let number_primitive = lowlevel::Argument::PrimitiveArgument(number_string);
2288            raw_arguments.push(number_primitive);
2289            while let Some(arg) = raw_arguments.last() {
2290                if arg.is_empty() {
2291                    let _ = raw_arguments.pop();
2292                } else {
2293                    break;
2294                }
2295            }
2296            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2297            lowlevel::Command::Execute { name: String::from("D"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: Some(String::from(";")) } }
2298        },
2299        highlevel::Command::AtdMemory {
2300            location,
2301        } => {
2302            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2303            let location_string = location.clone();
2304            let location_primitive = lowlevel::Argument::PrimitiveArgument(location_string);
2305            raw_arguments.push(location_primitive);
2306            while let Some(arg) = raw_arguments.last() {
2307                if arg.is_empty() {
2308                    let _ = raw_arguments.pop();
2309                } else {
2310                    break;
2311                }
2312            }
2313            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2314            lowlevel::Command::Execute { name: String::from("D"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(">")), arguments, terminator: Some(String::from(";")) } }
2315        },
2316        highlevel::Command::Bldn {        } => {
2317            let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
2318            lowlevel::Command::Execute { name: String::from("BLDN"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
2319        },
2320    }
2321}
2322
2323pub fn lower_success(highlevel: &highlevel::Success) -> lowlevel::Response {
2324    match highlevel {
2325        highlevel::Success::Test {        } => {
2326            let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
2327            lowlevel::Response::Success { name: String::from("TEST"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2328        },
2329        highlevel::Success::Testnod {        } => {
2330            let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
2331            lowlevel::Response::Success { name: String::from("TESTNOD"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
2332        },
2333        highlevel::Success::TestResponse {        } => {
2334            let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
2335            lowlevel::Response::Success { name: String::from("TESTN"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2336        },
2337        highlevel::Success::Testext {        } => {
2338            let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
2339            lowlevel::Response::Success { name: String::from("TESTEXT"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2340        },
2341        highlevel::Success::Testextnod {        } => {
2342            let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
2343            lowlevel::Response::Success { name: String::from("TESTEXTNOD"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
2344        },
2345        highlevel::Success::Testi {
2346            field,
2347        } => {
2348            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2349            let field_string = i64::to_string(&field);
2350            let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
2351            raw_arguments.push(field_primitive);
2352            while let Some(arg) = raw_arguments.last() {
2353                if arg.is_empty() {
2354                    let _ = raw_arguments.pop();
2355                } else {
2356                    break;
2357                }
2358            }
2359            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2360            lowlevel::Response::Success { name: String::from("TESTI"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2361        },
2362        highlevel::Success::Testinod {
2363            field,
2364        } => {
2365            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2366            let field_string = i64::to_string(&field);
2367            let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
2368            raw_arguments.push(field_primitive);
2369            while let Some(arg) = raw_arguments.last() {
2370                if arg.is_empty() {
2371                    let _ = raw_arguments.pop();
2372                } else {
2373                    break;
2374                }
2375            }
2376            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2377            lowlevel::Response::Success { name: String::from("TESTINOD"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
2378        },
2379        highlevel::Success::Testic {
2380            field,
2381        } => {
2382            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2383            let field_string = i64::to_string(&field);
2384            let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
2385            raw_arguments.push(field_primitive);
2386            while let Some(arg) = raw_arguments.last() {
2387                if arg.is_empty() {
2388                    let _ = raw_arguments.pop();
2389                } else {
2390                    break;
2391                }
2392            }
2393            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2394            lowlevel::Response::Success { name: String::from("TESTIC"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2395        },
2396        highlevel::Success::Tests {
2397            field,
2398        } => {
2399            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2400            let field_string = field.clone();
2401            let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
2402            raw_arguments.push(field_primitive);
2403            while let Some(arg) = raw_arguments.last() {
2404                if arg.is_empty() {
2405                    let _ = raw_arguments.pop();
2406                } else {
2407                    break;
2408                }
2409            }
2410            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2411            lowlevel::Response::Success { name: String::from("TESTS"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2412        },
2413        highlevel::Success::Testsi {
2414            field1,
2415            field2,
2416        } => {
2417            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2418            let field1_string = field1.clone();
2419            let field1_primitive = lowlevel::Argument::PrimitiveArgument(field1_string);
2420            raw_arguments.push(field1_primitive);
2421            let field2_string = i64::to_string(&field2);
2422            let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_string);
2423            raw_arguments.push(field2_primitive);
2424            while let Some(arg) = raw_arguments.last() {
2425                if arg.is_empty() {
2426                    let _ = raw_arguments.pop();
2427                } else {
2428                    break;
2429                }
2430            }
2431            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2432            lowlevel::Response::Success { name: String::from("TESTSI"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2433        },
2434        highlevel::Success::Testsic {
2435            field1,
2436            field2,
2437        } => {
2438            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2439            let field1_string = field1.clone();
2440            let field1_primitive = lowlevel::Argument::PrimitiveArgument(field1_string);
2441            raw_arguments.push(field1_primitive);
2442            let field2_string = i64::to_string(&field2);
2443            let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_string);
2444            raw_arguments.push(field2_primitive);
2445            while let Some(arg) = raw_arguments.last() {
2446                if arg.is_empty() {
2447                    let _ = raw_arguments.pop();
2448                } else {
2449                    break;
2450                }
2451            }
2452            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2453            lowlevel::Response::Success { name: String::from("TESTSIC"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2454        },
2455        highlevel::Success::Testio {
2456            field1,
2457            field2,
2458        } => {
2459            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2460            let field1_string = i64::to_string(&field1);
2461            let field1_primitive = lowlevel::Argument::PrimitiveArgument(field1_string);
2462            raw_arguments.push(field1_primitive);
2463            match field2 {
2464            None => {
2465                raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
2466            }
2467            Some(field2_unwrapped) => {
2468                    let field2_unwrapped_string = i64::to_string(&field2_unwrapped);
2469                    let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_unwrapped_string);
2470                    raw_arguments.push(field2_primitive);
2471            }
2472            }
2473            while let Some(arg) = raw_arguments.last() {
2474                if arg.is_empty() {
2475                    let _ = raw_arguments.pop();
2476                } else {
2477                    break;
2478                }
2479            }
2480            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2481            lowlevel::Response::Success { name: String::from("TESTIO"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2482        },
2483        highlevel::Success::Testioo {
2484            field1,
2485            field2,
2486            field3,
2487        } => {
2488            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2489            let field1_string = i64::to_string(&field1);
2490            let field1_primitive = lowlevel::Argument::PrimitiveArgument(field1_string);
2491            raw_arguments.push(field1_primitive);
2492            match field2 {
2493            None => {
2494                raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
2495            }
2496            Some(field2_unwrapped) => {
2497                    let field2_unwrapped_string = i64::to_string(&field2_unwrapped);
2498                    let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_unwrapped_string);
2499                    raw_arguments.push(field2_primitive);
2500            }
2501            }
2502            match field3 {
2503            None => {
2504                raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
2505            }
2506            Some(field3_unwrapped) => {
2507                    let field3_unwrapped_string = field3_unwrapped.clone();
2508                    let field3_primitive = lowlevel::Argument::PrimitiveArgument(field3_unwrapped_string);
2509                    raw_arguments.push(field3_primitive);
2510            }
2511            }
2512            while let Some(arg) = raw_arguments.last() {
2513                if arg.is_empty() {
2514                    let _ = raw_arguments.pop();
2515                } else {
2516                    break;
2517                }
2518            }
2519            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2520            lowlevel::Response::Success { name: String::from("TESTIOO"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2521        },
2522        highlevel::Success::Testl {
2523            field,
2524        } => {
2525            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2526            for field_element in field.iter() {
2527                    let field_element_string = i64::to_string(&field_element);
2528                    let field_element_primitive = lowlevel::Argument::PrimitiveArgument(field_element_string);
2529                    raw_arguments.push(field_element_primitive);
2530            }   
2531            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2532            lowlevel::Response::Success { name: String::from("TESTL"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2533        },
2534        highlevel::Success::Testol {
2535            field,
2536        } => {
2537            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2538            for field_element in field.iter() {
2539                    match field_element {
2540                    None => {
2541                        raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
2542                    }
2543                    Some(field_element_unwrapped) => {
2544                            let field_element_unwrapped_string = i64::to_string(&field_element_unwrapped);
2545                            let field_element_primitive = lowlevel::Argument::PrimitiveArgument(field_element_unwrapped_string);
2546                            raw_arguments.push(field_element_primitive);
2547                    }
2548                    }
2549            }   
2550            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2551            lowlevel::Response::Success { name: String::from("TESTOL"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2552        },
2553        highlevel::Success::Testm {
2554            field,
2555        } => {
2556            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2557            for (field_typed_key, field_typed_value) in field {
2558                let field_primitive_key = i64::to_string(&field_typed_key);
2559                let field_primitive_value = field_typed_value.clone();
2560                let field_untyped_pair = lowlevel::Argument::KeyValueArgument { key: field_primitive_key, value: field_primitive_value };
2561                raw_arguments.push(field_untyped_pair);
2562            }   
2563            while let Some(arg) = raw_arguments.last() {
2564                if arg.is_empty() {
2565                    let _ = raw_arguments.pop();
2566                } else {
2567                    break;
2568                }
2569            }
2570            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2571            lowlevel::Response::Success { name: String::from("TESTM"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2572        },
2573        highlevel::Success::Testp {
2574            field,
2575        } => {
2576            let mut raw_arguments_outer = Vec::<Vec<lowlevel::Argument>>::new();
2577            let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
2578            let field_string = i64::to_string(&field);
2579            let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
2580            raw_arguments_inner.push(field_primitive);
2581            raw_arguments_outer.push(raw_arguments_inner);
2582            let arguments = lowlevel::Arguments::ParenthesisDelimitedArgumentLists(raw_arguments_outer);
2583            lowlevel::Response::Success { name: String::from("TESTP"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2584        },
2585        highlevel::Success::Testpp {
2586            field1,
2587            field2,
2588            field3,
2589        } => {
2590            let mut raw_arguments_outer = Vec::<Vec<lowlevel::Argument>>::new();
2591            let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
2592            let field1_string = i64::to_string(&field1);
2593            let field1_primitive = lowlevel::Argument::PrimitiveArgument(field1_string);
2594            raw_arguments_inner.push(field1_primitive);
2595            raw_arguments_outer.push(raw_arguments_inner);
2596            let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
2597            let field2_string = i64::to_string(&field2);
2598            let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_string);
2599            raw_arguments_inner.push(field2_primitive);
2600            let field3_string = field3.clone();
2601            let field3_primitive = lowlevel::Argument::PrimitiveArgument(field3_string);
2602            raw_arguments_inner.push(field3_primitive);
2603            raw_arguments_outer.push(raw_arguments_inner);
2604            let arguments = lowlevel::Arguments::ParenthesisDelimitedArgumentLists(raw_arguments_outer);
2605            lowlevel::Response::Success { name: String::from("TESTPP"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2606        },
2607        highlevel::Success::Testpmpil {
2608            field1,
2609            field2,
2610            field3,
2611        } => {
2612            let mut raw_arguments_outer = Vec::<Vec<lowlevel::Argument>>::new();
2613            let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
2614            for (field1_typed_key, field1_typed_value) in field1 {
2615                let field1_primitive_key = i64::to_string(&field1_typed_key);
2616                let field1_primitive_value = field1_typed_value.clone();
2617                let field1_untyped_pair = lowlevel::Argument::KeyValueArgument { key: field1_primitive_key, value: field1_primitive_value };
2618                raw_arguments_inner.push(field1_untyped_pair);
2619            }   
2620            raw_arguments_outer.push(raw_arguments_inner);
2621            let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
2622            let field2_string = i64::to_string(&field2);
2623            let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_string);
2624            raw_arguments_inner.push(field2_primitive);
2625            for field3_element in field3.iter() {
2626                    let field3_element_string = i64::to_string(&field3_element);
2627                    let field3_element_primitive = lowlevel::Argument::PrimitiveArgument(field3_element_string);
2628                    raw_arguments_inner.push(field3_element_primitive);
2629            }   
2630            raw_arguments_outer.push(raw_arguments_inner);
2631            let arguments = lowlevel::Arguments::ParenthesisDelimitedArgumentLists(raw_arguments_outer);
2632            lowlevel::Response::Success { name: String::from("TESTPMPIL"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2633        },
2634        highlevel::Success::SameOne {
2635            field,
2636        } => {
2637            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2638            let field_string = i64::to_string(&field);
2639            let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
2640            raw_arguments.push(field_primitive);
2641            while let Some(arg) = raw_arguments.last() {
2642                if arg.is_empty() {
2643                    let _ = raw_arguments.pop();
2644                } else {
2645                    break;
2646                }
2647            }
2648            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2649            lowlevel::Response::Success { name: String::from("SAME"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2650        },
2651        highlevel::Success::SameTwo {
2652            field,
2653        } => {
2654            let mut raw_arguments_outer = Vec::<Vec<lowlevel::Argument>>::new();
2655            let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
2656            let field_string = i64::to_string(&field);
2657            let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
2658            raw_arguments_inner.push(field_primitive);
2659            raw_arguments_outer.push(raw_arguments_inner);
2660            let arguments = lowlevel::Arguments::ParenthesisDelimitedArgumentLists(raw_arguments_outer);
2661            lowlevel::Response::Success { name: String::from("SAME"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2662        },
2663        highlevel::Success::Brsf {
2664            features,
2665        } => {
2666            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2667            let features_string = i64::to_string(&features);
2668            let features_primitive = lowlevel::Argument::PrimitiveArgument(features_string);
2669            raw_arguments.push(features_primitive);
2670            while let Some(arg) = raw_arguments.last() {
2671                if arg.is_empty() {
2672                    let _ = raw_arguments.pop();
2673                } else {
2674                    break;
2675                }
2676            }
2677            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2678            lowlevel::Response::Success { name: String::from("BRSF"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2679        },
2680        highlevel::Success::CindRead {
2681            ordered_values,
2682        } => {
2683            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2684            for ordered_values_element in ordered_values.iter() {
2685                    let ordered_values_element_string = i64::to_string(&ordered_values_element);
2686                    let ordered_values_element_primitive = lowlevel::Argument::PrimitiveArgument(ordered_values_element_string);
2687                    raw_arguments.push(ordered_values_element_primitive);
2688            }   
2689            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2690            lowlevel::Response::Success { name: String::from("CIND"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2691        },
2692        highlevel::Success::Clcc {
2693            index,
2694            direction,
2695            status,
2696            mode,
2697            multiparty,
2698            number,
2699            ty,
2700            alpha,
2701            priority,
2702        } => {
2703            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2704            let index_string = i64::to_string(&index);
2705            let index_primitive = lowlevel::Argument::PrimitiveArgument(index_string);
2706            raw_arguments.push(index_primitive);
2707            let direction_string = i64::to_string(&direction);
2708            let direction_primitive = lowlevel::Argument::PrimitiveArgument(direction_string);
2709            raw_arguments.push(direction_primitive);
2710            let status_string = i64::to_string(&status);
2711            let status_primitive = lowlevel::Argument::PrimitiveArgument(status_string);
2712            raw_arguments.push(status_primitive);
2713            let mode_string = i64::to_string(&mode);
2714            let mode_primitive = lowlevel::Argument::PrimitiveArgument(mode_string);
2715            raw_arguments.push(mode_primitive);
2716            let multiparty_string = i64::to_string(&multiparty);
2717            let multiparty_primitive = lowlevel::Argument::PrimitiveArgument(multiparty_string);
2718            raw_arguments.push(multiparty_primitive);
2719            match number {
2720            None => {
2721                raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
2722            }
2723            Some(number_unwrapped) => {
2724                    let number_unwrapped_string = number_unwrapped.clone();
2725                    let number_primitive = lowlevel::Argument::PrimitiveArgument(number_unwrapped_string);
2726                    raw_arguments.push(number_primitive);
2727            }
2728            }
2729            match ty {
2730            None => {
2731                raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
2732            }
2733            Some(ty_unwrapped) => {
2734                    let ty_unwrapped_string = i64::to_string(&ty_unwrapped);
2735                    let ty_primitive = lowlevel::Argument::PrimitiveArgument(ty_unwrapped_string);
2736                    raw_arguments.push(ty_primitive);
2737            }
2738            }
2739            match alpha {
2740            None => {
2741                raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
2742            }
2743            Some(alpha_unwrapped) => {
2744                    let alpha_unwrapped_string = alpha_unwrapped.clone();
2745                    let alpha_primitive = lowlevel::Argument::PrimitiveArgument(alpha_unwrapped_string);
2746                    raw_arguments.push(alpha_primitive);
2747            }
2748            }
2749            match priority {
2750            None => {
2751                raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
2752            }
2753            Some(priority_unwrapped) => {
2754                    let priority_unwrapped_string = i64::to_string(&priority_unwrapped);
2755                    let priority_primitive = lowlevel::Argument::PrimitiveArgument(priority_unwrapped_string);
2756                    raw_arguments.push(priority_primitive);
2757            }
2758            }
2759            while let Some(arg) = raw_arguments.last() {
2760                if arg.is_empty() {
2761                    let _ = raw_arguments.pop();
2762                } else {
2763                    break;
2764                }
2765            }
2766            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2767            lowlevel::Response::Success { name: String::from("CLCC"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2768        },
2769        highlevel::Success::Bcs {
2770            codec,
2771        } => {
2772            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2773            let codec_string = i64::to_string(&codec);
2774            let codec_primitive = lowlevel::Argument::PrimitiveArgument(codec_string);
2775            raw_arguments.push(codec_primitive);
2776            while let Some(arg) = raw_arguments.last() {
2777                if arg.is_empty() {
2778                    let _ = raw_arguments.pop();
2779                } else {
2780                    break;
2781                }
2782            }
2783            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2784            lowlevel::Response::Success { name: String::from("BCS"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2785        },
2786        highlevel::Success::BindList {
2787            indicators,
2788        } => {
2789            let mut raw_arguments_outer = Vec::<Vec<lowlevel::Argument>>::new();
2790            let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
2791            for indicators_element in indicators.iter() {
2792                    let indicators_element_string_int = *indicators_element as i64;
2793                    let indicators_element_string = i64::to_string(&indicators_element_string_int);
2794                    let indicators_element_primitive = lowlevel::Argument::PrimitiveArgument(indicators_element_string);
2795                    raw_arguments_inner.push(indicators_element_primitive);
2796            }   
2797            raw_arguments_outer.push(raw_arguments_inner);
2798            let arguments = lowlevel::Arguments::ParenthesisDelimitedArgumentLists(raw_arguments_outer);
2799            lowlevel::Response::Success { name: String::from("BIND"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2800        },
2801        highlevel::Success::BindStatus {
2802            anum,
2803            state,
2804        } => {
2805            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2806            let anum_string_int = *anum as i64;
2807            let anum_string = i64::to_string(&anum_string_int);
2808            let anum_primitive = lowlevel::Argument::PrimitiveArgument(anum_string);
2809            raw_arguments.push(anum_primitive);
2810            let state_string_int = if *state { 1 } else { 0 };
2811            let state_string = i64::to_string(&state_string_int);
2812            let state_primitive = lowlevel::Argument::PrimitiveArgument(state_string);
2813            raw_arguments.push(state_primitive);
2814            while let Some(arg) = raw_arguments.last() {
2815                if arg.is_empty() {
2816                    let _ = raw_arguments.pop();
2817                } else {
2818                    break;
2819                }
2820            }
2821            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2822            lowlevel::Response::Success { name: String::from("BIND"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2823        },
2824        highlevel::Success::Chld {
2825            commands,
2826        } => {
2827            let mut raw_arguments_outer = Vec::<Vec<lowlevel::Argument>>::new();
2828            let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
2829            for commands_element in commands.iter() {
2830                    let commands_element_string = commands_element.clone();
2831                    let commands_element_primitive = lowlevel::Argument::PrimitiveArgument(commands_element_string);
2832                    raw_arguments_inner.push(commands_element_primitive);
2833            }   
2834            raw_arguments_outer.push(raw_arguments_inner);
2835            let arguments = lowlevel::Arguments::ParenthesisDelimitedArgumentLists(raw_arguments_outer);
2836            lowlevel::Response::Success { name: String::from("CHLD"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2837        },
2838        highlevel::Success::Cops {
2839            format,
2840            zero,
2841            operator,
2842        } => {
2843            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2844            let format_string_int = *format as i64;
2845            let format_string = i64::to_string(&format_string_int);
2846            let format_primitive = lowlevel::Argument::PrimitiveArgument(format_string);
2847            raw_arguments.push(format_primitive);
2848            let zero_string = i64::to_string(&zero);
2849            let zero_primitive = lowlevel::Argument::PrimitiveArgument(zero_string);
2850            raw_arguments.push(zero_primitive);
2851            let operator_string = operator.clone();
2852            let operator_primitive = lowlevel::Argument::PrimitiveArgument(operator_string);
2853            raw_arguments.push(operator_primitive);
2854            while let Some(arg) = raw_arguments.last() {
2855                if arg.is_empty() {
2856                    let _ = raw_arguments.pop();
2857                } else {
2858                    break;
2859                }
2860            }
2861            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2862            lowlevel::Response::Success { name: String::from("COPS"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2863        },
2864        highlevel::Success::Clip {
2865            number,
2866            ty,
2867        } => {
2868            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2869            let number_string = number.clone();
2870            let number_primitive = lowlevel::Argument::PrimitiveArgument(number_string);
2871            raw_arguments.push(number_primitive);
2872            let ty_string = i64::to_string(&ty);
2873            let ty_primitive = lowlevel::Argument::PrimitiveArgument(ty_string);
2874            raw_arguments.push(ty_primitive);
2875            while let Some(arg) = raw_arguments.last() {
2876                if arg.is_empty() {
2877                    let _ = raw_arguments.pop();
2878                } else {
2879                    break;
2880                }
2881            }
2882            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2883            lowlevel::Response::Success { name: String::from("CLIP"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2884        },
2885        highlevel::Success::Cnum {
2886            alpha,
2887            number,
2888            ty,
2889            speed,
2890            service,
2891        } => {
2892            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2893            let alpha_string = alpha.clone();
2894            let alpha_primitive = lowlevel::Argument::PrimitiveArgument(alpha_string);
2895            raw_arguments.push(alpha_primitive);
2896            let number_string = number.clone();
2897            let number_primitive = lowlevel::Argument::PrimitiveArgument(number_string);
2898            raw_arguments.push(number_primitive);
2899            let ty_string = i64::to_string(&ty);
2900            let ty_primitive = lowlevel::Argument::PrimitiveArgument(ty_string);
2901            raw_arguments.push(ty_primitive);
2902            let speed_string = speed.clone();
2903            let speed_primitive = lowlevel::Argument::PrimitiveArgument(speed_string);
2904            raw_arguments.push(speed_primitive);
2905            let service_string = i64::to_string(&service);
2906            let service_primitive = lowlevel::Argument::PrimitiveArgument(service_string);
2907            raw_arguments.push(service_primitive);
2908            while let Some(arg) = raw_arguments.last() {
2909                if arg.is_empty() {
2910                    let _ = raw_arguments.pop();
2911                } else {
2912                    break;
2913                }
2914            }
2915            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2916            lowlevel::Response::Success { name: String::from("CNUM"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2917        },
2918        highlevel::Success::Vgs {
2919            level,
2920        } => {
2921            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2922            let level_string = i64::to_string(&level);
2923            let level_primitive = lowlevel::Argument::PrimitiveArgument(level_string);
2924            raw_arguments.push(level_primitive);
2925            while let Some(arg) = raw_arguments.last() {
2926                if arg.is_empty() {
2927                    let _ = raw_arguments.pop();
2928                } else {
2929                    break;
2930                }
2931            }
2932            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2933            lowlevel::Response::Success { name: String::from("VGS"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2934        },
2935        highlevel::Success::Vgm {
2936            level,
2937        } => {
2938            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2939            let level_string = i64::to_string(&level);
2940            let level_primitive = lowlevel::Argument::PrimitiveArgument(level_string);
2941            raw_arguments.push(level_primitive);
2942            while let Some(arg) = raw_arguments.last() {
2943                if arg.is_empty() {
2944                    let _ = raw_arguments.pop();
2945                } else {
2946                    break;
2947                }
2948            }
2949            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2950            lowlevel::Response::Success { name: String::from("VGM"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2951        },
2952        highlevel::Success::Ciev {
2953            ind,
2954            value,
2955        } => {
2956            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2957            let ind_string = i64::to_string(&ind);
2958            let ind_primitive = lowlevel::Argument::PrimitiveArgument(ind_string);
2959            raw_arguments.push(ind_primitive);
2960            let value_string = i64::to_string(&value);
2961            let value_primitive = lowlevel::Argument::PrimitiveArgument(value_string);
2962            raw_arguments.push(value_primitive);
2963            while let Some(arg) = raw_arguments.last() {
2964                if arg.is_empty() {
2965                    let _ = raw_arguments.pop();
2966                } else {
2967                    break;
2968                }
2969            }
2970            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2971            lowlevel::Response::Success { name: String::from("CIEV"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2972        },
2973        highlevel::Success::Ccwa {
2974            number,
2975            ty,
2976        } => {
2977            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2978            let number_string = number.clone();
2979            let number_primitive = lowlevel::Argument::PrimitiveArgument(number_string);
2980            raw_arguments.push(number_primitive);
2981            let ty_string = i64::to_string(&ty);
2982            let ty_primitive = lowlevel::Argument::PrimitiveArgument(ty_string);
2983            raw_arguments.push(ty_primitive);
2984            while let Some(arg) = raw_arguments.last() {
2985                if arg.is_empty() {
2986                    let _ = raw_arguments.pop();
2987                } else {
2988                    break;
2989                }
2990            }
2991            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2992            lowlevel::Response::Success { name: String::from("CCWA"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2993        },
2994        highlevel::Success::Ring {        } => {
2995            let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
2996            lowlevel::Response::Success { name: String::from("RING"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
2997        },
2998    }
2999}
3000