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 == "TESTL"
199            && delimiter == &Some(String::from("="))
200            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
201        => {
202            let arg_vec = extract_vec_from_args(&arguments)?;
203            let mut field = Vec::new();
204            for field_element_raw in arg_vec[0..].into_iter() {
205                let field_element_option = if field_element_raw.is_empty() { None } else { Some(field_element_raw) };
206                let field_element_option_unwrapped = field_element_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
207                let field_element_option_unwrapped_primitive = extract_primitive_from_field(field_element_option_unwrapped, &arguments)?;
208                let field_element = extract_int_from_primitive(field_element_option_unwrapped_primitive, &arguments)?;
209                field.push(field_element);
210            }
211            Ok(highlevel::Command::Testl {
212                field,
213            })
214        },
215        lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
216            name == "TESTOL"
217            && delimiter == &Some(String::from("="))
218            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
219        => {
220            let arg_vec = extract_vec_from_args(&arguments)?;
221            let mut field = Vec::new();
222            for field_element_raw in arg_vec[0..].into_iter() {
223                let field_element_option = if field_element_raw.is_empty() { None } else { Some(field_element_raw) };
224                let field_element = match field_element_option {
225                    Some(field_element_option_unwrapped) if !field_element_option_unwrapped.is_empty() => {
226                        let field_element_option_unwrapped_primitive = extract_primitive_from_field(field_element_option_unwrapped, &arguments)?;
227                        let field_element_unwrapped = extract_int_from_primitive(field_element_option_unwrapped_primitive, &arguments)?;
228                        Some(field_element_unwrapped)
229                    }
230                    _ => None,
231                };
232                field.push(field_element);
233            }
234            Ok(highlevel::Command::Testol {
235                field,
236            })
237        },
238        lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
239            name == "TESTM"
240            && delimiter == &Some(String::from("="))
241            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
242        => {
243            let arg_vec = extract_vec_from_args(&arguments)?;
244            let mut field = std::collections::HashMap::new();
245            for field_element in arg_vec[0..].into_iter() {
246                let field_element_primitive = extract_key_from_field(field_element, &arguments)?;
247                let field_key = extract_int_from_primitive(field_element_primitive, &arguments)?;
248                let field_element_primitive = extract_value_from_field(field_element, &arguments)?;
249                let field_value = field_element_primitive.clone();
250                let _ = field.insert(field_key, field_value);
251            }   
252            Ok(highlevel::Command::Testm {
253                field,
254            })
255        },
256        lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
257            name == "TESTP"
258            && delimiter == &Some(String::from("="))
259            &&  matches!(arguments, lowlevel::Arguments::ParenthesisDelimitedArgumentLists(_))
260        => {
261            let arg_vec_vec = extract_vec_vec_from_args(&arguments)?;
262            let arg_vec = arg_vec_vec.get(0).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
263            let field_option = arg_vec.get(0);
264            let field_option_unwrapped = field_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
265            let field_option_unwrapped_primitive = extract_primitive_from_field(field_option_unwrapped, &arguments)?;
266            let field = extract_int_from_primitive(field_option_unwrapped_primitive, &arguments)?;
267            Ok(highlevel::Command::Testp {
268                field,
269            })
270        },
271        lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
272            name == "TESTPP"
273            && delimiter == &Some(String::from("="))
274            &&  matches!(arguments, lowlevel::Arguments::ParenthesisDelimitedArgumentLists(_))
275        => {
276            let arg_vec_vec = extract_vec_vec_from_args(&arguments)?;
277            let arg_vec = arg_vec_vec.get(0).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
278            let field1_option = arg_vec.get(0);
279            let field1_option_unwrapped = field1_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
280            let field1_option_unwrapped_primitive = extract_primitive_from_field(field1_option_unwrapped, &arguments)?;
281            let field1 = extract_int_from_primitive(field1_option_unwrapped_primitive, &arguments)?;
282            let arg_vec = arg_vec_vec.get(1).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
283            let field2_option = arg_vec.get(0);
284            let field2_option_unwrapped = field2_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
285            let field2_option_unwrapped_primitive = extract_primitive_from_field(field2_option_unwrapped, &arguments)?;
286            let field2 = extract_int_from_primitive(field2_option_unwrapped_primitive, &arguments)?;
287            let field3_option = arg_vec.get(1);
288            let field3_option_unwrapped = field3_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
289            let field3_option_unwrapped_primitive = extract_primitive_from_field(field3_option_unwrapped, &arguments)?;
290            let field3 = field3_option_unwrapped_primitive.clone();
291            Ok(highlevel::Command::Testpp {
292                field1,
293                field2,
294                field3,
295            })
296        },
297        lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
298            name == "TESTPMPIL"
299            && delimiter == &Some(String::from("="))
300            &&  matches!(arguments, lowlevel::Arguments::ParenthesisDelimitedArgumentLists(_))
301        => {
302            let arg_vec_vec = extract_vec_vec_from_args(&arguments)?;
303            let arg_vec = arg_vec_vec.get(0).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
304            let mut field1 = std::collections::HashMap::new();
305            for field1_element in arg_vec[0..].into_iter() {
306                let field1_element_primitive = extract_key_from_field(field1_element, &arguments)?;
307                let field1_key = extract_int_from_primitive(field1_element_primitive, &arguments)?;
308                let field1_element_primitive = extract_value_from_field(field1_element, &arguments)?;
309                let field1_value = field1_element_primitive.clone();
310                let _ = field1.insert(field1_key, field1_value);
311            }   
312            let arg_vec = arg_vec_vec.get(1).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
313            let field2_option = arg_vec.get(0);
314            let field2_option_unwrapped = field2_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
315            let field2_option_unwrapped_primitive = extract_primitive_from_field(field2_option_unwrapped, &arguments)?;
316            let field2 = extract_int_from_primitive(field2_option_unwrapped_primitive, &arguments)?;
317            let mut field3 = Vec::new();
318            for field3_element_raw in arg_vec[1..].into_iter() {
319                let field3_element_option = if field3_element_raw.is_empty() { None } else { Some(field3_element_raw) };
320                let field3_element_option_unwrapped = field3_element_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
321                let field3_element_option_unwrapped_primitive = extract_primitive_from_field(field3_element_option_unwrapped, &arguments)?;
322                let field3_element = extract_int_from_primitive(field3_element_option_unwrapped_primitive, &arguments)?;
323                field3.push(field3_element);
324            }
325            Ok(highlevel::Command::Testpmpil {
326                field1,
327                field2,
328                field3,
329            })
330        },
331        lowlevel::Command::Read { name, is_extension: false, ..} if
332            name == "TESTR"
333        => {
334            Ok(highlevel::Command::TestrRead {})
335        },
336        lowlevel::Command::Read { name, is_extension: true, ..} if
337            name == "TESTREX"
338        => {
339            Ok(highlevel::Command::TestrexRead {})
340        },
341        lowlevel::Command::Test { name, is_extension: false, ..} if
342            name == "TESTT"
343        => {
344            Ok(highlevel::Command::TesttTest {})
345        },
346        lowlevel::Command::Test { name, is_extension: true, ..} if
347            name == "TESTTEX"
348        => {
349            Ok(highlevel::Command::TesttexTest {})
350        },
351        lowlevel::Command::Execute { name, is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
352            name == "TESTENUM"
353            && delimiter == &Some(String::from("="))
354            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
355        => {
356            let arg_vec = extract_vec_from_args(&arguments)?;
357            let field_option = arg_vec.get(0);
358            let field_option_unwrapped = field_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
359            let field_option_unwrapped_primitive = extract_primitive_from_field(field_option_unwrapped, &arguments)?;
360            let field_option_unwrapped_int = extract_int_from_primitive(field_option_unwrapped_primitive, &arguments)?;
361            let field = super::types::TestOneVariantComma::from_i64(field_option_unwrapped_int).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
362            Ok(highlevel::Command::Testenum {
363                field,
364            })
365        },
366        lowlevel::Command::Execute { name, is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
367            name == "TESTBOOL"
368            && delimiter == &Some(String::from("="))
369            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
370        => {
371            let arg_vec = extract_vec_from_args(&arguments)?;
372            let field_option = arg_vec.get(0);
373            let field_option_unwrapped = field_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
374            let field_option_unwrapped_primitive = extract_primitive_from_field(field_option_unwrapped, &arguments)?;
375            let field_option_unwrapped_int = extract_int_from_primitive(field_option_unwrapped_primitive, &arguments)?;
376            let field = field_option_unwrapped_int != 0;
377            Ok(highlevel::Command::Testbool {
378                field,
379            })
380        },
381        lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, .. }} if
382            name == "TESTOTHERFILE"
383            && delimiter == &None
384        => {
385            Ok(highlevel::Command::Testotherfile {
386            })
387        },
388        lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
389            name == "BRSF"
390            && delimiter == &Some(String::from("="))
391            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
392        => {
393            let arg_vec = extract_vec_from_args(&arguments)?;
394            let features_option = arg_vec.get(0);
395            let features_option_unwrapped = features_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
396            let features_option_unwrapped_primitive = extract_primitive_from_field(features_option_unwrapped, &arguments)?;
397            let features = extract_int_from_primitive(features_option_unwrapped_primitive, &arguments)?;
398            Ok(highlevel::Command::Brsf {
399                features,
400            })
401        },
402        lowlevel::Command::Test { name, is_extension: true, ..} if
403            name == "CIND"
404        => {
405            Ok(highlevel::Command::CindTest {})
406        },
407        lowlevel::Command::Read { name, is_extension: true, ..} if
408            name == "CIND"
409        => {
410            Ok(highlevel::Command::CindRead {})
411        },
412        lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, .. }} if
413            name == "CLCC"
414            && delimiter == &None
415        => {
416            Ok(highlevel::Command::Clcc {
417            })
418        },
419        lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, .. }} if
420            name == "BCC"
421            && delimiter == &None
422        => {
423            Ok(highlevel::Command::Bcc {
424            })
425        },
426        lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
427            name == "BCS"
428            && delimiter == &Some(String::from("="))
429            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
430        => {
431            let arg_vec = extract_vec_from_args(&arguments)?;
432            let codec_option = arg_vec.get(0);
433            let codec_option_unwrapped = codec_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
434            let codec_option_unwrapped_primitive = extract_primitive_from_field(codec_option_unwrapped, &arguments)?;
435            let codec = extract_int_from_primitive(codec_option_unwrapped_primitive, &arguments)?;
436            Ok(highlevel::Command::Bcs {
437                codec,
438            })
439        },
440        lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
441            name == "BAC"
442            && delimiter == &Some(String::from("="))
443            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
444        => {
445            let arg_vec = extract_vec_from_args(&arguments)?;
446            let mut codecs = Vec::new();
447            for codecs_element_raw in arg_vec[0..].into_iter() {
448                let codecs_element_option = if codecs_element_raw.is_empty() { None } else { Some(codecs_element_raw) };
449                let codecs_element_option_unwrapped = codecs_element_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
450                let codecs_element_option_unwrapped_primitive = extract_primitive_from_field(codecs_element_option_unwrapped, &arguments)?;
451                let codecs_element = extract_int_from_primitive(codecs_element_option_unwrapped_primitive, &arguments)?;
452                codecs.push(codecs_element);
453            }
454            Ok(highlevel::Command::Bac {
455                codecs,
456            })
457        },
458        lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
459            name == "BIND"
460            && delimiter == &Some(String::from("="))
461            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
462        => {
463            let arg_vec = extract_vec_from_args(&arguments)?;
464            let mut indicators = Vec::new();
465            for indicators_element_raw in arg_vec[0..].into_iter() {
466                let indicators_element_option = if indicators_element_raw.is_empty() { None } else { Some(indicators_element_raw) };
467                let indicators_element_option_unwrapped = indicators_element_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
468                let indicators_element_option_unwrapped_primitive = extract_primitive_from_field(indicators_element_option_unwrapped, &arguments)?;
469                let indicators_element = extract_int_from_primitive(indicators_element_option_unwrapped_primitive, &arguments)?;
470                indicators.push(indicators_element);
471            }
472            Ok(highlevel::Command::Bind {
473                indicators,
474            })
475        },
476        lowlevel::Command::Test { name, is_extension: true, ..} if
477            name == "BIND"
478        => {
479            Ok(highlevel::Command::BindTest {})
480        },
481        lowlevel::Command::Read { name, is_extension: true, ..} if
482            name == "BIND"
483        => {
484            Ok(highlevel::Command::BindRead {})
485        },
486        lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
487            name == "BIEV"
488            && delimiter == &Some(String::from("="))
489            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
490        => {
491            let arg_vec = extract_vec_from_args(&arguments)?;
492            let anum_option = arg_vec.get(0);
493            let anum_option_unwrapped = anum_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
494            let anum_option_unwrapped_primitive = extract_primitive_from_field(anum_option_unwrapped, &arguments)?;
495            let anum_option_unwrapped_int = extract_int_from_primitive(anum_option_unwrapped_primitive, &arguments)?;
496            let anum = super::types::BluetoothHFIndicator::from_i64(anum_option_unwrapped_int).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
497            let value_option = arg_vec.get(1);
498            let value_option_unwrapped = value_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
499            let value_option_unwrapped_primitive = extract_primitive_from_field(value_option_unwrapped, &arguments)?;
500            let value = extract_int_from_primitive(value_option_unwrapped_primitive, &arguments)?;
501            Ok(highlevel::Command::Biev {
502                anum,
503                value,
504            })
505        },
506        lowlevel::Command::Test { name, is_extension: true, ..} if
507            name == "CHLD"
508        => {
509            Ok(highlevel::Command::ChldTest {})
510        },
511        lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
512            name == "CMER"
513            && delimiter == &Some(String::from("="))
514            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
515        => {
516            let arg_vec = extract_vec_from_args(&arguments)?;
517            let mode_option = arg_vec.get(0);
518            let mode_option_unwrapped = mode_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
519            let mode_option_unwrapped_primitive = extract_primitive_from_field(mode_option_unwrapped, &arguments)?;
520            let mode = extract_int_from_primitive(mode_option_unwrapped_primitive, &arguments)?;
521            let keyp_option = arg_vec.get(1);
522            let keyp_option_unwrapped = keyp_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
523            let keyp_option_unwrapped_primitive = extract_primitive_from_field(keyp_option_unwrapped, &arguments)?;
524            let keyp = extract_int_from_primitive(keyp_option_unwrapped_primitive, &arguments)?;
525            let disp_option = arg_vec.get(2);
526            let disp_option_unwrapped = disp_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
527            let disp_option_unwrapped_primitive = extract_primitive_from_field(disp_option_unwrapped, &arguments)?;
528            let disp = extract_int_from_primitive(disp_option_unwrapped_primitive, &arguments)?;
529            let ind_option = arg_vec.get(3);
530            let ind_option_unwrapped = ind_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
531            let ind_option_unwrapped_primitive = extract_primitive_from_field(ind_option_unwrapped, &arguments)?;
532            let ind = extract_int_from_primitive(ind_option_unwrapped_primitive, &arguments)?;
533            Ok(highlevel::Command::Cmer {
534                mode,
535                keyp,
536                disp,
537                ind,
538            })
539        },
540        lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
541            name == "NREC"
542            && delimiter == &Some(String::from("="))
543            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
544        => {
545            let arg_vec = extract_vec_from_args(&arguments)?;
546            let nrec_option = arg_vec.get(0);
547            let nrec_option_unwrapped = nrec_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
548            let nrec_option_unwrapped_primitive = extract_primitive_from_field(nrec_option_unwrapped, &arguments)?;
549            let nrec_option_unwrapped_int = extract_int_from_primitive(nrec_option_unwrapped_primitive, &arguments)?;
550            let nrec = nrec_option_unwrapped_int != 0;
551            Ok(highlevel::Command::Nrec {
552                nrec,
553            })
554        },
555        lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
556            name == "COPS"
557            && delimiter == &Some(String::from("="))
558            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
559        => {
560            let arg_vec = extract_vec_from_args(&arguments)?;
561            let three_option = arg_vec.get(0);
562            let three_option_unwrapped = three_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
563            let three_option_unwrapped_primitive = extract_primitive_from_field(three_option_unwrapped, &arguments)?;
564            let three = extract_int_from_primitive(three_option_unwrapped_primitive, &arguments)?;
565            let format_option = arg_vec.get(1);
566            let format_option_unwrapped = format_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
567            let format_option_unwrapped_primitive = extract_primitive_from_field(format_option_unwrapped, &arguments)?;
568            let format_option_unwrapped_int = extract_int_from_primitive(format_option_unwrapped_primitive, &arguments)?;
569            let format = super::types::NetworkOperatorNameFormat::from_i64(format_option_unwrapped_int).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
570            Ok(highlevel::Command::Cops {
571                three,
572                format,
573            })
574        },
575        lowlevel::Command::Read { name, is_extension: true, ..} if
576            name == "COPS"
577        => {
578            Ok(highlevel::Command::CopsRead {})
579        },
580        lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
581            name == "CMEE"
582            && delimiter == &Some(String::from("="))
583            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
584        => {
585            let arg_vec = extract_vec_from_args(&arguments)?;
586            let enable_option = arg_vec.get(0);
587            let enable_option_unwrapped = enable_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
588            let enable_option_unwrapped_primitive = extract_primitive_from_field(enable_option_unwrapped, &arguments)?;
589            let enable_option_unwrapped_int = extract_int_from_primitive(enable_option_unwrapped_primitive, &arguments)?;
590            let enable = enable_option_unwrapped_int != 0;
591            Ok(highlevel::Command::Cmee {
592                enable,
593            })
594        },
595        lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
596            name == "CCWA"
597            && delimiter == &Some(String::from("="))
598            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
599        => {
600            let arg_vec = extract_vec_from_args(&arguments)?;
601            let enable_option = arg_vec.get(0);
602            let enable_option_unwrapped = enable_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
603            let enable_option_unwrapped_primitive = extract_primitive_from_field(enable_option_unwrapped, &arguments)?;
604            let enable_option_unwrapped_int = extract_int_from_primitive(enable_option_unwrapped_primitive, &arguments)?;
605            let enable = enable_option_unwrapped_int != 0;
606            Ok(highlevel::Command::Ccwa {
607                enable,
608            })
609        },
610        lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
611            name == "CLIP"
612            && delimiter == &Some(String::from("="))
613            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
614        => {
615            let arg_vec = extract_vec_from_args(&arguments)?;
616            let enable_option = arg_vec.get(0);
617            let enable_option_unwrapped = enable_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
618            let enable_option_unwrapped_primitive = extract_primitive_from_field(enable_option_unwrapped, &arguments)?;
619            let enable_option_unwrapped_int = extract_int_from_primitive(enable_option_unwrapped_primitive, &arguments)?;
620            let enable = enable_option_unwrapped_int != 0;
621            Ok(highlevel::Command::Clip {
622                enable,
623            })
624        },
625        lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, .. }} if
626            name == "CNUM"
627            && delimiter == &None
628        => {
629            Ok(highlevel::Command::Cnum {
630            })
631        },
632        lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
633            name == "VTS"
634            && delimiter == &Some(String::from("="))
635            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
636        => {
637            let arg_vec = extract_vec_from_args(&arguments)?;
638            let code_option = arg_vec.get(0);
639            let code_option_unwrapped = code_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
640            let code_option_unwrapped_primitive = extract_primitive_from_field(code_option_unwrapped, &arguments)?;
641            let code = code_option_unwrapped_primitive.clone();
642            Ok(highlevel::Command::Vts {
643                code,
644            })
645        },
646        lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
647            name == "VGS"
648            && delimiter == &Some(String::from("="))
649            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
650        => {
651            let arg_vec = extract_vec_from_args(&arguments)?;
652            let level_option = arg_vec.get(0);
653            let level_option_unwrapped = level_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
654            let level_option_unwrapped_primitive = extract_primitive_from_field(level_option_unwrapped, &arguments)?;
655            let level = extract_int_from_primitive(level_option_unwrapped_primitive, &arguments)?;
656            Ok(highlevel::Command::Vgs {
657                level,
658            })
659        },
660        lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
661            name == "VGM"
662            && delimiter == &Some(String::from("="))
663            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
664        => {
665            let arg_vec = extract_vec_from_args(&arguments)?;
666            let level_option = arg_vec.get(0);
667            let level_option_unwrapped = level_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
668            let level_option_unwrapped_primitive = extract_primitive_from_field(level_option_unwrapped, &arguments)?;
669            let level = extract_int_from_primitive(level_option_unwrapped_primitive, &arguments)?;
670            Ok(highlevel::Command::Vgm {
671                level,
672            })
673        },
674        lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
675            name == "BIA"
676            && delimiter == &Some(String::from("="))
677            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
678        => {
679            let arg_vec = extract_vec_from_args(&arguments)?;
680            let mut indrep = Vec::new();
681            for indrep_element_raw in arg_vec[0..].into_iter() {
682                let indrep_element_option = if indrep_element_raw.is_empty() { None } else { Some(indrep_element_raw) };
683                let indrep_element = match indrep_element_option {
684                    Some(indrep_element_option_unwrapped) if !indrep_element_option_unwrapped.is_empty() => {
685                        let indrep_element_option_unwrapped_primitive = extract_primitive_from_field(indrep_element_option_unwrapped, &arguments)?;
686                        let indrep_element_option_unwrapped_int = extract_int_from_primitive(indrep_element_option_unwrapped_primitive, &arguments)?;
687                        let indrep_element_unwrapped = indrep_element_option_unwrapped_int != 0;
688                        Some(indrep_element_unwrapped)
689                    }
690                    _ => None,
691                };
692                indrep.push(indrep_element);
693            }
694            Ok(highlevel::Command::Bia {
695                indrep,
696            })
697        },
698        lowlevel::Command::Execute { name, is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter, .. }} if
699            name == "A"
700            && delimiter == &None
701        => {
702            Ok(highlevel::Command::Answer {
703            })
704        },
705        lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, .. }} if
706            name == "CHUP"
707            && delimiter == &None
708        => {
709            Ok(highlevel::Command::Chup {
710            })
711        },
712        lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
713            name == "CHLD"
714            && delimiter == &Some(String::from("="))
715            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
716        => {
717            let arg_vec = extract_vec_from_args(&arguments)?;
718            let command_option = arg_vec.get(0);
719            let command_option_unwrapped = command_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
720            let command_option_unwrapped_primitive = extract_primitive_from_field(command_option_unwrapped, &arguments)?;
721            let command = command_option_unwrapped_primitive.clone();
722            Ok(highlevel::Command::Chld {
723                command,
724            })
725        },
726        lowlevel::Command::Execute { name, is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
727            name == "D"
728            && delimiter == &None
729            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
730        => {
731            let arg_vec = extract_vec_from_args(&arguments)?;
732            let number_option = arg_vec.get(0);
733            let number_option_unwrapped = number_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
734            let number_option_unwrapped_primitive = extract_primitive_from_field(number_option_unwrapped, &arguments)?;
735            let number = number_option_unwrapped_primitive.clone();
736            Ok(highlevel::Command::AtdNumber {
737                number,
738            })
739        },
740        lowlevel::Command::Execute { name, is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
741            name == "D"
742            && delimiter == &Some(String::from(">"))
743            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
744        => {
745            let arg_vec = extract_vec_from_args(&arguments)?;
746            let location_option = arg_vec.get(0);
747            let location_option_unwrapped = location_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
748            let location_option_unwrapped_primitive = extract_primitive_from_field(location_option_unwrapped, &arguments)?;
749            let location = location_option_unwrapped_primitive.clone();
750            Ok(highlevel::Command::AtdMemory {
751                location,
752            })
753        },
754        lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, .. }} if
755            name == "BLDN"
756            && delimiter == &None
757        => {
758            Ok(highlevel::Command::Bldn {
759            })
760        },
761        _ => Err(DeserializeErrorCause::UnknownCommand(lowlevel.clone())),
762    }
763}
764
765// Clients are responsible for ensuring this is only called with lowlevel::Result::Success.
766pub fn raise_success(lowlevel: &lowlevel::Response) -> Result<highlevel::Success, DeserializeErrorCause> {
767    match lowlevel {
768        lowlevel::Response::Success { name, is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter, .. }} if
769            name == "TEST"
770            && delimiter == &Some(String::from(":"))
771        => {
772            Ok(highlevel::Success::Test {
773            })
774        },
775        lowlevel::Response::Success { name, is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter, .. }} if
776            name == "TESTNOD"
777            && delimiter == &None
778        => {
779            Ok(highlevel::Success::Testnod {
780            })
781        },
782        lowlevel::Response::Success { name, is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter, .. }} if
783            name == "TESTN"
784            && delimiter == &Some(String::from(":"))
785        => {
786            Ok(highlevel::Success::TestResponse {
787            })
788        },
789        lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, .. }} if
790            name == "TESTEXT"
791            && delimiter == &Some(String::from(":"))
792        => {
793            Ok(highlevel::Success::Testext {
794            })
795        },
796        lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, .. }} if
797            name == "TESTEXTNOD"
798            && delimiter == &None
799        => {
800            Ok(highlevel::Success::Testextnod {
801            })
802        },
803        lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
804            name == "TESTI"
805            && delimiter == &Some(String::from(":"))
806            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
807        => {
808            let arg_vec = extract_vec_from_args(&arguments)?;
809            let field_option = arg_vec.get(0);
810            let field_option_unwrapped = field_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
811            let field_option_unwrapped_primitive = extract_primitive_from_field(field_option_unwrapped, &arguments)?;
812            let field = extract_int_from_primitive(field_option_unwrapped_primitive, &arguments)?;
813            Ok(highlevel::Success::Testi {
814                field,
815            })
816        },
817        lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
818            name == "TESTINOD"
819            && delimiter == &None
820            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
821        => {
822            let arg_vec = extract_vec_from_args(&arguments)?;
823            let field_option = arg_vec.get(0);
824            let field_option_unwrapped = field_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
825            let field_option_unwrapped_primitive = extract_primitive_from_field(field_option_unwrapped, &arguments)?;
826            let field = extract_int_from_primitive(field_option_unwrapped_primitive, &arguments)?;
827            Ok(highlevel::Success::Testinod {
828                field,
829            })
830        },
831        lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
832            name == "TESTIC"
833            && delimiter == &Some(String::from(":"))
834            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
835        => {
836            let arg_vec = extract_vec_from_args(&arguments)?;
837            let field_option = arg_vec.get(0);
838            let field_option_unwrapped = field_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
839            let field_option_unwrapped_primitive = extract_primitive_from_field(field_option_unwrapped, &arguments)?;
840            let field = extract_int_from_primitive(field_option_unwrapped_primitive, &arguments)?;
841            Ok(highlevel::Success::Testic {
842                field,
843            })
844        },
845        lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
846            name == "TESTS"
847            && delimiter == &Some(String::from(":"))
848            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
849        => {
850            let arg_vec = extract_vec_from_args(&arguments)?;
851            let field_option = arg_vec.get(0);
852            let field_option_unwrapped = field_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
853            let field_option_unwrapped_primitive = extract_primitive_from_field(field_option_unwrapped, &arguments)?;
854            let field = field_option_unwrapped_primitive.clone();
855            Ok(highlevel::Success::Tests {
856                field,
857            })
858        },
859        lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
860            name == "TESTSI"
861            && delimiter == &Some(String::from(":"))
862            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
863        => {
864            let arg_vec = extract_vec_from_args(&arguments)?;
865            let field1_option = arg_vec.get(0);
866            let field1_option_unwrapped = field1_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
867            let field1_option_unwrapped_primitive = extract_primitive_from_field(field1_option_unwrapped, &arguments)?;
868            let field1 = field1_option_unwrapped_primitive.clone();
869            let field2_option = arg_vec.get(1);
870            let field2_option_unwrapped = field2_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
871            let field2_option_unwrapped_primitive = extract_primitive_from_field(field2_option_unwrapped, &arguments)?;
872            let field2 = extract_int_from_primitive(field2_option_unwrapped_primitive, &arguments)?;
873            Ok(highlevel::Success::Testsi {
874                field1,
875                field2,
876            })
877        },
878        lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
879            name == "TESTSIC"
880            && delimiter == &Some(String::from(":"))
881            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
882        => {
883            let arg_vec = extract_vec_from_args(&arguments)?;
884            let field1_option = arg_vec.get(0);
885            let field1_option_unwrapped = field1_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
886            let field1_option_unwrapped_primitive = extract_primitive_from_field(field1_option_unwrapped, &arguments)?;
887            let field1 = field1_option_unwrapped_primitive.clone();
888            let field2_option = arg_vec.get(1);
889            let field2_option_unwrapped = field2_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
890            let field2_option_unwrapped_primitive = extract_primitive_from_field(field2_option_unwrapped, &arguments)?;
891            let field2 = extract_int_from_primitive(field2_option_unwrapped_primitive, &arguments)?;
892            Ok(highlevel::Success::Testsic {
893                field1,
894                field2,
895            })
896        },
897        lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
898            name == "TESTIO"
899            && delimiter == &Some(String::from(":"))
900            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
901        => {
902            let arg_vec = extract_vec_from_args(&arguments)?;
903            let field1_option = arg_vec.get(0);
904            let field1_option_unwrapped = field1_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
905            let field1_option_unwrapped_primitive = extract_primitive_from_field(field1_option_unwrapped, &arguments)?;
906            let field1 = extract_int_from_primitive(field1_option_unwrapped_primitive, &arguments)?;
907            let field2_option = arg_vec.get(1);
908            let field2 = match field2_option {
909                Some(field2_option_unwrapped) if !field2_option_unwrapped.is_empty() => {
910                    let field2_option_unwrapped_primitive = extract_primitive_from_field(field2_option_unwrapped, &arguments)?;
911                    let field2_unwrapped = extract_int_from_primitive(field2_option_unwrapped_primitive, &arguments)?;
912                    Some(field2_unwrapped)
913                }
914                _ => None,
915            };
916            Ok(highlevel::Success::Testio {
917                field1,
918                field2,
919            })
920        },
921        lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
922            name == "TESTIOO"
923            && delimiter == &Some(String::from(":"))
924            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
925        => {
926            let arg_vec = extract_vec_from_args(&arguments)?;
927            let field1_option = arg_vec.get(0);
928            let field1_option_unwrapped = field1_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
929            let field1_option_unwrapped_primitive = extract_primitive_from_field(field1_option_unwrapped, &arguments)?;
930            let field1 = extract_int_from_primitive(field1_option_unwrapped_primitive, &arguments)?;
931            let field2_option = arg_vec.get(1);
932            let field2 = match field2_option {
933                Some(field2_option_unwrapped) if !field2_option_unwrapped.is_empty() => {
934                    let field2_option_unwrapped_primitive = extract_primitive_from_field(field2_option_unwrapped, &arguments)?;
935                    let field2_unwrapped = extract_int_from_primitive(field2_option_unwrapped_primitive, &arguments)?;
936                    Some(field2_unwrapped)
937                }
938                _ => None,
939            };
940            let field3_option = arg_vec.get(2);
941            let field3 = match field3_option {
942                Some(field3_option_unwrapped) if !field3_option_unwrapped.is_empty() => {
943                    let field3_option_unwrapped_primitive = extract_primitive_from_field(field3_option_unwrapped, &arguments)?;
944                    let field3_unwrapped = field3_option_unwrapped_primitive.clone();
945                    Some(field3_unwrapped)
946                }
947                _ => None,
948            };
949            Ok(highlevel::Success::Testioo {
950                field1,
951                field2,
952                field3,
953            })
954        },
955        lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
956            name == "TESTL"
957            && delimiter == &Some(String::from(":"))
958            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
959        => {
960            let arg_vec = extract_vec_from_args(&arguments)?;
961            let mut field = Vec::new();
962            for field_element_raw in arg_vec[0..].into_iter() {
963                let field_element_option = if field_element_raw.is_empty() { None } else { Some(field_element_raw) };
964                let field_element_option_unwrapped = field_element_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
965                let field_element_option_unwrapped_primitive = extract_primitive_from_field(field_element_option_unwrapped, &arguments)?;
966                let field_element = extract_int_from_primitive(field_element_option_unwrapped_primitive, &arguments)?;
967                field.push(field_element);
968            }
969            Ok(highlevel::Success::Testl {
970                field,
971            })
972        },
973        lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
974            name == "TESTOL"
975            && delimiter == &Some(String::from(":"))
976            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
977        => {
978            let arg_vec = extract_vec_from_args(&arguments)?;
979            let mut field = Vec::new();
980            for field_element_raw in arg_vec[0..].into_iter() {
981                let field_element_option = if field_element_raw.is_empty() { None } else { Some(field_element_raw) };
982                let field_element = match field_element_option {
983                    Some(field_element_option_unwrapped) if !field_element_option_unwrapped.is_empty() => {
984                        let field_element_option_unwrapped_primitive = extract_primitive_from_field(field_element_option_unwrapped, &arguments)?;
985                        let field_element_unwrapped = extract_int_from_primitive(field_element_option_unwrapped_primitive, &arguments)?;
986                        Some(field_element_unwrapped)
987                    }
988                    _ => None,
989                };
990                field.push(field_element);
991            }
992            Ok(highlevel::Success::Testol {
993                field,
994            })
995        },
996        lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
997            name == "TESTM"
998            && delimiter == &Some(String::from(":"))
999            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
1000        => {
1001            let arg_vec = extract_vec_from_args(&arguments)?;
1002            let mut field = std::collections::HashMap::new();
1003            for field_element in arg_vec[0..].into_iter() {
1004                let field_element_primitive = extract_key_from_field(field_element, &arguments)?;
1005                let field_key = extract_int_from_primitive(field_element_primitive, &arguments)?;
1006                let field_element_primitive = extract_value_from_field(field_element, &arguments)?;
1007                let field_value = field_element_primitive.clone();
1008                let _ = field.insert(field_key, field_value);
1009            }   
1010            Ok(highlevel::Success::Testm {
1011                field,
1012            })
1013        },
1014        lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1015            name == "TESTP"
1016            && delimiter == &Some(String::from(":"))
1017            &&  matches!(arguments, lowlevel::Arguments::ParenthesisDelimitedArgumentLists(_))
1018        => {
1019            let arg_vec_vec = extract_vec_vec_from_args(&arguments)?;
1020            let arg_vec = arg_vec_vec.get(0).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1021            let field_option = arg_vec.get(0);
1022            let field_option_unwrapped = field_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1023            let field_option_unwrapped_primitive = extract_primitive_from_field(field_option_unwrapped, &arguments)?;
1024            let field = extract_int_from_primitive(field_option_unwrapped_primitive, &arguments)?;
1025            Ok(highlevel::Success::Testp {
1026                field,
1027            })
1028        },
1029        lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1030            name == "TESTPP"
1031            && delimiter == &Some(String::from(":"))
1032            &&  matches!(arguments, lowlevel::Arguments::ParenthesisDelimitedArgumentLists(_))
1033        => {
1034            let arg_vec_vec = extract_vec_vec_from_args(&arguments)?;
1035            let arg_vec = arg_vec_vec.get(0).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1036            let field1_option = arg_vec.get(0);
1037            let field1_option_unwrapped = field1_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1038            let field1_option_unwrapped_primitive = extract_primitive_from_field(field1_option_unwrapped, &arguments)?;
1039            let field1 = extract_int_from_primitive(field1_option_unwrapped_primitive, &arguments)?;
1040            let arg_vec = arg_vec_vec.get(1).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1041            let field2_option = arg_vec.get(0);
1042            let field2_option_unwrapped = field2_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1043            let field2_option_unwrapped_primitive = extract_primitive_from_field(field2_option_unwrapped, &arguments)?;
1044            let field2 = extract_int_from_primitive(field2_option_unwrapped_primitive, &arguments)?;
1045            let field3_option = arg_vec.get(1);
1046            let field3_option_unwrapped = field3_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1047            let field3_option_unwrapped_primitive = extract_primitive_from_field(field3_option_unwrapped, &arguments)?;
1048            let field3 = field3_option_unwrapped_primitive.clone();
1049            Ok(highlevel::Success::Testpp {
1050                field1,
1051                field2,
1052                field3,
1053            })
1054        },
1055        lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1056            name == "TESTPMPIL"
1057            && delimiter == &Some(String::from(":"))
1058            &&  matches!(arguments, lowlevel::Arguments::ParenthesisDelimitedArgumentLists(_))
1059        => {
1060            let arg_vec_vec = extract_vec_vec_from_args(&arguments)?;
1061            let arg_vec = arg_vec_vec.get(0).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1062            let mut field1 = std::collections::HashMap::new();
1063            for field1_element in arg_vec[0..].into_iter() {
1064                let field1_element_primitive = extract_key_from_field(field1_element, &arguments)?;
1065                let field1_key = extract_int_from_primitive(field1_element_primitive, &arguments)?;
1066                let field1_element_primitive = extract_value_from_field(field1_element, &arguments)?;
1067                let field1_value = field1_element_primitive.clone();
1068                let _ = field1.insert(field1_key, field1_value);
1069            }   
1070            let arg_vec = arg_vec_vec.get(1).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1071            let field2_option = arg_vec.get(0);
1072            let field2_option_unwrapped = field2_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1073            let field2_option_unwrapped_primitive = extract_primitive_from_field(field2_option_unwrapped, &arguments)?;
1074            let field2 = extract_int_from_primitive(field2_option_unwrapped_primitive, &arguments)?;
1075            let mut field3 = Vec::new();
1076            for field3_element_raw in arg_vec[1..].into_iter() {
1077                let field3_element_option = if field3_element_raw.is_empty() { None } else { Some(field3_element_raw) };
1078                let field3_element_option_unwrapped = field3_element_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1079                let field3_element_option_unwrapped_primitive = extract_primitive_from_field(field3_element_option_unwrapped, &arguments)?;
1080                let field3_element = extract_int_from_primitive(field3_element_option_unwrapped_primitive, &arguments)?;
1081                field3.push(field3_element);
1082            }
1083            Ok(highlevel::Success::Testpmpil {
1084                field1,
1085                field2,
1086                field3,
1087            })
1088        },
1089        lowlevel::Response::Success { name, is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1090            name == "SAME"
1091            && delimiter == &Some(String::from(":"))
1092            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
1093        => {
1094            let arg_vec = extract_vec_from_args(&arguments)?;
1095            let field_option = arg_vec.get(0);
1096            let field_option_unwrapped = field_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1097            let field_option_unwrapped_primitive = extract_primitive_from_field(field_option_unwrapped, &arguments)?;
1098            let field = extract_int_from_primitive(field_option_unwrapped_primitive, &arguments)?;
1099            Ok(highlevel::Success::SameOne {
1100                field,
1101            })
1102        },
1103        lowlevel::Response::Success { name, is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1104            name == "SAME"
1105            && delimiter == &Some(String::from(":"))
1106            &&  matches!(arguments, lowlevel::Arguments::ParenthesisDelimitedArgumentLists(_))
1107        => {
1108            let arg_vec_vec = extract_vec_vec_from_args(&arguments)?;
1109            let arg_vec = arg_vec_vec.get(0).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1110            let field_option = arg_vec.get(0);
1111            let field_option_unwrapped = field_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1112            let field_option_unwrapped_primitive = extract_primitive_from_field(field_option_unwrapped, &arguments)?;
1113            let field = extract_int_from_primitive(field_option_unwrapped_primitive, &arguments)?;
1114            Ok(highlevel::Success::SameTwo {
1115                field,
1116            })
1117        },
1118        lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1119            name == "BRSF"
1120            && delimiter == &Some(String::from(":"))
1121            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
1122        => {
1123            let arg_vec = extract_vec_from_args(&arguments)?;
1124            let features_option = arg_vec.get(0);
1125            let features_option_unwrapped = features_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1126            let features_option_unwrapped_primitive = extract_primitive_from_field(features_option_unwrapped, &arguments)?;
1127            let features = extract_int_from_primitive(features_option_unwrapped_primitive, &arguments)?;
1128            Ok(highlevel::Success::Brsf {
1129                features,
1130            })
1131        },
1132        lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1133            name == "CIND"
1134            && delimiter == &Some(String::from(":"))
1135            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
1136        => {
1137            let arg_vec = extract_vec_from_args(&arguments)?;
1138            let mut ordered_values = Vec::new();
1139            for ordered_values_element_raw in arg_vec[0..].into_iter() {
1140                let ordered_values_element_option = if ordered_values_element_raw.is_empty() { None } else { Some(ordered_values_element_raw) };
1141                let ordered_values_element_option_unwrapped = ordered_values_element_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1142                let ordered_values_element_option_unwrapped_primitive = extract_primitive_from_field(ordered_values_element_option_unwrapped, &arguments)?;
1143                let ordered_values_element = extract_int_from_primitive(ordered_values_element_option_unwrapped_primitive, &arguments)?;
1144                ordered_values.push(ordered_values_element);
1145            }
1146            Ok(highlevel::Success::CindRead {
1147                ordered_values,
1148            })
1149        },
1150        lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1151            name == "CLCC"
1152            && delimiter == &Some(String::from(":"))
1153            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
1154        => {
1155            let arg_vec = extract_vec_from_args(&arguments)?;
1156            let index_option = arg_vec.get(0);
1157            let index_option_unwrapped = index_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1158            let index_option_unwrapped_primitive = extract_primitive_from_field(index_option_unwrapped, &arguments)?;
1159            let index = extract_int_from_primitive(index_option_unwrapped_primitive, &arguments)?;
1160            let direction_option = arg_vec.get(1);
1161            let direction_option_unwrapped = direction_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1162            let direction_option_unwrapped_primitive = extract_primitive_from_field(direction_option_unwrapped, &arguments)?;
1163            let direction = extract_int_from_primitive(direction_option_unwrapped_primitive, &arguments)?;
1164            let status_option = arg_vec.get(2);
1165            let status_option_unwrapped = status_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1166            let status_option_unwrapped_primitive = extract_primitive_from_field(status_option_unwrapped, &arguments)?;
1167            let status = extract_int_from_primitive(status_option_unwrapped_primitive, &arguments)?;
1168            let mode_option = arg_vec.get(3);
1169            let mode_option_unwrapped = mode_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1170            let mode_option_unwrapped_primitive = extract_primitive_from_field(mode_option_unwrapped, &arguments)?;
1171            let mode = extract_int_from_primitive(mode_option_unwrapped_primitive, &arguments)?;
1172            let multiparty_option = arg_vec.get(4);
1173            let multiparty_option_unwrapped = multiparty_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1174            let multiparty_option_unwrapped_primitive = extract_primitive_from_field(multiparty_option_unwrapped, &arguments)?;
1175            let multiparty = extract_int_from_primitive(multiparty_option_unwrapped_primitive, &arguments)?;
1176            let number_option = arg_vec.get(5);
1177            let number = match number_option {
1178                Some(number_option_unwrapped) if !number_option_unwrapped.is_empty() => {
1179                    let number_option_unwrapped_primitive = extract_primitive_from_field(number_option_unwrapped, &arguments)?;
1180                    let number_unwrapped = number_option_unwrapped_primitive.clone();
1181                    Some(number_unwrapped)
1182                }
1183                _ => None,
1184            };
1185            let ty_option = arg_vec.get(6);
1186            let ty = match ty_option {
1187                Some(ty_option_unwrapped) if !ty_option_unwrapped.is_empty() => {
1188                    let ty_option_unwrapped_primitive = extract_primitive_from_field(ty_option_unwrapped, &arguments)?;
1189                    let ty_unwrapped = extract_int_from_primitive(ty_option_unwrapped_primitive, &arguments)?;
1190                    Some(ty_unwrapped)
1191                }
1192                _ => None,
1193            };
1194            let alpha_option = arg_vec.get(7);
1195            let alpha = match alpha_option {
1196                Some(alpha_option_unwrapped) if !alpha_option_unwrapped.is_empty() => {
1197                    let alpha_option_unwrapped_primitive = extract_primitive_from_field(alpha_option_unwrapped, &arguments)?;
1198                    let alpha_unwrapped = alpha_option_unwrapped_primitive.clone();
1199                    Some(alpha_unwrapped)
1200                }
1201                _ => None,
1202            };
1203            let priority_option = arg_vec.get(8);
1204            let priority = match priority_option {
1205                Some(priority_option_unwrapped) if !priority_option_unwrapped.is_empty() => {
1206                    let priority_option_unwrapped_primitive = extract_primitive_from_field(priority_option_unwrapped, &arguments)?;
1207                    let priority_unwrapped = extract_int_from_primitive(priority_option_unwrapped_primitive, &arguments)?;
1208                    Some(priority_unwrapped)
1209                }
1210                _ => None,
1211            };
1212            Ok(highlevel::Success::Clcc {
1213                index,
1214                direction,
1215                status,
1216                mode,
1217                multiparty,
1218                number,
1219                ty,
1220                alpha,
1221                priority,
1222            })
1223        },
1224        lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1225            name == "BCS"
1226            && delimiter == &Some(String::from(":"))
1227            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
1228        => {
1229            let arg_vec = extract_vec_from_args(&arguments)?;
1230            let codec_option = arg_vec.get(0);
1231            let codec_option_unwrapped = codec_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1232            let codec_option_unwrapped_primitive = extract_primitive_from_field(codec_option_unwrapped, &arguments)?;
1233            let codec = extract_int_from_primitive(codec_option_unwrapped_primitive, &arguments)?;
1234            Ok(highlevel::Success::Bcs {
1235                codec,
1236            })
1237        },
1238        lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1239            name == "BIND"
1240            && delimiter == &Some(String::from(":"))
1241            &&  matches!(arguments, lowlevel::Arguments::ParenthesisDelimitedArgumentLists(_))
1242        => {
1243            let arg_vec_vec = extract_vec_vec_from_args(&arguments)?;
1244            let arg_vec = arg_vec_vec.get(0).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1245            let mut indicators = Vec::new();
1246            for indicators_element_raw in arg_vec[0..].into_iter() {
1247                let indicators_element_option = if indicators_element_raw.is_empty() { None } else { Some(indicators_element_raw) };
1248                let indicators_element_option_unwrapped = indicators_element_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1249                let indicators_element_option_unwrapped_primitive = extract_primitive_from_field(indicators_element_option_unwrapped, &arguments)?;
1250                let indicators_element_option_unwrapped_int = extract_int_from_primitive(indicators_element_option_unwrapped_primitive, &arguments)?;
1251                let indicators_element = super::types::BluetoothHFIndicator::from_i64(indicators_element_option_unwrapped_int).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1252                indicators.push(indicators_element);
1253            }
1254            Ok(highlevel::Success::BindList {
1255                indicators,
1256            })
1257        },
1258        lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1259            name == "BIND"
1260            && delimiter == &Some(String::from(":"))
1261            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
1262        => {
1263            let arg_vec = extract_vec_from_args(&arguments)?;
1264            let anum_option = arg_vec.get(0);
1265            let anum_option_unwrapped = anum_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1266            let anum_option_unwrapped_primitive = extract_primitive_from_field(anum_option_unwrapped, &arguments)?;
1267            let anum_option_unwrapped_int = extract_int_from_primitive(anum_option_unwrapped_primitive, &arguments)?;
1268            let anum = super::types::BluetoothHFIndicator::from_i64(anum_option_unwrapped_int).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1269            let state_option = arg_vec.get(1);
1270            let state_option_unwrapped = state_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1271            let state_option_unwrapped_primitive = extract_primitive_from_field(state_option_unwrapped, &arguments)?;
1272            let state_option_unwrapped_int = extract_int_from_primitive(state_option_unwrapped_primitive, &arguments)?;
1273            let state = state_option_unwrapped_int != 0;
1274            Ok(highlevel::Success::BindStatus {
1275                anum,
1276                state,
1277            })
1278        },
1279        lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1280            name == "CHLD"
1281            && delimiter == &Some(String::from(":"))
1282            &&  matches!(arguments, lowlevel::Arguments::ParenthesisDelimitedArgumentLists(_))
1283        => {
1284            let arg_vec_vec = extract_vec_vec_from_args(&arguments)?;
1285            let arg_vec = arg_vec_vec.get(0).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1286            let mut commands = Vec::new();
1287            for commands_element_raw in arg_vec[0..].into_iter() {
1288                let commands_element_option = if commands_element_raw.is_empty() { None } else { Some(commands_element_raw) };
1289                let commands_element_option_unwrapped = commands_element_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1290                let commands_element_option_unwrapped_primitive = extract_primitive_from_field(commands_element_option_unwrapped, &arguments)?;
1291                let commands_element = commands_element_option_unwrapped_primitive.clone();
1292                commands.push(commands_element);
1293            }
1294            Ok(highlevel::Success::Chld {
1295                commands,
1296            })
1297        },
1298        lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1299            name == "COPS"
1300            && delimiter == &Some(String::from(":"))
1301            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
1302        => {
1303            let arg_vec = extract_vec_from_args(&arguments)?;
1304            let format_option = arg_vec.get(0);
1305            let format_option_unwrapped = format_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1306            let format_option_unwrapped_primitive = extract_primitive_from_field(format_option_unwrapped, &arguments)?;
1307            let format_option_unwrapped_int = extract_int_from_primitive(format_option_unwrapped_primitive, &arguments)?;
1308            let format = super::types::NetworkOperatorNameFormat::from_i64(format_option_unwrapped_int).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1309            let zero_option = arg_vec.get(1);
1310            let zero_option_unwrapped = zero_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1311            let zero_option_unwrapped_primitive = extract_primitive_from_field(zero_option_unwrapped, &arguments)?;
1312            let zero = extract_int_from_primitive(zero_option_unwrapped_primitive, &arguments)?;
1313            let operator_option = arg_vec.get(2);
1314            let operator_option_unwrapped = operator_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1315            let operator_option_unwrapped_primitive = extract_primitive_from_field(operator_option_unwrapped, &arguments)?;
1316            let operator = operator_option_unwrapped_primitive.clone();
1317            Ok(highlevel::Success::Cops {
1318                format,
1319                zero,
1320                operator,
1321            })
1322        },
1323        lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1324            name == "CLIP"
1325            && delimiter == &Some(String::from(":"))
1326            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
1327        => {
1328            let arg_vec = extract_vec_from_args(&arguments)?;
1329            let number_option = arg_vec.get(0);
1330            let number_option_unwrapped = number_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1331            let number_option_unwrapped_primitive = extract_primitive_from_field(number_option_unwrapped, &arguments)?;
1332            let number = number_option_unwrapped_primitive.clone();
1333            let ty_option = arg_vec.get(1);
1334            let ty_option_unwrapped = ty_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1335            let ty_option_unwrapped_primitive = extract_primitive_from_field(ty_option_unwrapped, &arguments)?;
1336            let ty = extract_int_from_primitive(ty_option_unwrapped_primitive, &arguments)?;
1337            Ok(highlevel::Success::Clip {
1338                number,
1339                ty,
1340            })
1341        },
1342        lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1343            name == "CNUM"
1344            && delimiter == &Some(String::from(":"))
1345            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
1346        => {
1347            let arg_vec = extract_vec_from_args(&arguments)?;
1348            let alpha_option = arg_vec.get(0);
1349            let alpha_option_unwrapped = alpha_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1350            let alpha_option_unwrapped_primitive = extract_primitive_from_field(alpha_option_unwrapped, &arguments)?;
1351            let alpha = alpha_option_unwrapped_primitive.clone();
1352            let number_option = arg_vec.get(1);
1353            let number_option_unwrapped = number_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1354            let number_option_unwrapped_primitive = extract_primitive_from_field(number_option_unwrapped, &arguments)?;
1355            let number = number_option_unwrapped_primitive.clone();
1356            let ty_option = arg_vec.get(2);
1357            let ty_option_unwrapped = ty_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1358            let ty_option_unwrapped_primitive = extract_primitive_from_field(ty_option_unwrapped, &arguments)?;
1359            let ty = extract_int_from_primitive(ty_option_unwrapped_primitive, &arguments)?;
1360            let speed_option = arg_vec.get(3);
1361            let speed_option_unwrapped = speed_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1362            let speed_option_unwrapped_primitive = extract_primitive_from_field(speed_option_unwrapped, &arguments)?;
1363            let speed = speed_option_unwrapped_primitive.clone();
1364            let service_option = arg_vec.get(4);
1365            let service_option_unwrapped = service_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1366            let service_option_unwrapped_primitive = extract_primitive_from_field(service_option_unwrapped, &arguments)?;
1367            let service = extract_int_from_primitive(service_option_unwrapped_primitive, &arguments)?;
1368            Ok(highlevel::Success::Cnum {
1369                alpha,
1370                number,
1371                ty,
1372                speed,
1373                service,
1374            })
1375        },
1376        lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1377            name == "VGS"
1378            && delimiter == &Some(String::from(":"))
1379            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
1380        => {
1381            let arg_vec = extract_vec_from_args(&arguments)?;
1382            let level_option = arg_vec.get(0);
1383            let level_option_unwrapped = level_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1384            let level_option_unwrapped_primitive = extract_primitive_from_field(level_option_unwrapped, &arguments)?;
1385            let level = extract_int_from_primitive(level_option_unwrapped_primitive, &arguments)?;
1386            Ok(highlevel::Success::Vgs {
1387                level,
1388            })
1389        },
1390        lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1391            name == "VGM"
1392            && delimiter == &Some(String::from(":"))
1393            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
1394        => {
1395            let arg_vec = extract_vec_from_args(&arguments)?;
1396            let level_option = arg_vec.get(0);
1397            let level_option_unwrapped = level_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1398            let level_option_unwrapped_primitive = extract_primitive_from_field(level_option_unwrapped, &arguments)?;
1399            let level = extract_int_from_primitive(level_option_unwrapped_primitive, &arguments)?;
1400            Ok(highlevel::Success::Vgm {
1401                level,
1402            })
1403        },
1404        lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1405            name == "CIEV"
1406            && delimiter == &Some(String::from(":"))
1407            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
1408        => {
1409            let arg_vec = extract_vec_from_args(&arguments)?;
1410            let ind_option = arg_vec.get(0);
1411            let ind_option_unwrapped = ind_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1412            let ind_option_unwrapped_primitive = extract_primitive_from_field(ind_option_unwrapped, &arguments)?;
1413            let ind = extract_int_from_primitive(ind_option_unwrapped_primitive, &arguments)?;
1414            let value_option = arg_vec.get(1);
1415            let value_option_unwrapped = value_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1416            let value_option_unwrapped_primitive = extract_primitive_from_field(value_option_unwrapped, &arguments)?;
1417            let value = extract_int_from_primitive(value_option_unwrapped_primitive, &arguments)?;
1418            Ok(highlevel::Success::Ciev {
1419                ind,
1420                value,
1421            })
1422        },
1423        lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1424            name == "CCWA"
1425            && delimiter == &Some(String::from(":"))
1426            &&  matches!(arguments, lowlevel::Arguments::ArgumentList(_))
1427        => {
1428            let arg_vec = extract_vec_from_args(&arguments)?;
1429            let number_option = arg_vec.get(0);
1430            let number_option_unwrapped = number_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1431            let number_option_unwrapped_primitive = extract_primitive_from_field(number_option_unwrapped, &arguments)?;
1432            let number = number_option_unwrapped_primitive.clone();
1433            let ty_option = arg_vec.get(1);
1434            let ty_option_unwrapped = ty_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1435            let ty_option_unwrapped_primitive = extract_primitive_from_field(ty_option_unwrapped, &arguments)?;
1436            let ty = extract_int_from_primitive(ty_option_unwrapped_primitive, &arguments)?;
1437            Ok(highlevel::Success::Ccwa {
1438                number,
1439                ty,
1440            })
1441        },
1442        lowlevel::Response::Success { name, is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter, .. }} if
1443            name == "RING"
1444            && delimiter == &None
1445        => {
1446            Ok(highlevel::Success::Ring {
1447            })
1448        },
1449        _ => Err(DeserializeErrorCause::UnknownResponse(lowlevel.clone())),
1450    }
1451}
1452
1453pub fn lower_command(highlevel: &highlevel::Command) -> lowlevel::Command {
1454    match highlevel {
1455        highlevel::Command::Testex {        } => {
1456            let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
1457            lowlevel::Command::Execute { name: String::from("TESTEX"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
1458        },
1459        highlevel::Command::Testexext {        } => {
1460            let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
1461            lowlevel::Command::Execute { name: String::from("TESTEXEXT"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
1462        },
1463        highlevel::Command::TestCommand {        } => {
1464            let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
1465            lowlevel::Command::Execute { name: String::from("TESTNEX"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
1466        },
1467        highlevel::Command::Testexextfi {
1468            field,
1469        } => {
1470            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1471            let field_string = i64::to_string(&field);
1472            let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
1473            raw_arguments.push(field_primitive);
1474            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1475            lowlevel::Command::Execute { name: String::from("TESTEXEXTFI"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1476        },
1477        highlevel::Command::Testexextfic {
1478            field,
1479        } => {
1480            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1481            let field_string = i64::to_string(&field);
1482            let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
1483            raw_arguments.push(field_primitive);
1484            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1485            lowlevel::Command::Execute { name: String::from("TESTEXEXTFIC"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1486        },
1487        highlevel::Command::Testnsd {
1488            field,
1489        } => {
1490            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1491            let field_string = i64::to_string(&field);
1492            let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
1493            raw_arguments.push(field_primitive);
1494            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1495            lowlevel::Command::Execute { name: String::from("TESTNSD"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(">")), arguments, terminator: None } }
1496        },
1497        highlevel::Command::Testnst {
1498            field,
1499        } => {
1500            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1501            let field_string = i64::to_string(&field);
1502            let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
1503            raw_arguments.push(field_primitive);
1504            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1505            lowlevel::Command::Execute { name: String::from("TESTNST"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: Some(String::from(";")) } }
1506        },
1507        highlevel::Command::Testnsdnst {
1508            field,
1509        } => {
1510            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1511            let field_string = i64::to_string(&field);
1512            let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
1513            raw_arguments.push(field_primitive);
1514            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1515            lowlevel::Command::Execute { name: String::from("TESTNSDNST"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(">")), arguments, terminator: Some(String::from(";")) } }
1516        },
1517        highlevel::Command::Testnod {
1518            field,
1519        } => {
1520            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1521            let field_string = i64::to_string(&field);
1522            let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
1523            raw_arguments.push(field_primitive);
1524            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1525            lowlevel::Command::Execute { name: String::from("TESTNOD"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
1526        },
1527        highlevel::Command::Testexextfs {
1528            field,
1529        } => {
1530            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1531            let field_string = field.clone();
1532            let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
1533            raw_arguments.push(field_primitive);
1534            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1535            lowlevel::Command::Execute { name: String::from("TESTEXEXTFS"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1536        },
1537        highlevel::Command::Testexextfsi {
1538            field1,
1539            field2,
1540        } => {
1541            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1542            let field1_string = field1.clone();
1543            let field1_primitive = lowlevel::Argument::PrimitiveArgument(field1_string);
1544            raw_arguments.push(field1_primitive);
1545            let field2_string = i64::to_string(&field2);
1546            let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_string);
1547            raw_arguments.push(field2_primitive);
1548            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1549            lowlevel::Command::Execute { name: String::from("TESTEXEXTFSI"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1550        },
1551        highlevel::Command::Testexextfsic {
1552            field1,
1553            field2,
1554        } => {
1555            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1556            let field1_string = field1.clone();
1557            let field1_primitive = lowlevel::Argument::PrimitiveArgument(field1_string);
1558            raw_arguments.push(field1_primitive);
1559            let field2_string = i64::to_string(&field2);
1560            let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_string);
1561            raw_arguments.push(field2_primitive);
1562            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1563            lowlevel::Command::Execute { name: String::from("TESTEXEXTFSIC"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1564        },
1565        highlevel::Command::Testio {
1566            field1,
1567            field2,
1568        } => {
1569            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1570            let field1_string = i64::to_string(&field1);
1571            let field1_primitive = lowlevel::Argument::PrimitiveArgument(field1_string);
1572            raw_arguments.push(field1_primitive);
1573            match field2 {
1574            None => {}
1575            Some(field2_unwrapped) => {
1576                    let field2_unwrapped_string = i64::to_string(&field2_unwrapped);
1577                    let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_unwrapped_string);
1578                    raw_arguments.push(field2_primitive);
1579            }
1580            }
1581            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1582            lowlevel::Command::Execute { name: String::from("TESTIO"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1583        },
1584        highlevel::Command::Testl {
1585            field,
1586        } => {
1587            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1588            for field_element in field.into_iter() {
1589                    let field_element_string = i64::to_string(&field_element);
1590                    let field_element_primitive = lowlevel::Argument::PrimitiveArgument(field_element_string);
1591                    raw_arguments.push(field_element_primitive);
1592            }   
1593            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1594            lowlevel::Command::Execute { name: String::from("TESTL"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1595        },
1596        highlevel::Command::Testol {
1597            field,
1598        } => {
1599            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1600            for field_element in field.into_iter() {
1601                    match field_element {
1602                    None => {
1603                                raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
1604                        }
1605                    Some(field_element_unwrapped) => {
1606                            let field_element_unwrapped_string = i64::to_string(&field_element_unwrapped);
1607                            let field_element_primitive = lowlevel::Argument::PrimitiveArgument(field_element_unwrapped_string);
1608                            raw_arguments.push(field_element_primitive);
1609                    }
1610                    }
1611            }   
1612            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1613            lowlevel::Command::Execute { name: String::from("TESTOL"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1614        },
1615        highlevel::Command::Testm {
1616            field,
1617        } => {
1618            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1619            for (field_typed_key, field_typed_value) in field {
1620                let field_primitive_key = i64::to_string(&field_typed_key);
1621                let field_primitive_value = field_typed_value.clone();
1622                let field_untyped_pair = lowlevel::Argument::KeyValueArgument { key: field_primitive_key, value: field_primitive_value };
1623                raw_arguments.push(field_untyped_pair);
1624            }   
1625            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1626            lowlevel::Command::Execute { name: String::from("TESTM"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1627        },
1628        highlevel::Command::Testp {
1629            field,
1630        } => {
1631            let mut raw_arguments_outer = Vec::<Vec<lowlevel::Argument>>::new();
1632            let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
1633            let field_string = i64::to_string(&field);
1634            let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
1635            raw_arguments_inner.push(field_primitive);
1636            raw_arguments_outer.push(raw_arguments_inner);
1637            let arguments = lowlevel::Arguments::ParenthesisDelimitedArgumentLists(raw_arguments_outer);
1638            lowlevel::Command::Execute { name: String::from("TESTP"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1639        },
1640        highlevel::Command::Testpp {
1641            field1,
1642            field2,
1643            field3,
1644        } => {
1645            let mut raw_arguments_outer = Vec::<Vec<lowlevel::Argument>>::new();
1646            let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
1647            let field1_string = i64::to_string(&field1);
1648            let field1_primitive = lowlevel::Argument::PrimitiveArgument(field1_string);
1649            raw_arguments_inner.push(field1_primitive);
1650            raw_arguments_outer.push(raw_arguments_inner);
1651            let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
1652            let field2_string = i64::to_string(&field2);
1653            let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_string);
1654            raw_arguments_inner.push(field2_primitive);
1655            let field3_string = field3.clone();
1656            let field3_primitive = lowlevel::Argument::PrimitiveArgument(field3_string);
1657            raw_arguments_inner.push(field3_primitive);
1658            raw_arguments_outer.push(raw_arguments_inner);
1659            let arguments = lowlevel::Arguments::ParenthesisDelimitedArgumentLists(raw_arguments_outer);
1660            lowlevel::Command::Execute { name: String::from("TESTPP"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1661        },
1662        highlevel::Command::Testpmpil {
1663            field1,
1664            field2,
1665            field3,
1666        } => {
1667            let mut raw_arguments_outer = Vec::<Vec<lowlevel::Argument>>::new();
1668            let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
1669            for (field1_typed_key, field1_typed_value) in field1 {
1670                let field1_primitive_key = i64::to_string(&field1_typed_key);
1671                let field1_primitive_value = field1_typed_value.clone();
1672                let field1_untyped_pair = lowlevel::Argument::KeyValueArgument { key: field1_primitive_key, value: field1_primitive_value };
1673                raw_arguments_inner.push(field1_untyped_pair);
1674            }   
1675            raw_arguments_outer.push(raw_arguments_inner);
1676            let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
1677            let field2_string = i64::to_string(&field2);
1678            let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_string);
1679            raw_arguments_inner.push(field2_primitive);
1680            for field3_element in field3.into_iter() {
1681                    let field3_element_string = i64::to_string(&field3_element);
1682                    let field3_element_primitive = lowlevel::Argument::PrimitiveArgument(field3_element_string);
1683                    raw_arguments_inner.push(field3_element_primitive);
1684            }   
1685            raw_arguments_outer.push(raw_arguments_inner);
1686            let arguments = lowlevel::Arguments::ParenthesisDelimitedArgumentLists(raw_arguments_outer);
1687            lowlevel::Command::Execute { name: String::from("TESTPMPIL"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1688        },
1689        highlevel::Command::TestrRead {} => {
1690            lowlevel::Command::Read { name: String::from("TESTR"), is_extension: false }
1691        },
1692        highlevel::Command::TestrexRead {} => {
1693            lowlevel::Command::Read { name: String::from("TESTREX"), is_extension: true }
1694        },
1695        highlevel::Command::TesttTest {} => {
1696            lowlevel::Command::Test { name: String::from("TESTT"), is_extension: false }
1697        },
1698        highlevel::Command::TesttexTest {} => {
1699            lowlevel::Command::Test { name: String::from("TESTTEX"), is_extension: true }
1700        },
1701        highlevel::Command::Testenum {
1702            field,
1703        } => {
1704            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1705            let field_string_int = *field as i64;
1706            let field_string = i64::to_string(&field_string_int);
1707            let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
1708            raw_arguments.push(field_primitive);
1709            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1710            lowlevel::Command::Execute { name: String::from("TESTENUM"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1711        },
1712        highlevel::Command::Testbool {
1713            field,
1714        } => {
1715            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1716            let field_string_int = if *field { 1 } else { 0 };
1717            let field_string = i64::to_string(&field_string_int);
1718            let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
1719            raw_arguments.push(field_primitive);
1720            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1721            lowlevel::Command::Execute { name: String::from("TESTBOOL"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1722        },
1723        highlevel::Command::Testotherfile {        } => {
1724            let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
1725            lowlevel::Command::Execute { name: String::from("TESTOTHERFILE"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
1726        },
1727        highlevel::Command::Brsf {
1728            features,
1729        } => {
1730            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1731            let features_string = i64::to_string(&features);
1732            let features_primitive = lowlevel::Argument::PrimitiveArgument(features_string);
1733            raw_arguments.push(features_primitive);
1734            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1735            lowlevel::Command::Execute { name: String::from("BRSF"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1736        },
1737        highlevel::Command::CindTest {} => {
1738            lowlevel::Command::Test { name: String::from("CIND"), is_extension: true }
1739        },
1740        highlevel::Command::CindRead {} => {
1741            lowlevel::Command::Read { name: String::from("CIND"), is_extension: true }
1742        },
1743        highlevel::Command::Clcc {        } => {
1744            let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
1745            lowlevel::Command::Execute { name: String::from("CLCC"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
1746        },
1747        highlevel::Command::Bcc {        } => {
1748            let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
1749            lowlevel::Command::Execute { name: String::from("BCC"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
1750        },
1751        highlevel::Command::Bcs {
1752            codec,
1753        } => {
1754            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1755            let codec_string = i64::to_string(&codec);
1756            let codec_primitive = lowlevel::Argument::PrimitiveArgument(codec_string);
1757            raw_arguments.push(codec_primitive);
1758            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1759            lowlevel::Command::Execute { name: String::from("BCS"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1760        },
1761        highlevel::Command::Bac {
1762            codecs,
1763        } => {
1764            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1765            for codecs_element in codecs.into_iter() {
1766                    let codecs_element_string = i64::to_string(&codecs_element);
1767                    let codecs_element_primitive = lowlevel::Argument::PrimitiveArgument(codecs_element_string);
1768                    raw_arguments.push(codecs_element_primitive);
1769            }   
1770            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1771            lowlevel::Command::Execute { name: String::from("BAC"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1772        },
1773        highlevel::Command::Bind {
1774            indicators,
1775        } => {
1776            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1777            for indicators_element in indicators.into_iter() {
1778                    let indicators_element_string = i64::to_string(&indicators_element);
1779                    let indicators_element_primitive = lowlevel::Argument::PrimitiveArgument(indicators_element_string);
1780                    raw_arguments.push(indicators_element_primitive);
1781            }   
1782            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1783            lowlevel::Command::Execute { name: String::from("BIND"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1784        },
1785        highlevel::Command::BindTest {} => {
1786            lowlevel::Command::Test { name: String::from("BIND"), is_extension: true }
1787        },
1788        highlevel::Command::BindRead {} => {
1789            lowlevel::Command::Read { name: String::from("BIND"), is_extension: true }
1790        },
1791        highlevel::Command::Biev {
1792            anum,
1793            value,
1794        } => {
1795            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1796            let anum_string_int = *anum as i64;
1797            let anum_string = i64::to_string(&anum_string_int);
1798            let anum_primitive = lowlevel::Argument::PrimitiveArgument(anum_string);
1799            raw_arguments.push(anum_primitive);
1800            let value_string = i64::to_string(&value);
1801            let value_primitive = lowlevel::Argument::PrimitiveArgument(value_string);
1802            raw_arguments.push(value_primitive);
1803            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1804            lowlevel::Command::Execute { name: String::from("BIEV"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1805        },
1806        highlevel::Command::ChldTest {} => {
1807            lowlevel::Command::Test { name: String::from("CHLD"), is_extension: true }
1808        },
1809        highlevel::Command::Cmer {
1810            mode,
1811            keyp,
1812            disp,
1813            ind,
1814        } => {
1815            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1816            let mode_string = i64::to_string(&mode);
1817            let mode_primitive = lowlevel::Argument::PrimitiveArgument(mode_string);
1818            raw_arguments.push(mode_primitive);
1819            let keyp_string = i64::to_string(&keyp);
1820            let keyp_primitive = lowlevel::Argument::PrimitiveArgument(keyp_string);
1821            raw_arguments.push(keyp_primitive);
1822            let disp_string = i64::to_string(&disp);
1823            let disp_primitive = lowlevel::Argument::PrimitiveArgument(disp_string);
1824            raw_arguments.push(disp_primitive);
1825            let ind_string = i64::to_string(&ind);
1826            let ind_primitive = lowlevel::Argument::PrimitiveArgument(ind_string);
1827            raw_arguments.push(ind_primitive);
1828            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1829            lowlevel::Command::Execute { name: String::from("CMER"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1830        },
1831        highlevel::Command::Nrec {
1832            nrec,
1833        } => {
1834            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1835            let nrec_string_int = if *nrec { 1 } else { 0 };
1836            let nrec_string = i64::to_string(&nrec_string_int);
1837            let nrec_primitive = lowlevel::Argument::PrimitiveArgument(nrec_string);
1838            raw_arguments.push(nrec_primitive);
1839            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1840            lowlevel::Command::Execute { name: String::from("NREC"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1841        },
1842        highlevel::Command::Cops {
1843            three,
1844            format,
1845        } => {
1846            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1847            let three_string = i64::to_string(&three);
1848            let three_primitive = lowlevel::Argument::PrimitiveArgument(three_string);
1849            raw_arguments.push(three_primitive);
1850            let format_string_int = *format as i64;
1851            let format_string = i64::to_string(&format_string_int);
1852            let format_primitive = lowlevel::Argument::PrimitiveArgument(format_string);
1853            raw_arguments.push(format_primitive);
1854            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1855            lowlevel::Command::Execute { name: String::from("COPS"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1856        },
1857        highlevel::Command::CopsRead {} => {
1858            lowlevel::Command::Read { name: String::from("COPS"), is_extension: true }
1859        },
1860        highlevel::Command::Cmee {
1861            enable,
1862        } => {
1863            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1864            let enable_string_int = if *enable { 1 } else { 0 };
1865            let enable_string = i64::to_string(&enable_string_int);
1866            let enable_primitive = lowlevel::Argument::PrimitiveArgument(enable_string);
1867            raw_arguments.push(enable_primitive);
1868            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1869            lowlevel::Command::Execute { name: String::from("CMEE"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1870        },
1871        highlevel::Command::Ccwa {
1872            enable,
1873        } => {
1874            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1875            let enable_string_int = if *enable { 1 } else { 0 };
1876            let enable_string = i64::to_string(&enable_string_int);
1877            let enable_primitive = lowlevel::Argument::PrimitiveArgument(enable_string);
1878            raw_arguments.push(enable_primitive);
1879            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1880            lowlevel::Command::Execute { name: String::from("CCWA"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1881        },
1882        highlevel::Command::Clip {
1883            enable,
1884        } => {
1885            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1886            let enable_string_int = if *enable { 1 } else { 0 };
1887            let enable_string = i64::to_string(&enable_string_int);
1888            let enable_primitive = lowlevel::Argument::PrimitiveArgument(enable_string);
1889            raw_arguments.push(enable_primitive);
1890            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1891            lowlevel::Command::Execute { name: String::from("CLIP"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1892        },
1893        highlevel::Command::Cnum {        } => {
1894            let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
1895            lowlevel::Command::Execute { name: String::from("CNUM"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
1896        },
1897        highlevel::Command::Vts {
1898            code,
1899        } => {
1900            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1901            let code_string = code.clone();
1902            let code_primitive = lowlevel::Argument::PrimitiveArgument(code_string);
1903            raw_arguments.push(code_primitive);
1904            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1905            lowlevel::Command::Execute { name: String::from("VTS"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1906        },
1907        highlevel::Command::Vgs {
1908            level,
1909        } => {
1910            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1911            let level_string = i64::to_string(&level);
1912            let level_primitive = lowlevel::Argument::PrimitiveArgument(level_string);
1913            raw_arguments.push(level_primitive);
1914            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1915            lowlevel::Command::Execute { name: String::from("VGS"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1916        },
1917        highlevel::Command::Vgm {
1918            level,
1919        } => {
1920            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1921            let level_string = i64::to_string(&level);
1922            let level_primitive = lowlevel::Argument::PrimitiveArgument(level_string);
1923            raw_arguments.push(level_primitive);
1924            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1925            lowlevel::Command::Execute { name: String::from("VGM"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1926        },
1927        highlevel::Command::Bia {
1928            indrep,
1929        } => {
1930            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1931            for indrep_element in indrep.into_iter() {
1932                    match indrep_element {
1933                    None => {
1934                                raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
1935                        }
1936                    Some(indrep_element_unwrapped) => {
1937                            let indrep_element_unwrapped_string_int = if *indrep_element_unwrapped { 1 } else { 0 };
1938                            let indrep_element_unwrapped_string = i64::to_string(&indrep_element_unwrapped_string_int);
1939                            let indrep_element_primitive = lowlevel::Argument::PrimitiveArgument(indrep_element_unwrapped_string);
1940                            raw_arguments.push(indrep_element_primitive);
1941                    }
1942                    }
1943            }   
1944            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1945            lowlevel::Command::Execute { name: String::from("BIA"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1946        },
1947        highlevel::Command::Answer {        } => {
1948            let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
1949            lowlevel::Command::Execute { name: String::from("A"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
1950        },
1951        highlevel::Command::Chup {        } => {
1952            let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
1953            lowlevel::Command::Execute { name: String::from("CHUP"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
1954        },
1955        highlevel::Command::Chld {
1956            command,
1957        } => {
1958            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1959            let command_string = command.clone();
1960            let command_primitive = lowlevel::Argument::PrimitiveArgument(command_string);
1961            raw_arguments.push(command_primitive);
1962            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1963            lowlevel::Command::Execute { name: String::from("CHLD"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1964        },
1965        highlevel::Command::AtdNumber {
1966            number,
1967        } => {
1968            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1969            let number_string = number.clone();
1970            let number_primitive = lowlevel::Argument::PrimitiveArgument(number_string);
1971            raw_arguments.push(number_primitive);
1972            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1973            lowlevel::Command::Execute { name: String::from("D"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: Some(String::from(";")) } }
1974        },
1975        highlevel::Command::AtdMemory {
1976            location,
1977        } => {
1978            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1979            let location_string = location.clone();
1980            let location_primitive = lowlevel::Argument::PrimitiveArgument(location_string);
1981            raw_arguments.push(location_primitive);
1982            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1983            lowlevel::Command::Execute { name: String::from("D"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(">")), arguments, terminator: Some(String::from(";")) } }
1984        },
1985        highlevel::Command::Bldn {        } => {
1986            let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
1987            lowlevel::Command::Execute { name: String::from("BLDN"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
1988        },
1989    }
1990}
1991
1992pub fn lower_success(highlevel: &highlevel::Success) -> lowlevel::Response {
1993    match highlevel {
1994        highlevel::Success::Test {        } => {
1995            let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
1996            lowlevel::Response::Success { name: String::from("TEST"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
1997        },
1998        highlevel::Success::Testnod {        } => {
1999            let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
2000            lowlevel::Response::Success { name: String::from("TESTNOD"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
2001        },
2002        highlevel::Success::TestResponse {        } => {
2003            let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
2004            lowlevel::Response::Success { name: String::from("TESTN"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2005        },
2006        highlevel::Success::Testext {        } => {
2007            let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
2008            lowlevel::Response::Success { name: String::from("TESTEXT"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2009        },
2010        highlevel::Success::Testextnod {        } => {
2011            let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
2012            lowlevel::Response::Success { name: String::from("TESTEXTNOD"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
2013        },
2014        highlevel::Success::Testi {
2015            field,
2016        } => {
2017            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2018            let field_string = i64::to_string(&field);
2019            let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
2020            raw_arguments.push(field_primitive);
2021            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2022            lowlevel::Response::Success { name: String::from("TESTI"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2023        },
2024        highlevel::Success::Testinod {
2025            field,
2026        } => {
2027            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2028            let field_string = i64::to_string(&field);
2029            let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
2030            raw_arguments.push(field_primitive);
2031            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2032            lowlevel::Response::Success { name: String::from("TESTINOD"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
2033        },
2034        highlevel::Success::Testic {
2035            field,
2036        } => {
2037            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2038            let field_string = i64::to_string(&field);
2039            let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
2040            raw_arguments.push(field_primitive);
2041            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2042            lowlevel::Response::Success { name: String::from("TESTIC"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2043        },
2044        highlevel::Success::Tests {
2045            field,
2046        } => {
2047            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2048            let field_string = field.clone();
2049            let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
2050            raw_arguments.push(field_primitive);
2051            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2052            lowlevel::Response::Success { name: String::from("TESTS"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2053        },
2054        highlevel::Success::Testsi {
2055            field1,
2056            field2,
2057        } => {
2058            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2059            let field1_string = field1.clone();
2060            let field1_primitive = lowlevel::Argument::PrimitiveArgument(field1_string);
2061            raw_arguments.push(field1_primitive);
2062            let field2_string = i64::to_string(&field2);
2063            let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_string);
2064            raw_arguments.push(field2_primitive);
2065            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2066            lowlevel::Response::Success { name: String::from("TESTSI"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2067        },
2068        highlevel::Success::Testsic {
2069            field1,
2070            field2,
2071        } => {
2072            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2073            let field1_string = field1.clone();
2074            let field1_primitive = lowlevel::Argument::PrimitiveArgument(field1_string);
2075            raw_arguments.push(field1_primitive);
2076            let field2_string = i64::to_string(&field2);
2077            let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_string);
2078            raw_arguments.push(field2_primitive);
2079            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2080            lowlevel::Response::Success { name: String::from("TESTSIC"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2081        },
2082        highlevel::Success::Testio {
2083            field1,
2084            field2,
2085        } => {
2086            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2087            let field1_string = i64::to_string(&field1);
2088            let field1_primitive = lowlevel::Argument::PrimitiveArgument(field1_string);
2089            raw_arguments.push(field1_primitive);
2090            match field2 {
2091            None => {}
2092            Some(field2_unwrapped) => {
2093                    let field2_unwrapped_string = i64::to_string(&field2_unwrapped);
2094                    let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_unwrapped_string);
2095                    raw_arguments.push(field2_primitive);
2096            }
2097            }
2098            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2099            lowlevel::Response::Success { name: String::from("TESTIO"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2100        },
2101        highlevel::Success::Testioo {
2102            field1,
2103            field2,
2104            field3,
2105        } => {
2106            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2107            let field1_string = i64::to_string(&field1);
2108            let field1_primitive = lowlevel::Argument::PrimitiveArgument(field1_string);
2109            raw_arguments.push(field1_primitive);
2110            match field2 {
2111            None => {}
2112            Some(field2_unwrapped) => {
2113                    let field2_unwrapped_string = i64::to_string(&field2_unwrapped);
2114                    let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_unwrapped_string);
2115                    raw_arguments.push(field2_primitive);
2116            }
2117            }
2118            match field3 {
2119            None => {}
2120            Some(field3_unwrapped) => {
2121                    let field3_unwrapped_string = field3_unwrapped.clone();
2122                    let field3_primitive = lowlevel::Argument::PrimitiveArgument(field3_unwrapped_string);
2123                    raw_arguments.push(field3_primitive);
2124            }
2125            }
2126            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2127            lowlevel::Response::Success { name: String::from("TESTIOO"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2128        },
2129        highlevel::Success::Testl {
2130            field,
2131        } => {
2132            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2133            for field_element in field.into_iter() {
2134                    let field_element_string = i64::to_string(&field_element);
2135                    let field_element_primitive = lowlevel::Argument::PrimitiveArgument(field_element_string);
2136                    raw_arguments.push(field_element_primitive);
2137            }   
2138            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2139            lowlevel::Response::Success { name: String::from("TESTL"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2140        },
2141        highlevel::Success::Testol {
2142            field,
2143        } => {
2144            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2145            for field_element in field.into_iter() {
2146                    match field_element {
2147                    None => {
2148                                raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
2149                        }
2150                    Some(field_element_unwrapped) => {
2151                            let field_element_unwrapped_string = i64::to_string(&field_element_unwrapped);
2152                            let field_element_primitive = lowlevel::Argument::PrimitiveArgument(field_element_unwrapped_string);
2153                            raw_arguments.push(field_element_primitive);
2154                    }
2155                    }
2156            }   
2157            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2158            lowlevel::Response::Success { name: String::from("TESTOL"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2159        },
2160        highlevel::Success::Testm {
2161            field,
2162        } => {
2163            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2164            for (field_typed_key, field_typed_value) in field {
2165                let field_primitive_key = i64::to_string(&field_typed_key);
2166                let field_primitive_value = field_typed_value.clone();
2167                let field_untyped_pair = lowlevel::Argument::KeyValueArgument { key: field_primitive_key, value: field_primitive_value };
2168                raw_arguments.push(field_untyped_pair);
2169            }   
2170            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2171            lowlevel::Response::Success { name: String::from("TESTM"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2172        },
2173        highlevel::Success::Testp {
2174            field,
2175        } => {
2176            let mut raw_arguments_outer = Vec::<Vec<lowlevel::Argument>>::new();
2177            let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
2178            let field_string = i64::to_string(&field);
2179            let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
2180            raw_arguments_inner.push(field_primitive);
2181            raw_arguments_outer.push(raw_arguments_inner);
2182            let arguments = lowlevel::Arguments::ParenthesisDelimitedArgumentLists(raw_arguments_outer);
2183            lowlevel::Response::Success { name: String::from("TESTP"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2184        },
2185        highlevel::Success::Testpp {
2186            field1,
2187            field2,
2188            field3,
2189        } => {
2190            let mut raw_arguments_outer = Vec::<Vec<lowlevel::Argument>>::new();
2191            let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
2192            let field1_string = i64::to_string(&field1);
2193            let field1_primitive = lowlevel::Argument::PrimitiveArgument(field1_string);
2194            raw_arguments_inner.push(field1_primitive);
2195            raw_arguments_outer.push(raw_arguments_inner);
2196            let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
2197            let field2_string = i64::to_string(&field2);
2198            let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_string);
2199            raw_arguments_inner.push(field2_primitive);
2200            let field3_string = field3.clone();
2201            let field3_primitive = lowlevel::Argument::PrimitiveArgument(field3_string);
2202            raw_arguments_inner.push(field3_primitive);
2203            raw_arguments_outer.push(raw_arguments_inner);
2204            let arguments = lowlevel::Arguments::ParenthesisDelimitedArgumentLists(raw_arguments_outer);
2205            lowlevel::Response::Success { name: String::from("TESTPP"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2206        },
2207        highlevel::Success::Testpmpil {
2208            field1,
2209            field2,
2210            field3,
2211        } => {
2212            let mut raw_arguments_outer = Vec::<Vec<lowlevel::Argument>>::new();
2213            let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
2214            for (field1_typed_key, field1_typed_value) in field1 {
2215                let field1_primitive_key = i64::to_string(&field1_typed_key);
2216                let field1_primitive_value = field1_typed_value.clone();
2217                let field1_untyped_pair = lowlevel::Argument::KeyValueArgument { key: field1_primitive_key, value: field1_primitive_value };
2218                raw_arguments_inner.push(field1_untyped_pair);
2219            }   
2220            raw_arguments_outer.push(raw_arguments_inner);
2221            let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
2222            let field2_string = i64::to_string(&field2);
2223            let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_string);
2224            raw_arguments_inner.push(field2_primitive);
2225            for field3_element in field3.into_iter() {
2226                    let field3_element_string = i64::to_string(&field3_element);
2227                    let field3_element_primitive = lowlevel::Argument::PrimitiveArgument(field3_element_string);
2228                    raw_arguments_inner.push(field3_element_primitive);
2229            }   
2230            raw_arguments_outer.push(raw_arguments_inner);
2231            let arguments = lowlevel::Arguments::ParenthesisDelimitedArgumentLists(raw_arguments_outer);
2232            lowlevel::Response::Success { name: String::from("TESTPMPIL"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2233        },
2234        highlevel::Success::SameOne {
2235            field,
2236        } => {
2237            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2238            let field_string = i64::to_string(&field);
2239            let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
2240            raw_arguments.push(field_primitive);
2241            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2242            lowlevel::Response::Success { name: String::from("SAME"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2243        },
2244        highlevel::Success::SameTwo {
2245            field,
2246        } => {
2247            let mut raw_arguments_outer = Vec::<Vec<lowlevel::Argument>>::new();
2248            let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
2249            let field_string = i64::to_string(&field);
2250            let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
2251            raw_arguments_inner.push(field_primitive);
2252            raw_arguments_outer.push(raw_arguments_inner);
2253            let arguments = lowlevel::Arguments::ParenthesisDelimitedArgumentLists(raw_arguments_outer);
2254            lowlevel::Response::Success { name: String::from("SAME"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2255        },
2256        highlevel::Success::Brsf {
2257            features,
2258        } => {
2259            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2260            let features_string = i64::to_string(&features);
2261            let features_primitive = lowlevel::Argument::PrimitiveArgument(features_string);
2262            raw_arguments.push(features_primitive);
2263            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2264            lowlevel::Response::Success { name: String::from("BRSF"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2265        },
2266        highlevel::Success::CindRead {
2267            ordered_values,
2268        } => {
2269            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2270            for ordered_values_element in ordered_values.into_iter() {
2271                    let ordered_values_element_string = i64::to_string(&ordered_values_element);
2272                    let ordered_values_element_primitive = lowlevel::Argument::PrimitiveArgument(ordered_values_element_string);
2273                    raw_arguments.push(ordered_values_element_primitive);
2274            }   
2275            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2276            lowlevel::Response::Success { name: String::from("CIND"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2277        },
2278        highlevel::Success::Clcc {
2279            index,
2280            direction,
2281            status,
2282            mode,
2283            multiparty,
2284            number,
2285            ty,
2286            alpha,
2287            priority,
2288        } => {
2289            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2290            let index_string = i64::to_string(&index);
2291            let index_primitive = lowlevel::Argument::PrimitiveArgument(index_string);
2292            raw_arguments.push(index_primitive);
2293            let direction_string = i64::to_string(&direction);
2294            let direction_primitive = lowlevel::Argument::PrimitiveArgument(direction_string);
2295            raw_arguments.push(direction_primitive);
2296            let status_string = i64::to_string(&status);
2297            let status_primitive = lowlevel::Argument::PrimitiveArgument(status_string);
2298            raw_arguments.push(status_primitive);
2299            let mode_string = i64::to_string(&mode);
2300            let mode_primitive = lowlevel::Argument::PrimitiveArgument(mode_string);
2301            raw_arguments.push(mode_primitive);
2302            let multiparty_string = i64::to_string(&multiparty);
2303            let multiparty_primitive = lowlevel::Argument::PrimitiveArgument(multiparty_string);
2304            raw_arguments.push(multiparty_primitive);
2305            match number {
2306            None => {}
2307            Some(number_unwrapped) => {
2308                    let number_unwrapped_string = number_unwrapped.clone();
2309                    let number_primitive = lowlevel::Argument::PrimitiveArgument(number_unwrapped_string);
2310                    raw_arguments.push(number_primitive);
2311            }
2312            }
2313            match ty {
2314            None => {}
2315            Some(ty_unwrapped) => {
2316                    let ty_unwrapped_string = i64::to_string(&ty_unwrapped);
2317                    let ty_primitive = lowlevel::Argument::PrimitiveArgument(ty_unwrapped_string);
2318                    raw_arguments.push(ty_primitive);
2319            }
2320            }
2321            match alpha {
2322            None => {}
2323            Some(alpha_unwrapped) => {
2324                    let alpha_unwrapped_string = alpha_unwrapped.clone();
2325                    let alpha_primitive = lowlevel::Argument::PrimitiveArgument(alpha_unwrapped_string);
2326                    raw_arguments.push(alpha_primitive);
2327            }
2328            }
2329            match priority {
2330            None => {}
2331            Some(priority_unwrapped) => {
2332                    let priority_unwrapped_string = i64::to_string(&priority_unwrapped);
2333                    let priority_primitive = lowlevel::Argument::PrimitiveArgument(priority_unwrapped_string);
2334                    raw_arguments.push(priority_primitive);
2335            }
2336            }
2337            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2338            lowlevel::Response::Success { name: String::from("CLCC"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2339        },
2340        highlevel::Success::Bcs {
2341            codec,
2342        } => {
2343            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2344            let codec_string = i64::to_string(&codec);
2345            let codec_primitive = lowlevel::Argument::PrimitiveArgument(codec_string);
2346            raw_arguments.push(codec_primitive);
2347            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2348            lowlevel::Response::Success { name: String::from("BCS"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2349        },
2350        highlevel::Success::BindList {
2351            indicators,
2352        } => {
2353            let mut raw_arguments_outer = Vec::<Vec<lowlevel::Argument>>::new();
2354            let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
2355            for indicators_element in indicators.into_iter() {
2356                    let indicators_element_string_int = *indicators_element as i64;
2357                    let indicators_element_string = i64::to_string(&indicators_element_string_int);
2358                    let indicators_element_primitive = lowlevel::Argument::PrimitiveArgument(indicators_element_string);
2359                    raw_arguments_inner.push(indicators_element_primitive);
2360            }   
2361            raw_arguments_outer.push(raw_arguments_inner);
2362            let arguments = lowlevel::Arguments::ParenthesisDelimitedArgumentLists(raw_arguments_outer);
2363            lowlevel::Response::Success { name: String::from("BIND"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2364        },
2365        highlevel::Success::BindStatus {
2366            anum,
2367            state,
2368        } => {
2369            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2370            let anum_string_int = *anum as i64;
2371            let anum_string = i64::to_string(&anum_string_int);
2372            let anum_primitive = lowlevel::Argument::PrimitiveArgument(anum_string);
2373            raw_arguments.push(anum_primitive);
2374            let state_string_int = if *state { 1 } else { 0 };
2375            let state_string = i64::to_string(&state_string_int);
2376            let state_primitive = lowlevel::Argument::PrimitiveArgument(state_string);
2377            raw_arguments.push(state_primitive);
2378            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2379            lowlevel::Response::Success { name: String::from("BIND"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2380        },
2381        highlevel::Success::Chld {
2382            commands,
2383        } => {
2384            let mut raw_arguments_outer = Vec::<Vec<lowlevel::Argument>>::new();
2385            let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
2386            for commands_element in commands.into_iter() {
2387                    let commands_element_string = commands_element.clone();
2388                    let commands_element_primitive = lowlevel::Argument::PrimitiveArgument(commands_element_string);
2389                    raw_arguments_inner.push(commands_element_primitive);
2390            }   
2391            raw_arguments_outer.push(raw_arguments_inner);
2392            let arguments = lowlevel::Arguments::ParenthesisDelimitedArgumentLists(raw_arguments_outer);
2393            lowlevel::Response::Success { name: String::from("CHLD"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2394        },
2395        highlevel::Success::Cops {
2396            format,
2397            zero,
2398            operator,
2399        } => {
2400            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2401            let format_string_int = *format as i64;
2402            let format_string = i64::to_string(&format_string_int);
2403            let format_primitive = lowlevel::Argument::PrimitiveArgument(format_string);
2404            raw_arguments.push(format_primitive);
2405            let zero_string = i64::to_string(&zero);
2406            let zero_primitive = lowlevel::Argument::PrimitiveArgument(zero_string);
2407            raw_arguments.push(zero_primitive);
2408            let operator_string = operator.clone();
2409            let operator_primitive = lowlevel::Argument::PrimitiveArgument(operator_string);
2410            raw_arguments.push(operator_primitive);
2411            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2412            lowlevel::Response::Success { name: String::from("COPS"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2413        },
2414        highlevel::Success::Clip {
2415            number,
2416            ty,
2417        } => {
2418            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2419            let number_string = number.clone();
2420            let number_primitive = lowlevel::Argument::PrimitiveArgument(number_string);
2421            raw_arguments.push(number_primitive);
2422            let ty_string = i64::to_string(&ty);
2423            let ty_primitive = lowlevel::Argument::PrimitiveArgument(ty_string);
2424            raw_arguments.push(ty_primitive);
2425            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2426            lowlevel::Response::Success { name: String::from("CLIP"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2427        },
2428        highlevel::Success::Cnum {
2429            alpha,
2430            number,
2431            ty,
2432            speed,
2433            service,
2434        } => {
2435            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2436            let alpha_string = alpha.clone();
2437            let alpha_primitive = lowlevel::Argument::PrimitiveArgument(alpha_string);
2438            raw_arguments.push(alpha_primitive);
2439            let number_string = number.clone();
2440            let number_primitive = lowlevel::Argument::PrimitiveArgument(number_string);
2441            raw_arguments.push(number_primitive);
2442            let ty_string = i64::to_string(&ty);
2443            let ty_primitive = lowlevel::Argument::PrimitiveArgument(ty_string);
2444            raw_arguments.push(ty_primitive);
2445            let speed_string = speed.clone();
2446            let speed_primitive = lowlevel::Argument::PrimitiveArgument(speed_string);
2447            raw_arguments.push(speed_primitive);
2448            let service_string = i64::to_string(&service);
2449            let service_primitive = lowlevel::Argument::PrimitiveArgument(service_string);
2450            raw_arguments.push(service_primitive);
2451            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2452            lowlevel::Response::Success { name: String::from("CNUM"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2453        },
2454        highlevel::Success::Vgs {
2455            level,
2456        } => {
2457            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2458            let level_string = i64::to_string(&level);
2459            let level_primitive = lowlevel::Argument::PrimitiveArgument(level_string);
2460            raw_arguments.push(level_primitive);
2461            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2462            lowlevel::Response::Success { name: String::from("VGS"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2463        },
2464        highlevel::Success::Vgm {
2465            level,
2466        } => {
2467            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2468            let level_string = i64::to_string(&level);
2469            let level_primitive = lowlevel::Argument::PrimitiveArgument(level_string);
2470            raw_arguments.push(level_primitive);
2471            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2472            lowlevel::Response::Success { name: String::from("VGM"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2473        },
2474        highlevel::Success::Ciev {
2475            ind,
2476            value,
2477        } => {
2478            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2479            let ind_string = i64::to_string(&ind);
2480            let ind_primitive = lowlevel::Argument::PrimitiveArgument(ind_string);
2481            raw_arguments.push(ind_primitive);
2482            let value_string = i64::to_string(&value);
2483            let value_primitive = lowlevel::Argument::PrimitiveArgument(value_string);
2484            raw_arguments.push(value_primitive);
2485            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2486            lowlevel::Response::Success { name: String::from("CIEV"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2487        },
2488        highlevel::Success::Ccwa {
2489            number,
2490            ty,
2491        } => {
2492            let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2493            let number_string = number.clone();
2494            let number_primitive = lowlevel::Argument::PrimitiveArgument(number_string);
2495            raw_arguments.push(number_primitive);
2496            let ty_string = i64::to_string(&ty);
2497            let ty_primitive = lowlevel::Argument::PrimitiveArgument(ty_string);
2498            raw_arguments.push(ty_primitive);
2499            let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2500            lowlevel::Response::Success { name: String::from("CCWA"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2501        },
2502        highlevel::Success::Ring {        } => {
2503            let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
2504            lowlevel::Response::Success { name: String::from("RING"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
2505        },
2506    }
2507}
2508