xsd_parser/models/schema/
xs_generated.rs

1use crate::models::schema::{MaxOccurs, QName};
2use core::ops::Deref;
3use xsd_parser_types::{
4    misc::Namespace,
5    quick_xml::{
6        DeserializeBytes, DeserializeHelper, Error, ErrorKind, RawByteStr, ValidateError,
7        WithDeserializer,
8    },
9    xml::AnyElement,
10};
11pub const NS_XS: Namespace = Namespace::new_const(b"http://www.w3.org/2001/XMLSchema");
12pub const NS_XML: Namespace = Namespace::new_const(b"http://www.w3.org/XML/1998/namespace");
13#[derive(Clone, Debug, Eq, PartialEq)]
14pub struct Schema {
15    pub target_namespace: Option<String>,
16    pub version: Option<String>,
17    pub final_default: FullDerivationSetType,
18    pub block_default: BlockSetType,
19    pub attribute_form_default: FormChoiceType,
20    pub element_form_default: FormChoiceType,
21    pub default_attributes: Option<QName>,
22    pub xpath_default_namespace: XpathDefaultNamespaceType,
23    pub id: Option<String>,
24    pub lang: Option<String>,
25    pub content: Vec<SchemaContent>,
26}
27#[derive(Clone, Debug, Eq, PartialEq)]
28pub enum SchemaContent {
29    Include(Include),
30    Import(Import),
31    Redefine(Redefine),
32    Override(Override),
33    Annotation(Annotation),
34    DefaultOpenContent(DefaultOpenContent),
35    SimpleType(SimpleBaseType),
36    ComplexType(ComplexBaseType),
37    Group(GroupType),
38    AttributeGroup(AttributeGroupType),
39    Element(ElementType),
40    Attribute(AttributeType),
41    Notation(Notation),
42}
43impl Schema {
44    #[must_use]
45    pub fn default_final_default() -> FullDerivationSetType {
46        FullDerivationSetType::TypeDerivationControlList(TypeDerivationControlList(Vec::new()))
47    }
48    #[must_use]
49    pub fn default_block_default() -> BlockSetType {
50        BlockSetType::BlockSetItemList(BlockSetItemList(Vec::new()))
51    }
52    #[must_use]
53    pub fn default_attribute_form_default() -> FormChoiceType {
54        FormChoiceType::Unqualified
55    }
56    #[must_use]
57    pub fn default_element_form_default() -> FormChoiceType {
58        FormChoiceType::Unqualified
59    }
60    #[must_use]
61    pub fn default_xpath_default_namespace() -> XpathDefaultNamespaceType {
62        XpathDefaultNamespaceType::String(String::from("##local"))
63    }
64}
65impl WithDeserializer for Schema {
66    type Deserializer = Box<quick_xml_deserialize::SchemaDeserializer>;
67}
68impl WithDeserializer for SchemaContent {
69    type Deserializer = Box<quick_xml_deserialize::SchemaContentDeserializer>;
70}
71#[derive(Clone, Debug, Eq, PartialEq)]
72pub enum FullDerivationSetType {
73    All,
74    TypeDerivationControlList(TypeDerivationControlList),
75}
76impl DeserializeBytes for FullDerivationSetType {
77    fn deserialize_bytes(helper: &mut DeserializeHelper, bytes: &[u8]) -> Result<Self, Error> {
78        match bytes {
79            b"#all" => Ok(Self::All),
80            x => Ok(Self::TypeDerivationControlList(
81                TypeDerivationControlList::deserialize_bytes(helper, x)?,
82            )),
83        }
84    }
85}
86#[derive(Clone, Debug, Default, Eq, PartialEq)]
87pub struct TypeDerivationControlList(pub Vec<TypeDerivationControlType>);
88impl DeserializeBytes for TypeDerivationControlList {
89    fn deserialize_bytes(helper: &mut DeserializeHelper, bytes: &[u8]) -> Result<Self, Error> {
90        Ok(Self(
91            bytes
92                .split(|b| *b == b' ' || *b == b'|' || *b == b',' || *b == b';')
93                .map(|bytes| TypeDerivationControlType::deserialize_bytes(helper, bytes))
94                .collect::<Result<Vec<_>, _>>()?,
95        ))
96    }
97}
98#[derive(Clone, Debug, Eq, PartialEq)]
99pub enum BlockSetType {
100    All,
101    BlockSetItemList(BlockSetItemList),
102}
103impl DeserializeBytes for BlockSetType {
104    fn deserialize_bytes(helper: &mut DeserializeHelper, bytes: &[u8]) -> Result<Self, Error> {
105        match bytes {
106            b"#all" => Ok(Self::All),
107            x => Ok(Self::BlockSetItemList(BlockSetItemList::deserialize_bytes(
108                helper, x,
109            )?)),
110        }
111    }
112}
113#[derive(Clone, Debug, Default, Eq, PartialEq)]
114pub struct BlockSetItemList(pub Vec<BlockSetItemType>);
115impl DeserializeBytes for BlockSetItemList {
116    fn deserialize_bytes(helper: &mut DeserializeHelper, bytes: &[u8]) -> Result<Self, Error> {
117        Ok(Self(
118            bytes
119                .split(|b| *b == b' ' || *b == b'|' || *b == b',' || *b == b';')
120                .map(|bytes| BlockSetItemType::deserialize_bytes(helper, bytes))
121                .collect::<Result<Vec<_>, _>>()?,
122        ))
123    }
124}
125#[derive(Clone, Debug, Eq, PartialEq)]
126pub enum FormChoiceType {
127    Qualified,
128    Unqualified,
129}
130impl DeserializeBytes for FormChoiceType {
131    fn deserialize_bytes(helper: &mut DeserializeHelper, bytes: &[u8]) -> Result<Self, Error> {
132        match bytes {
133            b"qualified" => Ok(Self::Qualified),
134            b"unqualified" => Ok(Self::Unqualified),
135            x => Err(Error::from(ErrorKind::UnknownOrInvalidValue(
136                RawByteStr::from_slice(x),
137            ))),
138        }
139    }
140}
141#[derive(Clone, Debug, Eq, PartialEq)]
142pub enum XpathDefaultNamespaceType {
143    String(String),
144    DefaultNamespace,
145    TargetNamespace,
146    Local,
147}
148impl DeserializeBytes for XpathDefaultNamespaceType {
149    fn deserialize_bytes(helper: &mut DeserializeHelper, bytes: &[u8]) -> Result<Self, Error> {
150        match bytes {
151            b"##defaultNamespace" => Ok(Self::DefaultNamespace),
152            b"##targetNamespace" => Ok(Self::TargetNamespace),
153            b"##local" => Ok(Self::Local),
154            x => Ok(Self::String(String::deserialize_bytes(helper, x)?)),
155        }
156    }
157}
158#[derive(Clone, Debug, Eq, PartialEq)]
159pub struct Include {
160    pub id: Option<String>,
161    pub schema_location: String,
162    pub annotation: Option<Annotation>,
163}
164impl WithDeserializer for Include {
165    type Deserializer = Box<quick_xml_deserialize::IncludeDeserializer>;
166}
167#[derive(Clone, Debug, Eq, PartialEq)]
168pub struct Import {
169    pub id: Option<String>,
170    pub namespace: Option<String>,
171    pub schema_location: Option<String>,
172    pub annotation: Option<Annotation>,
173}
174impl WithDeserializer for Import {
175    type Deserializer = Box<quick_xml_deserialize::ImportDeserializer>;
176}
177#[derive(Clone, Debug, Eq, PartialEq)]
178pub struct Redefine {
179    pub schema_location: String,
180    pub id: Option<String>,
181    pub content: Vec<RedefineContent>,
182}
183#[derive(Clone, Debug, Eq, PartialEq)]
184pub enum RedefineContent {
185    Annotation(Annotation),
186    SimpleType(SimpleBaseType),
187    ComplexType(ComplexBaseType),
188    Group(GroupType),
189    AttributeGroup(AttributeGroupType),
190}
191impl WithDeserializer for Redefine {
192    type Deserializer = Box<quick_xml_deserialize::RedefineDeserializer>;
193}
194impl WithDeserializer for RedefineContent {
195    type Deserializer = Box<quick_xml_deserialize::RedefineContentDeserializer>;
196}
197#[derive(Clone, Debug, Eq, PartialEq)]
198pub struct Override {
199    pub schema_location: String,
200    pub id: Option<String>,
201    pub content: Vec<OverrideContent>,
202}
203#[derive(Clone, Debug, Eq, PartialEq)]
204pub enum OverrideContent {
205    Annotation(Annotation),
206    SimpleType(SimpleBaseType),
207    ComplexType(ComplexBaseType),
208    Group(GroupType),
209    AttributeGroup(AttributeGroupType),
210    Element(ElementType),
211    Attribute(AttributeType),
212    Notation(Notation),
213}
214impl WithDeserializer for Override {
215    type Deserializer = Box<quick_xml_deserialize::OverrideDeserializer>;
216}
217impl WithDeserializer for OverrideContent {
218    type Deserializer = Box<quick_xml_deserialize::OverrideContentDeserializer>;
219}
220#[derive(Clone, Debug, Eq, PartialEq)]
221pub struct Annotation {
222    pub id: Option<String>,
223    pub content: Vec<AnnotationContent>,
224}
225#[derive(Clone, Debug, Eq, PartialEq)]
226pub enum AnnotationContent {
227    Appinfo(AnyElement),
228    Documentation(AnyElement),
229}
230impl WithDeserializer for Annotation {
231    type Deserializer = Box<quick_xml_deserialize::AnnotationDeserializer>;
232}
233impl WithDeserializer for AnnotationContent {
234    type Deserializer = Box<quick_xml_deserialize::AnnotationContentDeserializer>;
235}
236#[derive(Clone, Debug, Eq, PartialEq)]
237pub struct DefaultOpenContent {
238    pub id: Option<String>,
239    pub applies_to_empty: bool,
240    pub mode: DefaultOpenContentModeType,
241    pub annotation: Option<Annotation>,
242    pub any: WildcardType,
243}
244impl DefaultOpenContent {
245    #[must_use]
246    pub fn default_applies_to_empty() -> bool {
247        false
248    }
249    #[must_use]
250    pub fn default_mode() -> DefaultOpenContentModeType {
251        DefaultOpenContentModeType::Interleave
252    }
253}
254impl WithDeserializer for DefaultOpenContent {
255    type Deserializer = Box<quick_xml_deserialize::DefaultOpenContentDeserializer>;
256}
257#[derive(Clone, Debug, Eq, PartialEq)]
258pub struct SimpleBaseType {
259    pub id: Option<String>,
260    pub final_: Option<SimpleDerivationSetType>,
261    pub name: Option<String>,
262    pub content: Vec<SimpleBaseTypeContent>,
263}
264#[derive(Clone, Debug, Eq, PartialEq)]
265pub enum SimpleBaseTypeContent {
266    Annotation(Annotation),
267    Restriction(Restriction),
268    List(List),
269    Union(Union),
270}
271impl WithDeserializer for SimpleBaseType {
272    type Deserializer = Box<quick_xml_deserialize::SimpleBaseTypeDeserializer>;
273}
274impl WithDeserializer for SimpleBaseTypeContent {
275    type Deserializer = Box<quick_xml_deserialize::SimpleBaseTypeContentDeserializer>;
276}
277#[derive(Clone, Debug, Eq, PartialEq)]
278pub struct ComplexBaseType {
279    pub id: Option<String>,
280    pub name: Option<String>,
281    pub mixed: Option<bool>,
282    pub abstract_: bool,
283    pub final_: Option<DerivationSetType>,
284    pub block: Option<DerivationSetType>,
285    pub default_attributes_apply: bool,
286    pub content: Vec<ComplexBaseTypeContent>,
287}
288#[derive(Clone, Debug, Eq, PartialEq)]
289pub enum ComplexBaseTypeContent {
290    Annotation(Annotation),
291    SimpleContent(SimpleContent),
292    ComplexContent(ComplexContent),
293    OpenContent(OpenContent),
294    Group(GroupType),
295    All(GroupType),
296    Choice(GroupType),
297    Sequence(GroupType),
298    Attribute(AttributeType),
299    AttributeGroup(AttributeGroupType),
300    AnyAttribute(AnyAttribute),
301    Assert(AssertionType),
302}
303impl ComplexBaseType {
304    #[must_use]
305    pub fn default_abstract_() -> bool {
306        false
307    }
308    #[must_use]
309    pub fn default_default_attributes_apply() -> bool {
310        true
311    }
312}
313impl WithDeserializer for ComplexBaseType {
314    type Deserializer = Box<quick_xml_deserialize::ComplexBaseTypeDeserializer>;
315}
316impl WithDeserializer for ComplexBaseTypeContent {
317    type Deserializer = Box<quick_xml_deserialize::ComplexBaseTypeContentDeserializer>;
318}
319#[derive(Clone, Debug, Eq, PartialEq)]
320pub struct GroupType {
321    pub id: Option<String>,
322    pub name: Option<String>,
323    pub ref_: Option<QName>,
324    pub min_occurs: usize,
325    pub max_occurs: MaxOccurs,
326    pub content: Vec<GroupTypeContent>,
327}
328#[derive(Clone, Debug, Eq, PartialEq)]
329pub enum GroupTypeContent {
330    Annotation(Annotation),
331    Element(ElementType),
332    Group(GroupType),
333    All(GroupType),
334    Choice(GroupType),
335    Sequence(GroupType),
336    Any(Any),
337}
338impl GroupType {
339    #[must_use]
340    pub fn default_min_occurs() -> usize {
341        1usize
342    }
343    #[must_use]
344    pub fn default_max_occurs() -> MaxOccurs {
345        MaxOccurs::Bounded(1usize)
346    }
347}
348impl WithDeserializer for GroupType {
349    type Deserializer = Box<quick_xml_deserialize::GroupTypeDeserializer>;
350}
351impl WithDeserializer for GroupTypeContent {
352    type Deserializer = Box<quick_xml_deserialize::GroupTypeContentDeserializer>;
353}
354#[derive(Clone, Debug, Eq, PartialEq)]
355pub struct AttributeGroupType {
356    pub id: Option<String>,
357    pub name: Option<String>,
358    pub ref_: Option<QName>,
359    pub content: Vec<AttributeGroupTypeContent>,
360}
361#[derive(Clone, Debug, Eq, PartialEq)]
362pub enum AttributeGroupTypeContent {
363    Annotation(Annotation),
364    Attribute(AttributeType),
365    AttributeGroup(AttributeGroupType),
366    AnyAttribute(AnyAttribute),
367}
368impl WithDeserializer for AttributeGroupType {
369    type Deserializer = Box<quick_xml_deserialize::AttributeGroupTypeDeserializer>;
370}
371impl WithDeserializer for AttributeGroupTypeContent {
372    type Deserializer = Box<quick_xml_deserialize::AttributeGroupTypeContentDeserializer>;
373}
374#[derive(Clone, Debug, Eq, PartialEq)]
375pub struct ElementType {
376    pub id: Option<String>,
377    pub name: Option<String>,
378    pub ref_: Option<QName>,
379    pub type_: Option<QName>,
380    pub substitution_group: Option<QNameList>,
381    pub min_occurs: usize,
382    pub max_occurs: MaxOccurs,
383    pub default: Option<String>,
384    pub fixed: Option<String>,
385    pub nillable: Option<bool>,
386    pub abstract_: bool,
387    pub final_: Option<DerivationSetType>,
388    pub block: Option<BlockSetType>,
389    pub form: Option<FormChoiceType>,
390    pub target_namespace: Option<String>,
391    pub content: Vec<ElementTypeContent>,
392}
393#[derive(Clone, Debug, Eq, PartialEq)]
394pub enum ElementTypeContent {
395    Annotation(Annotation),
396    SimpleType(SimpleBaseType),
397    ComplexType(ComplexBaseType),
398    Alternative(AltType),
399    Unique(KeybaseType),
400    Key(KeybaseType),
401    Keyref(Keyref),
402}
403impl ElementType {
404    #[must_use]
405    pub fn default_min_occurs() -> usize {
406        1usize
407    }
408    #[must_use]
409    pub fn default_max_occurs() -> MaxOccurs {
410        MaxOccurs::Bounded(1usize)
411    }
412    #[must_use]
413    pub fn default_abstract_() -> bool {
414        false
415    }
416}
417impl WithDeserializer for ElementType {
418    type Deserializer = Box<quick_xml_deserialize::ElementTypeDeserializer>;
419}
420impl WithDeserializer for ElementTypeContent {
421    type Deserializer = Box<quick_xml_deserialize::ElementTypeContentDeserializer>;
422}
423#[derive(Clone, Debug, Eq, PartialEq)]
424pub struct AttributeType {
425    pub id: Option<String>,
426    pub name: Option<String>,
427    pub ref_: Option<QName>,
428    pub type_: Option<QName>,
429    pub use_: AttributeUseType,
430    pub default: Option<String>,
431    pub fixed: Option<String>,
432    pub form: Option<FormChoiceType>,
433    pub target_namespace: Option<String>,
434    pub inheritable: Option<bool>,
435    pub annotation: Option<Annotation>,
436    pub simple_type: Option<SimpleBaseType>,
437}
438impl AttributeType {
439    #[must_use]
440    pub fn default_use_() -> AttributeUseType {
441        AttributeUseType::Optional
442    }
443}
444impl WithDeserializer for AttributeType {
445    type Deserializer = Box<quick_xml_deserialize::AttributeTypeDeserializer>;
446}
447#[derive(Clone, Debug, Eq, PartialEq)]
448pub struct Notation {
449    pub id: Option<String>,
450    pub name: String,
451    pub public: Option<String>,
452    pub system: Option<String>,
453    pub annotation: Option<Annotation>,
454}
455impl WithDeserializer for Notation {
456    type Deserializer = Box<quick_xml_deserialize::NotationDeserializer>;
457}
458#[derive(Clone, Debug, Eq, PartialEq)]
459pub enum TypeDerivationControlType {
460    Extension,
461    Restriction,
462    List,
463    Union,
464}
465impl DeserializeBytes for TypeDerivationControlType {
466    fn deserialize_bytes(helper: &mut DeserializeHelper, bytes: &[u8]) -> Result<Self, Error> {
467        match bytes {
468            b"extension" => Ok(Self::Extension),
469            b"restriction" => Ok(Self::Restriction),
470            b"list" => Ok(Self::List),
471            b"union" => Ok(Self::Union),
472            x => Err(Error::from(ErrorKind::UnknownOrInvalidValue(
473                RawByteStr::from_slice(x),
474            ))),
475        }
476    }
477}
478#[derive(Clone, Debug, Eq, PartialEq)]
479pub enum BlockSetItemType {
480    Extension,
481    Restriction,
482    Substitution,
483}
484impl DeserializeBytes for BlockSetItemType {
485    fn deserialize_bytes(helper: &mut DeserializeHelper, bytes: &[u8]) -> Result<Self, Error> {
486        match bytes {
487            b"extension" => Ok(Self::Extension),
488            b"restriction" => Ok(Self::Restriction),
489            b"substitution" => Ok(Self::Substitution),
490            x => Err(Error::from(ErrorKind::UnknownOrInvalidValue(
491                RawByteStr::from_slice(x),
492            ))),
493        }
494    }
495}
496#[derive(Clone, Debug, Eq, PartialEq)]
497pub enum DefaultOpenContentModeType {
498    Interleave,
499    Suffix,
500}
501impl DeserializeBytes for DefaultOpenContentModeType {
502    fn deserialize_bytes(helper: &mut DeserializeHelper, bytes: &[u8]) -> Result<Self, Error> {
503        match bytes {
504            b"interleave" => Ok(Self::Interleave),
505            b"suffix" => Ok(Self::Suffix),
506            x => Err(Error::from(ErrorKind::UnknownOrInvalidValue(
507                RawByteStr::from_slice(x),
508            ))),
509        }
510    }
511}
512#[derive(Clone, Debug, Eq, PartialEq)]
513pub struct WildcardType {
514    pub id: Option<String>,
515    pub namespace: Option<NamespaceListType>,
516    pub not_namespace: Option<NotNamespaceType>,
517    pub process_contents: ProcessContentsType,
518    pub annotation: Option<Annotation>,
519}
520impl WildcardType {
521    #[must_use]
522    pub fn default_process_contents() -> ProcessContentsType {
523        ProcessContentsType::Strict
524    }
525}
526impl WithDeserializer for WildcardType {
527    type Deserializer = Box<quick_xml_deserialize::WildcardTypeDeserializer>;
528}
529#[derive(Clone, Debug, Eq, PartialEq)]
530pub enum SimpleDerivationSetType {
531    All,
532    SimpleDerivationSetItemList(SimpleDerivationSetItemList),
533}
534impl DeserializeBytes for SimpleDerivationSetType {
535    fn deserialize_bytes(helper: &mut DeserializeHelper, bytes: &[u8]) -> Result<Self, Error> {
536        match bytes {
537            b"#all" => Ok(Self::All),
538            x => Ok(Self::SimpleDerivationSetItemList(
539                SimpleDerivationSetItemList::deserialize_bytes(helper, x)?,
540            )),
541        }
542    }
543}
544#[derive(Clone, Debug, Eq, PartialEq)]
545pub struct Restriction {
546    pub id: Option<String>,
547    pub base: Option<QName>,
548    pub content: Vec<RestrictionContent>,
549}
550#[derive(Clone, Debug, Eq, PartialEq)]
551pub enum RestrictionContent {
552    Annotation(Annotation),
553    SimpleType(SimpleBaseType),
554    Facet(Facet),
555}
556impl WithDeserializer for Restriction {
557    type Deserializer = Box<quick_xml_deserialize::RestrictionDeserializer>;
558}
559impl WithDeserializer for RestrictionContent {
560    type Deserializer = Box<quick_xml_deserialize::RestrictionContentDeserializer>;
561}
562#[derive(Clone, Debug, Eq, PartialEq)]
563pub struct List {
564    pub id: Option<String>,
565    pub item_type: Option<QName>,
566    pub annotation: Option<Annotation>,
567    pub simple_type: Option<Box<SimpleBaseType>>,
568}
569impl WithDeserializer for List {
570    type Deserializer = Box<quick_xml_deserialize::ListDeserializer>;
571}
572#[derive(Clone, Debug, Eq, PartialEq)]
573pub struct Union {
574    pub id: Option<String>,
575    pub member_types: Option<QNameList>,
576    pub annotation: Option<Annotation>,
577    pub simple_type: Vec<SimpleBaseType>,
578}
579impl WithDeserializer for Union {
580    type Deserializer = Box<quick_xml_deserialize::UnionDeserializer>;
581}
582#[derive(Clone, Debug, Eq, PartialEq)]
583pub enum DerivationSetType {
584    All,
585    ReducedDerivationControlList(ReducedDerivationControlList),
586}
587impl DeserializeBytes for DerivationSetType {
588    fn deserialize_bytes(helper: &mut DeserializeHelper, bytes: &[u8]) -> Result<Self, Error> {
589        match bytes {
590            b"#all" => Ok(Self::All),
591            x => Ok(Self::ReducedDerivationControlList(
592                ReducedDerivationControlList::deserialize_bytes(helper, x)?,
593            )),
594        }
595    }
596}
597#[derive(Clone, Debug, Eq, PartialEq)]
598pub struct SimpleContent {
599    pub id: Option<String>,
600    pub content: Vec<SimpleContentContent>,
601}
602#[derive(Clone, Debug, Eq, PartialEq)]
603pub enum SimpleContentContent {
604    Annotation(Annotation),
605    Restriction(RestrictionType),
606    Extension(ExtensionType),
607}
608impl WithDeserializer for SimpleContent {
609    type Deserializer = Box<quick_xml_deserialize::SimpleContentDeserializer>;
610}
611impl WithDeserializer for SimpleContentContent {
612    type Deserializer = Box<quick_xml_deserialize::SimpleContentContentDeserializer>;
613}
614#[derive(Clone, Debug, Eq, PartialEq)]
615pub struct ComplexContent {
616    pub id: Option<String>,
617    pub mixed: Option<bool>,
618    pub content: Vec<ComplexContentContent>,
619}
620#[derive(Clone, Debug, Eq, PartialEq)]
621pub enum ComplexContentContent {
622    Annotation(Annotation),
623    Restriction(RestrictionType),
624    Extension(ExtensionType),
625}
626impl WithDeserializer for ComplexContent {
627    type Deserializer = Box<quick_xml_deserialize::ComplexContentDeserializer>;
628}
629impl WithDeserializer for ComplexContentContent {
630    type Deserializer = Box<quick_xml_deserialize::ComplexContentContentDeserializer>;
631}
632#[derive(Clone, Debug, Eq, PartialEq)]
633pub struct OpenContent {
634    pub id: Option<String>,
635    pub mode: OpenContentModeType,
636    pub annotation: Option<Annotation>,
637    pub any: Option<WildcardType>,
638}
639impl OpenContent {
640    #[must_use]
641    pub fn default_mode() -> OpenContentModeType {
642        OpenContentModeType::Interleave
643    }
644}
645impl WithDeserializer for OpenContent {
646    type Deserializer = Box<quick_xml_deserialize::OpenContentDeserializer>;
647}
648#[derive(Clone, Debug, Eq, PartialEq)]
649pub struct AnyAttribute {
650    pub id: Option<String>,
651    pub namespace: Option<NamespaceListType>,
652    pub not_namespace: Option<NotNamespaceType>,
653    pub process_contents: ProcessContentsType,
654    pub not_q_name: Option<QnameListAType>,
655    pub annotation: Option<Annotation>,
656}
657impl AnyAttribute {
658    #[must_use]
659    pub fn default_process_contents() -> ProcessContentsType {
660        ProcessContentsType::Strict
661    }
662}
663impl WithDeserializer for AnyAttribute {
664    type Deserializer = Box<quick_xml_deserialize::AnyAttributeDeserializer>;
665}
666#[derive(Clone, Debug, Eq, PartialEq)]
667pub struct AssertionType {
668    pub id: Option<String>,
669    pub test: Option<String>,
670    pub xpath_default_namespace: Option<XpathDefaultNamespaceType>,
671    pub annotation: Option<Annotation>,
672}
673impl WithDeserializer for AssertionType {
674    type Deserializer = Box<quick_xml_deserialize::AssertionTypeDeserializer>;
675}
676#[derive(Clone, Debug, Eq, PartialEq)]
677pub struct Any {
678    pub id: Option<String>,
679    pub namespace: Option<NamespaceListType>,
680    pub not_namespace: Option<NotNamespaceType>,
681    pub process_contents: ProcessContentsType,
682    pub not_q_name: Option<QnameListType>,
683    pub min_occurs: usize,
684    pub max_occurs: MaxOccurs,
685    pub annotation: Option<Annotation>,
686}
687impl Any {
688    #[must_use]
689    pub fn default_process_contents() -> ProcessContentsType {
690        ProcessContentsType::Strict
691    }
692    #[must_use]
693    pub fn default_min_occurs() -> usize {
694        1usize
695    }
696    #[must_use]
697    pub fn default_max_occurs() -> MaxOccurs {
698        MaxOccurs::Bounded(1usize)
699    }
700}
701impl WithDeserializer for Any {
702    type Deserializer = Box<quick_xml_deserialize::AnyDeserializer>;
703}
704#[derive(Clone, Debug, Default, Eq, PartialEq)]
705pub struct QNameList(pub Vec<QName>);
706impl DeserializeBytes for QNameList {
707    fn deserialize_bytes(helper: &mut DeserializeHelper, bytes: &[u8]) -> Result<Self, Error> {
708        Ok(Self(
709            bytes
710                .split(|b| *b == b' ' || *b == b'|' || *b == b',' || *b == b';')
711                .map(|bytes| QName::deserialize_bytes(helper, bytes))
712                .collect::<Result<Vec<_>, _>>()?,
713        ))
714    }
715}
716#[derive(Clone, Debug, Eq, PartialEq)]
717pub struct AltType {
718    pub id: Option<String>,
719    pub test: Option<String>,
720    pub type_: Option<QName>,
721    pub xpath_default_namespace: Option<XpathDefaultNamespaceType>,
722    pub content: Vec<AltTypeContent>,
723}
724#[derive(Clone, Debug, Eq, PartialEq)]
725pub enum AltTypeContent {
726    Annotation(Annotation),
727    SimpleType(SimpleBaseType),
728    ComplexType(ComplexBaseType),
729}
730impl WithDeserializer for AltType {
731    type Deserializer = Box<quick_xml_deserialize::AltTypeDeserializer>;
732}
733impl WithDeserializer for AltTypeContent {
734    type Deserializer = Box<quick_xml_deserialize::AltTypeContentDeserializer>;
735}
736#[derive(Clone, Debug, Eq, PartialEq)]
737pub struct KeybaseType {
738    pub id: Option<String>,
739    pub name: Option<String>,
740    pub ref_: Option<QName>,
741    pub content: Option<KeybaseTypeContent>,
742}
743#[derive(Clone, Debug, Eq, PartialEq)]
744pub struct KeybaseTypeContent {
745    pub annotation: Option<Annotation>,
746    pub selector: Field,
747    pub field: Vec<Field>,
748}
749impl WithDeserializer for KeybaseType {
750    type Deserializer = Box<quick_xml_deserialize::KeybaseTypeDeserializer>;
751}
752impl WithDeserializer for KeybaseTypeContent {
753    type Deserializer = Box<quick_xml_deserialize::KeybaseTypeContentDeserializer>;
754}
755#[derive(Clone, Debug, Eq, PartialEq)]
756pub struct Keyref {
757    pub id: Option<String>,
758    pub name: Option<String>,
759    pub ref_: Option<QName>,
760    pub refer: Option<QName>,
761    pub content: Option<KeyrefContent>,
762}
763#[derive(Clone, Debug, Eq, PartialEq)]
764pub struct KeyrefContent {
765    pub annotation: Option<Annotation>,
766    pub selector: Field,
767    pub field: Vec<Field>,
768}
769impl WithDeserializer for Keyref {
770    type Deserializer = Box<quick_xml_deserialize::KeyrefDeserializer>;
771}
772impl WithDeserializer for KeyrefContent {
773    type Deserializer = Box<quick_xml_deserialize::KeyrefContentDeserializer>;
774}
775#[derive(Clone, Debug, Eq, PartialEq)]
776pub enum AttributeUseType {
777    Prohibited,
778    Optional,
779    Required,
780}
781impl DeserializeBytes for AttributeUseType {
782    fn deserialize_bytes(helper: &mut DeserializeHelper, bytes: &[u8]) -> Result<Self, Error> {
783        match bytes {
784            b"prohibited" => Ok(Self::Prohibited),
785            b"optional" => Ok(Self::Optional),
786            b"required" => Ok(Self::Required),
787            x => Err(Error::from(ErrorKind::UnknownOrInvalidValue(
788                RawByteStr::from_slice(x),
789            ))),
790        }
791    }
792}
793#[derive(Clone, Debug, Eq, PartialEq)]
794pub enum NamespaceListType {
795    Any,
796    Other,
797    BasicNamespaceList(BasicNamespaceListType),
798}
799impl DeserializeBytes for NamespaceListType {
800    fn deserialize_bytes(helper: &mut DeserializeHelper, bytes: &[u8]) -> Result<Self, Error> {
801        match bytes {
802            b"##any" => Ok(Self::Any),
803            b"##other" => Ok(Self::Other),
804            x => Ok(Self::BasicNamespaceList(
805                BasicNamespaceListType::deserialize_bytes(helper, x)?,
806            )),
807        }
808    }
809}
810#[derive(Clone, Debug, Eq, PartialEq)]
811pub struct NotNamespaceType(pub Vec<BasicNamespaceListItemType>);
812impl NotNamespaceType {
813    pub fn new(inner: Vec<BasicNamespaceListItemType>) -> Result<Self, ValidateError> {
814        Self::validate_value(&inner)?;
815        Ok(Self(inner))
816    }
817    #[must_use]
818    pub fn into_inner(self) -> Vec<BasicNamespaceListItemType> {
819        self.0
820    }
821    pub fn validate_value(value: &Vec<BasicNamespaceListItemType>) -> Result<(), ValidateError> {
822        if value.is_empty() {
823            return Err(ValidateError::MinLength(1usize));
824        }
825        Ok(())
826    }
827}
828impl From<NotNamespaceType> for Vec<BasicNamespaceListItemType> {
829    fn from(value: NotNamespaceType) -> Vec<BasicNamespaceListItemType> {
830        value.0
831    }
832}
833impl TryFrom<Vec<BasicNamespaceListItemType>> for NotNamespaceType {
834    type Error = ValidateError;
835    fn try_from(value: Vec<BasicNamespaceListItemType>) -> Result<Self, ValidateError> {
836        Self::new(value)
837    }
838}
839impl Deref for NotNamespaceType {
840    type Target = Vec<BasicNamespaceListItemType>;
841    fn deref(&self) -> &Self::Target {
842        &self.0
843    }
844}
845impl DeserializeBytes for NotNamespaceType {
846    fn deserialize_bytes(helper: &mut DeserializeHelper, bytes: &[u8]) -> Result<Self, Error> {
847        let inner = bytes
848            .split(|b| *b == b' ' || *b == b'|' || *b == b',' || *b == b';')
849            .map(|bytes| BasicNamespaceListItemType::deserialize_bytes(helper, bytes))
850            .collect::<Result<Vec<_>, _>>()?;
851        Ok(Self::new(inner).map_err(|error| (bytes, error))?)
852    }
853}
854#[derive(Clone, Debug, Eq, PartialEq)]
855pub enum ProcessContentsType {
856    Skip,
857    Lax,
858    Strict,
859}
860impl DeserializeBytes for ProcessContentsType {
861    fn deserialize_bytes(helper: &mut DeserializeHelper, bytes: &[u8]) -> Result<Self, Error> {
862        match bytes {
863            b"skip" => Ok(Self::Skip),
864            b"lax" => Ok(Self::Lax),
865            b"strict" => Ok(Self::Strict),
866            x => Err(Error::from(ErrorKind::UnknownOrInvalidValue(
867                RawByteStr::from_slice(x),
868            ))),
869        }
870    }
871}
872#[derive(Clone, Debug, Default, Eq, PartialEq)]
873pub struct SimpleDerivationSetItemList(pub Vec<SimpleDerivationSetItemType>);
874impl DeserializeBytes for SimpleDerivationSetItemList {
875    fn deserialize_bytes(helper: &mut DeserializeHelper, bytes: &[u8]) -> Result<Self, Error> {
876        Ok(Self(
877            bytes
878                .split(|b| *b == b' ' || *b == b'|' || *b == b',' || *b == b';')
879                .map(|bytes| SimpleDerivationSetItemType::deserialize_bytes(helper, bytes))
880                .collect::<Result<Vec<_>, _>>()?,
881        ))
882    }
883}
884#[derive(Clone, Debug, Eq, PartialEq)]
885pub enum Facet {
886    MinExclusive(FacetType),
887    MinInclusive(FacetType),
888    MaxExclusive(FacetType),
889    MaxInclusive(FacetType),
890    TotalDigits(FacetType),
891    FractionDigits(FacetType),
892    Length(FacetType),
893    MinLength(FacetType),
894    MaxLength(FacetType),
895    Enumeration(FacetType),
896    WhiteSpace(FacetType),
897    Pattern(FacetType),
898    Assertion(AssertionType),
899    ExplicitTimezone(FacetType),
900}
901impl WithDeserializer for Facet {
902    type Deserializer = Box<quick_xml_deserialize::FacetDeserializer>;
903}
904#[derive(Clone, Debug, Default, Eq, PartialEq)]
905pub struct ReducedDerivationControlList(pub Vec<ReducedDerivationControlType>);
906impl DeserializeBytes for ReducedDerivationControlList {
907    fn deserialize_bytes(helper: &mut DeserializeHelper, bytes: &[u8]) -> Result<Self, Error> {
908        Ok(Self(
909            bytes
910                .split(|b| *b == b' ' || *b == b'|' || *b == b',' || *b == b';')
911                .map(|bytes| ReducedDerivationControlType::deserialize_bytes(helper, bytes))
912                .collect::<Result<Vec<_>, _>>()?,
913        ))
914    }
915}
916#[derive(Clone, Debug, Eq, PartialEq)]
917pub struct RestrictionType {
918    pub id: Option<String>,
919    pub base: QName,
920    pub content: Vec<RestrictionTypeContent>,
921}
922#[derive(Clone, Debug, Eq, PartialEq)]
923pub enum RestrictionTypeContent {
924    Annotation(Annotation),
925    OpenContent(OpenContent),
926    Group(GroupType),
927    All(GroupType),
928    Choice(GroupType),
929    Sequence(GroupType),
930    SimpleType(SimpleBaseType),
931    Facet(Facet),
932    Attribute(AttributeType),
933    AttributeGroup(AttributeGroupType),
934    AnyAttribute(AnyAttribute),
935    Assert(AssertionType),
936}
937impl WithDeserializer for RestrictionType {
938    type Deserializer = Box<quick_xml_deserialize::RestrictionTypeDeserializer>;
939}
940impl WithDeserializer for RestrictionTypeContent {
941    type Deserializer = Box<quick_xml_deserialize::RestrictionTypeContentDeserializer>;
942}
943#[derive(Clone, Debug, Eq, PartialEq)]
944pub struct ExtensionType {
945    pub id: Option<String>,
946    pub base: QName,
947    pub content: Vec<ExtensionTypeContent>,
948}
949#[derive(Clone, Debug, Eq, PartialEq)]
950pub enum ExtensionTypeContent {
951    Annotation(Annotation),
952    OpenContent(OpenContent),
953    Group(GroupType),
954    All(GroupType),
955    Choice(GroupType),
956    Sequence(GroupType),
957    Attribute(AttributeType),
958    AttributeGroup(AttributeGroupType),
959    AnyAttribute(AnyAttribute),
960    Assert(AssertionType),
961}
962impl WithDeserializer for ExtensionType {
963    type Deserializer = Box<quick_xml_deserialize::ExtensionTypeDeserializer>;
964}
965impl WithDeserializer for ExtensionTypeContent {
966    type Deserializer = Box<quick_xml_deserialize::ExtensionTypeContentDeserializer>;
967}
968#[derive(Clone, Debug, Eq, PartialEq)]
969pub enum OpenContentModeType {
970    None,
971    Interleave,
972    Suffix,
973}
974impl DeserializeBytes for OpenContentModeType {
975    fn deserialize_bytes(helper: &mut DeserializeHelper, bytes: &[u8]) -> Result<Self, Error> {
976        match bytes {
977            b"none" => Ok(Self::None),
978            b"interleave" => Ok(Self::Interleave),
979            b"suffix" => Ok(Self::Suffix),
980            x => Err(Error::from(ErrorKind::UnknownOrInvalidValue(
981                RawByteStr::from_slice(x),
982            ))),
983        }
984    }
985}
986#[derive(Clone, Debug, Default, Eq, PartialEq)]
987pub struct QnameListAType(pub Vec<QnameListAItemType>);
988impl DeserializeBytes for QnameListAType {
989    fn deserialize_bytes(helper: &mut DeserializeHelper, bytes: &[u8]) -> Result<Self, Error> {
990        Ok(Self(
991            bytes
992                .split(|b| *b == b' ' || *b == b'|' || *b == b',' || *b == b';')
993                .map(|bytes| QnameListAItemType::deserialize_bytes(helper, bytes))
994                .collect::<Result<Vec<_>, _>>()?,
995        ))
996    }
997}
998#[derive(Clone, Debug, Default, Eq, PartialEq)]
999pub struct QnameListType(pub Vec<QnameListItemType>);
1000impl DeserializeBytes for QnameListType {
1001    fn deserialize_bytes(helper: &mut DeserializeHelper, bytes: &[u8]) -> Result<Self, Error> {
1002        Ok(Self(
1003            bytes
1004                .split(|b| *b == b' ' || *b == b'|' || *b == b',' || *b == b';')
1005                .map(|bytes| QnameListItemType::deserialize_bytes(helper, bytes))
1006                .collect::<Result<Vec<_>, _>>()?,
1007        ))
1008    }
1009}
1010#[derive(Clone, Debug, Eq, PartialEq)]
1011pub struct Field {
1012    pub id: Option<String>,
1013    pub xpath: String,
1014    pub xpath_default_namespace: Option<XpathDefaultNamespaceType>,
1015    pub annotation: Option<Annotation>,
1016}
1017impl WithDeserializer for Field {
1018    type Deserializer = Box<quick_xml_deserialize::FieldDeserializer>;
1019}
1020#[derive(Clone, Debug, Default, Eq, PartialEq)]
1021pub struct BasicNamespaceListType(pub Vec<BasicNamespaceListItemType>);
1022impl DeserializeBytes for BasicNamespaceListType {
1023    fn deserialize_bytes(helper: &mut DeserializeHelper, bytes: &[u8]) -> Result<Self, Error> {
1024        Ok(Self(
1025            bytes
1026                .split(|b| *b == b' ' || *b == b'|' || *b == b',' || *b == b';')
1027                .map(|bytes| BasicNamespaceListItemType::deserialize_bytes(helper, bytes))
1028                .collect::<Result<Vec<_>, _>>()?,
1029        ))
1030    }
1031}
1032#[derive(Clone, Debug, Eq, PartialEq)]
1033pub enum BasicNamespaceListItemType {
1034    String(String),
1035    TargetNamespace,
1036    Local,
1037}
1038impl DeserializeBytes for BasicNamespaceListItemType {
1039    fn deserialize_bytes(helper: &mut DeserializeHelper, bytes: &[u8]) -> Result<Self, Error> {
1040        match bytes {
1041            b"##targetNamespace" => Ok(Self::TargetNamespace),
1042            b"##local" => Ok(Self::Local),
1043            x => Ok(Self::String(String::deserialize_bytes(helper, x)?)),
1044        }
1045    }
1046}
1047#[derive(Clone, Debug, Eq, PartialEq)]
1048pub enum SimpleDerivationSetItemType {
1049    List,
1050    Union,
1051    Restriction,
1052    Extension,
1053}
1054impl DeserializeBytes for SimpleDerivationSetItemType {
1055    fn deserialize_bytes(helper: &mut DeserializeHelper, bytes: &[u8]) -> Result<Self, Error> {
1056        match bytes {
1057            b"list" => Ok(Self::List),
1058            b"union" => Ok(Self::Union),
1059            b"restriction" => Ok(Self::Restriction),
1060            b"extension" => Ok(Self::Extension),
1061            x => Err(Error::from(ErrorKind::UnknownOrInvalidValue(
1062                RawByteStr::from_slice(x),
1063            ))),
1064        }
1065    }
1066}
1067#[derive(Clone, Debug, Eq, PartialEq)]
1068pub struct FacetType {
1069    pub id: Option<String>,
1070    pub value: String,
1071    pub fixed: bool,
1072    pub annotation: Option<Annotation>,
1073}
1074impl FacetType {
1075    #[must_use]
1076    pub fn default_fixed() -> bool {
1077        false
1078    }
1079}
1080impl WithDeserializer for FacetType {
1081    type Deserializer = Box<quick_xml_deserialize::FacetTypeDeserializer>;
1082}
1083#[derive(Clone, Debug, Eq, PartialEq)]
1084pub enum ReducedDerivationControlType {
1085    Extension,
1086    Restriction,
1087}
1088impl DeserializeBytes for ReducedDerivationControlType {
1089    fn deserialize_bytes(helper: &mut DeserializeHelper, bytes: &[u8]) -> Result<Self, Error> {
1090        match bytes {
1091            b"extension" => Ok(Self::Extension),
1092            b"restriction" => Ok(Self::Restriction),
1093            x => Err(Error::from(ErrorKind::UnknownOrInvalidValue(
1094                RawByteStr::from_slice(x),
1095            ))),
1096        }
1097    }
1098}
1099#[derive(Clone, Debug, Eq, PartialEq)]
1100pub enum QnameListAItemType {
1101    QName(QName),
1102    Defined,
1103}
1104impl DeserializeBytes for QnameListAItemType {
1105    fn deserialize_bytes(helper: &mut DeserializeHelper, bytes: &[u8]) -> Result<Self, Error> {
1106        match bytes {
1107            b"##defined" => Ok(Self::Defined),
1108            x => Ok(Self::QName(QName::deserialize_bytes(helper, x)?)),
1109        }
1110    }
1111}
1112#[derive(Clone, Debug, Eq, PartialEq)]
1113pub enum QnameListItemType {
1114    QName(QName),
1115    Defined,
1116    DefinedSibling,
1117}
1118impl DeserializeBytes for QnameListItemType {
1119    fn deserialize_bytes(helper: &mut DeserializeHelper, bytes: &[u8]) -> Result<Self, Error> {
1120        match bytes {
1121            b"##defined" => Ok(Self::Defined),
1122            b"##definedSibling" => Ok(Self::DefinedSibling),
1123            x => Ok(Self::QName(QName::deserialize_bytes(helper, x)?)),
1124        }
1125    }
1126}
1127pub mod quick_xml_deserialize {
1128    use crate::models::schema::{MaxOccurs, QName};
1129    use core::mem::replace;
1130    use xsd_parser_types::{
1131        quick_xml::{
1132            BytesStart, DeserializeHelper, Deserializer,
1133            DeserializerArtifact, DeserializerEvent, DeserializerOutput, DeserializerResult,
1134            ElementHandlerOutput, Error, ErrorKind, Event, RawByteStr, WithDeserializer,
1135        },
1136        xml::AnyElement,
1137    };
1138    #[derive(Debug)]
1139    pub struct SchemaDeserializer {
1140        target_namespace: Option<String>,
1141        version: Option<String>,
1142        final_default: super::FullDerivationSetType,
1143        block_default: super::BlockSetType,
1144        attribute_form_default: super::FormChoiceType,
1145        element_form_default: super::FormChoiceType,
1146        default_attributes: Option<QName>,
1147        xpath_default_namespace: super::XpathDefaultNamespaceType,
1148        id: Option<String>,
1149        lang: Option<String>,
1150        content: Vec<super::SchemaContent>,
1151        state__: Box<SchemaDeserializerState>,
1152    }
1153    #[derive(Debug)]
1154    enum SchemaDeserializerState {
1155        Init__,
1156        Next__,
1157        Content__(<super::SchemaContent as WithDeserializer>::Deserializer),
1158        Unknown__,
1159    }
1160    impl SchemaDeserializer {
1161        fn from_bytes_start(
1162            helper: &mut DeserializeHelper,
1163            bytes_start: &BytesStart<'_>,
1164        ) -> Result<Box<Self>, Error> {
1165            let mut target_namespace: Option<String> = None;
1166            let mut version: Option<String> = None;
1167            let mut final_default: Option<super::FullDerivationSetType> = None;
1168            let mut block_default: Option<super::BlockSetType> = None;
1169            let mut attribute_form_default: Option<super::FormChoiceType> = None;
1170            let mut element_form_default: Option<super::FormChoiceType> = None;
1171            let mut default_attributes: Option<QName> = None;
1172            let mut xpath_default_namespace: Option<super::XpathDefaultNamespaceType> = None;
1173            let mut id: Option<String> = None;
1174            let mut lang: Option<String> = None;
1175            for attrib in helper.filter_xmlns_attributes(bytes_start) {
1176                let attrib = attrib?;
1177                if matches!(
1178                    helper.resolve_local_name(attrib.key, &super::NS_XS),
1179                    Some(b"targetNamespace")
1180                ) {
1181                    helper.read_attrib(&mut target_namespace, b"targetNamespace", &attrib.value)?;
1182                } else if matches!(
1183                    helper.resolve_local_name(attrib.key, &super::NS_XS),
1184                    Some(b"version")
1185                ) {
1186                    helper.read_attrib(&mut version, b"version", &attrib.value)?;
1187                } else if matches!(
1188                    helper.resolve_local_name(attrib.key, &super::NS_XS),
1189                    Some(b"finalDefault")
1190                ) {
1191                    helper.read_attrib(&mut final_default, b"finalDefault", &attrib.value)?;
1192                } else if matches!(
1193                    helper.resolve_local_name(attrib.key, &super::NS_XS),
1194                    Some(b"blockDefault")
1195                ) {
1196                    helper.read_attrib(&mut block_default, b"blockDefault", &attrib.value)?;
1197                } else if matches!(
1198                    helper.resolve_local_name(attrib.key, &super::NS_XS),
1199                    Some(b"attributeFormDefault")
1200                ) {
1201                    helper.read_attrib(
1202                        &mut attribute_form_default,
1203                        b"attributeFormDefault",
1204                        &attrib.value,
1205                    )?;
1206                } else if matches!(
1207                    helper.resolve_local_name(attrib.key, &super::NS_XS),
1208                    Some(b"elementFormDefault")
1209                ) {
1210                    helper.read_attrib(
1211                        &mut element_form_default,
1212                        b"elementFormDefault",
1213                        &attrib.value,
1214                    )?;
1215                } else if matches!(
1216                    helper.resolve_local_name(attrib.key, &super::NS_XS),
1217                    Some(b"defaultAttributes")
1218                ) {
1219                    helper.read_attrib(
1220                        &mut default_attributes,
1221                        b"defaultAttributes",
1222                        &attrib.value,
1223                    )?;
1224                } else if matches!(
1225                    helper.resolve_local_name(attrib.key, &super::NS_XS),
1226                    Some(b"xpathDefaultNamespace")
1227                ) {
1228                    helper.read_attrib(
1229                        &mut xpath_default_namespace,
1230                        b"xpathDefaultNamespace",
1231                        &attrib.value,
1232                    )?;
1233                } else if matches!(
1234                    helper.resolve_local_name(attrib.key, &super::NS_XS),
1235                    Some(b"id")
1236                ) {
1237                    helper.read_attrib(&mut id, b"id", &attrib.value)?;
1238                } else if matches!(
1239                    helper.resolve_local_name(attrib.key, &super::NS_XML),
1240                    Some(b"lang")
1241                ) {
1242                    helper.read_attrib(&mut lang, b"lang", &attrib.value)?;
1243                }
1244            }
1245            Ok(Box::new(Self {
1246                target_namespace: target_namespace,
1247                version: version,
1248                final_default: final_default.unwrap_or_else(super::Schema::default_final_default),
1249                block_default: block_default.unwrap_or_else(super::Schema::default_block_default),
1250                attribute_form_default: attribute_form_default
1251                    .unwrap_or_else(super::Schema::default_attribute_form_default),
1252                element_form_default: element_form_default
1253                    .unwrap_or_else(super::Schema::default_element_form_default),
1254                default_attributes: default_attributes,
1255                xpath_default_namespace: xpath_default_namespace
1256                    .unwrap_or_else(super::Schema::default_xpath_default_namespace),
1257                id: id,
1258                lang: lang,
1259                content: Vec::new(),
1260                state__: Box::new(SchemaDeserializerState::Init__),
1261            }))
1262        }
1263        fn finish_state(
1264            &mut self,
1265            helper: &mut DeserializeHelper,
1266            state: SchemaDeserializerState,
1267        ) -> Result<(), Error> {
1268            if let SchemaDeserializerState::Content__(deserializer) = state {
1269                self.store_content(deserializer.finish(helper)?)?;
1270            }
1271            Ok(())
1272        }
1273        fn store_content(&mut self, value: super::SchemaContent) -> Result<(), Error> {
1274            self.content.push(value);
1275            Ok(())
1276        }
1277        fn handle_content<'de>(
1278            &mut self,
1279            helper: &mut DeserializeHelper,
1280            output: DeserializerOutput<'de, super::SchemaContent>,
1281            fallback: &mut Option<SchemaDeserializerState>,
1282        ) -> Result<ElementHandlerOutput<'de>, Error> {
1283            let DeserializerOutput {
1284                artifact,
1285                event,
1286                allow_any,
1287            } = output;
1288            if artifact.is_none() {
1289                *self.state__ = fallback.take().unwrap_or(SchemaDeserializerState::Next__);
1290                return Ok(ElementHandlerOutput::break_(event, allow_any));
1291            }
1292            if let Some(fallback) = fallback.take() {
1293                self.finish_state(helper, fallback)?;
1294            }
1295            Ok(match artifact {
1296                DeserializerArtifact::None => unreachable!(),
1297                DeserializerArtifact::Data(data) => {
1298                    self.store_content(data)?;
1299                    *self.state__ = SchemaDeserializerState::Next__;
1300                    ElementHandlerOutput::from_event(event, allow_any)
1301                }
1302                DeserializerArtifact::Deserializer(deserializer) => {
1303                    let ret = ElementHandlerOutput::from_event(event, allow_any);
1304                    match &ret {
1305                        ElementHandlerOutput::Break { .. } => {
1306                            *self.state__ = SchemaDeserializerState::Content__(deserializer);
1307                        }
1308                        ElementHandlerOutput::Continue { .. } => {
1309                            fallback
1310                                .get_or_insert(SchemaDeserializerState::Content__(deserializer));
1311                            *self.state__ = SchemaDeserializerState::Next__;
1312                        }
1313                    }
1314                    ret
1315                }
1316            })
1317        }
1318    }
1319    impl<'de> Deserializer<'de, super::Schema> for Box<SchemaDeserializer> {
1320        fn init(
1321            helper: &mut DeserializeHelper,
1322            event: Event<'de>,
1323        ) -> DeserializerResult<'de, super::Schema> {
1324            helper.init_deserializer_from_start_event(event, SchemaDeserializer::from_bytes_start)
1325        }
1326        fn next(
1327            mut self,
1328            helper: &mut DeserializeHelper,
1329            event: Event<'de>,
1330        ) -> DeserializerResult<'de, super::Schema> {
1331            use SchemaDeserializerState as S;
1332            let mut event = event;
1333            let mut fallback = None;
1334            let (event, allow_any) = loop {
1335                let state = replace(&mut *self.state__, S::Unknown__);
1336                event = match (state, event) {
1337                    (S::Unknown__, _) => unreachable!(),
1338                    (S::Content__(deserializer), event) => {
1339                        let output = deserializer.next(helper, event)?;
1340                        match self.handle_content(helper, output, &mut fallback)? {
1341                            ElementHandlerOutput::Break { event, allow_any } => {
1342                                break (event, allow_any)
1343                            }
1344                            ElementHandlerOutput::Continue { event, .. } => event,
1345                        }
1346                    }
1347                    (_, Event::End(_)) => {
1348                        return Ok(DeserializerOutput {
1349                            artifact: DeserializerArtifact::Data(self.finish(helper)?),
1350                            event: DeserializerEvent::None,
1351                            allow_any: false,
1352                        });
1353                    }
1354                    (state @ (S::Init__ | S::Next__), event) => {
1355                        fallback.get_or_insert(state);
1356                        let output =
1357                            <super::SchemaContent as WithDeserializer>::Deserializer::init(
1358                                helper, event,
1359                            )?;
1360                        match self.handle_content(helper, output, &mut fallback)? {
1361                            ElementHandlerOutput::Break { event, allow_any } => {
1362                                break (event, allow_any)
1363                            }
1364                            ElementHandlerOutput::Continue { event, .. } => event,
1365                        }
1366                    }
1367                }
1368            };
1369            let artifact = DeserializerArtifact::Deserializer(self);
1370            Ok(DeserializerOutput {
1371                artifact,
1372                event,
1373                allow_any,
1374            })
1375        }
1376        fn finish(mut self, helper: &mut DeserializeHelper) -> Result<super::Schema, Error> {
1377            let state = replace(&mut *self.state__, SchemaDeserializerState::Unknown__);
1378            self.finish_state(helper, state)?;
1379            Ok(super::Schema {
1380                target_namespace: self.target_namespace,
1381                version: self.version,
1382                final_default: self.final_default,
1383                block_default: self.block_default,
1384                attribute_form_default: self.attribute_form_default,
1385                element_form_default: self.element_form_default,
1386                default_attributes: self.default_attributes,
1387                xpath_default_namespace: self.xpath_default_namespace,
1388                id: self.id,
1389                lang: self.lang,
1390                content: self.content,
1391            })
1392        }
1393    }
1394    #[derive(Debug)]
1395    pub struct SchemaContentDeserializer {
1396        state__: Box<SchemaContentDeserializerState>,
1397    }
1398    #[derive(Debug)]
1399    pub enum SchemaContentDeserializerState {
1400        Init__,
1401        Include(
1402            Option<super::Include>,
1403            Option<<super::Include as WithDeserializer>::Deserializer>,
1404        ),
1405        Import(
1406            Option<super::Import>,
1407            Option<<super::Import as WithDeserializer>::Deserializer>,
1408        ),
1409        Redefine(
1410            Option<super::Redefine>,
1411            Option<<super::Redefine as WithDeserializer>::Deserializer>,
1412        ),
1413        Override(
1414            Option<super::Override>,
1415            Option<<super::Override as WithDeserializer>::Deserializer>,
1416        ),
1417        Annotation(
1418            Option<super::Annotation>,
1419            Option<<super::Annotation as WithDeserializer>::Deserializer>,
1420        ),
1421        DefaultOpenContent(
1422            Option<super::DefaultOpenContent>,
1423            Option<<super::DefaultOpenContent as WithDeserializer>::Deserializer>,
1424        ),
1425        SimpleType(
1426            Option<super::SimpleBaseType>,
1427            Option<<super::SimpleBaseType as WithDeserializer>::Deserializer>,
1428        ),
1429        ComplexType(
1430            Option<super::ComplexBaseType>,
1431            Option<<super::ComplexBaseType as WithDeserializer>::Deserializer>,
1432        ),
1433        Group(
1434            Option<super::GroupType>,
1435            Option<<super::GroupType as WithDeserializer>::Deserializer>,
1436        ),
1437        AttributeGroup(
1438            Option<super::AttributeGroupType>,
1439            Option<<super::AttributeGroupType as WithDeserializer>::Deserializer>,
1440        ),
1441        Element(
1442            Option<super::ElementType>,
1443            Option<<super::ElementType as WithDeserializer>::Deserializer>,
1444        ),
1445        Attribute(
1446            Option<super::AttributeType>,
1447            Option<<super::AttributeType as WithDeserializer>::Deserializer>,
1448        ),
1449        Notation(
1450            Option<super::Notation>,
1451            Option<<super::Notation as WithDeserializer>::Deserializer>,
1452        ),
1453        Done__(super::SchemaContent),
1454        Unknown__,
1455    }
1456    impl SchemaContentDeserializer {
1457        fn find_suitable<'de>(
1458            &mut self,
1459            helper: &mut DeserializeHelper,
1460            event: Event<'de>,
1461            fallback: &mut Option<SchemaContentDeserializerState>,
1462        ) -> Result<ElementHandlerOutput<'de>, Error> {
1463            if let Event::Start(x) | Event::Empty(x) = &event {
1464                if matches!(
1465                    helper.resolve_local_name(x.name(), &super::NS_XS),
1466                    Some(b"include")
1467                ) {
1468                    let output =
1469                        <super::Include as WithDeserializer>::Deserializer::init(helper, event)?;
1470                    return self.handle_include(helper, Default::default(), output, &mut *fallback);
1471                }
1472                if matches!(
1473                    helper.resolve_local_name(x.name(), &super::NS_XS),
1474                    Some(b"import")
1475                ) {
1476                    let output =
1477                        <super::Import as WithDeserializer>::Deserializer::init(helper, event)?;
1478                    return self.handle_import(helper, Default::default(), output, &mut *fallback);
1479                }
1480                if matches!(
1481                    helper.resolve_local_name(x.name(), &super::NS_XS),
1482                    Some(b"redefine")
1483                ) {
1484                    let output =
1485                        <super::Redefine as WithDeserializer>::Deserializer::init(helper, event)?;
1486                    return self.handle_redefine(
1487                        helper,
1488                        Default::default(),
1489                        output,
1490                        &mut *fallback,
1491                    );
1492                }
1493                if matches!(
1494                    helper.resolve_local_name(x.name(), &super::NS_XS),
1495                    Some(b"override")
1496                ) {
1497                    let output =
1498                        <super::Override as WithDeserializer>::Deserializer::init(helper, event)?;
1499                    return self.handle_override_(
1500                        helper,
1501                        Default::default(),
1502                        output,
1503                        &mut *fallback,
1504                    );
1505                }
1506                if matches!(
1507                    helper.resolve_local_name(x.name(), &super::NS_XS),
1508                    Some(b"annotation")
1509                ) {
1510                    let output =
1511                        <super::Annotation as WithDeserializer>::Deserializer::init(helper, event)?;
1512                    return self.handle_annotation(
1513                        helper,
1514                        Default::default(),
1515                        output,
1516                        &mut *fallback,
1517                    );
1518                }
1519                if matches!(
1520                    helper.resolve_local_name(x.name(), &super::NS_XS),
1521                    Some(b"defaultOpenContent")
1522                ) {
1523                    let output =
1524                        <super::DefaultOpenContent as WithDeserializer>::Deserializer::init(
1525                            helper, event,
1526                        )?;
1527                    return self.handle_default_open_content(
1528                        helper,
1529                        Default::default(),
1530                        output,
1531                        &mut *fallback,
1532                    );
1533                }
1534                if matches!(
1535                    helper.resolve_local_name(x.name(), &super::NS_XS),
1536                    Some(b"simpleType")
1537                ) {
1538                    let output = <super::SimpleBaseType as WithDeserializer>::Deserializer::init(
1539                        helper, event,
1540                    )?;
1541                    return self.handle_simple_type(
1542                        helper,
1543                        Default::default(),
1544                        output,
1545                        &mut *fallback,
1546                    );
1547                }
1548                if matches!(
1549                    helper.resolve_local_name(x.name(), &super::NS_XS),
1550                    Some(b"complexType")
1551                ) {
1552                    let output = <super::ComplexBaseType as WithDeserializer>::Deserializer::init(
1553                        helper, event,
1554                    )?;
1555                    return self.handle_complex_type(
1556                        helper,
1557                        Default::default(),
1558                        output,
1559                        &mut *fallback,
1560                    );
1561                }
1562                if matches!(
1563                    helper.resolve_local_name(x.name(), &super::NS_XS),
1564                    Some(b"group")
1565                ) {
1566                    let output =
1567                        <super::GroupType as WithDeserializer>::Deserializer::init(helper, event)?;
1568                    return self.handle_group(helper, Default::default(), output, &mut *fallback);
1569                }
1570                if matches!(
1571                    helper.resolve_local_name(x.name(), &super::NS_XS),
1572                    Some(b"attributeGroup")
1573                ) {
1574                    let output =
1575                        <super::AttributeGroupType as WithDeserializer>::Deserializer::init(
1576                            helper, event,
1577                        )?;
1578                    return self.handle_attribute_group(
1579                        helper,
1580                        Default::default(),
1581                        output,
1582                        &mut *fallback,
1583                    );
1584                }
1585                if matches!(
1586                    helper.resolve_local_name(x.name(), &super::NS_XS),
1587                    Some(b"element")
1588                ) {
1589                    let output = <super::ElementType as WithDeserializer>::Deserializer::init(
1590                        helper, event,
1591                    )?;
1592                    return self.handle_element(helper, Default::default(), output, &mut *fallback);
1593                }
1594                if matches!(
1595                    helper.resolve_local_name(x.name(), &super::NS_XS),
1596                    Some(b"attribute")
1597                ) {
1598                    let output = <super::AttributeType as WithDeserializer>::Deserializer::init(
1599                        helper, event,
1600                    )?;
1601                    return self.handle_attribute(
1602                        helper,
1603                        Default::default(),
1604                        output,
1605                        &mut *fallback,
1606                    );
1607                }
1608                if matches!(
1609                    helper.resolve_local_name(x.name(), &super::NS_XS),
1610                    Some(b"notation")
1611                ) {
1612                    let output =
1613                        <super::Notation as WithDeserializer>::Deserializer::init(helper, event)?;
1614                    return self.handle_notation(
1615                        helper,
1616                        Default::default(),
1617                        output,
1618                        &mut *fallback,
1619                    );
1620                }
1621            }
1622            *self.state__ = fallback
1623                .take()
1624                .unwrap_or(SchemaContentDeserializerState::Init__);
1625            Ok(ElementHandlerOutput::return_to_parent(event, false))
1626        }
1627        fn finish_state(
1628            helper: &mut DeserializeHelper,
1629            state: SchemaContentDeserializerState,
1630        ) -> Result<super::SchemaContent, Error> {
1631            use SchemaContentDeserializerState as S;
1632            match state {
1633                S::Unknown__ => unreachable!(),
1634                S::Init__ => Err(ErrorKind::MissingContent.into()),
1635                S::Include(mut values, deserializer) => {
1636                    if let Some(deserializer) = deserializer {
1637                        let value = deserializer.finish(helper)?;
1638                        SchemaContentDeserializer::store_include(&mut values, value)?;
1639                    }
1640                    Ok(super::SchemaContent::Include(values.ok_or_else(|| {
1641                        ErrorKind::MissingElement("include".into())
1642                    })?))
1643                }
1644                S::Import(mut values, deserializer) => {
1645                    if let Some(deserializer) = deserializer {
1646                        let value = deserializer.finish(helper)?;
1647                        SchemaContentDeserializer::store_import(&mut values, value)?;
1648                    }
1649                    Ok(super::SchemaContent::Import(values.ok_or_else(|| {
1650                        ErrorKind::MissingElement("import".into())
1651                    })?))
1652                }
1653                S::Redefine(mut values, deserializer) => {
1654                    if let Some(deserializer) = deserializer {
1655                        let value = deserializer.finish(helper)?;
1656                        SchemaContentDeserializer::store_redefine(&mut values, value)?;
1657                    }
1658                    Ok(super::SchemaContent::Redefine(values.ok_or_else(|| {
1659                        ErrorKind::MissingElement("redefine".into())
1660                    })?))
1661                }
1662                S::Override(mut values, deserializer) => {
1663                    if let Some(deserializer) = deserializer {
1664                        let value = deserializer.finish(helper)?;
1665                        SchemaContentDeserializer::store_override_(&mut values, value)?;
1666                    }
1667                    Ok(super::SchemaContent::Override(values.ok_or_else(|| {
1668                        ErrorKind::MissingElement("override".into())
1669                    })?))
1670                }
1671                S::Annotation(mut values, deserializer) => {
1672                    if let Some(deserializer) = deserializer {
1673                        let value = deserializer.finish(helper)?;
1674                        SchemaContentDeserializer::store_annotation(&mut values, value)?;
1675                    }
1676                    Ok(super::SchemaContent::Annotation(values.ok_or_else(
1677                        || ErrorKind::MissingElement("annotation".into()),
1678                    )?))
1679                }
1680                S::DefaultOpenContent(mut values, deserializer) => {
1681                    if let Some(deserializer) = deserializer {
1682                        let value = deserializer.finish(helper)?;
1683                        SchemaContentDeserializer::store_default_open_content(&mut values, value)?;
1684                    }
1685                    Ok(super::SchemaContent::DefaultOpenContent(
1686                        values.ok_or_else(|| {
1687                            ErrorKind::MissingElement("defaultOpenContent".into())
1688                        })?,
1689                    ))
1690                }
1691                S::SimpleType(mut values, deserializer) => {
1692                    if let Some(deserializer) = deserializer {
1693                        let value = deserializer.finish(helper)?;
1694                        SchemaContentDeserializer::store_simple_type(&mut values, value)?;
1695                    }
1696                    Ok(super::SchemaContent::SimpleType(values.ok_or_else(
1697                        || ErrorKind::MissingElement("simpleType".into()),
1698                    )?))
1699                }
1700                S::ComplexType(mut values, deserializer) => {
1701                    if let Some(deserializer) = deserializer {
1702                        let value = deserializer.finish(helper)?;
1703                        SchemaContentDeserializer::store_complex_type(&mut values, value)?;
1704                    }
1705                    Ok(super::SchemaContent::ComplexType(values.ok_or_else(
1706                        || ErrorKind::MissingElement("complexType".into()),
1707                    )?))
1708                }
1709                S::Group(mut values, deserializer) => {
1710                    if let Some(deserializer) = deserializer {
1711                        let value = deserializer.finish(helper)?;
1712                        SchemaContentDeserializer::store_group(&mut values, value)?;
1713                    }
1714                    Ok(super::SchemaContent::Group(values.ok_or_else(|| {
1715                        ErrorKind::MissingElement("group".into())
1716                    })?))
1717                }
1718                S::AttributeGroup(mut values, deserializer) => {
1719                    if let Some(deserializer) = deserializer {
1720                        let value = deserializer.finish(helper)?;
1721                        SchemaContentDeserializer::store_attribute_group(&mut values, value)?;
1722                    }
1723                    Ok(super::SchemaContent::AttributeGroup(values.ok_or_else(
1724                        || ErrorKind::MissingElement("attributeGroup".into()),
1725                    )?))
1726                }
1727                S::Element(mut values, deserializer) => {
1728                    if let Some(deserializer) = deserializer {
1729                        let value = deserializer.finish(helper)?;
1730                        SchemaContentDeserializer::store_element(&mut values, value)?;
1731                    }
1732                    Ok(super::SchemaContent::Element(values.ok_or_else(|| {
1733                        ErrorKind::MissingElement("element".into())
1734                    })?))
1735                }
1736                S::Attribute(mut values, deserializer) => {
1737                    if let Some(deserializer) = deserializer {
1738                        let value = deserializer.finish(helper)?;
1739                        SchemaContentDeserializer::store_attribute(&mut values, value)?;
1740                    }
1741                    Ok(super::SchemaContent::Attribute(values.ok_or_else(
1742                        || ErrorKind::MissingElement("attribute".into()),
1743                    )?))
1744                }
1745                S::Notation(mut values, deserializer) => {
1746                    if let Some(deserializer) = deserializer {
1747                        let value = deserializer.finish(helper)?;
1748                        SchemaContentDeserializer::store_notation(&mut values, value)?;
1749                    }
1750                    Ok(super::SchemaContent::Notation(values.ok_or_else(|| {
1751                        ErrorKind::MissingElement("notation".into())
1752                    })?))
1753                }
1754                S::Done__(data) => Ok(data),
1755            }
1756        }
1757        fn store_include(
1758            values: &mut Option<super::Include>,
1759            value: super::Include,
1760        ) -> Result<(), Error> {
1761            if values.is_some() {
1762                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
1763                    b"include",
1764                )))?;
1765            }
1766            *values = Some(value);
1767            Ok(())
1768        }
1769        fn store_import(
1770            values: &mut Option<super::Import>,
1771            value: super::Import,
1772        ) -> Result<(), Error> {
1773            if values.is_some() {
1774                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
1775                    b"import",
1776                )))?;
1777            }
1778            *values = Some(value);
1779            Ok(())
1780        }
1781        fn store_redefine(
1782            values: &mut Option<super::Redefine>,
1783            value: super::Redefine,
1784        ) -> Result<(), Error> {
1785            if values.is_some() {
1786                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
1787                    b"redefine",
1788                )))?;
1789            }
1790            *values = Some(value);
1791            Ok(())
1792        }
1793        fn store_override_(
1794            values: &mut Option<super::Override>,
1795            value: super::Override,
1796        ) -> Result<(), Error> {
1797            if values.is_some() {
1798                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
1799                    b"override",
1800                )))?;
1801            }
1802            *values = Some(value);
1803            Ok(())
1804        }
1805        fn store_annotation(
1806            values: &mut Option<super::Annotation>,
1807            value: super::Annotation,
1808        ) -> Result<(), Error> {
1809            if values.is_some() {
1810                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
1811                    b"annotation",
1812                )))?;
1813            }
1814            *values = Some(value);
1815            Ok(())
1816        }
1817        fn store_default_open_content(
1818            values: &mut Option<super::DefaultOpenContent>,
1819            value: super::DefaultOpenContent,
1820        ) -> Result<(), Error> {
1821            if values.is_some() {
1822                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
1823                    b"defaultOpenContent",
1824                )))?;
1825            }
1826            *values = Some(value);
1827            Ok(())
1828        }
1829        fn store_simple_type(
1830            values: &mut Option<super::SimpleBaseType>,
1831            value: super::SimpleBaseType,
1832        ) -> Result<(), Error> {
1833            if values.is_some() {
1834                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
1835                    b"simpleType",
1836                )))?;
1837            }
1838            *values = Some(value);
1839            Ok(())
1840        }
1841        fn store_complex_type(
1842            values: &mut Option<super::ComplexBaseType>,
1843            value: super::ComplexBaseType,
1844        ) -> Result<(), Error> {
1845            if values.is_some() {
1846                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
1847                    b"complexType",
1848                )))?;
1849            }
1850            *values = Some(value);
1851            Ok(())
1852        }
1853        fn store_group(
1854            values: &mut Option<super::GroupType>,
1855            value: super::GroupType,
1856        ) -> Result<(), Error> {
1857            if values.is_some() {
1858                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
1859                    b"group",
1860                )))?;
1861            }
1862            *values = Some(value);
1863            Ok(())
1864        }
1865        fn store_attribute_group(
1866            values: &mut Option<super::AttributeGroupType>,
1867            value: super::AttributeGroupType,
1868        ) -> Result<(), Error> {
1869            if values.is_some() {
1870                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
1871                    b"attributeGroup",
1872                )))?;
1873            }
1874            *values = Some(value);
1875            Ok(())
1876        }
1877        fn store_element(
1878            values: &mut Option<super::ElementType>,
1879            value: super::ElementType,
1880        ) -> Result<(), Error> {
1881            if values.is_some() {
1882                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
1883                    b"element",
1884                )))?;
1885            }
1886            *values = Some(value);
1887            Ok(())
1888        }
1889        fn store_attribute(
1890            values: &mut Option<super::AttributeType>,
1891            value: super::AttributeType,
1892        ) -> Result<(), Error> {
1893            if values.is_some() {
1894                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
1895                    b"attribute",
1896                )))?;
1897            }
1898            *values = Some(value);
1899            Ok(())
1900        }
1901        fn store_notation(
1902            values: &mut Option<super::Notation>,
1903            value: super::Notation,
1904        ) -> Result<(), Error> {
1905            if values.is_some() {
1906                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
1907                    b"notation",
1908                )))?;
1909            }
1910            *values = Some(value);
1911            Ok(())
1912        }
1913        fn handle_include<'de>(
1914            &mut self,
1915            helper: &mut DeserializeHelper,
1916            mut values: Option<super::Include>,
1917            output: DeserializerOutput<'de, super::Include>,
1918            fallback: &mut Option<SchemaContentDeserializerState>,
1919        ) -> Result<ElementHandlerOutput<'de>, Error> {
1920            let DeserializerOutput {
1921                artifact,
1922                event,
1923                allow_any,
1924            } = output;
1925            if artifact.is_none() {
1926                *self.state__ = match fallback.take() {
1927                    None if values.is_none() => {
1928                        *self.state__ = SchemaContentDeserializerState::Init__;
1929                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
1930                    }
1931                    None => SchemaContentDeserializerState::Include(values, None),
1932                    Some(SchemaContentDeserializerState::Include(_, Some(deserializer))) => {
1933                        SchemaContentDeserializerState::Include(values, Some(deserializer))
1934                    }
1935                    _ => unreachable!(),
1936                };
1937                return Ok(ElementHandlerOutput::break_(event, allow_any));
1938            }
1939            match fallback.take() {
1940                None => (),
1941                Some(SchemaContentDeserializerState::Include(_, Some(deserializer))) => {
1942                    let data = deserializer.finish(helper)?;
1943                    SchemaContentDeserializer::store_include(&mut values, data)?;
1944                }
1945                Some(_) => unreachable!(),
1946            }
1947            Ok(match artifact {
1948                DeserializerArtifact::None => unreachable!(),
1949                DeserializerArtifact::Data(data) => {
1950                    SchemaContentDeserializer::store_include(&mut values, data)?;
1951                    let data = SchemaContentDeserializer::finish_state(
1952                        helper,
1953                        SchemaContentDeserializerState::Include(values, None),
1954                    )?;
1955                    *self.state__ = SchemaContentDeserializerState::Done__(data);
1956                    ElementHandlerOutput::Break { event, allow_any }
1957                }
1958                DeserializerArtifact::Deserializer(deserializer) => {
1959                    *self.state__ =
1960                        SchemaContentDeserializerState::Include(values, Some(deserializer));
1961                    ElementHandlerOutput::from_event_end(event, allow_any)
1962                }
1963            })
1964        }
1965        fn handle_import<'de>(
1966            &mut self,
1967            helper: &mut DeserializeHelper,
1968            mut values: Option<super::Import>,
1969            output: DeserializerOutput<'de, super::Import>,
1970            fallback: &mut Option<SchemaContentDeserializerState>,
1971        ) -> Result<ElementHandlerOutput<'de>, Error> {
1972            let DeserializerOutput {
1973                artifact,
1974                event,
1975                allow_any,
1976            } = output;
1977            if artifact.is_none() {
1978                *self.state__ = match fallback.take() {
1979                    None if values.is_none() => {
1980                        *self.state__ = SchemaContentDeserializerState::Init__;
1981                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
1982                    }
1983                    None => SchemaContentDeserializerState::Import(values, None),
1984                    Some(SchemaContentDeserializerState::Import(_, Some(deserializer))) => {
1985                        SchemaContentDeserializerState::Import(values, Some(deserializer))
1986                    }
1987                    _ => unreachable!(),
1988                };
1989                return Ok(ElementHandlerOutput::break_(event, allow_any));
1990            }
1991            match fallback.take() {
1992                None => (),
1993                Some(SchemaContentDeserializerState::Import(_, Some(deserializer))) => {
1994                    let data = deserializer.finish(helper)?;
1995                    SchemaContentDeserializer::store_import(&mut values, data)?;
1996                }
1997                Some(_) => unreachable!(),
1998            }
1999            Ok(match artifact {
2000                DeserializerArtifact::None => unreachable!(),
2001                DeserializerArtifact::Data(data) => {
2002                    SchemaContentDeserializer::store_import(&mut values, data)?;
2003                    let data = SchemaContentDeserializer::finish_state(
2004                        helper,
2005                        SchemaContentDeserializerState::Import(values, None),
2006                    )?;
2007                    *self.state__ = SchemaContentDeserializerState::Done__(data);
2008                    ElementHandlerOutput::Break { event, allow_any }
2009                }
2010                DeserializerArtifact::Deserializer(deserializer) => {
2011                    *self.state__ =
2012                        SchemaContentDeserializerState::Import(values, Some(deserializer));
2013                    ElementHandlerOutput::from_event_end(event, allow_any)
2014                }
2015            })
2016        }
2017        fn handle_redefine<'de>(
2018            &mut self,
2019            helper: &mut DeserializeHelper,
2020            mut values: Option<super::Redefine>,
2021            output: DeserializerOutput<'de, super::Redefine>,
2022            fallback: &mut Option<SchemaContentDeserializerState>,
2023        ) -> Result<ElementHandlerOutput<'de>, Error> {
2024            let DeserializerOutput {
2025                artifact,
2026                event,
2027                allow_any,
2028            } = output;
2029            if artifact.is_none() {
2030                *self.state__ = match fallback.take() {
2031                    None if values.is_none() => {
2032                        *self.state__ = SchemaContentDeserializerState::Init__;
2033                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
2034                    }
2035                    None => SchemaContentDeserializerState::Redefine(values, None),
2036                    Some(SchemaContentDeserializerState::Redefine(_, Some(deserializer))) => {
2037                        SchemaContentDeserializerState::Redefine(values, Some(deserializer))
2038                    }
2039                    _ => unreachable!(),
2040                };
2041                return Ok(ElementHandlerOutput::break_(event, allow_any));
2042            }
2043            match fallback.take() {
2044                None => (),
2045                Some(SchemaContentDeserializerState::Redefine(_, Some(deserializer))) => {
2046                    let data = deserializer.finish(helper)?;
2047                    SchemaContentDeserializer::store_redefine(&mut values, data)?;
2048                }
2049                Some(_) => unreachable!(),
2050            }
2051            Ok(match artifact {
2052                DeserializerArtifact::None => unreachable!(),
2053                DeserializerArtifact::Data(data) => {
2054                    SchemaContentDeserializer::store_redefine(&mut values, data)?;
2055                    let data = SchemaContentDeserializer::finish_state(
2056                        helper,
2057                        SchemaContentDeserializerState::Redefine(values, None),
2058                    )?;
2059                    *self.state__ = SchemaContentDeserializerState::Done__(data);
2060                    ElementHandlerOutput::Break { event, allow_any }
2061                }
2062                DeserializerArtifact::Deserializer(deserializer) => {
2063                    *self.state__ =
2064                        SchemaContentDeserializerState::Redefine(values, Some(deserializer));
2065                    ElementHandlerOutput::from_event_end(event, allow_any)
2066                }
2067            })
2068        }
2069        fn handle_override_<'de>(
2070            &mut self,
2071            helper: &mut DeserializeHelper,
2072            mut values: Option<super::Override>,
2073            output: DeserializerOutput<'de, super::Override>,
2074            fallback: &mut Option<SchemaContentDeserializerState>,
2075        ) -> Result<ElementHandlerOutput<'de>, Error> {
2076            let DeserializerOutput {
2077                artifact,
2078                event,
2079                allow_any,
2080            } = output;
2081            if artifact.is_none() {
2082                *self.state__ = match fallback.take() {
2083                    None if values.is_none() => {
2084                        *self.state__ = SchemaContentDeserializerState::Init__;
2085                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
2086                    }
2087                    None => SchemaContentDeserializerState::Override(values, None),
2088                    Some(SchemaContentDeserializerState::Override(_, Some(deserializer))) => {
2089                        SchemaContentDeserializerState::Override(values, Some(deserializer))
2090                    }
2091                    _ => unreachable!(),
2092                };
2093                return Ok(ElementHandlerOutput::break_(event, allow_any));
2094            }
2095            match fallback.take() {
2096                None => (),
2097                Some(SchemaContentDeserializerState::Override(_, Some(deserializer))) => {
2098                    let data = deserializer.finish(helper)?;
2099                    SchemaContentDeserializer::store_override_(&mut values, data)?;
2100                }
2101                Some(_) => unreachable!(),
2102            }
2103            Ok(match artifact {
2104                DeserializerArtifact::None => unreachable!(),
2105                DeserializerArtifact::Data(data) => {
2106                    SchemaContentDeserializer::store_override_(&mut values, data)?;
2107                    let data = SchemaContentDeserializer::finish_state(
2108                        helper,
2109                        SchemaContentDeserializerState::Override(values, None),
2110                    )?;
2111                    *self.state__ = SchemaContentDeserializerState::Done__(data);
2112                    ElementHandlerOutput::Break { event, allow_any }
2113                }
2114                DeserializerArtifact::Deserializer(deserializer) => {
2115                    *self.state__ =
2116                        SchemaContentDeserializerState::Override(values, Some(deserializer));
2117                    ElementHandlerOutput::from_event_end(event, allow_any)
2118                }
2119            })
2120        }
2121        fn handle_annotation<'de>(
2122            &mut self,
2123            helper: &mut DeserializeHelper,
2124            mut values: Option<super::Annotation>,
2125            output: DeserializerOutput<'de, super::Annotation>,
2126            fallback: &mut Option<SchemaContentDeserializerState>,
2127        ) -> Result<ElementHandlerOutput<'de>, Error> {
2128            let DeserializerOutput {
2129                artifact,
2130                event,
2131                allow_any,
2132            } = output;
2133            if artifact.is_none() {
2134                *self.state__ = match fallback.take() {
2135                    None if values.is_none() => {
2136                        *self.state__ = SchemaContentDeserializerState::Init__;
2137                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
2138                    }
2139                    None => SchemaContentDeserializerState::Annotation(values, None),
2140                    Some(SchemaContentDeserializerState::Annotation(_, Some(deserializer))) => {
2141                        SchemaContentDeserializerState::Annotation(values, Some(deserializer))
2142                    }
2143                    _ => unreachable!(),
2144                };
2145                return Ok(ElementHandlerOutput::break_(event, allow_any));
2146            }
2147            match fallback.take() {
2148                None => (),
2149                Some(SchemaContentDeserializerState::Annotation(_, Some(deserializer))) => {
2150                    let data = deserializer.finish(helper)?;
2151                    SchemaContentDeserializer::store_annotation(&mut values, data)?;
2152                }
2153                Some(_) => unreachable!(),
2154            }
2155            Ok(match artifact {
2156                DeserializerArtifact::None => unreachable!(),
2157                DeserializerArtifact::Data(data) => {
2158                    SchemaContentDeserializer::store_annotation(&mut values, data)?;
2159                    let data = SchemaContentDeserializer::finish_state(
2160                        helper,
2161                        SchemaContentDeserializerState::Annotation(values, None),
2162                    )?;
2163                    *self.state__ = SchemaContentDeserializerState::Done__(data);
2164                    ElementHandlerOutput::Break { event, allow_any }
2165                }
2166                DeserializerArtifact::Deserializer(deserializer) => {
2167                    *self.state__ =
2168                        SchemaContentDeserializerState::Annotation(values, Some(deserializer));
2169                    ElementHandlerOutput::from_event_end(event, allow_any)
2170                }
2171            })
2172        }
2173        fn handle_default_open_content<'de>(
2174            &mut self,
2175            helper: &mut DeserializeHelper,
2176            mut values: Option<super::DefaultOpenContent>,
2177            output: DeserializerOutput<'de, super::DefaultOpenContent>,
2178            fallback: &mut Option<SchemaContentDeserializerState>,
2179        ) -> Result<ElementHandlerOutput<'de>, Error> {
2180            let DeserializerOutput {
2181                artifact,
2182                event,
2183                allow_any,
2184            } = output;
2185            if artifact.is_none() {
2186                *self.state__ = match fallback.take() {
2187                    None if values.is_none() => {
2188                        *self.state__ = SchemaContentDeserializerState::Init__;
2189                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
2190                    }
2191                    None => SchemaContentDeserializerState::DefaultOpenContent(values, None),
2192                    Some(SchemaContentDeserializerState::DefaultOpenContent(
2193                        _,
2194                        Some(deserializer),
2195                    )) => SchemaContentDeserializerState::DefaultOpenContent(
2196                        values,
2197                        Some(deserializer),
2198                    ),
2199                    _ => unreachable!(),
2200                };
2201                return Ok(ElementHandlerOutput::break_(event, allow_any));
2202            }
2203            match fallback.take() {
2204                None => (),
2205                Some(SchemaContentDeserializerState::DefaultOpenContent(_, Some(deserializer))) => {
2206                    let data = deserializer.finish(helper)?;
2207                    SchemaContentDeserializer::store_default_open_content(&mut values, data)?;
2208                }
2209                Some(_) => unreachable!(),
2210            }
2211            Ok(match artifact {
2212                DeserializerArtifact::None => unreachable!(),
2213                DeserializerArtifact::Data(data) => {
2214                    SchemaContentDeserializer::store_default_open_content(&mut values, data)?;
2215                    let data = SchemaContentDeserializer::finish_state(
2216                        helper,
2217                        SchemaContentDeserializerState::DefaultOpenContent(values, None),
2218                    )?;
2219                    *self.state__ = SchemaContentDeserializerState::Done__(data);
2220                    ElementHandlerOutput::Break { event, allow_any }
2221                }
2222                DeserializerArtifact::Deserializer(deserializer) => {
2223                    *self.state__ = SchemaContentDeserializerState::DefaultOpenContent(
2224                        values,
2225                        Some(deserializer),
2226                    );
2227                    ElementHandlerOutput::from_event_end(event, allow_any)
2228                }
2229            })
2230        }
2231        fn handle_simple_type<'de>(
2232            &mut self,
2233            helper: &mut DeserializeHelper,
2234            mut values: Option<super::SimpleBaseType>,
2235            output: DeserializerOutput<'de, super::SimpleBaseType>,
2236            fallback: &mut Option<SchemaContentDeserializerState>,
2237        ) -> Result<ElementHandlerOutput<'de>, Error> {
2238            let DeserializerOutput {
2239                artifact,
2240                event,
2241                allow_any,
2242            } = output;
2243            if artifact.is_none() {
2244                *self.state__ = match fallback.take() {
2245                    None if values.is_none() => {
2246                        *self.state__ = SchemaContentDeserializerState::Init__;
2247                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
2248                    }
2249                    None => SchemaContentDeserializerState::SimpleType(values, None),
2250                    Some(SchemaContentDeserializerState::SimpleType(_, Some(deserializer))) => {
2251                        SchemaContentDeserializerState::SimpleType(values, Some(deserializer))
2252                    }
2253                    _ => unreachable!(),
2254                };
2255                return Ok(ElementHandlerOutput::break_(event, allow_any));
2256            }
2257            match fallback.take() {
2258                None => (),
2259                Some(SchemaContentDeserializerState::SimpleType(_, Some(deserializer))) => {
2260                    let data = deserializer.finish(helper)?;
2261                    SchemaContentDeserializer::store_simple_type(&mut values, data)?;
2262                }
2263                Some(_) => unreachable!(),
2264            }
2265            Ok(match artifact {
2266                DeserializerArtifact::None => unreachable!(),
2267                DeserializerArtifact::Data(data) => {
2268                    SchemaContentDeserializer::store_simple_type(&mut values, data)?;
2269                    let data = SchemaContentDeserializer::finish_state(
2270                        helper,
2271                        SchemaContentDeserializerState::SimpleType(values, None),
2272                    )?;
2273                    *self.state__ = SchemaContentDeserializerState::Done__(data);
2274                    ElementHandlerOutput::Break { event, allow_any }
2275                }
2276                DeserializerArtifact::Deserializer(deserializer) => {
2277                    *self.state__ =
2278                        SchemaContentDeserializerState::SimpleType(values, Some(deserializer));
2279                    ElementHandlerOutput::from_event_end(event, allow_any)
2280                }
2281            })
2282        }
2283        fn handle_complex_type<'de>(
2284            &mut self,
2285            helper: &mut DeserializeHelper,
2286            mut values: Option<super::ComplexBaseType>,
2287            output: DeserializerOutput<'de, super::ComplexBaseType>,
2288            fallback: &mut Option<SchemaContentDeserializerState>,
2289        ) -> Result<ElementHandlerOutput<'de>, Error> {
2290            let DeserializerOutput {
2291                artifact,
2292                event,
2293                allow_any,
2294            } = output;
2295            if artifact.is_none() {
2296                *self.state__ = match fallback.take() {
2297                    None if values.is_none() => {
2298                        *self.state__ = SchemaContentDeserializerState::Init__;
2299                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
2300                    }
2301                    None => SchemaContentDeserializerState::ComplexType(values, None),
2302                    Some(SchemaContentDeserializerState::ComplexType(_, Some(deserializer))) => {
2303                        SchemaContentDeserializerState::ComplexType(values, Some(deserializer))
2304                    }
2305                    _ => unreachable!(),
2306                };
2307                return Ok(ElementHandlerOutput::break_(event, allow_any));
2308            }
2309            match fallback.take() {
2310                None => (),
2311                Some(SchemaContentDeserializerState::ComplexType(_, Some(deserializer))) => {
2312                    let data = deserializer.finish(helper)?;
2313                    SchemaContentDeserializer::store_complex_type(&mut values, data)?;
2314                }
2315                Some(_) => unreachable!(),
2316            }
2317            Ok(match artifact {
2318                DeserializerArtifact::None => unreachable!(),
2319                DeserializerArtifact::Data(data) => {
2320                    SchemaContentDeserializer::store_complex_type(&mut values, data)?;
2321                    let data = SchemaContentDeserializer::finish_state(
2322                        helper,
2323                        SchemaContentDeserializerState::ComplexType(values, None),
2324                    )?;
2325                    *self.state__ = SchemaContentDeserializerState::Done__(data);
2326                    ElementHandlerOutput::Break { event, allow_any }
2327                }
2328                DeserializerArtifact::Deserializer(deserializer) => {
2329                    *self.state__ =
2330                        SchemaContentDeserializerState::ComplexType(values, Some(deserializer));
2331                    ElementHandlerOutput::from_event_end(event, allow_any)
2332                }
2333            })
2334        }
2335        fn handle_group<'de>(
2336            &mut self,
2337            helper: &mut DeserializeHelper,
2338            mut values: Option<super::GroupType>,
2339            output: DeserializerOutput<'de, super::GroupType>,
2340            fallback: &mut Option<SchemaContentDeserializerState>,
2341        ) -> Result<ElementHandlerOutput<'de>, Error> {
2342            let DeserializerOutput {
2343                artifact,
2344                event,
2345                allow_any,
2346            } = output;
2347            if artifact.is_none() {
2348                *self.state__ = match fallback.take() {
2349                    None if values.is_none() => {
2350                        *self.state__ = SchemaContentDeserializerState::Init__;
2351                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
2352                    }
2353                    None => SchemaContentDeserializerState::Group(values, None),
2354                    Some(SchemaContentDeserializerState::Group(_, Some(deserializer))) => {
2355                        SchemaContentDeserializerState::Group(values, Some(deserializer))
2356                    }
2357                    _ => unreachable!(),
2358                };
2359                return Ok(ElementHandlerOutput::break_(event, allow_any));
2360            }
2361            match fallback.take() {
2362                None => (),
2363                Some(SchemaContentDeserializerState::Group(_, Some(deserializer))) => {
2364                    let data = deserializer.finish(helper)?;
2365                    SchemaContentDeserializer::store_group(&mut values, data)?;
2366                }
2367                Some(_) => unreachable!(),
2368            }
2369            Ok(match artifact {
2370                DeserializerArtifact::None => unreachable!(),
2371                DeserializerArtifact::Data(data) => {
2372                    SchemaContentDeserializer::store_group(&mut values, data)?;
2373                    let data = SchemaContentDeserializer::finish_state(
2374                        helper,
2375                        SchemaContentDeserializerState::Group(values, None),
2376                    )?;
2377                    *self.state__ = SchemaContentDeserializerState::Done__(data);
2378                    ElementHandlerOutput::Break { event, allow_any }
2379                }
2380                DeserializerArtifact::Deserializer(deserializer) => {
2381                    *self.state__ =
2382                        SchemaContentDeserializerState::Group(values, Some(deserializer));
2383                    ElementHandlerOutput::from_event_end(event, allow_any)
2384                }
2385            })
2386        }
2387        fn handle_attribute_group<'de>(
2388            &mut self,
2389            helper: &mut DeserializeHelper,
2390            mut values: Option<super::AttributeGroupType>,
2391            output: DeserializerOutput<'de, super::AttributeGroupType>,
2392            fallback: &mut Option<SchemaContentDeserializerState>,
2393        ) -> Result<ElementHandlerOutput<'de>, Error> {
2394            let DeserializerOutput {
2395                artifact,
2396                event,
2397                allow_any,
2398            } = output;
2399            if artifact.is_none() {
2400                *self.state__ = match fallback.take() {
2401                    None if values.is_none() => {
2402                        *self.state__ = SchemaContentDeserializerState::Init__;
2403                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
2404                    }
2405                    None => SchemaContentDeserializerState::AttributeGroup(values, None),
2406                    Some(SchemaContentDeserializerState::AttributeGroup(_, Some(deserializer))) => {
2407                        SchemaContentDeserializerState::AttributeGroup(values, Some(deserializer))
2408                    }
2409                    _ => unreachable!(),
2410                };
2411                return Ok(ElementHandlerOutput::break_(event, allow_any));
2412            }
2413            match fallback.take() {
2414                None => (),
2415                Some(SchemaContentDeserializerState::AttributeGroup(_, Some(deserializer))) => {
2416                    let data = deserializer.finish(helper)?;
2417                    SchemaContentDeserializer::store_attribute_group(&mut values, data)?;
2418                }
2419                Some(_) => unreachable!(),
2420            }
2421            Ok(match artifact {
2422                DeserializerArtifact::None => unreachable!(),
2423                DeserializerArtifact::Data(data) => {
2424                    SchemaContentDeserializer::store_attribute_group(&mut values, data)?;
2425                    let data = SchemaContentDeserializer::finish_state(
2426                        helper,
2427                        SchemaContentDeserializerState::AttributeGroup(values, None),
2428                    )?;
2429                    *self.state__ = SchemaContentDeserializerState::Done__(data);
2430                    ElementHandlerOutput::Break { event, allow_any }
2431                }
2432                DeserializerArtifact::Deserializer(deserializer) => {
2433                    *self.state__ =
2434                        SchemaContentDeserializerState::AttributeGroup(values, Some(deserializer));
2435                    ElementHandlerOutput::from_event_end(event, allow_any)
2436                }
2437            })
2438        }
2439        fn handle_element<'de>(
2440            &mut self,
2441            helper: &mut DeserializeHelper,
2442            mut values: Option<super::ElementType>,
2443            output: DeserializerOutput<'de, super::ElementType>,
2444            fallback: &mut Option<SchemaContentDeserializerState>,
2445        ) -> Result<ElementHandlerOutput<'de>, Error> {
2446            let DeserializerOutput {
2447                artifact,
2448                event,
2449                allow_any,
2450            } = output;
2451            if artifact.is_none() {
2452                *self.state__ = match fallback.take() {
2453                    None if values.is_none() => {
2454                        *self.state__ = SchemaContentDeserializerState::Init__;
2455                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
2456                    }
2457                    None => SchemaContentDeserializerState::Element(values, None),
2458                    Some(SchemaContentDeserializerState::Element(_, Some(deserializer))) => {
2459                        SchemaContentDeserializerState::Element(values, Some(deserializer))
2460                    }
2461                    _ => unreachable!(),
2462                };
2463                return Ok(ElementHandlerOutput::break_(event, allow_any));
2464            }
2465            match fallback.take() {
2466                None => (),
2467                Some(SchemaContentDeserializerState::Element(_, Some(deserializer))) => {
2468                    let data = deserializer.finish(helper)?;
2469                    SchemaContentDeserializer::store_element(&mut values, data)?;
2470                }
2471                Some(_) => unreachable!(),
2472            }
2473            Ok(match artifact {
2474                DeserializerArtifact::None => unreachable!(),
2475                DeserializerArtifact::Data(data) => {
2476                    SchemaContentDeserializer::store_element(&mut values, data)?;
2477                    let data = SchemaContentDeserializer::finish_state(
2478                        helper,
2479                        SchemaContentDeserializerState::Element(values, None),
2480                    )?;
2481                    *self.state__ = SchemaContentDeserializerState::Done__(data);
2482                    ElementHandlerOutput::Break { event, allow_any }
2483                }
2484                DeserializerArtifact::Deserializer(deserializer) => {
2485                    *self.state__ =
2486                        SchemaContentDeserializerState::Element(values, Some(deserializer));
2487                    ElementHandlerOutput::from_event_end(event, allow_any)
2488                }
2489            })
2490        }
2491        fn handle_attribute<'de>(
2492            &mut self,
2493            helper: &mut DeserializeHelper,
2494            mut values: Option<super::AttributeType>,
2495            output: DeserializerOutput<'de, super::AttributeType>,
2496            fallback: &mut Option<SchemaContentDeserializerState>,
2497        ) -> Result<ElementHandlerOutput<'de>, Error> {
2498            let DeserializerOutput {
2499                artifact,
2500                event,
2501                allow_any,
2502            } = output;
2503            if artifact.is_none() {
2504                *self.state__ = match fallback.take() {
2505                    None if values.is_none() => {
2506                        *self.state__ = SchemaContentDeserializerState::Init__;
2507                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
2508                    }
2509                    None => SchemaContentDeserializerState::Attribute(values, None),
2510                    Some(SchemaContentDeserializerState::Attribute(_, Some(deserializer))) => {
2511                        SchemaContentDeserializerState::Attribute(values, Some(deserializer))
2512                    }
2513                    _ => unreachable!(),
2514                };
2515                return Ok(ElementHandlerOutput::break_(event, allow_any));
2516            }
2517            match fallback.take() {
2518                None => (),
2519                Some(SchemaContentDeserializerState::Attribute(_, Some(deserializer))) => {
2520                    let data = deserializer.finish(helper)?;
2521                    SchemaContentDeserializer::store_attribute(&mut values, data)?;
2522                }
2523                Some(_) => unreachable!(),
2524            }
2525            Ok(match artifact {
2526                DeserializerArtifact::None => unreachable!(),
2527                DeserializerArtifact::Data(data) => {
2528                    SchemaContentDeserializer::store_attribute(&mut values, data)?;
2529                    let data = SchemaContentDeserializer::finish_state(
2530                        helper,
2531                        SchemaContentDeserializerState::Attribute(values, None),
2532                    )?;
2533                    *self.state__ = SchemaContentDeserializerState::Done__(data);
2534                    ElementHandlerOutput::Break { event, allow_any }
2535                }
2536                DeserializerArtifact::Deserializer(deserializer) => {
2537                    *self.state__ =
2538                        SchemaContentDeserializerState::Attribute(values, Some(deserializer));
2539                    ElementHandlerOutput::from_event_end(event, allow_any)
2540                }
2541            })
2542        }
2543        fn handle_notation<'de>(
2544            &mut self,
2545            helper: &mut DeserializeHelper,
2546            mut values: Option<super::Notation>,
2547            output: DeserializerOutput<'de, super::Notation>,
2548            fallback: &mut Option<SchemaContentDeserializerState>,
2549        ) -> Result<ElementHandlerOutput<'de>, Error> {
2550            let DeserializerOutput {
2551                artifact,
2552                event,
2553                allow_any,
2554            } = output;
2555            if artifact.is_none() {
2556                *self.state__ = match fallback.take() {
2557                    None if values.is_none() => {
2558                        *self.state__ = SchemaContentDeserializerState::Init__;
2559                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
2560                    }
2561                    None => SchemaContentDeserializerState::Notation(values, None),
2562                    Some(SchemaContentDeserializerState::Notation(_, Some(deserializer))) => {
2563                        SchemaContentDeserializerState::Notation(values, Some(deserializer))
2564                    }
2565                    _ => unreachable!(),
2566                };
2567                return Ok(ElementHandlerOutput::break_(event, allow_any));
2568            }
2569            match fallback.take() {
2570                None => (),
2571                Some(SchemaContentDeserializerState::Notation(_, Some(deserializer))) => {
2572                    let data = deserializer.finish(helper)?;
2573                    SchemaContentDeserializer::store_notation(&mut values, data)?;
2574                }
2575                Some(_) => unreachable!(),
2576            }
2577            Ok(match artifact {
2578                DeserializerArtifact::None => unreachable!(),
2579                DeserializerArtifact::Data(data) => {
2580                    SchemaContentDeserializer::store_notation(&mut values, data)?;
2581                    let data = SchemaContentDeserializer::finish_state(
2582                        helper,
2583                        SchemaContentDeserializerState::Notation(values, None),
2584                    )?;
2585                    *self.state__ = SchemaContentDeserializerState::Done__(data);
2586                    ElementHandlerOutput::Break { event, allow_any }
2587                }
2588                DeserializerArtifact::Deserializer(deserializer) => {
2589                    *self.state__ =
2590                        SchemaContentDeserializerState::Notation(values, Some(deserializer));
2591                    ElementHandlerOutput::from_event_end(event, allow_any)
2592                }
2593            })
2594        }
2595    }
2596    impl<'de> Deserializer<'de, super::SchemaContent> for Box<SchemaContentDeserializer> {
2597        fn init(
2598            helper: &mut DeserializeHelper,
2599            event: Event<'de>,
2600        ) -> DeserializerResult<'de, super::SchemaContent> {
2601            let deserializer = Box::new(SchemaContentDeserializer {
2602                state__: Box::new(SchemaContentDeserializerState::Init__),
2603            });
2604            let mut output = deserializer.next(helper, event)?;
2605            output.artifact = match output.artifact {
2606                DeserializerArtifact::Deserializer(x)
2607                    if matches!(&*x.state__, SchemaContentDeserializerState::Init__) =>
2608                {
2609                    DeserializerArtifact::None
2610                }
2611                artifact => artifact,
2612            };
2613            Ok(output)
2614        }
2615        fn next(
2616            mut self,
2617            helper: &mut DeserializeHelper,
2618            event: Event<'de>,
2619        ) -> DeserializerResult<'de, super::SchemaContent> {
2620            use SchemaContentDeserializerState as S;
2621            let mut event = event;
2622            let mut fallback = None;
2623            let (event, allow_any) = loop {
2624                let state = replace(&mut *self.state__, S::Unknown__);
2625                event = match (state, event) {
2626                    (S::Unknown__, _) => unreachable!(),
2627                    (S::Include(values, Some(deserializer)), event) => {
2628                        let output = deserializer.next(helper, event)?;
2629                        match self.handle_include(helper, values, output, &mut fallback)? {
2630                            ElementHandlerOutput::Break { event, allow_any } => {
2631                                break (event, allow_any)
2632                            }
2633                            ElementHandlerOutput::Continue { event, .. } => event,
2634                        }
2635                    }
2636                    (S::Import(values, Some(deserializer)), event) => {
2637                        let output = deserializer.next(helper, event)?;
2638                        match self.handle_import(helper, values, output, &mut fallback)? {
2639                            ElementHandlerOutput::Break { event, allow_any } => {
2640                                break (event, allow_any)
2641                            }
2642                            ElementHandlerOutput::Continue { event, .. } => event,
2643                        }
2644                    }
2645                    (S::Redefine(values, Some(deserializer)), event) => {
2646                        let output = deserializer.next(helper, event)?;
2647                        match self.handle_redefine(helper, values, output, &mut fallback)? {
2648                            ElementHandlerOutput::Break { event, allow_any } => {
2649                                break (event, allow_any)
2650                            }
2651                            ElementHandlerOutput::Continue { event, .. } => event,
2652                        }
2653                    }
2654                    (S::Override(values, Some(deserializer)), event) => {
2655                        let output = deserializer.next(helper, event)?;
2656                        match self.handle_override_(helper, values, output, &mut fallback)? {
2657                            ElementHandlerOutput::Break { event, allow_any } => {
2658                                break (event, allow_any)
2659                            }
2660                            ElementHandlerOutput::Continue { event, .. } => event,
2661                        }
2662                    }
2663                    (S::Annotation(values, Some(deserializer)), event) => {
2664                        let output = deserializer.next(helper, event)?;
2665                        match self.handle_annotation(helper, values, output, &mut fallback)? {
2666                            ElementHandlerOutput::Break { event, allow_any } => {
2667                                break (event, allow_any)
2668                            }
2669                            ElementHandlerOutput::Continue { event, .. } => event,
2670                        }
2671                    }
2672                    (S::DefaultOpenContent(values, Some(deserializer)), event) => {
2673                        let output = deserializer.next(helper, event)?;
2674                        match self.handle_default_open_content(
2675                            helper,
2676                            values,
2677                            output,
2678                            &mut fallback,
2679                        )? {
2680                            ElementHandlerOutput::Break { event, allow_any } => {
2681                                break (event, allow_any)
2682                            }
2683                            ElementHandlerOutput::Continue { event, .. } => event,
2684                        }
2685                    }
2686                    (S::SimpleType(values, Some(deserializer)), event) => {
2687                        let output = deserializer.next(helper, event)?;
2688                        match self.handle_simple_type(helper, values, output, &mut fallback)? {
2689                            ElementHandlerOutput::Break { event, allow_any } => {
2690                                break (event, allow_any)
2691                            }
2692                            ElementHandlerOutput::Continue { event, .. } => event,
2693                        }
2694                    }
2695                    (S::ComplexType(values, Some(deserializer)), event) => {
2696                        let output = deserializer.next(helper, event)?;
2697                        match self.handle_complex_type(helper, values, output, &mut fallback)? {
2698                            ElementHandlerOutput::Break { event, allow_any } => {
2699                                break (event, allow_any)
2700                            }
2701                            ElementHandlerOutput::Continue { event, .. } => event,
2702                        }
2703                    }
2704                    (S::Group(values, Some(deserializer)), event) => {
2705                        let output = deserializer.next(helper, event)?;
2706                        match self.handle_group(helper, values, output, &mut fallback)? {
2707                            ElementHandlerOutput::Break { event, allow_any } => {
2708                                break (event, allow_any)
2709                            }
2710                            ElementHandlerOutput::Continue { event, .. } => event,
2711                        }
2712                    }
2713                    (S::AttributeGroup(values, Some(deserializer)), event) => {
2714                        let output = deserializer.next(helper, event)?;
2715                        match self.handle_attribute_group(helper, values, output, &mut fallback)? {
2716                            ElementHandlerOutput::Break { event, allow_any } => {
2717                                break (event, allow_any)
2718                            }
2719                            ElementHandlerOutput::Continue { event, .. } => event,
2720                        }
2721                    }
2722                    (S::Element(values, Some(deserializer)), event) => {
2723                        let output = deserializer.next(helper, event)?;
2724                        match self.handle_element(helper, values, output, &mut fallback)? {
2725                            ElementHandlerOutput::Break { event, allow_any } => {
2726                                break (event, allow_any)
2727                            }
2728                            ElementHandlerOutput::Continue { event, .. } => event,
2729                        }
2730                    }
2731                    (S::Attribute(values, Some(deserializer)), event) => {
2732                        let output = deserializer.next(helper, event)?;
2733                        match self.handle_attribute(helper, values, output, &mut fallback)? {
2734                            ElementHandlerOutput::Break { event, allow_any } => {
2735                                break (event, allow_any)
2736                            }
2737                            ElementHandlerOutput::Continue { event, .. } => event,
2738                        }
2739                    }
2740                    (S::Notation(values, Some(deserializer)), event) => {
2741                        let output = deserializer.next(helper, event)?;
2742                        match self.handle_notation(helper, values, output, &mut fallback)? {
2743                            ElementHandlerOutput::Break { event, allow_any } => {
2744                                break (event, allow_any)
2745                            }
2746                            ElementHandlerOutput::Continue { event, .. } => event,
2747                        }
2748                    }
2749                    (state, event @ Event::End(_)) => {
2750                        return Ok(DeserializerOutput {
2751                            artifact: DeserializerArtifact::Data(
2752                                SchemaContentDeserializer::finish_state(helper, state)?,
2753                            ),
2754                            event: DeserializerEvent::Continue(event),
2755                            allow_any: false,
2756                        });
2757                    }
2758                    (S::Init__, event) => match self.find_suitable(helper, event, &mut fallback)? {
2759                        ElementHandlerOutput::Break { event, allow_any } => {
2760                            break (event, allow_any)
2761                        }
2762                        ElementHandlerOutput::Continue { event, .. } => event,
2763                    },
2764                    (S::Include(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
2765                        let output = helper.init_start_tag_deserializer(
2766                            event,
2767                            Some(&super::NS_XS),
2768                            b"include",
2769                            false,
2770                        )?;
2771                        match self.handle_include(helper, values, output, &mut fallback)? {
2772                            ElementHandlerOutput::Break { event, allow_any } => {
2773                                break (event, allow_any)
2774                            }
2775                            ElementHandlerOutput::Continue { event, .. } => event,
2776                        }
2777                    }
2778                    (S::Import(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
2779                        let output = helper.init_start_tag_deserializer(
2780                            event,
2781                            Some(&super::NS_XS),
2782                            b"import",
2783                            false,
2784                        )?;
2785                        match self.handle_import(helper, values, output, &mut fallback)? {
2786                            ElementHandlerOutput::Break { event, allow_any } => {
2787                                break (event, allow_any)
2788                            }
2789                            ElementHandlerOutput::Continue { event, .. } => event,
2790                        }
2791                    }
2792                    (S::Redefine(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
2793                        let output = helper.init_start_tag_deserializer(
2794                            event,
2795                            Some(&super::NS_XS),
2796                            b"redefine",
2797                            true,
2798                        )?;
2799                        match self.handle_redefine(helper, values, output, &mut fallback)? {
2800                            ElementHandlerOutput::Break { event, allow_any } => {
2801                                break (event, allow_any)
2802                            }
2803                            ElementHandlerOutput::Continue { event, .. } => event,
2804                        }
2805                    }
2806                    (S::Override(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
2807                        let output = helper.init_start_tag_deserializer(
2808                            event,
2809                            Some(&super::NS_XS),
2810                            b"override",
2811                            true,
2812                        )?;
2813                        match self.handle_override_(helper, values, output, &mut fallback)? {
2814                            ElementHandlerOutput::Break { event, allow_any } => {
2815                                break (event, allow_any)
2816                            }
2817                            ElementHandlerOutput::Continue { event, .. } => event,
2818                        }
2819                    }
2820                    (S::Annotation(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
2821                        let output = helper.init_start_tag_deserializer(
2822                            event,
2823                            Some(&super::NS_XS),
2824                            b"annotation",
2825                            false,
2826                        )?;
2827                        match self.handle_annotation(helper, values, output, &mut fallback)? {
2828                            ElementHandlerOutput::Break { event, allow_any } => {
2829                                break (event, allow_any)
2830                            }
2831                            ElementHandlerOutput::Continue { event, .. } => event,
2832                        }
2833                    }
2834                    (
2835                        S::DefaultOpenContent(values, None),
2836                        event @ (Event::Start(_) | Event::Empty(_)),
2837                    ) => {
2838                        let output = helper.init_start_tag_deserializer(
2839                            event,
2840                            Some(&super::NS_XS),
2841                            b"defaultOpenContent",
2842                            false,
2843                        )?;
2844                        match self.handle_default_open_content(
2845                            helper,
2846                            values,
2847                            output,
2848                            &mut fallback,
2849                        )? {
2850                            ElementHandlerOutput::Break { event, allow_any } => {
2851                                break (event, allow_any)
2852                            }
2853                            ElementHandlerOutput::Continue { event, .. } => event,
2854                        }
2855                    }
2856                    (S::SimpleType(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
2857                        let output = helper.init_start_tag_deserializer(
2858                            event,
2859                            Some(&super::NS_XS),
2860                            b"simpleType",
2861                            true,
2862                        )?;
2863                        match self.handle_simple_type(helper, values, output, &mut fallback)? {
2864                            ElementHandlerOutput::Break { event, allow_any } => {
2865                                break (event, allow_any)
2866                            }
2867                            ElementHandlerOutput::Continue { event, .. } => event,
2868                        }
2869                    }
2870                    (S::ComplexType(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
2871                        let output = helper.init_start_tag_deserializer(
2872                            event,
2873                            Some(&super::NS_XS),
2874                            b"complexType",
2875                            true,
2876                        )?;
2877                        match self.handle_complex_type(helper, values, output, &mut fallback)? {
2878                            ElementHandlerOutput::Break { event, allow_any } => {
2879                                break (event, allow_any)
2880                            }
2881                            ElementHandlerOutput::Continue { event, .. } => event,
2882                        }
2883                    }
2884                    (S::Group(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
2885                        let output = helper.init_start_tag_deserializer(
2886                            event,
2887                            Some(&super::NS_XS),
2888                            b"group",
2889                            true,
2890                        )?;
2891                        match self.handle_group(helper, values, output, &mut fallback)? {
2892                            ElementHandlerOutput::Break { event, allow_any } => {
2893                                break (event, allow_any)
2894                            }
2895                            ElementHandlerOutput::Continue { event, .. } => event,
2896                        }
2897                    }
2898                    (
2899                        S::AttributeGroup(values, None),
2900                        event @ (Event::Start(_) | Event::Empty(_)),
2901                    ) => {
2902                        let output = helper.init_start_tag_deserializer(
2903                            event,
2904                            Some(&super::NS_XS),
2905                            b"attributeGroup",
2906                            false,
2907                        )?;
2908                        match self.handle_attribute_group(helper, values, output, &mut fallback)? {
2909                            ElementHandlerOutput::Break { event, allow_any } => {
2910                                break (event, allow_any)
2911                            }
2912                            ElementHandlerOutput::Continue { event, .. } => event,
2913                        }
2914                    }
2915                    (S::Element(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
2916                        let output = helper.init_start_tag_deserializer(
2917                            event,
2918                            Some(&super::NS_XS),
2919                            b"element",
2920                            true,
2921                        )?;
2922                        match self.handle_element(helper, values, output, &mut fallback)? {
2923                            ElementHandlerOutput::Break { event, allow_any } => {
2924                                break (event, allow_any)
2925                            }
2926                            ElementHandlerOutput::Continue { event, .. } => event,
2927                        }
2928                    }
2929                    (S::Attribute(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
2930                        let output = helper.init_start_tag_deserializer(
2931                            event,
2932                            Some(&super::NS_XS),
2933                            b"attribute",
2934                            false,
2935                        )?;
2936                        match self.handle_attribute(helper, values, output, &mut fallback)? {
2937                            ElementHandlerOutput::Break { event, allow_any } => {
2938                                break (event, allow_any)
2939                            }
2940                            ElementHandlerOutput::Continue { event, .. } => event,
2941                        }
2942                    }
2943                    (S::Notation(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
2944                        let output = helper.init_start_tag_deserializer(
2945                            event,
2946                            Some(&super::NS_XS),
2947                            b"notation",
2948                            false,
2949                        )?;
2950                        match self.handle_notation(helper, values, output, &mut fallback)? {
2951                            ElementHandlerOutput::Break { event, allow_any } => {
2952                                break (event, allow_any)
2953                            }
2954                            ElementHandlerOutput::Continue { event, .. } => event,
2955                        }
2956                    }
2957                    (s @ S::Done__(_), event) => {
2958                        *self.state__ = s;
2959                        break (DeserializerEvent::Continue(event), false);
2960                    }
2961                    (state, event) => {
2962                        *self.state__ = state;
2963                        break (DeserializerEvent::Break(event), false);
2964                    }
2965                }
2966            };
2967            let artifact = if matches!(&*self.state__, S::Done__(_)) {
2968                DeserializerArtifact::Data(self.finish(helper)?)
2969            } else {
2970                DeserializerArtifact::Deserializer(self)
2971            };
2972            Ok(DeserializerOutput {
2973                artifact,
2974                event,
2975                allow_any,
2976            })
2977        }
2978        fn finish(self, helper: &mut DeserializeHelper) -> Result<super::SchemaContent, Error> {
2979            SchemaContentDeserializer::finish_state(helper, *self.state__)
2980        }
2981    }
2982    #[derive(Debug)]
2983    pub struct IncludeDeserializer {
2984        id: Option<String>,
2985        schema_location: String,
2986        annotation: Option<super::Annotation>,
2987        state__: Box<IncludeDeserializerState>,
2988    }
2989    #[derive(Debug)]
2990    enum IncludeDeserializerState {
2991        Init__,
2992        Annotation(Option<<super::Annotation as WithDeserializer>::Deserializer>),
2993        Done__,
2994        Unknown__,
2995    }
2996    impl IncludeDeserializer {
2997        fn from_bytes_start(
2998            helper: &mut DeserializeHelper,
2999            bytes_start: &BytesStart<'_>,
3000        ) -> Result<Box<Self>, Error> {
3001            let mut id: Option<String> = None;
3002            let mut schema_location: Option<String> = None;
3003            for attrib in helper.filter_xmlns_attributes(bytes_start) {
3004                let attrib = attrib?;
3005                if matches!(
3006                    helper.resolve_local_name(attrib.key, &super::NS_XS),
3007                    Some(b"id")
3008                ) {
3009                    helper.read_attrib(&mut id, b"id", &attrib.value)?;
3010                } else if matches!(
3011                    helper.resolve_local_name(attrib.key, &super::NS_XS),
3012                    Some(b"schemaLocation")
3013                ) {
3014                    helper.read_attrib(&mut schema_location, b"schemaLocation", &attrib.value)?;
3015                }
3016            }
3017            Ok(Box::new(Self {
3018                id: id,
3019                schema_location: schema_location
3020                    .ok_or_else(|| ErrorKind::MissingAttribute("schemaLocation".into()))?,
3021                annotation: None,
3022                state__: Box::new(IncludeDeserializerState::Init__),
3023            }))
3024        }
3025        fn finish_state(
3026            &mut self,
3027            helper: &mut DeserializeHelper,
3028            state: IncludeDeserializerState,
3029        ) -> Result<(), Error> {
3030            use IncludeDeserializerState as S;
3031            match state {
3032                S::Annotation(Some(deserializer)) => {
3033                    self.store_annotation(deserializer.finish(helper)?)?
3034                }
3035                _ => (),
3036            }
3037            Ok(())
3038        }
3039        fn store_annotation(&mut self, value: super::Annotation) -> Result<(), Error> {
3040            if self.annotation.is_some() {
3041                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
3042                    b"annotation",
3043                )))?;
3044            }
3045            self.annotation = Some(value);
3046            Ok(())
3047        }
3048        fn handle_annotation<'de>(
3049            &mut self,
3050            helper: &mut DeserializeHelper,
3051            output: DeserializerOutput<'de, super::Annotation>,
3052            fallback: &mut Option<IncludeDeserializerState>,
3053        ) -> Result<ElementHandlerOutput<'de>, Error> {
3054            let DeserializerOutput {
3055                artifact,
3056                event,
3057                allow_any,
3058            } = output;
3059            if artifact.is_none() {
3060                fallback.get_or_insert(IncludeDeserializerState::Annotation(None));
3061                *self.state__ = IncludeDeserializerState::Done__;
3062                return Ok(ElementHandlerOutput::from_event(event, allow_any));
3063            }
3064            if let Some(fallback) = fallback.take() {
3065                self.finish_state(helper, fallback)?;
3066            }
3067            Ok(match artifact {
3068                DeserializerArtifact::None => unreachable!(),
3069                DeserializerArtifact::Data(data) => {
3070                    self.store_annotation(data)?;
3071                    *self.state__ = IncludeDeserializerState::Done__;
3072                    ElementHandlerOutput::from_event(event, allow_any)
3073                }
3074                DeserializerArtifact::Deserializer(deserializer) => {
3075                    let ret = ElementHandlerOutput::from_event(event, allow_any);
3076                    match &ret {
3077                        ElementHandlerOutput::Continue { .. } => {
3078                            fallback.get_or_insert(IncludeDeserializerState::Annotation(Some(
3079                                deserializer,
3080                            )));
3081                            *self.state__ = IncludeDeserializerState::Done__;
3082                        }
3083                        ElementHandlerOutput::Break { .. } => {
3084                            *self.state__ =
3085                                IncludeDeserializerState::Annotation(Some(deserializer));
3086                        }
3087                    }
3088                    ret
3089                }
3090            })
3091        }
3092    }
3093    impl<'de> Deserializer<'de, super::Include> for Box<IncludeDeserializer> {
3094        fn init(
3095            helper: &mut DeserializeHelper,
3096            event: Event<'de>,
3097        ) -> DeserializerResult<'de, super::Include> {
3098            helper.init_deserializer_from_start_event(event, IncludeDeserializer::from_bytes_start)
3099        }
3100        fn next(
3101            mut self,
3102            helper: &mut DeserializeHelper,
3103            event: Event<'de>,
3104        ) -> DeserializerResult<'de, super::Include> {
3105            use IncludeDeserializerState as S;
3106            let mut event = event;
3107            let mut fallback = None;
3108            let mut allow_any_element = false;
3109            let (event, allow_any) = loop {
3110                let state = replace(&mut *self.state__, S::Unknown__);
3111                event = match (state, event) {
3112                    (S::Unknown__, _) => unreachable!(),
3113                    (S::Annotation(Some(deserializer)), event) => {
3114                        let output = deserializer.next(helper, event)?;
3115                        match self.handle_annotation(helper, output, &mut fallback)? {
3116                            ElementHandlerOutput::Continue { event, allow_any } => {
3117                                allow_any_element = allow_any_element || allow_any;
3118                                event
3119                            }
3120                            ElementHandlerOutput::Break { event, allow_any } => {
3121                                break (event, allow_any)
3122                            }
3123                        }
3124                    }
3125                    (_, Event::End(_)) => {
3126                        if let Some(fallback) = fallback.take() {
3127                            self.finish_state(helper, fallback)?;
3128                        }
3129                        return Ok(DeserializerOutput {
3130                            artifact: DeserializerArtifact::Data(self.finish(helper)?),
3131                            event: DeserializerEvent::None,
3132                            allow_any: false,
3133                        });
3134                    }
3135                    (S::Init__, event) => {
3136                        fallback.get_or_insert(S::Init__);
3137                        *self.state__ = IncludeDeserializerState::Annotation(None);
3138                        event
3139                    }
3140                    (S::Annotation(None), event @ (Event::Start(_) | Event::Empty(_))) => {
3141                        let output = helper.init_start_tag_deserializer(
3142                            event,
3143                            Some(&super::NS_XS),
3144                            b"annotation",
3145                            false,
3146                        )?;
3147                        match self.handle_annotation(helper, output, &mut fallback)? {
3148                            ElementHandlerOutput::Continue { event, allow_any } => {
3149                                allow_any_element = allow_any_element || allow_any;
3150                                event
3151                            }
3152                            ElementHandlerOutput::Break { event, allow_any } => {
3153                                break (event, allow_any)
3154                            }
3155                        }
3156                    }
3157                    (S::Done__, event) => {
3158                        fallback.get_or_insert(S::Done__);
3159                        break (DeserializerEvent::Continue(event), allow_any_element);
3160                    }
3161                    (state, event) => {
3162                        *self.state__ = state;
3163                        break (DeserializerEvent::Break(event), false);
3164                    }
3165                }
3166            };
3167            if let Some(fallback) = fallback {
3168                *self.state__ = fallback;
3169            }
3170            Ok(DeserializerOutput {
3171                artifact: DeserializerArtifact::Deserializer(self),
3172                event,
3173                allow_any,
3174            })
3175        }
3176        fn finish(mut self, helper: &mut DeserializeHelper) -> Result<super::Include, Error> {
3177            let state = replace(&mut *self.state__, IncludeDeserializerState::Unknown__);
3178            self.finish_state(helper, state)?;
3179            Ok(super::Include {
3180                id: self.id,
3181                schema_location: self.schema_location,
3182                annotation: self.annotation,
3183            })
3184        }
3185    }
3186    #[derive(Debug)]
3187    pub struct ImportDeserializer {
3188        id: Option<String>,
3189        namespace: Option<String>,
3190        schema_location: Option<String>,
3191        annotation: Option<super::Annotation>,
3192        state__: Box<ImportDeserializerState>,
3193    }
3194    #[derive(Debug)]
3195    enum ImportDeserializerState {
3196        Init__,
3197        Annotation(Option<<super::Annotation as WithDeserializer>::Deserializer>),
3198        Done__,
3199        Unknown__,
3200    }
3201    impl ImportDeserializer {
3202        fn from_bytes_start(
3203            helper: &mut DeserializeHelper,
3204            bytes_start: &BytesStart<'_>,
3205        ) -> Result<Box<Self>, Error> {
3206            let mut id: Option<String> = None;
3207            let mut namespace: Option<String> = None;
3208            let mut schema_location: Option<String> = None;
3209            for attrib in helper.filter_xmlns_attributes(bytes_start) {
3210                let attrib = attrib?;
3211                if matches!(
3212                    helper.resolve_local_name(attrib.key, &super::NS_XS),
3213                    Some(b"id")
3214                ) {
3215                    helper.read_attrib(&mut id, b"id", &attrib.value)?;
3216                } else if matches!(
3217                    helper.resolve_local_name(attrib.key, &super::NS_XS),
3218                    Some(b"namespace")
3219                ) {
3220                    helper.read_attrib(&mut namespace, b"namespace", &attrib.value)?;
3221                } else if matches!(
3222                    helper.resolve_local_name(attrib.key, &super::NS_XS),
3223                    Some(b"schemaLocation")
3224                ) {
3225                    helper.read_attrib(&mut schema_location, b"schemaLocation", &attrib.value)?;
3226                }
3227            }
3228            Ok(Box::new(Self {
3229                id: id,
3230                namespace: namespace,
3231                schema_location: schema_location,
3232                annotation: None,
3233                state__: Box::new(ImportDeserializerState::Init__),
3234            }))
3235        }
3236        fn finish_state(
3237            &mut self,
3238            helper: &mut DeserializeHelper,
3239            state: ImportDeserializerState,
3240        ) -> Result<(), Error> {
3241            use ImportDeserializerState as S;
3242            match state {
3243                S::Annotation(Some(deserializer)) => {
3244                    self.store_annotation(deserializer.finish(helper)?)?
3245                }
3246                _ => (),
3247            }
3248            Ok(())
3249        }
3250        fn store_annotation(&mut self, value: super::Annotation) -> Result<(), Error> {
3251            if self.annotation.is_some() {
3252                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
3253                    b"annotation",
3254                )))?;
3255            }
3256            self.annotation = Some(value);
3257            Ok(())
3258        }
3259        fn handle_annotation<'de>(
3260            &mut self,
3261            helper: &mut DeserializeHelper,
3262            output: DeserializerOutput<'de, super::Annotation>,
3263            fallback: &mut Option<ImportDeserializerState>,
3264        ) -> Result<ElementHandlerOutput<'de>, Error> {
3265            let DeserializerOutput {
3266                artifact,
3267                event,
3268                allow_any,
3269            } = output;
3270            if artifact.is_none() {
3271                fallback.get_or_insert(ImportDeserializerState::Annotation(None));
3272                *self.state__ = ImportDeserializerState::Done__;
3273                return Ok(ElementHandlerOutput::from_event(event, allow_any));
3274            }
3275            if let Some(fallback) = fallback.take() {
3276                self.finish_state(helper, fallback)?;
3277            }
3278            Ok(match artifact {
3279                DeserializerArtifact::None => unreachable!(),
3280                DeserializerArtifact::Data(data) => {
3281                    self.store_annotation(data)?;
3282                    *self.state__ = ImportDeserializerState::Done__;
3283                    ElementHandlerOutput::from_event(event, allow_any)
3284                }
3285                DeserializerArtifact::Deserializer(deserializer) => {
3286                    let ret = ElementHandlerOutput::from_event(event, allow_any);
3287                    match &ret {
3288                        ElementHandlerOutput::Continue { .. } => {
3289                            fallback.get_or_insert(ImportDeserializerState::Annotation(Some(
3290                                deserializer,
3291                            )));
3292                            *self.state__ = ImportDeserializerState::Done__;
3293                        }
3294                        ElementHandlerOutput::Break { .. } => {
3295                            *self.state__ = ImportDeserializerState::Annotation(Some(deserializer));
3296                        }
3297                    }
3298                    ret
3299                }
3300            })
3301        }
3302    }
3303    impl<'de> Deserializer<'de, super::Import> for Box<ImportDeserializer> {
3304        fn init(
3305            helper: &mut DeserializeHelper,
3306            event: Event<'de>,
3307        ) -> DeserializerResult<'de, super::Import> {
3308            helper.init_deserializer_from_start_event(event, ImportDeserializer::from_bytes_start)
3309        }
3310        fn next(
3311            mut self,
3312            helper: &mut DeserializeHelper,
3313            event: Event<'de>,
3314        ) -> DeserializerResult<'de, super::Import> {
3315            use ImportDeserializerState as S;
3316            let mut event = event;
3317            let mut fallback = None;
3318            let mut allow_any_element = false;
3319            let (event, allow_any) = loop {
3320                let state = replace(&mut *self.state__, S::Unknown__);
3321                event = match (state, event) {
3322                    (S::Unknown__, _) => unreachable!(),
3323                    (S::Annotation(Some(deserializer)), event) => {
3324                        let output = deserializer.next(helper, event)?;
3325                        match self.handle_annotation(helper, output, &mut fallback)? {
3326                            ElementHandlerOutput::Continue { event, allow_any } => {
3327                                allow_any_element = allow_any_element || allow_any;
3328                                event
3329                            }
3330                            ElementHandlerOutput::Break { event, allow_any } => {
3331                                break (event, allow_any)
3332                            }
3333                        }
3334                    }
3335                    (_, Event::End(_)) => {
3336                        if let Some(fallback) = fallback.take() {
3337                            self.finish_state(helper, fallback)?;
3338                        }
3339                        return Ok(DeserializerOutput {
3340                            artifact: DeserializerArtifact::Data(self.finish(helper)?),
3341                            event: DeserializerEvent::None,
3342                            allow_any: false,
3343                        });
3344                    }
3345                    (S::Init__, event) => {
3346                        fallback.get_or_insert(S::Init__);
3347                        *self.state__ = ImportDeserializerState::Annotation(None);
3348                        event
3349                    }
3350                    (S::Annotation(None), event @ (Event::Start(_) | Event::Empty(_))) => {
3351                        let output = helper.init_start_tag_deserializer(
3352                            event,
3353                            Some(&super::NS_XS),
3354                            b"annotation",
3355                            false,
3356                        )?;
3357                        match self.handle_annotation(helper, output, &mut fallback)? {
3358                            ElementHandlerOutput::Continue { event, allow_any } => {
3359                                allow_any_element = allow_any_element || allow_any;
3360                                event
3361                            }
3362                            ElementHandlerOutput::Break { event, allow_any } => {
3363                                break (event, allow_any)
3364                            }
3365                        }
3366                    }
3367                    (S::Done__, event) => {
3368                        fallback.get_or_insert(S::Done__);
3369                        break (DeserializerEvent::Continue(event), allow_any_element);
3370                    }
3371                    (state, event) => {
3372                        *self.state__ = state;
3373                        break (DeserializerEvent::Break(event), false);
3374                    }
3375                }
3376            };
3377            if let Some(fallback) = fallback {
3378                *self.state__ = fallback;
3379            }
3380            Ok(DeserializerOutput {
3381                artifact: DeserializerArtifact::Deserializer(self),
3382                event,
3383                allow_any,
3384            })
3385        }
3386        fn finish(mut self, helper: &mut DeserializeHelper) -> Result<super::Import, Error> {
3387            let state = replace(&mut *self.state__, ImportDeserializerState::Unknown__);
3388            self.finish_state(helper, state)?;
3389            Ok(super::Import {
3390                id: self.id,
3391                namespace: self.namespace,
3392                schema_location: self.schema_location,
3393                annotation: self.annotation,
3394            })
3395        }
3396    }
3397    #[derive(Debug)]
3398    pub struct RedefineDeserializer {
3399        schema_location: String,
3400        id: Option<String>,
3401        content: Vec<super::RedefineContent>,
3402        state__: Box<RedefineDeserializerState>,
3403    }
3404    #[derive(Debug)]
3405    enum RedefineDeserializerState {
3406        Init__,
3407        Next__,
3408        Content__(<super::RedefineContent as WithDeserializer>::Deserializer),
3409        Unknown__,
3410    }
3411    impl RedefineDeserializer {
3412        fn from_bytes_start(
3413            helper: &mut DeserializeHelper,
3414            bytes_start: &BytesStart<'_>,
3415        ) -> Result<Box<Self>, Error> {
3416            let mut schema_location: Option<String> = None;
3417            let mut id: Option<String> = None;
3418            for attrib in helper.filter_xmlns_attributes(bytes_start) {
3419                let attrib = attrib?;
3420                if matches!(
3421                    helper.resolve_local_name(attrib.key, &super::NS_XS),
3422                    Some(b"schemaLocation")
3423                ) {
3424                    helper.read_attrib(&mut schema_location, b"schemaLocation", &attrib.value)?;
3425                } else if matches!(
3426                    helper.resolve_local_name(attrib.key, &super::NS_XS),
3427                    Some(b"id")
3428                ) {
3429                    helper.read_attrib(&mut id, b"id", &attrib.value)?;
3430                }
3431            }
3432            Ok(Box::new(Self {
3433                schema_location: schema_location
3434                    .ok_or_else(|| ErrorKind::MissingAttribute("schemaLocation".into()))?,
3435                id: id,
3436                content: Vec::new(),
3437                state__: Box::new(RedefineDeserializerState::Init__),
3438            }))
3439        }
3440        fn finish_state(
3441            &mut self,
3442            helper: &mut DeserializeHelper,
3443            state: RedefineDeserializerState,
3444        ) -> Result<(), Error> {
3445            if let RedefineDeserializerState::Content__(deserializer) = state {
3446                self.store_content(deserializer.finish(helper)?)?;
3447            }
3448            Ok(())
3449        }
3450        fn store_content(&mut self, value: super::RedefineContent) -> Result<(), Error> {
3451            self.content.push(value);
3452            Ok(())
3453        }
3454        fn handle_content<'de>(
3455            &mut self,
3456            helper: &mut DeserializeHelper,
3457            output: DeserializerOutput<'de, super::RedefineContent>,
3458            fallback: &mut Option<RedefineDeserializerState>,
3459        ) -> Result<ElementHandlerOutput<'de>, Error> {
3460            let DeserializerOutput {
3461                artifact,
3462                event,
3463                allow_any,
3464            } = output;
3465            if artifact.is_none() {
3466                *self.state__ = fallback.take().unwrap_or(RedefineDeserializerState::Next__);
3467                return Ok(ElementHandlerOutput::break_(event, allow_any));
3468            }
3469            if let Some(fallback) = fallback.take() {
3470                self.finish_state(helper, fallback)?;
3471            }
3472            Ok(match artifact {
3473                DeserializerArtifact::None => unreachable!(),
3474                DeserializerArtifact::Data(data) => {
3475                    self.store_content(data)?;
3476                    *self.state__ = RedefineDeserializerState::Next__;
3477                    ElementHandlerOutput::from_event(event, allow_any)
3478                }
3479                DeserializerArtifact::Deserializer(deserializer) => {
3480                    let ret = ElementHandlerOutput::from_event(event, allow_any);
3481                    match &ret {
3482                        ElementHandlerOutput::Break { .. } => {
3483                            *self.state__ = RedefineDeserializerState::Content__(deserializer);
3484                        }
3485                        ElementHandlerOutput::Continue { .. } => {
3486                            fallback
3487                                .get_or_insert(RedefineDeserializerState::Content__(deserializer));
3488                            *self.state__ = RedefineDeserializerState::Next__;
3489                        }
3490                    }
3491                    ret
3492                }
3493            })
3494        }
3495    }
3496    impl<'de> Deserializer<'de, super::Redefine> for Box<RedefineDeserializer> {
3497        fn init(
3498            helper: &mut DeserializeHelper,
3499            event: Event<'de>,
3500        ) -> DeserializerResult<'de, super::Redefine> {
3501            helper.init_deserializer_from_start_event(event, RedefineDeserializer::from_bytes_start)
3502        }
3503        fn next(
3504            mut self,
3505            helper: &mut DeserializeHelper,
3506            event: Event<'de>,
3507        ) -> DeserializerResult<'de, super::Redefine> {
3508            use RedefineDeserializerState as S;
3509            let mut event = event;
3510            let mut fallback = None;
3511            let (event, allow_any) = loop {
3512                let state = replace(&mut *self.state__, S::Unknown__);
3513                event = match (state, event) {
3514                    (S::Unknown__, _) => unreachable!(),
3515                    (S::Content__(deserializer), event) => {
3516                        let output = deserializer.next(helper, event)?;
3517                        match self.handle_content(helper, output, &mut fallback)? {
3518                            ElementHandlerOutput::Break { event, allow_any } => {
3519                                break (event, allow_any)
3520                            }
3521                            ElementHandlerOutput::Continue { event, .. } => event,
3522                        }
3523                    }
3524                    (_, Event::End(_)) => {
3525                        return Ok(DeserializerOutput {
3526                            artifact: DeserializerArtifact::Data(self.finish(helper)?),
3527                            event: DeserializerEvent::None,
3528                            allow_any: false,
3529                        });
3530                    }
3531                    (state @ (S::Init__ | S::Next__), event) => {
3532                        fallback.get_or_insert(state);
3533                        let output =
3534                            <super::RedefineContent as WithDeserializer>::Deserializer::init(
3535                                helper, event,
3536                            )?;
3537                        match self.handle_content(helper, output, &mut fallback)? {
3538                            ElementHandlerOutput::Break { event, allow_any } => {
3539                                break (event, allow_any)
3540                            }
3541                            ElementHandlerOutput::Continue { event, .. } => event,
3542                        }
3543                    }
3544                }
3545            };
3546            let artifact = DeserializerArtifact::Deserializer(self);
3547            Ok(DeserializerOutput {
3548                artifact,
3549                event,
3550                allow_any,
3551            })
3552        }
3553        fn finish(mut self, helper: &mut DeserializeHelper) -> Result<super::Redefine, Error> {
3554            let state = replace(&mut *self.state__, RedefineDeserializerState::Unknown__);
3555            self.finish_state(helper, state)?;
3556            Ok(super::Redefine {
3557                schema_location: self.schema_location,
3558                id: self.id,
3559                content: self.content,
3560            })
3561        }
3562    }
3563    #[derive(Debug)]
3564    pub struct RedefineContentDeserializer {
3565        state__: Box<RedefineContentDeserializerState>,
3566    }
3567    #[derive(Debug)]
3568    pub enum RedefineContentDeserializerState {
3569        Init__,
3570        Annotation(
3571            Option<super::Annotation>,
3572            Option<<super::Annotation as WithDeserializer>::Deserializer>,
3573        ),
3574        SimpleType(
3575            Option<super::SimpleBaseType>,
3576            Option<<super::SimpleBaseType as WithDeserializer>::Deserializer>,
3577        ),
3578        ComplexType(
3579            Option<super::ComplexBaseType>,
3580            Option<<super::ComplexBaseType as WithDeserializer>::Deserializer>,
3581        ),
3582        Group(
3583            Option<super::GroupType>,
3584            Option<<super::GroupType as WithDeserializer>::Deserializer>,
3585        ),
3586        AttributeGroup(
3587            Option<super::AttributeGroupType>,
3588            Option<<super::AttributeGroupType as WithDeserializer>::Deserializer>,
3589        ),
3590        Done__(super::RedefineContent),
3591        Unknown__,
3592    }
3593    impl RedefineContentDeserializer {
3594        fn find_suitable<'de>(
3595            &mut self,
3596            helper: &mut DeserializeHelper,
3597            event: Event<'de>,
3598            fallback: &mut Option<RedefineContentDeserializerState>,
3599        ) -> Result<ElementHandlerOutput<'de>, Error> {
3600            if let Event::Start(x) | Event::Empty(x) = &event {
3601                if matches!(
3602                    helper.resolve_local_name(x.name(), &super::NS_XS),
3603                    Some(b"annotation")
3604                ) {
3605                    let output =
3606                        <super::Annotation as WithDeserializer>::Deserializer::init(helper, event)?;
3607                    return self.handle_annotation(
3608                        helper,
3609                        Default::default(),
3610                        output,
3611                        &mut *fallback,
3612                    );
3613                }
3614                if matches!(
3615                    helper.resolve_local_name(x.name(), &super::NS_XS),
3616                    Some(b"simpleType")
3617                ) {
3618                    let output = <super::SimpleBaseType as WithDeserializer>::Deserializer::init(
3619                        helper, event,
3620                    )?;
3621                    return self.handle_simple_type(
3622                        helper,
3623                        Default::default(),
3624                        output,
3625                        &mut *fallback,
3626                    );
3627                }
3628                if matches!(
3629                    helper.resolve_local_name(x.name(), &super::NS_XS),
3630                    Some(b"complexType")
3631                ) {
3632                    let output = <super::ComplexBaseType as WithDeserializer>::Deserializer::init(
3633                        helper, event,
3634                    )?;
3635                    return self.handle_complex_type(
3636                        helper,
3637                        Default::default(),
3638                        output,
3639                        &mut *fallback,
3640                    );
3641                }
3642                if matches!(
3643                    helper.resolve_local_name(x.name(), &super::NS_XS),
3644                    Some(b"group")
3645                ) {
3646                    let output =
3647                        <super::GroupType as WithDeserializer>::Deserializer::init(helper, event)?;
3648                    return self.handle_group(helper, Default::default(), output, &mut *fallback);
3649                }
3650                if matches!(
3651                    helper.resolve_local_name(x.name(), &super::NS_XS),
3652                    Some(b"attributeGroup")
3653                ) {
3654                    let output =
3655                        <super::AttributeGroupType as WithDeserializer>::Deserializer::init(
3656                            helper, event,
3657                        )?;
3658                    return self.handle_attribute_group(
3659                        helper,
3660                        Default::default(),
3661                        output,
3662                        &mut *fallback,
3663                    );
3664                }
3665            }
3666            *self.state__ = fallback
3667                .take()
3668                .unwrap_or(RedefineContentDeserializerState::Init__);
3669            Ok(ElementHandlerOutput::return_to_parent(event, false))
3670        }
3671        fn finish_state(
3672            helper: &mut DeserializeHelper,
3673            state: RedefineContentDeserializerState,
3674        ) -> Result<super::RedefineContent, Error> {
3675            use RedefineContentDeserializerState as S;
3676            match state {
3677                S::Unknown__ => unreachable!(),
3678                S::Init__ => Err(ErrorKind::MissingContent.into()),
3679                S::Annotation(mut values, deserializer) => {
3680                    if let Some(deserializer) = deserializer {
3681                        let value = deserializer.finish(helper)?;
3682                        RedefineContentDeserializer::store_annotation(&mut values, value)?;
3683                    }
3684                    Ok(super::RedefineContent::Annotation(values.ok_or_else(
3685                        || ErrorKind::MissingElement("annotation".into()),
3686                    )?))
3687                }
3688                S::SimpleType(mut values, deserializer) => {
3689                    if let Some(deserializer) = deserializer {
3690                        let value = deserializer.finish(helper)?;
3691                        RedefineContentDeserializer::store_simple_type(&mut values, value)?;
3692                    }
3693                    Ok(super::RedefineContent::SimpleType(values.ok_or_else(
3694                        || ErrorKind::MissingElement("simpleType".into()),
3695                    )?))
3696                }
3697                S::ComplexType(mut values, deserializer) => {
3698                    if let Some(deserializer) = deserializer {
3699                        let value = deserializer.finish(helper)?;
3700                        RedefineContentDeserializer::store_complex_type(&mut values, value)?;
3701                    }
3702                    Ok(super::RedefineContent::ComplexType(values.ok_or_else(
3703                        || ErrorKind::MissingElement("complexType".into()),
3704                    )?))
3705                }
3706                S::Group(mut values, deserializer) => {
3707                    if let Some(deserializer) = deserializer {
3708                        let value = deserializer.finish(helper)?;
3709                        RedefineContentDeserializer::store_group(&mut values, value)?;
3710                    }
3711                    Ok(super::RedefineContent::Group(values.ok_or_else(|| {
3712                        ErrorKind::MissingElement("group".into())
3713                    })?))
3714                }
3715                S::AttributeGroup(mut values, deserializer) => {
3716                    if let Some(deserializer) = deserializer {
3717                        let value = deserializer.finish(helper)?;
3718                        RedefineContentDeserializer::store_attribute_group(&mut values, value)?;
3719                    }
3720                    Ok(super::RedefineContent::AttributeGroup(values.ok_or_else(
3721                        || ErrorKind::MissingElement("attributeGroup".into()),
3722                    )?))
3723                }
3724                S::Done__(data) => Ok(data),
3725            }
3726        }
3727        fn store_annotation(
3728            values: &mut Option<super::Annotation>,
3729            value: super::Annotation,
3730        ) -> Result<(), Error> {
3731            if values.is_some() {
3732                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
3733                    b"annotation",
3734                )))?;
3735            }
3736            *values = Some(value);
3737            Ok(())
3738        }
3739        fn store_simple_type(
3740            values: &mut Option<super::SimpleBaseType>,
3741            value: super::SimpleBaseType,
3742        ) -> Result<(), Error> {
3743            if values.is_some() {
3744                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
3745                    b"simpleType",
3746                )))?;
3747            }
3748            *values = Some(value);
3749            Ok(())
3750        }
3751        fn store_complex_type(
3752            values: &mut Option<super::ComplexBaseType>,
3753            value: super::ComplexBaseType,
3754        ) -> Result<(), Error> {
3755            if values.is_some() {
3756                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
3757                    b"complexType",
3758                )))?;
3759            }
3760            *values = Some(value);
3761            Ok(())
3762        }
3763        fn store_group(
3764            values: &mut Option<super::GroupType>,
3765            value: super::GroupType,
3766        ) -> Result<(), Error> {
3767            if values.is_some() {
3768                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
3769                    b"group",
3770                )))?;
3771            }
3772            *values = Some(value);
3773            Ok(())
3774        }
3775        fn store_attribute_group(
3776            values: &mut Option<super::AttributeGroupType>,
3777            value: super::AttributeGroupType,
3778        ) -> Result<(), Error> {
3779            if values.is_some() {
3780                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
3781                    b"attributeGroup",
3782                )))?;
3783            }
3784            *values = Some(value);
3785            Ok(())
3786        }
3787        fn handle_annotation<'de>(
3788            &mut self,
3789            helper: &mut DeserializeHelper,
3790            mut values: Option<super::Annotation>,
3791            output: DeserializerOutput<'de, super::Annotation>,
3792            fallback: &mut Option<RedefineContentDeserializerState>,
3793        ) -> Result<ElementHandlerOutput<'de>, Error> {
3794            let DeserializerOutput {
3795                artifact,
3796                event,
3797                allow_any,
3798            } = output;
3799            if artifact.is_none() {
3800                *self.state__ = match fallback.take() {
3801                    None if values.is_none() => {
3802                        *self.state__ = RedefineContentDeserializerState::Init__;
3803                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
3804                    }
3805                    None => RedefineContentDeserializerState::Annotation(values, None),
3806                    Some(RedefineContentDeserializerState::Annotation(_, Some(deserializer))) => {
3807                        RedefineContentDeserializerState::Annotation(values, Some(deserializer))
3808                    }
3809                    _ => unreachable!(),
3810                };
3811                return Ok(ElementHandlerOutput::break_(event, allow_any));
3812            }
3813            match fallback.take() {
3814                None => (),
3815                Some(RedefineContentDeserializerState::Annotation(_, Some(deserializer))) => {
3816                    let data = deserializer.finish(helper)?;
3817                    RedefineContentDeserializer::store_annotation(&mut values, data)?;
3818                }
3819                Some(_) => unreachable!(),
3820            }
3821            Ok(match artifact {
3822                DeserializerArtifact::None => unreachable!(),
3823                DeserializerArtifact::Data(data) => {
3824                    RedefineContentDeserializer::store_annotation(&mut values, data)?;
3825                    let data = RedefineContentDeserializer::finish_state(
3826                        helper,
3827                        RedefineContentDeserializerState::Annotation(values, None),
3828                    )?;
3829                    *self.state__ = RedefineContentDeserializerState::Done__(data);
3830                    ElementHandlerOutput::Break { event, allow_any }
3831                }
3832                DeserializerArtifact::Deserializer(deserializer) => {
3833                    *self.state__ =
3834                        RedefineContentDeserializerState::Annotation(values, Some(deserializer));
3835                    ElementHandlerOutput::from_event_end(event, allow_any)
3836                }
3837            })
3838        }
3839        fn handle_simple_type<'de>(
3840            &mut self,
3841            helper: &mut DeserializeHelper,
3842            mut values: Option<super::SimpleBaseType>,
3843            output: DeserializerOutput<'de, super::SimpleBaseType>,
3844            fallback: &mut Option<RedefineContentDeserializerState>,
3845        ) -> Result<ElementHandlerOutput<'de>, Error> {
3846            let DeserializerOutput {
3847                artifact,
3848                event,
3849                allow_any,
3850            } = output;
3851            if artifact.is_none() {
3852                *self.state__ = match fallback.take() {
3853                    None if values.is_none() => {
3854                        *self.state__ = RedefineContentDeserializerState::Init__;
3855                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
3856                    }
3857                    None => RedefineContentDeserializerState::SimpleType(values, None),
3858                    Some(RedefineContentDeserializerState::SimpleType(_, Some(deserializer))) => {
3859                        RedefineContentDeserializerState::SimpleType(values, Some(deserializer))
3860                    }
3861                    _ => unreachable!(),
3862                };
3863                return Ok(ElementHandlerOutput::break_(event, allow_any));
3864            }
3865            match fallback.take() {
3866                None => (),
3867                Some(RedefineContentDeserializerState::SimpleType(_, Some(deserializer))) => {
3868                    let data = deserializer.finish(helper)?;
3869                    RedefineContentDeserializer::store_simple_type(&mut values, data)?;
3870                }
3871                Some(_) => unreachable!(),
3872            }
3873            Ok(match artifact {
3874                DeserializerArtifact::None => unreachable!(),
3875                DeserializerArtifact::Data(data) => {
3876                    RedefineContentDeserializer::store_simple_type(&mut values, data)?;
3877                    let data = RedefineContentDeserializer::finish_state(
3878                        helper,
3879                        RedefineContentDeserializerState::SimpleType(values, None),
3880                    )?;
3881                    *self.state__ = RedefineContentDeserializerState::Done__(data);
3882                    ElementHandlerOutput::Break { event, allow_any }
3883                }
3884                DeserializerArtifact::Deserializer(deserializer) => {
3885                    *self.state__ =
3886                        RedefineContentDeserializerState::SimpleType(values, Some(deserializer));
3887                    ElementHandlerOutput::from_event_end(event, allow_any)
3888                }
3889            })
3890        }
3891        fn handle_complex_type<'de>(
3892            &mut self,
3893            helper: &mut DeserializeHelper,
3894            mut values: Option<super::ComplexBaseType>,
3895            output: DeserializerOutput<'de, super::ComplexBaseType>,
3896            fallback: &mut Option<RedefineContentDeserializerState>,
3897        ) -> Result<ElementHandlerOutput<'de>, Error> {
3898            let DeserializerOutput {
3899                artifact,
3900                event,
3901                allow_any,
3902            } = output;
3903            if artifact.is_none() {
3904                *self.state__ = match fallback.take() {
3905                    None if values.is_none() => {
3906                        *self.state__ = RedefineContentDeserializerState::Init__;
3907                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
3908                    }
3909                    None => RedefineContentDeserializerState::ComplexType(values, None),
3910                    Some(RedefineContentDeserializerState::ComplexType(_, Some(deserializer))) => {
3911                        RedefineContentDeserializerState::ComplexType(values, Some(deserializer))
3912                    }
3913                    _ => unreachable!(),
3914                };
3915                return Ok(ElementHandlerOutput::break_(event, allow_any));
3916            }
3917            match fallback.take() {
3918                None => (),
3919                Some(RedefineContentDeserializerState::ComplexType(_, Some(deserializer))) => {
3920                    let data = deserializer.finish(helper)?;
3921                    RedefineContentDeserializer::store_complex_type(&mut values, data)?;
3922                }
3923                Some(_) => unreachable!(),
3924            }
3925            Ok(match artifact {
3926                DeserializerArtifact::None => unreachable!(),
3927                DeserializerArtifact::Data(data) => {
3928                    RedefineContentDeserializer::store_complex_type(&mut values, data)?;
3929                    let data = RedefineContentDeserializer::finish_state(
3930                        helper,
3931                        RedefineContentDeserializerState::ComplexType(values, None),
3932                    )?;
3933                    *self.state__ = RedefineContentDeserializerState::Done__(data);
3934                    ElementHandlerOutput::Break { event, allow_any }
3935                }
3936                DeserializerArtifact::Deserializer(deserializer) => {
3937                    *self.state__ =
3938                        RedefineContentDeserializerState::ComplexType(values, Some(deserializer));
3939                    ElementHandlerOutput::from_event_end(event, allow_any)
3940                }
3941            })
3942        }
3943        fn handle_group<'de>(
3944            &mut self,
3945            helper: &mut DeserializeHelper,
3946            mut values: Option<super::GroupType>,
3947            output: DeserializerOutput<'de, super::GroupType>,
3948            fallback: &mut Option<RedefineContentDeserializerState>,
3949        ) -> Result<ElementHandlerOutput<'de>, Error> {
3950            let DeserializerOutput {
3951                artifact,
3952                event,
3953                allow_any,
3954            } = output;
3955            if artifact.is_none() {
3956                *self.state__ = match fallback.take() {
3957                    None if values.is_none() => {
3958                        *self.state__ = RedefineContentDeserializerState::Init__;
3959                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
3960                    }
3961                    None => RedefineContentDeserializerState::Group(values, None),
3962                    Some(RedefineContentDeserializerState::Group(_, Some(deserializer))) => {
3963                        RedefineContentDeserializerState::Group(values, Some(deserializer))
3964                    }
3965                    _ => unreachable!(),
3966                };
3967                return Ok(ElementHandlerOutput::break_(event, allow_any));
3968            }
3969            match fallback.take() {
3970                None => (),
3971                Some(RedefineContentDeserializerState::Group(_, Some(deserializer))) => {
3972                    let data = deserializer.finish(helper)?;
3973                    RedefineContentDeserializer::store_group(&mut values, data)?;
3974                }
3975                Some(_) => unreachable!(),
3976            }
3977            Ok(match artifact {
3978                DeserializerArtifact::None => unreachable!(),
3979                DeserializerArtifact::Data(data) => {
3980                    RedefineContentDeserializer::store_group(&mut values, data)?;
3981                    let data = RedefineContentDeserializer::finish_state(
3982                        helper,
3983                        RedefineContentDeserializerState::Group(values, None),
3984                    )?;
3985                    *self.state__ = RedefineContentDeserializerState::Done__(data);
3986                    ElementHandlerOutput::Break { event, allow_any }
3987                }
3988                DeserializerArtifact::Deserializer(deserializer) => {
3989                    *self.state__ =
3990                        RedefineContentDeserializerState::Group(values, Some(deserializer));
3991                    ElementHandlerOutput::from_event_end(event, allow_any)
3992                }
3993            })
3994        }
3995        fn handle_attribute_group<'de>(
3996            &mut self,
3997            helper: &mut DeserializeHelper,
3998            mut values: Option<super::AttributeGroupType>,
3999            output: DeserializerOutput<'de, super::AttributeGroupType>,
4000            fallback: &mut Option<RedefineContentDeserializerState>,
4001        ) -> Result<ElementHandlerOutput<'de>, Error> {
4002            let DeserializerOutput {
4003                artifact,
4004                event,
4005                allow_any,
4006            } = output;
4007            if artifact.is_none() {
4008                *self.state__ = match fallback.take() {
4009                    None if values.is_none() => {
4010                        *self.state__ = RedefineContentDeserializerState::Init__;
4011                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
4012                    }
4013                    None => RedefineContentDeserializerState::AttributeGroup(values, None),
4014                    Some(RedefineContentDeserializerState::AttributeGroup(
4015                        _,
4016                        Some(deserializer),
4017                    )) => {
4018                        RedefineContentDeserializerState::AttributeGroup(values, Some(deserializer))
4019                    }
4020                    _ => unreachable!(),
4021                };
4022                return Ok(ElementHandlerOutput::break_(event, allow_any));
4023            }
4024            match fallback.take() {
4025                None => (),
4026                Some(RedefineContentDeserializerState::AttributeGroup(_, Some(deserializer))) => {
4027                    let data = deserializer.finish(helper)?;
4028                    RedefineContentDeserializer::store_attribute_group(&mut values, data)?;
4029                }
4030                Some(_) => unreachable!(),
4031            }
4032            Ok(match artifact {
4033                DeserializerArtifact::None => unreachable!(),
4034                DeserializerArtifact::Data(data) => {
4035                    RedefineContentDeserializer::store_attribute_group(&mut values, data)?;
4036                    let data = RedefineContentDeserializer::finish_state(
4037                        helper,
4038                        RedefineContentDeserializerState::AttributeGroup(values, None),
4039                    )?;
4040                    *self.state__ = RedefineContentDeserializerState::Done__(data);
4041                    ElementHandlerOutput::Break { event, allow_any }
4042                }
4043                DeserializerArtifact::Deserializer(deserializer) => {
4044                    *self.state__ = RedefineContentDeserializerState::AttributeGroup(
4045                        values,
4046                        Some(deserializer),
4047                    );
4048                    ElementHandlerOutput::from_event_end(event, allow_any)
4049                }
4050            })
4051        }
4052    }
4053    impl<'de> Deserializer<'de, super::RedefineContent> for Box<RedefineContentDeserializer> {
4054        fn init(
4055            helper: &mut DeserializeHelper,
4056            event: Event<'de>,
4057        ) -> DeserializerResult<'de, super::RedefineContent> {
4058            let deserializer = Box::new(RedefineContentDeserializer {
4059                state__: Box::new(RedefineContentDeserializerState::Init__),
4060            });
4061            let mut output = deserializer.next(helper, event)?;
4062            output.artifact = match output.artifact {
4063                DeserializerArtifact::Deserializer(x)
4064                    if matches!(&*x.state__, RedefineContentDeserializerState::Init__) =>
4065                {
4066                    DeserializerArtifact::None
4067                }
4068                artifact => artifact,
4069            };
4070            Ok(output)
4071        }
4072        fn next(
4073            mut self,
4074            helper: &mut DeserializeHelper,
4075            event: Event<'de>,
4076        ) -> DeserializerResult<'de, super::RedefineContent> {
4077            use RedefineContentDeserializerState as S;
4078            let mut event = event;
4079            let mut fallback = None;
4080            let (event, allow_any) = loop {
4081                let state = replace(&mut *self.state__, S::Unknown__);
4082                event = match (state, event) {
4083                    (S::Unknown__, _) => unreachable!(),
4084                    (S::Annotation(values, Some(deserializer)), event) => {
4085                        let output = deserializer.next(helper, event)?;
4086                        match self.handle_annotation(helper, values, output, &mut fallback)? {
4087                            ElementHandlerOutput::Break { event, allow_any } => {
4088                                break (event, allow_any)
4089                            }
4090                            ElementHandlerOutput::Continue { event, .. } => event,
4091                        }
4092                    }
4093                    (S::SimpleType(values, Some(deserializer)), event) => {
4094                        let output = deserializer.next(helper, event)?;
4095                        match self.handle_simple_type(helper, values, output, &mut fallback)? {
4096                            ElementHandlerOutput::Break { event, allow_any } => {
4097                                break (event, allow_any)
4098                            }
4099                            ElementHandlerOutput::Continue { event, .. } => event,
4100                        }
4101                    }
4102                    (S::ComplexType(values, Some(deserializer)), event) => {
4103                        let output = deserializer.next(helper, event)?;
4104                        match self.handle_complex_type(helper, values, output, &mut fallback)? {
4105                            ElementHandlerOutput::Break { event, allow_any } => {
4106                                break (event, allow_any)
4107                            }
4108                            ElementHandlerOutput::Continue { event, .. } => event,
4109                        }
4110                    }
4111                    (S::Group(values, Some(deserializer)), event) => {
4112                        let output = deserializer.next(helper, event)?;
4113                        match self.handle_group(helper, values, output, &mut fallback)? {
4114                            ElementHandlerOutput::Break { event, allow_any } => {
4115                                break (event, allow_any)
4116                            }
4117                            ElementHandlerOutput::Continue { event, .. } => event,
4118                        }
4119                    }
4120                    (S::AttributeGroup(values, Some(deserializer)), event) => {
4121                        let output = deserializer.next(helper, event)?;
4122                        match self.handle_attribute_group(helper, values, output, &mut fallback)? {
4123                            ElementHandlerOutput::Break { event, allow_any } => {
4124                                break (event, allow_any)
4125                            }
4126                            ElementHandlerOutput::Continue { event, .. } => event,
4127                        }
4128                    }
4129                    (state, event @ Event::End(_)) => {
4130                        return Ok(DeserializerOutput {
4131                            artifact: DeserializerArtifact::Data(
4132                                RedefineContentDeserializer::finish_state(helper, state)?,
4133                            ),
4134                            event: DeserializerEvent::Continue(event),
4135                            allow_any: false,
4136                        });
4137                    }
4138                    (S::Init__, event) => match self.find_suitable(helper, event, &mut fallback)? {
4139                        ElementHandlerOutput::Break { event, allow_any } => {
4140                            break (event, allow_any)
4141                        }
4142                        ElementHandlerOutput::Continue { event, .. } => event,
4143                    },
4144                    (S::Annotation(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
4145                        let output = helper.init_start_tag_deserializer(
4146                            event,
4147                            Some(&super::NS_XS),
4148                            b"annotation",
4149                            false,
4150                        )?;
4151                        match self.handle_annotation(helper, values, output, &mut fallback)? {
4152                            ElementHandlerOutput::Break { event, allow_any } => {
4153                                break (event, allow_any)
4154                            }
4155                            ElementHandlerOutput::Continue { event, .. } => event,
4156                        }
4157                    }
4158                    (S::SimpleType(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
4159                        let output = helper.init_start_tag_deserializer(
4160                            event,
4161                            Some(&super::NS_XS),
4162                            b"simpleType",
4163                            true,
4164                        )?;
4165                        match self.handle_simple_type(helper, values, output, &mut fallback)? {
4166                            ElementHandlerOutput::Break { event, allow_any } => {
4167                                break (event, allow_any)
4168                            }
4169                            ElementHandlerOutput::Continue { event, .. } => event,
4170                        }
4171                    }
4172                    (S::ComplexType(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
4173                        let output = helper.init_start_tag_deserializer(
4174                            event,
4175                            Some(&super::NS_XS),
4176                            b"complexType",
4177                            true,
4178                        )?;
4179                        match self.handle_complex_type(helper, values, output, &mut fallback)? {
4180                            ElementHandlerOutput::Break { event, allow_any } => {
4181                                break (event, allow_any)
4182                            }
4183                            ElementHandlerOutput::Continue { event, .. } => event,
4184                        }
4185                    }
4186                    (S::Group(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
4187                        let output = helper.init_start_tag_deserializer(
4188                            event,
4189                            Some(&super::NS_XS),
4190                            b"group",
4191                            true,
4192                        )?;
4193                        match self.handle_group(helper, values, output, &mut fallback)? {
4194                            ElementHandlerOutput::Break { event, allow_any } => {
4195                                break (event, allow_any)
4196                            }
4197                            ElementHandlerOutput::Continue { event, .. } => event,
4198                        }
4199                    }
4200                    (
4201                        S::AttributeGroup(values, None),
4202                        event @ (Event::Start(_) | Event::Empty(_)),
4203                    ) => {
4204                        let output = helper.init_start_tag_deserializer(
4205                            event,
4206                            Some(&super::NS_XS),
4207                            b"attributeGroup",
4208                            false,
4209                        )?;
4210                        match self.handle_attribute_group(helper, values, output, &mut fallback)? {
4211                            ElementHandlerOutput::Break { event, allow_any } => {
4212                                break (event, allow_any)
4213                            }
4214                            ElementHandlerOutput::Continue { event, .. } => event,
4215                        }
4216                    }
4217                    (s @ S::Done__(_), event) => {
4218                        *self.state__ = s;
4219                        break (DeserializerEvent::Continue(event), false);
4220                    }
4221                    (state, event) => {
4222                        *self.state__ = state;
4223                        break (DeserializerEvent::Break(event), false);
4224                    }
4225                }
4226            };
4227            let artifact = if matches!(&*self.state__, S::Done__(_)) {
4228                DeserializerArtifact::Data(self.finish(helper)?)
4229            } else {
4230                DeserializerArtifact::Deserializer(self)
4231            };
4232            Ok(DeserializerOutput {
4233                artifact,
4234                event,
4235                allow_any,
4236            })
4237        }
4238        fn finish(self, helper: &mut DeserializeHelper) -> Result<super::RedefineContent, Error> {
4239            RedefineContentDeserializer::finish_state(helper, *self.state__)
4240        }
4241    }
4242    #[derive(Debug)]
4243    pub struct OverrideDeserializer {
4244        schema_location: String,
4245        id: Option<String>,
4246        content: Vec<super::OverrideContent>,
4247        state__: Box<OverrideDeserializerState>,
4248    }
4249    #[derive(Debug)]
4250    enum OverrideDeserializerState {
4251        Init__,
4252        Next__,
4253        Content__(<super::OverrideContent as WithDeserializer>::Deserializer),
4254        Unknown__,
4255    }
4256    impl OverrideDeserializer {
4257        fn from_bytes_start(
4258            helper: &mut DeserializeHelper,
4259            bytes_start: &BytesStart<'_>,
4260        ) -> Result<Box<Self>, Error> {
4261            let mut schema_location: Option<String> = None;
4262            let mut id: Option<String> = None;
4263            for attrib in helper.filter_xmlns_attributes(bytes_start) {
4264                let attrib = attrib?;
4265                if matches!(
4266                    helper.resolve_local_name(attrib.key, &super::NS_XS),
4267                    Some(b"schemaLocation")
4268                ) {
4269                    helper.read_attrib(&mut schema_location, b"schemaLocation", &attrib.value)?;
4270                } else if matches!(
4271                    helper.resolve_local_name(attrib.key, &super::NS_XS),
4272                    Some(b"id")
4273                ) {
4274                    helper.read_attrib(&mut id, b"id", &attrib.value)?;
4275                }
4276            }
4277            Ok(Box::new(Self {
4278                schema_location: schema_location
4279                    .ok_or_else(|| ErrorKind::MissingAttribute("schemaLocation".into()))?,
4280                id: id,
4281                content: Vec::new(),
4282                state__: Box::new(OverrideDeserializerState::Init__),
4283            }))
4284        }
4285        fn finish_state(
4286            &mut self,
4287            helper: &mut DeserializeHelper,
4288            state: OverrideDeserializerState,
4289        ) -> Result<(), Error> {
4290            if let OverrideDeserializerState::Content__(deserializer) = state {
4291                self.store_content(deserializer.finish(helper)?)?;
4292            }
4293            Ok(())
4294        }
4295        fn store_content(&mut self, value: super::OverrideContent) -> Result<(), Error> {
4296            self.content.push(value);
4297            Ok(())
4298        }
4299        fn handle_content<'de>(
4300            &mut self,
4301            helper: &mut DeserializeHelper,
4302            output: DeserializerOutput<'de, super::OverrideContent>,
4303            fallback: &mut Option<OverrideDeserializerState>,
4304        ) -> Result<ElementHandlerOutput<'de>, Error> {
4305            let DeserializerOutput {
4306                artifact,
4307                event,
4308                allow_any,
4309            } = output;
4310            if artifact.is_none() {
4311                *self.state__ = fallback.take().unwrap_or(OverrideDeserializerState::Next__);
4312                return Ok(ElementHandlerOutput::break_(event, allow_any));
4313            }
4314            if let Some(fallback) = fallback.take() {
4315                self.finish_state(helper, fallback)?;
4316            }
4317            Ok(match artifact {
4318                DeserializerArtifact::None => unreachable!(),
4319                DeserializerArtifact::Data(data) => {
4320                    self.store_content(data)?;
4321                    *self.state__ = OverrideDeserializerState::Next__;
4322                    ElementHandlerOutput::from_event(event, allow_any)
4323                }
4324                DeserializerArtifact::Deserializer(deserializer) => {
4325                    let ret = ElementHandlerOutput::from_event(event, allow_any);
4326                    match &ret {
4327                        ElementHandlerOutput::Break { .. } => {
4328                            *self.state__ = OverrideDeserializerState::Content__(deserializer);
4329                        }
4330                        ElementHandlerOutput::Continue { .. } => {
4331                            fallback
4332                                .get_or_insert(OverrideDeserializerState::Content__(deserializer));
4333                            *self.state__ = OverrideDeserializerState::Next__;
4334                        }
4335                    }
4336                    ret
4337                }
4338            })
4339        }
4340    }
4341    impl<'de> Deserializer<'de, super::Override> for Box<OverrideDeserializer> {
4342        fn init(
4343            helper: &mut DeserializeHelper,
4344            event: Event<'de>,
4345        ) -> DeserializerResult<'de, super::Override> {
4346            helper.init_deserializer_from_start_event(event, OverrideDeserializer::from_bytes_start)
4347        }
4348        fn next(
4349            mut self,
4350            helper: &mut DeserializeHelper,
4351            event: Event<'de>,
4352        ) -> DeserializerResult<'de, super::Override> {
4353            use OverrideDeserializerState as S;
4354            let mut event = event;
4355            let mut fallback = None;
4356            let (event, allow_any) = loop {
4357                let state = replace(&mut *self.state__, S::Unknown__);
4358                event = match (state, event) {
4359                    (S::Unknown__, _) => unreachable!(),
4360                    (S::Content__(deserializer), event) => {
4361                        let output = deserializer.next(helper, event)?;
4362                        match self.handle_content(helper, output, &mut fallback)? {
4363                            ElementHandlerOutput::Break { event, allow_any } => {
4364                                break (event, allow_any)
4365                            }
4366                            ElementHandlerOutput::Continue { event, .. } => event,
4367                        }
4368                    }
4369                    (_, Event::End(_)) => {
4370                        return Ok(DeserializerOutput {
4371                            artifact: DeserializerArtifact::Data(self.finish(helper)?),
4372                            event: DeserializerEvent::None,
4373                            allow_any: false,
4374                        });
4375                    }
4376                    (state @ (S::Init__ | S::Next__), event) => {
4377                        fallback.get_or_insert(state);
4378                        let output =
4379                            <super::OverrideContent as WithDeserializer>::Deserializer::init(
4380                                helper, event,
4381                            )?;
4382                        match self.handle_content(helper, output, &mut fallback)? {
4383                            ElementHandlerOutput::Break { event, allow_any } => {
4384                                break (event, allow_any)
4385                            }
4386                            ElementHandlerOutput::Continue { event, .. } => event,
4387                        }
4388                    }
4389                }
4390            };
4391            let artifact = DeserializerArtifact::Deserializer(self);
4392            Ok(DeserializerOutput {
4393                artifact,
4394                event,
4395                allow_any,
4396            })
4397        }
4398        fn finish(mut self, helper: &mut DeserializeHelper) -> Result<super::Override, Error> {
4399            let state = replace(&mut *self.state__, OverrideDeserializerState::Unknown__);
4400            self.finish_state(helper, state)?;
4401            Ok(super::Override {
4402                schema_location: self.schema_location,
4403                id: self.id,
4404                content: self.content,
4405            })
4406        }
4407    }
4408    #[derive(Debug)]
4409    pub struct OverrideContentDeserializer {
4410        state__: Box<OverrideContentDeserializerState>,
4411    }
4412    #[derive(Debug)]
4413    pub enum OverrideContentDeserializerState {
4414        Init__,
4415        Annotation(
4416            Option<super::Annotation>,
4417            Option<<super::Annotation as WithDeserializer>::Deserializer>,
4418        ),
4419        SimpleType(
4420            Option<super::SimpleBaseType>,
4421            Option<<super::SimpleBaseType as WithDeserializer>::Deserializer>,
4422        ),
4423        ComplexType(
4424            Option<super::ComplexBaseType>,
4425            Option<<super::ComplexBaseType as WithDeserializer>::Deserializer>,
4426        ),
4427        Group(
4428            Option<super::GroupType>,
4429            Option<<super::GroupType as WithDeserializer>::Deserializer>,
4430        ),
4431        AttributeGroup(
4432            Option<super::AttributeGroupType>,
4433            Option<<super::AttributeGroupType as WithDeserializer>::Deserializer>,
4434        ),
4435        Element(
4436            Option<super::ElementType>,
4437            Option<<super::ElementType as WithDeserializer>::Deserializer>,
4438        ),
4439        Attribute(
4440            Option<super::AttributeType>,
4441            Option<<super::AttributeType as WithDeserializer>::Deserializer>,
4442        ),
4443        Notation(
4444            Option<super::Notation>,
4445            Option<<super::Notation as WithDeserializer>::Deserializer>,
4446        ),
4447        Done__(super::OverrideContent),
4448        Unknown__,
4449    }
4450    impl OverrideContentDeserializer {
4451        fn find_suitable<'de>(
4452            &mut self,
4453            helper: &mut DeserializeHelper,
4454            event: Event<'de>,
4455            fallback: &mut Option<OverrideContentDeserializerState>,
4456        ) -> Result<ElementHandlerOutput<'de>, Error> {
4457            if let Event::Start(x) | Event::Empty(x) = &event {
4458                if matches!(
4459                    helper.resolve_local_name(x.name(), &super::NS_XS),
4460                    Some(b"annotation")
4461                ) {
4462                    let output =
4463                        <super::Annotation as WithDeserializer>::Deserializer::init(helper, event)?;
4464                    return self.handle_annotation(
4465                        helper,
4466                        Default::default(),
4467                        output,
4468                        &mut *fallback,
4469                    );
4470                }
4471                if matches!(
4472                    helper.resolve_local_name(x.name(), &super::NS_XS),
4473                    Some(b"simpleType")
4474                ) {
4475                    let output = <super::SimpleBaseType as WithDeserializer>::Deserializer::init(
4476                        helper, event,
4477                    )?;
4478                    return self.handle_simple_type(
4479                        helper,
4480                        Default::default(),
4481                        output,
4482                        &mut *fallback,
4483                    );
4484                }
4485                if matches!(
4486                    helper.resolve_local_name(x.name(), &super::NS_XS),
4487                    Some(b"complexType")
4488                ) {
4489                    let output = <super::ComplexBaseType as WithDeserializer>::Deserializer::init(
4490                        helper, event,
4491                    )?;
4492                    return self.handle_complex_type(
4493                        helper,
4494                        Default::default(),
4495                        output,
4496                        &mut *fallback,
4497                    );
4498                }
4499                if matches!(
4500                    helper.resolve_local_name(x.name(), &super::NS_XS),
4501                    Some(b"group")
4502                ) {
4503                    let output =
4504                        <super::GroupType as WithDeserializer>::Deserializer::init(helper, event)?;
4505                    return self.handle_group(helper, Default::default(), output, &mut *fallback);
4506                }
4507                if matches!(
4508                    helper.resolve_local_name(x.name(), &super::NS_XS),
4509                    Some(b"attributeGroup")
4510                ) {
4511                    let output =
4512                        <super::AttributeGroupType as WithDeserializer>::Deserializer::init(
4513                            helper, event,
4514                        )?;
4515                    return self.handle_attribute_group(
4516                        helper,
4517                        Default::default(),
4518                        output,
4519                        &mut *fallback,
4520                    );
4521                }
4522                if matches!(
4523                    helper.resolve_local_name(x.name(), &super::NS_XS),
4524                    Some(b"element")
4525                ) {
4526                    let output = <super::ElementType as WithDeserializer>::Deserializer::init(
4527                        helper, event,
4528                    )?;
4529                    return self.handle_element(helper, Default::default(), output, &mut *fallback);
4530                }
4531                if matches!(
4532                    helper.resolve_local_name(x.name(), &super::NS_XS),
4533                    Some(b"attribute")
4534                ) {
4535                    let output = <super::AttributeType as WithDeserializer>::Deserializer::init(
4536                        helper, event,
4537                    )?;
4538                    return self.handle_attribute(
4539                        helper,
4540                        Default::default(),
4541                        output,
4542                        &mut *fallback,
4543                    );
4544                }
4545                if matches!(
4546                    helper.resolve_local_name(x.name(), &super::NS_XS),
4547                    Some(b"notation")
4548                ) {
4549                    let output =
4550                        <super::Notation as WithDeserializer>::Deserializer::init(helper, event)?;
4551                    return self.handle_notation(
4552                        helper,
4553                        Default::default(),
4554                        output,
4555                        &mut *fallback,
4556                    );
4557                }
4558            }
4559            *self.state__ = fallback
4560                .take()
4561                .unwrap_or(OverrideContentDeserializerState::Init__);
4562            Ok(ElementHandlerOutput::return_to_parent(event, false))
4563        }
4564        fn finish_state(
4565            helper: &mut DeserializeHelper,
4566            state: OverrideContentDeserializerState,
4567        ) -> Result<super::OverrideContent, Error> {
4568            use OverrideContentDeserializerState as S;
4569            match state {
4570                S::Unknown__ => unreachable!(),
4571                S::Init__ => Err(ErrorKind::MissingContent.into()),
4572                S::Annotation(mut values, deserializer) => {
4573                    if let Some(deserializer) = deserializer {
4574                        let value = deserializer.finish(helper)?;
4575                        OverrideContentDeserializer::store_annotation(&mut values, value)?;
4576                    }
4577                    Ok(super::OverrideContent::Annotation(values.ok_or_else(
4578                        || ErrorKind::MissingElement("annotation".into()),
4579                    )?))
4580                }
4581                S::SimpleType(mut values, deserializer) => {
4582                    if let Some(deserializer) = deserializer {
4583                        let value = deserializer.finish(helper)?;
4584                        OverrideContentDeserializer::store_simple_type(&mut values, value)?;
4585                    }
4586                    Ok(super::OverrideContent::SimpleType(values.ok_or_else(
4587                        || ErrorKind::MissingElement("simpleType".into()),
4588                    )?))
4589                }
4590                S::ComplexType(mut values, deserializer) => {
4591                    if let Some(deserializer) = deserializer {
4592                        let value = deserializer.finish(helper)?;
4593                        OverrideContentDeserializer::store_complex_type(&mut values, value)?;
4594                    }
4595                    Ok(super::OverrideContent::ComplexType(values.ok_or_else(
4596                        || ErrorKind::MissingElement("complexType".into()),
4597                    )?))
4598                }
4599                S::Group(mut values, deserializer) => {
4600                    if let Some(deserializer) = deserializer {
4601                        let value = deserializer.finish(helper)?;
4602                        OverrideContentDeserializer::store_group(&mut values, value)?;
4603                    }
4604                    Ok(super::OverrideContent::Group(values.ok_or_else(|| {
4605                        ErrorKind::MissingElement("group".into())
4606                    })?))
4607                }
4608                S::AttributeGroup(mut values, deserializer) => {
4609                    if let Some(deserializer) = deserializer {
4610                        let value = deserializer.finish(helper)?;
4611                        OverrideContentDeserializer::store_attribute_group(&mut values, value)?;
4612                    }
4613                    Ok(super::OverrideContent::AttributeGroup(values.ok_or_else(
4614                        || ErrorKind::MissingElement("attributeGroup".into()),
4615                    )?))
4616                }
4617                S::Element(mut values, deserializer) => {
4618                    if let Some(deserializer) = deserializer {
4619                        let value = deserializer.finish(helper)?;
4620                        OverrideContentDeserializer::store_element(&mut values, value)?;
4621                    }
4622                    Ok(super::OverrideContent::Element(values.ok_or_else(
4623                        || ErrorKind::MissingElement("element".into()),
4624                    )?))
4625                }
4626                S::Attribute(mut values, deserializer) => {
4627                    if let Some(deserializer) = deserializer {
4628                        let value = deserializer.finish(helper)?;
4629                        OverrideContentDeserializer::store_attribute(&mut values, value)?;
4630                    }
4631                    Ok(super::OverrideContent::Attribute(values.ok_or_else(
4632                        || ErrorKind::MissingElement("attribute".into()),
4633                    )?))
4634                }
4635                S::Notation(mut values, deserializer) => {
4636                    if let Some(deserializer) = deserializer {
4637                        let value = deserializer.finish(helper)?;
4638                        OverrideContentDeserializer::store_notation(&mut values, value)?;
4639                    }
4640                    Ok(super::OverrideContent::Notation(values.ok_or_else(
4641                        || ErrorKind::MissingElement("notation".into()),
4642                    )?))
4643                }
4644                S::Done__(data) => Ok(data),
4645            }
4646        }
4647        fn store_annotation(
4648            values: &mut Option<super::Annotation>,
4649            value: super::Annotation,
4650        ) -> Result<(), Error> {
4651            if values.is_some() {
4652                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
4653                    b"annotation",
4654                )))?;
4655            }
4656            *values = Some(value);
4657            Ok(())
4658        }
4659        fn store_simple_type(
4660            values: &mut Option<super::SimpleBaseType>,
4661            value: super::SimpleBaseType,
4662        ) -> Result<(), Error> {
4663            if values.is_some() {
4664                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
4665                    b"simpleType",
4666                )))?;
4667            }
4668            *values = Some(value);
4669            Ok(())
4670        }
4671        fn store_complex_type(
4672            values: &mut Option<super::ComplexBaseType>,
4673            value: super::ComplexBaseType,
4674        ) -> Result<(), Error> {
4675            if values.is_some() {
4676                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
4677                    b"complexType",
4678                )))?;
4679            }
4680            *values = Some(value);
4681            Ok(())
4682        }
4683        fn store_group(
4684            values: &mut Option<super::GroupType>,
4685            value: super::GroupType,
4686        ) -> Result<(), Error> {
4687            if values.is_some() {
4688                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
4689                    b"group",
4690                )))?;
4691            }
4692            *values = Some(value);
4693            Ok(())
4694        }
4695        fn store_attribute_group(
4696            values: &mut Option<super::AttributeGroupType>,
4697            value: super::AttributeGroupType,
4698        ) -> Result<(), Error> {
4699            if values.is_some() {
4700                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
4701                    b"attributeGroup",
4702                )))?;
4703            }
4704            *values = Some(value);
4705            Ok(())
4706        }
4707        fn store_element(
4708            values: &mut Option<super::ElementType>,
4709            value: super::ElementType,
4710        ) -> Result<(), Error> {
4711            if values.is_some() {
4712                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
4713                    b"element",
4714                )))?;
4715            }
4716            *values = Some(value);
4717            Ok(())
4718        }
4719        fn store_attribute(
4720            values: &mut Option<super::AttributeType>,
4721            value: super::AttributeType,
4722        ) -> Result<(), Error> {
4723            if values.is_some() {
4724                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
4725                    b"attribute",
4726                )))?;
4727            }
4728            *values = Some(value);
4729            Ok(())
4730        }
4731        fn store_notation(
4732            values: &mut Option<super::Notation>,
4733            value: super::Notation,
4734        ) -> Result<(), Error> {
4735            if values.is_some() {
4736                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
4737                    b"notation",
4738                )))?;
4739            }
4740            *values = Some(value);
4741            Ok(())
4742        }
4743        fn handle_annotation<'de>(
4744            &mut self,
4745            helper: &mut DeserializeHelper,
4746            mut values: Option<super::Annotation>,
4747            output: DeserializerOutput<'de, super::Annotation>,
4748            fallback: &mut Option<OverrideContentDeserializerState>,
4749        ) -> Result<ElementHandlerOutput<'de>, Error> {
4750            let DeserializerOutput {
4751                artifact,
4752                event,
4753                allow_any,
4754            } = output;
4755            if artifact.is_none() {
4756                *self.state__ = match fallback.take() {
4757                    None if values.is_none() => {
4758                        *self.state__ = OverrideContentDeserializerState::Init__;
4759                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
4760                    }
4761                    None => OverrideContentDeserializerState::Annotation(values, None),
4762                    Some(OverrideContentDeserializerState::Annotation(_, Some(deserializer))) => {
4763                        OverrideContentDeserializerState::Annotation(values, Some(deserializer))
4764                    }
4765                    _ => unreachable!(),
4766                };
4767                return Ok(ElementHandlerOutput::break_(event, allow_any));
4768            }
4769            match fallback.take() {
4770                None => (),
4771                Some(OverrideContentDeserializerState::Annotation(_, Some(deserializer))) => {
4772                    let data = deserializer.finish(helper)?;
4773                    OverrideContentDeserializer::store_annotation(&mut values, data)?;
4774                }
4775                Some(_) => unreachable!(),
4776            }
4777            Ok(match artifact {
4778                DeserializerArtifact::None => unreachable!(),
4779                DeserializerArtifact::Data(data) => {
4780                    OverrideContentDeserializer::store_annotation(&mut values, data)?;
4781                    let data = OverrideContentDeserializer::finish_state(
4782                        helper,
4783                        OverrideContentDeserializerState::Annotation(values, None),
4784                    )?;
4785                    *self.state__ = OverrideContentDeserializerState::Done__(data);
4786                    ElementHandlerOutput::Break { event, allow_any }
4787                }
4788                DeserializerArtifact::Deserializer(deserializer) => {
4789                    *self.state__ =
4790                        OverrideContentDeserializerState::Annotation(values, Some(deserializer));
4791                    ElementHandlerOutput::from_event_end(event, allow_any)
4792                }
4793            })
4794        }
4795        fn handle_simple_type<'de>(
4796            &mut self,
4797            helper: &mut DeserializeHelper,
4798            mut values: Option<super::SimpleBaseType>,
4799            output: DeserializerOutput<'de, super::SimpleBaseType>,
4800            fallback: &mut Option<OverrideContentDeserializerState>,
4801        ) -> Result<ElementHandlerOutput<'de>, Error> {
4802            let DeserializerOutput {
4803                artifact,
4804                event,
4805                allow_any,
4806            } = output;
4807            if artifact.is_none() {
4808                *self.state__ = match fallback.take() {
4809                    None if values.is_none() => {
4810                        *self.state__ = OverrideContentDeserializerState::Init__;
4811                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
4812                    }
4813                    None => OverrideContentDeserializerState::SimpleType(values, None),
4814                    Some(OverrideContentDeserializerState::SimpleType(_, Some(deserializer))) => {
4815                        OverrideContentDeserializerState::SimpleType(values, Some(deserializer))
4816                    }
4817                    _ => unreachable!(),
4818                };
4819                return Ok(ElementHandlerOutput::break_(event, allow_any));
4820            }
4821            match fallback.take() {
4822                None => (),
4823                Some(OverrideContentDeserializerState::SimpleType(_, Some(deserializer))) => {
4824                    let data = deserializer.finish(helper)?;
4825                    OverrideContentDeserializer::store_simple_type(&mut values, data)?;
4826                }
4827                Some(_) => unreachable!(),
4828            }
4829            Ok(match artifact {
4830                DeserializerArtifact::None => unreachable!(),
4831                DeserializerArtifact::Data(data) => {
4832                    OverrideContentDeserializer::store_simple_type(&mut values, data)?;
4833                    let data = OverrideContentDeserializer::finish_state(
4834                        helper,
4835                        OverrideContentDeserializerState::SimpleType(values, None),
4836                    )?;
4837                    *self.state__ = OverrideContentDeserializerState::Done__(data);
4838                    ElementHandlerOutput::Break { event, allow_any }
4839                }
4840                DeserializerArtifact::Deserializer(deserializer) => {
4841                    *self.state__ =
4842                        OverrideContentDeserializerState::SimpleType(values, Some(deserializer));
4843                    ElementHandlerOutput::from_event_end(event, allow_any)
4844                }
4845            })
4846        }
4847        fn handle_complex_type<'de>(
4848            &mut self,
4849            helper: &mut DeserializeHelper,
4850            mut values: Option<super::ComplexBaseType>,
4851            output: DeserializerOutput<'de, super::ComplexBaseType>,
4852            fallback: &mut Option<OverrideContentDeserializerState>,
4853        ) -> Result<ElementHandlerOutput<'de>, Error> {
4854            let DeserializerOutput {
4855                artifact,
4856                event,
4857                allow_any,
4858            } = output;
4859            if artifact.is_none() {
4860                *self.state__ = match fallback.take() {
4861                    None if values.is_none() => {
4862                        *self.state__ = OverrideContentDeserializerState::Init__;
4863                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
4864                    }
4865                    None => OverrideContentDeserializerState::ComplexType(values, None),
4866                    Some(OverrideContentDeserializerState::ComplexType(_, Some(deserializer))) => {
4867                        OverrideContentDeserializerState::ComplexType(values, Some(deserializer))
4868                    }
4869                    _ => unreachable!(),
4870                };
4871                return Ok(ElementHandlerOutput::break_(event, allow_any));
4872            }
4873            match fallback.take() {
4874                None => (),
4875                Some(OverrideContentDeserializerState::ComplexType(_, Some(deserializer))) => {
4876                    let data = deserializer.finish(helper)?;
4877                    OverrideContentDeserializer::store_complex_type(&mut values, data)?;
4878                }
4879                Some(_) => unreachable!(),
4880            }
4881            Ok(match artifact {
4882                DeserializerArtifact::None => unreachable!(),
4883                DeserializerArtifact::Data(data) => {
4884                    OverrideContentDeserializer::store_complex_type(&mut values, data)?;
4885                    let data = OverrideContentDeserializer::finish_state(
4886                        helper,
4887                        OverrideContentDeserializerState::ComplexType(values, None),
4888                    )?;
4889                    *self.state__ = OverrideContentDeserializerState::Done__(data);
4890                    ElementHandlerOutput::Break { event, allow_any }
4891                }
4892                DeserializerArtifact::Deserializer(deserializer) => {
4893                    *self.state__ =
4894                        OverrideContentDeserializerState::ComplexType(values, Some(deserializer));
4895                    ElementHandlerOutput::from_event_end(event, allow_any)
4896                }
4897            })
4898        }
4899        fn handle_group<'de>(
4900            &mut self,
4901            helper: &mut DeserializeHelper,
4902            mut values: Option<super::GroupType>,
4903            output: DeserializerOutput<'de, super::GroupType>,
4904            fallback: &mut Option<OverrideContentDeserializerState>,
4905        ) -> Result<ElementHandlerOutput<'de>, Error> {
4906            let DeserializerOutput {
4907                artifact,
4908                event,
4909                allow_any,
4910            } = output;
4911            if artifact.is_none() {
4912                *self.state__ = match fallback.take() {
4913                    None if values.is_none() => {
4914                        *self.state__ = OverrideContentDeserializerState::Init__;
4915                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
4916                    }
4917                    None => OverrideContentDeserializerState::Group(values, None),
4918                    Some(OverrideContentDeserializerState::Group(_, Some(deserializer))) => {
4919                        OverrideContentDeserializerState::Group(values, Some(deserializer))
4920                    }
4921                    _ => unreachable!(),
4922                };
4923                return Ok(ElementHandlerOutput::break_(event, allow_any));
4924            }
4925            match fallback.take() {
4926                None => (),
4927                Some(OverrideContentDeserializerState::Group(_, Some(deserializer))) => {
4928                    let data = deserializer.finish(helper)?;
4929                    OverrideContentDeserializer::store_group(&mut values, data)?;
4930                }
4931                Some(_) => unreachable!(),
4932            }
4933            Ok(match artifact {
4934                DeserializerArtifact::None => unreachable!(),
4935                DeserializerArtifact::Data(data) => {
4936                    OverrideContentDeserializer::store_group(&mut values, data)?;
4937                    let data = OverrideContentDeserializer::finish_state(
4938                        helper,
4939                        OverrideContentDeserializerState::Group(values, None),
4940                    )?;
4941                    *self.state__ = OverrideContentDeserializerState::Done__(data);
4942                    ElementHandlerOutput::Break { event, allow_any }
4943                }
4944                DeserializerArtifact::Deserializer(deserializer) => {
4945                    *self.state__ =
4946                        OverrideContentDeserializerState::Group(values, Some(deserializer));
4947                    ElementHandlerOutput::from_event_end(event, allow_any)
4948                }
4949            })
4950        }
4951        fn handle_attribute_group<'de>(
4952            &mut self,
4953            helper: &mut DeserializeHelper,
4954            mut values: Option<super::AttributeGroupType>,
4955            output: DeserializerOutput<'de, super::AttributeGroupType>,
4956            fallback: &mut Option<OverrideContentDeserializerState>,
4957        ) -> Result<ElementHandlerOutput<'de>, Error> {
4958            let DeserializerOutput {
4959                artifact,
4960                event,
4961                allow_any,
4962            } = output;
4963            if artifact.is_none() {
4964                *self.state__ = match fallback.take() {
4965                    None if values.is_none() => {
4966                        *self.state__ = OverrideContentDeserializerState::Init__;
4967                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
4968                    }
4969                    None => OverrideContentDeserializerState::AttributeGroup(values, None),
4970                    Some(OverrideContentDeserializerState::AttributeGroup(
4971                        _,
4972                        Some(deserializer),
4973                    )) => {
4974                        OverrideContentDeserializerState::AttributeGroup(values, Some(deserializer))
4975                    }
4976                    _ => unreachable!(),
4977                };
4978                return Ok(ElementHandlerOutput::break_(event, allow_any));
4979            }
4980            match fallback.take() {
4981                None => (),
4982                Some(OverrideContentDeserializerState::AttributeGroup(_, Some(deserializer))) => {
4983                    let data = deserializer.finish(helper)?;
4984                    OverrideContentDeserializer::store_attribute_group(&mut values, data)?;
4985                }
4986                Some(_) => unreachable!(),
4987            }
4988            Ok(match artifact {
4989                DeserializerArtifact::None => unreachable!(),
4990                DeserializerArtifact::Data(data) => {
4991                    OverrideContentDeserializer::store_attribute_group(&mut values, data)?;
4992                    let data = OverrideContentDeserializer::finish_state(
4993                        helper,
4994                        OverrideContentDeserializerState::AttributeGroup(values, None),
4995                    )?;
4996                    *self.state__ = OverrideContentDeserializerState::Done__(data);
4997                    ElementHandlerOutput::Break { event, allow_any }
4998                }
4999                DeserializerArtifact::Deserializer(deserializer) => {
5000                    *self.state__ = OverrideContentDeserializerState::AttributeGroup(
5001                        values,
5002                        Some(deserializer),
5003                    );
5004                    ElementHandlerOutput::from_event_end(event, allow_any)
5005                }
5006            })
5007        }
5008        fn handle_element<'de>(
5009            &mut self,
5010            helper: &mut DeserializeHelper,
5011            mut values: Option<super::ElementType>,
5012            output: DeserializerOutput<'de, super::ElementType>,
5013            fallback: &mut Option<OverrideContentDeserializerState>,
5014        ) -> Result<ElementHandlerOutput<'de>, Error> {
5015            let DeserializerOutput {
5016                artifact,
5017                event,
5018                allow_any,
5019            } = output;
5020            if artifact.is_none() {
5021                *self.state__ = match fallback.take() {
5022                    None if values.is_none() => {
5023                        *self.state__ = OverrideContentDeserializerState::Init__;
5024                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
5025                    }
5026                    None => OverrideContentDeserializerState::Element(values, None),
5027                    Some(OverrideContentDeserializerState::Element(_, Some(deserializer))) => {
5028                        OverrideContentDeserializerState::Element(values, Some(deserializer))
5029                    }
5030                    _ => unreachable!(),
5031                };
5032                return Ok(ElementHandlerOutput::break_(event, allow_any));
5033            }
5034            match fallback.take() {
5035                None => (),
5036                Some(OverrideContentDeserializerState::Element(_, Some(deserializer))) => {
5037                    let data = deserializer.finish(helper)?;
5038                    OverrideContentDeserializer::store_element(&mut values, data)?;
5039                }
5040                Some(_) => unreachable!(),
5041            }
5042            Ok(match artifact {
5043                DeserializerArtifact::None => unreachable!(),
5044                DeserializerArtifact::Data(data) => {
5045                    OverrideContentDeserializer::store_element(&mut values, data)?;
5046                    let data = OverrideContentDeserializer::finish_state(
5047                        helper,
5048                        OverrideContentDeserializerState::Element(values, None),
5049                    )?;
5050                    *self.state__ = OverrideContentDeserializerState::Done__(data);
5051                    ElementHandlerOutput::Break { event, allow_any }
5052                }
5053                DeserializerArtifact::Deserializer(deserializer) => {
5054                    *self.state__ =
5055                        OverrideContentDeserializerState::Element(values, Some(deserializer));
5056                    ElementHandlerOutput::from_event_end(event, allow_any)
5057                }
5058            })
5059        }
5060        fn handle_attribute<'de>(
5061            &mut self,
5062            helper: &mut DeserializeHelper,
5063            mut values: Option<super::AttributeType>,
5064            output: DeserializerOutput<'de, super::AttributeType>,
5065            fallback: &mut Option<OverrideContentDeserializerState>,
5066        ) -> Result<ElementHandlerOutput<'de>, Error> {
5067            let DeserializerOutput {
5068                artifact,
5069                event,
5070                allow_any,
5071            } = output;
5072            if artifact.is_none() {
5073                *self.state__ = match fallback.take() {
5074                    None if values.is_none() => {
5075                        *self.state__ = OverrideContentDeserializerState::Init__;
5076                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
5077                    }
5078                    None => OverrideContentDeserializerState::Attribute(values, None),
5079                    Some(OverrideContentDeserializerState::Attribute(_, Some(deserializer))) => {
5080                        OverrideContentDeserializerState::Attribute(values, Some(deserializer))
5081                    }
5082                    _ => unreachable!(),
5083                };
5084                return Ok(ElementHandlerOutput::break_(event, allow_any));
5085            }
5086            match fallback.take() {
5087                None => (),
5088                Some(OverrideContentDeserializerState::Attribute(_, Some(deserializer))) => {
5089                    let data = deserializer.finish(helper)?;
5090                    OverrideContentDeserializer::store_attribute(&mut values, data)?;
5091                }
5092                Some(_) => unreachable!(),
5093            }
5094            Ok(match artifact {
5095                DeserializerArtifact::None => unreachable!(),
5096                DeserializerArtifact::Data(data) => {
5097                    OverrideContentDeserializer::store_attribute(&mut values, data)?;
5098                    let data = OverrideContentDeserializer::finish_state(
5099                        helper,
5100                        OverrideContentDeserializerState::Attribute(values, None),
5101                    )?;
5102                    *self.state__ = OverrideContentDeserializerState::Done__(data);
5103                    ElementHandlerOutput::Break { event, allow_any }
5104                }
5105                DeserializerArtifact::Deserializer(deserializer) => {
5106                    *self.state__ =
5107                        OverrideContentDeserializerState::Attribute(values, Some(deserializer));
5108                    ElementHandlerOutput::from_event_end(event, allow_any)
5109                }
5110            })
5111        }
5112        fn handle_notation<'de>(
5113            &mut self,
5114            helper: &mut DeserializeHelper,
5115            mut values: Option<super::Notation>,
5116            output: DeserializerOutput<'de, super::Notation>,
5117            fallback: &mut Option<OverrideContentDeserializerState>,
5118        ) -> Result<ElementHandlerOutput<'de>, Error> {
5119            let DeserializerOutput {
5120                artifact,
5121                event,
5122                allow_any,
5123            } = output;
5124            if artifact.is_none() {
5125                *self.state__ = match fallback.take() {
5126                    None if values.is_none() => {
5127                        *self.state__ = OverrideContentDeserializerState::Init__;
5128                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
5129                    }
5130                    None => OverrideContentDeserializerState::Notation(values, None),
5131                    Some(OverrideContentDeserializerState::Notation(_, Some(deserializer))) => {
5132                        OverrideContentDeserializerState::Notation(values, Some(deserializer))
5133                    }
5134                    _ => unreachable!(),
5135                };
5136                return Ok(ElementHandlerOutput::break_(event, allow_any));
5137            }
5138            match fallback.take() {
5139                None => (),
5140                Some(OverrideContentDeserializerState::Notation(_, Some(deserializer))) => {
5141                    let data = deserializer.finish(helper)?;
5142                    OverrideContentDeserializer::store_notation(&mut values, data)?;
5143                }
5144                Some(_) => unreachable!(),
5145            }
5146            Ok(match artifact {
5147                DeserializerArtifact::None => unreachable!(),
5148                DeserializerArtifact::Data(data) => {
5149                    OverrideContentDeserializer::store_notation(&mut values, data)?;
5150                    let data = OverrideContentDeserializer::finish_state(
5151                        helper,
5152                        OverrideContentDeserializerState::Notation(values, None),
5153                    )?;
5154                    *self.state__ = OverrideContentDeserializerState::Done__(data);
5155                    ElementHandlerOutput::Break { event, allow_any }
5156                }
5157                DeserializerArtifact::Deserializer(deserializer) => {
5158                    *self.state__ =
5159                        OverrideContentDeserializerState::Notation(values, Some(deserializer));
5160                    ElementHandlerOutput::from_event_end(event, allow_any)
5161                }
5162            })
5163        }
5164    }
5165    impl<'de> Deserializer<'de, super::OverrideContent> for Box<OverrideContentDeserializer> {
5166        fn init(
5167            helper: &mut DeserializeHelper,
5168            event: Event<'de>,
5169        ) -> DeserializerResult<'de, super::OverrideContent> {
5170            let deserializer = Box::new(OverrideContentDeserializer {
5171                state__: Box::new(OverrideContentDeserializerState::Init__),
5172            });
5173            let mut output = deserializer.next(helper, event)?;
5174            output.artifact = match output.artifact {
5175                DeserializerArtifact::Deserializer(x)
5176                    if matches!(&*x.state__, OverrideContentDeserializerState::Init__) =>
5177                {
5178                    DeserializerArtifact::None
5179                }
5180                artifact => artifact,
5181            };
5182            Ok(output)
5183        }
5184        fn next(
5185            mut self,
5186            helper: &mut DeserializeHelper,
5187            event: Event<'de>,
5188        ) -> DeserializerResult<'de, super::OverrideContent> {
5189            use OverrideContentDeserializerState as S;
5190            let mut event = event;
5191            let mut fallback = None;
5192            let (event, allow_any) = loop {
5193                let state = replace(&mut *self.state__, S::Unknown__);
5194                event = match (state, event) {
5195                    (S::Unknown__, _) => unreachable!(),
5196                    (S::Annotation(values, Some(deserializer)), event) => {
5197                        let output = deserializer.next(helper, event)?;
5198                        match self.handle_annotation(helper, values, output, &mut fallback)? {
5199                            ElementHandlerOutput::Break { event, allow_any } => {
5200                                break (event, allow_any)
5201                            }
5202                            ElementHandlerOutput::Continue { event, .. } => event,
5203                        }
5204                    }
5205                    (S::SimpleType(values, Some(deserializer)), event) => {
5206                        let output = deserializer.next(helper, event)?;
5207                        match self.handle_simple_type(helper, values, output, &mut fallback)? {
5208                            ElementHandlerOutput::Break { event, allow_any } => {
5209                                break (event, allow_any)
5210                            }
5211                            ElementHandlerOutput::Continue { event, .. } => event,
5212                        }
5213                    }
5214                    (S::ComplexType(values, Some(deserializer)), event) => {
5215                        let output = deserializer.next(helper, event)?;
5216                        match self.handle_complex_type(helper, values, output, &mut fallback)? {
5217                            ElementHandlerOutput::Break { event, allow_any } => {
5218                                break (event, allow_any)
5219                            }
5220                            ElementHandlerOutput::Continue { event, .. } => event,
5221                        }
5222                    }
5223                    (S::Group(values, Some(deserializer)), event) => {
5224                        let output = deserializer.next(helper, event)?;
5225                        match self.handle_group(helper, values, output, &mut fallback)? {
5226                            ElementHandlerOutput::Break { event, allow_any } => {
5227                                break (event, allow_any)
5228                            }
5229                            ElementHandlerOutput::Continue { event, .. } => event,
5230                        }
5231                    }
5232                    (S::AttributeGroup(values, Some(deserializer)), event) => {
5233                        let output = deserializer.next(helper, event)?;
5234                        match self.handle_attribute_group(helper, values, output, &mut fallback)? {
5235                            ElementHandlerOutput::Break { event, allow_any } => {
5236                                break (event, allow_any)
5237                            }
5238                            ElementHandlerOutput::Continue { event, .. } => event,
5239                        }
5240                    }
5241                    (S::Element(values, Some(deserializer)), event) => {
5242                        let output = deserializer.next(helper, event)?;
5243                        match self.handle_element(helper, values, output, &mut fallback)? {
5244                            ElementHandlerOutput::Break { event, allow_any } => {
5245                                break (event, allow_any)
5246                            }
5247                            ElementHandlerOutput::Continue { event, .. } => event,
5248                        }
5249                    }
5250                    (S::Attribute(values, Some(deserializer)), event) => {
5251                        let output = deserializer.next(helper, event)?;
5252                        match self.handle_attribute(helper, values, output, &mut fallback)? {
5253                            ElementHandlerOutput::Break { event, allow_any } => {
5254                                break (event, allow_any)
5255                            }
5256                            ElementHandlerOutput::Continue { event, .. } => event,
5257                        }
5258                    }
5259                    (S::Notation(values, Some(deserializer)), event) => {
5260                        let output = deserializer.next(helper, event)?;
5261                        match self.handle_notation(helper, values, output, &mut fallback)? {
5262                            ElementHandlerOutput::Break { event, allow_any } => {
5263                                break (event, allow_any)
5264                            }
5265                            ElementHandlerOutput::Continue { event, .. } => event,
5266                        }
5267                    }
5268                    (state, event @ Event::End(_)) => {
5269                        return Ok(DeserializerOutput {
5270                            artifact: DeserializerArtifact::Data(
5271                                OverrideContentDeserializer::finish_state(helper, state)?,
5272                            ),
5273                            event: DeserializerEvent::Continue(event),
5274                            allow_any: false,
5275                        });
5276                    }
5277                    (S::Init__, event) => match self.find_suitable(helper, event, &mut fallback)? {
5278                        ElementHandlerOutput::Break { event, allow_any } => {
5279                            break (event, allow_any)
5280                        }
5281                        ElementHandlerOutput::Continue { event, .. } => event,
5282                    },
5283                    (S::Annotation(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
5284                        let output = helper.init_start_tag_deserializer(
5285                            event,
5286                            Some(&super::NS_XS),
5287                            b"annotation",
5288                            false,
5289                        )?;
5290                        match self.handle_annotation(helper, values, output, &mut fallback)? {
5291                            ElementHandlerOutput::Break { event, allow_any } => {
5292                                break (event, allow_any)
5293                            }
5294                            ElementHandlerOutput::Continue { event, .. } => event,
5295                        }
5296                    }
5297                    (S::SimpleType(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
5298                        let output = helper.init_start_tag_deserializer(
5299                            event,
5300                            Some(&super::NS_XS),
5301                            b"simpleType",
5302                            true,
5303                        )?;
5304                        match self.handle_simple_type(helper, values, output, &mut fallback)? {
5305                            ElementHandlerOutput::Break { event, allow_any } => {
5306                                break (event, allow_any)
5307                            }
5308                            ElementHandlerOutput::Continue { event, .. } => event,
5309                        }
5310                    }
5311                    (S::ComplexType(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
5312                        let output = helper.init_start_tag_deserializer(
5313                            event,
5314                            Some(&super::NS_XS),
5315                            b"complexType",
5316                            true,
5317                        )?;
5318                        match self.handle_complex_type(helper, values, output, &mut fallback)? {
5319                            ElementHandlerOutput::Break { event, allow_any } => {
5320                                break (event, allow_any)
5321                            }
5322                            ElementHandlerOutput::Continue { event, .. } => event,
5323                        }
5324                    }
5325                    (S::Group(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
5326                        let output = helper.init_start_tag_deserializer(
5327                            event,
5328                            Some(&super::NS_XS),
5329                            b"group",
5330                            true,
5331                        )?;
5332                        match self.handle_group(helper, values, output, &mut fallback)? {
5333                            ElementHandlerOutput::Break { event, allow_any } => {
5334                                break (event, allow_any)
5335                            }
5336                            ElementHandlerOutput::Continue { event, .. } => event,
5337                        }
5338                    }
5339                    (
5340                        S::AttributeGroup(values, None),
5341                        event @ (Event::Start(_) | Event::Empty(_)),
5342                    ) => {
5343                        let output = helper.init_start_tag_deserializer(
5344                            event,
5345                            Some(&super::NS_XS),
5346                            b"attributeGroup",
5347                            false,
5348                        )?;
5349                        match self.handle_attribute_group(helper, values, output, &mut fallback)? {
5350                            ElementHandlerOutput::Break { event, allow_any } => {
5351                                break (event, allow_any)
5352                            }
5353                            ElementHandlerOutput::Continue { event, .. } => event,
5354                        }
5355                    }
5356                    (S::Element(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
5357                        let output = helper.init_start_tag_deserializer(
5358                            event,
5359                            Some(&super::NS_XS),
5360                            b"element",
5361                            true,
5362                        )?;
5363                        match self.handle_element(helper, values, output, &mut fallback)? {
5364                            ElementHandlerOutput::Break { event, allow_any } => {
5365                                break (event, allow_any)
5366                            }
5367                            ElementHandlerOutput::Continue { event, .. } => event,
5368                        }
5369                    }
5370                    (S::Attribute(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
5371                        let output = helper.init_start_tag_deserializer(
5372                            event,
5373                            Some(&super::NS_XS),
5374                            b"attribute",
5375                            false,
5376                        )?;
5377                        match self.handle_attribute(helper, values, output, &mut fallback)? {
5378                            ElementHandlerOutput::Break { event, allow_any } => {
5379                                break (event, allow_any)
5380                            }
5381                            ElementHandlerOutput::Continue { event, .. } => event,
5382                        }
5383                    }
5384                    (S::Notation(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
5385                        let output = helper.init_start_tag_deserializer(
5386                            event,
5387                            Some(&super::NS_XS),
5388                            b"notation",
5389                            false,
5390                        )?;
5391                        match self.handle_notation(helper, values, output, &mut fallback)? {
5392                            ElementHandlerOutput::Break { event, allow_any } => {
5393                                break (event, allow_any)
5394                            }
5395                            ElementHandlerOutput::Continue { event, .. } => event,
5396                        }
5397                    }
5398                    (s @ S::Done__(_), event) => {
5399                        *self.state__ = s;
5400                        break (DeserializerEvent::Continue(event), false);
5401                    }
5402                    (state, event) => {
5403                        *self.state__ = state;
5404                        break (DeserializerEvent::Break(event), false);
5405                    }
5406                }
5407            };
5408            let artifact = if matches!(&*self.state__, S::Done__(_)) {
5409                DeserializerArtifact::Data(self.finish(helper)?)
5410            } else {
5411                DeserializerArtifact::Deserializer(self)
5412            };
5413            Ok(DeserializerOutput {
5414                artifact,
5415                event,
5416                allow_any,
5417            })
5418        }
5419        fn finish(self, helper: &mut DeserializeHelper) -> Result<super::OverrideContent, Error> {
5420            OverrideContentDeserializer::finish_state(helper, *self.state__)
5421        }
5422    }
5423    #[derive(Debug)]
5424    pub struct AnnotationDeserializer {
5425        id: Option<String>,
5426        content: Vec<super::AnnotationContent>,
5427        state__: Box<AnnotationDeserializerState>,
5428    }
5429    #[derive(Debug)]
5430    enum AnnotationDeserializerState {
5431        Init__,
5432        Next__,
5433        Content__(<super::AnnotationContent as WithDeserializer>::Deserializer),
5434        Unknown__,
5435    }
5436    impl AnnotationDeserializer {
5437        fn from_bytes_start(
5438            helper: &mut DeserializeHelper,
5439            bytes_start: &BytesStart<'_>,
5440        ) -> Result<Box<Self>, Error> {
5441            let mut id: Option<String> = None;
5442            for attrib in helper.filter_xmlns_attributes(bytes_start) {
5443                let attrib = attrib?;
5444                if matches!(
5445                    helper.resolve_local_name(attrib.key, &super::NS_XS),
5446                    Some(b"id")
5447                ) {
5448                    helper.read_attrib(&mut id, b"id", &attrib.value)?;
5449                }
5450            }
5451            Ok(Box::new(Self {
5452                id: id,
5453                content: Vec::new(),
5454                state__: Box::new(AnnotationDeserializerState::Init__),
5455            }))
5456        }
5457        fn finish_state(
5458            &mut self,
5459            helper: &mut DeserializeHelper,
5460            state: AnnotationDeserializerState,
5461        ) -> Result<(), Error> {
5462            if let AnnotationDeserializerState::Content__(deserializer) = state {
5463                self.store_content(deserializer.finish(helper)?)?;
5464            }
5465            Ok(())
5466        }
5467        fn store_content(&mut self, value: super::AnnotationContent) -> Result<(), Error> {
5468            self.content.push(value);
5469            Ok(())
5470        }
5471        fn handle_content<'de>(
5472            &mut self,
5473            helper: &mut DeserializeHelper,
5474            output: DeserializerOutput<'de, super::AnnotationContent>,
5475            fallback: &mut Option<AnnotationDeserializerState>,
5476        ) -> Result<ElementHandlerOutput<'de>, Error> {
5477            let DeserializerOutput {
5478                artifact,
5479                event,
5480                allow_any,
5481            } = output;
5482            if artifact.is_none() {
5483                *self.state__ = fallback
5484                    .take()
5485                    .unwrap_or(AnnotationDeserializerState::Next__);
5486                return Ok(ElementHandlerOutput::break_(event, allow_any));
5487            }
5488            if let Some(fallback) = fallback.take() {
5489                self.finish_state(helper, fallback)?;
5490            }
5491            Ok(match artifact {
5492                DeserializerArtifact::None => unreachable!(),
5493                DeserializerArtifact::Data(data) => {
5494                    self.store_content(data)?;
5495                    *self.state__ = AnnotationDeserializerState::Next__;
5496                    ElementHandlerOutput::from_event(event, allow_any)
5497                }
5498                DeserializerArtifact::Deserializer(deserializer) => {
5499                    let ret = ElementHandlerOutput::from_event(event, allow_any);
5500                    match &ret {
5501                        ElementHandlerOutput::Break { .. } => {
5502                            *self.state__ = AnnotationDeserializerState::Content__(deserializer);
5503                        }
5504                        ElementHandlerOutput::Continue { .. } => {
5505                            fallback.get_or_insert(AnnotationDeserializerState::Content__(
5506                                deserializer,
5507                            ));
5508                            *self.state__ = AnnotationDeserializerState::Next__;
5509                        }
5510                    }
5511                    ret
5512                }
5513            })
5514        }
5515    }
5516    impl<'de> Deserializer<'de, super::Annotation> for Box<AnnotationDeserializer> {
5517        fn init(
5518            helper: &mut DeserializeHelper,
5519            event: Event<'de>,
5520        ) -> DeserializerResult<'de, super::Annotation> {
5521            helper
5522                .init_deserializer_from_start_event(event, AnnotationDeserializer::from_bytes_start)
5523        }
5524        fn next(
5525            mut self,
5526            helper: &mut DeserializeHelper,
5527            event: Event<'de>,
5528        ) -> DeserializerResult<'de, super::Annotation> {
5529            use AnnotationDeserializerState as S;
5530            let mut event = event;
5531            let mut fallback = None;
5532            let (event, allow_any) = loop {
5533                let state = replace(&mut *self.state__, S::Unknown__);
5534                event = match (state, event) {
5535                    (S::Unknown__, _) => unreachable!(),
5536                    (S::Content__(deserializer), event) => {
5537                        let output = deserializer.next(helper, event)?;
5538                        match self.handle_content(helper, output, &mut fallback)? {
5539                            ElementHandlerOutput::Break { event, allow_any } => {
5540                                break (event, allow_any)
5541                            }
5542                            ElementHandlerOutput::Continue { event, .. } => event,
5543                        }
5544                    }
5545                    (_, Event::End(_)) => {
5546                        return Ok(DeserializerOutput {
5547                            artifact: DeserializerArtifact::Data(self.finish(helper)?),
5548                            event: DeserializerEvent::None,
5549                            allow_any: false,
5550                        });
5551                    }
5552                    (state @ (S::Init__ | S::Next__), event) => {
5553                        fallback.get_or_insert(state);
5554                        let output =
5555                            <super::AnnotationContent as WithDeserializer>::Deserializer::init(
5556                                helper, event,
5557                            )?;
5558                        match self.handle_content(helper, output, &mut fallback)? {
5559                            ElementHandlerOutput::Break { event, allow_any } => {
5560                                break (event, allow_any)
5561                            }
5562                            ElementHandlerOutput::Continue { event, .. } => event,
5563                        }
5564                    }
5565                }
5566            };
5567            let artifact = DeserializerArtifact::Deserializer(self);
5568            Ok(DeserializerOutput {
5569                artifact,
5570                event,
5571                allow_any,
5572            })
5573        }
5574        fn finish(mut self, helper: &mut DeserializeHelper) -> Result<super::Annotation, Error> {
5575            let state = replace(&mut *self.state__, AnnotationDeserializerState::Unknown__);
5576            self.finish_state(helper, state)?;
5577            Ok(super::Annotation {
5578                id: self.id,
5579                content: self.content,
5580            })
5581        }
5582    }
5583    #[derive(Debug)]
5584    pub struct AnnotationContentDeserializer {
5585        state__: Box<AnnotationContentDeserializerState>,
5586    }
5587    #[derive(Debug)]
5588    pub enum AnnotationContentDeserializerState {
5589        Init__,
5590        Appinfo(
5591            Option<AnyElement>,
5592            Option<<AnyElement as WithDeserializer>::Deserializer>,
5593        ),
5594        Documentation(
5595            Option<AnyElement>,
5596            Option<<AnyElement as WithDeserializer>::Deserializer>,
5597        ),
5598        Done__(super::AnnotationContent),
5599        Unknown__,
5600    }
5601    impl AnnotationContentDeserializer {
5602        fn find_suitable<'de>(
5603            &mut self,
5604            helper: &mut DeserializeHelper,
5605            event: Event<'de>,
5606            fallback: &mut Option<AnnotationContentDeserializerState>,
5607        ) -> Result<ElementHandlerOutput<'de>, Error> {
5608            if let Event::Start(x) | Event::Empty(x) = &event {
5609                if matches!(
5610                    helper.resolve_local_name(x.name(), &super::NS_XS),
5611                    Some(b"appinfo")
5612                ) {
5613                    let output =
5614                        <AnyElement as WithDeserializer>::Deserializer::init(helper, event)?;
5615                    return self.handle_appinfo(helper, Default::default(), output, &mut *fallback);
5616                }
5617                if matches!(
5618                    helper.resolve_local_name(x.name(), &super::NS_XS),
5619                    Some(b"documentation")
5620                ) {
5621                    let output =
5622                        <AnyElement as WithDeserializer>::Deserializer::init(helper, event)?;
5623                    return self.handle_documentation(
5624                        helper,
5625                        Default::default(),
5626                        output,
5627                        &mut *fallback,
5628                    );
5629                }
5630            }
5631            *self.state__ = fallback
5632                .take()
5633                .unwrap_or(AnnotationContentDeserializerState::Init__);
5634            Ok(ElementHandlerOutput::return_to_parent(event, false))
5635        }
5636        fn finish_state(
5637            helper: &mut DeserializeHelper,
5638            state: AnnotationContentDeserializerState,
5639        ) -> Result<super::AnnotationContent, Error> {
5640            use AnnotationContentDeserializerState as S;
5641            match state {
5642                S::Unknown__ => unreachable!(),
5643                S::Init__ => Err(ErrorKind::MissingContent.into()),
5644                S::Appinfo(mut values, deserializer) => {
5645                    if let Some(deserializer) = deserializer {
5646                        let value = deserializer.finish(helper)?;
5647                        AnnotationContentDeserializer::store_appinfo(&mut values, value)?;
5648                    }
5649                    Ok(super::AnnotationContent::Appinfo(values.ok_or_else(
5650                        || ErrorKind::MissingElement("appinfo".into()),
5651                    )?))
5652                }
5653                S::Documentation(mut values, deserializer) => {
5654                    if let Some(deserializer) = deserializer {
5655                        let value = deserializer.finish(helper)?;
5656                        AnnotationContentDeserializer::store_documentation(&mut values, value)?;
5657                    }
5658                    Ok(super::AnnotationContent::Documentation(values.ok_or_else(
5659                        || ErrorKind::MissingElement("documentation".into()),
5660                    )?))
5661                }
5662                S::Done__(data) => Ok(data),
5663            }
5664        }
5665        fn store_appinfo(values: &mut Option<AnyElement>, value: AnyElement) -> Result<(), Error> {
5666            if values.is_some() {
5667                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
5668                    b"appinfo",
5669                )))?;
5670            }
5671            *values = Some(value);
5672            Ok(())
5673        }
5674        fn store_documentation(
5675            values: &mut Option<AnyElement>,
5676            value: AnyElement,
5677        ) -> Result<(), Error> {
5678            if values.is_some() {
5679                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
5680                    b"documentation",
5681                )))?;
5682            }
5683            *values = Some(value);
5684            Ok(())
5685        }
5686        fn handle_appinfo<'de>(
5687            &mut self,
5688            helper: &mut DeserializeHelper,
5689            mut values: Option<AnyElement>,
5690            output: DeserializerOutput<'de, AnyElement>,
5691            fallback: &mut Option<AnnotationContentDeserializerState>,
5692        ) -> Result<ElementHandlerOutput<'de>, Error> {
5693            let DeserializerOutput {
5694                artifact,
5695                event,
5696                allow_any,
5697            } = output;
5698            if artifact.is_none() {
5699                *self.state__ = match fallback.take() {
5700                    None if values.is_none() => {
5701                        *self.state__ = AnnotationContentDeserializerState::Init__;
5702                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
5703                    }
5704                    None => AnnotationContentDeserializerState::Appinfo(values, None),
5705                    Some(AnnotationContentDeserializerState::Appinfo(_, Some(deserializer))) => {
5706                        AnnotationContentDeserializerState::Appinfo(values, Some(deserializer))
5707                    }
5708                    _ => unreachable!(),
5709                };
5710                return Ok(ElementHandlerOutput::break_(event, allow_any));
5711            }
5712            match fallback.take() {
5713                None => (),
5714                Some(AnnotationContentDeserializerState::Appinfo(_, Some(deserializer))) => {
5715                    let data = deserializer.finish(helper)?;
5716                    AnnotationContentDeserializer::store_appinfo(&mut values, data)?;
5717                }
5718                Some(_) => unreachable!(),
5719            }
5720            Ok(match artifact {
5721                DeserializerArtifact::None => unreachable!(),
5722                DeserializerArtifact::Data(data) => {
5723                    AnnotationContentDeserializer::store_appinfo(&mut values, data)?;
5724                    let data = AnnotationContentDeserializer::finish_state(
5725                        helper,
5726                        AnnotationContentDeserializerState::Appinfo(values, None),
5727                    )?;
5728                    *self.state__ = AnnotationContentDeserializerState::Done__(data);
5729                    ElementHandlerOutput::Break { event, allow_any }
5730                }
5731                DeserializerArtifact::Deserializer(deserializer) => {
5732                    *self.state__ =
5733                        AnnotationContentDeserializerState::Appinfo(values, Some(deserializer));
5734                    ElementHandlerOutput::from_event_end(event, allow_any)
5735                }
5736            })
5737        }
5738        fn handle_documentation<'de>(
5739            &mut self,
5740            helper: &mut DeserializeHelper,
5741            mut values: Option<AnyElement>,
5742            output: DeserializerOutput<'de, AnyElement>,
5743            fallback: &mut Option<AnnotationContentDeserializerState>,
5744        ) -> Result<ElementHandlerOutput<'de>, Error> {
5745            let DeserializerOutput {
5746                artifact,
5747                event,
5748                allow_any,
5749            } = output;
5750            if artifact.is_none() {
5751                *self.state__ = match fallback.take() {
5752                    None if values.is_none() => {
5753                        *self.state__ = AnnotationContentDeserializerState::Init__;
5754                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
5755                    }
5756                    None => AnnotationContentDeserializerState::Documentation(values, None),
5757                    Some(AnnotationContentDeserializerState::Documentation(
5758                        _,
5759                        Some(deserializer),
5760                    )) => AnnotationContentDeserializerState::Documentation(
5761                        values,
5762                        Some(deserializer),
5763                    ),
5764                    _ => unreachable!(),
5765                };
5766                return Ok(ElementHandlerOutput::break_(event, allow_any));
5767            }
5768            match fallback.take() {
5769                None => (),
5770                Some(AnnotationContentDeserializerState::Documentation(_, Some(deserializer))) => {
5771                    let data = deserializer.finish(helper)?;
5772                    AnnotationContentDeserializer::store_documentation(&mut values, data)?;
5773                }
5774                Some(_) => unreachable!(),
5775            }
5776            Ok(match artifact {
5777                DeserializerArtifact::None => unreachable!(),
5778                DeserializerArtifact::Data(data) => {
5779                    AnnotationContentDeserializer::store_documentation(&mut values, data)?;
5780                    let data = AnnotationContentDeserializer::finish_state(
5781                        helper,
5782                        AnnotationContentDeserializerState::Documentation(values, None),
5783                    )?;
5784                    *self.state__ = AnnotationContentDeserializerState::Done__(data);
5785                    ElementHandlerOutput::Break { event, allow_any }
5786                }
5787                DeserializerArtifact::Deserializer(deserializer) => {
5788                    *self.state__ = AnnotationContentDeserializerState::Documentation(
5789                        values,
5790                        Some(deserializer),
5791                    );
5792                    ElementHandlerOutput::from_event_end(event, allow_any)
5793                }
5794            })
5795        }
5796    }
5797    impl<'de> Deserializer<'de, super::AnnotationContent> for Box<AnnotationContentDeserializer> {
5798        fn init(
5799            helper: &mut DeserializeHelper,
5800            event: Event<'de>,
5801        ) -> DeserializerResult<'de, super::AnnotationContent> {
5802            let deserializer = Box::new(AnnotationContentDeserializer {
5803                state__: Box::new(AnnotationContentDeserializerState::Init__),
5804            });
5805            let mut output = deserializer.next(helper, event)?;
5806            output.artifact = match output.artifact {
5807                DeserializerArtifact::Deserializer(x)
5808                    if matches!(&*x.state__, AnnotationContentDeserializerState::Init__) =>
5809                {
5810                    DeserializerArtifact::None
5811                }
5812                artifact => artifact,
5813            };
5814            Ok(output)
5815        }
5816        fn next(
5817            mut self,
5818            helper: &mut DeserializeHelper,
5819            event: Event<'de>,
5820        ) -> DeserializerResult<'de, super::AnnotationContent> {
5821            use AnnotationContentDeserializerState as S;
5822            let mut event = event;
5823            let mut fallback = None;
5824            let (event, allow_any) = loop {
5825                let state = replace(&mut *self.state__, S::Unknown__);
5826                event = match (state, event) {
5827                    (S::Unknown__, _) => unreachable!(),
5828                    (S::Appinfo(values, Some(deserializer)), event) => {
5829                        let output = deserializer.next(helper, event)?;
5830                        match self.handle_appinfo(helper, values, output, &mut fallback)? {
5831                            ElementHandlerOutput::Break { event, allow_any } => {
5832                                break (event, allow_any)
5833                            }
5834                            ElementHandlerOutput::Continue { event, .. } => event,
5835                        }
5836                    }
5837                    (S::Documentation(values, Some(deserializer)), event) => {
5838                        let output = deserializer.next(helper, event)?;
5839                        match self.handle_documentation(helper, values, output, &mut fallback)? {
5840                            ElementHandlerOutput::Break { event, allow_any } => {
5841                                break (event, allow_any)
5842                            }
5843                            ElementHandlerOutput::Continue { event, .. } => event,
5844                        }
5845                    }
5846                    (state, event @ Event::End(_)) => {
5847                        return Ok(DeserializerOutput {
5848                            artifact: DeserializerArtifact::Data(
5849                                AnnotationContentDeserializer::finish_state(helper, state)?,
5850                            ),
5851                            event: DeserializerEvent::Continue(event),
5852                            allow_any: false,
5853                        });
5854                    }
5855                    (S::Init__, event) => match self.find_suitable(helper, event, &mut fallback)? {
5856                        ElementHandlerOutput::Break { event, allow_any } => {
5857                            break (event, allow_any)
5858                        }
5859                        ElementHandlerOutput::Continue { event, .. } => event,
5860                    },
5861                    (S::Appinfo(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
5862                        let output = helper.init_start_tag_deserializer(
5863                            event,
5864                            Some(&super::NS_XS),
5865                            b"appinfo",
5866                            false,
5867                        )?;
5868                        match self.handle_appinfo(helper, values, output, &mut fallback)? {
5869                            ElementHandlerOutput::Break { event, allow_any } => {
5870                                break (event, allow_any)
5871                            }
5872                            ElementHandlerOutput::Continue { event, .. } => event,
5873                        }
5874                    }
5875                    (
5876                        S::Documentation(values, None),
5877                        event @ (Event::Start(_) | Event::Empty(_)),
5878                    ) => {
5879                        let output = helper.init_start_tag_deserializer(
5880                            event,
5881                            Some(&super::NS_XS),
5882                            b"documentation",
5883                            false,
5884                        )?;
5885                        match self.handle_documentation(helper, values, output, &mut fallback)? {
5886                            ElementHandlerOutput::Break { event, allow_any } => {
5887                                break (event, allow_any)
5888                            }
5889                            ElementHandlerOutput::Continue { event, .. } => event,
5890                        }
5891                    }
5892                    (s @ S::Done__(_), event) => {
5893                        *self.state__ = s;
5894                        break (DeserializerEvent::Continue(event), false);
5895                    }
5896                    (state, event) => {
5897                        *self.state__ = state;
5898                        break (DeserializerEvent::Break(event), false);
5899                    }
5900                }
5901            };
5902            let artifact = if matches!(&*self.state__, S::Done__(_)) {
5903                DeserializerArtifact::Data(self.finish(helper)?)
5904            } else {
5905                DeserializerArtifact::Deserializer(self)
5906            };
5907            Ok(DeserializerOutput {
5908                artifact,
5909                event,
5910                allow_any,
5911            })
5912        }
5913        fn finish(self, helper: &mut DeserializeHelper) -> Result<super::AnnotationContent, Error> {
5914            AnnotationContentDeserializer::finish_state(helper, *self.state__)
5915        }
5916    }
5917    #[derive(Debug)]
5918    pub struct DefaultOpenContentDeserializer {
5919        id: Option<String>,
5920        applies_to_empty: bool,
5921        mode: super::DefaultOpenContentModeType,
5922        annotation: Option<super::Annotation>,
5923        any: Option<super::WildcardType>,
5924        state__: Box<DefaultOpenContentDeserializerState>,
5925    }
5926    #[derive(Debug)]
5927    enum DefaultOpenContentDeserializerState {
5928        Init__,
5929        Annotation(Option<<super::Annotation as WithDeserializer>::Deserializer>),
5930        Any(Option<<super::WildcardType as WithDeserializer>::Deserializer>),
5931        Done__,
5932        Unknown__,
5933    }
5934    impl DefaultOpenContentDeserializer {
5935        fn from_bytes_start(
5936            helper: &mut DeserializeHelper,
5937            bytes_start: &BytesStart<'_>,
5938        ) -> Result<Box<Self>, Error> {
5939            let mut id: Option<String> = None;
5940            let mut applies_to_empty: Option<bool> = None;
5941            let mut mode: Option<super::DefaultOpenContentModeType> = None;
5942            for attrib in helper.filter_xmlns_attributes(bytes_start) {
5943                let attrib = attrib?;
5944                if matches!(
5945                    helper.resolve_local_name(attrib.key, &super::NS_XS),
5946                    Some(b"id")
5947                ) {
5948                    helper.read_attrib(&mut id, b"id", &attrib.value)?;
5949                } else if matches!(
5950                    helper.resolve_local_name(attrib.key, &super::NS_XS),
5951                    Some(b"appliesToEmpty")
5952                ) {
5953                    helper.read_attrib(&mut applies_to_empty, b"appliesToEmpty", &attrib.value)?;
5954                } else if matches!(
5955                    helper.resolve_local_name(attrib.key, &super::NS_XS),
5956                    Some(b"mode")
5957                ) {
5958                    helper.read_attrib(&mut mode, b"mode", &attrib.value)?;
5959                }
5960            }
5961            Ok(Box::new(Self {
5962                id: id,
5963                applies_to_empty: applies_to_empty
5964                    .unwrap_or_else(super::DefaultOpenContent::default_applies_to_empty),
5965                mode: mode.unwrap_or_else(super::DefaultOpenContent::default_mode),
5966                annotation: None,
5967                any: None,
5968                state__: Box::new(DefaultOpenContentDeserializerState::Init__),
5969            }))
5970        }
5971        fn finish_state(
5972            &mut self,
5973            helper: &mut DeserializeHelper,
5974            state: DefaultOpenContentDeserializerState,
5975        ) -> Result<(), Error> {
5976            use DefaultOpenContentDeserializerState as S;
5977            match state {
5978                S::Annotation(Some(deserializer)) => {
5979                    self.store_annotation(deserializer.finish(helper)?)?
5980                }
5981                S::Any(Some(deserializer)) => self.store_any(deserializer.finish(helper)?)?,
5982                _ => (),
5983            }
5984            Ok(())
5985        }
5986        fn store_annotation(&mut self, value: super::Annotation) -> Result<(), Error> {
5987            if self.annotation.is_some() {
5988                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
5989                    b"annotation",
5990                )))?;
5991            }
5992            self.annotation = Some(value);
5993            Ok(())
5994        }
5995        fn store_any(&mut self, value: super::WildcardType) -> Result<(), Error> {
5996            if self.any.is_some() {
5997                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(b"any")))?;
5998            }
5999            self.any = Some(value);
6000            Ok(())
6001        }
6002        fn handle_annotation<'de>(
6003            &mut self,
6004            helper: &mut DeserializeHelper,
6005            output: DeserializerOutput<'de, super::Annotation>,
6006            fallback: &mut Option<DefaultOpenContentDeserializerState>,
6007        ) -> Result<ElementHandlerOutput<'de>, Error> {
6008            let DeserializerOutput {
6009                artifact,
6010                event,
6011                allow_any,
6012            } = output;
6013            if artifact.is_none() {
6014                fallback.get_or_insert(DefaultOpenContentDeserializerState::Annotation(None));
6015                *self.state__ = DefaultOpenContentDeserializerState::Any(None);
6016                return Ok(ElementHandlerOutput::from_event(event, allow_any));
6017            }
6018            if let Some(fallback) = fallback.take() {
6019                self.finish_state(helper, fallback)?;
6020            }
6021            Ok(match artifact {
6022                DeserializerArtifact::None => unreachable!(),
6023                DeserializerArtifact::Data(data) => {
6024                    self.store_annotation(data)?;
6025                    *self.state__ = DefaultOpenContentDeserializerState::Any(None);
6026                    ElementHandlerOutput::from_event(event, allow_any)
6027                }
6028                DeserializerArtifact::Deserializer(deserializer) => {
6029                    let ret = ElementHandlerOutput::from_event(event, allow_any);
6030                    match &ret {
6031                        ElementHandlerOutput::Continue { .. } => {
6032                            fallback.get_or_insert(
6033                                DefaultOpenContentDeserializerState::Annotation(Some(deserializer)),
6034                            );
6035                            *self.state__ = DefaultOpenContentDeserializerState::Any(None);
6036                        }
6037                        ElementHandlerOutput::Break { .. } => {
6038                            *self.state__ =
6039                                DefaultOpenContentDeserializerState::Annotation(Some(deserializer));
6040                        }
6041                    }
6042                    ret
6043                }
6044            })
6045        }
6046        fn handle_any<'de>(
6047            &mut self,
6048            helper: &mut DeserializeHelper,
6049            output: DeserializerOutput<'de, super::WildcardType>,
6050            fallback: &mut Option<DefaultOpenContentDeserializerState>,
6051        ) -> Result<ElementHandlerOutput<'de>, Error> {
6052            let DeserializerOutput {
6053                artifact,
6054                event,
6055                allow_any,
6056            } = output;
6057            if artifact.is_none() {
6058                if self.any.is_some() {
6059                    fallback.get_or_insert(DefaultOpenContentDeserializerState::Any(None));
6060                    *self.state__ = DefaultOpenContentDeserializerState::Done__;
6061                    return Ok(ElementHandlerOutput::from_event(event, allow_any));
6062                } else {
6063                    *self.state__ = DefaultOpenContentDeserializerState::Any(None);
6064                    return Ok(ElementHandlerOutput::break_(event, allow_any));
6065                }
6066            }
6067            if let Some(fallback) = fallback.take() {
6068                self.finish_state(helper, fallback)?;
6069            }
6070            Ok(match artifact {
6071                DeserializerArtifact::None => unreachable!(),
6072                DeserializerArtifact::Data(data) => {
6073                    self.store_any(data)?;
6074                    *self.state__ = DefaultOpenContentDeserializerState::Done__;
6075                    ElementHandlerOutput::from_event(event, allow_any)
6076                }
6077                DeserializerArtifact::Deserializer(deserializer) => {
6078                    let ret = ElementHandlerOutput::from_event(event, allow_any);
6079                    match &ret {
6080                        ElementHandlerOutput::Continue { .. } => {
6081                            fallback.get_or_insert(DefaultOpenContentDeserializerState::Any(Some(
6082                                deserializer,
6083                            )));
6084                            *self.state__ = DefaultOpenContentDeserializerState::Done__;
6085                        }
6086                        ElementHandlerOutput::Break { .. } => {
6087                            *self.state__ =
6088                                DefaultOpenContentDeserializerState::Any(Some(deserializer));
6089                        }
6090                    }
6091                    ret
6092                }
6093            })
6094        }
6095    }
6096    impl<'de> Deserializer<'de, super::DefaultOpenContent> for Box<DefaultOpenContentDeserializer> {
6097        fn init(
6098            helper: &mut DeserializeHelper,
6099            event: Event<'de>,
6100        ) -> DeserializerResult<'de, super::DefaultOpenContent> {
6101            helper.init_deserializer_from_start_event(
6102                event,
6103                DefaultOpenContentDeserializer::from_bytes_start,
6104            )
6105        }
6106        fn next(
6107            mut self,
6108            helper: &mut DeserializeHelper,
6109            event: Event<'de>,
6110        ) -> DeserializerResult<'de, super::DefaultOpenContent> {
6111            use DefaultOpenContentDeserializerState as S;
6112            let mut event = event;
6113            let mut fallback = None;
6114            let mut allow_any_element = false;
6115            let (event, allow_any) = loop {
6116                let state = replace(&mut *self.state__, S::Unknown__);
6117                event = match (state, event) {
6118                    (S::Unknown__, _) => unreachable!(),
6119                    (S::Annotation(Some(deserializer)), event) => {
6120                        let output = deserializer.next(helper, event)?;
6121                        match self.handle_annotation(helper, output, &mut fallback)? {
6122                            ElementHandlerOutput::Continue { event, allow_any } => {
6123                                allow_any_element = allow_any_element || allow_any;
6124                                event
6125                            }
6126                            ElementHandlerOutput::Break { event, allow_any } => {
6127                                break (event, allow_any)
6128                            }
6129                        }
6130                    }
6131                    (S::Any(Some(deserializer)), event) => {
6132                        let output = deserializer.next(helper, event)?;
6133                        match self.handle_any(helper, output, &mut fallback)? {
6134                            ElementHandlerOutput::Continue { event, allow_any } => {
6135                                allow_any_element = allow_any_element || allow_any;
6136                                event
6137                            }
6138                            ElementHandlerOutput::Break { event, allow_any } => {
6139                                break (event, allow_any)
6140                            }
6141                        }
6142                    }
6143                    (_, Event::End(_)) => {
6144                        if let Some(fallback) = fallback.take() {
6145                            self.finish_state(helper, fallback)?;
6146                        }
6147                        return Ok(DeserializerOutput {
6148                            artifact: DeserializerArtifact::Data(self.finish(helper)?),
6149                            event: DeserializerEvent::None,
6150                            allow_any: false,
6151                        });
6152                    }
6153                    (S::Init__, event) => {
6154                        fallback.get_or_insert(S::Init__);
6155                        *self.state__ = DefaultOpenContentDeserializerState::Annotation(None);
6156                        event
6157                    }
6158                    (S::Annotation(None), event @ (Event::Start(_) | Event::Empty(_))) => {
6159                        let output = helper.init_start_tag_deserializer(
6160                            event,
6161                            Some(&super::NS_XS),
6162                            b"annotation",
6163                            false,
6164                        )?;
6165                        match self.handle_annotation(helper, output, &mut fallback)? {
6166                            ElementHandlerOutput::Continue { event, allow_any } => {
6167                                allow_any_element = allow_any_element || allow_any;
6168                                event
6169                            }
6170                            ElementHandlerOutput::Break { event, allow_any } => {
6171                                break (event, allow_any)
6172                            }
6173                        }
6174                    }
6175                    (S::Any(None), event @ (Event::Start(_) | Event::Empty(_))) => {
6176                        let output = helper.init_start_tag_deserializer(
6177                            event,
6178                            Some(&super::NS_XS),
6179                            b"any",
6180                            false,
6181                        )?;
6182                        match self.handle_any(helper, output, &mut fallback)? {
6183                            ElementHandlerOutput::Continue { event, allow_any } => {
6184                                allow_any_element = allow_any_element || allow_any;
6185                                event
6186                            }
6187                            ElementHandlerOutput::Break { event, allow_any } => {
6188                                break (event, allow_any)
6189                            }
6190                        }
6191                    }
6192                    (S::Done__, event) => {
6193                        fallback.get_or_insert(S::Done__);
6194                        break (DeserializerEvent::Continue(event), allow_any_element);
6195                    }
6196                    (state, event) => {
6197                        *self.state__ = state;
6198                        break (DeserializerEvent::Break(event), false);
6199                    }
6200                }
6201            };
6202            if let Some(fallback) = fallback {
6203                *self.state__ = fallback;
6204            }
6205            Ok(DeserializerOutput {
6206                artifact: DeserializerArtifact::Deserializer(self),
6207                event,
6208                allow_any,
6209            })
6210        }
6211        fn finish(
6212            mut self,
6213            helper: &mut DeserializeHelper,
6214        ) -> Result<super::DefaultOpenContent, Error> {
6215            let state = replace(
6216                &mut *self.state__,
6217                DefaultOpenContentDeserializerState::Unknown__,
6218            );
6219            self.finish_state(helper, state)?;
6220            Ok(super::DefaultOpenContent {
6221                id: self.id,
6222                applies_to_empty: self.applies_to_empty,
6223                mode: self.mode,
6224                annotation: self.annotation,
6225                any: self
6226                    .any
6227                    .ok_or_else(|| ErrorKind::MissingElement("any".into()))?,
6228            })
6229        }
6230    }
6231    #[derive(Debug)]
6232    pub struct SimpleBaseTypeDeserializer {
6233        id: Option<String>,
6234        final_: Option<super::SimpleDerivationSetType>,
6235        name: Option<String>,
6236        content: Vec<super::SimpleBaseTypeContent>,
6237        state__: Box<SimpleBaseTypeDeserializerState>,
6238    }
6239    #[derive(Debug)]
6240    enum SimpleBaseTypeDeserializerState {
6241        Init__,
6242        Next__,
6243        Content__(<super::SimpleBaseTypeContent as WithDeserializer>::Deserializer),
6244        Unknown__,
6245    }
6246    impl SimpleBaseTypeDeserializer {
6247        fn from_bytes_start(
6248            helper: &mut DeserializeHelper,
6249            bytes_start: &BytesStart<'_>,
6250        ) -> Result<Box<Self>, Error> {
6251            let mut id: Option<String> = None;
6252            let mut final_: Option<super::SimpleDerivationSetType> = None;
6253            let mut name: Option<String> = None;
6254            for attrib in helper.filter_xmlns_attributes(bytes_start) {
6255                let attrib = attrib?;
6256                if matches!(
6257                    helper.resolve_local_name(attrib.key, &super::NS_XS),
6258                    Some(b"id")
6259                ) {
6260                    helper.read_attrib(&mut id, b"id", &attrib.value)?;
6261                } else if matches!(
6262                    helper.resolve_local_name(attrib.key, &super::NS_XS),
6263                    Some(b"final")
6264                ) {
6265                    helper.read_attrib(&mut final_, b"final", &attrib.value)?;
6266                } else if matches!(
6267                    helper.resolve_local_name(attrib.key, &super::NS_XS),
6268                    Some(b"name")
6269                ) {
6270                    helper.read_attrib(&mut name, b"name", &attrib.value)?;
6271                }
6272            }
6273            Ok(Box::new(Self {
6274                id: id,
6275                final_: final_,
6276                name: name,
6277                content: Vec::new(),
6278                state__: Box::new(SimpleBaseTypeDeserializerState::Init__),
6279            }))
6280        }
6281        fn finish_state(
6282            &mut self,
6283            helper: &mut DeserializeHelper,
6284            state: SimpleBaseTypeDeserializerState,
6285        ) -> Result<(), Error> {
6286            if let SimpleBaseTypeDeserializerState::Content__(deserializer) = state {
6287                self.store_content(deserializer.finish(helper)?)?;
6288            }
6289            Ok(())
6290        }
6291        fn store_content(&mut self, value: super::SimpleBaseTypeContent) -> Result<(), Error> {
6292            self.content.push(value);
6293            Ok(())
6294        }
6295        fn handle_content<'de>(
6296            &mut self,
6297            helper: &mut DeserializeHelper,
6298            output: DeserializerOutput<'de, super::SimpleBaseTypeContent>,
6299            fallback: &mut Option<SimpleBaseTypeDeserializerState>,
6300        ) -> Result<ElementHandlerOutput<'de>, Error> {
6301            let DeserializerOutput {
6302                artifact,
6303                event,
6304                allow_any,
6305            } = output;
6306            if artifact.is_none() {
6307                *self.state__ = fallback
6308                    .take()
6309                    .unwrap_or(SimpleBaseTypeDeserializerState::Next__);
6310                return Ok(ElementHandlerOutput::break_(event, allow_any));
6311            }
6312            if let Some(fallback) = fallback.take() {
6313                self.finish_state(helper, fallback)?;
6314            }
6315            Ok(match artifact {
6316                DeserializerArtifact::None => unreachable!(),
6317                DeserializerArtifact::Data(data) => {
6318                    self.store_content(data)?;
6319                    *self.state__ = SimpleBaseTypeDeserializerState::Next__;
6320                    ElementHandlerOutput::from_event(event, allow_any)
6321                }
6322                DeserializerArtifact::Deserializer(deserializer) => {
6323                    let can_have_more = self.content.len().saturating_add(1) < 2usize;
6324                    let ret = if can_have_more {
6325                        ElementHandlerOutput::from_event(event, allow_any)
6326                    } else {
6327                        ElementHandlerOutput::from_event_end(event, allow_any)
6328                    };
6329                    match (can_have_more, &ret) {
6330                        (true, ElementHandlerOutput::Continue { .. }) => {
6331                            fallback.get_or_insert(SimpleBaseTypeDeserializerState::Content__(
6332                                deserializer,
6333                            ));
6334                            *self.state__ = SimpleBaseTypeDeserializerState::Next__;
6335                        }
6336                        (false, _) | (_, ElementHandlerOutput::Break { .. }) => {
6337                            *self.state__ =
6338                                SimpleBaseTypeDeserializerState::Content__(deserializer);
6339                        }
6340                    }
6341                    ret
6342                }
6343            })
6344        }
6345    }
6346    impl<'de> Deserializer<'de, super::SimpleBaseType> for Box<SimpleBaseTypeDeserializer> {
6347        fn init(
6348            helper: &mut DeserializeHelper,
6349            event: Event<'de>,
6350        ) -> DeserializerResult<'de, super::SimpleBaseType> {
6351            helper.init_deserializer_from_start_event(
6352                event,
6353                SimpleBaseTypeDeserializer::from_bytes_start,
6354            )
6355        }
6356        fn next(
6357            mut self,
6358            helper: &mut DeserializeHelper,
6359            event: Event<'de>,
6360        ) -> DeserializerResult<'de, super::SimpleBaseType> {
6361            use SimpleBaseTypeDeserializerState as S;
6362            let mut event = event;
6363            let mut fallback = None;
6364            let (event, allow_any) = loop {
6365                let state = replace(&mut *self.state__, S::Unknown__);
6366                event = match (state, event) {
6367                    (S::Unknown__, _) => unreachable!(),
6368                    (S::Content__(deserializer), event) => {
6369                        let output = deserializer.next(helper, event)?;
6370                        match self.handle_content(helper, output, &mut fallback)? {
6371                            ElementHandlerOutput::Break { event, allow_any } => {
6372                                break (event, allow_any)
6373                            }
6374                            ElementHandlerOutput::Continue { event, .. } => event,
6375                        }
6376                    }
6377                    (_, Event::End(_)) => {
6378                        return Ok(DeserializerOutput {
6379                            artifact: DeserializerArtifact::Data(self.finish(helper)?),
6380                            event: DeserializerEvent::None,
6381                            allow_any: false,
6382                        });
6383                    }
6384                    (state @ (S::Init__ | S::Next__), event) => {
6385                        fallback.get_or_insert(state);
6386                        let output =
6387                            <super::SimpleBaseTypeContent as WithDeserializer>::Deserializer::init(
6388                                helper, event,
6389                            )?;
6390                        match self.handle_content(helper, output, &mut fallback)? {
6391                            ElementHandlerOutput::Break { event, allow_any } => {
6392                                break (event, allow_any)
6393                            }
6394                            ElementHandlerOutput::Continue { event, .. } => event,
6395                        }
6396                    }
6397                }
6398            };
6399            let artifact = DeserializerArtifact::Deserializer(self);
6400            Ok(DeserializerOutput {
6401                artifact,
6402                event,
6403                allow_any,
6404            })
6405        }
6406        fn finish(
6407            mut self,
6408            helper: &mut DeserializeHelper,
6409        ) -> Result<super::SimpleBaseType, Error> {
6410            let state = replace(
6411                &mut *self.state__,
6412                SimpleBaseTypeDeserializerState::Unknown__,
6413            );
6414            self.finish_state(helper, state)?;
6415            Ok(super::SimpleBaseType {
6416                id: self.id,
6417                final_: self.final_,
6418                name: self.name,
6419                content: self.content,
6420            })
6421        }
6422    }
6423    #[derive(Debug)]
6424    pub struct SimpleBaseTypeContentDeserializer {
6425        state__: Box<SimpleBaseTypeContentDeserializerState>,
6426    }
6427    #[derive(Debug)]
6428    pub enum SimpleBaseTypeContentDeserializerState {
6429        Init__,
6430        Annotation(
6431            Option<super::Annotation>,
6432            Option<<super::Annotation as WithDeserializer>::Deserializer>,
6433        ),
6434        Restriction(
6435            Option<super::Restriction>,
6436            Option<<super::Restriction as WithDeserializer>::Deserializer>,
6437        ),
6438        List(
6439            Option<super::List>,
6440            Option<<super::List as WithDeserializer>::Deserializer>,
6441        ),
6442        Union(
6443            Option<super::Union>,
6444            Option<<super::Union as WithDeserializer>::Deserializer>,
6445        ),
6446        Done__(super::SimpleBaseTypeContent),
6447        Unknown__,
6448    }
6449    impl SimpleBaseTypeContentDeserializer {
6450        fn find_suitable<'de>(
6451            &mut self,
6452            helper: &mut DeserializeHelper,
6453            event: Event<'de>,
6454            fallback: &mut Option<SimpleBaseTypeContentDeserializerState>,
6455        ) -> Result<ElementHandlerOutput<'de>, Error> {
6456            if let Event::Start(x) | Event::Empty(x) = &event {
6457                if matches!(
6458                    helper.resolve_local_name(x.name(), &super::NS_XS),
6459                    Some(b"annotation")
6460                ) {
6461                    let output =
6462                        <super::Annotation as WithDeserializer>::Deserializer::init(helper, event)?;
6463                    return self.handle_annotation(
6464                        helper,
6465                        Default::default(),
6466                        output,
6467                        &mut *fallback,
6468                    );
6469                }
6470                if matches!(
6471                    helper.resolve_local_name(x.name(), &super::NS_XS),
6472                    Some(b"restriction")
6473                ) {
6474                    let output = <super::Restriction as WithDeserializer>::Deserializer::init(
6475                        helper, event,
6476                    )?;
6477                    return self.handle_restriction(
6478                        helper,
6479                        Default::default(),
6480                        output,
6481                        &mut *fallback,
6482                    );
6483                }
6484                if matches!(
6485                    helper.resolve_local_name(x.name(), &super::NS_XS),
6486                    Some(b"list")
6487                ) {
6488                    let output =
6489                        <super::List as WithDeserializer>::Deserializer::init(helper, event)?;
6490                    return self.handle_list(helper, Default::default(), output, &mut *fallback);
6491                }
6492                if matches!(
6493                    helper.resolve_local_name(x.name(), &super::NS_XS),
6494                    Some(b"union")
6495                ) {
6496                    let output =
6497                        <super::Union as WithDeserializer>::Deserializer::init(helper, event)?;
6498                    return self.handle_union_(helper, Default::default(), output, &mut *fallback);
6499                }
6500            }
6501            *self.state__ = fallback
6502                .take()
6503                .unwrap_or(SimpleBaseTypeContentDeserializerState::Init__);
6504            Ok(ElementHandlerOutput::return_to_parent(event, false))
6505        }
6506        fn finish_state(
6507            helper: &mut DeserializeHelper,
6508            state: SimpleBaseTypeContentDeserializerState,
6509        ) -> Result<super::SimpleBaseTypeContent, Error> {
6510            use SimpleBaseTypeContentDeserializerState as S;
6511            match state {
6512                S::Unknown__ => unreachable!(),
6513                S::Init__ => Err(ErrorKind::MissingContent.into()),
6514                S::Annotation(mut values, deserializer) => {
6515                    if let Some(deserializer) = deserializer {
6516                        let value = deserializer.finish(helper)?;
6517                        SimpleBaseTypeContentDeserializer::store_annotation(&mut values, value)?;
6518                    }
6519                    Ok(super::SimpleBaseTypeContent::Annotation(
6520                        values.ok_or_else(|| ErrorKind::MissingElement("annotation".into()))?,
6521                    ))
6522                }
6523                S::Restriction(mut values, deserializer) => {
6524                    if let Some(deserializer) = deserializer {
6525                        let value = deserializer.finish(helper)?;
6526                        SimpleBaseTypeContentDeserializer::store_restriction(&mut values, value)?;
6527                    }
6528                    Ok(super::SimpleBaseTypeContent::Restriction(
6529                        values.ok_or_else(|| ErrorKind::MissingElement("restriction".into()))?,
6530                    ))
6531                }
6532                S::List(mut values, deserializer) => {
6533                    if let Some(deserializer) = deserializer {
6534                        let value = deserializer.finish(helper)?;
6535                        SimpleBaseTypeContentDeserializer::store_list(&mut values, value)?;
6536                    }
6537                    Ok(super::SimpleBaseTypeContent::List(
6538                        values.ok_or_else(|| ErrorKind::MissingElement("list".into()))?,
6539                    ))
6540                }
6541                S::Union(mut values, deserializer) => {
6542                    if let Some(deserializer) = deserializer {
6543                        let value = deserializer.finish(helper)?;
6544                        SimpleBaseTypeContentDeserializer::store_union_(&mut values, value)?;
6545                    }
6546                    Ok(super::SimpleBaseTypeContent::Union(values.ok_or_else(
6547                        || ErrorKind::MissingElement("union".into()),
6548                    )?))
6549                }
6550                S::Done__(data) => Ok(data),
6551            }
6552        }
6553        fn store_annotation(
6554            values: &mut Option<super::Annotation>,
6555            value: super::Annotation,
6556        ) -> Result<(), Error> {
6557            if values.is_some() {
6558                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
6559                    b"annotation",
6560                )))?;
6561            }
6562            *values = Some(value);
6563            Ok(())
6564        }
6565        fn store_restriction(
6566            values: &mut Option<super::Restriction>,
6567            value: super::Restriction,
6568        ) -> Result<(), Error> {
6569            if values.is_some() {
6570                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
6571                    b"restriction",
6572                )))?;
6573            }
6574            *values = Some(value);
6575            Ok(())
6576        }
6577        fn store_list(values: &mut Option<super::List>, value: super::List) -> Result<(), Error> {
6578            if values.is_some() {
6579                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(b"list")))?;
6580            }
6581            *values = Some(value);
6582            Ok(())
6583        }
6584        fn store_union_(
6585            values: &mut Option<super::Union>,
6586            value: super::Union,
6587        ) -> Result<(), Error> {
6588            if values.is_some() {
6589                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
6590                    b"union",
6591                )))?;
6592            }
6593            *values = Some(value);
6594            Ok(())
6595        }
6596        fn handle_annotation<'de>(
6597            &mut self,
6598            helper: &mut DeserializeHelper,
6599            mut values: Option<super::Annotation>,
6600            output: DeserializerOutput<'de, super::Annotation>,
6601            fallback: &mut Option<SimpleBaseTypeContentDeserializerState>,
6602        ) -> Result<ElementHandlerOutput<'de>, Error> {
6603            let DeserializerOutput {
6604                artifact,
6605                event,
6606                allow_any,
6607            } = output;
6608            if artifact.is_none() {
6609                *self.state__ = match fallback.take() {
6610                    None if values.is_none() => {
6611                        *self.state__ = SimpleBaseTypeContentDeserializerState::Init__;
6612                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
6613                    }
6614                    None => SimpleBaseTypeContentDeserializerState::Annotation(values, None),
6615                    Some(SimpleBaseTypeContentDeserializerState::Annotation(
6616                        _,
6617                        Some(deserializer),
6618                    )) => SimpleBaseTypeContentDeserializerState::Annotation(
6619                        values,
6620                        Some(deserializer),
6621                    ),
6622                    _ => unreachable!(),
6623                };
6624                return Ok(ElementHandlerOutput::break_(event, allow_any));
6625            }
6626            match fallback.take() {
6627                None => (),
6628                Some(SimpleBaseTypeContentDeserializerState::Annotation(_, Some(deserializer))) => {
6629                    let data = deserializer.finish(helper)?;
6630                    SimpleBaseTypeContentDeserializer::store_annotation(&mut values, data)?;
6631                }
6632                Some(_) => unreachable!(),
6633            }
6634            Ok(match artifact {
6635                DeserializerArtifact::None => unreachable!(),
6636                DeserializerArtifact::Data(data) => {
6637                    SimpleBaseTypeContentDeserializer::store_annotation(&mut values, data)?;
6638                    let data = SimpleBaseTypeContentDeserializer::finish_state(
6639                        helper,
6640                        SimpleBaseTypeContentDeserializerState::Annotation(values, None),
6641                    )?;
6642                    *self.state__ = SimpleBaseTypeContentDeserializerState::Done__(data);
6643                    ElementHandlerOutput::Break { event, allow_any }
6644                }
6645                DeserializerArtifact::Deserializer(deserializer) => {
6646                    *self.state__ = SimpleBaseTypeContentDeserializerState::Annotation(
6647                        values,
6648                        Some(deserializer),
6649                    );
6650                    ElementHandlerOutput::from_event_end(event, allow_any)
6651                }
6652            })
6653        }
6654        fn handle_restriction<'de>(
6655            &mut self,
6656            helper: &mut DeserializeHelper,
6657            mut values: Option<super::Restriction>,
6658            output: DeserializerOutput<'de, super::Restriction>,
6659            fallback: &mut Option<SimpleBaseTypeContentDeserializerState>,
6660        ) -> Result<ElementHandlerOutput<'de>, Error> {
6661            let DeserializerOutput {
6662                artifact,
6663                event,
6664                allow_any,
6665            } = output;
6666            if artifact.is_none() {
6667                *self.state__ = match fallback.take() {
6668                    None if values.is_none() => {
6669                        *self.state__ = SimpleBaseTypeContentDeserializerState::Init__;
6670                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
6671                    }
6672                    None => SimpleBaseTypeContentDeserializerState::Restriction(values, None),
6673                    Some(SimpleBaseTypeContentDeserializerState::Restriction(
6674                        _,
6675                        Some(deserializer),
6676                    )) => SimpleBaseTypeContentDeserializerState::Restriction(
6677                        values,
6678                        Some(deserializer),
6679                    ),
6680                    _ => unreachable!(),
6681                };
6682                return Ok(ElementHandlerOutput::break_(event, allow_any));
6683            }
6684            match fallback.take() {
6685                None => (),
6686                Some(SimpleBaseTypeContentDeserializerState::Restriction(
6687                    _,
6688                    Some(deserializer),
6689                )) => {
6690                    let data = deserializer.finish(helper)?;
6691                    SimpleBaseTypeContentDeserializer::store_restriction(&mut values, data)?;
6692                }
6693                Some(_) => unreachable!(),
6694            }
6695            Ok(match artifact {
6696                DeserializerArtifact::None => unreachable!(),
6697                DeserializerArtifact::Data(data) => {
6698                    SimpleBaseTypeContentDeserializer::store_restriction(&mut values, data)?;
6699                    let data = SimpleBaseTypeContentDeserializer::finish_state(
6700                        helper,
6701                        SimpleBaseTypeContentDeserializerState::Restriction(values, None),
6702                    )?;
6703                    *self.state__ = SimpleBaseTypeContentDeserializerState::Done__(data);
6704                    ElementHandlerOutput::Break { event, allow_any }
6705                }
6706                DeserializerArtifact::Deserializer(deserializer) => {
6707                    *self.state__ = SimpleBaseTypeContentDeserializerState::Restriction(
6708                        values,
6709                        Some(deserializer),
6710                    );
6711                    ElementHandlerOutput::from_event_end(event, allow_any)
6712                }
6713            })
6714        }
6715        fn handle_list<'de>(
6716            &mut self,
6717            helper: &mut DeserializeHelper,
6718            mut values: Option<super::List>,
6719            output: DeserializerOutput<'de, super::List>,
6720            fallback: &mut Option<SimpleBaseTypeContentDeserializerState>,
6721        ) -> Result<ElementHandlerOutput<'de>, Error> {
6722            let DeserializerOutput {
6723                artifact,
6724                event,
6725                allow_any,
6726            } = output;
6727            if artifact.is_none() {
6728                *self.state__ = match fallback.take() {
6729                    None if values.is_none() => {
6730                        *self.state__ = SimpleBaseTypeContentDeserializerState::Init__;
6731                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
6732                    }
6733                    None => SimpleBaseTypeContentDeserializerState::List(values, None),
6734                    Some(SimpleBaseTypeContentDeserializerState::List(_, Some(deserializer))) => {
6735                        SimpleBaseTypeContentDeserializerState::List(values, Some(deserializer))
6736                    }
6737                    _ => unreachable!(),
6738                };
6739                return Ok(ElementHandlerOutput::break_(event, allow_any));
6740            }
6741            match fallback.take() {
6742                None => (),
6743                Some(SimpleBaseTypeContentDeserializerState::List(_, Some(deserializer))) => {
6744                    let data = deserializer.finish(helper)?;
6745                    SimpleBaseTypeContentDeserializer::store_list(&mut values, data)?;
6746                }
6747                Some(_) => unreachable!(),
6748            }
6749            Ok(match artifact {
6750                DeserializerArtifact::None => unreachable!(),
6751                DeserializerArtifact::Data(data) => {
6752                    SimpleBaseTypeContentDeserializer::store_list(&mut values, data)?;
6753                    let data = SimpleBaseTypeContentDeserializer::finish_state(
6754                        helper,
6755                        SimpleBaseTypeContentDeserializerState::List(values, None),
6756                    )?;
6757                    *self.state__ = SimpleBaseTypeContentDeserializerState::Done__(data);
6758                    ElementHandlerOutput::Break { event, allow_any }
6759                }
6760                DeserializerArtifact::Deserializer(deserializer) => {
6761                    *self.state__ =
6762                        SimpleBaseTypeContentDeserializerState::List(values, Some(deserializer));
6763                    ElementHandlerOutput::from_event_end(event, allow_any)
6764                }
6765            })
6766        }
6767        fn handle_union_<'de>(
6768            &mut self,
6769            helper: &mut DeserializeHelper,
6770            mut values: Option<super::Union>,
6771            output: DeserializerOutput<'de, super::Union>,
6772            fallback: &mut Option<SimpleBaseTypeContentDeserializerState>,
6773        ) -> Result<ElementHandlerOutput<'de>, Error> {
6774            let DeserializerOutput {
6775                artifact,
6776                event,
6777                allow_any,
6778            } = output;
6779            if artifact.is_none() {
6780                *self.state__ = match fallback.take() {
6781                    None if values.is_none() => {
6782                        *self.state__ = SimpleBaseTypeContentDeserializerState::Init__;
6783                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
6784                    }
6785                    None => SimpleBaseTypeContentDeserializerState::Union(values, None),
6786                    Some(SimpleBaseTypeContentDeserializerState::Union(_, Some(deserializer))) => {
6787                        SimpleBaseTypeContentDeserializerState::Union(values, Some(deserializer))
6788                    }
6789                    _ => unreachable!(),
6790                };
6791                return Ok(ElementHandlerOutput::break_(event, allow_any));
6792            }
6793            match fallback.take() {
6794                None => (),
6795                Some(SimpleBaseTypeContentDeserializerState::Union(_, Some(deserializer))) => {
6796                    let data = deserializer.finish(helper)?;
6797                    SimpleBaseTypeContentDeserializer::store_union_(&mut values, data)?;
6798                }
6799                Some(_) => unreachable!(),
6800            }
6801            Ok(match artifact {
6802                DeserializerArtifact::None => unreachable!(),
6803                DeserializerArtifact::Data(data) => {
6804                    SimpleBaseTypeContentDeserializer::store_union_(&mut values, data)?;
6805                    let data = SimpleBaseTypeContentDeserializer::finish_state(
6806                        helper,
6807                        SimpleBaseTypeContentDeserializerState::Union(values, None),
6808                    )?;
6809                    *self.state__ = SimpleBaseTypeContentDeserializerState::Done__(data);
6810                    ElementHandlerOutput::Break { event, allow_any }
6811                }
6812                DeserializerArtifact::Deserializer(deserializer) => {
6813                    *self.state__ =
6814                        SimpleBaseTypeContentDeserializerState::Union(values, Some(deserializer));
6815                    ElementHandlerOutput::from_event_end(event, allow_any)
6816                }
6817            })
6818        }
6819    }
6820    impl<'de> Deserializer<'de, super::SimpleBaseTypeContent>
6821        for Box<SimpleBaseTypeContentDeserializer>
6822    {
6823        fn init(
6824            helper: &mut DeserializeHelper,
6825            event: Event<'de>,
6826        ) -> DeserializerResult<'de, super::SimpleBaseTypeContent> {
6827            let deserializer = Box::new(SimpleBaseTypeContentDeserializer {
6828                state__: Box::new(SimpleBaseTypeContentDeserializerState::Init__),
6829            });
6830            let mut output = deserializer.next(helper, event)?;
6831            output.artifact = match output.artifact {
6832                DeserializerArtifact::Deserializer(x)
6833                    if matches!(&*x.state__, SimpleBaseTypeContentDeserializerState::Init__) =>
6834                {
6835                    DeserializerArtifact::None
6836                }
6837                artifact => artifact,
6838            };
6839            Ok(output)
6840        }
6841        fn next(
6842            mut self,
6843            helper: &mut DeserializeHelper,
6844            event: Event<'de>,
6845        ) -> DeserializerResult<'de, super::SimpleBaseTypeContent> {
6846            use SimpleBaseTypeContentDeserializerState as S;
6847            let mut event = event;
6848            let mut fallback = None;
6849            let (event, allow_any) = loop {
6850                let state = replace(&mut *self.state__, S::Unknown__);
6851                event = match (state, event) {
6852                    (S::Unknown__, _) => unreachable!(),
6853                    (S::Annotation(values, Some(deserializer)), event) => {
6854                        let output = deserializer.next(helper, event)?;
6855                        match self.handle_annotation(helper, values, output, &mut fallback)? {
6856                            ElementHandlerOutput::Break { event, allow_any } => {
6857                                break (event, allow_any)
6858                            }
6859                            ElementHandlerOutput::Continue { event, .. } => event,
6860                        }
6861                    }
6862                    (S::Restriction(values, Some(deserializer)), event) => {
6863                        let output = deserializer.next(helper, event)?;
6864                        match self.handle_restriction(helper, values, output, &mut fallback)? {
6865                            ElementHandlerOutput::Break { event, allow_any } => {
6866                                break (event, allow_any)
6867                            }
6868                            ElementHandlerOutput::Continue { event, .. } => event,
6869                        }
6870                    }
6871                    (S::List(values, Some(deserializer)), event) => {
6872                        let output = deserializer.next(helper, event)?;
6873                        match self.handle_list(helper, values, output, &mut fallback)? {
6874                            ElementHandlerOutput::Break { event, allow_any } => {
6875                                break (event, allow_any)
6876                            }
6877                            ElementHandlerOutput::Continue { event, .. } => event,
6878                        }
6879                    }
6880                    (S::Union(values, Some(deserializer)), event) => {
6881                        let output = deserializer.next(helper, event)?;
6882                        match self.handle_union_(helper, values, output, &mut fallback)? {
6883                            ElementHandlerOutput::Break { event, allow_any } => {
6884                                break (event, allow_any)
6885                            }
6886                            ElementHandlerOutput::Continue { event, .. } => event,
6887                        }
6888                    }
6889                    (state, event @ Event::End(_)) => {
6890                        return Ok(DeserializerOutput {
6891                            artifact: DeserializerArtifact::Data(
6892                                SimpleBaseTypeContentDeserializer::finish_state(helper, state)?,
6893                            ),
6894                            event: DeserializerEvent::Continue(event),
6895                            allow_any: false,
6896                        });
6897                    }
6898                    (S::Init__, event) => match self.find_suitable(helper, event, &mut fallback)? {
6899                        ElementHandlerOutput::Break { event, allow_any } => {
6900                            break (event, allow_any)
6901                        }
6902                        ElementHandlerOutput::Continue { event, .. } => event,
6903                    },
6904                    (S::Annotation(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
6905                        let output = helper.init_start_tag_deserializer(
6906                            event,
6907                            Some(&super::NS_XS),
6908                            b"annotation",
6909                            false,
6910                        )?;
6911                        match self.handle_annotation(helper, values, output, &mut fallback)? {
6912                            ElementHandlerOutput::Break { event, allow_any } => {
6913                                break (event, allow_any)
6914                            }
6915                            ElementHandlerOutput::Continue { event, .. } => event,
6916                        }
6917                    }
6918                    (S::Restriction(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
6919                        let output = helper.init_start_tag_deserializer(
6920                            event,
6921                            Some(&super::NS_XS),
6922                            b"restriction",
6923                            true,
6924                        )?;
6925                        match self.handle_restriction(helper, values, output, &mut fallback)? {
6926                            ElementHandlerOutput::Break { event, allow_any } => {
6927                                break (event, allow_any)
6928                            }
6929                            ElementHandlerOutput::Continue { event, .. } => event,
6930                        }
6931                    }
6932                    (S::List(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
6933                        let output = helper.init_start_tag_deserializer(
6934                            event,
6935                            Some(&super::NS_XS),
6936                            b"list",
6937                            false,
6938                        )?;
6939                        match self.handle_list(helper, values, output, &mut fallback)? {
6940                            ElementHandlerOutput::Break { event, allow_any } => {
6941                                break (event, allow_any)
6942                            }
6943                            ElementHandlerOutput::Continue { event, .. } => event,
6944                        }
6945                    }
6946                    (S::Union(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
6947                        let output = helper.init_start_tag_deserializer(
6948                            event,
6949                            Some(&super::NS_XS),
6950                            b"union",
6951                            false,
6952                        )?;
6953                        match self.handle_union_(helper, values, output, &mut fallback)? {
6954                            ElementHandlerOutput::Break { event, allow_any } => {
6955                                break (event, allow_any)
6956                            }
6957                            ElementHandlerOutput::Continue { event, .. } => event,
6958                        }
6959                    }
6960                    (s @ S::Done__(_), event) => {
6961                        *self.state__ = s;
6962                        break (DeserializerEvent::Continue(event), false);
6963                    }
6964                    (state, event) => {
6965                        *self.state__ = state;
6966                        break (DeserializerEvent::Break(event), false);
6967                    }
6968                }
6969            };
6970            let artifact = if matches!(&*self.state__, S::Done__(_)) {
6971                DeserializerArtifact::Data(self.finish(helper)?)
6972            } else {
6973                DeserializerArtifact::Deserializer(self)
6974            };
6975            Ok(DeserializerOutput {
6976                artifact,
6977                event,
6978                allow_any,
6979            })
6980        }
6981        fn finish(
6982            self,
6983            helper: &mut DeserializeHelper,
6984        ) -> Result<super::SimpleBaseTypeContent, Error> {
6985            SimpleBaseTypeContentDeserializer::finish_state(helper, *self.state__)
6986        }
6987    }
6988    #[derive(Debug)]
6989    pub struct ComplexBaseTypeDeserializer {
6990        id: Option<String>,
6991        name: Option<String>,
6992        mixed: Option<bool>,
6993        abstract_: bool,
6994        final_: Option<super::DerivationSetType>,
6995        block: Option<super::DerivationSetType>,
6996        default_attributes_apply: bool,
6997        content: Vec<super::ComplexBaseTypeContent>,
6998        state__: Box<ComplexBaseTypeDeserializerState>,
6999    }
7000    #[derive(Debug)]
7001    enum ComplexBaseTypeDeserializerState {
7002        Init__,
7003        Next__,
7004        Content__(<super::ComplexBaseTypeContent as WithDeserializer>::Deserializer),
7005        Unknown__,
7006    }
7007    impl ComplexBaseTypeDeserializer {
7008        fn from_bytes_start(
7009            helper: &mut DeserializeHelper,
7010            bytes_start: &BytesStart<'_>,
7011        ) -> Result<Box<Self>, Error> {
7012            let mut id: Option<String> = None;
7013            let mut name: Option<String> = None;
7014            let mut mixed: Option<bool> = None;
7015            let mut abstract_: Option<bool> = None;
7016            let mut final_: Option<super::DerivationSetType> = None;
7017            let mut block: Option<super::DerivationSetType> = None;
7018            let mut default_attributes_apply: Option<bool> = None;
7019            for attrib in helper.filter_xmlns_attributes(bytes_start) {
7020                let attrib = attrib?;
7021                if matches!(
7022                    helper.resolve_local_name(attrib.key, &super::NS_XS),
7023                    Some(b"id")
7024                ) {
7025                    helper.read_attrib(&mut id, b"id", &attrib.value)?;
7026                } else if matches!(
7027                    helper.resolve_local_name(attrib.key, &super::NS_XS),
7028                    Some(b"name")
7029                ) {
7030                    helper.read_attrib(&mut name, b"name", &attrib.value)?;
7031                } else if matches!(
7032                    helper.resolve_local_name(attrib.key, &super::NS_XS),
7033                    Some(b"mixed")
7034                ) {
7035                    helper.read_attrib(&mut mixed, b"mixed", &attrib.value)?;
7036                } else if matches!(
7037                    helper.resolve_local_name(attrib.key, &super::NS_XS),
7038                    Some(b"abstract")
7039                ) {
7040                    helper.read_attrib(&mut abstract_, b"abstract", &attrib.value)?;
7041                } else if matches!(
7042                    helper.resolve_local_name(attrib.key, &super::NS_XS),
7043                    Some(b"final")
7044                ) {
7045                    helper.read_attrib(&mut final_, b"final", &attrib.value)?;
7046                } else if matches!(
7047                    helper.resolve_local_name(attrib.key, &super::NS_XS),
7048                    Some(b"block")
7049                ) {
7050                    helper.read_attrib(&mut block, b"block", &attrib.value)?;
7051                } else if matches!(
7052                    helper.resolve_local_name(attrib.key, &super::NS_XS),
7053                    Some(b"defaultAttributesApply")
7054                ) {
7055                    helper.read_attrib(
7056                        &mut default_attributes_apply,
7057                        b"defaultAttributesApply",
7058                        &attrib.value,
7059                    )?;
7060                }
7061            }
7062            Ok(Box::new(Self {
7063                id: id,
7064                name: name,
7065                mixed: mixed,
7066                abstract_: abstract_.unwrap_or_else(super::ComplexBaseType::default_abstract_),
7067                final_: final_,
7068                block: block,
7069                default_attributes_apply: default_attributes_apply
7070                    .unwrap_or_else(super::ComplexBaseType::default_default_attributes_apply),
7071                content: Vec::new(),
7072                state__: Box::new(ComplexBaseTypeDeserializerState::Init__),
7073            }))
7074        }
7075        fn finish_state(
7076            &mut self,
7077            helper: &mut DeserializeHelper,
7078            state: ComplexBaseTypeDeserializerState,
7079        ) -> Result<(), Error> {
7080            if let ComplexBaseTypeDeserializerState::Content__(deserializer) = state {
7081                self.store_content(deserializer.finish(helper)?)?;
7082            }
7083            Ok(())
7084        }
7085        fn store_content(&mut self, value: super::ComplexBaseTypeContent) -> Result<(), Error> {
7086            self.content.push(value);
7087            Ok(())
7088        }
7089        fn handle_content<'de>(
7090            &mut self,
7091            helper: &mut DeserializeHelper,
7092            output: DeserializerOutput<'de, super::ComplexBaseTypeContent>,
7093            fallback: &mut Option<ComplexBaseTypeDeserializerState>,
7094        ) -> Result<ElementHandlerOutput<'de>, Error> {
7095            let DeserializerOutput {
7096                artifact,
7097                event,
7098                allow_any,
7099            } = output;
7100            if artifact.is_none() {
7101                *self.state__ = fallback
7102                    .take()
7103                    .unwrap_or(ComplexBaseTypeDeserializerState::Next__);
7104                return Ok(ElementHandlerOutput::break_(event, allow_any));
7105            }
7106            if let Some(fallback) = fallback.take() {
7107                self.finish_state(helper, fallback)?;
7108            }
7109            Ok(match artifact {
7110                DeserializerArtifact::None => unreachable!(),
7111                DeserializerArtifact::Data(data) => {
7112                    self.store_content(data)?;
7113                    *self.state__ = ComplexBaseTypeDeserializerState::Next__;
7114                    ElementHandlerOutput::from_event(event, allow_any)
7115                }
7116                DeserializerArtifact::Deserializer(deserializer) => {
7117                    let ret = ElementHandlerOutput::from_event(event, allow_any);
7118                    match &ret {
7119                        ElementHandlerOutput::Break { .. } => {
7120                            *self.state__ =
7121                                ComplexBaseTypeDeserializerState::Content__(deserializer);
7122                        }
7123                        ElementHandlerOutput::Continue { .. } => {
7124                            fallback.get_or_insert(ComplexBaseTypeDeserializerState::Content__(
7125                                deserializer,
7126                            ));
7127                            *self.state__ = ComplexBaseTypeDeserializerState::Next__;
7128                        }
7129                    }
7130                    ret
7131                }
7132            })
7133        }
7134    }
7135    impl<'de> Deserializer<'de, super::ComplexBaseType> for Box<ComplexBaseTypeDeserializer> {
7136        fn init(
7137            helper: &mut DeserializeHelper,
7138            event: Event<'de>,
7139        ) -> DeserializerResult<'de, super::ComplexBaseType> {
7140            helper.init_deserializer_from_start_event(
7141                event,
7142                ComplexBaseTypeDeserializer::from_bytes_start,
7143            )
7144        }
7145        fn next(
7146            mut self,
7147            helper: &mut DeserializeHelper,
7148            event: Event<'de>,
7149        ) -> DeserializerResult<'de, super::ComplexBaseType> {
7150            use ComplexBaseTypeDeserializerState as S;
7151            let mut event = event;
7152            let mut fallback = None;
7153            let (event, allow_any) = loop {
7154                let state = replace(&mut *self.state__, S::Unknown__);
7155                event = match (state, event) {
7156                    (S::Unknown__, _) => unreachable!(),
7157                    (S::Content__(deserializer), event) => {
7158                        let output = deserializer.next(helper, event)?;
7159                        match self.handle_content(helper, output, &mut fallback)? {
7160                            ElementHandlerOutput::Break { event, allow_any } => {
7161                                break (event, allow_any)
7162                            }
7163                            ElementHandlerOutput::Continue { event, .. } => event,
7164                        }
7165                    }
7166                    (_, Event::End(_)) => {
7167                        return Ok(DeserializerOutput {
7168                            artifact: DeserializerArtifact::Data(self.finish(helper)?),
7169                            event: DeserializerEvent::None,
7170                            allow_any: false,
7171                        });
7172                    }
7173                    (state @ (S::Init__ | S::Next__), event) => {
7174                        fallback.get_or_insert(state);
7175                        let output = < super :: ComplexBaseTypeContent as WithDeserializer > :: Deserializer :: init (helper , event) ? ;
7176                        match self.handle_content(helper, output, &mut fallback)? {
7177                            ElementHandlerOutput::Break { event, allow_any } => {
7178                                break (event, allow_any)
7179                            }
7180                            ElementHandlerOutput::Continue { event, .. } => event,
7181                        }
7182                    }
7183                }
7184            };
7185            let artifact = DeserializerArtifact::Deserializer(self);
7186            Ok(DeserializerOutput {
7187                artifact,
7188                event,
7189                allow_any,
7190            })
7191        }
7192        fn finish(
7193            mut self,
7194            helper: &mut DeserializeHelper,
7195        ) -> Result<super::ComplexBaseType, Error> {
7196            let state = replace(
7197                &mut *self.state__,
7198                ComplexBaseTypeDeserializerState::Unknown__,
7199            );
7200            self.finish_state(helper, state)?;
7201            Ok(super::ComplexBaseType {
7202                id: self.id,
7203                name: self.name,
7204                mixed: self.mixed,
7205                abstract_: self.abstract_,
7206                final_: self.final_,
7207                block: self.block,
7208                default_attributes_apply: self.default_attributes_apply,
7209                content: self.content,
7210            })
7211        }
7212    }
7213    #[derive(Debug)]
7214    pub struct ComplexBaseTypeContentDeserializer {
7215        state__: Box<ComplexBaseTypeContentDeserializerState>,
7216    }
7217    #[derive(Debug)]
7218    pub enum ComplexBaseTypeContentDeserializerState {
7219        Init__,
7220        Annotation(
7221            Option<super::Annotation>,
7222            Option<<super::Annotation as WithDeserializer>::Deserializer>,
7223        ),
7224        SimpleContent(
7225            Option<super::SimpleContent>,
7226            Option<<super::SimpleContent as WithDeserializer>::Deserializer>,
7227        ),
7228        ComplexContent(
7229            Option<super::ComplexContent>,
7230            Option<<super::ComplexContent as WithDeserializer>::Deserializer>,
7231        ),
7232        OpenContent(
7233            Option<super::OpenContent>,
7234            Option<<super::OpenContent as WithDeserializer>::Deserializer>,
7235        ),
7236        Group(
7237            Option<super::GroupType>,
7238            Option<<super::GroupType as WithDeserializer>::Deserializer>,
7239        ),
7240        All(
7241            Option<super::GroupType>,
7242            Option<<super::GroupType as WithDeserializer>::Deserializer>,
7243        ),
7244        Choice(
7245            Option<super::GroupType>,
7246            Option<<super::GroupType as WithDeserializer>::Deserializer>,
7247        ),
7248        Sequence(
7249            Option<super::GroupType>,
7250            Option<<super::GroupType as WithDeserializer>::Deserializer>,
7251        ),
7252        Attribute(
7253            Option<super::AttributeType>,
7254            Option<<super::AttributeType as WithDeserializer>::Deserializer>,
7255        ),
7256        AttributeGroup(
7257            Option<super::AttributeGroupType>,
7258            Option<<super::AttributeGroupType as WithDeserializer>::Deserializer>,
7259        ),
7260        AnyAttribute(
7261            Option<super::AnyAttribute>,
7262            Option<<super::AnyAttribute as WithDeserializer>::Deserializer>,
7263        ),
7264        Assert(
7265            Option<super::AssertionType>,
7266            Option<<super::AssertionType as WithDeserializer>::Deserializer>,
7267        ),
7268        Done__(super::ComplexBaseTypeContent),
7269        Unknown__,
7270    }
7271    impl ComplexBaseTypeContentDeserializer {
7272        fn find_suitable<'de>(
7273            &mut self,
7274            helper: &mut DeserializeHelper,
7275            event: Event<'de>,
7276            fallback: &mut Option<ComplexBaseTypeContentDeserializerState>,
7277        ) -> Result<ElementHandlerOutput<'de>, Error> {
7278            if let Event::Start(x) | Event::Empty(x) = &event {
7279                if matches!(
7280                    helper.resolve_local_name(x.name(), &super::NS_XS),
7281                    Some(b"annotation")
7282                ) {
7283                    let output =
7284                        <super::Annotation as WithDeserializer>::Deserializer::init(helper, event)?;
7285                    return self.handle_annotation(
7286                        helper,
7287                        Default::default(),
7288                        output,
7289                        &mut *fallback,
7290                    );
7291                }
7292                if matches!(
7293                    helper.resolve_local_name(x.name(), &super::NS_XS),
7294                    Some(b"simpleContent")
7295                ) {
7296                    let output = <super::SimpleContent as WithDeserializer>::Deserializer::init(
7297                        helper, event,
7298                    )?;
7299                    return self.handle_simple_content(
7300                        helper,
7301                        Default::default(),
7302                        output,
7303                        &mut *fallback,
7304                    );
7305                }
7306                if matches!(
7307                    helper.resolve_local_name(x.name(), &super::NS_XS),
7308                    Some(b"complexContent")
7309                ) {
7310                    let output = <super::ComplexContent as WithDeserializer>::Deserializer::init(
7311                        helper, event,
7312                    )?;
7313                    return self.handle_complex_content(
7314                        helper,
7315                        Default::default(),
7316                        output,
7317                        &mut *fallback,
7318                    );
7319                }
7320                if matches!(
7321                    helper.resolve_local_name(x.name(), &super::NS_XS),
7322                    Some(b"openContent")
7323                ) {
7324                    let output = <super::OpenContent as WithDeserializer>::Deserializer::init(
7325                        helper, event,
7326                    )?;
7327                    return self.handle_open_content(
7328                        helper,
7329                        Default::default(),
7330                        output,
7331                        &mut *fallback,
7332                    );
7333                }
7334                if matches!(
7335                    helper.resolve_local_name(x.name(), &super::NS_XS),
7336                    Some(b"group")
7337                ) {
7338                    let output =
7339                        <super::GroupType as WithDeserializer>::Deserializer::init(helper, event)?;
7340                    return self.handle_group(helper, Default::default(), output, &mut *fallback);
7341                }
7342                if matches!(
7343                    helper.resolve_local_name(x.name(), &super::NS_XS),
7344                    Some(b"all")
7345                ) {
7346                    let output =
7347                        <super::GroupType as WithDeserializer>::Deserializer::init(helper, event)?;
7348                    return self.handle_all(helper, Default::default(), output, &mut *fallback);
7349                }
7350                if matches!(
7351                    helper.resolve_local_name(x.name(), &super::NS_XS),
7352                    Some(b"choice")
7353                ) {
7354                    let output =
7355                        <super::GroupType as WithDeserializer>::Deserializer::init(helper, event)?;
7356                    return self.handle_choice(helper, Default::default(), output, &mut *fallback);
7357                }
7358                if matches!(
7359                    helper.resolve_local_name(x.name(), &super::NS_XS),
7360                    Some(b"sequence")
7361                ) {
7362                    let output =
7363                        <super::GroupType as WithDeserializer>::Deserializer::init(helper, event)?;
7364                    return self.handle_sequence(
7365                        helper,
7366                        Default::default(),
7367                        output,
7368                        &mut *fallback,
7369                    );
7370                }
7371                if matches!(
7372                    helper.resolve_local_name(x.name(), &super::NS_XS),
7373                    Some(b"attribute")
7374                ) {
7375                    let output = <super::AttributeType as WithDeserializer>::Deserializer::init(
7376                        helper, event,
7377                    )?;
7378                    return self.handle_attribute(
7379                        helper,
7380                        Default::default(),
7381                        output,
7382                        &mut *fallback,
7383                    );
7384                }
7385                if matches!(
7386                    helper.resolve_local_name(x.name(), &super::NS_XS),
7387                    Some(b"attributeGroup")
7388                ) {
7389                    let output =
7390                        <super::AttributeGroupType as WithDeserializer>::Deserializer::init(
7391                            helper, event,
7392                        )?;
7393                    return self.handle_attribute_group(
7394                        helper,
7395                        Default::default(),
7396                        output,
7397                        &mut *fallback,
7398                    );
7399                }
7400                if matches!(
7401                    helper.resolve_local_name(x.name(), &super::NS_XS),
7402                    Some(b"anyAttribute")
7403                ) {
7404                    let output = <super::AnyAttribute as WithDeserializer>::Deserializer::init(
7405                        helper, event,
7406                    )?;
7407                    return self.handle_any_attribute(
7408                        helper,
7409                        Default::default(),
7410                        output,
7411                        &mut *fallback,
7412                    );
7413                }
7414                if matches!(
7415                    helper.resolve_local_name(x.name(), &super::NS_XS),
7416                    Some(b"assert")
7417                ) {
7418                    let output = <super::AssertionType as WithDeserializer>::Deserializer::init(
7419                        helper, event,
7420                    )?;
7421                    return self.handle_assert(helper, Default::default(), output, &mut *fallback);
7422                }
7423            }
7424            *self.state__ = fallback
7425                .take()
7426                .unwrap_or(ComplexBaseTypeContentDeserializerState::Init__);
7427            Ok(ElementHandlerOutput::return_to_parent(event, false))
7428        }
7429        fn finish_state(
7430            helper: &mut DeserializeHelper,
7431            state: ComplexBaseTypeContentDeserializerState,
7432        ) -> Result<super::ComplexBaseTypeContent, Error> {
7433            use ComplexBaseTypeContentDeserializerState as S;
7434            match state {
7435                S::Unknown__ => unreachable!(),
7436                S::Init__ => Err(ErrorKind::MissingContent.into()),
7437                S::Annotation(mut values, deserializer) => {
7438                    if let Some(deserializer) = deserializer {
7439                        let value = deserializer.finish(helper)?;
7440                        ComplexBaseTypeContentDeserializer::store_annotation(&mut values, value)?;
7441                    }
7442                    Ok(super::ComplexBaseTypeContent::Annotation(
7443                        values.ok_or_else(|| ErrorKind::MissingElement("annotation".into()))?,
7444                    ))
7445                }
7446                S::SimpleContent(mut values, deserializer) => {
7447                    if let Some(deserializer) = deserializer {
7448                        let value = deserializer.finish(helper)?;
7449                        ComplexBaseTypeContentDeserializer::store_simple_content(
7450                            &mut values,
7451                            value,
7452                        )?;
7453                    }
7454                    Ok(super::ComplexBaseTypeContent::SimpleContent(
7455                        values.ok_or_else(|| ErrorKind::MissingElement("simpleContent".into()))?,
7456                    ))
7457                }
7458                S::ComplexContent(mut values, deserializer) => {
7459                    if let Some(deserializer) = deserializer {
7460                        let value = deserializer.finish(helper)?;
7461                        ComplexBaseTypeContentDeserializer::store_complex_content(
7462                            &mut values,
7463                            value,
7464                        )?;
7465                    }
7466                    Ok(super::ComplexBaseTypeContent::ComplexContent(
7467                        values.ok_or_else(|| ErrorKind::MissingElement("complexContent".into()))?,
7468                    ))
7469                }
7470                S::OpenContent(mut values, deserializer) => {
7471                    if let Some(deserializer) = deserializer {
7472                        let value = deserializer.finish(helper)?;
7473                        ComplexBaseTypeContentDeserializer::store_open_content(&mut values, value)?;
7474                    }
7475                    Ok(super::ComplexBaseTypeContent::OpenContent(
7476                        values.ok_or_else(|| ErrorKind::MissingElement("openContent".into()))?,
7477                    ))
7478                }
7479                S::Group(mut values, deserializer) => {
7480                    if let Some(deserializer) = deserializer {
7481                        let value = deserializer.finish(helper)?;
7482                        ComplexBaseTypeContentDeserializer::store_group(&mut values, value)?;
7483                    }
7484                    Ok(super::ComplexBaseTypeContent::Group(values.ok_or_else(
7485                        || ErrorKind::MissingElement("group".into()),
7486                    )?))
7487                }
7488                S::All(mut values, deserializer) => {
7489                    if let Some(deserializer) = deserializer {
7490                        let value = deserializer.finish(helper)?;
7491                        ComplexBaseTypeContentDeserializer::store_all(&mut values, value)?;
7492                    }
7493                    Ok(super::ComplexBaseTypeContent::All(
7494                        values.ok_or_else(|| ErrorKind::MissingElement("all".into()))?,
7495                    ))
7496                }
7497                S::Choice(mut values, deserializer) => {
7498                    if let Some(deserializer) = deserializer {
7499                        let value = deserializer.finish(helper)?;
7500                        ComplexBaseTypeContentDeserializer::store_choice(&mut values, value)?;
7501                    }
7502                    Ok(super::ComplexBaseTypeContent::Choice(values.ok_or_else(
7503                        || ErrorKind::MissingElement("choice".into()),
7504                    )?))
7505                }
7506                S::Sequence(mut values, deserializer) => {
7507                    if let Some(deserializer) = deserializer {
7508                        let value = deserializer.finish(helper)?;
7509                        ComplexBaseTypeContentDeserializer::store_sequence(&mut values, value)?;
7510                    }
7511                    Ok(super::ComplexBaseTypeContent::Sequence(values.ok_or_else(
7512                        || ErrorKind::MissingElement("sequence".into()),
7513                    )?))
7514                }
7515                S::Attribute(mut values, deserializer) => {
7516                    if let Some(deserializer) = deserializer {
7517                        let value = deserializer.finish(helper)?;
7518                        ComplexBaseTypeContentDeserializer::store_attribute(&mut values, value)?;
7519                    }
7520                    Ok(super::ComplexBaseTypeContent::Attribute(
7521                        values.ok_or_else(|| ErrorKind::MissingElement("attribute".into()))?,
7522                    ))
7523                }
7524                S::AttributeGroup(mut values, deserializer) => {
7525                    if let Some(deserializer) = deserializer {
7526                        let value = deserializer.finish(helper)?;
7527                        ComplexBaseTypeContentDeserializer::store_attribute_group(
7528                            &mut values,
7529                            value,
7530                        )?;
7531                    }
7532                    Ok(super::ComplexBaseTypeContent::AttributeGroup(
7533                        values.ok_or_else(|| ErrorKind::MissingElement("attributeGroup".into()))?,
7534                    ))
7535                }
7536                S::AnyAttribute(mut values, deserializer) => {
7537                    if let Some(deserializer) = deserializer {
7538                        let value = deserializer.finish(helper)?;
7539                        ComplexBaseTypeContentDeserializer::store_any_attribute(
7540                            &mut values,
7541                            value,
7542                        )?;
7543                    }
7544                    Ok(super::ComplexBaseTypeContent::AnyAttribute(
7545                        values.ok_or_else(|| ErrorKind::MissingElement("anyAttribute".into()))?,
7546                    ))
7547                }
7548                S::Assert(mut values, deserializer) => {
7549                    if let Some(deserializer) = deserializer {
7550                        let value = deserializer.finish(helper)?;
7551                        ComplexBaseTypeContentDeserializer::store_assert(&mut values, value)?;
7552                    }
7553                    Ok(super::ComplexBaseTypeContent::Assert(values.ok_or_else(
7554                        || ErrorKind::MissingElement("assert".into()),
7555                    )?))
7556                }
7557                S::Done__(data) => Ok(data),
7558            }
7559        }
7560        fn store_annotation(
7561            values: &mut Option<super::Annotation>,
7562            value: super::Annotation,
7563        ) -> Result<(), Error> {
7564            if values.is_some() {
7565                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
7566                    b"annotation",
7567                )))?;
7568            }
7569            *values = Some(value);
7570            Ok(())
7571        }
7572        fn store_simple_content(
7573            values: &mut Option<super::SimpleContent>,
7574            value: super::SimpleContent,
7575        ) -> Result<(), Error> {
7576            if values.is_some() {
7577                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
7578                    b"simpleContent",
7579                )))?;
7580            }
7581            *values = Some(value);
7582            Ok(())
7583        }
7584        fn store_complex_content(
7585            values: &mut Option<super::ComplexContent>,
7586            value: super::ComplexContent,
7587        ) -> Result<(), Error> {
7588            if values.is_some() {
7589                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
7590                    b"complexContent",
7591                )))?;
7592            }
7593            *values = Some(value);
7594            Ok(())
7595        }
7596        fn store_open_content(
7597            values: &mut Option<super::OpenContent>,
7598            value: super::OpenContent,
7599        ) -> Result<(), Error> {
7600            if values.is_some() {
7601                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
7602                    b"openContent",
7603                )))?;
7604            }
7605            *values = Some(value);
7606            Ok(())
7607        }
7608        fn store_group(
7609            values: &mut Option<super::GroupType>,
7610            value: super::GroupType,
7611        ) -> Result<(), Error> {
7612            if values.is_some() {
7613                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
7614                    b"group",
7615                )))?;
7616            }
7617            *values = Some(value);
7618            Ok(())
7619        }
7620        fn store_all(
7621            values: &mut Option<super::GroupType>,
7622            value: super::GroupType,
7623        ) -> Result<(), Error> {
7624            if values.is_some() {
7625                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(b"all")))?;
7626            }
7627            *values = Some(value);
7628            Ok(())
7629        }
7630        fn store_choice(
7631            values: &mut Option<super::GroupType>,
7632            value: super::GroupType,
7633        ) -> Result<(), Error> {
7634            if values.is_some() {
7635                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
7636                    b"choice",
7637                )))?;
7638            }
7639            *values = Some(value);
7640            Ok(())
7641        }
7642        fn store_sequence(
7643            values: &mut Option<super::GroupType>,
7644            value: super::GroupType,
7645        ) -> Result<(), Error> {
7646            if values.is_some() {
7647                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
7648                    b"sequence",
7649                )))?;
7650            }
7651            *values = Some(value);
7652            Ok(())
7653        }
7654        fn store_attribute(
7655            values: &mut Option<super::AttributeType>,
7656            value: super::AttributeType,
7657        ) -> Result<(), Error> {
7658            if values.is_some() {
7659                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
7660                    b"attribute",
7661                )))?;
7662            }
7663            *values = Some(value);
7664            Ok(())
7665        }
7666        fn store_attribute_group(
7667            values: &mut Option<super::AttributeGroupType>,
7668            value: super::AttributeGroupType,
7669        ) -> Result<(), Error> {
7670            if values.is_some() {
7671                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
7672                    b"attributeGroup",
7673                )))?;
7674            }
7675            *values = Some(value);
7676            Ok(())
7677        }
7678        fn store_any_attribute(
7679            values: &mut Option<super::AnyAttribute>,
7680            value: super::AnyAttribute,
7681        ) -> Result<(), Error> {
7682            if values.is_some() {
7683                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
7684                    b"anyAttribute",
7685                )))?;
7686            }
7687            *values = Some(value);
7688            Ok(())
7689        }
7690        fn store_assert(
7691            values: &mut Option<super::AssertionType>,
7692            value: super::AssertionType,
7693        ) -> Result<(), Error> {
7694            if values.is_some() {
7695                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
7696                    b"assert",
7697                )))?;
7698            }
7699            *values = Some(value);
7700            Ok(())
7701        }
7702        fn handle_annotation<'de>(
7703            &mut self,
7704            helper: &mut DeserializeHelper,
7705            mut values: Option<super::Annotation>,
7706            output: DeserializerOutput<'de, super::Annotation>,
7707            fallback: &mut Option<ComplexBaseTypeContentDeserializerState>,
7708        ) -> Result<ElementHandlerOutput<'de>, Error> {
7709            let DeserializerOutput {
7710                artifact,
7711                event,
7712                allow_any,
7713            } = output;
7714            if artifact.is_none() {
7715                *self.state__ = match fallback.take() {
7716                    None if values.is_none() => {
7717                        *self.state__ = ComplexBaseTypeContentDeserializerState::Init__;
7718                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
7719                    }
7720                    None => ComplexBaseTypeContentDeserializerState::Annotation(values, None),
7721                    Some(ComplexBaseTypeContentDeserializerState::Annotation(
7722                        _,
7723                        Some(deserializer),
7724                    )) => ComplexBaseTypeContentDeserializerState::Annotation(
7725                        values,
7726                        Some(deserializer),
7727                    ),
7728                    _ => unreachable!(),
7729                };
7730                return Ok(ElementHandlerOutput::break_(event, allow_any));
7731            }
7732            match fallback.take() {
7733                None => (),
7734                Some(ComplexBaseTypeContentDeserializerState::Annotation(
7735                    _,
7736                    Some(deserializer),
7737                )) => {
7738                    let data = deserializer.finish(helper)?;
7739                    ComplexBaseTypeContentDeserializer::store_annotation(&mut values, data)?;
7740                }
7741                Some(_) => unreachable!(),
7742            }
7743            Ok(match artifact {
7744                DeserializerArtifact::None => unreachable!(),
7745                DeserializerArtifact::Data(data) => {
7746                    ComplexBaseTypeContentDeserializer::store_annotation(&mut values, data)?;
7747                    let data = ComplexBaseTypeContentDeserializer::finish_state(
7748                        helper,
7749                        ComplexBaseTypeContentDeserializerState::Annotation(values, None),
7750                    )?;
7751                    *self.state__ = ComplexBaseTypeContentDeserializerState::Done__(data);
7752                    ElementHandlerOutput::Break { event, allow_any }
7753                }
7754                DeserializerArtifact::Deserializer(deserializer) => {
7755                    *self.state__ = ComplexBaseTypeContentDeserializerState::Annotation(
7756                        values,
7757                        Some(deserializer),
7758                    );
7759                    ElementHandlerOutput::from_event_end(event, allow_any)
7760                }
7761            })
7762        }
7763        fn handle_simple_content<'de>(
7764            &mut self,
7765            helper: &mut DeserializeHelper,
7766            mut values: Option<super::SimpleContent>,
7767            output: DeserializerOutput<'de, super::SimpleContent>,
7768            fallback: &mut Option<ComplexBaseTypeContentDeserializerState>,
7769        ) -> Result<ElementHandlerOutput<'de>, Error> {
7770            let DeserializerOutput {
7771                artifact,
7772                event,
7773                allow_any,
7774            } = output;
7775            if artifact.is_none() {
7776                *self.state__ = match fallback.take() {
7777                    None if values.is_none() => {
7778                        *self.state__ = ComplexBaseTypeContentDeserializerState::Init__;
7779                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
7780                    }
7781                    None => ComplexBaseTypeContentDeserializerState::SimpleContent(values, None),
7782                    Some(ComplexBaseTypeContentDeserializerState::SimpleContent(
7783                        _,
7784                        Some(deserializer),
7785                    )) => ComplexBaseTypeContentDeserializerState::SimpleContent(
7786                        values,
7787                        Some(deserializer),
7788                    ),
7789                    _ => unreachable!(),
7790                };
7791                return Ok(ElementHandlerOutput::break_(event, allow_any));
7792            }
7793            match fallback.take() {
7794                None => (),
7795                Some(ComplexBaseTypeContentDeserializerState::SimpleContent(
7796                    _,
7797                    Some(deserializer),
7798                )) => {
7799                    let data = deserializer.finish(helper)?;
7800                    ComplexBaseTypeContentDeserializer::store_simple_content(&mut values, data)?;
7801                }
7802                Some(_) => unreachable!(),
7803            }
7804            Ok(match artifact {
7805                DeserializerArtifact::None => unreachable!(),
7806                DeserializerArtifact::Data(data) => {
7807                    ComplexBaseTypeContentDeserializer::store_simple_content(&mut values, data)?;
7808                    let data = ComplexBaseTypeContentDeserializer::finish_state(
7809                        helper,
7810                        ComplexBaseTypeContentDeserializerState::SimpleContent(values, None),
7811                    )?;
7812                    *self.state__ = ComplexBaseTypeContentDeserializerState::Done__(data);
7813                    ElementHandlerOutput::Break { event, allow_any }
7814                }
7815                DeserializerArtifact::Deserializer(deserializer) => {
7816                    *self.state__ = ComplexBaseTypeContentDeserializerState::SimpleContent(
7817                        values,
7818                        Some(deserializer),
7819                    );
7820                    ElementHandlerOutput::from_event_end(event, allow_any)
7821                }
7822            })
7823        }
7824        fn handle_complex_content<'de>(
7825            &mut self,
7826            helper: &mut DeserializeHelper,
7827            mut values: Option<super::ComplexContent>,
7828            output: DeserializerOutput<'de, super::ComplexContent>,
7829            fallback: &mut Option<ComplexBaseTypeContentDeserializerState>,
7830        ) -> Result<ElementHandlerOutput<'de>, Error> {
7831            let DeserializerOutput {
7832                artifact,
7833                event,
7834                allow_any,
7835            } = output;
7836            if artifact.is_none() {
7837                *self.state__ = match fallback.take() {
7838                    None if values.is_none() => {
7839                        *self.state__ = ComplexBaseTypeContentDeserializerState::Init__;
7840                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
7841                    }
7842                    None => ComplexBaseTypeContentDeserializerState::ComplexContent(values, None),
7843                    Some(ComplexBaseTypeContentDeserializerState::ComplexContent(
7844                        _,
7845                        Some(deserializer),
7846                    )) => ComplexBaseTypeContentDeserializerState::ComplexContent(
7847                        values,
7848                        Some(deserializer),
7849                    ),
7850                    _ => unreachable!(),
7851                };
7852                return Ok(ElementHandlerOutput::break_(event, allow_any));
7853            }
7854            match fallback.take() {
7855                None => (),
7856                Some(ComplexBaseTypeContentDeserializerState::ComplexContent(
7857                    _,
7858                    Some(deserializer),
7859                )) => {
7860                    let data = deserializer.finish(helper)?;
7861                    ComplexBaseTypeContentDeserializer::store_complex_content(&mut values, data)?;
7862                }
7863                Some(_) => unreachable!(),
7864            }
7865            Ok(match artifact {
7866                DeserializerArtifact::None => unreachable!(),
7867                DeserializerArtifact::Data(data) => {
7868                    ComplexBaseTypeContentDeserializer::store_complex_content(&mut values, data)?;
7869                    let data = ComplexBaseTypeContentDeserializer::finish_state(
7870                        helper,
7871                        ComplexBaseTypeContentDeserializerState::ComplexContent(values, None),
7872                    )?;
7873                    *self.state__ = ComplexBaseTypeContentDeserializerState::Done__(data);
7874                    ElementHandlerOutput::Break { event, allow_any }
7875                }
7876                DeserializerArtifact::Deserializer(deserializer) => {
7877                    *self.state__ = ComplexBaseTypeContentDeserializerState::ComplexContent(
7878                        values,
7879                        Some(deserializer),
7880                    );
7881                    ElementHandlerOutput::from_event_end(event, allow_any)
7882                }
7883            })
7884        }
7885        fn handle_open_content<'de>(
7886            &mut self,
7887            helper: &mut DeserializeHelper,
7888            mut values: Option<super::OpenContent>,
7889            output: DeserializerOutput<'de, super::OpenContent>,
7890            fallback: &mut Option<ComplexBaseTypeContentDeserializerState>,
7891        ) -> Result<ElementHandlerOutput<'de>, Error> {
7892            let DeserializerOutput {
7893                artifact,
7894                event,
7895                allow_any,
7896            } = output;
7897            if artifact.is_none() {
7898                *self.state__ = match fallback.take() {
7899                    None if values.is_none() => {
7900                        *self.state__ = ComplexBaseTypeContentDeserializerState::Init__;
7901                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
7902                    }
7903                    None => ComplexBaseTypeContentDeserializerState::OpenContent(values, None),
7904                    Some(ComplexBaseTypeContentDeserializerState::OpenContent(
7905                        _,
7906                        Some(deserializer),
7907                    )) => ComplexBaseTypeContentDeserializerState::OpenContent(
7908                        values,
7909                        Some(deserializer),
7910                    ),
7911                    _ => unreachable!(),
7912                };
7913                return Ok(ElementHandlerOutput::break_(event, allow_any));
7914            }
7915            match fallback.take() {
7916                None => (),
7917                Some(ComplexBaseTypeContentDeserializerState::OpenContent(
7918                    _,
7919                    Some(deserializer),
7920                )) => {
7921                    let data = deserializer.finish(helper)?;
7922                    ComplexBaseTypeContentDeserializer::store_open_content(&mut values, data)?;
7923                }
7924                Some(_) => unreachable!(),
7925            }
7926            Ok(match artifact {
7927                DeserializerArtifact::None => unreachable!(),
7928                DeserializerArtifact::Data(data) => {
7929                    ComplexBaseTypeContentDeserializer::store_open_content(&mut values, data)?;
7930                    let data = ComplexBaseTypeContentDeserializer::finish_state(
7931                        helper,
7932                        ComplexBaseTypeContentDeserializerState::OpenContent(values, None),
7933                    )?;
7934                    *self.state__ = ComplexBaseTypeContentDeserializerState::Done__(data);
7935                    ElementHandlerOutput::Break { event, allow_any }
7936                }
7937                DeserializerArtifact::Deserializer(deserializer) => {
7938                    *self.state__ = ComplexBaseTypeContentDeserializerState::OpenContent(
7939                        values,
7940                        Some(deserializer),
7941                    );
7942                    ElementHandlerOutput::from_event_end(event, allow_any)
7943                }
7944            })
7945        }
7946        fn handle_group<'de>(
7947            &mut self,
7948            helper: &mut DeserializeHelper,
7949            mut values: Option<super::GroupType>,
7950            output: DeserializerOutput<'de, super::GroupType>,
7951            fallback: &mut Option<ComplexBaseTypeContentDeserializerState>,
7952        ) -> Result<ElementHandlerOutput<'de>, Error> {
7953            let DeserializerOutput {
7954                artifact,
7955                event,
7956                allow_any,
7957            } = output;
7958            if artifact.is_none() {
7959                *self.state__ = match fallback.take() {
7960                    None if values.is_none() => {
7961                        *self.state__ = ComplexBaseTypeContentDeserializerState::Init__;
7962                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
7963                    }
7964                    None => ComplexBaseTypeContentDeserializerState::Group(values, None),
7965                    Some(ComplexBaseTypeContentDeserializerState::Group(_, Some(deserializer))) => {
7966                        ComplexBaseTypeContentDeserializerState::Group(values, Some(deserializer))
7967                    }
7968                    _ => unreachable!(),
7969                };
7970                return Ok(ElementHandlerOutput::break_(event, allow_any));
7971            }
7972            match fallback.take() {
7973                None => (),
7974                Some(ComplexBaseTypeContentDeserializerState::Group(_, Some(deserializer))) => {
7975                    let data = deserializer.finish(helper)?;
7976                    ComplexBaseTypeContentDeserializer::store_group(&mut values, data)?;
7977                }
7978                Some(_) => unreachable!(),
7979            }
7980            Ok(match artifact {
7981                DeserializerArtifact::None => unreachable!(),
7982                DeserializerArtifact::Data(data) => {
7983                    ComplexBaseTypeContentDeserializer::store_group(&mut values, data)?;
7984                    let data = ComplexBaseTypeContentDeserializer::finish_state(
7985                        helper,
7986                        ComplexBaseTypeContentDeserializerState::Group(values, None),
7987                    )?;
7988                    *self.state__ = ComplexBaseTypeContentDeserializerState::Done__(data);
7989                    ElementHandlerOutput::Break { event, allow_any }
7990                }
7991                DeserializerArtifact::Deserializer(deserializer) => {
7992                    *self.state__ =
7993                        ComplexBaseTypeContentDeserializerState::Group(values, Some(deserializer));
7994                    ElementHandlerOutput::from_event_end(event, allow_any)
7995                }
7996            })
7997        }
7998        fn handle_all<'de>(
7999            &mut self,
8000            helper: &mut DeserializeHelper,
8001            mut values: Option<super::GroupType>,
8002            output: DeserializerOutput<'de, super::GroupType>,
8003            fallback: &mut Option<ComplexBaseTypeContentDeserializerState>,
8004        ) -> Result<ElementHandlerOutput<'de>, Error> {
8005            let DeserializerOutput {
8006                artifact,
8007                event,
8008                allow_any,
8009            } = output;
8010            if artifact.is_none() {
8011                *self.state__ = match fallback.take() {
8012                    None if values.is_none() => {
8013                        *self.state__ = ComplexBaseTypeContentDeserializerState::Init__;
8014                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
8015                    }
8016                    None => ComplexBaseTypeContentDeserializerState::All(values, None),
8017                    Some(ComplexBaseTypeContentDeserializerState::All(_, Some(deserializer))) => {
8018                        ComplexBaseTypeContentDeserializerState::All(values, Some(deserializer))
8019                    }
8020                    _ => unreachable!(),
8021                };
8022                return Ok(ElementHandlerOutput::break_(event, allow_any));
8023            }
8024            match fallback.take() {
8025                None => (),
8026                Some(ComplexBaseTypeContentDeserializerState::All(_, Some(deserializer))) => {
8027                    let data = deserializer.finish(helper)?;
8028                    ComplexBaseTypeContentDeserializer::store_all(&mut values, data)?;
8029                }
8030                Some(_) => unreachable!(),
8031            }
8032            Ok(match artifact {
8033                DeserializerArtifact::None => unreachable!(),
8034                DeserializerArtifact::Data(data) => {
8035                    ComplexBaseTypeContentDeserializer::store_all(&mut values, data)?;
8036                    let data = ComplexBaseTypeContentDeserializer::finish_state(
8037                        helper,
8038                        ComplexBaseTypeContentDeserializerState::All(values, None),
8039                    )?;
8040                    *self.state__ = ComplexBaseTypeContentDeserializerState::Done__(data);
8041                    ElementHandlerOutput::Break { event, allow_any }
8042                }
8043                DeserializerArtifact::Deserializer(deserializer) => {
8044                    *self.state__ =
8045                        ComplexBaseTypeContentDeserializerState::All(values, Some(deserializer));
8046                    ElementHandlerOutput::from_event_end(event, allow_any)
8047                }
8048            })
8049        }
8050        fn handle_choice<'de>(
8051            &mut self,
8052            helper: &mut DeserializeHelper,
8053            mut values: Option<super::GroupType>,
8054            output: DeserializerOutput<'de, super::GroupType>,
8055            fallback: &mut Option<ComplexBaseTypeContentDeserializerState>,
8056        ) -> Result<ElementHandlerOutput<'de>, Error> {
8057            let DeserializerOutput {
8058                artifact,
8059                event,
8060                allow_any,
8061            } = output;
8062            if artifact.is_none() {
8063                *self.state__ = match fallback.take() {
8064                    None if values.is_none() => {
8065                        *self.state__ = ComplexBaseTypeContentDeserializerState::Init__;
8066                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
8067                    }
8068                    None => ComplexBaseTypeContentDeserializerState::Choice(values, None),
8069                    Some(ComplexBaseTypeContentDeserializerState::Choice(
8070                        _,
8071                        Some(deserializer),
8072                    )) => {
8073                        ComplexBaseTypeContentDeserializerState::Choice(values, Some(deserializer))
8074                    }
8075                    _ => unreachable!(),
8076                };
8077                return Ok(ElementHandlerOutput::break_(event, allow_any));
8078            }
8079            match fallback.take() {
8080                None => (),
8081                Some(ComplexBaseTypeContentDeserializerState::Choice(_, Some(deserializer))) => {
8082                    let data = deserializer.finish(helper)?;
8083                    ComplexBaseTypeContentDeserializer::store_choice(&mut values, data)?;
8084                }
8085                Some(_) => unreachable!(),
8086            }
8087            Ok(match artifact {
8088                DeserializerArtifact::None => unreachable!(),
8089                DeserializerArtifact::Data(data) => {
8090                    ComplexBaseTypeContentDeserializer::store_choice(&mut values, data)?;
8091                    let data = ComplexBaseTypeContentDeserializer::finish_state(
8092                        helper,
8093                        ComplexBaseTypeContentDeserializerState::Choice(values, None),
8094                    )?;
8095                    *self.state__ = ComplexBaseTypeContentDeserializerState::Done__(data);
8096                    ElementHandlerOutput::Break { event, allow_any }
8097                }
8098                DeserializerArtifact::Deserializer(deserializer) => {
8099                    *self.state__ =
8100                        ComplexBaseTypeContentDeserializerState::Choice(values, Some(deserializer));
8101                    ElementHandlerOutput::from_event_end(event, allow_any)
8102                }
8103            })
8104        }
8105        fn handle_sequence<'de>(
8106            &mut self,
8107            helper: &mut DeserializeHelper,
8108            mut values: Option<super::GroupType>,
8109            output: DeserializerOutput<'de, super::GroupType>,
8110            fallback: &mut Option<ComplexBaseTypeContentDeserializerState>,
8111        ) -> Result<ElementHandlerOutput<'de>, Error> {
8112            let DeserializerOutput {
8113                artifact,
8114                event,
8115                allow_any,
8116            } = output;
8117            if artifact.is_none() {
8118                *self.state__ = match fallback.take() {
8119                    None if values.is_none() => {
8120                        *self.state__ = ComplexBaseTypeContentDeserializerState::Init__;
8121                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
8122                    }
8123                    None => ComplexBaseTypeContentDeserializerState::Sequence(values, None),
8124                    Some(ComplexBaseTypeContentDeserializerState::Sequence(
8125                        _,
8126                        Some(deserializer),
8127                    )) => ComplexBaseTypeContentDeserializerState::Sequence(
8128                        values,
8129                        Some(deserializer),
8130                    ),
8131                    _ => unreachable!(),
8132                };
8133                return Ok(ElementHandlerOutput::break_(event, allow_any));
8134            }
8135            match fallback.take() {
8136                None => (),
8137                Some(ComplexBaseTypeContentDeserializerState::Sequence(_, Some(deserializer))) => {
8138                    let data = deserializer.finish(helper)?;
8139                    ComplexBaseTypeContentDeserializer::store_sequence(&mut values, data)?;
8140                }
8141                Some(_) => unreachable!(),
8142            }
8143            Ok(match artifact {
8144                DeserializerArtifact::None => unreachable!(),
8145                DeserializerArtifact::Data(data) => {
8146                    ComplexBaseTypeContentDeserializer::store_sequence(&mut values, data)?;
8147                    let data = ComplexBaseTypeContentDeserializer::finish_state(
8148                        helper,
8149                        ComplexBaseTypeContentDeserializerState::Sequence(values, None),
8150                    )?;
8151                    *self.state__ = ComplexBaseTypeContentDeserializerState::Done__(data);
8152                    ElementHandlerOutput::Break { event, allow_any }
8153                }
8154                DeserializerArtifact::Deserializer(deserializer) => {
8155                    *self.state__ = ComplexBaseTypeContentDeserializerState::Sequence(
8156                        values,
8157                        Some(deserializer),
8158                    );
8159                    ElementHandlerOutput::from_event_end(event, allow_any)
8160                }
8161            })
8162        }
8163        fn handle_attribute<'de>(
8164            &mut self,
8165            helper: &mut DeserializeHelper,
8166            mut values: Option<super::AttributeType>,
8167            output: DeserializerOutput<'de, super::AttributeType>,
8168            fallback: &mut Option<ComplexBaseTypeContentDeserializerState>,
8169        ) -> Result<ElementHandlerOutput<'de>, Error> {
8170            let DeserializerOutput {
8171                artifact,
8172                event,
8173                allow_any,
8174            } = output;
8175            if artifact.is_none() {
8176                *self.state__ = match fallback.take() {
8177                    None if values.is_none() => {
8178                        *self.state__ = ComplexBaseTypeContentDeserializerState::Init__;
8179                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
8180                    }
8181                    None => ComplexBaseTypeContentDeserializerState::Attribute(values, None),
8182                    Some(ComplexBaseTypeContentDeserializerState::Attribute(
8183                        _,
8184                        Some(deserializer),
8185                    )) => ComplexBaseTypeContentDeserializerState::Attribute(
8186                        values,
8187                        Some(deserializer),
8188                    ),
8189                    _ => unreachable!(),
8190                };
8191                return Ok(ElementHandlerOutput::break_(event, allow_any));
8192            }
8193            match fallback.take() {
8194                None => (),
8195                Some(ComplexBaseTypeContentDeserializerState::Attribute(_, Some(deserializer))) => {
8196                    let data = deserializer.finish(helper)?;
8197                    ComplexBaseTypeContentDeserializer::store_attribute(&mut values, data)?;
8198                }
8199                Some(_) => unreachable!(),
8200            }
8201            Ok(match artifact {
8202                DeserializerArtifact::None => unreachable!(),
8203                DeserializerArtifact::Data(data) => {
8204                    ComplexBaseTypeContentDeserializer::store_attribute(&mut values, data)?;
8205                    let data = ComplexBaseTypeContentDeserializer::finish_state(
8206                        helper,
8207                        ComplexBaseTypeContentDeserializerState::Attribute(values, None),
8208                    )?;
8209                    *self.state__ = ComplexBaseTypeContentDeserializerState::Done__(data);
8210                    ElementHandlerOutput::Break { event, allow_any }
8211                }
8212                DeserializerArtifact::Deserializer(deserializer) => {
8213                    *self.state__ = ComplexBaseTypeContentDeserializerState::Attribute(
8214                        values,
8215                        Some(deserializer),
8216                    );
8217                    ElementHandlerOutput::from_event_end(event, allow_any)
8218                }
8219            })
8220        }
8221        fn handle_attribute_group<'de>(
8222            &mut self,
8223            helper: &mut DeserializeHelper,
8224            mut values: Option<super::AttributeGroupType>,
8225            output: DeserializerOutput<'de, super::AttributeGroupType>,
8226            fallback: &mut Option<ComplexBaseTypeContentDeserializerState>,
8227        ) -> Result<ElementHandlerOutput<'de>, Error> {
8228            let DeserializerOutput {
8229                artifact,
8230                event,
8231                allow_any,
8232            } = output;
8233            if artifact.is_none() {
8234                *self.state__ = match fallback.take() {
8235                    None if values.is_none() => {
8236                        *self.state__ = ComplexBaseTypeContentDeserializerState::Init__;
8237                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
8238                    }
8239                    None => ComplexBaseTypeContentDeserializerState::AttributeGroup(values, None),
8240                    Some(ComplexBaseTypeContentDeserializerState::AttributeGroup(
8241                        _,
8242                        Some(deserializer),
8243                    )) => ComplexBaseTypeContentDeserializerState::AttributeGroup(
8244                        values,
8245                        Some(deserializer),
8246                    ),
8247                    _ => unreachable!(),
8248                };
8249                return Ok(ElementHandlerOutput::break_(event, allow_any));
8250            }
8251            match fallback.take() {
8252                None => (),
8253                Some(ComplexBaseTypeContentDeserializerState::AttributeGroup(
8254                    _,
8255                    Some(deserializer),
8256                )) => {
8257                    let data = deserializer.finish(helper)?;
8258                    ComplexBaseTypeContentDeserializer::store_attribute_group(&mut values, data)?;
8259                }
8260                Some(_) => unreachable!(),
8261            }
8262            Ok(match artifact {
8263                DeserializerArtifact::None => unreachable!(),
8264                DeserializerArtifact::Data(data) => {
8265                    ComplexBaseTypeContentDeserializer::store_attribute_group(&mut values, data)?;
8266                    let data = ComplexBaseTypeContentDeserializer::finish_state(
8267                        helper,
8268                        ComplexBaseTypeContentDeserializerState::AttributeGroup(values, None),
8269                    )?;
8270                    *self.state__ = ComplexBaseTypeContentDeserializerState::Done__(data);
8271                    ElementHandlerOutput::Break { event, allow_any }
8272                }
8273                DeserializerArtifact::Deserializer(deserializer) => {
8274                    *self.state__ = ComplexBaseTypeContentDeserializerState::AttributeGroup(
8275                        values,
8276                        Some(deserializer),
8277                    );
8278                    ElementHandlerOutput::from_event_end(event, allow_any)
8279                }
8280            })
8281        }
8282        fn handle_any_attribute<'de>(
8283            &mut self,
8284            helper: &mut DeserializeHelper,
8285            mut values: Option<super::AnyAttribute>,
8286            output: DeserializerOutput<'de, super::AnyAttribute>,
8287            fallback: &mut Option<ComplexBaseTypeContentDeserializerState>,
8288        ) -> Result<ElementHandlerOutput<'de>, Error> {
8289            let DeserializerOutput {
8290                artifact,
8291                event,
8292                allow_any,
8293            } = output;
8294            if artifact.is_none() {
8295                *self.state__ = match fallback.take() {
8296                    None if values.is_none() => {
8297                        *self.state__ = ComplexBaseTypeContentDeserializerState::Init__;
8298                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
8299                    }
8300                    None => ComplexBaseTypeContentDeserializerState::AnyAttribute(values, None),
8301                    Some(ComplexBaseTypeContentDeserializerState::AnyAttribute(
8302                        _,
8303                        Some(deserializer),
8304                    )) => ComplexBaseTypeContentDeserializerState::AnyAttribute(
8305                        values,
8306                        Some(deserializer),
8307                    ),
8308                    _ => unreachable!(),
8309                };
8310                return Ok(ElementHandlerOutput::break_(event, allow_any));
8311            }
8312            match fallback.take() {
8313                None => (),
8314                Some(ComplexBaseTypeContentDeserializerState::AnyAttribute(
8315                    _,
8316                    Some(deserializer),
8317                )) => {
8318                    let data = deserializer.finish(helper)?;
8319                    ComplexBaseTypeContentDeserializer::store_any_attribute(&mut values, data)?;
8320                }
8321                Some(_) => unreachable!(),
8322            }
8323            Ok(match artifact {
8324                DeserializerArtifact::None => unreachable!(),
8325                DeserializerArtifact::Data(data) => {
8326                    ComplexBaseTypeContentDeserializer::store_any_attribute(&mut values, data)?;
8327                    let data = ComplexBaseTypeContentDeserializer::finish_state(
8328                        helper,
8329                        ComplexBaseTypeContentDeserializerState::AnyAttribute(values, None),
8330                    )?;
8331                    *self.state__ = ComplexBaseTypeContentDeserializerState::Done__(data);
8332                    ElementHandlerOutput::Break { event, allow_any }
8333                }
8334                DeserializerArtifact::Deserializer(deserializer) => {
8335                    *self.state__ = ComplexBaseTypeContentDeserializerState::AnyAttribute(
8336                        values,
8337                        Some(deserializer),
8338                    );
8339                    ElementHandlerOutput::from_event_end(event, allow_any)
8340                }
8341            })
8342        }
8343        fn handle_assert<'de>(
8344            &mut self,
8345            helper: &mut DeserializeHelper,
8346            mut values: Option<super::AssertionType>,
8347            output: DeserializerOutput<'de, super::AssertionType>,
8348            fallback: &mut Option<ComplexBaseTypeContentDeserializerState>,
8349        ) -> Result<ElementHandlerOutput<'de>, Error> {
8350            let DeserializerOutput {
8351                artifact,
8352                event,
8353                allow_any,
8354            } = output;
8355            if artifact.is_none() {
8356                *self.state__ = match fallback.take() {
8357                    None if values.is_none() => {
8358                        *self.state__ = ComplexBaseTypeContentDeserializerState::Init__;
8359                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
8360                    }
8361                    None => ComplexBaseTypeContentDeserializerState::Assert(values, None),
8362                    Some(ComplexBaseTypeContentDeserializerState::Assert(
8363                        _,
8364                        Some(deserializer),
8365                    )) => {
8366                        ComplexBaseTypeContentDeserializerState::Assert(values, Some(deserializer))
8367                    }
8368                    _ => unreachable!(),
8369                };
8370                return Ok(ElementHandlerOutput::break_(event, allow_any));
8371            }
8372            match fallback.take() {
8373                None => (),
8374                Some(ComplexBaseTypeContentDeserializerState::Assert(_, Some(deserializer))) => {
8375                    let data = deserializer.finish(helper)?;
8376                    ComplexBaseTypeContentDeserializer::store_assert(&mut values, data)?;
8377                }
8378                Some(_) => unreachable!(),
8379            }
8380            Ok(match artifact {
8381                DeserializerArtifact::None => unreachable!(),
8382                DeserializerArtifact::Data(data) => {
8383                    ComplexBaseTypeContentDeserializer::store_assert(&mut values, data)?;
8384                    let data = ComplexBaseTypeContentDeserializer::finish_state(
8385                        helper,
8386                        ComplexBaseTypeContentDeserializerState::Assert(values, None),
8387                    )?;
8388                    *self.state__ = ComplexBaseTypeContentDeserializerState::Done__(data);
8389                    ElementHandlerOutput::Break { event, allow_any }
8390                }
8391                DeserializerArtifact::Deserializer(deserializer) => {
8392                    *self.state__ =
8393                        ComplexBaseTypeContentDeserializerState::Assert(values, Some(deserializer));
8394                    ElementHandlerOutput::from_event_end(event, allow_any)
8395                }
8396            })
8397        }
8398    }
8399    impl<'de> Deserializer<'de, super::ComplexBaseTypeContent>
8400        for Box<ComplexBaseTypeContentDeserializer>
8401    {
8402        fn init(
8403            helper: &mut DeserializeHelper,
8404            event: Event<'de>,
8405        ) -> DeserializerResult<'de, super::ComplexBaseTypeContent> {
8406            let deserializer = Box::new(ComplexBaseTypeContentDeserializer {
8407                state__: Box::new(ComplexBaseTypeContentDeserializerState::Init__),
8408            });
8409            let mut output = deserializer.next(helper, event)?;
8410            output.artifact = match output.artifact {
8411                DeserializerArtifact::Deserializer(x)
8412                    if matches!(&*x.state__, ComplexBaseTypeContentDeserializerState::Init__) =>
8413                {
8414                    DeserializerArtifact::None
8415                }
8416                artifact => artifact,
8417            };
8418            Ok(output)
8419        }
8420        fn next(
8421            mut self,
8422            helper: &mut DeserializeHelper,
8423            event: Event<'de>,
8424        ) -> DeserializerResult<'de, super::ComplexBaseTypeContent> {
8425            use ComplexBaseTypeContentDeserializerState as S;
8426            let mut event = event;
8427            let mut fallback = None;
8428            let (event, allow_any) = loop {
8429                let state = replace(&mut *self.state__, S::Unknown__);
8430                event = match (state, event) {
8431                    (S::Unknown__, _) => unreachable!(),
8432                    (S::Annotation(values, Some(deserializer)), event) => {
8433                        let output = deserializer.next(helper, event)?;
8434                        match self.handle_annotation(helper, values, output, &mut fallback)? {
8435                            ElementHandlerOutput::Break { event, allow_any } => {
8436                                break (event, allow_any)
8437                            }
8438                            ElementHandlerOutput::Continue { event, .. } => event,
8439                        }
8440                    }
8441                    (S::SimpleContent(values, Some(deserializer)), event) => {
8442                        let output = deserializer.next(helper, event)?;
8443                        match self.handle_simple_content(helper, values, output, &mut fallback)? {
8444                            ElementHandlerOutput::Break { event, allow_any } => {
8445                                break (event, allow_any)
8446                            }
8447                            ElementHandlerOutput::Continue { event, .. } => event,
8448                        }
8449                    }
8450                    (S::ComplexContent(values, Some(deserializer)), event) => {
8451                        let output = deserializer.next(helper, event)?;
8452                        match self.handle_complex_content(helper, values, output, &mut fallback)? {
8453                            ElementHandlerOutput::Break { event, allow_any } => {
8454                                break (event, allow_any)
8455                            }
8456                            ElementHandlerOutput::Continue { event, .. } => event,
8457                        }
8458                    }
8459                    (S::OpenContent(values, Some(deserializer)), event) => {
8460                        let output = deserializer.next(helper, event)?;
8461                        match self.handle_open_content(helper, values, output, &mut fallback)? {
8462                            ElementHandlerOutput::Break { event, allow_any } => {
8463                                break (event, allow_any)
8464                            }
8465                            ElementHandlerOutput::Continue { event, .. } => event,
8466                        }
8467                    }
8468                    (S::Group(values, Some(deserializer)), event) => {
8469                        let output = deserializer.next(helper, event)?;
8470                        match self.handle_group(helper, values, output, &mut fallback)? {
8471                            ElementHandlerOutput::Break { event, allow_any } => {
8472                                break (event, allow_any)
8473                            }
8474                            ElementHandlerOutput::Continue { event, .. } => event,
8475                        }
8476                    }
8477                    (S::All(values, Some(deserializer)), event) => {
8478                        let output = deserializer.next(helper, event)?;
8479                        match self.handle_all(helper, values, output, &mut fallback)? {
8480                            ElementHandlerOutput::Break { event, allow_any } => {
8481                                break (event, allow_any)
8482                            }
8483                            ElementHandlerOutput::Continue { event, .. } => event,
8484                        }
8485                    }
8486                    (S::Choice(values, Some(deserializer)), event) => {
8487                        let output = deserializer.next(helper, event)?;
8488                        match self.handle_choice(helper, values, output, &mut fallback)? {
8489                            ElementHandlerOutput::Break { event, allow_any } => {
8490                                break (event, allow_any)
8491                            }
8492                            ElementHandlerOutput::Continue { event, .. } => event,
8493                        }
8494                    }
8495                    (S::Sequence(values, Some(deserializer)), event) => {
8496                        let output = deserializer.next(helper, event)?;
8497                        match self.handle_sequence(helper, values, output, &mut fallback)? {
8498                            ElementHandlerOutput::Break { event, allow_any } => {
8499                                break (event, allow_any)
8500                            }
8501                            ElementHandlerOutput::Continue { event, .. } => event,
8502                        }
8503                    }
8504                    (S::Attribute(values, Some(deserializer)), event) => {
8505                        let output = deserializer.next(helper, event)?;
8506                        match self.handle_attribute(helper, values, output, &mut fallback)? {
8507                            ElementHandlerOutput::Break { event, allow_any } => {
8508                                break (event, allow_any)
8509                            }
8510                            ElementHandlerOutput::Continue { event, .. } => event,
8511                        }
8512                    }
8513                    (S::AttributeGroup(values, Some(deserializer)), event) => {
8514                        let output = deserializer.next(helper, event)?;
8515                        match self.handle_attribute_group(helper, values, output, &mut fallback)? {
8516                            ElementHandlerOutput::Break { event, allow_any } => {
8517                                break (event, allow_any)
8518                            }
8519                            ElementHandlerOutput::Continue { event, .. } => event,
8520                        }
8521                    }
8522                    (S::AnyAttribute(values, Some(deserializer)), event) => {
8523                        let output = deserializer.next(helper, event)?;
8524                        match self.handle_any_attribute(helper, values, output, &mut fallback)? {
8525                            ElementHandlerOutput::Break { event, allow_any } => {
8526                                break (event, allow_any)
8527                            }
8528                            ElementHandlerOutput::Continue { event, .. } => event,
8529                        }
8530                    }
8531                    (S::Assert(values, Some(deserializer)), event) => {
8532                        let output = deserializer.next(helper, event)?;
8533                        match self.handle_assert(helper, values, output, &mut fallback)? {
8534                            ElementHandlerOutput::Break { event, allow_any } => {
8535                                break (event, allow_any)
8536                            }
8537                            ElementHandlerOutput::Continue { event, .. } => event,
8538                        }
8539                    }
8540                    (state, event @ Event::End(_)) => {
8541                        return Ok(DeserializerOutput {
8542                            artifact: DeserializerArtifact::Data(
8543                                ComplexBaseTypeContentDeserializer::finish_state(helper, state)?,
8544                            ),
8545                            event: DeserializerEvent::Continue(event),
8546                            allow_any: false,
8547                        });
8548                    }
8549                    (S::Init__, event) => match self.find_suitable(helper, event, &mut fallback)? {
8550                        ElementHandlerOutput::Break { event, allow_any } => {
8551                            break (event, allow_any)
8552                        }
8553                        ElementHandlerOutput::Continue { event, .. } => event,
8554                    },
8555                    (S::Annotation(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
8556                        let output = helper.init_start_tag_deserializer(
8557                            event,
8558                            Some(&super::NS_XS),
8559                            b"annotation",
8560                            false,
8561                        )?;
8562                        match self.handle_annotation(helper, values, output, &mut fallback)? {
8563                            ElementHandlerOutput::Break { event, allow_any } => {
8564                                break (event, allow_any)
8565                            }
8566                            ElementHandlerOutput::Continue { event, .. } => event,
8567                        }
8568                    }
8569                    (
8570                        S::SimpleContent(values, None),
8571                        event @ (Event::Start(_) | Event::Empty(_)),
8572                    ) => {
8573                        let output = helper.init_start_tag_deserializer(
8574                            event,
8575                            Some(&super::NS_XS),
8576                            b"simpleContent",
8577                            true,
8578                        )?;
8579                        match self.handle_simple_content(helper, values, output, &mut fallback)? {
8580                            ElementHandlerOutput::Break { event, allow_any } => {
8581                                break (event, allow_any)
8582                            }
8583                            ElementHandlerOutput::Continue { event, .. } => event,
8584                        }
8585                    }
8586                    (
8587                        S::ComplexContent(values, None),
8588                        event @ (Event::Start(_) | Event::Empty(_)),
8589                    ) => {
8590                        let output = helper.init_start_tag_deserializer(
8591                            event,
8592                            Some(&super::NS_XS),
8593                            b"complexContent",
8594                            true,
8595                        )?;
8596                        match self.handle_complex_content(helper, values, output, &mut fallback)? {
8597                            ElementHandlerOutput::Break { event, allow_any } => {
8598                                break (event, allow_any)
8599                            }
8600                            ElementHandlerOutput::Continue { event, .. } => event,
8601                        }
8602                    }
8603                    (S::OpenContent(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
8604                        let output = helper.init_start_tag_deserializer(
8605                            event,
8606                            Some(&super::NS_XS),
8607                            b"openContent",
8608                            false,
8609                        )?;
8610                        match self.handle_open_content(helper, values, output, &mut fallback)? {
8611                            ElementHandlerOutput::Break { event, allow_any } => {
8612                                break (event, allow_any)
8613                            }
8614                            ElementHandlerOutput::Continue { event, .. } => event,
8615                        }
8616                    }
8617                    (S::Group(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
8618                        let output = helper.init_start_tag_deserializer(
8619                            event,
8620                            Some(&super::NS_XS),
8621                            b"group",
8622                            true,
8623                        )?;
8624                        match self.handle_group(helper, values, output, &mut fallback)? {
8625                            ElementHandlerOutput::Break { event, allow_any } => {
8626                                break (event, allow_any)
8627                            }
8628                            ElementHandlerOutput::Continue { event, .. } => event,
8629                        }
8630                    }
8631                    (S::All(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
8632                        let output = helper.init_start_tag_deserializer(
8633                            event,
8634                            Some(&super::NS_XS),
8635                            b"all",
8636                            true,
8637                        )?;
8638                        match self.handle_all(helper, values, output, &mut fallback)? {
8639                            ElementHandlerOutput::Break { event, allow_any } => {
8640                                break (event, allow_any)
8641                            }
8642                            ElementHandlerOutput::Continue { event, .. } => event,
8643                        }
8644                    }
8645                    (S::Choice(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
8646                        let output = helper.init_start_tag_deserializer(
8647                            event,
8648                            Some(&super::NS_XS),
8649                            b"choice",
8650                            true,
8651                        )?;
8652                        match self.handle_choice(helper, values, output, &mut fallback)? {
8653                            ElementHandlerOutput::Break { event, allow_any } => {
8654                                break (event, allow_any)
8655                            }
8656                            ElementHandlerOutput::Continue { event, .. } => event,
8657                        }
8658                    }
8659                    (S::Sequence(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
8660                        let output = helper.init_start_tag_deserializer(
8661                            event,
8662                            Some(&super::NS_XS),
8663                            b"sequence",
8664                            true,
8665                        )?;
8666                        match self.handle_sequence(helper, values, output, &mut fallback)? {
8667                            ElementHandlerOutput::Break { event, allow_any } => {
8668                                break (event, allow_any)
8669                            }
8670                            ElementHandlerOutput::Continue { event, .. } => event,
8671                        }
8672                    }
8673                    (S::Attribute(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
8674                        let output = helper.init_start_tag_deserializer(
8675                            event,
8676                            Some(&super::NS_XS),
8677                            b"attribute",
8678                            false,
8679                        )?;
8680                        match self.handle_attribute(helper, values, output, &mut fallback)? {
8681                            ElementHandlerOutput::Break { event, allow_any } => {
8682                                break (event, allow_any)
8683                            }
8684                            ElementHandlerOutput::Continue { event, .. } => event,
8685                        }
8686                    }
8687                    (
8688                        S::AttributeGroup(values, None),
8689                        event @ (Event::Start(_) | Event::Empty(_)),
8690                    ) => {
8691                        let output = helper.init_start_tag_deserializer(
8692                            event,
8693                            Some(&super::NS_XS),
8694                            b"attributeGroup",
8695                            false,
8696                        )?;
8697                        match self.handle_attribute_group(helper, values, output, &mut fallback)? {
8698                            ElementHandlerOutput::Break { event, allow_any } => {
8699                                break (event, allow_any)
8700                            }
8701                            ElementHandlerOutput::Continue { event, .. } => event,
8702                        }
8703                    }
8704                    (
8705                        S::AnyAttribute(values, None),
8706                        event @ (Event::Start(_) | Event::Empty(_)),
8707                    ) => {
8708                        let output = helper.init_start_tag_deserializer(
8709                            event,
8710                            Some(&super::NS_XS),
8711                            b"anyAttribute",
8712                            false,
8713                        )?;
8714                        match self.handle_any_attribute(helper, values, output, &mut fallback)? {
8715                            ElementHandlerOutput::Break { event, allow_any } => {
8716                                break (event, allow_any)
8717                            }
8718                            ElementHandlerOutput::Continue { event, .. } => event,
8719                        }
8720                    }
8721                    (S::Assert(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
8722                        let output = helper.init_start_tag_deserializer(
8723                            event,
8724                            Some(&super::NS_XS),
8725                            b"assert",
8726                            false,
8727                        )?;
8728                        match self.handle_assert(helper, values, output, &mut fallback)? {
8729                            ElementHandlerOutput::Break { event, allow_any } => {
8730                                break (event, allow_any)
8731                            }
8732                            ElementHandlerOutput::Continue { event, .. } => event,
8733                        }
8734                    }
8735                    (s @ S::Done__(_), event) => {
8736                        *self.state__ = s;
8737                        break (DeserializerEvent::Continue(event), false);
8738                    }
8739                    (state, event) => {
8740                        *self.state__ = state;
8741                        break (DeserializerEvent::Break(event), false);
8742                    }
8743                }
8744            };
8745            let artifact = if matches!(&*self.state__, S::Done__(_)) {
8746                DeserializerArtifact::Data(self.finish(helper)?)
8747            } else {
8748                DeserializerArtifact::Deserializer(self)
8749            };
8750            Ok(DeserializerOutput {
8751                artifact,
8752                event,
8753                allow_any,
8754            })
8755        }
8756        fn finish(
8757            self,
8758            helper: &mut DeserializeHelper,
8759        ) -> Result<super::ComplexBaseTypeContent, Error> {
8760            ComplexBaseTypeContentDeserializer::finish_state(helper, *self.state__)
8761        }
8762    }
8763    #[derive(Debug)]
8764    pub struct GroupTypeDeserializer {
8765        id: Option<String>,
8766        name: Option<String>,
8767        ref_: Option<QName>,
8768        min_occurs: usize,
8769        max_occurs: MaxOccurs,
8770        content: Vec<super::GroupTypeContent>,
8771        state__: Box<GroupTypeDeserializerState>,
8772    }
8773    #[derive(Debug)]
8774    enum GroupTypeDeserializerState {
8775        Init__,
8776        Next__,
8777        Content__(<super::GroupTypeContent as WithDeserializer>::Deserializer),
8778        Unknown__,
8779    }
8780    impl GroupTypeDeserializer {
8781        fn from_bytes_start(
8782            helper: &mut DeserializeHelper,
8783            bytes_start: &BytesStart<'_>,
8784        ) -> Result<Box<Self>, Error> {
8785            let mut id: Option<String> = None;
8786            let mut name: Option<String> = None;
8787            let mut ref_: Option<QName> = None;
8788            let mut min_occurs: Option<usize> = None;
8789            let mut max_occurs: Option<MaxOccurs> = None;
8790            for attrib in helper.filter_xmlns_attributes(bytes_start) {
8791                let attrib = attrib?;
8792                if matches!(
8793                    helper.resolve_local_name(attrib.key, &super::NS_XS),
8794                    Some(b"id")
8795                ) {
8796                    helper.read_attrib(&mut id, b"id", &attrib.value)?;
8797                } else if matches!(
8798                    helper.resolve_local_name(attrib.key, &super::NS_XS),
8799                    Some(b"name")
8800                ) {
8801                    helper.read_attrib(&mut name, b"name", &attrib.value)?;
8802                } else if matches!(
8803                    helper.resolve_local_name(attrib.key, &super::NS_XS),
8804                    Some(b"ref")
8805                ) {
8806                    helper.read_attrib(&mut ref_, b"ref", &attrib.value)?;
8807                } else if matches!(
8808                    helper.resolve_local_name(attrib.key, &super::NS_XS),
8809                    Some(b"minOccurs")
8810                ) {
8811                    helper.read_attrib(&mut min_occurs, b"minOccurs", &attrib.value)?;
8812                } else if matches!(
8813                    helper.resolve_local_name(attrib.key, &super::NS_XS),
8814                    Some(b"maxOccurs")
8815                ) {
8816                    helper.read_attrib(&mut max_occurs, b"maxOccurs", &attrib.value)?;
8817                }
8818            }
8819            Ok(Box::new(Self {
8820                id: id,
8821                name: name,
8822                ref_: ref_,
8823                min_occurs: min_occurs.unwrap_or_else(super::GroupType::default_min_occurs),
8824                max_occurs: max_occurs.unwrap_or_else(super::GroupType::default_max_occurs),
8825                content: Vec::new(),
8826                state__: Box::new(GroupTypeDeserializerState::Init__),
8827            }))
8828        }
8829        fn finish_state(
8830            &mut self,
8831            helper: &mut DeserializeHelper,
8832            state: GroupTypeDeserializerState,
8833        ) -> Result<(), Error> {
8834            if let GroupTypeDeserializerState::Content__(deserializer) = state {
8835                self.store_content(deserializer.finish(helper)?)?;
8836            }
8837            Ok(())
8838        }
8839        fn store_content(&mut self, value: super::GroupTypeContent) -> Result<(), Error> {
8840            self.content.push(value);
8841            Ok(())
8842        }
8843        fn handle_content<'de>(
8844            &mut self,
8845            helper: &mut DeserializeHelper,
8846            output: DeserializerOutput<'de, super::GroupTypeContent>,
8847            fallback: &mut Option<GroupTypeDeserializerState>,
8848        ) -> Result<ElementHandlerOutput<'de>, Error> {
8849            let DeserializerOutput {
8850                artifact,
8851                event,
8852                allow_any,
8853            } = output;
8854            if artifact.is_none() {
8855                *self.state__ = fallback
8856                    .take()
8857                    .unwrap_or(GroupTypeDeserializerState::Next__);
8858                return Ok(ElementHandlerOutput::break_(event, allow_any));
8859            }
8860            if let Some(fallback) = fallback.take() {
8861                self.finish_state(helper, fallback)?;
8862            }
8863            Ok(match artifact {
8864                DeserializerArtifact::None => unreachable!(),
8865                DeserializerArtifact::Data(data) => {
8866                    self.store_content(data)?;
8867                    *self.state__ = GroupTypeDeserializerState::Next__;
8868                    ElementHandlerOutput::from_event(event, allow_any)
8869                }
8870                DeserializerArtifact::Deserializer(deserializer) => {
8871                    let ret = ElementHandlerOutput::from_event(event, allow_any);
8872                    match &ret {
8873                        ElementHandlerOutput::Break { .. } => {
8874                            *self.state__ = GroupTypeDeserializerState::Content__(deserializer);
8875                        }
8876                        ElementHandlerOutput::Continue { .. } => {
8877                            fallback
8878                                .get_or_insert(GroupTypeDeserializerState::Content__(deserializer));
8879                            *self.state__ = GroupTypeDeserializerState::Next__;
8880                        }
8881                    }
8882                    ret
8883                }
8884            })
8885        }
8886    }
8887    impl<'de> Deserializer<'de, super::GroupType> for Box<GroupTypeDeserializer> {
8888        fn init(
8889            helper: &mut DeserializeHelper,
8890            event: Event<'de>,
8891        ) -> DeserializerResult<'de, super::GroupType> {
8892            helper
8893                .init_deserializer_from_start_event(event, GroupTypeDeserializer::from_bytes_start)
8894        }
8895        fn next(
8896            mut self,
8897            helper: &mut DeserializeHelper,
8898            event: Event<'de>,
8899        ) -> DeserializerResult<'de, super::GroupType> {
8900            use GroupTypeDeserializerState as S;
8901            let mut event = event;
8902            let mut fallback = None;
8903            let (event, allow_any) = loop {
8904                let state = replace(&mut *self.state__, S::Unknown__);
8905                event = match (state, event) {
8906                    (S::Unknown__, _) => unreachable!(),
8907                    (S::Content__(deserializer), event) => {
8908                        let output = deserializer.next(helper, event)?;
8909                        match self.handle_content(helper, output, &mut fallback)? {
8910                            ElementHandlerOutput::Break { event, allow_any } => {
8911                                break (event, allow_any)
8912                            }
8913                            ElementHandlerOutput::Continue { event, .. } => event,
8914                        }
8915                    }
8916                    (_, Event::End(_)) => {
8917                        return Ok(DeserializerOutput {
8918                            artifact: DeserializerArtifact::Data(self.finish(helper)?),
8919                            event: DeserializerEvent::None,
8920                            allow_any: false,
8921                        });
8922                    }
8923                    (state @ (S::Init__ | S::Next__), event) => {
8924                        fallback.get_or_insert(state);
8925                        let output =
8926                            <super::GroupTypeContent as WithDeserializer>::Deserializer::init(
8927                                helper, event,
8928                            )?;
8929                        match self.handle_content(helper, output, &mut fallback)? {
8930                            ElementHandlerOutput::Break { event, allow_any } => {
8931                                break (event, allow_any)
8932                            }
8933                            ElementHandlerOutput::Continue { event, .. } => event,
8934                        }
8935                    }
8936                }
8937            };
8938            let artifact = DeserializerArtifact::Deserializer(self);
8939            Ok(DeserializerOutput {
8940                artifact,
8941                event,
8942                allow_any,
8943            })
8944        }
8945        fn finish(mut self, helper: &mut DeserializeHelper) -> Result<super::GroupType, Error> {
8946            let state = replace(&mut *self.state__, GroupTypeDeserializerState::Unknown__);
8947            self.finish_state(helper, state)?;
8948            Ok(super::GroupType {
8949                id: self.id,
8950                name: self.name,
8951                ref_: self.ref_,
8952                min_occurs: self.min_occurs,
8953                max_occurs: self.max_occurs,
8954                content: self.content,
8955            })
8956        }
8957    }
8958    #[derive(Debug)]
8959    pub struct GroupTypeContentDeserializer {
8960        state__: Box<GroupTypeContentDeserializerState>,
8961    }
8962    #[derive(Debug)]
8963    pub enum GroupTypeContentDeserializerState {
8964        Init__,
8965        Annotation(
8966            Option<super::Annotation>,
8967            Option<<super::Annotation as WithDeserializer>::Deserializer>,
8968        ),
8969        Element(
8970            Option<super::ElementType>,
8971            Option<<super::ElementType as WithDeserializer>::Deserializer>,
8972        ),
8973        Group(
8974            Option<super::GroupType>,
8975            Option<<super::GroupType as WithDeserializer>::Deserializer>,
8976        ),
8977        All(
8978            Option<super::GroupType>,
8979            Option<<super::GroupType as WithDeserializer>::Deserializer>,
8980        ),
8981        Choice(
8982            Option<super::GroupType>,
8983            Option<<super::GroupType as WithDeserializer>::Deserializer>,
8984        ),
8985        Sequence(
8986            Option<super::GroupType>,
8987            Option<<super::GroupType as WithDeserializer>::Deserializer>,
8988        ),
8989        Any(
8990            Option<super::Any>,
8991            Option<<super::Any as WithDeserializer>::Deserializer>,
8992        ),
8993        Done__(super::GroupTypeContent),
8994        Unknown__,
8995    }
8996    impl GroupTypeContentDeserializer {
8997        fn find_suitable<'de>(
8998            &mut self,
8999            helper: &mut DeserializeHelper,
9000            event: Event<'de>,
9001            fallback: &mut Option<GroupTypeContentDeserializerState>,
9002        ) -> Result<ElementHandlerOutput<'de>, Error> {
9003            if let Event::Start(x) | Event::Empty(x) = &event {
9004                if matches!(
9005                    helper.resolve_local_name(x.name(), &super::NS_XS),
9006                    Some(b"annotation")
9007                ) {
9008                    let output =
9009                        <super::Annotation as WithDeserializer>::Deserializer::init(helper, event)?;
9010                    return self.handle_annotation(
9011                        helper,
9012                        Default::default(),
9013                        output,
9014                        &mut *fallback,
9015                    );
9016                }
9017                if matches!(
9018                    helper.resolve_local_name(x.name(), &super::NS_XS),
9019                    Some(b"element")
9020                ) {
9021                    let output = <super::ElementType as WithDeserializer>::Deserializer::init(
9022                        helper, event,
9023                    )?;
9024                    return self.handle_element(helper, Default::default(), output, &mut *fallback);
9025                }
9026                if matches!(
9027                    helper.resolve_local_name(x.name(), &super::NS_XS),
9028                    Some(b"group")
9029                ) {
9030                    let output =
9031                        <super::GroupType as WithDeserializer>::Deserializer::init(helper, event)?;
9032                    return self.handle_group(helper, Default::default(), output, &mut *fallback);
9033                }
9034                if matches!(
9035                    helper.resolve_local_name(x.name(), &super::NS_XS),
9036                    Some(b"all")
9037                ) {
9038                    let output =
9039                        <super::GroupType as WithDeserializer>::Deserializer::init(helper, event)?;
9040                    return self.handle_all(helper, Default::default(), output, &mut *fallback);
9041                }
9042                if matches!(
9043                    helper.resolve_local_name(x.name(), &super::NS_XS),
9044                    Some(b"choice")
9045                ) {
9046                    let output =
9047                        <super::GroupType as WithDeserializer>::Deserializer::init(helper, event)?;
9048                    return self.handle_choice(helper, Default::default(), output, &mut *fallback);
9049                }
9050                if matches!(
9051                    helper.resolve_local_name(x.name(), &super::NS_XS),
9052                    Some(b"sequence")
9053                ) {
9054                    let output =
9055                        <super::GroupType as WithDeserializer>::Deserializer::init(helper, event)?;
9056                    return self.handle_sequence(
9057                        helper,
9058                        Default::default(),
9059                        output,
9060                        &mut *fallback,
9061                    );
9062                }
9063                if matches!(
9064                    helper.resolve_local_name(x.name(), &super::NS_XS),
9065                    Some(b"any")
9066                ) {
9067                    let output =
9068                        <super::Any as WithDeserializer>::Deserializer::init(helper, event)?;
9069                    return self.handle_any(helper, Default::default(), output, &mut *fallback);
9070                }
9071            }
9072            *self.state__ = fallback
9073                .take()
9074                .unwrap_or(GroupTypeContentDeserializerState::Init__);
9075            Ok(ElementHandlerOutput::return_to_parent(event, false))
9076        }
9077        fn finish_state(
9078            helper: &mut DeserializeHelper,
9079            state: GroupTypeContentDeserializerState,
9080        ) -> Result<super::GroupTypeContent, Error> {
9081            use GroupTypeContentDeserializerState as S;
9082            match state {
9083                S::Unknown__ => unreachable!(),
9084                S::Init__ => Err(ErrorKind::MissingContent.into()),
9085                S::Annotation(mut values, deserializer) => {
9086                    if let Some(deserializer) = deserializer {
9087                        let value = deserializer.finish(helper)?;
9088                        GroupTypeContentDeserializer::store_annotation(&mut values, value)?;
9089                    }
9090                    Ok(super::GroupTypeContent::Annotation(values.ok_or_else(
9091                        || ErrorKind::MissingElement("annotation".into()),
9092                    )?))
9093                }
9094                S::Element(mut values, deserializer) => {
9095                    if let Some(deserializer) = deserializer {
9096                        let value = deserializer.finish(helper)?;
9097                        GroupTypeContentDeserializer::store_element(&mut values, value)?;
9098                    }
9099                    Ok(super::GroupTypeContent::Element(values.ok_or_else(
9100                        || ErrorKind::MissingElement("element".into()),
9101                    )?))
9102                }
9103                S::Group(mut values, deserializer) => {
9104                    if let Some(deserializer) = deserializer {
9105                        let value = deserializer.finish(helper)?;
9106                        GroupTypeContentDeserializer::store_group(&mut values, value)?;
9107                    }
9108                    Ok(super::GroupTypeContent::Group(values.ok_or_else(|| {
9109                        ErrorKind::MissingElement("group".into())
9110                    })?))
9111                }
9112                S::All(mut values, deserializer) => {
9113                    if let Some(deserializer) = deserializer {
9114                        let value = deserializer.finish(helper)?;
9115                        GroupTypeContentDeserializer::store_all(&mut values, value)?;
9116                    }
9117                    Ok(super::GroupTypeContent::All(
9118                        values.ok_or_else(|| ErrorKind::MissingElement("all".into()))?,
9119                    ))
9120                }
9121                S::Choice(mut values, deserializer) => {
9122                    if let Some(deserializer) = deserializer {
9123                        let value = deserializer.finish(helper)?;
9124                        GroupTypeContentDeserializer::store_choice(&mut values, value)?;
9125                    }
9126                    Ok(super::GroupTypeContent::Choice(values.ok_or_else(
9127                        || ErrorKind::MissingElement("choice".into()),
9128                    )?))
9129                }
9130                S::Sequence(mut values, deserializer) => {
9131                    if let Some(deserializer) = deserializer {
9132                        let value = deserializer.finish(helper)?;
9133                        GroupTypeContentDeserializer::store_sequence(&mut values, value)?;
9134                    }
9135                    Ok(super::GroupTypeContent::Sequence(values.ok_or_else(
9136                        || ErrorKind::MissingElement("sequence".into()),
9137                    )?))
9138                }
9139                S::Any(mut values, deserializer) => {
9140                    if let Some(deserializer) = deserializer {
9141                        let value = deserializer.finish(helper)?;
9142                        GroupTypeContentDeserializer::store_any(&mut values, value)?;
9143                    }
9144                    Ok(super::GroupTypeContent::Any(
9145                        values.ok_or_else(|| ErrorKind::MissingElement("any".into()))?,
9146                    ))
9147                }
9148                S::Done__(data) => Ok(data),
9149            }
9150        }
9151        fn store_annotation(
9152            values: &mut Option<super::Annotation>,
9153            value: super::Annotation,
9154        ) -> Result<(), Error> {
9155            if values.is_some() {
9156                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
9157                    b"annotation",
9158                )))?;
9159            }
9160            *values = Some(value);
9161            Ok(())
9162        }
9163        fn store_element(
9164            values: &mut Option<super::ElementType>,
9165            value: super::ElementType,
9166        ) -> Result<(), Error> {
9167            if values.is_some() {
9168                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
9169                    b"element",
9170                )))?;
9171            }
9172            *values = Some(value);
9173            Ok(())
9174        }
9175        fn store_group(
9176            values: &mut Option<super::GroupType>,
9177            value: super::GroupType,
9178        ) -> Result<(), Error> {
9179            if values.is_some() {
9180                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
9181                    b"group",
9182                )))?;
9183            }
9184            *values = Some(value);
9185            Ok(())
9186        }
9187        fn store_all(
9188            values: &mut Option<super::GroupType>,
9189            value: super::GroupType,
9190        ) -> Result<(), Error> {
9191            if values.is_some() {
9192                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(b"all")))?;
9193            }
9194            *values = Some(value);
9195            Ok(())
9196        }
9197        fn store_choice(
9198            values: &mut Option<super::GroupType>,
9199            value: super::GroupType,
9200        ) -> Result<(), Error> {
9201            if values.is_some() {
9202                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
9203                    b"choice",
9204                )))?;
9205            }
9206            *values = Some(value);
9207            Ok(())
9208        }
9209        fn store_sequence(
9210            values: &mut Option<super::GroupType>,
9211            value: super::GroupType,
9212        ) -> Result<(), Error> {
9213            if values.is_some() {
9214                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
9215                    b"sequence",
9216                )))?;
9217            }
9218            *values = Some(value);
9219            Ok(())
9220        }
9221        fn store_any(values: &mut Option<super::Any>, value: super::Any) -> Result<(), Error> {
9222            if values.is_some() {
9223                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(b"any")))?;
9224            }
9225            *values = Some(value);
9226            Ok(())
9227        }
9228        fn handle_annotation<'de>(
9229            &mut self,
9230            helper: &mut DeserializeHelper,
9231            mut values: Option<super::Annotation>,
9232            output: DeserializerOutput<'de, super::Annotation>,
9233            fallback: &mut Option<GroupTypeContentDeserializerState>,
9234        ) -> Result<ElementHandlerOutput<'de>, Error> {
9235            let DeserializerOutput {
9236                artifact,
9237                event,
9238                allow_any,
9239            } = output;
9240            if artifact.is_none() {
9241                *self.state__ = match fallback.take() {
9242                    None if values.is_none() => {
9243                        *self.state__ = GroupTypeContentDeserializerState::Init__;
9244                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
9245                    }
9246                    None => GroupTypeContentDeserializerState::Annotation(values, None),
9247                    Some(GroupTypeContentDeserializerState::Annotation(_, Some(deserializer))) => {
9248                        GroupTypeContentDeserializerState::Annotation(values, Some(deserializer))
9249                    }
9250                    _ => unreachable!(),
9251                };
9252                return Ok(ElementHandlerOutput::break_(event, allow_any));
9253            }
9254            match fallback.take() {
9255                None => (),
9256                Some(GroupTypeContentDeserializerState::Annotation(_, Some(deserializer))) => {
9257                    let data = deserializer.finish(helper)?;
9258                    GroupTypeContentDeserializer::store_annotation(&mut values, data)?;
9259                }
9260                Some(_) => unreachable!(),
9261            }
9262            Ok(match artifact {
9263                DeserializerArtifact::None => unreachable!(),
9264                DeserializerArtifact::Data(data) => {
9265                    GroupTypeContentDeserializer::store_annotation(&mut values, data)?;
9266                    let data = GroupTypeContentDeserializer::finish_state(
9267                        helper,
9268                        GroupTypeContentDeserializerState::Annotation(values, None),
9269                    )?;
9270                    *self.state__ = GroupTypeContentDeserializerState::Done__(data);
9271                    ElementHandlerOutput::Break { event, allow_any }
9272                }
9273                DeserializerArtifact::Deserializer(deserializer) => {
9274                    *self.state__ =
9275                        GroupTypeContentDeserializerState::Annotation(values, Some(deserializer));
9276                    ElementHandlerOutput::from_event_end(event, allow_any)
9277                }
9278            })
9279        }
9280        fn handle_element<'de>(
9281            &mut self,
9282            helper: &mut DeserializeHelper,
9283            mut values: Option<super::ElementType>,
9284            output: DeserializerOutput<'de, super::ElementType>,
9285            fallback: &mut Option<GroupTypeContentDeserializerState>,
9286        ) -> Result<ElementHandlerOutput<'de>, Error> {
9287            let DeserializerOutput {
9288                artifact,
9289                event,
9290                allow_any,
9291            } = output;
9292            if artifact.is_none() {
9293                *self.state__ = match fallback.take() {
9294                    None if values.is_none() => {
9295                        *self.state__ = GroupTypeContentDeserializerState::Init__;
9296                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
9297                    }
9298                    None => GroupTypeContentDeserializerState::Element(values, None),
9299                    Some(GroupTypeContentDeserializerState::Element(_, Some(deserializer))) => {
9300                        GroupTypeContentDeserializerState::Element(values, Some(deserializer))
9301                    }
9302                    _ => unreachable!(),
9303                };
9304                return Ok(ElementHandlerOutput::break_(event, allow_any));
9305            }
9306            match fallback.take() {
9307                None => (),
9308                Some(GroupTypeContentDeserializerState::Element(_, Some(deserializer))) => {
9309                    let data = deserializer.finish(helper)?;
9310                    GroupTypeContentDeserializer::store_element(&mut values, data)?;
9311                }
9312                Some(_) => unreachable!(),
9313            }
9314            Ok(match artifact {
9315                DeserializerArtifact::None => unreachable!(),
9316                DeserializerArtifact::Data(data) => {
9317                    GroupTypeContentDeserializer::store_element(&mut values, data)?;
9318                    let data = GroupTypeContentDeserializer::finish_state(
9319                        helper,
9320                        GroupTypeContentDeserializerState::Element(values, None),
9321                    )?;
9322                    *self.state__ = GroupTypeContentDeserializerState::Done__(data);
9323                    ElementHandlerOutput::Break { event, allow_any }
9324                }
9325                DeserializerArtifact::Deserializer(deserializer) => {
9326                    *self.state__ =
9327                        GroupTypeContentDeserializerState::Element(values, Some(deserializer));
9328                    ElementHandlerOutput::from_event_end(event, allow_any)
9329                }
9330            })
9331        }
9332        fn handle_group<'de>(
9333            &mut self,
9334            helper: &mut DeserializeHelper,
9335            mut values: Option<super::GroupType>,
9336            output: DeserializerOutput<'de, super::GroupType>,
9337            fallback: &mut Option<GroupTypeContentDeserializerState>,
9338        ) -> Result<ElementHandlerOutput<'de>, Error> {
9339            let DeserializerOutput {
9340                artifact,
9341                event,
9342                allow_any,
9343            } = output;
9344            if artifact.is_none() {
9345                *self.state__ = match fallback.take() {
9346                    None if values.is_none() => {
9347                        *self.state__ = GroupTypeContentDeserializerState::Init__;
9348                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
9349                    }
9350                    None => GroupTypeContentDeserializerState::Group(values, None),
9351                    Some(GroupTypeContentDeserializerState::Group(_, Some(deserializer))) => {
9352                        GroupTypeContentDeserializerState::Group(values, Some(deserializer))
9353                    }
9354                    _ => unreachable!(),
9355                };
9356                return Ok(ElementHandlerOutput::break_(event, allow_any));
9357            }
9358            match fallback.take() {
9359                None => (),
9360                Some(GroupTypeContentDeserializerState::Group(_, Some(deserializer))) => {
9361                    let data = deserializer.finish(helper)?;
9362                    GroupTypeContentDeserializer::store_group(&mut values, data)?;
9363                }
9364                Some(_) => unreachable!(),
9365            }
9366            Ok(match artifact {
9367                DeserializerArtifact::None => unreachable!(),
9368                DeserializerArtifact::Data(data) => {
9369                    GroupTypeContentDeserializer::store_group(&mut values, data)?;
9370                    let data = GroupTypeContentDeserializer::finish_state(
9371                        helper,
9372                        GroupTypeContentDeserializerState::Group(values, None),
9373                    )?;
9374                    *self.state__ = GroupTypeContentDeserializerState::Done__(data);
9375                    ElementHandlerOutput::Break { event, allow_any }
9376                }
9377                DeserializerArtifact::Deserializer(deserializer) => {
9378                    *self.state__ =
9379                        GroupTypeContentDeserializerState::Group(values, Some(deserializer));
9380                    ElementHandlerOutput::from_event_end(event, allow_any)
9381                }
9382            })
9383        }
9384        fn handle_all<'de>(
9385            &mut self,
9386            helper: &mut DeserializeHelper,
9387            mut values: Option<super::GroupType>,
9388            output: DeserializerOutput<'de, super::GroupType>,
9389            fallback: &mut Option<GroupTypeContentDeserializerState>,
9390        ) -> Result<ElementHandlerOutput<'de>, Error> {
9391            let DeserializerOutput {
9392                artifact,
9393                event,
9394                allow_any,
9395            } = output;
9396            if artifact.is_none() {
9397                *self.state__ = match fallback.take() {
9398                    None if values.is_none() => {
9399                        *self.state__ = GroupTypeContentDeserializerState::Init__;
9400                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
9401                    }
9402                    None => GroupTypeContentDeserializerState::All(values, None),
9403                    Some(GroupTypeContentDeserializerState::All(_, Some(deserializer))) => {
9404                        GroupTypeContentDeserializerState::All(values, Some(deserializer))
9405                    }
9406                    _ => unreachable!(),
9407                };
9408                return Ok(ElementHandlerOutput::break_(event, allow_any));
9409            }
9410            match fallback.take() {
9411                None => (),
9412                Some(GroupTypeContentDeserializerState::All(_, Some(deserializer))) => {
9413                    let data = deserializer.finish(helper)?;
9414                    GroupTypeContentDeserializer::store_all(&mut values, data)?;
9415                }
9416                Some(_) => unreachable!(),
9417            }
9418            Ok(match artifact {
9419                DeserializerArtifact::None => unreachable!(),
9420                DeserializerArtifact::Data(data) => {
9421                    GroupTypeContentDeserializer::store_all(&mut values, data)?;
9422                    let data = GroupTypeContentDeserializer::finish_state(
9423                        helper,
9424                        GroupTypeContentDeserializerState::All(values, None),
9425                    )?;
9426                    *self.state__ = GroupTypeContentDeserializerState::Done__(data);
9427                    ElementHandlerOutput::Break { event, allow_any }
9428                }
9429                DeserializerArtifact::Deserializer(deserializer) => {
9430                    *self.state__ =
9431                        GroupTypeContentDeserializerState::All(values, Some(deserializer));
9432                    ElementHandlerOutput::from_event_end(event, allow_any)
9433                }
9434            })
9435        }
9436        fn handle_choice<'de>(
9437            &mut self,
9438            helper: &mut DeserializeHelper,
9439            mut values: Option<super::GroupType>,
9440            output: DeserializerOutput<'de, super::GroupType>,
9441            fallback: &mut Option<GroupTypeContentDeserializerState>,
9442        ) -> Result<ElementHandlerOutput<'de>, Error> {
9443            let DeserializerOutput {
9444                artifact,
9445                event,
9446                allow_any,
9447            } = output;
9448            if artifact.is_none() {
9449                *self.state__ = match fallback.take() {
9450                    None if values.is_none() => {
9451                        *self.state__ = GroupTypeContentDeserializerState::Init__;
9452                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
9453                    }
9454                    None => GroupTypeContentDeserializerState::Choice(values, None),
9455                    Some(GroupTypeContentDeserializerState::Choice(_, Some(deserializer))) => {
9456                        GroupTypeContentDeserializerState::Choice(values, Some(deserializer))
9457                    }
9458                    _ => unreachable!(),
9459                };
9460                return Ok(ElementHandlerOutput::break_(event, allow_any));
9461            }
9462            match fallback.take() {
9463                None => (),
9464                Some(GroupTypeContentDeserializerState::Choice(_, Some(deserializer))) => {
9465                    let data = deserializer.finish(helper)?;
9466                    GroupTypeContentDeserializer::store_choice(&mut values, data)?;
9467                }
9468                Some(_) => unreachable!(),
9469            }
9470            Ok(match artifact {
9471                DeserializerArtifact::None => unreachable!(),
9472                DeserializerArtifact::Data(data) => {
9473                    GroupTypeContentDeserializer::store_choice(&mut values, data)?;
9474                    let data = GroupTypeContentDeserializer::finish_state(
9475                        helper,
9476                        GroupTypeContentDeserializerState::Choice(values, None),
9477                    )?;
9478                    *self.state__ = GroupTypeContentDeserializerState::Done__(data);
9479                    ElementHandlerOutput::Break { event, allow_any }
9480                }
9481                DeserializerArtifact::Deserializer(deserializer) => {
9482                    *self.state__ =
9483                        GroupTypeContentDeserializerState::Choice(values, Some(deserializer));
9484                    ElementHandlerOutput::from_event_end(event, allow_any)
9485                }
9486            })
9487        }
9488        fn handle_sequence<'de>(
9489            &mut self,
9490            helper: &mut DeserializeHelper,
9491            mut values: Option<super::GroupType>,
9492            output: DeserializerOutput<'de, super::GroupType>,
9493            fallback: &mut Option<GroupTypeContentDeserializerState>,
9494        ) -> Result<ElementHandlerOutput<'de>, Error> {
9495            let DeserializerOutput {
9496                artifact,
9497                event,
9498                allow_any,
9499            } = output;
9500            if artifact.is_none() {
9501                *self.state__ = match fallback.take() {
9502                    None if values.is_none() => {
9503                        *self.state__ = GroupTypeContentDeserializerState::Init__;
9504                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
9505                    }
9506                    None => GroupTypeContentDeserializerState::Sequence(values, None),
9507                    Some(GroupTypeContentDeserializerState::Sequence(_, Some(deserializer))) => {
9508                        GroupTypeContentDeserializerState::Sequence(values, Some(deserializer))
9509                    }
9510                    _ => unreachable!(),
9511                };
9512                return Ok(ElementHandlerOutput::break_(event, allow_any));
9513            }
9514            match fallback.take() {
9515                None => (),
9516                Some(GroupTypeContentDeserializerState::Sequence(_, Some(deserializer))) => {
9517                    let data = deserializer.finish(helper)?;
9518                    GroupTypeContentDeserializer::store_sequence(&mut values, data)?;
9519                }
9520                Some(_) => unreachable!(),
9521            }
9522            Ok(match artifact {
9523                DeserializerArtifact::None => unreachable!(),
9524                DeserializerArtifact::Data(data) => {
9525                    GroupTypeContentDeserializer::store_sequence(&mut values, data)?;
9526                    let data = GroupTypeContentDeserializer::finish_state(
9527                        helper,
9528                        GroupTypeContentDeserializerState::Sequence(values, None),
9529                    )?;
9530                    *self.state__ = GroupTypeContentDeserializerState::Done__(data);
9531                    ElementHandlerOutput::Break { event, allow_any }
9532                }
9533                DeserializerArtifact::Deserializer(deserializer) => {
9534                    *self.state__ =
9535                        GroupTypeContentDeserializerState::Sequence(values, Some(deserializer));
9536                    ElementHandlerOutput::from_event_end(event, allow_any)
9537                }
9538            })
9539        }
9540        fn handle_any<'de>(
9541            &mut self,
9542            helper: &mut DeserializeHelper,
9543            mut values: Option<super::Any>,
9544            output: DeserializerOutput<'de, super::Any>,
9545            fallback: &mut Option<GroupTypeContentDeserializerState>,
9546        ) -> Result<ElementHandlerOutput<'de>, Error> {
9547            let DeserializerOutput {
9548                artifact,
9549                event,
9550                allow_any,
9551            } = output;
9552            if artifact.is_none() {
9553                *self.state__ = match fallback.take() {
9554                    None if values.is_none() => {
9555                        *self.state__ = GroupTypeContentDeserializerState::Init__;
9556                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
9557                    }
9558                    None => GroupTypeContentDeserializerState::Any(values, None),
9559                    Some(GroupTypeContentDeserializerState::Any(_, Some(deserializer))) => {
9560                        GroupTypeContentDeserializerState::Any(values, Some(deserializer))
9561                    }
9562                    _ => unreachable!(),
9563                };
9564                return Ok(ElementHandlerOutput::break_(event, allow_any));
9565            }
9566            match fallback.take() {
9567                None => (),
9568                Some(GroupTypeContentDeserializerState::Any(_, Some(deserializer))) => {
9569                    let data = deserializer.finish(helper)?;
9570                    GroupTypeContentDeserializer::store_any(&mut values, data)?;
9571                }
9572                Some(_) => unreachable!(),
9573            }
9574            Ok(match artifact {
9575                DeserializerArtifact::None => unreachable!(),
9576                DeserializerArtifact::Data(data) => {
9577                    GroupTypeContentDeserializer::store_any(&mut values, data)?;
9578                    let data = GroupTypeContentDeserializer::finish_state(
9579                        helper,
9580                        GroupTypeContentDeserializerState::Any(values, None),
9581                    )?;
9582                    *self.state__ = GroupTypeContentDeserializerState::Done__(data);
9583                    ElementHandlerOutput::Break { event, allow_any }
9584                }
9585                DeserializerArtifact::Deserializer(deserializer) => {
9586                    *self.state__ =
9587                        GroupTypeContentDeserializerState::Any(values, Some(deserializer));
9588                    ElementHandlerOutput::from_event_end(event, allow_any)
9589                }
9590            })
9591        }
9592    }
9593    impl<'de> Deserializer<'de, super::GroupTypeContent> for Box<GroupTypeContentDeserializer> {
9594        fn init(
9595            helper: &mut DeserializeHelper,
9596            event: Event<'de>,
9597        ) -> DeserializerResult<'de, super::GroupTypeContent> {
9598            let deserializer = Box::new(GroupTypeContentDeserializer {
9599                state__: Box::new(GroupTypeContentDeserializerState::Init__),
9600            });
9601            let mut output = deserializer.next(helper, event)?;
9602            output.artifact = match output.artifact {
9603                DeserializerArtifact::Deserializer(x)
9604                    if matches!(&*x.state__, GroupTypeContentDeserializerState::Init__) =>
9605                {
9606                    DeserializerArtifact::None
9607                }
9608                artifact => artifact,
9609            };
9610            Ok(output)
9611        }
9612        fn next(
9613            mut self,
9614            helper: &mut DeserializeHelper,
9615            event: Event<'de>,
9616        ) -> DeserializerResult<'de, super::GroupTypeContent> {
9617            use GroupTypeContentDeserializerState as S;
9618            let mut event = event;
9619            let mut fallback = None;
9620            let (event, allow_any) = loop {
9621                let state = replace(&mut *self.state__, S::Unknown__);
9622                event = match (state, event) {
9623                    (S::Unknown__, _) => unreachable!(),
9624                    (S::Annotation(values, Some(deserializer)), event) => {
9625                        let output = deserializer.next(helper, event)?;
9626                        match self.handle_annotation(helper, values, output, &mut fallback)? {
9627                            ElementHandlerOutput::Break { event, allow_any } => {
9628                                break (event, allow_any)
9629                            }
9630                            ElementHandlerOutput::Continue { event, .. } => event,
9631                        }
9632                    }
9633                    (S::Element(values, Some(deserializer)), event) => {
9634                        let output = deserializer.next(helper, event)?;
9635                        match self.handle_element(helper, values, output, &mut fallback)? {
9636                            ElementHandlerOutput::Break { event, allow_any } => {
9637                                break (event, allow_any)
9638                            }
9639                            ElementHandlerOutput::Continue { event, .. } => event,
9640                        }
9641                    }
9642                    (S::Group(values, Some(deserializer)), event) => {
9643                        let output = deserializer.next(helper, event)?;
9644                        match self.handle_group(helper, values, output, &mut fallback)? {
9645                            ElementHandlerOutput::Break { event, allow_any } => {
9646                                break (event, allow_any)
9647                            }
9648                            ElementHandlerOutput::Continue { event, .. } => event,
9649                        }
9650                    }
9651                    (S::All(values, Some(deserializer)), event) => {
9652                        let output = deserializer.next(helper, event)?;
9653                        match self.handle_all(helper, values, output, &mut fallback)? {
9654                            ElementHandlerOutput::Break { event, allow_any } => {
9655                                break (event, allow_any)
9656                            }
9657                            ElementHandlerOutput::Continue { event, .. } => event,
9658                        }
9659                    }
9660                    (S::Choice(values, Some(deserializer)), event) => {
9661                        let output = deserializer.next(helper, event)?;
9662                        match self.handle_choice(helper, values, output, &mut fallback)? {
9663                            ElementHandlerOutput::Break { event, allow_any } => {
9664                                break (event, allow_any)
9665                            }
9666                            ElementHandlerOutput::Continue { event, .. } => event,
9667                        }
9668                    }
9669                    (S::Sequence(values, Some(deserializer)), event) => {
9670                        let output = deserializer.next(helper, event)?;
9671                        match self.handle_sequence(helper, values, output, &mut fallback)? {
9672                            ElementHandlerOutput::Break { event, allow_any } => {
9673                                break (event, allow_any)
9674                            }
9675                            ElementHandlerOutput::Continue { event, .. } => event,
9676                        }
9677                    }
9678                    (S::Any(values, Some(deserializer)), event) => {
9679                        let output = deserializer.next(helper, event)?;
9680                        match self.handle_any(helper, values, output, &mut fallback)? {
9681                            ElementHandlerOutput::Break { event, allow_any } => {
9682                                break (event, allow_any)
9683                            }
9684                            ElementHandlerOutput::Continue { event, .. } => event,
9685                        }
9686                    }
9687                    (state, event @ Event::End(_)) => {
9688                        return Ok(DeserializerOutput {
9689                            artifact: DeserializerArtifact::Data(
9690                                GroupTypeContentDeserializer::finish_state(helper, state)?,
9691                            ),
9692                            event: DeserializerEvent::Continue(event),
9693                            allow_any: false,
9694                        });
9695                    }
9696                    (S::Init__, event) => match self.find_suitable(helper, event, &mut fallback)? {
9697                        ElementHandlerOutput::Break { event, allow_any } => {
9698                            break (event, allow_any)
9699                        }
9700                        ElementHandlerOutput::Continue { event, .. } => event,
9701                    },
9702                    (S::Annotation(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
9703                        let output = helper.init_start_tag_deserializer(
9704                            event,
9705                            Some(&super::NS_XS),
9706                            b"annotation",
9707                            false,
9708                        )?;
9709                        match self.handle_annotation(helper, values, output, &mut fallback)? {
9710                            ElementHandlerOutput::Break { event, allow_any } => {
9711                                break (event, allow_any)
9712                            }
9713                            ElementHandlerOutput::Continue { event, .. } => event,
9714                        }
9715                    }
9716                    (S::Element(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
9717                        let output = helper.init_start_tag_deserializer(
9718                            event,
9719                            Some(&super::NS_XS),
9720                            b"element",
9721                            true,
9722                        )?;
9723                        match self.handle_element(helper, values, output, &mut fallback)? {
9724                            ElementHandlerOutput::Break { event, allow_any } => {
9725                                break (event, allow_any)
9726                            }
9727                            ElementHandlerOutput::Continue { event, .. } => event,
9728                        }
9729                    }
9730                    (S::Group(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
9731                        let output = helper.init_start_tag_deserializer(
9732                            event,
9733                            Some(&super::NS_XS),
9734                            b"group",
9735                            true,
9736                        )?;
9737                        match self.handle_group(helper, values, output, &mut fallback)? {
9738                            ElementHandlerOutput::Break { event, allow_any } => {
9739                                break (event, allow_any)
9740                            }
9741                            ElementHandlerOutput::Continue { event, .. } => event,
9742                        }
9743                    }
9744                    (S::All(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
9745                        let output = helper.init_start_tag_deserializer(
9746                            event,
9747                            Some(&super::NS_XS),
9748                            b"all",
9749                            true,
9750                        )?;
9751                        match self.handle_all(helper, values, output, &mut fallback)? {
9752                            ElementHandlerOutput::Break { event, allow_any } => {
9753                                break (event, allow_any)
9754                            }
9755                            ElementHandlerOutput::Continue { event, .. } => event,
9756                        }
9757                    }
9758                    (S::Choice(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
9759                        let output = helper.init_start_tag_deserializer(
9760                            event,
9761                            Some(&super::NS_XS),
9762                            b"choice",
9763                            true,
9764                        )?;
9765                        match self.handle_choice(helper, values, output, &mut fallback)? {
9766                            ElementHandlerOutput::Break { event, allow_any } => {
9767                                break (event, allow_any)
9768                            }
9769                            ElementHandlerOutput::Continue { event, .. } => event,
9770                        }
9771                    }
9772                    (S::Sequence(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
9773                        let output = helper.init_start_tag_deserializer(
9774                            event,
9775                            Some(&super::NS_XS),
9776                            b"sequence",
9777                            true,
9778                        )?;
9779                        match self.handle_sequence(helper, values, output, &mut fallback)? {
9780                            ElementHandlerOutput::Break { event, allow_any } => {
9781                                break (event, allow_any)
9782                            }
9783                            ElementHandlerOutput::Continue { event, .. } => event,
9784                        }
9785                    }
9786                    (S::Any(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
9787                        let output = helper.init_start_tag_deserializer(
9788                            event,
9789                            Some(&super::NS_XS),
9790                            b"any",
9791                            false,
9792                        )?;
9793                        match self.handle_any(helper, values, output, &mut fallback)? {
9794                            ElementHandlerOutput::Break { event, allow_any } => {
9795                                break (event, allow_any)
9796                            }
9797                            ElementHandlerOutput::Continue { event, .. } => event,
9798                        }
9799                    }
9800                    (s @ S::Done__(_), event) => {
9801                        *self.state__ = s;
9802                        break (DeserializerEvent::Continue(event), false);
9803                    }
9804                    (state, event) => {
9805                        *self.state__ = state;
9806                        break (DeserializerEvent::Break(event), false);
9807                    }
9808                }
9809            };
9810            let artifact = if matches!(&*self.state__, S::Done__(_)) {
9811                DeserializerArtifact::Data(self.finish(helper)?)
9812            } else {
9813                DeserializerArtifact::Deserializer(self)
9814            };
9815            Ok(DeserializerOutput {
9816                artifact,
9817                event,
9818                allow_any,
9819            })
9820        }
9821        fn finish(self, helper: &mut DeserializeHelper) -> Result<super::GroupTypeContent, Error> {
9822            GroupTypeContentDeserializer::finish_state(helper, *self.state__)
9823        }
9824    }
9825    #[derive(Debug)]
9826    pub struct AttributeGroupTypeDeserializer {
9827        id: Option<String>,
9828        name: Option<String>,
9829        ref_: Option<QName>,
9830        content: Vec<super::AttributeGroupTypeContent>,
9831        state__: Box<AttributeGroupTypeDeserializerState>,
9832    }
9833    #[derive(Debug)]
9834    enum AttributeGroupTypeDeserializerState {
9835        Init__,
9836        Next__,
9837        Content__(<super::AttributeGroupTypeContent as WithDeserializer>::Deserializer),
9838        Unknown__,
9839    }
9840    impl AttributeGroupTypeDeserializer {
9841        fn from_bytes_start(
9842            helper: &mut DeserializeHelper,
9843            bytes_start: &BytesStart<'_>,
9844        ) -> Result<Box<Self>, Error> {
9845            let mut id: Option<String> = None;
9846            let mut name: Option<String> = None;
9847            let mut ref_: Option<QName> = None;
9848            for attrib in helper.filter_xmlns_attributes(bytes_start) {
9849                let attrib = attrib?;
9850                if matches!(
9851                    helper.resolve_local_name(attrib.key, &super::NS_XS),
9852                    Some(b"id")
9853                ) {
9854                    helper.read_attrib(&mut id, b"id", &attrib.value)?;
9855                } else if matches!(
9856                    helper.resolve_local_name(attrib.key, &super::NS_XS),
9857                    Some(b"name")
9858                ) {
9859                    helper.read_attrib(&mut name, b"name", &attrib.value)?;
9860                } else if matches!(
9861                    helper.resolve_local_name(attrib.key, &super::NS_XS),
9862                    Some(b"ref")
9863                ) {
9864                    helper.read_attrib(&mut ref_, b"ref", &attrib.value)?;
9865                }
9866            }
9867            Ok(Box::new(Self {
9868                id: id,
9869                name: name,
9870                ref_: ref_,
9871                content: Vec::new(),
9872                state__: Box::new(AttributeGroupTypeDeserializerState::Init__),
9873            }))
9874        }
9875        fn finish_state(
9876            &mut self,
9877            helper: &mut DeserializeHelper,
9878            state: AttributeGroupTypeDeserializerState,
9879        ) -> Result<(), Error> {
9880            if let AttributeGroupTypeDeserializerState::Content__(deserializer) = state {
9881                self.store_content(deserializer.finish(helper)?)?;
9882            }
9883            Ok(())
9884        }
9885        fn store_content(&mut self, value: super::AttributeGroupTypeContent) -> Result<(), Error> {
9886            self.content.push(value);
9887            Ok(())
9888        }
9889        fn handle_content<'de>(
9890            &mut self,
9891            helper: &mut DeserializeHelper,
9892            output: DeserializerOutput<'de, super::AttributeGroupTypeContent>,
9893            fallback: &mut Option<AttributeGroupTypeDeserializerState>,
9894        ) -> Result<ElementHandlerOutput<'de>, Error> {
9895            let DeserializerOutput {
9896                artifact,
9897                event,
9898                allow_any,
9899            } = output;
9900            if artifact.is_none() {
9901                *self.state__ = fallback
9902                    .take()
9903                    .unwrap_or(AttributeGroupTypeDeserializerState::Next__);
9904                return Ok(ElementHandlerOutput::break_(event, allow_any));
9905            }
9906            if let Some(fallback) = fallback.take() {
9907                self.finish_state(helper, fallback)?;
9908            }
9909            Ok(match artifact {
9910                DeserializerArtifact::None => unreachable!(),
9911                DeserializerArtifact::Data(data) => {
9912                    self.store_content(data)?;
9913                    *self.state__ = AttributeGroupTypeDeserializerState::Next__;
9914                    ElementHandlerOutput::from_event(event, allow_any)
9915                }
9916                DeserializerArtifact::Deserializer(deserializer) => {
9917                    let ret = ElementHandlerOutput::from_event(event, allow_any);
9918                    match &ret {
9919                        ElementHandlerOutput::Break { .. } => {
9920                            *self.state__ =
9921                                AttributeGroupTypeDeserializerState::Content__(deserializer);
9922                        }
9923                        ElementHandlerOutput::Continue { .. } => {
9924                            fallback.get_or_insert(AttributeGroupTypeDeserializerState::Content__(
9925                                deserializer,
9926                            ));
9927                            *self.state__ = AttributeGroupTypeDeserializerState::Next__;
9928                        }
9929                    }
9930                    ret
9931                }
9932            })
9933        }
9934    }
9935    impl<'de> Deserializer<'de, super::AttributeGroupType> for Box<AttributeGroupTypeDeserializer> {
9936        fn init(
9937            helper: &mut DeserializeHelper,
9938            event: Event<'de>,
9939        ) -> DeserializerResult<'de, super::AttributeGroupType> {
9940            helper.init_deserializer_from_start_event(
9941                event,
9942                AttributeGroupTypeDeserializer::from_bytes_start,
9943            )
9944        }
9945        fn next(
9946            mut self,
9947            helper: &mut DeserializeHelper,
9948            event: Event<'de>,
9949        ) -> DeserializerResult<'de, super::AttributeGroupType> {
9950            use AttributeGroupTypeDeserializerState as S;
9951            let mut event = event;
9952            let mut fallback = None;
9953            let (event, allow_any) = loop {
9954                let state = replace(&mut *self.state__, S::Unknown__);
9955                event = match (state, event) {
9956                    (S::Unknown__, _) => unreachable!(),
9957                    (S::Content__(deserializer), event) => {
9958                        let output = deserializer.next(helper, event)?;
9959                        match self.handle_content(helper, output, &mut fallback)? {
9960                            ElementHandlerOutput::Break { event, allow_any } => {
9961                                break (event, allow_any)
9962                            }
9963                            ElementHandlerOutput::Continue { event, .. } => event,
9964                        }
9965                    }
9966                    (_, Event::End(_)) => {
9967                        return Ok(DeserializerOutput {
9968                            artifact: DeserializerArtifact::Data(self.finish(helper)?),
9969                            event: DeserializerEvent::None,
9970                            allow_any: false,
9971                        });
9972                    }
9973                    (state @ (S::Init__ | S::Next__), event) => {
9974                        fallback.get_or_insert(state);
9975                        let output = < super :: AttributeGroupTypeContent as WithDeserializer > :: Deserializer :: init (helper , event) ? ;
9976                        match self.handle_content(helper, output, &mut fallback)? {
9977                            ElementHandlerOutput::Break { event, allow_any } => {
9978                                break (event, allow_any)
9979                            }
9980                            ElementHandlerOutput::Continue { event, .. } => event,
9981                        }
9982                    }
9983                }
9984            };
9985            let artifact = DeserializerArtifact::Deserializer(self);
9986            Ok(DeserializerOutput {
9987                artifact,
9988                event,
9989                allow_any,
9990            })
9991        }
9992        fn finish(
9993            mut self,
9994            helper: &mut DeserializeHelper,
9995        ) -> Result<super::AttributeGroupType, Error> {
9996            let state = replace(
9997                &mut *self.state__,
9998                AttributeGroupTypeDeserializerState::Unknown__,
9999            );
10000            self.finish_state(helper, state)?;
10001            Ok(super::AttributeGroupType {
10002                id: self.id,
10003                name: self.name,
10004                ref_: self.ref_,
10005                content: self.content,
10006            })
10007        }
10008    }
10009    #[derive(Debug)]
10010    pub struct AttributeGroupTypeContentDeserializer {
10011        state__: Box<AttributeGroupTypeContentDeserializerState>,
10012    }
10013    #[derive(Debug)]
10014    pub enum AttributeGroupTypeContentDeserializerState {
10015        Init__,
10016        Annotation(
10017            Option<super::Annotation>,
10018            Option<<super::Annotation as WithDeserializer>::Deserializer>,
10019        ),
10020        Attribute(
10021            Option<super::AttributeType>,
10022            Option<<super::AttributeType as WithDeserializer>::Deserializer>,
10023        ),
10024        AttributeGroup(
10025            Option<super::AttributeGroupType>,
10026            Option<<super::AttributeGroupType as WithDeserializer>::Deserializer>,
10027        ),
10028        AnyAttribute(
10029            Option<super::AnyAttribute>,
10030            Option<<super::AnyAttribute as WithDeserializer>::Deserializer>,
10031        ),
10032        Done__(super::AttributeGroupTypeContent),
10033        Unknown__,
10034    }
10035    impl AttributeGroupTypeContentDeserializer {
10036        fn find_suitable<'de>(
10037            &mut self,
10038            helper: &mut DeserializeHelper,
10039            event: Event<'de>,
10040            fallback: &mut Option<AttributeGroupTypeContentDeserializerState>,
10041        ) -> Result<ElementHandlerOutput<'de>, Error> {
10042            if let Event::Start(x) | Event::Empty(x) = &event {
10043                if matches!(
10044                    helper.resolve_local_name(x.name(), &super::NS_XS),
10045                    Some(b"annotation")
10046                ) {
10047                    let output =
10048                        <super::Annotation as WithDeserializer>::Deserializer::init(helper, event)?;
10049                    return self.handle_annotation(
10050                        helper,
10051                        Default::default(),
10052                        output,
10053                        &mut *fallback,
10054                    );
10055                }
10056                if matches!(
10057                    helper.resolve_local_name(x.name(), &super::NS_XS),
10058                    Some(b"attribute")
10059                ) {
10060                    let output = <super::AttributeType as WithDeserializer>::Deserializer::init(
10061                        helper, event,
10062                    )?;
10063                    return self.handle_attribute(
10064                        helper,
10065                        Default::default(),
10066                        output,
10067                        &mut *fallback,
10068                    );
10069                }
10070                if matches!(
10071                    helper.resolve_local_name(x.name(), &super::NS_XS),
10072                    Some(b"attributeGroup")
10073                ) {
10074                    let output =
10075                        <super::AttributeGroupType as WithDeserializer>::Deserializer::init(
10076                            helper, event,
10077                        )?;
10078                    return self.handle_attribute_group(
10079                        helper,
10080                        Default::default(),
10081                        output,
10082                        &mut *fallback,
10083                    );
10084                }
10085                if matches!(
10086                    helper.resolve_local_name(x.name(), &super::NS_XS),
10087                    Some(b"anyAttribute")
10088                ) {
10089                    let output = <super::AnyAttribute as WithDeserializer>::Deserializer::init(
10090                        helper, event,
10091                    )?;
10092                    return self.handle_any_attribute(
10093                        helper,
10094                        Default::default(),
10095                        output,
10096                        &mut *fallback,
10097                    );
10098                }
10099            }
10100            *self.state__ = fallback
10101                .take()
10102                .unwrap_or(AttributeGroupTypeContentDeserializerState::Init__);
10103            Ok(ElementHandlerOutput::return_to_parent(event, false))
10104        }
10105        fn finish_state(
10106            helper: &mut DeserializeHelper,
10107            state: AttributeGroupTypeContentDeserializerState,
10108        ) -> Result<super::AttributeGroupTypeContent, Error> {
10109            use AttributeGroupTypeContentDeserializerState as S;
10110            match state {
10111                S::Unknown__ => unreachable!(),
10112                S::Init__ => Err(ErrorKind::MissingContent.into()),
10113                S::Annotation(mut values, deserializer) => {
10114                    if let Some(deserializer) = deserializer {
10115                        let value = deserializer.finish(helper)?;
10116                        AttributeGroupTypeContentDeserializer::store_annotation(
10117                            &mut values,
10118                            value,
10119                        )?;
10120                    }
10121                    Ok(super::AttributeGroupTypeContent::Annotation(
10122                        values.ok_or_else(|| ErrorKind::MissingElement("annotation".into()))?,
10123                    ))
10124                }
10125                S::Attribute(mut values, deserializer) => {
10126                    if let Some(deserializer) = deserializer {
10127                        let value = deserializer.finish(helper)?;
10128                        AttributeGroupTypeContentDeserializer::store_attribute(&mut values, value)?;
10129                    }
10130                    Ok(super::AttributeGroupTypeContent::Attribute(
10131                        values.ok_or_else(|| ErrorKind::MissingElement("attribute".into()))?,
10132                    ))
10133                }
10134                S::AttributeGroup(mut values, deserializer) => {
10135                    if let Some(deserializer) = deserializer {
10136                        let value = deserializer.finish(helper)?;
10137                        AttributeGroupTypeContentDeserializer::store_attribute_group(
10138                            &mut values,
10139                            value,
10140                        )?;
10141                    }
10142                    Ok(super::AttributeGroupTypeContent::AttributeGroup(
10143                        values.ok_or_else(|| ErrorKind::MissingElement("attributeGroup".into()))?,
10144                    ))
10145                }
10146                S::AnyAttribute(mut values, deserializer) => {
10147                    if let Some(deserializer) = deserializer {
10148                        let value = deserializer.finish(helper)?;
10149                        AttributeGroupTypeContentDeserializer::store_any_attribute(
10150                            &mut values,
10151                            value,
10152                        )?;
10153                    }
10154                    Ok(super::AttributeGroupTypeContent::AnyAttribute(
10155                        values.ok_or_else(|| ErrorKind::MissingElement("anyAttribute".into()))?,
10156                    ))
10157                }
10158                S::Done__(data) => Ok(data),
10159            }
10160        }
10161        fn store_annotation(
10162            values: &mut Option<super::Annotation>,
10163            value: super::Annotation,
10164        ) -> Result<(), Error> {
10165            if values.is_some() {
10166                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
10167                    b"annotation",
10168                )))?;
10169            }
10170            *values = Some(value);
10171            Ok(())
10172        }
10173        fn store_attribute(
10174            values: &mut Option<super::AttributeType>,
10175            value: super::AttributeType,
10176        ) -> Result<(), Error> {
10177            if values.is_some() {
10178                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
10179                    b"attribute",
10180                )))?;
10181            }
10182            *values = Some(value);
10183            Ok(())
10184        }
10185        fn store_attribute_group(
10186            values: &mut Option<super::AttributeGroupType>,
10187            value: super::AttributeGroupType,
10188        ) -> Result<(), Error> {
10189            if values.is_some() {
10190                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
10191                    b"attributeGroup",
10192                )))?;
10193            }
10194            *values = Some(value);
10195            Ok(())
10196        }
10197        fn store_any_attribute(
10198            values: &mut Option<super::AnyAttribute>,
10199            value: super::AnyAttribute,
10200        ) -> Result<(), Error> {
10201            if values.is_some() {
10202                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
10203                    b"anyAttribute",
10204                )))?;
10205            }
10206            *values = Some(value);
10207            Ok(())
10208        }
10209        fn handle_annotation<'de>(
10210            &mut self,
10211            helper: &mut DeserializeHelper,
10212            mut values: Option<super::Annotation>,
10213            output: DeserializerOutput<'de, super::Annotation>,
10214            fallback: &mut Option<AttributeGroupTypeContentDeserializerState>,
10215        ) -> Result<ElementHandlerOutput<'de>, Error> {
10216            let DeserializerOutput {
10217                artifact,
10218                event,
10219                allow_any,
10220            } = output;
10221            if artifact.is_none() {
10222                *self.state__ = match fallback.take() {
10223                    None if values.is_none() => {
10224                        *self.state__ = AttributeGroupTypeContentDeserializerState::Init__;
10225                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
10226                    }
10227                    None => AttributeGroupTypeContentDeserializerState::Annotation(values, None),
10228                    Some(AttributeGroupTypeContentDeserializerState::Annotation(
10229                        _,
10230                        Some(deserializer),
10231                    )) => AttributeGroupTypeContentDeserializerState::Annotation(
10232                        values,
10233                        Some(deserializer),
10234                    ),
10235                    _ => unreachable!(),
10236                };
10237                return Ok(ElementHandlerOutput::break_(event, allow_any));
10238            }
10239            match fallback.take() {
10240                None => (),
10241                Some(AttributeGroupTypeContentDeserializerState::Annotation(
10242                    _,
10243                    Some(deserializer),
10244                )) => {
10245                    let data = deserializer.finish(helper)?;
10246                    AttributeGroupTypeContentDeserializer::store_annotation(&mut values, data)?;
10247                }
10248                Some(_) => unreachable!(),
10249            }
10250            Ok(match artifact {
10251                DeserializerArtifact::None => unreachable!(),
10252                DeserializerArtifact::Data(data) => {
10253                    AttributeGroupTypeContentDeserializer::store_annotation(&mut values, data)?;
10254                    let data = AttributeGroupTypeContentDeserializer::finish_state(
10255                        helper,
10256                        AttributeGroupTypeContentDeserializerState::Annotation(values, None),
10257                    )?;
10258                    *self.state__ = AttributeGroupTypeContentDeserializerState::Done__(data);
10259                    ElementHandlerOutput::Break { event, allow_any }
10260                }
10261                DeserializerArtifact::Deserializer(deserializer) => {
10262                    *self.state__ = AttributeGroupTypeContentDeserializerState::Annotation(
10263                        values,
10264                        Some(deserializer),
10265                    );
10266                    ElementHandlerOutput::from_event_end(event, allow_any)
10267                }
10268            })
10269        }
10270        fn handle_attribute<'de>(
10271            &mut self,
10272            helper: &mut DeserializeHelper,
10273            mut values: Option<super::AttributeType>,
10274            output: DeserializerOutput<'de, super::AttributeType>,
10275            fallback: &mut Option<AttributeGroupTypeContentDeserializerState>,
10276        ) -> Result<ElementHandlerOutput<'de>, Error> {
10277            let DeserializerOutput {
10278                artifact,
10279                event,
10280                allow_any,
10281            } = output;
10282            if artifact.is_none() {
10283                *self.state__ = match fallback.take() {
10284                    None if values.is_none() => {
10285                        *self.state__ = AttributeGroupTypeContentDeserializerState::Init__;
10286                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
10287                    }
10288                    None => AttributeGroupTypeContentDeserializerState::Attribute(values, None),
10289                    Some(AttributeGroupTypeContentDeserializerState::Attribute(
10290                        _,
10291                        Some(deserializer),
10292                    )) => AttributeGroupTypeContentDeserializerState::Attribute(
10293                        values,
10294                        Some(deserializer),
10295                    ),
10296                    _ => unreachable!(),
10297                };
10298                return Ok(ElementHandlerOutput::break_(event, allow_any));
10299            }
10300            match fallback.take() {
10301                None => (),
10302                Some(AttributeGroupTypeContentDeserializerState::Attribute(
10303                    _,
10304                    Some(deserializer),
10305                )) => {
10306                    let data = deserializer.finish(helper)?;
10307                    AttributeGroupTypeContentDeserializer::store_attribute(&mut values, data)?;
10308                }
10309                Some(_) => unreachable!(),
10310            }
10311            Ok(match artifact {
10312                DeserializerArtifact::None => unreachable!(),
10313                DeserializerArtifact::Data(data) => {
10314                    AttributeGroupTypeContentDeserializer::store_attribute(&mut values, data)?;
10315                    let data = AttributeGroupTypeContentDeserializer::finish_state(
10316                        helper,
10317                        AttributeGroupTypeContentDeserializerState::Attribute(values, None),
10318                    )?;
10319                    *self.state__ = AttributeGroupTypeContentDeserializerState::Done__(data);
10320                    ElementHandlerOutput::Break { event, allow_any }
10321                }
10322                DeserializerArtifact::Deserializer(deserializer) => {
10323                    *self.state__ = AttributeGroupTypeContentDeserializerState::Attribute(
10324                        values,
10325                        Some(deserializer),
10326                    );
10327                    ElementHandlerOutput::from_event_end(event, allow_any)
10328                }
10329            })
10330        }
10331        fn handle_attribute_group<'de>(
10332            &mut self,
10333            helper: &mut DeserializeHelper,
10334            mut values: Option<super::AttributeGroupType>,
10335            output: DeserializerOutput<'de, super::AttributeGroupType>,
10336            fallback: &mut Option<AttributeGroupTypeContentDeserializerState>,
10337        ) -> Result<ElementHandlerOutput<'de>, Error> {
10338            let DeserializerOutput {
10339                artifact,
10340                event,
10341                allow_any,
10342            } = output;
10343            if artifact.is_none() {
10344                *self.state__ = match fallback.take() {
10345                    None if values.is_none() => {
10346                        *self.state__ = AttributeGroupTypeContentDeserializerState::Init__;
10347                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
10348                    }
10349                    None => {
10350                        AttributeGroupTypeContentDeserializerState::AttributeGroup(values, None)
10351                    }
10352                    Some(AttributeGroupTypeContentDeserializerState::AttributeGroup(
10353                        _,
10354                        Some(deserializer),
10355                    )) => AttributeGroupTypeContentDeserializerState::AttributeGroup(
10356                        values,
10357                        Some(deserializer),
10358                    ),
10359                    _ => unreachable!(),
10360                };
10361                return Ok(ElementHandlerOutput::break_(event, allow_any));
10362            }
10363            match fallback.take() {
10364                None => (),
10365                Some(AttributeGroupTypeContentDeserializerState::AttributeGroup(
10366                    _,
10367                    Some(deserializer),
10368                )) => {
10369                    let data = deserializer.finish(helper)?;
10370                    AttributeGroupTypeContentDeserializer::store_attribute_group(
10371                        &mut values,
10372                        data,
10373                    )?;
10374                }
10375                Some(_) => unreachable!(),
10376            }
10377            Ok(match artifact {
10378                DeserializerArtifact::None => unreachable!(),
10379                DeserializerArtifact::Data(data) => {
10380                    AttributeGroupTypeContentDeserializer::store_attribute_group(
10381                        &mut values,
10382                        data,
10383                    )?;
10384                    let data = AttributeGroupTypeContentDeserializer::finish_state(
10385                        helper,
10386                        AttributeGroupTypeContentDeserializerState::AttributeGroup(values, None),
10387                    )?;
10388                    *self.state__ = AttributeGroupTypeContentDeserializerState::Done__(data);
10389                    ElementHandlerOutput::Break { event, allow_any }
10390                }
10391                DeserializerArtifact::Deserializer(deserializer) => {
10392                    *self.state__ = AttributeGroupTypeContentDeserializerState::AttributeGroup(
10393                        values,
10394                        Some(deserializer),
10395                    );
10396                    ElementHandlerOutput::from_event_end(event, allow_any)
10397                }
10398            })
10399        }
10400        fn handle_any_attribute<'de>(
10401            &mut self,
10402            helper: &mut DeserializeHelper,
10403            mut values: Option<super::AnyAttribute>,
10404            output: DeserializerOutput<'de, super::AnyAttribute>,
10405            fallback: &mut Option<AttributeGroupTypeContentDeserializerState>,
10406        ) -> Result<ElementHandlerOutput<'de>, Error> {
10407            let DeserializerOutput {
10408                artifact,
10409                event,
10410                allow_any,
10411            } = output;
10412            if artifact.is_none() {
10413                *self.state__ = match fallback.take() {
10414                    None if values.is_none() => {
10415                        *self.state__ = AttributeGroupTypeContentDeserializerState::Init__;
10416                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
10417                    }
10418                    None => AttributeGroupTypeContentDeserializerState::AnyAttribute(values, None),
10419                    Some(AttributeGroupTypeContentDeserializerState::AnyAttribute(
10420                        _,
10421                        Some(deserializer),
10422                    )) => AttributeGroupTypeContentDeserializerState::AnyAttribute(
10423                        values,
10424                        Some(deserializer),
10425                    ),
10426                    _ => unreachable!(),
10427                };
10428                return Ok(ElementHandlerOutput::break_(event, allow_any));
10429            }
10430            match fallback.take() {
10431                None => (),
10432                Some(AttributeGroupTypeContentDeserializerState::AnyAttribute(
10433                    _,
10434                    Some(deserializer),
10435                )) => {
10436                    let data = deserializer.finish(helper)?;
10437                    AttributeGroupTypeContentDeserializer::store_any_attribute(&mut values, data)?;
10438                }
10439                Some(_) => unreachable!(),
10440            }
10441            Ok(match artifact {
10442                DeserializerArtifact::None => unreachable!(),
10443                DeserializerArtifact::Data(data) => {
10444                    AttributeGroupTypeContentDeserializer::store_any_attribute(&mut values, data)?;
10445                    let data = AttributeGroupTypeContentDeserializer::finish_state(
10446                        helper,
10447                        AttributeGroupTypeContentDeserializerState::AnyAttribute(values, None),
10448                    )?;
10449                    *self.state__ = AttributeGroupTypeContentDeserializerState::Done__(data);
10450                    ElementHandlerOutput::Break { event, allow_any }
10451                }
10452                DeserializerArtifact::Deserializer(deserializer) => {
10453                    *self.state__ = AttributeGroupTypeContentDeserializerState::AnyAttribute(
10454                        values,
10455                        Some(deserializer),
10456                    );
10457                    ElementHandlerOutput::from_event_end(event, allow_any)
10458                }
10459            })
10460        }
10461    }
10462    impl<'de> Deserializer<'de, super::AttributeGroupTypeContent>
10463        for Box<AttributeGroupTypeContentDeserializer>
10464    {
10465        fn init(
10466            helper: &mut DeserializeHelper,
10467            event: Event<'de>,
10468        ) -> DeserializerResult<'de, super::AttributeGroupTypeContent> {
10469            let deserializer = Box::new(AttributeGroupTypeContentDeserializer {
10470                state__: Box::new(AttributeGroupTypeContentDeserializerState::Init__),
10471            });
10472            let mut output = deserializer.next(helper, event)?;
10473            output.artifact = match output.artifact {
10474                DeserializerArtifact::Deserializer(x)
10475                    if matches!(
10476                        &*x.state__,
10477                        AttributeGroupTypeContentDeserializerState::Init__
10478                    ) =>
10479                {
10480                    DeserializerArtifact::None
10481                }
10482                artifact => artifact,
10483            };
10484            Ok(output)
10485        }
10486        fn next(
10487            mut self,
10488            helper: &mut DeserializeHelper,
10489            event: Event<'de>,
10490        ) -> DeserializerResult<'de, super::AttributeGroupTypeContent> {
10491            use AttributeGroupTypeContentDeserializerState as S;
10492            let mut event = event;
10493            let mut fallback = None;
10494            let (event, allow_any) = loop {
10495                let state = replace(&mut *self.state__, S::Unknown__);
10496                event = match (state, event) {
10497                    (S::Unknown__, _) => unreachable!(),
10498                    (S::Annotation(values, Some(deserializer)), event) => {
10499                        let output = deserializer.next(helper, event)?;
10500                        match self.handle_annotation(helper, values, output, &mut fallback)? {
10501                            ElementHandlerOutput::Break { event, allow_any } => {
10502                                break (event, allow_any)
10503                            }
10504                            ElementHandlerOutput::Continue { event, .. } => event,
10505                        }
10506                    }
10507                    (S::Attribute(values, Some(deserializer)), event) => {
10508                        let output = deserializer.next(helper, event)?;
10509                        match self.handle_attribute(helper, values, output, &mut fallback)? {
10510                            ElementHandlerOutput::Break { event, allow_any } => {
10511                                break (event, allow_any)
10512                            }
10513                            ElementHandlerOutput::Continue { event, .. } => event,
10514                        }
10515                    }
10516                    (S::AttributeGroup(values, Some(deserializer)), event) => {
10517                        let output = deserializer.next(helper, event)?;
10518                        match self.handle_attribute_group(helper, values, output, &mut fallback)? {
10519                            ElementHandlerOutput::Break { event, allow_any } => {
10520                                break (event, allow_any)
10521                            }
10522                            ElementHandlerOutput::Continue { event, .. } => event,
10523                        }
10524                    }
10525                    (S::AnyAttribute(values, Some(deserializer)), event) => {
10526                        let output = deserializer.next(helper, event)?;
10527                        match self.handle_any_attribute(helper, values, output, &mut fallback)? {
10528                            ElementHandlerOutput::Break { event, allow_any } => {
10529                                break (event, allow_any)
10530                            }
10531                            ElementHandlerOutput::Continue { event, .. } => event,
10532                        }
10533                    }
10534                    (state, event @ Event::End(_)) => {
10535                        return Ok(DeserializerOutput {
10536                            artifact: DeserializerArtifact::Data(
10537                                AttributeGroupTypeContentDeserializer::finish_state(helper, state)?,
10538                            ),
10539                            event: DeserializerEvent::Continue(event),
10540                            allow_any: false,
10541                        });
10542                    }
10543                    (S::Init__, event) => match self.find_suitable(helper, event, &mut fallback)? {
10544                        ElementHandlerOutput::Break { event, allow_any } => {
10545                            break (event, allow_any)
10546                        }
10547                        ElementHandlerOutput::Continue { event, .. } => event,
10548                    },
10549                    (S::Annotation(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
10550                        let output = helper.init_start_tag_deserializer(
10551                            event,
10552                            Some(&super::NS_XS),
10553                            b"annotation",
10554                            false,
10555                        )?;
10556                        match self.handle_annotation(helper, values, output, &mut fallback)? {
10557                            ElementHandlerOutput::Break { event, allow_any } => {
10558                                break (event, allow_any)
10559                            }
10560                            ElementHandlerOutput::Continue { event, .. } => event,
10561                        }
10562                    }
10563                    (S::Attribute(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
10564                        let output = helper.init_start_tag_deserializer(
10565                            event,
10566                            Some(&super::NS_XS),
10567                            b"attribute",
10568                            false,
10569                        )?;
10570                        match self.handle_attribute(helper, values, output, &mut fallback)? {
10571                            ElementHandlerOutput::Break { event, allow_any } => {
10572                                break (event, allow_any)
10573                            }
10574                            ElementHandlerOutput::Continue { event, .. } => event,
10575                        }
10576                    }
10577                    (
10578                        S::AttributeGroup(values, None),
10579                        event @ (Event::Start(_) | Event::Empty(_)),
10580                    ) => {
10581                        let output = helper.init_start_tag_deserializer(
10582                            event,
10583                            Some(&super::NS_XS),
10584                            b"attributeGroup",
10585                            false,
10586                        )?;
10587                        match self.handle_attribute_group(helper, values, output, &mut fallback)? {
10588                            ElementHandlerOutput::Break { event, allow_any } => {
10589                                break (event, allow_any)
10590                            }
10591                            ElementHandlerOutput::Continue { event, .. } => event,
10592                        }
10593                    }
10594                    (
10595                        S::AnyAttribute(values, None),
10596                        event @ (Event::Start(_) | Event::Empty(_)),
10597                    ) => {
10598                        let output = helper.init_start_tag_deserializer(
10599                            event,
10600                            Some(&super::NS_XS),
10601                            b"anyAttribute",
10602                            false,
10603                        )?;
10604                        match self.handle_any_attribute(helper, values, output, &mut fallback)? {
10605                            ElementHandlerOutput::Break { event, allow_any } => {
10606                                break (event, allow_any)
10607                            }
10608                            ElementHandlerOutput::Continue { event, .. } => event,
10609                        }
10610                    }
10611                    (s @ S::Done__(_), event) => {
10612                        *self.state__ = s;
10613                        break (DeserializerEvent::Continue(event), false);
10614                    }
10615                    (state, event) => {
10616                        *self.state__ = state;
10617                        break (DeserializerEvent::Break(event), false);
10618                    }
10619                }
10620            };
10621            let artifact = if matches!(&*self.state__, S::Done__(_)) {
10622                DeserializerArtifact::Data(self.finish(helper)?)
10623            } else {
10624                DeserializerArtifact::Deserializer(self)
10625            };
10626            Ok(DeserializerOutput {
10627                artifact,
10628                event,
10629                allow_any,
10630            })
10631        }
10632        fn finish(
10633            self,
10634            helper: &mut DeserializeHelper,
10635        ) -> Result<super::AttributeGroupTypeContent, Error> {
10636            AttributeGroupTypeContentDeserializer::finish_state(helper, *self.state__)
10637        }
10638    }
10639    #[derive(Debug)]
10640    pub struct ElementTypeDeserializer {
10641        id: Option<String>,
10642        name: Option<String>,
10643        ref_: Option<QName>,
10644        type_: Option<QName>,
10645        substitution_group: Option<super::QNameList>,
10646        min_occurs: usize,
10647        max_occurs: MaxOccurs,
10648        default: Option<String>,
10649        fixed: Option<String>,
10650        nillable: Option<bool>,
10651        abstract_: bool,
10652        final_: Option<super::DerivationSetType>,
10653        block: Option<super::BlockSetType>,
10654        form: Option<super::FormChoiceType>,
10655        target_namespace: Option<String>,
10656        content: Vec<super::ElementTypeContent>,
10657        state__: Box<ElementTypeDeserializerState>,
10658    }
10659    #[derive(Debug)]
10660    enum ElementTypeDeserializerState {
10661        Init__,
10662        Next__,
10663        Content__(<super::ElementTypeContent as WithDeserializer>::Deserializer),
10664        Unknown__,
10665    }
10666    impl ElementTypeDeserializer {
10667        fn from_bytes_start(
10668            helper: &mut DeserializeHelper,
10669            bytes_start: &BytesStart<'_>,
10670        ) -> Result<Box<Self>, Error> {
10671            let mut id: Option<String> = None;
10672            let mut name: Option<String> = None;
10673            let mut ref_: Option<QName> = None;
10674            let mut type_: Option<QName> = None;
10675            let mut substitution_group: Option<super::QNameList> = None;
10676            let mut min_occurs: Option<usize> = None;
10677            let mut max_occurs: Option<MaxOccurs> = None;
10678            let mut default: Option<String> = None;
10679            let mut fixed: Option<String> = None;
10680            let mut nillable: Option<bool> = None;
10681            let mut abstract_: Option<bool> = None;
10682            let mut final_: Option<super::DerivationSetType> = None;
10683            let mut block: Option<super::BlockSetType> = None;
10684            let mut form: Option<super::FormChoiceType> = None;
10685            let mut target_namespace: Option<String> = None;
10686            for attrib in helper.filter_xmlns_attributes(bytes_start) {
10687                let attrib = attrib?;
10688                if matches!(
10689                    helper.resolve_local_name(attrib.key, &super::NS_XS),
10690                    Some(b"id")
10691                ) {
10692                    helper.read_attrib(&mut id, b"id", &attrib.value)?;
10693                } else if matches!(
10694                    helper.resolve_local_name(attrib.key, &super::NS_XS),
10695                    Some(b"name")
10696                ) {
10697                    helper.read_attrib(&mut name, b"name", &attrib.value)?;
10698                } else if matches!(
10699                    helper.resolve_local_name(attrib.key, &super::NS_XS),
10700                    Some(b"ref")
10701                ) {
10702                    helper.read_attrib(&mut ref_, b"ref", &attrib.value)?;
10703                } else if matches!(
10704                    helper.resolve_local_name(attrib.key, &super::NS_XS),
10705                    Some(b"type")
10706                ) {
10707                    helper.read_attrib(&mut type_, b"type", &attrib.value)?;
10708                } else if matches!(
10709                    helper.resolve_local_name(attrib.key, &super::NS_XS),
10710                    Some(b"substitutionGroup")
10711                ) {
10712                    helper.read_attrib(
10713                        &mut substitution_group,
10714                        b"substitutionGroup",
10715                        &attrib.value,
10716                    )?;
10717                } else if matches!(
10718                    helper.resolve_local_name(attrib.key, &super::NS_XS),
10719                    Some(b"minOccurs")
10720                ) {
10721                    helper.read_attrib(&mut min_occurs, b"minOccurs", &attrib.value)?;
10722                } else if matches!(
10723                    helper.resolve_local_name(attrib.key, &super::NS_XS),
10724                    Some(b"maxOccurs")
10725                ) {
10726                    helper.read_attrib(&mut max_occurs, b"maxOccurs", &attrib.value)?;
10727                } else if matches!(
10728                    helper.resolve_local_name(attrib.key, &super::NS_XS),
10729                    Some(b"default")
10730                ) {
10731                    helper.read_attrib(&mut default, b"default", &attrib.value)?;
10732                } else if matches!(
10733                    helper.resolve_local_name(attrib.key, &super::NS_XS),
10734                    Some(b"fixed")
10735                ) {
10736                    helper.read_attrib(&mut fixed, b"fixed", &attrib.value)?;
10737                } else if matches!(
10738                    helper.resolve_local_name(attrib.key, &super::NS_XS),
10739                    Some(b"nillable")
10740                ) {
10741                    helper.read_attrib(&mut nillable, b"nillable", &attrib.value)?;
10742                } else if matches!(
10743                    helper.resolve_local_name(attrib.key, &super::NS_XS),
10744                    Some(b"abstract")
10745                ) {
10746                    helper.read_attrib(&mut abstract_, b"abstract", &attrib.value)?;
10747                } else if matches!(
10748                    helper.resolve_local_name(attrib.key, &super::NS_XS),
10749                    Some(b"final")
10750                ) {
10751                    helper.read_attrib(&mut final_, b"final", &attrib.value)?;
10752                } else if matches!(
10753                    helper.resolve_local_name(attrib.key, &super::NS_XS),
10754                    Some(b"block")
10755                ) {
10756                    helper.read_attrib(&mut block, b"block", &attrib.value)?;
10757                } else if matches!(
10758                    helper.resolve_local_name(attrib.key, &super::NS_XS),
10759                    Some(b"form")
10760                ) {
10761                    helper.read_attrib(&mut form, b"form", &attrib.value)?;
10762                } else if matches!(
10763                    helper.resolve_local_name(attrib.key, &super::NS_XS),
10764                    Some(b"targetNamespace")
10765                ) {
10766                    helper.read_attrib(&mut target_namespace, b"targetNamespace", &attrib.value)?;
10767                }
10768            }
10769            Ok(Box::new(Self {
10770                id: id,
10771                name: name,
10772                ref_: ref_,
10773                type_: type_,
10774                substitution_group: substitution_group,
10775                min_occurs: min_occurs.unwrap_or_else(super::ElementType::default_min_occurs),
10776                max_occurs: max_occurs.unwrap_or_else(super::ElementType::default_max_occurs),
10777                default: default,
10778                fixed: fixed,
10779                nillable: nillable,
10780                abstract_: abstract_.unwrap_or_else(super::ElementType::default_abstract_),
10781                final_: final_,
10782                block: block,
10783                form: form,
10784                target_namespace: target_namespace,
10785                content: Vec::new(),
10786                state__: Box::new(ElementTypeDeserializerState::Init__),
10787            }))
10788        }
10789        fn finish_state(
10790            &mut self,
10791            helper: &mut DeserializeHelper,
10792            state: ElementTypeDeserializerState,
10793        ) -> Result<(), Error> {
10794            if let ElementTypeDeserializerState::Content__(deserializer) = state {
10795                self.store_content(deserializer.finish(helper)?)?;
10796            }
10797            Ok(())
10798        }
10799        fn store_content(&mut self, value: super::ElementTypeContent) -> Result<(), Error> {
10800            self.content.push(value);
10801            Ok(())
10802        }
10803        fn handle_content<'de>(
10804            &mut self,
10805            helper: &mut DeserializeHelper,
10806            output: DeserializerOutput<'de, super::ElementTypeContent>,
10807            fallback: &mut Option<ElementTypeDeserializerState>,
10808        ) -> Result<ElementHandlerOutput<'de>, Error> {
10809            let DeserializerOutput {
10810                artifact,
10811                event,
10812                allow_any,
10813            } = output;
10814            if artifact.is_none() {
10815                *self.state__ = fallback
10816                    .take()
10817                    .unwrap_or(ElementTypeDeserializerState::Next__);
10818                return Ok(ElementHandlerOutput::break_(event, allow_any));
10819            }
10820            if let Some(fallback) = fallback.take() {
10821                self.finish_state(helper, fallback)?;
10822            }
10823            Ok(match artifact {
10824                DeserializerArtifact::None => unreachable!(),
10825                DeserializerArtifact::Data(data) => {
10826                    self.store_content(data)?;
10827                    *self.state__ = ElementTypeDeserializerState::Next__;
10828                    ElementHandlerOutput::from_event(event, allow_any)
10829                }
10830                DeserializerArtifact::Deserializer(deserializer) => {
10831                    let ret = ElementHandlerOutput::from_event(event, allow_any);
10832                    match &ret {
10833                        ElementHandlerOutput::Break { .. } => {
10834                            *self.state__ = ElementTypeDeserializerState::Content__(deserializer);
10835                        }
10836                        ElementHandlerOutput::Continue { .. } => {
10837                            fallback.get_or_insert(ElementTypeDeserializerState::Content__(
10838                                deserializer,
10839                            ));
10840                            *self.state__ = ElementTypeDeserializerState::Next__;
10841                        }
10842                    }
10843                    ret
10844                }
10845            })
10846        }
10847    }
10848    impl<'de> Deserializer<'de, super::ElementType> for Box<ElementTypeDeserializer> {
10849        fn init(
10850            helper: &mut DeserializeHelper,
10851            event: Event<'de>,
10852        ) -> DeserializerResult<'de, super::ElementType> {
10853            helper.init_deserializer_from_start_event(
10854                event,
10855                ElementTypeDeserializer::from_bytes_start,
10856            )
10857        }
10858        fn next(
10859            mut self,
10860            helper: &mut DeserializeHelper,
10861            event: Event<'de>,
10862        ) -> DeserializerResult<'de, super::ElementType> {
10863            use ElementTypeDeserializerState as S;
10864            let mut event = event;
10865            let mut fallback = None;
10866            let (event, allow_any) = loop {
10867                let state = replace(&mut *self.state__, S::Unknown__);
10868                event = match (state, event) {
10869                    (S::Unknown__, _) => unreachable!(),
10870                    (S::Content__(deserializer), event) => {
10871                        let output = deserializer.next(helper, event)?;
10872                        match self.handle_content(helper, output, &mut fallback)? {
10873                            ElementHandlerOutput::Break { event, allow_any } => {
10874                                break (event, allow_any)
10875                            }
10876                            ElementHandlerOutput::Continue { event, .. } => event,
10877                        }
10878                    }
10879                    (_, Event::End(_)) => {
10880                        return Ok(DeserializerOutput {
10881                            artifact: DeserializerArtifact::Data(self.finish(helper)?),
10882                            event: DeserializerEvent::None,
10883                            allow_any: false,
10884                        });
10885                    }
10886                    (state @ (S::Init__ | S::Next__), event) => {
10887                        fallback.get_or_insert(state);
10888                        let output =
10889                            <super::ElementTypeContent as WithDeserializer>::Deserializer::init(
10890                                helper, event,
10891                            )?;
10892                        match self.handle_content(helper, output, &mut fallback)? {
10893                            ElementHandlerOutput::Break { event, allow_any } => {
10894                                break (event, allow_any)
10895                            }
10896                            ElementHandlerOutput::Continue { event, .. } => event,
10897                        }
10898                    }
10899                }
10900            };
10901            let artifact = DeserializerArtifact::Deserializer(self);
10902            Ok(DeserializerOutput {
10903                artifact,
10904                event,
10905                allow_any,
10906            })
10907        }
10908        fn finish(mut self, helper: &mut DeserializeHelper) -> Result<super::ElementType, Error> {
10909            let state = replace(&mut *self.state__, ElementTypeDeserializerState::Unknown__);
10910            self.finish_state(helper, state)?;
10911            Ok(super::ElementType {
10912                id: self.id,
10913                name: self.name,
10914                ref_: self.ref_,
10915                type_: self.type_,
10916                substitution_group: self.substitution_group,
10917                min_occurs: self.min_occurs,
10918                max_occurs: self.max_occurs,
10919                default: self.default,
10920                fixed: self.fixed,
10921                nillable: self.nillable,
10922                abstract_: self.abstract_,
10923                final_: self.final_,
10924                block: self.block,
10925                form: self.form,
10926                target_namespace: self.target_namespace,
10927                content: self.content,
10928            })
10929        }
10930    }
10931    #[derive(Debug)]
10932    pub struct ElementTypeContentDeserializer {
10933        state__: Box<ElementTypeContentDeserializerState>,
10934    }
10935    #[derive(Debug)]
10936    pub enum ElementTypeContentDeserializerState {
10937        Init__,
10938        Annotation(
10939            Option<super::Annotation>,
10940            Option<<super::Annotation as WithDeserializer>::Deserializer>,
10941        ),
10942        SimpleType(
10943            Option<super::SimpleBaseType>,
10944            Option<<super::SimpleBaseType as WithDeserializer>::Deserializer>,
10945        ),
10946        ComplexType(
10947            Option<super::ComplexBaseType>,
10948            Option<<super::ComplexBaseType as WithDeserializer>::Deserializer>,
10949        ),
10950        Alternative(
10951            Option<super::AltType>,
10952            Option<<super::AltType as WithDeserializer>::Deserializer>,
10953        ),
10954        Unique(
10955            Option<super::KeybaseType>,
10956            Option<<super::KeybaseType as WithDeserializer>::Deserializer>,
10957        ),
10958        Key(
10959            Option<super::KeybaseType>,
10960            Option<<super::KeybaseType as WithDeserializer>::Deserializer>,
10961        ),
10962        Keyref(
10963            Option<super::Keyref>,
10964            Option<<super::Keyref as WithDeserializer>::Deserializer>,
10965        ),
10966        Done__(super::ElementTypeContent),
10967        Unknown__,
10968    }
10969    impl ElementTypeContentDeserializer {
10970        fn find_suitable<'de>(
10971            &mut self,
10972            helper: &mut DeserializeHelper,
10973            event: Event<'de>,
10974            fallback: &mut Option<ElementTypeContentDeserializerState>,
10975        ) -> Result<ElementHandlerOutput<'de>, Error> {
10976            if let Event::Start(x) | Event::Empty(x) = &event {
10977                if matches!(
10978                    helper.resolve_local_name(x.name(), &super::NS_XS),
10979                    Some(b"annotation")
10980                ) {
10981                    let output =
10982                        <super::Annotation as WithDeserializer>::Deserializer::init(helper, event)?;
10983                    return self.handle_annotation(
10984                        helper,
10985                        Default::default(),
10986                        output,
10987                        &mut *fallback,
10988                    );
10989                }
10990                if matches!(
10991                    helper.resolve_local_name(x.name(), &super::NS_XS),
10992                    Some(b"simpleType")
10993                ) {
10994                    let output = <super::SimpleBaseType as WithDeserializer>::Deserializer::init(
10995                        helper, event,
10996                    )?;
10997                    return self.handle_simple_type(
10998                        helper,
10999                        Default::default(),
11000                        output,
11001                        &mut *fallback,
11002                    );
11003                }
11004                if matches!(
11005                    helper.resolve_local_name(x.name(), &super::NS_XS),
11006                    Some(b"complexType")
11007                ) {
11008                    let output = <super::ComplexBaseType as WithDeserializer>::Deserializer::init(
11009                        helper, event,
11010                    )?;
11011                    return self.handle_complex_type(
11012                        helper,
11013                        Default::default(),
11014                        output,
11015                        &mut *fallback,
11016                    );
11017                }
11018                if matches!(
11019                    helper.resolve_local_name(x.name(), &super::NS_XS),
11020                    Some(b"alternative")
11021                ) {
11022                    let output =
11023                        <super::AltType as WithDeserializer>::Deserializer::init(helper, event)?;
11024                    return self.handle_alternative(
11025                        helper,
11026                        Default::default(),
11027                        output,
11028                        &mut *fallback,
11029                    );
11030                }
11031                if matches!(
11032                    helper.resolve_local_name(x.name(), &super::NS_XS),
11033                    Some(b"unique")
11034                ) {
11035                    let output = <super::KeybaseType as WithDeserializer>::Deserializer::init(
11036                        helper, event,
11037                    )?;
11038                    return self.handle_unique(helper, Default::default(), output, &mut *fallback);
11039                }
11040                if matches!(
11041                    helper.resolve_local_name(x.name(), &super::NS_XS),
11042                    Some(b"key")
11043                ) {
11044                    let output = <super::KeybaseType as WithDeserializer>::Deserializer::init(
11045                        helper, event,
11046                    )?;
11047                    return self.handle_key(helper, Default::default(), output, &mut *fallback);
11048                }
11049                if matches!(
11050                    helper.resolve_local_name(x.name(), &super::NS_XS),
11051                    Some(b"keyref")
11052                ) {
11053                    let output =
11054                        <super::Keyref as WithDeserializer>::Deserializer::init(helper, event)?;
11055                    return self.handle_keyref(helper, Default::default(), output, &mut *fallback);
11056                }
11057            }
11058            *self.state__ = fallback
11059                .take()
11060                .unwrap_or(ElementTypeContentDeserializerState::Init__);
11061            Ok(ElementHandlerOutput::return_to_parent(event, false))
11062        }
11063        fn finish_state(
11064            helper: &mut DeserializeHelper,
11065            state: ElementTypeContentDeserializerState,
11066        ) -> Result<super::ElementTypeContent, Error> {
11067            use ElementTypeContentDeserializerState as S;
11068            match state {
11069                S::Unknown__ => unreachable!(),
11070                S::Init__ => Err(ErrorKind::MissingContent.into()),
11071                S::Annotation(mut values, deserializer) => {
11072                    if let Some(deserializer) = deserializer {
11073                        let value = deserializer.finish(helper)?;
11074                        ElementTypeContentDeserializer::store_annotation(&mut values, value)?;
11075                    }
11076                    Ok(super::ElementTypeContent::Annotation(values.ok_or_else(
11077                        || ErrorKind::MissingElement("annotation".into()),
11078                    )?))
11079                }
11080                S::SimpleType(mut values, deserializer) => {
11081                    if let Some(deserializer) = deserializer {
11082                        let value = deserializer.finish(helper)?;
11083                        ElementTypeContentDeserializer::store_simple_type(&mut values, value)?;
11084                    }
11085                    Ok(super::ElementTypeContent::SimpleType(values.ok_or_else(
11086                        || ErrorKind::MissingElement("simpleType".into()),
11087                    )?))
11088                }
11089                S::ComplexType(mut values, deserializer) => {
11090                    if let Some(deserializer) = deserializer {
11091                        let value = deserializer.finish(helper)?;
11092                        ElementTypeContentDeserializer::store_complex_type(&mut values, value)?;
11093                    }
11094                    Ok(super::ElementTypeContent::ComplexType(values.ok_or_else(
11095                        || ErrorKind::MissingElement("complexType".into()),
11096                    )?))
11097                }
11098                S::Alternative(mut values, deserializer) => {
11099                    if let Some(deserializer) = deserializer {
11100                        let value = deserializer.finish(helper)?;
11101                        ElementTypeContentDeserializer::store_alternative(&mut values, value)?;
11102                    }
11103                    Ok(super::ElementTypeContent::Alternative(values.ok_or_else(
11104                        || ErrorKind::MissingElement("alternative".into()),
11105                    )?))
11106                }
11107                S::Unique(mut values, deserializer) => {
11108                    if let Some(deserializer) = deserializer {
11109                        let value = deserializer.finish(helper)?;
11110                        ElementTypeContentDeserializer::store_unique(&mut values, value)?;
11111                    }
11112                    Ok(super::ElementTypeContent::Unique(values.ok_or_else(
11113                        || ErrorKind::MissingElement("unique".into()),
11114                    )?))
11115                }
11116                S::Key(mut values, deserializer) => {
11117                    if let Some(deserializer) = deserializer {
11118                        let value = deserializer.finish(helper)?;
11119                        ElementTypeContentDeserializer::store_key(&mut values, value)?;
11120                    }
11121                    Ok(super::ElementTypeContent::Key(
11122                        values.ok_or_else(|| ErrorKind::MissingElement("key".into()))?,
11123                    ))
11124                }
11125                S::Keyref(mut values, deserializer) => {
11126                    if let Some(deserializer) = deserializer {
11127                        let value = deserializer.finish(helper)?;
11128                        ElementTypeContentDeserializer::store_keyref(&mut values, value)?;
11129                    }
11130                    Ok(super::ElementTypeContent::Keyref(values.ok_or_else(
11131                        || ErrorKind::MissingElement("keyref".into()),
11132                    )?))
11133                }
11134                S::Done__(data) => Ok(data),
11135            }
11136        }
11137        fn store_annotation(
11138            values: &mut Option<super::Annotation>,
11139            value: super::Annotation,
11140        ) -> Result<(), Error> {
11141            if values.is_some() {
11142                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
11143                    b"annotation",
11144                )))?;
11145            }
11146            *values = Some(value);
11147            Ok(())
11148        }
11149        fn store_simple_type(
11150            values: &mut Option<super::SimpleBaseType>,
11151            value: super::SimpleBaseType,
11152        ) -> Result<(), Error> {
11153            if values.is_some() {
11154                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
11155                    b"simpleType",
11156                )))?;
11157            }
11158            *values = Some(value);
11159            Ok(())
11160        }
11161        fn store_complex_type(
11162            values: &mut Option<super::ComplexBaseType>,
11163            value: super::ComplexBaseType,
11164        ) -> Result<(), Error> {
11165            if values.is_some() {
11166                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
11167                    b"complexType",
11168                )))?;
11169            }
11170            *values = Some(value);
11171            Ok(())
11172        }
11173        fn store_alternative(
11174            values: &mut Option<super::AltType>,
11175            value: super::AltType,
11176        ) -> Result<(), Error> {
11177            if values.is_some() {
11178                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
11179                    b"alternative",
11180                )))?;
11181            }
11182            *values = Some(value);
11183            Ok(())
11184        }
11185        fn store_unique(
11186            values: &mut Option<super::KeybaseType>,
11187            value: super::KeybaseType,
11188        ) -> Result<(), Error> {
11189            if values.is_some() {
11190                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
11191                    b"unique",
11192                )))?;
11193            }
11194            *values = Some(value);
11195            Ok(())
11196        }
11197        fn store_key(
11198            values: &mut Option<super::KeybaseType>,
11199            value: super::KeybaseType,
11200        ) -> Result<(), Error> {
11201            if values.is_some() {
11202                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(b"key")))?;
11203            }
11204            *values = Some(value);
11205            Ok(())
11206        }
11207        fn store_keyref(
11208            values: &mut Option<super::Keyref>,
11209            value: super::Keyref,
11210        ) -> Result<(), Error> {
11211            if values.is_some() {
11212                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
11213                    b"keyref",
11214                )))?;
11215            }
11216            *values = Some(value);
11217            Ok(())
11218        }
11219        fn handle_annotation<'de>(
11220            &mut self,
11221            helper: &mut DeserializeHelper,
11222            mut values: Option<super::Annotation>,
11223            output: DeserializerOutput<'de, super::Annotation>,
11224            fallback: &mut Option<ElementTypeContentDeserializerState>,
11225        ) -> Result<ElementHandlerOutput<'de>, Error> {
11226            let DeserializerOutput {
11227                artifact,
11228                event,
11229                allow_any,
11230            } = output;
11231            if artifact.is_none() {
11232                *self.state__ = match fallback.take() {
11233                    None if values.is_none() => {
11234                        *self.state__ = ElementTypeContentDeserializerState::Init__;
11235                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
11236                    }
11237                    None => ElementTypeContentDeserializerState::Annotation(values, None),
11238                    Some(ElementTypeContentDeserializerState::Annotation(
11239                        _,
11240                        Some(deserializer),
11241                    )) => {
11242                        ElementTypeContentDeserializerState::Annotation(values, Some(deserializer))
11243                    }
11244                    _ => unreachable!(),
11245                };
11246                return Ok(ElementHandlerOutput::break_(event, allow_any));
11247            }
11248            match fallback.take() {
11249                None => (),
11250                Some(ElementTypeContentDeserializerState::Annotation(_, Some(deserializer))) => {
11251                    let data = deserializer.finish(helper)?;
11252                    ElementTypeContentDeserializer::store_annotation(&mut values, data)?;
11253                }
11254                Some(_) => unreachable!(),
11255            }
11256            Ok(match artifact {
11257                DeserializerArtifact::None => unreachable!(),
11258                DeserializerArtifact::Data(data) => {
11259                    ElementTypeContentDeserializer::store_annotation(&mut values, data)?;
11260                    let data = ElementTypeContentDeserializer::finish_state(
11261                        helper,
11262                        ElementTypeContentDeserializerState::Annotation(values, None),
11263                    )?;
11264                    *self.state__ = ElementTypeContentDeserializerState::Done__(data);
11265                    ElementHandlerOutput::Break { event, allow_any }
11266                }
11267                DeserializerArtifact::Deserializer(deserializer) => {
11268                    *self.state__ =
11269                        ElementTypeContentDeserializerState::Annotation(values, Some(deserializer));
11270                    ElementHandlerOutput::from_event_end(event, allow_any)
11271                }
11272            })
11273        }
11274        fn handle_simple_type<'de>(
11275            &mut self,
11276            helper: &mut DeserializeHelper,
11277            mut values: Option<super::SimpleBaseType>,
11278            output: DeserializerOutput<'de, super::SimpleBaseType>,
11279            fallback: &mut Option<ElementTypeContentDeserializerState>,
11280        ) -> Result<ElementHandlerOutput<'de>, Error> {
11281            let DeserializerOutput {
11282                artifact,
11283                event,
11284                allow_any,
11285            } = output;
11286            if artifact.is_none() {
11287                *self.state__ = match fallback.take() {
11288                    None if values.is_none() => {
11289                        *self.state__ = ElementTypeContentDeserializerState::Init__;
11290                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
11291                    }
11292                    None => ElementTypeContentDeserializerState::SimpleType(values, None),
11293                    Some(ElementTypeContentDeserializerState::SimpleType(
11294                        _,
11295                        Some(deserializer),
11296                    )) => {
11297                        ElementTypeContentDeserializerState::SimpleType(values, Some(deserializer))
11298                    }
11299                    _ => unreachable!(),
11300                };
11301                return Ok(ElementHandlerOutput::break_(event, allow_any));
11302            }
11303            match fallback.take() {
11304                None => (),
11305                Some(ElementTypeContentDeserializerState::SimpleType(_, Some(deserializer))) => {
11306                    let data = deserializer.finish(helper)?;
11307                    ElementTypeContentDeserializer::store_simple_type(&mut values, data)?;
11308                }
11309                Some(_) => unreachable!(),
11310            }
11311            Ok(match artifact {
11312                DeserializerArtifact::None => unreachable!(),
11313                DeserializerArtifact::Data(data) => {
11314                    ElementTypeContentDeserializer::store_simple_type(&mut values, data)?;
11315                    let data = ElementTypeContentDeserializer::finish_state(
11316                        helper,
11317                        ElementTypeContentDeserializerState::SimpleType(values, None),
11318                    )?;
11319                    *self.state__ = ElementTypeContentDeserializerState::Done__(data);
11320                    ElementHandlerOutput::Break { event, allow_any }
11321                }
11322                DeserializerArtifact::Deserializer(deserializer) => {
11323                    *self.state__ =
11324                        ElementTypeContentDeserializerState::SimpleType(values, Some(deserializer));
11325                    ElementHandlerOutput::from_event_end(event, allow_any)
11326                }
11327            })
11328        }
11329        fn handle_complex_type<'de>(
11330            &mut self,
11331            helper: &mut DeserializeHelper,
11332            mut values: Option<super::ComplexBaseType>,
11333            output: DeserializerOutput<'de, super::ComplexBaseType>,
11334            fallback: &mut Option<ElementTypeContentDeserializerState>,
11335        ) -> Result<ElementHandlerOutput<'de>, Error> {
11336            let DeserializerOutput {
11337                artifact,
11338                event,
11339                allow_any,
11340            } = output;
11341            if artifact.is_none() {
11342                *self.state__ = match fallback.take() {
11343                    None if values.is_none() => {
11344                        *self.state__ = ElementTypeContentDeserializerState::Init__;
11345                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
11346                    }
11347                    None => ElementTypeContentDeserializerState::ComplexType(values, None),
11348                    Some(ElementTypeContentDeserializerState::ComplexType(
11349                        _,
11350                        Some(deserializer),
11351                    )) => {
11352                        ElementTypeContentDeserializerState::ComplexType(values, Some(deserializer))
11353                    }
11354                    _ => unreachable!(),
11355                };
11356                return Ok(ElementHandlerOutput::break_(event, allow_any));
11357            }
11358            match fallback.take() {
11359                None => (),
11360                Some(ElementTypeContentDeserializerState::ComplexType(_, Some(deserializer))) => {
11361                    let data = deserializer.finish(helper)?;
11362                    ElementTypeContentDeserializer::store_complex_type(&mut values, data)?;
11363                }
11364                Some(_) => unreachable!(),
11365            }
11366            Ok(match artifact {
11367                DeserializerArtifact::None => unreachable!(),
11368                DeserializerArtifact::Data(data) => {
11369                    ElementTypeContentDeserializer::store_complex_type(&mut values, data)?;
11370                    let data = ElementTypeContentDeserializer::finish_state(
11371                        helper,
11372                        ElementTypeContentDeserializerState::ComplexType(values, None),
11373                    )?;
11374                    *self.state__ = ElementTypeContentDeserializerState::Done__(data);
11375                    ElementHandlerOutput::Break { event, allow_any }
11376                }
11377                DeserializerArtifact::Deserializer(deserializer) => {
11378                    *self.state__ = ElementTypeContentDeserializerState::ComplexType(
11379                        values,
11380                        Some(deserializer),
11381                    );
11382                    ElementHandlerOutput::from_event_end(event, allow_any)
11383                }
11384            })
11385        }
11386        fn handle_alternative<'de>(
11387            &mut self,
11388            helper: &mut DeserializeHelper,
11389            mut values: Option<super::AltType>,
11390            output: DeserializerOutput<'de, super::AltType>,
11391            fallback: &mut Option<ElementTypeContentDeserializerState>,
11392        ) -> Result<ElementHandlerOutput<'de>, Error> {
11393            let DeserializerOutput {
11394                artifact,
11395                event,
11396                allow_any,
11397            } = output;
11398            if artifact.is_none() {
11399                *self.state__ = match fallback.take() {
11400                    None if values.is_none() => {
11401                        *self.state__ = ElementTypeContentDeserializerState::Init__;
11402                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
11403                    }
11404                    None => ElementTypeContentDeserializerState::Alternative(values, None),
11405                    Some(ElementTypeContentDeserializerState::Alternative(
11406                        _,
11407                        Some(deserializer),
11408                    )) => {
11409                        ElementTypeContentDeserializerState::Alternative(values, Some(deserializer))
11410                    }
11411                    _ => unreachable!(),
11412                };
11413                return Ok(ElementHandlerOutput::break_(event, allow_any));
11414            }
11415            match fallback.take() {
11416                None => (),
11417                Some(ElementTypeContentDeserializerState::Alternative(_, Some(deserializer))) => {
11418                    let data = deserializer.finish(helper)?;
11419                    ElementTypeContentDeserializer::store_alternative(&mut values, data)?;
11420                }
11421                Some(_) => unreachable!(),
11422            }
11423            Ok(match artifact {
11424                DeserializerArtifact::None => unreachable!(),
11425                DeserializerArtifact::Data(data) => {
11426                    ElementTypeContentDeserializer::store_alternative(&mut values, data)?;
11427                    let data = ElementTypeContentDeserializer::finish_state(
11428                        helper,
11429                        ElementTypeContentDeserializerState::Alternative(values, None),
11430                    )?;
11431                    *self.state__ = ElementTypeContentDeserializerState::Done__(data);
11432                    ElementHandlerOutput::Break { event, allow_any }
11433                }
11434                DeserializerArtifact::Deserializer(deserializer) => {
11435                    *self.state__ = ElementTypeContentDeserializerState::Alternative(
11436                        values,
11437                        Some(deserializer),
11438                    );
11439                    ElementHandlerOutput::from_event_end(event, allow_any)
11440                }
11441            })
11442        }
11443        fn handle_unique<'de>(
11444            &mut self,
11445            helper: &mut DeserializeHelper,
11446            mut values: Option<super::KeybaseType>,
11447            output: DeserializerOutput<'de, super::KeybaseType>,
11448            fallback: &mut Option<ElementTypeContentDeserializerState>,
11449        ) -> Result<ElementHandlerOutput<'de>, Error> {
11450            let DeserializerOutput {
11451                artifact,
11452                event,
11453                allow_any,
11454            } = output;
11455            if artifact.is_none() {
11456                *self.state__ = match fallback.take() {
11457                    None if values.is_none() => {
11458                        *self.state__ = ElementTypeContentDeserializerState::Init__;
11459                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
11460                    }
11461                    None => ElementTypeContentDeserializerState::Unique(values, None),
11462                    Some(ElementTypeContentDeserializerState::Unique(_, Some(deserializer))) => {
11463                        ElementTypeContentDeserializerState::Unique(values, Some(deserializer))
11464                    }
11465                    _ => unreachable!(),
11466                };
11467                return Ok(ElementHandlerOutput::break_(event, allow_any));
11468            }
11469            match fallback.take() {
11470                None => (),
11471                Some(ElementTypeContentDeserializerState::Unique(_, Some(deserializer))) => {
11472                    let data = deserializer.finish(helper)?;
11473                    ElementTypeContentDeserializer::store_unique(&mut values, data)?;
11474                }
11475                Some(_) => unreachable!(),
11476            }
11477            Ok(match artifact {
11478                DeserializerArtifact::None => unreachable!(),
11479                DeserializerArtifact::Data(data) => {
11480                    ElementTypeContentDeserializer::store_unique(&mut values, data)?;
11481                    let data = ElementTypeContentDeserializer::finish_state(
11482                        helper,
11483                        ElementTypeContentDeserializerState::Unique(values, None),
11484                    )?;
11485                    *self.state__ = ElementTypeContentDeserializerState::Done__(data);
11486                    ElementHandlerOutput::Break { event, allow_any }
11487                }
11488                DeserializerArtifact::Deserializer(deserializer) => {
11489                    *self.state__ =
11490                        ElementTypeContentDeserializerState::Unique(values, Some(deserializer));
11491                    ElementHandlerOutput::from_event_end(event, allow_any)
11492                }
11493            })
11494        }
11495        fn handle_key<'de>(
11496            &mut self,
11497            helper: &mut DeserializeHelper,
11498            mut values: Option<super::KeybaseType>,
11499            output: DeserializerOutput<'de, super::KeybaseType>,
11500            fallback: &mut Option<ElementTypeContentDeserializerState>,
11501        ) -> Result<ElementHandlerOutput<'de>, Error> {
11502            let DeserializerOutput {
11503                artifact,
11504                event,
11505                allow_any,
11506            } = output;
11507            if artifact.is_none() {
11508                *self.state__ = match fallback.take() {
11509                    None if values.is_none() => {
11510                        *self.state__ = ElementTypeContentDeserializerState::Init__;
11511                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
11512                    }
11513                    None => ElementTypeContentDeserializerState::Key(values, None),
11514                    Some(ElementTypeContentDeserializerState::Key(_, Some(deserializer))) => {
11515                        ElementTypeContentDeserializerState::Key(values, Some(deserializer))
11516                    }
11517                    _ => unreachable!(),
11518                };
11519                return Ok(ElementHandlerOutput::break_(event, allow_any));
11520            }
11521            match fallback.take() {
11522                None => (),
11523                Some(ElementTypeContentDeserializerState::Key(_, Some(deserializer))) => {
11524                    let data = deserializer.finish(helper)?;
11525                    ElementTypeContentDeserializer::store_key(&mut values, data)?;
11526                }
11527                Some(_) => unreachable!(),
11528            }
11529            Ok(match artifact {
11530                DeserializerArtifact::None => unreachable!(),
11531                DeserializerArtifact::Data(data) => {
11532                    ElementTypeContentDeserializer::store_key(&mut values, data)?;
11533                    let data = ElementTypeContentDeserializer::finish_state(
11534                        helper,
11535                        ElementTypeContentDeserializerState::Key(values, None),
11536                    )?;
11537                    *self.state__ = ElementTypeContentDeserializerState::Done__(data);
11538                    ElementHandlerOutput::Break { event, allow_any }
11539                }
11540                DeserializerArtifact::Deserializer(deserializer) => {
11541                    *self.state__ =
11542                        ElementTypeContentDeserializerState::Key(values, Some(deserializer));
11543                    ElementHandlerOutput::from_event_end(event, allow_any)
11544                }
11545            })
11546        }
11547        fn handle_keyref<'de>(
11548            &mut self,
11549            helper: &mut DeserializeHelper,
11550            mut values: Option<super::Keyref>,
11551            output: DeserializerOutput<'de, super::Keyref>,
11552            fallback: &mut Option<ElementTypeContentDeserializerState>,
11553        ) -> Result<ElementHandlerOutput<'de>, Error> {
11554            let DeserializerOutput {
11555                artifact,
11556                event,
11557                allow_any,
11558            } = output;
11559            if artifact.is_none() {
11560                *self.state__ = match fallback.take() {
11561                    None if values.is_none() => {
11562                        *self.state__ = ElementTypeContentDeserializerState::Init__;
11563                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
11564                    }
11565                    None => ElementTypeContentDeserializerState::Keyref(values, None),
11566                    Some(ElementTypeContentDeserializerState::Keyref(_, Some(deserializer))) => {
11567                        ElementTypeContentDeserializerState::Keyref(values, Some(deserializer))
11568                    }
11569                    _ => unreachable!(),
11570                };
11571                return Ok(ElementHandlerOutput::break_(event, allow_any));
11572            }
11573            match fallback.take() {
11574                None => (),
11575                Some(ElementTypeContentDeserializerState::Keyref(_, Some(deserializer))) => {
11576                    let data = deserializer.finish(helper)?;
11577                    ElementTypeContentDeserializer::store_keyref(&mut values, data)?;
11578                }
11579                Some(_) => unreachable!(),
11580            }
11581            Ok(match artifact {
11582                DeserializerArtifact::None => unreachable!(),
11583                DeserializerArtifact::Data(data) => {
11584                    ElementTypeContentDeserializer::store_keyref(&mut values, data)?;
11585                    let data = ElementTypeContentDeserializer::finish_state(
11586                        helper,
11587                        ElementTypeContentDeserializerState::Keyref(values, None),
11588                    )?;
11589                    *self.state__ = ElementTypeContentDeserializerState::Done__(data);
11590                    ElementHandlerOutput::Break { event, allow_any }
11591                }
11592                DeserializerArtifact::Deserializer(deserializer) => {
11593                    *self.state__ =
11594                        ElementTypeContentDeserializerState::Keyref(values, Some(deserializer));
11595                    ElementHandlerOutput::from_event_end(event, allow_any)
11596                }
11597            })
11598        }
11599    }
11600    impl<'de> Deserializer<'de, super::ElementTypeContent> for Box<ElementTypeContentDeserializer> {
11601        fn init(
11602            helper: &mut DeserializeHelper,
11603            event: Event<'de>,
11604        ) -> DeserializerResult<'de, super::ElementTypeContent> {
11605            let deserializer = Box::new(ElementTypeContentDeserializer {
11606                state__: Box::new(ElementTypeContentDeserializerState::Init__),
11607            });
11608            let mut output = deserializer.next(helper, event)?;
11609            output.artifact = match output.artifact {
11610                DeserializerArtifact::Deserializer(x)
11611                    if matches!(&*x.state__, ElementTypeContentDeserializerState::Init__) =>
11612                {
11613                    DeserializerArtifact::None
11614                }
11615                artifact => artifact,
11616            };
11617            Ok(output)
11618        }
11619        fn next(
11620            mut self,
11621            helper: &mut DeserializeHelper,
11622            event: Event<'de>,
11623        ) -> DeserializerResult<'de, super::ElementTypeContent> {
11624            use ElementTypeContentDeserializerState as S;
11625            let mut event = event;
11626            let mut fallback = None;
11627            let (event, allow_any) = loop {
11628                let state = replace(&mut *self.state__, S::Unknown__);
11629                event = match (state, event) {
11630                    (S::Unknown__, _) => unreachable!(),
11631                    (S::Annotation(values, Some(deserializer)), event) => {
11632                        let output = deserializer.next(helper, event)?;
11633                        match self.handle_annotation(helper, values, output, &mut fallback)? {
11634                            ElementHandlerOutput::Break { event, allow_any } => {
11635                                break (event, allow_any)
11636                            }
11637                            ElementHandlerOutput::Continue { event, .. } => event,
11638                        }
11639                    }
11640                    (S::SimpleType(values, Some(deserializer)), event) => {
11641                        let output = deserializer.next(helper, event)?;
11642                        match self.handle_simple_type(helper, values, output, &mut fallback)? {
11643                            ElementHandlerOutput::Break { event, allow_any } => {
11644                                break (event, allow_any)
11645                            }
11646                            ElementHandlerOutput::Continue { event, .. } => event,
11647                        }
11648                    }
11649                    (S::ComplexType(values, Some(deserializer)), event) => {
11650                        let output = deserializer.next(helper, event)?;
11651                        match self.handle_complex_type(helper, values, output, &mut fallback)? {
11652                            ElementHandlerOutput::Break { event, allow_any } => {
11653                                break (event, allow_any)
11654                            }
11655                            ElementHandlerOutput::Continue { event, .. } => event,
11656                        }
11657                    }
11658                    (S::Alternative(values, Some(deserializer)), event) => {
11659                        let output = deserializer.next(helper, event)?;
11660                        match self.handle_alternative(helper, values, output, &mut fallback)? {
11661                            ElementHandlerOutput::Break { event, allow_any } => {
11662                                break (event, allow_any)
11663                            }
11664                            ElementHandlerOutput::Continue { event, .. } => event,
11665                        }
11666                    }
11667                    (S::Unique(values, Some(deserializer)), event) => {
11668                        let output = deserializer.next(helper, event)?;
11669                        match self.handle_unique(helper, values, output, &mut fallback)? {
11670                            ElementHandlerOutput::Break { event, allow_any } => {
11671                                break (event, allow_any)
11672                            }
11673                            ElementHandlerOutput::Continue { event, .. } => event,
11674                        }
11675                    }
11676                    (S::Key(values, Some(deserializer)), event) => {
11677                        let output = deserializer.next(helper, event)?;
11678                        match self.handle_key(helper, values, output, &mut fallback)? {
11679                            ElementHandlerOutput::Break { event, allow_any } => {
11680                                break (event, allow_any)
11681                            }
11682                            ElementHandlerOutput::Continue { event, .. } => event,
11683                        }
11684                    }
11685                    (S::Keyref(values, Some(deserializer)), event) => {
11686                        let output = deserializer.next(helper, event)?;
11687                        match self.handle_keyref(helper, values, output, &mut fallback)? {
11688                            ElementHandlerOutput::Break { event, allow_any } => {
11689                                break (event, allow_any)
11690                            }
11691                            ElementHandlerOutput::Continue { event, .. } => event,
11692                        }
11693                    }
11694                    (state, event @ Event::End(_)) => {
11695                        return Ok(DeserializerOutput {
11696                            artifact: DeserializerArtifact::Data(
11697                                ElementTypeContentDeserializer::finish_state(helper, state)?,
11698                            ),
11699                            event: DeserializerEvent::Continue(event),
11700                            allow_any: false,
11701                        });
11702                    }
11703                    (S::Init__, event) => match self.find_suitable(helper, event, &mut fallback)? {
11704                        ElementHandlerOutput::Break { event, allow_any } => {
11705                            break (event, allow_any)
11706                        }
11707                        ElementHandlerOutput::Continue { event, .. } => event,
11708                    },
11709                    (S::Annotation(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
11710                        let output = helper.init_start_tag_deserializer(
11711                            event,
11712                            Some(&super::NS_XS),
11713                            b"annotation",
11714                            false,
11715                        )?;
11716                        match self.handle_annotation(helper, values, output, &mut fallback)? {
11717                            ElementHandlerOutput::Break { event, allow_any } => {
11718                                break (event, allow_any)
11719                            }
11720                            ElementHandlerOutput::Continue { event, .. } => event,
11721                        }
11722                    }
11723                    (S::SimpleType(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
11724                        let output = helper.init_start_tag_deserializer(
11725                            event,
11726                            Some(&super::NS_XS),
11727                            b"simpleType",
11728                            true,
11729                        )?;
11730                        match self.handle_simple_type(helper, values, output, &mut fallback)? {
11731                            ElementHandlerOutput::Break { event, allow_any } => {
11732                                break (event, allow_any)
11733                            }
11734                            ElementHandlerOutput::Continue { event, .. } => event,
11735                        }
11736                    }
11737                    (S::ComplexType(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
11738                        let output = helper.init_start_tag_deserializer(
11739                            event,
11740                            Some(&super::NS_XS),
11741                            b"complexType",
11742                            true,
11743                        )?;
11744                        match self.handle_complex_type(helper, values, output, &mut fallback)? {
11745                            ElementHandlerOutput::Break { event, allow_any } => {
11746                                break (event, allow_any)
11747                            }
11748                            ElementHandlerOutput::Continue { event, .. } => event,
11749                        }
11750                    }
11751                    (S::Alternative(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
11752                        let output = helper.init_start_tag_deserializer(
11753                            event,
11754                            Some(&super::NS_XS),
11755                            b"alternative",
11756                            true,
11757                        )?;
11758                        match self.handle_alternative(helper, values, output, &mut fallback)? {
11759                            ElementHandlerOutput::Break { event, allow_any } => {
11760                                break (event, allow_any)
11761                            }
11762                            ElementHandlerOutput::Continue { event, .. } => event,
11763                        }
11764                    }
11765                    (S::Unique(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
11766                        let output = helper.init_start_tag_deserializer(
11767                            event,
11768                            Some(&super::NS_XS),
11769                            b"unique",
11770                            false,
11771                        )?;
11772                        match self.handle_unique(helper, values, output, &mut fallback)? {
11773                            ElementHandlerOutput::Break { event, allow_any } => {
11774                                break (event, allow_any)
11775                            }
11776                            ElementHandlerOutput::Continue { event, .. } => event,
11777                        }
11778                    }
11779                    (S::Key(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
11780                        let output = helper.init_start_tag_deserializer(
11781                            event,
11782                            Some(&super::NS_XS),
11783                            b"key",
11784                            false,
11785                        )?;
11786                        match self.handle_key(helper, values, output, &mut fallback)? {
11787                            ElementHandlerOutput::Break { event, allow_any } => {
11788                                break (event, allow_any)
11789                            }
11790                            ElementHandlerOutput::Continue { event, .. } => event,
11791                        }
11792                    }
11793                    (S::Keyref(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
11794                        let output = helper.init_start_tag_deserializer(
11795                            event,
11796                            Some(&super::NS_XS),
11797                            b"keyref",
11798                            false,
11799                        )?;
11800                        match self.handle_keyref(helper, values, output, &mut fallback)? {
11801                            ElementHandlerOutput::Break { event, allow_any } => {
11802                                break (event, allow_any)
11803                            }
11804                            ElementHandlerOutput::Continue { event, .. } => event,
11805                        }
11806                    }
11807                    (s @ S::Done__(_), event) => {
11808                        *self.state__ = s;
11809                        break (DeserializerEvent::Continue(event), false);
11810                    }
11811                    (state, event) => {
11812                        *self.state__ = state;
11813                        break (DeserializerEvent::Break(event), false);
11814                    }
11815                }
11816            };
11817            let artifact = if matches!(&*self.state__, S::Done__(_)) {
11818                DeserializerArtifact::Data(self.finish(helper)?)
11819            } else {
11820                DeserializerArtifact::Deserializer(self)
11821            };
11822            Ok(DeserializerOutput {
11823                artifact,
11824                event,
11825                allow_any,
11826            })
11827        }
11828        fn finish(
11829            self,
11830            helper: &mut DeserializeHelper,
11831        ) -> Result<super::ElementTypeContent, Error> {
11832            ElementTypeContentDeserializer::finish_state(helper, *self.state__)
11833        }
11834    }
11835    #[derive(Debug)]
11836    pub struct AttributeTypeDeserializer {
11837        id: Option<String>,
11838        name: Option<String>,
11839        ref_: Option<QName>,
11840        type_: Option<QName>,
11841        use_: super::AttributeUseType,
11842        default: Option<String>,
11843        fixed: Option<String>,
11844        form: Option<super::FormChoiceType>,
11845        target_namespace: Option<String>,
11846        inheritable: Option<bool>,
11847        annotation: Option<super::Annotation>,
11848        simple_type: Option<super::SimpleBaseType>,
11849        state__: Box<AttributeTypeDeserializerState>,
11850    }
11851    #[derive(Debug)]
11852    enum AttributeTypeDeserializerState {
11853        Init__,
11854        Annotation(Option<<super::Annotation as WithDeserializer>::Deserializer>),
11855        SimpleType(Option<<super::SimpleBaseType as WithDeserializer>::Deserializer>),
11856        Done__,
11857        Unknown__,
11858    }
11859    impl AttributeTypeDeserializer {
11860        fn from_bytes_start(
11861            helper: &mut DeserializeHelper,
11862            bytes_start: &BytesStart<'_>,
11863        ) -> Result<Box<Self>, Error> {
11864            let mut id: Option<String> = None;
11865            let mut name: Option<String> = None;
11866            let mut ref_: Option<QName> = None;
11867            let mut type_: Option<QName> = None;
11868            let mut use_: Option<super::AttributeUseType> = None;
11869            let mut default: Option<String> = None;
11870            let mut fixed: Option<String> = None;
11871            let mut form: Option<super::FormChoiceType> = None;
11872            let mut target_namespace: Option<String> = None;
11873            let mut inheritable: Option<bool> = None;
11874            for attrib in helper.filter_xmlns_attributes(bytes_start) {
11875                let attrib = attrib?;
11876                if matches!(
11877                    helper.resolve_local_name(attrib.key, &super::NS_XS),
11878                    Some(b"id")
11879                ) {
11880                    helper.read_attrib(&mut id, b"id", &attrib.value)?;
11881                } else if matches!(
11882                    helper.resolve_local_name(attrib.key, &super::NS_XS),
11883                    Some(b"name")
11884                ) {
11885                    helper.read_attrib(&mut name, b"name", &attrib.value)?;
11886                } else if matches!(
11887                    helper.resolve_local_name(attrib.key, &super::NS_XS),
11888                    Some(b"ref")
11889                ) {
11890                    helper.read_attrib(&mut ref_, b"ref", &attrib.value)?;
11891                } else if matches!(
11892                    helper.resolve_local_name(attrib.key, &super::NS_XS),
11893                    Some(b"type")
11894                ) {
11895                    helper.read_attrib(&mut type_, b"type", &attrib.value)?;
11896                } else if matches!(
11897                    helper.resolve_local_name(attrib.key, &super::NS_XS),
11898                    Some(b"use")
11899                ) {
11900                    helper.read_attrib(&mut use_, b"use", &attrib.value)?;
11901                } else if matches!(
11902                    helper.resolve_local_name(attrib.key, &super::NS_XS),
11903                    Some(b"default")
11904                ) {
11905                    helper.read_attrib(&mut default, b"default", &attrib.value)?;
11906                } else if matches!(
11907                    helper.resolve_local_name(attrib.key, &super::NS_XS),
11908                    Some(b"fixed")
11909                ) {
11910                    helper.read_attrib(&mut fixed, b"fixed", &attrib.value)?;
11911                } else if matches!(
11912                    helper.resolve_local_name(attrib.key, &super::NS_XS),
11913                    Some(b"form")
11914                ) {
11915                    helper.read_attrib(&mut form, b"form", &attrib.value)?;
11916                } else if matches!(
11917                    helper.resolve_local_name(attrib.key, &super::NS_XS),
11918                    Some(b"targetNamespace")
11919                ) {
11920                    helper.read_attrib(&mut target_namespace, b"targetNamespace", &attrib.value)?;
11921                } else if matches!(
11922                    helper.resolve_local_name(attrib.key, &super::NS_XS),
11923                    Some(b"inheritable")
11924                ) {
11925                    helper.read_attrib(&mut inheritable, b"inheritable", &attrib.value)?;
11926                }
11927            }
11928            Ok(Box::new(Self {
11929                id: id,
11930                name: name,
11931                ref_: ref_,
11932                type_: type_,
11933                use_: use_.unwrap_or_else(super::AttributeType::default_use_),
11934                default: default,
11935                fixed: fixed,
11936                form: form,
11937                target_namespace: target_namespace,
11938                inheritable: inheritable,
11939                annotation: None,
11940                simple_type: None,
11941                state__: Box::new(AttributeTypeDeserializerState::Init__),
11942            }))
11943        }
11944        fn finish_state(
11945            &mut self,
11946            helper: &mut DeserializeHelper,
11947            state: AttributeTypeDeserializerState,
11948        ) -> Result<(), Error> {
11949            use AttributeTypeDeserializerState as S;
11950            match state {
11951                S::Annotation(Some(deserializer)) => {
11952                    self.store_annotation(deserializer.finish(helper)?)?
11953                }
11954                S::SimpleType(Some(deserializer)) => {
11955                    self.store_simple_type(deserializer.finish(helper)?)?
11956                }
11957                _ => (),
11958            }
11959            Ok(())
11960        }
11961        fn store_annotation(&mut self, value: super::Annotation) -> Result<(), Error> {
11962            if self.annotation.is_some() {
11963                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
11964                    b"annotation",
11965                )))?;
11966            }
11967            self.annotation = Some(value);
11968            Ok(())
11969        }
11970        fn store_simple_type(&mut self, value: super::SimpleBaseType) -> Result<(), Error> {
11971            if self.simple_type.is_some() {
11972                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
11973                    b"simpleType",
11974                )))?;
11975            }
11976            self.simple_type = Some(value);
11977            Ok(())
11978        }
11979        fn handle_annotation<'de>(
11980            &mut self,
11981            helper: &mut DeserializeHelper,
11982            output: DeserializerOutput<'de, super::Annotation>,
11983            fallback: &mut Option<AttributeTypeDeserializerState>,
11984        ) -> Result<ElementHandlerOutput<'de>, Error> {
11985            let DeserializerOutput {
11986                artifact,
11987                event,
11988                allow_any,
11989            } = output;
11990            if artifact.is_none() {
11991                fallback.get_or_insert(AttributeTypeDeserializerState::Annotation(None));
11992                *self.state__ = AttributeTypeDeserializerState::SimpleType(None);
11993                return Ok(ElementHandlerOutput::from_event(event, allow_any));
11994            }
11995            if let Some(fallback) = fallback.take() {
11996                self.finish_state(helper, fallback)?;
11997            }
11998            Ok(match artifact {
11999                DeserializerArtifact::None => unreachable!(),
12000                DeserializerArtifact::Data(data) => {
12001                    self.store_annotation(data)?;
12002                    *self.state__ = AttributeTypeDeserializerState::SimpleType(None);
12003                    ElementHandlerOutput::from_event(event, allow_any)
12004                }
12005                DeserializerArtifact::Deserializer(deserializer) => {
12006                    let ret = ElementHandlerOutput::from_event(event, allow_any);
12007                    match &ret {
12008                        ElementHandlerOutput::Continue { .. } => {
12009                            fallback.get_or_insert(AttributeTypeDeserializerState::Annotation(
12010                                Some(deserializer),
12011                            ));
12012                            *self.state__ = AttributeTypeDeserializerState::SimpleType(None);
12013                        }
12014                        ElementHandlerOutput::Break { .. } => {
12015                            *self.state__ =
12016                                AttributeTypeDeserializerState::Annotation(Some(deserializer));
12017                        }
12018                    }
12019                    ret
12020                }
12021            })
12022        }
12023        fn handle_simple_type<'de>(
12024            &mut self,
12025            helper: &mut DeserializeHelper,
12026            output: DeserializerOutput<'de, super::SimpleBaseType>,
12027            fallback: &mut Option<AttributeTypeDeserializerState>,
12028        ) -> Result<ElementHandlerOutput<'de>, Error> {
12029            let DeserializerOutput {
12030                artifact,
12031                event,
12032                allow_any,
12033            } = output;
12034            if artifact.is_none() {
12035                fallback.get_or_insert(AttributeTypeDeserializerState::SimpleType(None));
12036                *self.state__ = AttributeTypeDeserializerState::Done__;
12037                return Ok(ElementHandlerOutput::from_event(event, allow_any));
12038            }
12039            if let Some(fallback) = fallback.take() {
12040                self.finish_state(helper, fallback)?;
12041            }
12042            Ok(match artifact {
12043                DeserializerArtifact::None => unreachable!(),
12044                DeserializerArtifact::Data(data) => {
12045                    self.store_simple_type(data)?;
12046                    *self.state__ = AttributeTypeDeserializerState::Done__;
12047                    ElementHandlerOutput::from_event(event, allow_any)
12048                }
12049                DeserializerArtifact::Deserializer(deserializer) => {
12050                    let ret = ElementHandlerOutput::from_event(event, allow_any);
12051                    match &ret {
12052                        ElementHandlerOutput::Continue { .. } => {
12053                            fallback.get_or_insert(AttributeTypeDeserializerState::SimpleType(
12054                                Some(deserializer),
12055                            ));
12056                            *self.state__ = AttributeTypeDeserializerState::Done__;
12057                        }
12058                        ElementHandlerOutput::Break { .. } => {
12059                            *self.state__ =
12060                                AttributeTypeDeserializerState::SimpleType(Some(deserializer));
12061                        }
12062                    }
12063                    ret
12064                }
12065            })
12066        }
12067    }
12068    impl<'de> Deserializer<'de, super::AttributeType> for Box<AttributeTypeDeserializer> {
12069        fn init(
12070            helper: &mut DeserializeHelper,
12071            event: Event<'de>,
12072        ) -> DeserializerResult<'de, super::AttributeType> {
12073            helper.init_deserializer_from_start_event(
12074                event,
12075                AttributeTypeDeserializer::from_bytes_start,
12076            )
12077        }
12078        fn next(
12079            mut self,
12080            helper: &mut DeserializeHelper,
12081            event: Event<'de>,
12082        ) -> DeserializerResult<'de, super::AttributeType> {
12083            use AttributeTypeDeserializerState as S;
12084            let mut event = event;
12085            let mut fallback = None;
12086            let mut allow_any_element = false;
12087            let (event, allow_any) = loop {
12088                let state = replace(&mut *self.state__, S::Unknown__);
12089                event = match (state, event) {
12090                    (S::Unknown__, _) => unreachable!(),
12091                    (S::Annotation(Some(deserializer)), event) => {
12092                        let output = deserializer.next(helper, event)?;
12093                        match self.handle_annotation(helper, output, &mut fallback)? {
12094                            ElementHandlerOutput::Continue { event, allow_any } => {
12095                                allow_any_element = allow_any_element || allow_any;
12096                                event
12097                            }
12098                            ElementHandlerOutput::Break { event, allow_any } => {
12099                                break (event, allow_any)
12100                            }
12101                        }
12102                    }
12103                    (S::SimpleType(Some(deserializer)), event) => {
12104                        let output = deserializer.next(helper, event)?;
12105                        match self.handle_simple_type(helper, output, &mut fallback)? {
12106                            ElementHandlerOutput::Continue { event, allow_any } => {
12107                                allow_any_element = allow_any_element || allow_any;
12108                                event
12109                            }
12110                            ElementHandlerOutput::Break { event, allow_any } => {
12111                                break (event, allow_any)
12112                            }
12113                        }
12114                    }
12115                    (_, Event::End(_)) => {
12116                        if let Some(fallback) = fallback.take() {
12117                            self.finish_state(helper, fallback)?;
12118                        }
12119                        return Ok(DeserializerOutput {
12120                            artifact: DeserializerArtifact::Data(self.finish(helper)?),
12121                            event: DeserializerEvent::None,
12122                            allow_any: false,
12123                        });
12124                    }
12125                    (S::Init__, event) => {
12126                        fallback.get_or_insert(S::Init__);
12127                        *self.state__ = AttributeTypeDeserializerState::Annotation(None);
12128                        event
12129                    }
12130                    (S::Annotation(None), event @ (Event::Start(_) | Event::Empty(_))) => {
12131                        let output = helper.init_start_tag_deserializer(
12132                            event,
12133                            Some(&super::NS_XS),
12134                            b"annotation",
12135                            false,
12136                        )?;
12137                        match self.handle_annotation(helper, output, &mut fallback)? {
12138                            ElementHandlerOutput::Continue { event, allow_any } => {
12139                                allow_any_element = allow_any_element || allow_any;
12140                                event
12141                            }
12142                            ElementHandlerOutput::Break { event, allow_any } => {
12143                                break (event, allow_any)
12144                            }
12145                        }
12146                    }
12147                    (S::SimpleType(None), event @ (Event::Start(_) | Event::Empty(_))) => {
12148                        let output = helper.init_start_tag_deserializer(
12149                            event,
12150                            Some(&super::NS_XS),
12151                            b"simpleType",
12152                            true,
12153                        )?;
12154                        match self.handle_simple_type(helper, output, &mut fallback)? {
12155                            ElementHandlerOutput::Continue { event, allow_any } => {
12156                                allow_any_element = allow_any_element || allow_any;
12157                                event
12158                            }
12159                            ElementHandlerOutput::Break { event, allow_any } => {
12160                                break (event, allow_any)
12161                            }
12162                        }
12163                    }
12164                    (S::Done__, event) => {
12165                        fallback.get_or_insert(S::Done__);
12166                        break (DeserializerEvent::Continue(event), allow_any_element);
12167                    }
12168                    (state, event) => {
12169                        *self.state__ = state;
12170                        break (DeserializerEvent::Break(event), false);
12171                    }
12172                }
12173            };
12174            if let Some(fallback) = fallback {
12175                *self.state__ = fallback;
12176            }
12177            Ok(DeserializerOutput {
12178                artifact: DeserializerArtifact::Deserializer(self),
12179                event,
12180                allow_any,
12181            })
12182        }
12183        fn finish(mut self, helper: &mut DeserializeHelper) -> Result<super::AttributeType, Error> {
12184            let state = replace(
12185                &mut *self.state__,
12186                AttributeTypeDeserializerState::Unknown__,
12187            );
12188            self.finish_state(helper, state)?;
12189            Ok(super::AttributeType {
12190                id: self.id,
12191                name: self.name,
12192                ref_: self.ref_,
12193                type_: self.type_,
12194                use_: self.use_,
12195                default: self.default,
12196                fixed: self.fixed,
12197                form: self.form,
12198                target_namespace: self.target_namespace,
12199                inheritable: self.inheritable,
12200                annotation: self.annotation,
12201                simple_type: self.simple_type,
12202            })
12203        }
12204    }
12205    #[derive(Debug)]
12206    pub struct NotationDeserializer {
12207        id: Option<String>,
12208        name: String,
12209        public: Option<String>,
12210        system: Option<String>,
12211        annotation: Option<super::Annotation>,
12212        state__: Box<NotationDeserializerState>,
12213    }
12214    #[derive(Debug)]
12215    enum NotationDeserializerState {
12216        Init__,
12217        Annotation(Option<<super::Annotation as WithDeserializer>::Deserializer>),
12218        Done__,
12219        Unknown__,
12220    }
12221    impl NotationDeserializer {
12222        fn from_bytes_start(
12223            helper: &mut DeserializeHelper,
12224            bytes_start: &BytesStart<'_>,
12225        ) -> Result<Box<Self>, Error> {
12226            let mut id: Option<String> = None;
12227            let mut name: Option<String> = None;
12228            let mut public: Option<String> = None;
12229            let mut system: Option<String> = None;
12230            for attrib in helper.filter_xmlns_attributes(bytes_start) {
12231                let attrib = attrib?;
12232                if matches!(
12233                    helper.resolve_local_name(attrib.key, &super::NS_XS),
12234                    Some(b"id")
12235                ) {
12236                    helper.read_attrib(&mut id, b"id", &attrib.value)?;
12237                } else if matches!(
12238                    helper.resolve_local_name(attrib.key, &super::NS_XS),
12239                    Some(b"name")
12240                ) {
12241                    helper.read_attrib(&mut name, b"name", &attrib.value)?;
12242                } else if matches!(
12243                    helper.resolve_local_name(attrib.key, &super::NS_XS),
12244                    Some(b"public")
12245                ) {
12246                    helper.read_attrib(&mut public, b"public", &attrib.value)?;
12247                } else if matches!(
12248                    helper.resolve_local_name(attrib.key, &super::NS_XS),
12249                    Some(b"system")
12250                ) {
12251                    helper.read_attrib(&mut system, b"system", &attrib.value)?;
12252                }
12253            }
12254            Ok(Box::new(Self {
12255                id: id,
12256                name: name.ok_or_else(|| ErrorKind::MissingAttribute("name".into()))?,
12257                public: public,
12258                system: system,
12259                annotation: None,
12260                state__: Box::new(NotationDeserializerState::Init__),
12261            }))
12262        }
12263        fn finish_state(
12264            &mut self,
12265            helper: &mut DeserializeHelper,
12266            state: NotationDeserializerState,
12267        ) -> Result<(), Error> {
12268            use NotationDeserializerState as S;
12269            match state {
12270                S::Annotation(Some(deserializer)) => {
12271                    self.store_annotation(deserializer.finish(helper)?)?
12272                }
12273                _ => (),
12274            }
12275            Ok(())
12276        }
12277        fn store_annotation(&mut self, value: super::Annotation) -> Result<(), Error> {
12278            if self.annotation.is_some() {
12279                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
12280                    b"annotation",
12281                )))?;
12282            }
12283            self.annotation = Some(value);
12284            Ok(())
12285        }
12286        fn handle_annotation<'de>(
12287            &mut self,
12288            helper: &mut DeserializeHelper,
12289            output: DeserializerOutput<'de, super::Annotation>,
12290            fallback: &mut Option<NotationDeserializerState>,
12291        ) -> Result<ElementHandlerOutput<'de>, Error> {
12292            let DeserializerOutput {
12293                artifact,
12294                event,
12295                allow_any,
12296            } = output;
12297            if artifact.is_none() {
12298                fallback.get_or_insert(NotationDeserializerState::Annotation(None));
12299                *self.state__ = NotationDeserializerState::Done__;
12300                return Ok(ElementHandlerOutput::from_event(event, allow_any));
12301            }
12302            if let Some(fallback) = fallback.take() {
12303                self.finish_state(helper, fallback)?;
12304            }
12305            Ok(match artifact {
12306                DeserializerArtifact::None => unreachable!(),
12307                DeserializerArtifact::Data(data) => {
12308                    self.store_annotation(data)?;
12309                    *self.state__ = NotationDeserializerState::Done__;
12310                    ElementHandlerOutput::from_event(event, allow_any)
12311                }
12312                DeserializerArtifact::Deserializer(deserializer) => {
12313                    let ret = ElementHandlerOutput::from_event(event, allow_any);
12314                    match &ret {
12315                        ElementHandlerOutput::Continue { .. } => {
12316                            fallback.get_or_insert(NotationDeserializerState::Annotation(Some(
12317                                deserializer,
12318                            )));
12319                            *self.state__ = NotationDeserializerState::Done__;
12320                        }
12321                        ElementHandlerOutput::Break { .. } => {
12322                            *self.state__ =
12323                                NotationDeserializerState::Annotation(Some(deserializer));
12324                        }
12325                    }
12326                    ret
12327                }
12328            })
12329        }
12330    }
12331    impl<'de> Deserializer<'de, super::Notation> for Box<NotationDeserializer> {
12332        fn init(
12333            helper: &mut DeserializeHelper,
12334            event: Event<'de>,
12335        ) -> DeserializerResult<'de, super::Notation> {
12336            helper.init_deserializer_from_start_event(event, NotationDeserializer::from_bytes_start)
12337        }
12338        fn next(
12339            mut self,
12340            helper: &mut DeserializeHelper,
12341            event: Event<'de>,
12342        ) -> DeserializerResult<'de, super::Notation> {
12343            use NotationDeserializerState as S;
12344            let mut event = event;
12345            let mut fallback = None;
12346            let mut allow_any_element = false;
12347            let (event, allow_any) = loop {
12348                let state = replace(&mut *self.state__, S::Unknown__);
12349                event = match (state, event) {
12350                    (S::Unknown__, _) => unreachable!(),
12351                    (S::Annotation(Some(deserializer)), event) => {
12352                        let output = deserializer.next(helper, event)?;
12353                        match self.handle_annotation(helper, output, &mut fallback)? {
12354                            ElementHandlerOutput::Continue { event, allow_any } => {
12355                                allow_any_element = allow_any_element || allow_any;
12356                                event
12357                            }
12358                            ElementHandlerOutput::Break { event, allow_any } => {
12359                                break (event, allow_any)
12360                            }
12361                        }
12362                    }
12363                    (_, Event::End(_)) => {
12364                        if let Some(fallback) = fallback.take() {
12365                            self.finish_state(helper, fallback)?;
12366                        }
12367                        return Ok(DeserializerOutput {
12368                            artifact: DeserializerArtifact::Data(self.finish(helper)?),
12369                            event: DeserializerEvent::None,
12370                            allow_any: false,
12371                        });
12372                    }
12373                    (S::Init__, event) => {
12374                        fallback.get_or_insert(S::Init__);
12375                        *self.state__ = NotationDeserializerState::Annotation(None);
12376                        event
12377                    }
12378                    (S::Annotation(None), event @ (Event::Start(_) | Event::Empty(_))) => {
12379                        let output = helper.init_start_tag_deserializer(
12380                            event,
12381                            Some(&super::NS_XS),
12382                            b"annotation",
12383                            false,
12384                        )?;
12385                        match self.handle_annotation(helper, output, &mut fallback)? {
12386                            ElementHandlerOutput::Continue { event, allow_any } => {
12387                                allow_any_element = allow_any_element || allow_any;
12388                                event
12389                            }
12390                            ElementHandlerOutput::Break { event, allow_any } => {
12391                                break (event, allow_any)
12392                            }
12393                        }
12394                    }
12395                    (S::Done__, event) => {
12396                        fallback.get_or_insert(S::Done__);
12397                        break (DeserializerEvent::Continue(event), allow_any_element);
12398                    }
12399                    (state, event) => {
12400                        *self.state__ = state;
12401                        break (DeserializerEvent::Break(event), false);
12402                    }
12403                }
12404            };
12405            if let Some(fallback) = fallback {
12406                *self.state__ = fallback;
12407            }
12408            Ok(DeserializerOutput {
12409                artifact: DeserializerArtifact::Deserializer(self),
12410                event,
12411                allow_any,
12412            })
12413        }
12414        fn finish(mut self, helper: &mut DeserializeHelper) -> Result<super::Notation, Error> {
12415            let state = replace(&mut *self.state__, NotationDeserializerState::Unknown__);
12416            self.finish_state(helper, state)?;
12417            Ok(super::Notation {
12418                id: self.id,
12419                name: self.name,
12420                public: self.public,
12421                system: self.system,
12422                annotation: self.annotation,
12423            })
12424        }
12425    }
12426    #[derive(Debug)]
12427    pub struct WildcardTypeDeserializer {
12428        id: Option<String>,
12429        namespace: Option<super::NamespaceListType>,
12430        not_namespace: Option<super::NotNamespaceType>,
12431        process_contents: super::ProcessContentsType,
12432        annotation: Option<super::Annotation>,
12433        state__: Box<WildcardTypeDeserializerState>,
12434    }
12435    #[derive(Debug)]
12436    enum WildcardTypeDeserializerState {
12437        Init__,
12438        Annotation(Option<<super::Annotation as WithDeserializer>::Deserializer>),
12439        Done__,
12440        Unknown__,
12441    }
12442    impl WildcardTypeDeserializer {
12443        fn from_bytes_start(
12444            helper: &mut DeserializeHelper,
12445            bytes_start: &BytesStart<'_>,
12446        ) -> Result<Box<Self>, Error> {
12447            let mut id: Option<String> = None;
12448            let mut namespace: Option<super::NamespaceListType> = None;
12449            let mut not_namespace: Option<super::NotNamespaceType> = None;
12450            let mut process_contents: Option<super::ProcessContentsType> = None;
12451            for attrib in helper.filter_xmlns_attributes(bytes_start) {
12452                let attrib = attrib?;
12453                if matches!(
12454                    helper.resolve_local_name(attrib.key, &super::NS_XS),
12455                    Some(b"id")
12456                ) {
12457                    helper.read_attrib(&mut id, b"id", &attrib.value)?;
12458                } else if matches!(
12459                    helper.resolve_local_name(attrib.key, &super::NS_XS),
12460                    Some(b"namespace")
12461                ) {
12462                    helper.read_attrib(&mut namespace, b"namespace", &attrib.value)?;
12463                } else if matches!(
12464                    helper.resolve_local_name(attrib.key, &super::NS_XS),
12465                    Some(b"notNamespace")
12466                ) {
12467                    helper.read_attrib(&mut not_namespace, b"notNamespace", &attrib.value)?;
12468                } else if matches!(
12469                    helper.resolve_local_name(attrib.key, &super::NS_XS),
12470                    Some(b"processContents")
12471                ) {
12472                    helper.read_attrib(&mut process_contents, b"processContents", &attrib.value)?;
12473                }
12474            }
12475            Ok(Box::new(Self {
12476                id: id,
12477                namespace: namespace,
12478                not_namespace: not_namespace,
12479                process_contents: process_contents
12480                    .unwrap_or_else(super::WildcardType::default_process_contents),
12481                annotation: None,
12482                state__: Box::new(WildcardTypeDeserializerState::Init__),
12483            }))
12484        }
12485        fn finish_state(
12486            &mut self,
12487            helper: &mut DeserializeHelper,
12488            state: WildcardTypeDeserializerState,
12489        ) -> Result<(), Error> {
12490            use WildcardTypeDeserializerState as S;
12491            match state {
12492                S::Annotation(Some(deserializer)) => {
12493                    self.store_annotation(deserializer.finish(helper)?)?
12494                }
12495                _ => (),
12496            }
12497            Ok(())
12498        }
12499        fn store_annotation(&mut self, value: super::Annotation) -> Result<(), Error> {
12500            if self.annotation.is_some() {
12501                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
12502                    b"annotation",
12503                )))?;
12504            }
12505            self.annotation = Some(value);
12506            Ok(())
12507        }
12508        fn handle_annotation<'de>(
12509            &mut self,
12510            helper: &mut DeserializeHelper,
12511            output: DeserializerOutput<'de, super::Annotation>,
12512            fallback: &mut Option<WildcardTypeDeserializerState>,
12513        ) -> Result<ElementHandlerOutput<'de>, Error> {
12514            let DeserializerOutput {
12515                artifact,
12516                event,
12517                allow_any,
12518            } = output;
12519            if artifact.is_none() {
12520                fallback.get_or_insert(WildcardTypeDeserializerState::Annotation(None));
12521                *self.state__ = WildcardTypeDeserializerState::Done__;
12522                return Ok(ElementHandlerOutput::from_event(event, allow_any));
12523            }
12524            if let Some(fallback) = fallback.take() {
12525                self.finish_state(helper, fallback)?;
12526            }
12527            Ok(match artifact {
12528                DeserializerArtifact::None => unreachable!(),
12529                DeserializerArtifact::Data(data) => {
12530                    self.store_annotation(data)?;
12531                    *self.state__ = WildcardTypeDeserializerState::Done__;
12532                    ElementHandlerOutput::from_event(event, allow_any)
12533                }
12534                DeserializerArtifact::Deserializer(deserializer) => {
12535                    let ret = ElementHandlerOutput::from_event(event, allow_any);
12536                    match &ret {
12537                        ElementHandlerOutput::Continue { .. } => {
12538                            fallback.get_or_insert(WildcardTypeDeserializerState::Annotation(
12539                                Some(deserializer),
12540                            ));
12541                            *self.state__ = WildcardTypeDeserializerState::Done__;
12542                        }
12543                        ElementHandlerOutput::Break { .. } => {
12544                            *self.state__ =
12545                                WildcardTypeDeserializerState::Annotation(Some(deserializer));
12546                        }
12547                    }
12548                    ret
12549                }
12550            })
12551        }
12552    }
12553    impl<'de> Deserializer<'de, super::WildcardType> for Box<WildcardTypeDeserializer> {
12554        fn init(
12555            helper: &mut DeserializeHelper,
12556            event: Event<'de>,
12557        ) -> DeserializerResult<'de, super::WildcardType> {
12558            helper.init_deserializer_from_start_event(
12559                event,
12560                WildcardTypeDeserializer::from_bytes_start,
12561            )
12562        }
12563        fn next(
12564            mut self,
12565            helper: &mut DeserializeHelper,
12566            event: Event<'de>,
12567        ) -> DeserializerResult<'de, super::WildcardType> {
12568            use WildcardTypeDeserializerState as S;
12569            let mut event = event;
12570            let mut fallback = None;
12571            let mut allow_any_element = false;
12572            let (event, allow_any) = loop {
12573                let state = replace(&mut *self.state__, S::Unknown__);
12574                event = match (state, event) {
12575                    (S::Unknown__, _) => unreachable!(),
12576                    (S::Annotation(Some(deserializer)), event) => {
12577                        let output = deserializer.next(helper, event)?;
12578                        match self.handle_annotation(helper, output, &mut fallback)? {
12579                            ElementHandlerOutput::Continue { event, allow_any } => {
12580                                allow_any_element = allow_any_element || allow_any;
12581                                event
12582                            }
12583                            ElementHandlerOutput::Break { event, allow_any } => {
12584                                break (event, allow_any)
12585                            }
12586                        }
12587                    }
12588                    (_, Event::End(_)) => {
12589                        if let Some(fallback) = fallback.take() {
12590                            self.finish_state(helper, fallback)?;
12591                        }
12592                        return Ok(DeserializerOutput {
12593                            artifact: DeserializerArtifact::Data(self.finish(helper)?),
12594                            event: DeserializerEvent::None,
12595                            allow_any: false,
12596                        });
12597                    }
12598                    (S::Init__, event) => {
12599                        fallback.get_or_insert(S::Init__);
12600                        *self.state__ = WildcardTypeDeserializerState::Annotation(None);
12601                        event
12602                    }
12603                    (S::Annotation(None), event @ (Event::Start(_) | Event::Empty(_))) => {
12604                        let output = helper.init_start_tag_deserializer(
12605                            event,
12606                            Some(&super::NS_XS),
12607                            b"annotation",
12608                            false,
12609                        )?;
12610                        match self.handle_annotation(helper, output, &mut fallback)? {
12611                            ElementHandlerOutput::Continue { event, allow_any } => {
12612                                allow_any_element = allow_any_element || allow_any;
12613                                event
12614                            }
12615                            ElementHandlerOutput::Break { event, allow_any } => {
12616                                break (event, allow_any)
12617                            }
12618                        }
12619                    }
12620                    (S::Done__, event) => {
12621                        fallback.get_or_insert(S::Done__);
12622                        break (DeserializerEvent::Continue(event), allow_any_element);
12623                    }
12624                    (state, event) => {
12625                        *self.state__ = state;
12626                        break (DeserializerEvent::Break(event), false);
12627                    }
12628                }
12629            };
12630            if let Some(fallback) = fallback {
12631                *self.state__ = fallback;
12632            }
12633            Ok(DeserializerOutput {
12634                artifact: DeserializerArtifact::Deserializer(self),
12635                event,
12636                allow_any,
12637            })
12638        }
12639        fn finish(mut self, helper: &mut DeserializeHelper) -> Result<super::WildcardType, Error> {
12640            let state = replace(&mut *self.state__, WildcardTypeDeserializerState::Unknown__);
12641            self.finish_state(helper, state)?;
12642            Ok(super::WildcardType {
12643                id: self.id,
12644                namespace: self.namespace,
12645                not_namespace: self.not_namespace,
12646                process_contents: self.process_contents,
12647                annotation: self.annotation,
12648            })
12649        }
12650    }
12651    #[derive(Debug)]
12652    pub struct RestrictionDeserializer {
12653        id: Option<String>,
12654        base: Option<QName>,
12655        content: Vec<super::RestrictionContent>,
12656        state__: Box<RestrictionDeserializerState>,
12657    }
12658    #[derive(Debug)]
12659    enum RestrictionDeserializerState {
12660        Init__,
12661        Next__,
12662        Content__(<super::RestrictionContent as WithDeserializer>::Deserializer),
12663        Unknown__,
12664    }
12665    impl RestrictionDeserializer {
12666        fn from_bytes_start(
12667            helper: &mut DeserializeHelper,
12668            bytes_start: &BytesStart<'_>,
12669        ) -> Result<Box<Self>, Error> {
12670            let mut id: Option<String> = None;
12671            let mut base: Option<QName> = None;
12672            for attrib in helper.filter_xmlns_attributes(bytes_start) {
12673                let attrib = attrib?;
12674                if matches!(
12675                    helper.resolve_local_name(attrib.key, &super::NS_XS),
12676                    Some(b"id")
12677                ) {
12678                    helper.read_attrib(&mut id, b"id", &attrib.value)?;
12679                } else if matches!(
12680                    helper.resolve_local_name(attrib.key, &super::NS_XS),
12681                    Some(b"base")
12682                ) {
12683                    helper.read_attrib(&mut base, b"base", &attrib.value)?;
12684                }
12685            }
12686            Ok(Box::new(Self {
12687                id: id,
12688                base: base,
12689                content: Vec::new(),
12690                state__: Box::new(RestrictionDeserializerState::Init__),
12691            }))
12692        }
12693        fn finish_state(
12694            &mut self,
12695            helper: &mut DeserializeHelper,
12696            state: RestrictionDeserializerState,
12697        ) -> Result<(), Error> {
12698            if let RestrictionDeserializerState::Content__(deserializer) = state {
12699                self.store_content(deserializer.finish(helper)?)?;
12700            }
12701            Ok(())
12702        }
12703        fn store_content(&mut self, value: super::RestrictionContent) -> Result<(), Error> {
12704            self.content.push(value);
12705            Ok(())
12706        }
12707        fn handle_content<'de>(
12708            &mut self,
12709            helper: &mut DeserializeHelper,
12710            output: DeserializerOutput<'de, super::RestrictionContent>,
12711            fallback: &mut Option<RestrictionDeserializerState>,
12712        ) -> Result<ElementHandlerOutput<'de>, Error> {
12713            let DeserializerOutput {
12714                artifact,
12715                event,
12716                allow_any,
12717            } = output;
12718            if artifact.is_none() {
12719                *self.state__ = fallback
12720                    .take()
12721                    .unwrap_or(RestrictionDeserializerState::Next__);
12722                return Ok(ElementHandlerOutput::break_(event, allow_any));
12723            }
12724            if let Some(fallback) = fallback.take() {
12725                self.finish_state(helper, fallback)?;
12726            }
12727            Ok(match artifact {
12728                DeserializerArtifact::None => unreachable!(),
12729                DeserializerArtifact::Data(data) => {
12730                    self.store_content(data)?;
12731                    *self.state__ = RestrictionDeserializerState::Next__;
12732                    ElementHandlerOutput::from_event(event, allow_any)
12733                }
12734                DeserializerArtifact::Deserializer(deserializer) => {
12735                    let ret = ElementHandlerOutput::from_event(event, allow_any);
12736                    match &ret {
12737                        ElementHandlerOutput::Break { .. } => {
12738                            *self.state__ = RestrictionDeserializerState::Content__(deserializer);
12739                        }
12740                        ElementHandlerOutput::Continue { .. } => {
12741                            fallback.get_or_insert(RestrictionDeserializerState::Content__(
12742                                deserializer,
12743                            ));
12744                            *self.state__ = RestrictionDeserializerState::Next__;
12745                        }
12746                    }
12747                    ret
12748                }
12749            })
12750        }
12751    }
12752    impl<'de> Deserializer<'de, super::Restriction> for Box<RestrictionDeserializer> {
12753        fn init(
12754            helper: &mut DeserializeHelper,
12755            event: Event<'de>,
12756        ) -> DeserializerResult<'de, super::Restriction> {
12757            helper.init_deserializer_from_start_event(
12758                event,
12759                RestrictionDeserializer::from_bytes_start,
12760            )
12761        }
12762        fn next(
12763            mut self,
12764            helper: &mut DeserializeHelper,
12765            event: Event<'de>,
12766        ) -> DeserializerResult<'de, super::Restriction> {
12767            use RestrictionDeserializerState as S;
12768            let mut event = event;
12769            let mut fallback = None;
12770            let (event, allow_any) = loop {
12771                let state = replace(&mut *self.state__, S::Unknown__);
12772                event = match (state, event) {
12773                    (S::Unknown__, _) => unreachable!(),
12774                    (S::Content__(deserializer), event) => {
12775                        let output = deserializer.next(helper, event)?;
12776                        match self.handle_content(helper, output, &mut fallback)? {
12777                            ElementHandlerOutput::Break { event, allow_any } => {
12778                                break (event, allow_any)
12779                            }
12780                            ElementHandlerOutput::Continue { event, .. } => event,
12781                        }
12782                    }
12783                    (_, Event::End(_)) => {
12784                        return Ok(DeserializerOutput {
12785                            artifact: DeserializerArtifact::Data(self.finish(helper)?),
12786                            event: DeserializerEvent::None,
12787                            allow_any: false,
12788                        });
12789                    }
12790                    (state @ (S::Init__ | S::Next__), event) => {
12791                        fallback.get_or_insert(state);
12792                        let output =
12793                            <super::RestrictionContent as WithDeserializer>::Deserializer::init(
12794                                helper, event,
12795                            )?;
12796                        match self.handle_content(helper, output, &mut fallback)? {
12797                            ElementHandlerOutput::Break { event, allow_any } => {
12798                                break (event, allow_any)
12799                            }
12800                            ElementHandlerOutput::Continue { event, .. } => event,
12801                        }
12802                    }
12803                }
12804            };
12805            let artifact = DeserializerArtifact::Deserializer(self);
12806            Ok(DeserializerOutput {
12807                artifact,
12808                event,
12809                allow_any,
12810            })
12811        }
12812        fn finish(mut self, helper: &mut DeserializeHelper) -> Result<super::Restriction, Error> {
12813            let state = replace(&mut *self.state__, RestrictionDeserializerState::Unknown__);
12814            self.finish_state(helper, state)?;
12815            Ok(super::Restriction {
12816                id: self.id,
12817                base: self.base,
12818                content: self.content,
12819            })
12820        }
12821    }
12822    #[derive(Debug)]
12823    pub struct RestrictionContentDeserializer {
12824        state__: Box<RestrictionContentDeserializerState>,
12825    }
12826    #[derive(Debug)]
12827    pub enum RestrictionContentDeserializerState {
12828        Init__,
12829        Annotation(
12830            Option<super::Annotation>,
12831            Option<<super::Annotation as WithDeserializer>::Deserializer>,
12832        ),
12833        SimpleType(
12834            Option<super::SimpleBaseType>,
12835            Option<<super::SimpleBaseType as WithDeserializer>::Deserializer>,
12836        ),
12837        Facet(
12838            Option<super::Facet>,
12839            Option<<super::Facet as WithDeserializer>::Deserializer>,
12840        ),
12841        Done__(super::RestrictionContent),
12842        Unknown__,
12843    }
12844    impl RestrictionContentDeserializer {
12845        fn find_suitable<'de>(
12846            &mut self,
12847            helper: &mut DeserializeHelper,
12848            event: Event<'de>,
12849            fallback: &mut Option<RestrictionContentDeserializerState>,
12850        ) -> Result<ElementHandlerOutput<'de>, Error> {
12851            let mut event = event;
12852            if let Event::Start(x) | Event::Empty(x) = &event {
12853                if matches!(
12854                    helper.resolve_local_name(x.name(), &super::NS_XS),
12855                    Some(b"annotation")
12856                ) {
12857                    let output =
12858                        <super::Annotation as WithDeserializer>::Deserializer::init(helper, event)?;
12859                    return self.handle_annotation(
12860                        helper,
12861                        Default::default(),
12862                        output,
12863                        &mut *fallback,
12864                    );
12865                }
12866                if matches!(
12867                    helper.resolve_local_name(x.name(), &super::NS_XS),
12868                    Some(b"simpleType")
12869                ) {
12870                    let output = <super::SimpleBaseType as WithDeserializer>::Deserializer::init(
12871                        helper, event,
12872                    )?;
12873                    return self.handle_simple_type(
12874                        helper,
12875                        Default::default(),
12876                        output,
12877                        &mut *fallback,
12878                    );
12879                }
12880                event = {
12881                    let output =
12882                        <super::Facet as WithDeserializer>::Deserializer::init(helper, event)?;
12883                    match self.handle_facet(helper, Default::default(), output, &mut *fallback)? {
12884                        ElementHandlerOutput::Continue { event, .. } => event,
12885                        output => {
12886                            return Ok(output);
12887                        }
12888                    }
12889                };
12890            }
12891            *self.state__ = fallback
12892                .take()
12893                .unwrap_or(RestrictionContentDeserializerState::Init__);
12894            Ok(ElementHandlerOutput::return_to_parent(event, true))
12895        }
12896        fn finish_state(
12897            helper: &mut DeserializeHelper,
12898            state: RestrictionContentDeserializerState,
12899        ) -> Result<super::RestrictionContent, Error> {
12900            use RestrictionContentDeserializerState as S;
12901            match state {
12902                S::Unknown__ => unreachable!(),
12903                S::Init__ => Err(ErrorKind::MissingContent.into()),
12904                S::Annotation(mut values, deserializer) => {
12905                    if let Some(deserializer) = deserializer {
12906                        let value = deserializer.finish(helper)?;
12907                        RestrictionContentDeserializer::store_annotation(&mut values, value)?;
12908                    }
12909                    Ok(super::RestrictionContent::Annotation(values.ok_or_else(
12910                        || ErrorKind::MissingElement("annotation".into()),
12911                    )?))
12912                }
12913                S::SimpleType(mut values, deserializer) => {
12914                    if let Some(deserializer) = deserializer {
12915                        let value = deserializer.finish(helper)?;
12916                        RestrictionContentDeserializer::store_simple_type(&mut values, value)?;
12917                    }
12918                    Ok(super::RestrictionContent::SimpleType(values.ok_or_else(
12919                        || ErrorKind::MissingElement("simpleType".into()),
12920                    )?))
12921                }
12922                S::Facet(mut values, deserializer) => {
12923                    if let Some(deserializer) = deserializer {
12924                        let value = deserializer.finish(helper)?;
12925                        RestrictionContentDeserializer::store_facet(&mut values, value)?;
12926                    }
12927                    Ok(super::RestrictionContent::Facet(values.ok_or_else(
12928                        || ErrorKind::MissingElement("facet".into()),
12929                    )?))
12930                }
12931                S::Done__(data) => Ok(data),
12932            }
12933        }
12934        fn store_annotation(
12935            values: &mut Option<super::Annotation>,
12936            value: super::Annotation,
12937        ) -> Result<(), Error> {
12938            if values.is_some() {
12939                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
12940                    b"annotation",
12941                )))?;
12942            }
12943            *values = Some(value);
12944            Ok(())
12945        }
12946        fn store_simple_type(
12947            values: &mut Option<super::SimpleBaseType>,
12948            value: super::SimpleBaseType,
12949        ) -> Result<(), Error> {
12950            if values.is_some() {
12951                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
12952                    b"simpleType",
12953                )))?;
12954            }
12955            *values = Some(value);
12956            Ok(())
12957        }
12958        fn store_facet(
12959            values: &mut Option<super::Facet>,
12960            value: super::Facet,
12961        ) -> Result<(), Error> {
12962            if values.is_some() {
12963                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
12964                    b"facet",
12965                )))?;
12966            }
12967            *values = Some(value);
12968            Ok(())
12969        }
12970        fn handle_annotation<'de>(
12971            &mut self,
12972            helper: &mut DeserializeHelper,
12973            mut values: Option<super::Annotation>,
12974            output: DeserializerOutput<'de, super::Annotation>,
12975            fallback: &mut Option<RestrictionContentDeserializerState>,
12976        ) -> Result<ElementHandlerOutput<'de>, Error> {
12977            let DeserializerOutput {
12978                artifact,
12979                event,
12980                allow_any,
12981            } = output;
12982            if artifact.is_none() {
12983                *self.state__ = match fallback.take() {
12984                    None if values.is_none() => {
12985                        *self.state__ = RestrictionContentDeserializerState::Init__;
12986                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
12987                    }
12988                    None => RestrictionContentDeserializerState::Annotation(values, None),
12989                    Some(RestrictionContentDeserializerState::Annotation(
12990                        _,
12991                        Some(deserializer),
12992                    )) => {
12993                        RestrictionContentDeserializerState::Annotation(values, Some(deserializer))
12994                    }
12995                    _ => unreachable!(),
12996                };
12997                return Ok(ElementHandlerOutput::break_(event, allow_any));
12998            }
12999            match fallback.take() {
13000                None => (),
13001                Some(RestrictionContentDeserializerState::Annotation(_, Some(deserializer))) => {
13002                    let data = deserializer.finish(helper)?;
13003                    RestrictionContentDeserializer::store_annotation(&mut values, data)?;
13004                }
13005                Some(_) => unreachable!(),
13006            }
13007            Ok(match artifact {
13008                DeserializerArtifact::None => unreachable!(),
13009                DeserializerArtifact::Data(data) => {
13010                    RestrictionContentDeserializer::store_annotation(&mut values, data)?;
13011                    let data = RestrictionContentDeserializer::finish_state(
13012                        helper,
13013                        RestrictionContentDeserializerState::Annotation(values, None),
13014                    )?;
13015                    *self.state__ = RestrictionContentDeserializerState::Done__(data);
13016                    ElementHandlerOutput::Break { event, allow_any }
13017                }
13018                DeserializerArtifact::Deserializer(deserializer) => {
13019                    *self.state__ =
13020                        RestrictionContentDeserializerState::Annotation(values, Some(deserializer));
13021                    ElementHandlerOutput::from_event_end(event, allow_any)
13022                }
13023            })
13024        }
13025        fn handle_simple_type<'de>(
13026            &mut self,
13027            helper: &mut DeserializeHelper,
13028            mut values: Option<super::SimpleBaseType>,
13029            output: DeserializerOutput<'de, super::SimpleBaseType>,
13030            fallback: &mut Option<RestrictionContentDeserializerState>,
13031        ) -> Result<ElementHandlerOutput<'de>, Error> {
13032            let DeserializerOutput {
13033                artifact,
13034                event,
13035                allow_any,
13036            } = output;
13037            if artifact.is_none() {
13038                *self.state__ = match fallback.take() {
13039                    None if values.is_none() => {
13040                        *self.state__ = RestrictionContentDeserializerState::Init__;
13041                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
13042                    }
13043                    None => RestrictionContentDeserializerState::SimpleType(values, None),
13044                    Some(RestrictionContentDeserializerState::SimpleType(
13045                        _,
13046                        Some(deserializer),
13047                    )) => {
13048                        RestrictionContentDeserializerState::SimpleType(values, Some(deserializer))
13049                    }
13050                    _ => unreachable!(),
13051                };
13052                return Ok(ElementHandlerOutput::break_(event, allow_any));
13053            }
13054            match fallback.take() {
13055                None => (),
13056                Some(RestrictionContentDeserializerState::SimpleType(_, Some(deserializer))) => {
13057                    let data = deserializer.finish(helper)?;
13058                    RestrictionContentDeserializer::store_simple_type(&mut values, data)?;
13059                }
13060                Some(_) => unreachable!(),
13061            }
13062            Ok(match artifact {
13063                DeserializerArtifact::None => unreachable!(),
13064                DeserializerArtifact::Data(data) => {
13065                    RestrictionContentDeserializer::store_simple_type(&mut values, data)?;
13066                    let data = RestrictionContentDeserializer::finish_state(
13067                        helper,
13068                        RestrictionContentDeserializerState::SimpleType(values, None),
13069                    )?;
13070                    *self.state__ = RestrictionContentDeserializerState::Done__(data);
13071                    ElementHandlerOutput::Break { event, allow_any }
13072                }
13073                DeserializerArtifact::Deserializer(deserializer) => {
13074                    *self.state__ =
13075                        RestrictionContentDeserializerState::SimpleType(values, Some(deserializer));
13076                    ElementHandlerOutput::from_event_end(event, allow_any)
13077                }
13078            })
13079        }
13080        fn handle_facet<'de>(
13081            &mut self,
13082            helper: &mut DeserializeHelper,
13083            mut values: Option<super::Facet>,
13084            output: DeserializerOutput<'de, super::Facet>,
13085            fallback: &mut Option<RestrictionContentDeserializerState>,
13086        ) -> Result<ElementHandlerOutput<'de>, Error> {
13087            let DeserializerOutput {
13088                artifact,
13089                event,
13090                allow_any,
13091            } = output;
13092            if artifact.is_none() {
13093                *self.state__ = match fallback.take() {
13094                    None if values.is_none() => {
13095                        *self.state__ = RestrictionContentDeserializerState::Init__;
13096                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
13097                    }
13098                    None => RestrictionContentDeserializerState::Facet(values, None),
13099                    Some(RestrictionContentDeserializerState::Facet(_, Some(deserializer))) => {
13100                        RestrictionContentDeserializerState::Facet(values, Some(deserializer))
13101                    }
13102                    _ => unreachable!(),
13103                };
13104                return Ok(ElementHandlerOutput::break_(event, allow_any));
13105            }
13106            match fallback.take() {
13107                None => (),
13108                Some(RestrictionContentDeserializerState::Facet(_, Some(deserializer))) => {
13109                    let data = deserializer.finish(helper)?;
13110                    RestrictionContentDeserializer::store_facet(&mut values, data)?;
13111                }
13112                Some(_) => unreachable!(),
13113            }
13114            Ok(match artifact {
13115                DeserializerArtifact::None => unreachable!(),
13116                DeserializerArtifact::Data(data) => {
13117                    RestrictionContentDeserializer::store_facet(&mut values, data)?;
13118                    let data = RestrictionContentDeserializer::finish_state(
13119                        helper,
13120                        RestrictionContentDeserializerState::Facet(values, None),
13121                    )?;
13122                    *self.state__ = RestrictionContentDeserializerState::Done__(data);
13123                    ElementHandlerOutput::Break { event, allow_any }
13124                }
13125                DeserializerArtifact::Deserializer(deserializer) => {
13126                    *self.state__ =
13127                        RestrictionContentDeserializerState::Facet(values, Some(deserializer));
13128                    ElementHandlerOutput::from_event_end(event, allow_any)
13129                }
13130            })
13131        }
13132    }
13133    impl<'de> Deserializer<'de, super::RestrictionContent> for Box<RestrictionContentDeserializer> {
13134        fn init(
13135            helper: &mut DeserializeHelper,
13136            event: Event<'de>,
13137        ) -> DeserializerResult<'de, super::RestrictionContent> {
13138            let deserializer = Box::new(RestrictionContentDeserializer {
13139                state__: Box::new(RestrictionContentDeserializerState::Init__),
13140            });
13141            let mut output = deserializer.next(helper, event)?;
13142            output.artifact = match output.artifact {
13143                DeserializerArtifact::Deserializer(x)
13144                    if matches!(&*x.state__, RestrictionContentDeserializerState::Init__) =>
13145                {
13146                    DeserializerArtifact::None
13147                }
13148                artifact => artifact,
13149            };
13150            Ok(output)
13151        }
13152        fn next(
13153            mut self,
13154            helper: &mut DeserializeHelper,
13155            event: Event<'de>,
13156        ) -> DeserializerResult<'de, super::RestrictionContent> {
13157            use RestrictionContentDeserializerState as S;
13158            let mut event = event;
13159            let mut fallback = None;
13160            let (event, allow_any) = loop {
13161                let state = replace(&mut *self.state__, S::Unknown__);
13162                event = match (state, event) {
13163                    (S::Unknown__, _) => unreachable!(),
13164                    (S::Annotation(values, Some(deserializer)), event) => {
13165                        let output = deserializer.next(helper, event)?;
13166                        match self.handle_annotation(helper, values, output, &mut fallback)? {
13167                            ElementHandlerOutput::Break { event, allow_any } => {
13168                                break (event, allow_any)
13169                            }
13170                            ElementHandlerOutput::Continue { event, .. } => event,
13171                        }
13172                    }
13173                    (S::SimpleType(values, Some(deserializer)), event) => {
13174                        let output = deserializer.next(helper, event)?;
13175                        match self.handle_simple_type(helper, values, output, &mut fallback)? {
13176                            ElementHandlerOutput::Break { event, allow_any } => {
13177                                break (event, allow_any)
13178                            }
13179                            ElementHandlerOutput::Continue { event, .. } => event,
13180                        }
13181                    }
13182                    (S::Facet(values, Some(deserializer)), event) => {
13183                        let output = deserializer.next(helper, event)?;
13184                        match self.handle_facet(helper, values, output, &mut fallback)? {
13185                            ElementHandlerOutput::Break { event, allow_any } => {
13186                                break (event, allow_any)
13187                            }
13188                            ElementHandlerOutput::Continue { event, .. } => event,
13189                        }
13190                    }
13191                    (state, event @ Event::End(_)) => {
13192                        return Ok(DeserializerOutput {
13193                            artifact: DeserializerArtifact::Data(
13194                                RestrictionContentDeserializer::finish_state(helper, state)?,
13195                            ),
13196                            event: DeserializerEvent::Continue(event),
13197                            allow_any: false,
13198                        });
13199                    }
13200                    (S::Init__, event) => match self.find_suitable(helper, event, &mut fallback)? {
13201                        ElementHandlerOutput::Break { event, allow_any } => {
13202                            break (event, allow_any)
13203                        }
13204                        ElementHandlerOutput::Continue { event, .. } => event,
13205                    },
13206                    (S::Annotation(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
13207                        let output = helper.init_start_tag_deserializer(
13208                            event,
13209                            Some(&super::NS_XS),
13210                            b"annotation",
13211                            false,
13212                        )?;
13213                        match self.handle_annotation(helper, values, output, &mut fallback)? {
13214                            ElementHandlerOutput::Break { event, allow_any } => {
13215                                break (event, allow_any)
13216                            }
13217                            ElementHandlerOutput::Continue { event, .. } => event,
13218                        }
13219                    }
13220                    (S::SimpleType(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
13221                        let output = helper.init_start_tag_deserializer(
13222                            event,
13223                            Some(&super::NS_XS),
13224                            b"simpleType",
13225                            true,
13226                        )?;
13227                        match self.handle_simple_type(helper, values, output, &mut fallback)? {
13228                            ElementHandlerOutput::Break { event, allow_any } => {
13229                                break (event, allow_any)
13230                            }
13231                            ElementHandlerOutput::Continue { event, .. } => event,
13232                        }
13233                    }
13234                    (S::Facet(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
13235                        let output =
13236                            <super::Facet as WithDeserializer>::Deserializer::init(helper, event)?;
13237                        match self.handle_facet(helper, values, output, &mut fallback)? {
13238                            ElementHandlerOutput::Break { event, allow_any } => {
13239                                break (event, allow_any)
13240                            }
13241                            ElementHandlerOutput::Continue { event, .. } => event,
13242                        }
13243                    }
13244                    (s @ S::Done__(_), event) => {
13245                        *self.state__ = s;
13246                        break (DeserializerEvent::Continue(event), false);
13247                    }
13248                    (state, event) => {
13249                        *self.state__ = state;
13250                        break (DeserializerEvent::Break(event), false);
13251                    }
13252                }
13253            };
13254            let artifact = if matches!(&*self.state__, S::Done__(_)) {
13255                DeserializerArtifact::Data(self.finish(helper)?)
13256            } else {
13257                DeserializerArtifact::Deserializer(self)
13258            };
13259            Ok(DeserializerOutput {
13260                artifact,
13261                event,
13262                allow_any,
13263            })
13264        }
13265        fn finish(
13266            self,
13267            helper: &mut DeserializeHelper,
13268        ) -> Result<super::RestrictionContent, Error> {
13269            RestrictionContentDeserializer::finish_state(helper, *self.state__)
13270        }
13271    }
13272    #[derive(Debug)]
13273    pub struct ListDeserializer {
13274        id: Option<String>,
13275        item_type: Option<QName>,
13276        annotation: Option<super::Annotation>,
13277        simple_type: Option<super::SimpleBaseType>,
13278        state__: Box<ListDeserializerState>,
13279    }
13280    #[derive(Debug)]
13281    enum ListDeserializerState {
13282        Init__,
13283        Annotation(Option<<super::Annotation as WithDeserializer>::Deserializer>),
13284        SimpleType(Option<<super::SimpleBaseType as WithDeserializer>::Deserializer>),
13285        Done__,
13286        Unknown__,
13287    }
13288    impl ListDeserializer {
13289        fn from_bytes_start(
13290            helper: &mut DeserializeHelper,
13291            bytes_start: &BytesStart<'_>,
13292        ) -> Result<Box<Self>, Error> {
13293            let mut id: Option<String> = None;
13294            let mut item_type: Option<QName> = None;
13295            for attrib in helper.filter_xmlns_attributes(bytes_start) {
13296                let attrib = attrib?;
13297                if matches!(
13298                    helper.resolve_local_name(attrib.key, &super::NS_XS),
13299                    Some(b"id")
13300                ) {
13301                    helper.read_attrib(&mut id, b"id", &attrib.value)?;
13302                } else if matches!(
13303                    helper.resolve_local_name(attrib.key, &super::NS_XS),
13304                    Some(b"itemType")
13305                ) {
13306                    helper.read_attrib(&mut item_type, b"itemType", &attrib.value)?;
13307                }
13308            }
13309            Ok(Box::new(Self {
13310                id: id,
13311                item_type: item_type,
13312                annotation: None,
13313                simple_type: None,
13314                state__: Box::new(ListDeserializerState::Init__),
13315            }))
13316        }
13317        fn finish_state(
13318            &mut self,
13319            helper: &mut DeserializeHelper,
13320            state: ListDeserializerState,
13321        ) -> Result<(), Error> {
13322            use ListDeserializerState as S;
13323            match state {
13324                S::Annotation(Some(deserializer)) => {
13325                    self.store_annotation(deserializer.finish(helper)?)?
13326                }
13327                S::SimpleType(Some(deserializer)) => {
13328                    self.store_simple_type(deserializer.finish(helper)?)?
13329                }
13330                _ => (),
13331            }
13332            Ok(())
13333        }
13334        fn store_annotation(&mut self, value: super::Annotation) -> Result<(), Error> {
13335            if self.annotation.is_some() {
13336                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
13337                    b"annotation",
13338                )))?;
13339            }
13340            self.annotation = Some(value);
13341            Ok(())
13342        }
13343        fn store_simple_type(&mut self, value: super::SimpleBaseType) -> Result<(), Error> {
13344            if self.simple_type.is_some() {
13345                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
13346                    b"simpleType",
13347                )))?;
13348            }
13349            self.simple_type = Some(value);
13350            Ok(())
13351        }
13352        fn handle_annotation<'de>(
13353            &mut self,
13354            helper: &mut DeserializeHelper,
13355            output: DeserializerOutput<'de, super::Annotation>,
13356            fallback: &mut Option<ListDeserializerState>,
13357        ) -> Result<ElementHandlerOutput<'de>, Error> {
13358            let DeserializerOutput {
13359                artifact,
13360                event,
13361                allow_any,
13362            } = output;
13363            if artifact.is_none() {
13364                fallback.get_or_insert(ListDeserializerState::Annotation(None));
13365                *self.state__ = ListDeserializerState::SimpleType(None);
13366                return Ok(ElementHandlerOutput::from_event(event, allow_any));
13367            }
13368            if let Some(fallback) = fallback.take() {
13369                self.finish_state(helper, fallback)?;
13370            }
13371            Ok(match artifact {
13372                DeserializerArtifact::None => unreachable!(),
13373                DeserializerArtifact::Data(data) => {
13374                    self.store_annotation(data)?;
13375                    *self.state__ = ListDeserializerState::SimpleType(None);
13376                    ElementHandlerOutput::from_event(event, allow_any)
13377                }
13378                DeserializerArtifact::Deserializer(deserializer) => {
13379                    let ret = ElementHandlerOutput::from_event(event, allow_any);
13380                    match &ret {
13381                        ElementHandlerOutput::Continue { .. } => {
13382                            fallback.get_or_insert(ListDeserializerState::Annotation(Some(
13383                                deserializer,
13384                            )));
13385                            *self.state__ = ListDeserializerState::SimpleType(None);
13386                        }
13387                        ElementHandlerOutput::Break { .. } => {
13388                            *self.state__ = ListDeserializerState::Annotation(Some(deserializer));
13389                        }
13390                    }
13391                    ret
13392                }
13393            })
13394        }
13395        fn handle_simple_type<'de>(
13396            &mut self,
13397            helper: &mut DeserializeHelper,
13398            output: DeserializerOutput<'de, super::SimpleBaseType>,
13399            fallback: &mut Option<ListDeserializerState>,
13400        ) -> Result<ElementHandlerOutput<'de>, Error> {
13401            let DeserializerOutput {
13402                artifact,
13403                event,
13404                allow_any,
13405            } = output;
13406            if artifact.is_none() {
13407                fallback.get_or_insert(ListDeserializerState::SimpleType(None));
13408                *self.state__ = ListDeserializerState::Done__;
13409                return Ok(ElementHandlerOutput::from_event(event, allow_any));
13410            }
13411            if let Some(fallback) = fallback.take() {
13412                self.finish_state(helper, fallback)?;
13413            }
13414            Ok(match artifact {
13415                DeserializerArtifact::None => unreachable!(),
13416                DeserializerArtifact::Data(data) => {
13417                    self.store_simple_type(data)?;
13418                    *self.state__ = ListDeserializerState::Done__;
13419                    ElementHandlerOutput::from_event(event, allow_any)
13420                }
13421                DeserializerArtifact::Deserializer(deserializer) => {
13422                    let ret = ElementHandlerOutput::from_event(event, allow_any);
13423                    match &ret {
13424                        ElementHandlerOutput::Continue { .. } => {
13425                            fallback.get_or_insert(ListDeserializerState::SimpleType(Some(
13426                                deserializer,
13427                            )));
13428                            *self.state__ = ListDeserializerState::Done__;
13429                        }
13430                        ElementHandlerOutput::Break { .. } => {
13431                            *self.state__ = ListDeserializerState::SimpleType(Some(deserializer));
13432                        }
13433                    }
13434                    ret
13435                }
13436            })
13437        }
13438    }
13439    impl<'de> Deserializer<'de, super::List> for Box<ListDeserializer> {
13440        fn init(
13441            helper: &mut DeserializeHelper,
13442            event: Event<'de>,
13443        ) -> DeserializerResult<'de, super::List> {
13444            helper.init_deserializer_from_start_event(event, ListDeserializer::from_bytes_start)
13445        }
13446        fn next(
13447            mut self,
13448            helper: &mut DeserializeHelper,
13449            event: Event<'de>,
13450        ) -> DeserializerResult<'de, super::List> {
13451            use ListDeserializerState as S;
13452            let mut event = event;
13453            let mut fallback = None;
13454            let mut allow_any_element = false;
13455            let (event, allow_any) = loop {
13456                let state = replace(&mut *self.state__, S::Unknown__);
13457                event = match (state, event) {
13458                    (S::Unknown__, _) => unreachable!(),
13459                    (S::Annotation(Some(deserializer)), event) => {
13460                        let output = deserializer.next(helper, event)?;
13461                        match self.handle_annotation(helper, output, &mut fallback)? {
13462                            ElementHandlerOutput::Continue { event, allow_any } => {
13463                                allow_any_element = allow_any_element || allow_any;
13464                                event
13465                            }
13466                            ElementHandlerOutput::Break { event, allow_any } => {
13467                                break (event, allow_any)
13468                            }
13469                        }
13470                    }
13471                    (S::SimpleType(Some(deserializer)), event) => {
13472                        let output = deserializer.next(helper, event)?;
13473                        match self.handle_simple_type(helper, output, &mut fallback)? {
13474                            ElementHandlerOutput::Continue { event, allow_any } => {
13475                                allow_any_element = allow_any_element || allow_any;
13476                                event
13477                            }
13478                            ElementHandlerOutput::Break { event, allow_any } => {
13479                                break (event, allow_any)
13480                            }
13481                        }
13482                    }
13483                    (_, Event::End(_)) => {
13484                        if let Some(fallback) = fallback.take() {
13485                            self.finish_state(helper, fallback)?;
13486                        }
13487                        return Ok(DeserializerOutput {
13488                            artifact: DeserializerArtifact::Data(self.finish(helper)?),
13489                            event: DeserializerEvent::None,
13490                            allow_any: false,
13491                        });
13492                    }
13493                    (S::Init__, event) => {
13494                        fallback.get_or_insert(S::Init__);
13495                        *self.state__ = ListDeserializerState::Annotation(None);
13496                        event
13497                    }
13498                    (S::Annotation(None), event @ (Event::Start(_) | Event::Empty(_))) => {
13499                        let output = helper.init_start_tag_deserializer(
13500                            event,
13501                            Some(&super::NS_XS),
13502                            b"annotation",
13503                            false,
13504                        )?;
13505                        match self.handle_annotation(helper, output, &mut fallback)? {
13506                            ElementHandlerOutput::Continue { event, allow_any } => {
13507                                allow_any_element = allow_any_element || allow_any;
13508                                event
13509                            }
13510                            ElementHandlerOutput::Break { event, allow_any } => {
13511                                break (event, allow_any)
13512                            }
13513                        }
13514                    }
13515                    (S::SimpleType(None), event @ (Event::Start(_) | Event::Empty(_))) => {
13516                        let output = helper.init_start_tag_deserializer(
13517                            event,
13518                            Some(&super::NS_XS),
13519                            b"simpleType",
13520                            true,
13521                        )?;
13522                        match self.handle_simple_type(helper, output, &mut fallback)? {
13523                            ElementHandlerOutput::Continue { event, allow_any } => {
13524                                allow_any_element = allow_any_element || allow_any;
13525                                event
13526                            }
13527                            ElementHandlerOutput::Break { event, allow_any } => {
13528                                break (event, allow_any)
13529                            }
13530                        }
13531                    }
13532                    (S::Done__, event) => {
13533                        fallback.get_or_insert(S::Done__);
13534                        break (DeserializerEvent::Continue(event), allow_any_element);
13535                    }
13536                    (state, event) => {
13537                        *self.state__ = state;
13538                        break (DeserializerEvent::Break(event), false);
13539                    }
13540                }
13541            };
13542            if let Some(fallback) = fallback {
13543                *self.state__ = fallback;
13544            }
13545            Ok(DeserializerOutput {
13546                artifact: DeserializerArtifact::Deserializer(self),
13547                event,
13548                allow_any,
13549            })
13550        }
13551        fn finish(mut self, helper: &mut DeserializeHelper) -> Result<super::List, Error> {
13552            let state = replace(&mut *self.state__, ListDeserializerState::Unknown__);
13553            self.finish_state(helper, state)?;
13554            Ok(super::List {
13555                id: self.id,
13556                item_type: self.item_type,
13557                annotation: self.annotation,
13558                simple_type: self.simple_type.map(Box::new),
13559            })
13560        }
13561    }
13562    #[derive(Debug)]
13563    pub struct UnionDeserializer {
13564        id: Option<String>,
13565        member_types: Option<super::QNameList>,
13566        annotation: Option<super::Annotation>,
13567        simple_type: Vec<super::SimpleBaseType>,
13568        state__: Box<UnionDeserializerState>,
13569    }
13570    #[derive(Debug)]
13571    enum UnionDeserializerState {
13572        Init__,
13573        Annotation(Option<<super::Annotation as WithDeserializer>::Deserializer>),
13574        SimpleType(Option<<super::SimpleBaseType as WithDeserializer>::Deserializer>),
13575        Done__,
13576        Unknown__,
13577    }
13578    impl UnionDeserializer {
13579        fn from_bytes_start(
13580            helper: &mut DeserializeHelper,
13581            bytes_start: &BytesStart<'_>,
13582        ) -> Result<Box<Self>, Error> {
13583            let mut id: Option<String> = None;
13584            let mut member_types: Option<super::QNameList> = None;
13585            for attrib in helper.filter_xmlns_attributes(bytes_start) {
13586                let attrib = attrib?;
13587                if matches!(
13588                    helper.resolve_local_name(attrib.key, &super::NS_XS),
13589                    Some(b"id")
13590                ) {
13591                    helper.read_attrib(&mut id, b"id", &attrib.value)?;
13592                } else if matches!(
13593                    helper.resolve_local_name(attrib.key, &super::NS_XS),
13594                    Some(b"memberTypes")
13595                ) {
13596                    helper.read_attrib(&mut member_types, b"memberTypes", &attrib.value)?;
13597                }
13598            }
13599            Ok(Box::new(Self {
13600                id: id,
13601                member_types: member_types,
13602                annotation: None,
13603                simple_type: Vec::new(),
13604                state__: Box::new(UnionDeserializerState::Init__),
13605            }))
13606        }
13607        fn finish_state(
13608            &mut self,
13609            helper: &mut DeserializeHelper,
13610            state: UnionDeserializerState,
13611        ) -> Result<(), Error> {
13612            use UnionDeserializerState as S;
13613            match state {
13614                S::Annotation(Some(deserializer)) => {
13615                    self.store_annotation(deserializer.finish(helper)?)?
13616                }
13617                S::SimpleType(Some(deserializer)) => {
13618                    self.store_simple_type(deserializer.finish(helper)?)?
13619                }
13620                _ => (),
13621            }
13622            Ok(())
13623        }
13624        fn store_annotation(&mut self, value: super::Annotation) -> Result<(), Error> {
13625            if self.annotation.is_some() {
13626                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
13627                    b"annotation",
13628                )))?;
13629            }
13630            self.annotation = Some(value);
13631            Ok(())
13632        }
13633        fn store_simple_type(&mut self, value: super::SimpleBaseType) -> Result<(), Error> {
13634            self.simple_type.push(value);
13635            Ok(())
13636        }
13637        fn handle_annotation<'de>(
13638            &mut self,
13639            helper: &mut DeserializeHelper,
13640            output: DeserializerOutput<'de, super::Annotation>,
13641            fallback: &mut Option<UnionDeserializerState>,
13642        ) -> Result<ElementHandlerOutput<'de>, Error> {
13643            let DeserializerOutput {
13644                artifact,
13645                event,
13646                allow_any,
13647            } = output;
13648            if artifact.is_none() {
13649                fallback.get_or_insert(UnionDeserializerState::Annotation(None));
13650                *self.state__ = UnionDeserializerState::SimpleType(None);
13651                return Ok(ElementHandlerOutput::from_event(event, allow_any));
13652            }
13653            if let Some(fallback) = fallback.take() {
13654                self.finish_state(helper, fallback)?;
13655            }
13656            Ok(match artifact {
13657                DeserializerArtifact::None => unreachable!(),
13658                DeserializerArtifact::Data(data) => {
13659                    self.store_annotation(data)?;
13660                    *self.state__ = UnionDeserializerState::SimpleType(None);
13661                    ElementHandlerOutput::from_event(event, allow_any)
13662                }
13663                DeserializerArtifact::Deserializer(deserializer) => {
13664                    let ret = ElementHandlerOutput::from_event(event, allow_any);
13665                    match &ret {
13666                        ElementHandlerOutput::Continue { .. } => {
13667                            fallback.get_or_insert(UnionDeserializerState::Annotation(Some(
13668                                deserializer,
13669                            )));
13670                            *self.state__ = UnionDeserializerState::SimpleType(None);
13671                        }
13672                        ElementHandlerOutput::Break { .. } => {
13673                            *self.state__ = UnionDeserializerState::Annotation(Some(deserializer));
13674                        }
13675                    }
13676                    ret
13677                }
13678            })
13679        }
13680        fn handle_simple_type<'de>(
13681            &mut self,
13682            helper: &mut DeserializeHelper,
13683            output: DeserializerOutput<'de, super::SimpleBaseType>,
13684            fallback: &mut Option<UnionDeserializerState>,
13685        ) -> Result<ElementHandlerOutput<'de>, Error> {
13686            let DeserializerOutput {
13687                artifact,
13688                event,
13689                allow_any,
13690            } = output;
13691            if artifact.is_none() {
13692                fallback.get_or_insert(UnionDeserializerState::SimpleType(None));
13693                *self.state__ = UnionDeserializerState::Done__;
13694                return Ok(ElementHandlerOutput::from_event(event, allow_any));
13695            }
13696            if let Some(fallback) = fallback.take() {
13697                self.finish_state(helper, fallback)?;
13698            }
13699            Ok(match artifact {
13700                DeserializerArtifact::None => unreachable!(),
13701                DeserializerArtifact::Data(data) => {
13702                    self.store_simple_type(data)?;
13703                    *self.state__ = UnionDeserializerState::SimpleType(None);
13704                    ElementHandlerOutput::from_event(event, allow_any)
13705                }
13706                DeserializerArtifact::Deserializer(deserializer) => {
13707                    let ret = ElementHandlerOutput::from_event(event, allow_any);
13708                    match &ret {
13709                        ElementHandlerOutput::Continue { .. } => {
13710                            fallback.get_or_insert(UnionDeserializerState::SimpleType(Some(
13711                                deserializer,
13712                            )));
13713                            *self.state__ = UnionDeserializerState::SimpleType(None);
13714                        }
13715                        ElementHandlerOutput::Break { .. } => {
13716                            *self.state__ = UnionDeserializerState::SimpleType(Some(deserializer));
13717                        }
13718                    }
13719                    ret
13720                }
13721            })
13722        }
13723    }
13724    impl<'de> Deserializer<'de, super::Union> for Box<UnionDeserializer> {
13725        fn init(
13726            helper: &mut DeserializeHelper,
13727            event: Event<'de>,
13728        ) -> DeserializerResult<'de, super::Union> {
13729            helper.init_deserializer_from_start_event(event, UnionDeserializer::from_bytes_start)
13730        }
13731        fn next(
13732            mut self,
13733            helper: &mut DeserializeHelper,
13734            event: Event<'de>,
13735        ) -> DeserializerResult<'de, super::Union> {
13736            use UnionDeserializerState as S;
13737            let mut event = event;
13738            let mut fallback = None;
13739            let mut allow_any_element = false;
13740            let (event, allow_any) = loop {
13741                let state = replace(&mut *self.state__, S::Unknown__);
13742                event = match (state, event) {
13743                    (S::Unknown__, _) => unreachable!(),
13744                    (S::Annotation(Some(deserializer)), event) => {
13745                        let output = deserializer.next(helper, event)?;
13746                        match self.handle_annotation(helper, output, &mut fallback)? {
13747                            ElementHandlerOutput::Continue { event, allow_any } => {
13748                                allow_any_element = allow_any_element || allow_any;
13749                                event
13750                            }
13751                            ElementHandlerOutput::Break { event, allow_any } => {
13752                                break (event, allow_any)
13753                            }
13754                        }
13755                    }
13756                    (S::SimpleType(Some(deserializer)), event) => {
13757                        let output = deserializer.next(helper, event)?;
13758                        match self.handle_simple_type(helper, output, &mut fallback)? {
13759                            ElementHandlerOutput::Continue { event, allow_any } => {
13760                                allow_any_element = allow_any_element || allow_any;
13761                                event
13762                            }
13763                            ElementHandlerOutput::Break { event, allow_any } => {
13764                                break (event, allow_any)
13765                            }
13766                        }
13767                    }
13768                    (_, Event::End(_)) => {
13769                        if let Some(fallback) = fallback.take() {
13770                            self.finish_state(helper, fallback)?;
13771                        }
13772                        return Ok(DeserializerOutput {
13773                            artifact: DeserializerArtifact::Data(self.finish(helper)?),
13774                            event: DeserializerEvent::None,
13775                            allow_any: false,
13776                        });
13777                    }
13778                    (S::Init__, event) => {
13779                        fallback.get_or_insert(S::Init__);
13780                        *self.state__ = UnionDeserializerState::Annotation(None);
13781                        event
13782                    }
13783                    (S::Annotation(None), event @ (Event::Start(_) | Event::Empty(_))) => {
13784                        let output = helper.init_start_tag_deserializer(
13785                            event,
13786                            Some(&super::NS_XS),
13787                            b"annotation",
13788                            false,
13789                        )?;
13790                        match self.handle_annotation(helper, output, &mut fallback)? {
13791                            ElementHandlerOutput::Continue { event, allow_any } => {
13792                                allow_any_element = allow_any_element || allow_any;
13793                                event
13794                            }
13795                            ElementHandlerOutput::Break { event, allow_any } => {
13796                                break (event, allow_any)
13797                            }
13798                        }
13799                    }
13800                    (S::SimpleType(None), event @ (Event::Start(_) | Event::Empty(_))) => {
13801                        let output = helper.init_start_tag_deserializer(
13802                            event,
13803                            Some(&super::NS_XS),
13804                            b"simpleType",
13805                            true,
13806                        )?;
13807                        match self.handle_simple_type(helper, output, &mut fallback)? {
13808                            ElementHandlerOutput::Continue { event, allow_any } => {
13809                                allow_any_element = allow_any_element || allow_any;
13810                                event
13811                            }
13812                            ElementHandlerOutput::Break { event, allow_any } => {
13813                                break (event, allow_any)
13814                            }
13815                        }
13816                    }
13817                    (S::Done__, event) => {
13818                        fallback.get_or_insert(S::Done__);
13819                        break (DeserializerEvent::Continue(event), allow_any_element);
13820                    }
13821                    (state, event) => {
13822                        *self.state__ = state;
13823                        break (DeserializerEvent::Break(event), false);
13824                    }
13825                }
13826            };
13827            if let Some(fallback) = fallback {
13828                *self.state__ = fallback;
13829            }
13830            Ok(DeserializerOutput {
13831                artifact: DeserializerArtifact::Deserializer(self),
13832                event,
13833                allow_any,
13834            })
13835        }
13836        fn finish(mut self, helper: &mut DeserializeHelper) -> Result<super::Union, Error> {
13837            let state = replace(&mut *self.state__, UnionDeserializerState::Unknown__);
13838            self.finish_state(helper, state)?;
13839            Ok(super::Union {
13840                id: self.id,
13841                member_types: self.member_types,
13842                annotation: self.annotation,
13843                simple_type: self.simple_type,
13844            })
13845        }
13846    }
13847    #[derive(Debug)]
13848    pub struct SimpleContentDeserializer {
13849        id: Option<String>,
13850        content: Vec<super::SimpleContentContent>,
13851        state__: Box<SimpleContentDeserializerState>,
13852    }
13853    #[derive(Debug)]
13854    enum SimpleContentDeserializerState {
13855        Init__,
13856        Next__,
13857        Content__(<super::SimpleContentContent as WithDeserializer>::Deserializer),
13858        Unknown__,
13859    }
13860    impl SimpleContentDeserializer {
13861        fn from_bytes_start(
13862            helper: &mut DeserializeHelper,
13863            bytes_start: &BytesStart<'_>,
13864        ) -> Result<Box<Self>, Error> {
13865            let mut id: Option<String> = None;
13866            for attrib in helper.filter_xmlns_attributes(bytes_start) {
13867                let attrib = attrib?;
13868                if matches!(
13869                    helper.resolve_local_name(attrib.key, &super::NS_XS),
13870                    Some(b"id")
13871                ) {
13872                    helper.read_attrib(&mut id, b"id", &attrib.value)?;
13873                }
13874            }
13875            Ok(Box::new(Self {
13876                id: id,
13877                content: Vec::new(),
13878                state__: Box::new(SimpleContentDeserializerState::Init__),
13879            }))
13880        }
13881        fn finish_state(
13882            &mut self,
13883            helper: &mut DeserializeHelper,
13884            state: SimpleContentDeserializerState,
13885        ) -> Result<(), Error> {
13886            if let SimpleContentDeserializerState::Content__(deserializer) = state {
13887                self.store_content(deserializer.finish(helper)?)?;
13888            }
13889            Ok(())
13890        }
13891        fn store_content(&mut self, value: super::SimpleContentContent) -> Result<(), Error> {
13892            self.content.push(value);
13893            Ok(())
13894        }
13895        fn handle_content<'de>(
13896            &mut self,
13897            helper: &mut DeserializeHelper,
13898            output: DeserializerOutput<'de, super::SimpleContentContent>,
13899            fallback: &mut Option<SimpleContentDeserializerState>,
13900        ) -> Result<ElementHandlerOutput<'de>, Error> {
13901            let DeserializerOutput {
13902                artifact,
13903                event,
13904                allow_any,
13905            } = output;
13906            if artifact.is_none() {
13907                *self.state__ = fallback
13908                    .take()
13909                    .unwrap_or(SimpleContentDeserializerState::Next__);
13910                return Ok(ElementHandlerOutput::break_(event, allow_any));
13911            }
13912            if let Some(fallback) = fallback.take() {
13913                self.finish_state(helper, fallback)?;
13914            }
13915            Ok(match artifact {
13916                DeserializerArtifact::None => unreachable!(),
13917                DeserializerArtifact::Data(data) => {
13918                    self.store_content(data)?;
13919                    *self.state__ = SimpleContentDeserializerState::Next__;
13920                    ElementHandlerOutput::from_event(event, allow_any)
13921                }
13922                DeserializerArtifact::Deserializer(deserializer) => {
13923                    let can_have_more = self.content.len().saturating_add(1) < 2usize;
13924                    let ret = if can_have_more {
13925                        ElementHandlerOutput::from_event(event, allow_any)
13926                    } else {
13927                        ElementHandlerOutput::from_event_end(event, allow_any)
13928                    };
13929                    match (can_have_more, &ret) {
13930                        (true, ElementHandlerOutput::Continue { .. }) => {
13931                            fallback.get_or_insert(SimpleContentDeserializerState::Content__(
13932                                deserializer,
13933                            ));
13934                            *self.state__ = SimpleContentDeserializerState::Next__;
13935                        }
13936                        (false, _) | (_, ElementHandlerOutput::Break { .. }) => {
13937                            *self.state__ = SimpleContentDeserializerState::Content__(deserializer);
13938                        }
13939                    }
13940                    ret
13941                }
13942            })
13943        }
13944    }
13945    impl<'de> Deserializer<'de, super::SimpleContent> for Box<SimpleContentDeserializer> {
13946        fn init(
13947            helper: &mut DeserializeHelper,
13948            event: Event<'de>,
13949        ) -> DeserializerResult<'de, super::SimpleContent> {
13950            helper.init_deserializer_from_start_event(
13951                event,
13952                SimpleContentDeserializer::from_bytes_start,
13953            )
13954        }
13955        fn next(
13956            mut self,
13957            helper: &mut DeserializeHelper,
13958            event: Event<'de>,
13959        ) -> DeserializerResult<'de, super::SimpleContent> {
13960            use SimpleContentDeserializerState as S;
13961            let mut event = event;
13962            let mut fallback = None;
13963            let (event, allow_any) = loop {
13964                let state = replace(&mut *self.state__, S::Unknown__);
13965                event = match (state, event) {
13966                    (S::Unknown__, _) => unreachable!(),
13967                    (S::Content__(deserializer), event) => {
13968                        let output = deserializer.next(helper, event)?;
13969                        match self.handle_content(helper, output, &mut fallback)? {
13970                            ElementHandlerOutput::Break { event, allow_any } => {
13971                                break (event, allow_any)
13972                            }
13973                            ElementHandlerOutput::Continue { event, .. } => event,
13974                        }
13975                    }
13976                    (_, Event::End(_)) => {
13977                        return Ok(DeserializerOutput {
13978                            artifact: DeserializerArtifact::Data(self.finish(helper)?),
13979                            event: DeserializerEvent::None,
13980                            allow_any: false,
13981                        });
13982                    }
13983                    (state @ (S::Init__ | S::Next__), event) => {
13984                        fallback.get_or_insert(state);
13985                        let output =
13986                            <super::SimpleContentContent as WithDeserializer>::Deserializer::init(
13987                                helper, event,
13988                            )?;
13989                        match self.handle_content(helper, output, &mut fallback)? {
13990                            ElementHandlerOutput::Break { event, allow_any } => {
13991                                break (event, allow_any)
13992                            }
13993                            ElementHandlerOutput::Continue { event, .. } => event,
13994                        }
13995                    }
13996                }
13997            };
13998            let artifact = DeserializerArtifact::Deserializer(self);
13999            Ok(DeserializerOutput {
14000                artifact,
14001                event,
14002                allow_any,
14003            })
14004        }
14005        fn finish(mut self, helper: &mut DeserializeHelper) -> Result<super::SimpleContent, Error> {
14006            let state = replace(
14007                &mut *self.state__,
14008                SimpleContentDeserializerState::Unknown__,
14009            );
14010            self.finish_state(helper, state)?;
14011            Ok(super::SimpleContent {
14012                id: self.id,
14013                content: self.content,
14014            })
14015        }
14016    }
14017    #[derive(Debug)]
14018    pub struct SimpleContentContentDeserializer {
14019        state__: Box<SimpleContentContentDeserializerState>,
14020    }
14021    #[derive(Debug)]
14022    pub enum SimpleContentContentDeserializerState {
14023        Init__,
14024        Annotation(
14025            Option<super::Annotation>,
14026            Option<<super::Annotation as WithDeserializer>::Deserializer>,
14027        ),
14028        Restriction(
14029            Option<super::RestrictionType>,
14030            Option<<super::RestrictionType as WithDeserializer>::Deserializer>,
14031        ),
14032        Extension(
14033            Option<super::ExtensionType>,
14034            Option<<super::ExtensionType as WithDeserializer>::Deserializer>,
14035        ),
14036        Done__(super::SimpleContentContent),
14037        Unknown__,
14038    }
14039    impl SimpleContentContentDeserializer {
14040        fn find_suitable<'de>(
14041            &mut self,
14042            helper: &mut DeserializeHelper,
14043            event: Event<'de>,
14044            fallback: &mut Option<SimpleContentContentDeserializerState>,
14045        ) -> Result<ElementHandlerOutput<'de>, Error> {
14046            if let Event::Start(x) | Event::Empty(x) = &event {
14047                if matches!(
14048                    helper.resolve_local_name(x.name(), &super::NS_XS),
14049                    Some(b"annotation")
14050                ) {
14051                    let output =
14052                        <super::Annotation as WithDeserializer>::Deserializer::init(helper, event)?;
14053                    return self.handle_annotation(
14054                        helper,
14055                        Default::default(),
14056                        output,
14057                        &mut *fallback,
14058                    );
14059                }
14060                if matches!(
14061                    helper.resolve_local_name(x.name(), &super::NS_XS),
14062                    Some(b"restriction")
14063                ) {
14064                    let output = <super::RestrictionType as WithDeserializer>::Deserializer::init(
14065                        helper, event,
14066                    )?;
14067                    return self.handle_restriction(
14068                        helper,
14069                        Default::default(),
14070                        output,
14071                        &mut *fallback,
14072                    );
14073                }
14074                if matches!(
14075                    helper.resolve_local_name(x.name(), &super::NS_XS),
14076                    Some(b"extension")
14077                ) {
14078                    let output = <super::ExtensionType as WithDeserializer>::Deserializer::init(
14079                        helper, event,
14080                    )?;
14081                    return self.handle_extension(
14082                        helper,
14083                        Default::default(),
14084                        output,
14085                        &mut *fallback,
14086                    );
14087                }
14088            }
14089            *self.state__ = fallback
14090                .take()
14091                .unwrap_or(SimpleContentContentDeserializerState::Init__);
14092            Ok(ElementHandlerOutput::return_to_parent(event, false))
14093        }
14094        fn finish_state(
14095            helper: &mut DeserializeHelper,
14096            state: SimpleContentContentDeserializerState,
14097        ) -> Result<super::SimpleContentContent, Error> {
14098            use SimpleContentContentDeserializerState as S;
14099            match state {
14100                S::Unknown__ => unreachable!(),
14101                S::Init__ => Err(ErrorKind::MissingContent.into()),
14102                S::Annotation(mut values, deserializer) => {
14103                    if let Some(deserializer) = deserializer {
14104                        let value = deserializer.finish(helper)?;
14105                        SimpleContentContentDeserializer::store_annotation(&mut values, value)?;
14106                    }
14107                    Ok(super::SimpleContentContent::Annotation(values.ok_or_else(
14108                        || ErrorKind::MissingElement("annotation".into()),
14109                    )?))
14110                }
14111                S::Restriction(mut values, deserializer) => {
14112                    if let Some(deserializer) = deserializer {
14113                        let value = deserializer.finish(helper)?;
14114                        SimpleContentContentDeserializer::store_restriction(&mut values, value)?;
14115                    }
14116                    Ok(super::SimpleContentContent::Restriction(
14117                        values.ok_or_else(|| ErrorKind::MissingElement("restriction".into()))?,
14118                    ))
14119                }
14120                S::Extension(mut values, deserializer) => {
14121                    if let Some(deserializer) = deserializer {
14122                        let value = deserializer.finish(helper)?;
14123                        SimpleContentContentDeserializer::store_extension(&mut values, value)?;
14124                    }
14125                    Ok(super::SimpleContentContent::Extension(values.ok_or_else(
14126                        || ErrorKind::MissingElement("extension".into()),
14127                    )?))
14128                }
14129                S::Done__(data) => Ok(data),
14130            }
14131        }
14132        fn store_annotation(
14133            values: &mut Option<super::Annotation>,
14134            value: super::Annotation,
14135        ) -> Result<(), Error> {
14136            if values.is_some() {
14137                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
14138                    b"annotation",
14139                )))?;
14140            }
14141            *values = Some(value);
14142            Ok(())
14143        }
14144        fn store_restriction(
14145            values: &mut Option<super::RestrictionType>,
14146            value: super::RestrictionType,
14147        ) -> Result<(), Error> {
14148            if values.is_some() {
14149                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
14150                    b"restriction",
14151                )))?;
14152            }
14153            *values = Some(value);
14154            Ok(())
14155        }
14156        fn store_extension(
14157            values: &mut Option<super::ExtensionType>,
14158            value: super::ExtensionType,
14159        ) -> Result<(), Error> {
14160            if values.is_some() {
14161                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
14162                    b"extension",
14163                )))?;
14164            }
14165            *values = Some(value);
14166            Ok(())
14167        }
14168        fn handle_annotation<'de>(
14169            &mut self,
14170            helper: &mut DeserializeHelper,
14171            mut values: Option<super::Annotation>,
14172            output: DeserializerOutput<'de, super::Annotation>,
14173            fallback: &mut Option<SimpleContentContentDeserializerState>,
14174        ) -> Result<ElementHandlerOutput<'de>, Error> {
14175            let DeserializerOutput {
14176                artifact,
14177                event,
14178                allow_any,
14179            } = output;
14180            if artifact.is_none() {
14181                *self.state__ = match fallback.take() {
14182                    None if values.is_none() => {
14183                        *self.state__ = SimpleContentContentDeserializerState::Init__;
14184                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
14185                    }
14186                    None => SimpleContentContentDeserializerState::Annotation(values, None),
14187                    Some(SimpleContentContentDeserializerState::Annotation(
14188                        _,
14189                        Some(deserializer),
14190                    )) => SimpleContentContentDeserializerState::Annotation(
14191                        values,
14192                        Some(deserializer),
14193                    ),
14194                    _ => unreachable!(),
14195                };
14196                return Ok(ElementHandlerOutput::break_(event, allow_any));
14197            }
14198            match fallback.take() {
14199                None => (),
14200                Some(SimpleContentContentDeserializerState::Annotation(_, Some(deserializer))) => {
14201                    let data = deserializer.finish(helper)?;
14202                    SimpleContentContentDeserializer::store_annotation(&mut values, data)?;
14203                }
14204                Some(_) => unreachable!(),
14205            }
14206            Ok(match artifact {
14207                DeserializerArtifact::None => unreachable!(),
14208                DeserializerArtifact::Data(data) => {
14209                    SimpleContentContentDeserializer::store_annotation(&mut values, data)?;
14210                    let data = SimpleContentContentDeserializer::finish_state(
14211                        helper,
14212                        SimpleContentContentDeserializerState::Annotation(values, None),
14213                    )?;
14214                    *self.state__ = SimpleContentContentDeserializerState::Done__(data);
14215                    ElementHandlerOutput::Break { event, allow_any }
14216                }
14217                DeserializerArtifact::Deserializer(deserializer) => {
14218                    *self.state__ = SimpleContentContentDeserializerState::Annotation(
14219                        values,
14220                        Some(deserializer),
14221                    );
14222                    ElementHandlerOutput::from_event_end(event, allow_any)
14223                }
14224            })
14225        }
14226        fn handle_restriction<'de>(
14227            &mut self,
14228            helper: &mut DeserializeHelper,
14229            mut values: Option<super::RestrictionType>,
14230            output: DeserializerOutput<'de, super::RestrictionType>,
14231            fallback: &mut Option<SimpleContentContentDeserializerState>,
14232        ) -> Result<ElementHandlerOutput<'de>, Error> {
14233            let DeserializerOutput {
14234                artifact,
14235                event,
14236                allow_any,
14237            } = output;
14238            if artifact.is_none() {
14239                *self.state__ = match fallback.take() {
14240                    None if values.is_none() => {
14241                        *self.state__ = SimpleContentContentDeserializerState::Init__;
14242                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
14243                    }
14244                    None => SimpleContentContentDeserializerState::Restriction(values, None),
14245                    Some(SimpleContentContentDeserializerState::Restriction(
14246                        _,
14247                        Some(deserializer),
14248                    )) => SimpleContentContentDeserializerState::Restriction(
14249                        values,
14250                        Some(deserializer),
14251                    ),
14252                    _ => unreachable!(),
14253                };
14254                return Ok(ElementHandlerOutput::break_(event, allow_any));
14255            }
14256            match fallback.take() {
14257                None => (),
14258                Some(SimpleContentContentDeserializerState::Restriction(_, Some(deserializer))) => {
14259                    let data = deserializer.finish(helper)?;
14260                    SimpleContentContentDeserializer::store_restriction(&mut values, data)?;
14261                }
14262                Some(_) => unreachable!(),
14263            }
14264            Ok(match artifact {
14265                DeserializerArtifact::None => unreachable!(),
14266                DeserializerArtifact::Data(data) => {
14267                    SimpleContentContentDeserializer::store_restriction(&mut values, data)?;
14268                    let data = SimpleContentContentDeserializer::finish_state(
14269                        helper,
14270                        SimpleContentContentDeserializerState::Restriction(values, None),
14271                    )?;
14272                    *self.state__ = SimpleContentContentDeserializerState::Done__(data);
14273                    ElementHandlerOutput::Break { event, allow_any }
14274                }
14275                DeserializerArtifact::Deserializer(deserializer) => {
14276                    *self.state__ = SimpleContentContentDeserializerState::Restriction(
14277                        values,
14278                        Some(deserializer),
14279                    );
14280                    ElementHandlerOutput::from_event_end(event, allow_any)
14281                }
14282            })
14283        }
14284        fn handle_extension<'de>(
14285            &mut self,
14286            helper: &mut DeserializeHelper,
14287            mut values: Option<super::ExtensionType>,
14288            output: DeserializerOutput<'de, super::ExtensionType>,
14289            fallback: &mut Option<SimpleContentContentDeserializerState>,
14290        ) -> Result<ElementHandlerOutput<'de>, Error> {
14291            let DeserializerOutput {
14292                artifact,
14293                event,
14294                allow_any,
14295            } = output;
14296            if artifact.is_none() {
14297                *self.state__ = match fallback.take() {
14298                    None if values.is_none() => {
14299                        *self.state__ = SimpleContentContentDeserializerState::Init__;
14300                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
14301                    }
14302                    None => SimpleContentContentDeserializerState::Extension(values, None),
14303                    Some(SimpleContentContentDeserializerState::Extension(
14304                        _,
14305                        Some(deserializer),
14306                    )) => {
14307                        SimpleContentContentDeserializerState::Extension(values, Some(deserializer))
14308                    }
14309                    _ => unreachable!(),
14310                };
14311                return Ok(ElementHandlerOutput::break_(event, allow_any));
14312            }
14313            match fallback.take() {
14314                None => (),
14315                Some(SimpleContentContentDeserializerState::Extension(_, Some(deserializer))) => {
14316                    let data = deserializer.finish(helper)?;
14317                    SimpleContentContentDeserializer::store_extension(&mut values, data)?;
14318                }
14319                Some(_) => unreachable!(),
14320            }
14321            Ok(match artifact {
14322                DeserializerArtifact::None => unreachable!(),
14323                DeserializerArtifact::Data(data) => {
14324                    SimpleContentContentDeserializer::store_extension(&mut values, data)?;
14325                    let data = SimpleContentContentDeserializer::finish_state(
14326                        helper,
14327                        SimpleContentContentDeserializerState::Extension(values, None),
14328                    )?;
14329                    *self.state__ = SimpleContentContentDeserializerState::Done__(data);
14330                    ElementHandlerOutput::Break { event, allow_any }
14331                }
14332                DeserializerArtifact::Deserializer(deserializer) => {
14333                    *self.state__ = SimpleContentContentDeserializerState::Extension(
14334                        values,
14335                        Some(deserializer),
14336                    );
14337                    ElementHandlerOutput::from_event_end(event, allow_any)
14338                }
14339            })
14340        }
14341    }
14342    impl<'de> Deserializer<'de, super::SimpleContentContent> for Box<SimpleContentContentDeserializer> {
14343        fn init(
14344            helper: &mut DeserializeHelper,
14345            event: Event<'de>,
14346        ) -> DeserializerResult<'de, super::SimpleContentContent> {
14347            let deserializer = Box::new(SimpleContentContentDeserializer {
14348                state__: Box::new(SimpleContentContentDeserializerState::Init__),
14349            });
14350            let mut output = deserializer.next(helper, event)?;
14351            output.artifact = match output.artifact {
14352                DeserializerArtifact::Deserializer(x)
14353                    if matches!(&*x.state__, SimpleContentContentDeserializerState::Init__) =>
14354                {
14355                    DeserializerArtifact::None
14356                }
14357                artifact => artifact,
14358            };
14359            Ok(output)
14360        }
14361        fn next(
14362            mut self,
14363            helper: &mut DeserializeHelper,
14364            event: Event<'de>,
14365        ) -> DeserializerResult<'de, super::SimpleContentContent> {
14366            use SimpleContentContentDeserializerState as S;
14367            let mut event = event;
14368            let mut fallback = None;
14369            let (event, allow_any) = loop {
14370                let state = replace(&mut *self.state__, S::Unknown__);
14371                event = match (state, event) {
14372                    (S::Unknown__, _) => unreachable!(),
14373                    (S::Annotation(values, Some(deserializer)), event) => {
14374                        let output = deserializer.next(helper, event)?;
14375                        match self.handle_annotation(helper, values, output, &mut fallback)? {
14376                            ElementHandlerOutput::Break { event, allow_any } => {
14377                                break (event, allow_any)
14378                            }
14379                            ElementHandlerOutput::Continue { event, .. } => event,
14380                        }
14381                    }
14382                    (S::Restriction(values, Some(deserializer)), event) => {
14383                        let output = deserializer.next(helper, event)?;
14384                        match self.handle_restriction(helper, values, output, &mut fallback)? {
14385                            ElementHandlerOutput::Break { event, allow_any } => {
14386                                break (event, allow_any)
14387                            }
14388                            ElementHandlerOutput::Continue { event, .. } => event,
14389                        }
14390                    }
14391                    (S::Extension(values, Some(deserializer)), event) => {
14392                        let output = deserializer.next(helper, event)?;
14393                        match self.handle_extension(helper, values, output, &mut fallback)? {
14394                            ElementHandlerOutput::Break { event, allow_any } => {
14395                                break (event, allow_any)
14396                            }
14397                            ElementHandlerOutput::Continue { event, .. } => event,
14398                        }
14399                    }
14400                    (state, event @ Event::End(_)) => {
14401                        return Ok(DeserializerOutput {
14402                            artifact: DeserializerArtifact::Data(
14403                                SimpleContentContentDeserializer::finish_state(helper, state)?,
14404                            ),
14405                            event: DeserializerEvent::Continue(event),
14406                            allow_any: false,
14407                        });
14408                    }
14409                    (S::Init__, event) => match self.find_suitable(helper, event, &mut fallback)? {
14410                        ElementHandlerOutput::Break { event, allow_any } => {
14411                            break (event, allow_any)
14412                        }
14413                        ElementHandlerOutput::Continue { event, .. } => event,
14414                    },
14415                    (S::Annotation(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
14416                        let output = helper.init_start_tag_deserializer(
14417                            event,
14418                            Some(&super::NS_XS),
14419                            b"annotation",
14420                            false,
14421                        )?;
14422                        match self.handle_annotation(helper, values, output, &mut fallback)? {
14423                            ElementHandlerOutput::Break { event, allow_any } => {
14424                                break (event, allow_any)
14425                            }
14426                            ElementHandlerOutput::Continue { event, .. } => event,
14427                        }
14428                    }
14429                    (S::Restriction(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
14430                        let output = helper.init_start_tag_deserializer(
14431                            event,
14432                            Some(&super::NS_XS),
14433                            b"restriction",
14434                            true,
14435                        )?;
14436                        match self.handle_restriction(helper, values, output, &mut fallback)? {
14437                            ElementHandlerOutput::Break { event, allow_any } => {
14438                                break (event, allow_any)
14439                            }
14440                            ElementHandlerOutput::Continue { event, .. } => event,
14441                        }
14442                    }
14443                    (S::Extension(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
14444                        let output = helper.init_start_tag_deserializer(
14445                            event,
14446                            Some(&super::NS_XS),
14447                            b"extension",
14448                            true,
14449                        )?;
14450                        match self.handle_extension(helper, values, output, &mut fallback)? {
14451                            ElementHandlerOutput::Break { event, allow_any } => {
14452                                break (event, allow_any)
14453                            }
14454                            ElementHandlerOutput::Continue { event, .. } => event,
14455                        }
14456                    }
14457                    (s @ S::Done__(_), event) => {
14458                        *self.state__ = s;
14459                        break (DeserializerEvent::Continue(event), false);
14460                    }
14461                    (state, event) => {
14462                        *self.state__ = state;
14463                        break (DeserializerEvent::Break(event), false);
14464                    }
14465                }
14466            };
14467            let artifact = if matches!(&*self.state__, S::Done__(_)) {
14468                DeserializerArtifact::Data(self.finish(helper)?)
14469            } else {
14470                DeserializerArtifact::Deserializer(self)
14471            };
14472            Ok(DeserializerOutput {
14473                artifact,
14474                event,
14475                allow_any,
14476            })
14477        }
14478        fn finish(
14479            self,
14480            helper: &mut DeserializeHelper,
14481        ) -> Result<super::SimpleContentContent, Error> {
14482            SimpleContentContentDeserializer::finish_state(helper, *self.state__)
14483        }
14484    }
14485    #[derive(Debug)]
14486    pub struct ComplexContentDeserializer {
14487        id: Option<String>,
14488        mixed: Option<bool>,
14489        content: Vec<super::ComplexContentContent>,
14490        state__: Box<ComplexContentDeserializerState>,
14491    }
14492    #[derive(Debug)]
14493    enum ComplexContentDeserializerState {
14494        Init__,
14495        Next__,
14496        Content__(<super::ComplexContentContent as WithDeserializer>::Deserializer),
14497        Unknown__,
14498    }
14499    impl ComplexContentDeserializer {
14500        fn from_bytes_start(
14501            helper: &mut DeserializeHelper,
14502            bytes_start: &BytesStart<'_>,
14503        ) -> Result<Box<Self>, Error> {
14504            let mut id: Option<String> = None;
14505            let mut mixed: Option<bool> = None;
14506            for attrib in helper.filter_xmlns_attributes(bytes_start) {
14507                let attrib = attrib?;
14508                if matches!(
14509                    helper.resolve_local_name(attrib.key, &super::NS_XS),
14510                    Some(b"id")
14511                ) {
14512                    helper.read_attrib(&mut id, b"id", &attrib.value)?;
14513                } else if matches!(
14514                    helper.resolve_local_name(attrib.key, &super::NS_XS),
14515                    Some(b"mixed")
14516                ) {
14517                    helper.read_attrib(&mut mixed, b"mixed", &attrib.value)?;
14518                }
14519            }
14520            Ok(Box::new(Self {
14521                id: id,
14522                mixed: mixed,
14523                content: Vec::new(),
14524                state__: Box::new(ComplexContentDeserializerState::Init__),
14525            }))
14526        }
14527        fn finish_state(
14528            &mut self,
14529            helper: &mut DeserializeHelper,
14530            state: ComplexContentDeserializerState,
14531        ) -> Result<(), Error> {
14532            if let ComplexContentDeserializerState::Content__(deserializer) = state {
14533                self.store_content(deserializer.finish(helper)?)?;
14534            }
14535            Ok(())
14536        }
14537        fn store_content(&mut self, value: super::ComplexContentContent) -> Result<(), Error> {
14538            self.content.push(value);
14539            Ok(())
14540        }
14541        fn handle_content<'de>(
14542            &mut self,
14543            helper: &mut DeserializeHelper,
14544            output: DeserializerOutput<'de, super::ComplexContentContent>,
14545            fallback: &mut Option<ComplexContentDeserializerState>,
14546        ) -> Result<ElementHandlerOutput<'de>, Error> {
14547            let DeserializerOutput {
14548                artifact,
14549                event,
14550                allow_any,
14551            } = output;
14552            if artifact.is_none() {
14553                *self.state__ = fallback
14554                    .take()
14555                    .unwrap_or(ComplexContentDeserializerState::Next__);
14556                return Ok(ElementHandlerOutput::break_(event, allow_any));
14557            }
14558            if let Some(fallback) = fallback.take() {
14559                self.finish_state(helper, fallback)?;
14560            }
14561            Ok(match artifact {
14562                DeserializerArtifact::None => unreachable!(),
14563                DeserializerArtifact::Data(data) => {
14564                    self.store_content(data)?;
14565                    *self.state__ = ComplexContentDeserializerState::Next__;
14566                    ElementHandlerOutput::from_event(event, allow_any)
14567                }
14568                DeserializerArtifact::Deserializer(deserializer) => {
14569                    let can_have_more = self.content.len().saturating_add(1) < 2usize;
14570                    let ret = if can_have_more {
14571                        ElementHandlerOutput::from_event(event, allow_any)
14572                    } else {
14573                        ElementHandlerOutput::from_event_end(event, allow_any)
14574                    };
14575                    match (can_have_more, &ret) {
14576                        (true, ElementHandlerOutput::Continue { .. }) => {
14577                            fallback.get_or_insert(ComplexContentDeserializerState::Content__(
14578                                deserializer,
14579                            ));
14580                            *self.state__ = ComplexContentDeserializerState::Next__;
14581                        }
14582                        (false, _) | (_, ElementHandlerOutput::Break { .. }) => {
14583                            *self.state__ =
14584                                ComplexContentDeserializerState::Content__(deserializer);
14585                        }
14586                    }
14587                    ret
14588                }
14589            })
14590        }
14591    }
14592    impl<'de> Deserializer<'de, super::ComplexContent> for Box<ComplexContentDeserializer> {
14593        fn init(
14594            helper: &mut DeserializeHelper,
14595            event: Event<'de>,
14596        ) -> DeserializerResult<'de, super::ComplexContent> {
14597            helper.init_deserializer_from_start_event(
14598                event,
14599                ComplexContentDeserializer::from_bytes_start,
14600            )
14601        }
14602        fn next(
14603            mut self,
14604            helper: &mut DeserializeHelper,
14605            event: Event<'de>,
14606        ) -> DeserializerResult<'de, super::ComplexContent> {
14607            use ComplexContentDeserializerState as S;
14608            let mut event = event;
14609            let mut fallback = None;
14610            let (event, allow_any) = loop {
14611                let state = replace(&mut *self.state__, S::Unknown__);
14612                event = match (state, event) {
14613                    (S::Unknown__, _) => unreachable!(),
14614                    (S::Content__(deserializer), event) => {
14615                        let output = deserializer.next(helper, event)?;
14616                        match self.handle_content(helper, output, &mut fallback)? {
14617                            ElementHandlerOutput::Break { event, allow_any } => {
14618                                break (event, allow_any)
14619                            }
14620                            ElementHandlerOutput::Continue { event, .. } => event,
14621                        }
14622                    }
14623                    (_, Event::End(_)) => {
14624                        return Ok(DeserializerOutput {
14625                            artifact: DeserializerArtifact::Data(self.finish(helper)?),
14626                            event: DeserializerEvent::None,
14627                            allow_any: false,
14628                        });
14629                    }
14630                    (state @ (S::Init__ | S::Next__), event) => {
14631                        fallback.get_or_insert(state);
14632                        let output =
14633                            <super::ComplexContentContent as WithDeserializer>::Deserializer::init(
14634                                helper, event,
14635                            )?;
14636                        match self.handle_content(helper, output, &mut fallback)? {
14637                            ElementHandlerOutput::Break { event, allow_any } => {
14638                                break (event, allow_any)
14639                            }
14640                            ElementHandlerOutput::Continue { event, .. } => event,
14641                        }
14642                    }
14643                }
14644            };
14645            let artifact = DeserializerArtifact::Deserializer(self);
14646            Ok(DeserializerOutput {
14647                artifact,
14648                event,
14649                allow_any,
14650            })
14651        }
14652        fn finish(
14653            mut self,
14654            helper: &mut DeserializeHelper,
14655        ) -> Result<super::ComplexContent, Error> {
14656            let state = replace(
14657                &mut *self.state__,
14658                ComplexContentDeserializerState::Unknown__,
14659            );
14660            self.finish_state(helper, state)?;
14661            Ok(super::ComplexContent {
14662                id: self.id,
14663                mixed: self.mixed,
14664                content: self.content,
14665            })
14666        }
14667    }
14668    #[derive(Debug)]
14669    pub struct ComplexContentContentDeserializer {
14670        state__: Box<ComplexContentContentDeserializerState>,
14671    }
14672    #[derive(Debug)]
14673    pub enum ComplexContentContentDeserializerState {
14674        Init__,
14675        Annotation(
14676            Option<super::Annotation>,
14677            Option<<super::Annotation as WithDeserializer>::Deserializer>,
14678        ),
14679        Restriction(
14680            Option<super::RestrictionType>,
14681            Option<<super::RestrictionType as WithDeserializer>::Deserializer>,
14682        ),
14683        Extension(
14684            Option<super::ExtensionType>,
14685            Option<<super::ExtensionType as WithDeserializer>::Deserializer>,
14686        ),
14687        Done__(super::ComplexContentContent),
14688        Unknown__,
14689    }
14690    impl ComplexContentContentDeserializer {
14691        fn find_suitable<'de>(
14692            &mut self,
14693            helper: &mut DeserializeHelper,
14694            event: Event<'de>,
14695            fallback: &mut Option<ComplexContentContentDeserializerState>,
14696        ) -> Result<ElementHandlerOutput<'de>, Error> {
14697            if let Event::Start(x) | Event::Empty(x) = &event {
14698                if matches!(
14699                    helper.resolve_local_name(x.name(), &super::NS_XS),
14700                    Some(b"annotation")
14701                ) {
14702                    let output =
14703                        <super::Annotation as WithDeserializer>::Deserializer::init(helper, event)?;
14704                    return self.handle_annotation(
14705                        helper,
14706                        Default::default(),
14707                        output,
14708                        &mut *fallback,
14709                    );
14710                }
14711                if matches!(
14712                    helper.resolve_local_name(x.name(), &super::NS_XS),
14713                    Some(b"restriction")
14714                ) {
14715                    let output = <super::RestrictionType as WithDeserializer>::Deserializer::init(
14716                        helper, event,
14717                    )?;
14718                    return self.handle_restriction(
14719                        helper,
14720                        Default::default(),
14721                        output,
14722                        &mut *fallback,
14723                    );
14724                }
14725                if matches!(
14726                    helper.resolve_local_name(x.name(), &super::NS_XS),
14727                    Some(b"extension")
14728                ) {
14729                    let output = <super::ExtensionType as WithDeserializer>::Deserializer::init(
14730                        helper, event,
14731                    )?;
14732                    return self.handle_extension(
14733                        helper,
14734                        Default::default(),
14735                        output,
14736                        &mut *fallback,
14737                    );
14738                }
14739            }
14740            *self.state__ = fallback
14741                .take()
14742                .unwrap_or(ComplexContentContentDeserializerState::Init__);
14743            Ok(ElementHandlerOutput::return_to_parent(event, false))
14744        }
14745        fn finish_state(
14746            helper: &mut DeserializeHelper,
14747            state: ComplexContentContentDeserializerState,
14748        ) -> Result<super::ComplexContentContent, Error> {
14749            use ComplexContentContentDeserializerState as S;
14750            match state {
14751                S::Unknown__ => unreachable!(),
14752                S::Init__ => Err(ErrorKind::MissingContent.into()),
14753                S::Annotation(mut values, deserializer) => {
14754                    if let Some(deserializer) = deserializer {
14755                        let value = deserializer.finish(helper)?;
14756                        ComplexContentContentDeserializer::store_annotation(&mut values, value)?;
14757                    }
14758                    Ok(super::ComplexContentContent::Annotation(
14759                        values.ok_or_else(|| ErrorKind::MissingElement("annotation".into()))?,
14760                    ))
14761                }
14762                S::Restriction(mut values, deserializer) => {
14763                    if let Some(deserializer) = deserializer {
14764                        let value = deserializer.finish(helper)?;
14765                        ComplexContentContentDeserializer::store_restriction(&mut values, value)?;
14766                    }
14767                    Ok(super::ComplexContentContent::Restriction(
14768                        values.ok_or_else(|| ErrorKind::MissingElement("restriction".into()))?,
14769                    ))
14770                }
14771                S::Extension(mut values, deserializer) => {
14772                    if let Some(deserializer) = deserializer {
14773                        let value = deserializer.finish(helper)?;
14774                        ComplexContentContentDeserializer::store_extension(&mut values, value)?;
14775                    }
14776                    Ok(super::ComplexContentContent::Extension(values.ok_or_else(
14777                        || ErrorKind::MissingElement("extension".into()),
14778                    )?))
14779                }
14780                S::Done__(data) => Ok(data),
14781            }
14782        }
14783        fn store_annotation(
14784            values: &mut Option<super::Annotation>,
14785            value: super::Annotation,
14786        ) -> Result<(), Error> {
14787            if values.is_some() {
14788                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
14789                    b"annotation",
14790                )))?;
14791            }
14792            *values = Some(value);
14793            Ok(())
14794        }
14795        fn store_restriction(
14796            values: &mut Option<super::RestrictionType>,
14797            value: super::RestrictionType,
14798        ) -> Result<(), Error> {
14799            if values.is_some() {
14800                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
14801                    b"restriction",
14802                )))?;
14803            }
14804            *values = Some(value);
14805            Ok(())
14806        }
14807        fn store_extension(
14808            values: &mut Option<super::ExtensionType>,
14809            value: super::ExtensionType,
14810        ) -> Result<(), Error> {
14811            if values.is_some() {
14812                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
14813                    b"extension",
14814                )))?;
14815            }
14816            *values = Some(value);
14817            Ok(())
14818        }
14819        fn handle_annotation<'de>(
14820            &mut self,
14821            helper: &mut DeserializeHelper,
14822            mut values: Option<super::Annotation>,
14823            output: DeserializerOutput<'de, super::Annotation>,
14824            fallback: &mut Option<ComplexContentContentDeserializerState>,
14825        ) -> Result<ElementHandlerOutput<'de>, Error> {
14826            let DeserializerOutput {
14827                artifact,
14828                event,
14829                allow_any,
14830            } = output;
14831            if artifact.is_none() {
14832                *self.state__ = match fallback.take() {
14833                    None if values.is_none() => {
14834                        *self.state__ = ComplexContentContentDeserializerState::Init__;
14835                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
14836                    }
14837                    None => ComplexContentContentDeserializerState::Annotation(values, None),
14838                    Some(ComplexContentContentDeserializerState::Annotation(
14839                        _,
14840                        Some(deserializer),
14841                    )) => ComplexContentContentDeserializerState::Annotation(
14842                        values,
14843                        Some(deserializer),
14844                    ),
14845                    _ => unreachable!(),
14846                };
14847                return Ok(ElementHandlerOutput::break_(event, allow_any));
14848            }
14849            match fallback.take() {
14850                None => (),
14851                Some(ComplexContentContentDeserializerState::Annotation(_, Some(deserializer))) => {
14852                    let data = deserializer.finish(helper)?;
14853                    ComplexContentContentDeserializer::store_annotation(&mut values, data)?;
14854                }
14855                Some(_) => unreachable!(),
14856            }
14857            Ok(match artifact {
14858                DeserializerArtifact::None => unreachable!(),
14859                DeserializerArtifact::Data(data) => {
14860                    ComplexContentContentDeserializer::store_annotation(&mut values, data)?;
14861                    let data = ComplexContentContentDeserializer::finish_state(
14862                        helper,
14863                        ComplexContentContentDeserializerState::Annotation(values, None),
14864                    )?;
14865                    *self.state__ = ComplexContentContentDeserializerState::Done__(data);
14866                    ElementHandlerOutput::Break { event, allow_any }
14867                }
14868                DeserializerArtifact::Deserializer(deserializer) => {
14869                    *self.state__ = ComplexContentContentDeserializerState::Annotation(
14870                        values,
14871                        Some(deserializer),
14872                    );
14873                    ElementHandlerOutput::from_event_end(event, allow_any)
14874                }
14875            })
14876        }
14877        fn handle_restriction<'de>(
14878            &mut self,
14879            helper: &mut DeserializeHelper,
14880            mut values: Option<super::RestrictionType>,
14881            output: DeserializerOutput<'de, super::RestrictionType>,
14882            fallback: &mut Option<ComplexContentContentDeserializerState>,
14883        ) -> Result<ElementHandlerOutput<'de>, Error> {
14884            let DeserializerOutput {
14885                artifact,
14886                event,
14887                allow_any,
14888            } = output;
14889            if artifact.is_none() {
14890                *self.state__ = match fallback.take() {
14891                    None if values.is_none() => {
14892                        *self.state__ = ComplexContentContentDeserializerState::Init__;
14893                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
14894                    }
14895                    None => ComplexContentContentDeserializerState::Restriction(values, None),
14896                    Some(ComplexContentContentDeserializerState::Restriction(
14897                        _,
14898                        Some(deserializer),
14899                    )) => ComplexContentContentDeserializerState::Restriction(
14900                        values,
14901                        Some(deserializer),
14902                    ),
14903                    _ => unreachable!(),
14904                };
14905                return Ok(ElementHandlerOutput::break_(event, allow_any));
14906            }
14907            match fallback.take() {
14908                None => (),
14909                Some(ComplexContentContentDeserializerState::Restriction(
14910                    _,
14911                    Some(deserializer),
14912                )) => {
14913                    let data = deserializer.finish(helper)?;
14914                    ComplexContentContentDeserializer::store_restriction(&mut values, data)?;
14915                }
14916                Some(_) => unreachable!(),
14917            }
14918            Ok(match artifact {
14919                DeserializerArtifact::None => unreachable!(),
14920                DeserializerArtifact::Data(data) => {
14921                    ComplexContentContentDeserializer::store_restriction(&mut values, data)?;
14922                    let data = ComplexContentContentDeserializer::finish_state(
14923                        helper,
14924                        ComplexContentContentDeserializerState::Restriction(values, None),
14925                    )?;
14926                    *self.state__ = ComplexContentContentDeserializerState::Done__(data);
14927                    ElementHandlerOutput::Break { event, allow_any }
14928                }
14929                DeserializerArtifact::Deserializer(deserializer) => {
14930                    *self.state__ = ComplexContentContentDeserializerState::Restriction(
14931                        values,
14932                        Some(deserializer),
14933                    );
14934                    ElementHandlerOutput::from_event_end(event, allow_any)
14935                }
14936            })
14937        }
14938        fn handle_extension<'de>(
14939            &mut self,
14940            helper: &mut DeserializeHelper,
14941            mut values: Option<super::ExtensionType>,
14942            output: DeserializerOutput<'de, super::ExtensionType>,
14943            fallback: &mut Option<ComplexContentContentDeserializerState>,
14944        ) -> Result<ElementHandlerOutput<'de>, Error> {
14945            let DeserializerOutput {
14946                artifact,
14947                event,
14948                allow_any,
14949            } = output;
14950            if artifact.is_none() {
14951                *self.state__ = match fallback.take() {
14952                    None if values.is_none() => {
14953                        *self.state__ = ComplexContentContentDeserializerState::Init__;
14954                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
14955                    }
14956                    None => ComplexContentContentDeserializerState::Extension(values, None),
14957                    Some(ComplexContentContentDeserializerState::Extension(
14958                        _,
14959                        Some(deserializer),
14960                    )) => ComplexContentContentDeserializerState::Extension(
14961                        values,
14962                        Some(deserializer),
14963                    ),
14964                    _ => unreachable!(),
14965                };
14966                return Ok(ElementHandlerOutput::break_(event, allow_any));
14967            }
14968            match fallback.take() {
14969                None => (),
14970                Some(ComplexContentContentDeserializerState::Extension(_, Some(deserializer))) => {
14971                    let data = deserializer.finish(helper)?;
14972                    ComplexContentContentDeserializer::store_extension(&mut values, data)?;
14973                }
14974                Some(_) => unreachable!(),
14975            }
14976            Ok(match artifact {
14977                DeserializerArtifact::None => unreachable!(),
14978                DeserializerArtifact::Data(data) => {
14979                    ComplexContentContentDeserializer::store_extension(&mut values, data)?;
14980                    let data = ComplexContentContentDeserializer::finish_state(
14981                        helper,
14982                        ComplexContentContentDeserializerState::Extension(values, None),
14983                    )?;
14984                    *self.state__ = ComplexContentContentDeserializerState::Done__(data);
14985                    ElementHandlerOutput::Break { event, allow_any }
14986                }
14987                DeserializerArtifact::Deserializer(deserializer) => {
14988                    *self.state__ = ComplexContentContentDeserializerState::Extension(
14989                        values,
14990                        Some(deserializer),
14991                    );
14992                    ElementHandlerOutput::from_event_end(event, allow_any)
14993                }
14994            })
14995        }
14996    }
14997    impl<'de> Deserializer<'de, super::ComplexContentContent>
14998        for Box<ComplexContentContentDeserializer>
14999    {
15000        fn init(
15001            helper: &mut DeserializeHelper,
15002            event: Event<'de>,
15003        ) -> DeserializerResult<'de, super::ComplexContentContent> {
15004            let deserializer = Box::new(ComplexContentContentDeserializer {
15005                state__: Box::new(ComplexContentContentDeserializerState::Init__),
15006            });
15007            let mut output = deserializer.next(helper, event)?;
15008            output.artifact = match output.artifact {
15009                DeserializerArtifact::Deserializer(x)
15010                    if matches!(&*x.state__, ComplexContentContentDeserializerState::Init__) =>
15011                {
15012                    DeserializerArtifact::None
15013                }
15014                artifact => artifact,
15015            };
15016            Ok(output)
15017        }
15018        fn next(
15019            mut self,
15020            helper: &mut DeserializeHelper,
15021            event: Event<'de>,
15022        ) -> DeserializerResult<'de, super::ComplexContentContent> {
15023            use ComplexContentContentDeserializerState as S;
15024            let mut event = event;
15025            let mut fallback = None;
15026            let (event, allow_any) = loop {
15027                let state = replace(&mut *self.state__, S::Unknown__);
15028                event = match (state, event) {
15029                    (S::Unknown__, _) => unreachable!(),
15030                    (S::Annotation(values, Some(deserializer)), event) => {
15031                        let output = deserializer.next(helper, event)?;
15032                        match self.handle_annotation(helper, values, output, &mut fallback)? {
15033                            ElementHandlerOutput::Break { event, allow_any } => {
15034                                break (event, allow_any)
15035                            }
15036                            ElementHandlerOutput::Continue { event, .. } => event,
15037                        }
15038                    }
15039                    (S::Restriction(values, Some(deserializer)), event) => {
15040                        let output = deserializer.next(helper, event)?;
15041                        match self.handle_restriction(helper, values, output, &mut fallback)? {
15042                            ElementHandlerOutput::Break { event, allow_any } => {
15043                                break (event, allow_any)
15044                            }
15045                            ElementHandlerOutput::Continue { event, .. } => event,
15046                        }
15047                    }
15048                    (S::Extension(values, Some(deserializer)), event) => {
15049                        let output = deserializer.next(helper, event)?;
15050                        match self.handle_extension(helper, values, output, &mut fallback)? {
15051                            ElementHandlerOutput::Break { event, allow_any } => {
15052                                break (event, allow_any)
15053                            }
15054                            ElementHandlerOutput::Continue { event, .. } => event,
15055                        }
15056                    }
15057                    (state, event @ Event::End(_)) => {
15058                        return Ok(DeserializerOutput {
15059                            artifact: DeserializerArtifact::Data(
15060                                ComplexContentContentDeserializer::finish_state(helper, state)?,
15061                            ),
15062                            event: DeserializerEvent::Continue(event),
15063                            allow_any: false,
15064                        });
15065                    }
15066                    (S::Init__, event) => match self.find_suitable(helper, event, &mut fallback)? {
15067                        ElementHandlerOutput::Break { event, allow_any } => {
15068                            break (event, allow_any)
15069                        }
15070                        ElementHandlerOutput::Continue { event, .. } => event,
15071                    },
15072                    (S::Annotation(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
15073                        let output = helper.init_start_tag_deserializer(
15074                            event,
15075                            Some(&super::NS_XS),
15076                            b"annotation",
15077                            false,
15078                        )?;
15079                        match self.handle_annotation(helper, values, output, &mut fallback)? {
15080                            ElementHandlerOutput::Break { event, allow_any } => {
15081                                break (event, allow_any)
15082                            }
15083                            ElementHandlerOutput::Continue { event, .. } => event,
15084                        }
15085                    }
15086                    (S::Restriction(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
15087                        let output = helper.init_start_tag_deserializer(
15088                            event,
15089                            Some(&super::NS_XS),
15090                            b"restriction",
15091                            true,
15092                        )?;
15093                        match self.handle_restriction(helper, values, output, &mut fallback)? {
15094                            ElementHandlerOutput::Break { event, allow_any } => {
15095                                break (event, allow_any)
15096                            }
15097                            ElementHandlerOutput::Continue { event, .. } => event,
15098                        }
15099                    }
15100                    (S::Extension(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
15101                        let output = helper.init_start_tag_deserializer(
15102                            event,
15103                            Some(&super::NS_XS),
15104                            b"extension",
15105                            true,
15106                        )?;
15107                        match self.handle_extension(helper, values, output, &mut fallback)? {
15108                            ElementHandlerOutput::Break { event, allow_any } => {
15109                                break (event, allow_any)
15110                            }
15111                            ElementHandlerOutput::Continue { event, .. } => event,
15112                        }
15113                    }
15114                    (s @ S::Done__(_), event) => {
15115                        *self.state__ = s;
15116                        break (DeserializerEvent::Continue(event), false);
15117                    }
15118                    (state, event) => {
15119                        *self.state__ = state;
15120                        break (DeserializerEvent::Break(event), false);
15121                    }
15122                }
15123            };
15124            let artifact = if matches!(&*self.state__, S::Done__(_)) {
15125                DeserializerArtifact::Data(self.finish(helper)?)
15126            } else {
15127                DeserializerArtifact::Deserializer(self)
15128            };
15129            Ok(DeserializerOutput {
15130                artifact,
15131                event,
15132                allow_any,
15133            })
15134        }
15135        fn finish(
15136            self,
15137            helper: &mut DeserializeHelper,
15138        ) -> Result<super::ComplexContentContent, Error> {
15139            ComplexContentContentDeserializer::finish_state(helper, *self.state__)
15140        }
15141    }
15142    #[derive(Debug)]
15143    pub struct OpenContentDeserializer {
15144        id: Option<String>,
15145        mode: super::OpenContentModeType,
15146        annotation: Option<super::Annotation>,
15147        any: Option<super::WildcardType>,
15148        state__: Box<OpenContentDeserializerState>,
15149    }
15150    #[derive(Debug)]
15151    enum OpenContentDeserializerState {
15152        Init__,
15153        Annotation(Option<<super::Annotation as WithDeserializer>::Deserializer>),
15154        Any(Option<<super::WildcardType as WithDeserializer>::Deserializer>),
15155        Done__,
15156        Unknown__,
15157    }
15158    impl OpenContentDeserializer {
15159        fn from_bytes_start(
15160            helper: &mut DeserializeHelper,
15161            bytes_start: &BytesStart<'_>,
15162        ) -> Result<Box<Self>, Error> {
15163            let mut id: Option<String> = None;
15164            let mut mode: Option<super::OpenContentModeType> = None;
15165            for attrib in helper.filter_xmlns_attributes(bytes_start) {
15166                let attrib = attrib?;
15167                if matches!(
15168                    helper.resolve_local_name(attrib.key, &super::NS_XS),
15169                    Some(b"id")
15170                ) {
15171                    helper.read_attrib(&mut id, b"id", &attrib.value)?;
15172                } else if matches!(
15173                    helper.resolve_local_name(attrib.key, &super::NS_XS),
15174                    Some(b"mode")
15175                ) {
15176                    helper.read_attrib(&mut mode, b"mode", &attrib.value)?;
15177                }
15178            }
15179            Ok(Box::new(Self {
15180                id: id,
15181                mode: mode.unwrap_or_else(super::OpenContent::default_mode),
15182                annotation: None,
15183                any: None,
15184                state__: Box::new(OpenContentDeserializerState::Init__),
15185            }))
15186        }
15187        fn finish_state(
15188            &mut self,
15189            helper: &mut DeserializeHelper,
15190            state: OpenContentDeserializerState,
15191        ) -> Result<(), Error> {
15192            use OpenContentDeserializerState as S;
15193            match state {
15194                S::Annotation(Some(deserializer)) => {
15195                    self.store_annotation(deserializer.finish(helper)?)?
15196                }
15197                S::Any(Some(deserializer)) => self.store_any(deserializer.finish(helper)?)?,
15198                _ => (),
15199            }
15200            Ok(())
15201        }
15202        fn store_annotation(&mut self, value: super::Annotation) -> Result<(), Error> {
15203            if self.annotation.is_some() {
15204                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
15205                    b"annotation",
15206                )))?;
15207            }
15208            self.annotation = Some(value);
15209            Ok(())
15210        }
15211        fn store_any(&mut self, value: super::WildcardType) -> Result<(), Error> {
15212            if self.any.is_some() {
15213                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(b"any")))?;
15214            }
15215            self.any = Some(value);
15216            Ok(())
15217        }
15218        fn handle_annotation<'de>(
15219            &mut self,
15220            helper: &mut DeserializeHelper,
15221            output: DeserializerOutput<'de, super::Annotation>,
15222            fallback: &mut Option<OpenContentDeserializerState>,
15223        ) -> Result<ElementHandlerOutput<'de>, Error> {
15224            let DeserializerOutput {
15225                artifact,
15226                event,
15227                allow_any,
15228            } = output;
15229            if artifact.is_none() {
15230                fallback.get_or_insert(OpenContentDeserializerState::Annotation(None));
15231                *self.state__ = OpenContentDeserializerState::Any(None);
15232                return Ok(ElementHandlerOutput::from_event(event, allow_any));
15233            }
15234            if let Some(fallback) = fallback.take() {
15235                self.finish_state(helper, fallback)?;
15236            }
15237            Ok(match artifact {
15238                DeserializerArtifact::None => unreachable!(),
15239                DeserializerArtifact::Data(data) => {
15240                    self.store_annotation(data)?;
15241                    *self.state__ = OpenContentDeserializerState::Any(None);
15242                    ElementHandlerOutput::from_event(event, allow_any)
15243                }
15244                DeserializerArtifact::Deserializer(deserializer) => {
15245                    let ret = ElementHandlerOutput::from_event(event, allow_any);
15246                    match &ret {
15247                        ElementHandlerOutput::Continue { .. } => {
15248                            fallback.get_or_insert(OpenContentDeserializerState::Annotation(Some(
15249                                deserializer,
15250                            )));
15251                            *self.state__ = OpenContentDeserializerState::Any(None);
15252                        }
15253                        ElementHandlerOutput::Break { .. } => {
15254                            *self.state__ =
15255                                OpenContentDeserializerState::Annotation(Some(deserializer));
15256                        }
15257                    }
15258                    ret
15259                }
15260            })
15261        }
15262        fn handle_any<'de>(
15263            &mut self,
15264            helper: &mut DeserializeHelper,
15265            output: DeserializerOutput<'de, super::WildcardType>,
15266            fallback: &mut Option<OpenContentDeserializerState>,
15267        ) -> Result<ElementHandlerOutput<'de>, Error> {
15268            let DeserializerOutput {
15269                artifact,
15270                event,
15271                allow_any,
15272            } = output;
15273            if artifact.is_none() {
15274                fallback.get_or_insert(OpenContentDeserializerState::Any(None));
15275                *self.state__ = OpenContentDeserializerState::Done__;
15276                return Ok(ElementHandlerOutput::from_event(event, allow_any));
15277            }
15278            if let Some(fallback) = fallback.take() {
15279                self.finish_state(helper, fallback)?;
15280            }
15281            Ok(match artifact {
15282                DeserializerArtifact::None => unreachable!(),
15283                DeserializerArtifact::Data(data) => {
15284                    self.store_any(data)?;
15285                    *self.state__ = OpenContentDeserializerState::Done__;
15286                    ElementHandlerOutput::from_event(event, allow_any)
15287                }
15288                DeserializerArtifact::Deserializer(deserializer) => {
15289                    let ret = ElementHandlerOutput::from_event(event, allow_any);
15290                    match &ret {
15291                        ElementHandlerOutput::Continue { .. } => {
15292                            fallback.get_or_insert(OpenContentDeserializerState::Any(Some(
15293                                deserializer,
15294                            )));
15295                            *self.state__ = OpenContentDeserializerState::Done__;
15296                        }
15297                        ElementHandlerOutput::Break { .. } => {
15298                            *self.state__ = OpenContentDeserializerState::Any(Some(deserializer));
15299                        }
15300                    }
15301                    ret
15302                }
15303            })
15304        }
15305    }
15306    impl<'de> Deserializer<'de, super::OpenContent> for Box<OpenContentDeserializer> {
15307        fn init(
15308            helper: &mut DeserializeHelper,
15309            event: Event<'de>,
15310        ) -> DeserializerResult<'de, super::OpenContent> {
15311            helper.init_deserializer_from_start_event(
15312                event,
15313                OpenContentDeserializer::from_bytes_start,
15314            )
15315        }
15316        fn next(
15317            mut self,
15318            helper: &mut DeserializeHelper,
15319            event: Event<'de>,
15320        ) -> DeserializerResult<'de, super::OpenContent> {
15321            use OpenContentDeserializerState as S;
15322            let mut event = event;
15323            let mut fallback = None;
15324            let mut allow_any_element = false;
15325            let (event, allow_any) = loop {
15326                let state = replace(&mut *self.state__, S::Unknown__);
15327                event = match (state, event) {
15328                    (S::Unknown__, _) => unreachable!(),
15329                    (S::Annotation(Some(deserializer)), event) => {
15330                        let output = deserializer.next(helper, event)?;
15331                        match self.handle_annotation(helper, output, &mut fallback)? {
15332                            ElementHandlerOutput::Continue { event, allow_any } => {
15333                                allow_any_element = allow_any_element || allow_any;
15334                                event
15335                            }
15336                            ElementHandlerOutput::Break { event, allow_any } => {
15337                                break (event, allow_any)
15338                            }
15339                        }
15340                    }
15341                    (S::Any(Some(deserializer)), event) => {
15342                        let output = deserializer.next(helper, event)?;
15343                        match self.handle_any(helper, output, &mut fallback)? {
15344                            ElementHandlerOutput::Continue { event, allow_any } => {
15345                                allow_any_element = allow_any_element || allow_any;
15346                                event
15347                            }
15348                            ElementHandlerOutput::Break { event, allow_any } => {
15349                                break (event, allow_any)
15350                            }
15351                        }
15352                    }
15353                    (_, Event::End(_)) => {
15354                        if let Some(fallback) = fallback.take() {
15355                            self.finish_state(helper, fallback)?;
15356                        }
15357                        return Ok(DeserializerOutput {
15358                            artifact: DeserializerArtifact::Data(self.finish(helper)?),
15359                            event: DeserializerEvent::None,
15360                            allow_any: false,
15361                        });
15362                    }
15363                    (S::Init__, event) => {
15364                        fallback.get_or_insert(S::Init__);
15365                        *self.state__ = OpenContentDeserializerState::Annotation(None);
15366                        event
15367                    }
15368                    (S::Annotation(None), event @ (Event::Start(_) | Event::Empty(_))) => {
15369                        let output = helper.init_start_tag_deserializer(
15370                            event,
15371                            Some(&super::NS_XS),
15372                            b"annotation",
15373                            false,
15374                        )?;
15375                        match self.handle_annotation(helper, output, &mut fallback)? {
15376                            ElementHandlerOutput::Continue { event, allow_any } => {
15377                                allow_any_element = allow_any_element || allow_any;
15378                                event
15379                            }
15380                            ElementHandlerOutput::Break { event, allow_any } => {
15381                                break (event, allow_any)
15382                            }
15383                        }
15384                    }
15385                    (S::Any(None), event @ (Event::Start(_) | Event::Empty(_))) => {
15386                        let output = helper.init_start_tag_deserializer(
15387                            event,
15388                            Some(&super::NS_XS),
15389                            b"any",
15390                            false,
15391                        )?;
15392                        match self.handle_any(helper, output, &mut fallback)? {
15393                            ElementHandlerOutput::Continue { event, allow_any } => {
15394                                allow_any_element = allow_any_element || allow_any;
15395                                event
15396                            }
15397                            ElementHandlerOutput::Break { event, allow_any } => {
15398                                break (event, allow_any)
15399                            }
15400                        }
15401                    }
15402                    (S::Done__, event) => {
15403                        fallback.get_or_insert(S::Done__);
15404                        break (DeserializerEvent::Continue(event), allow_any_element);
15405                    }
15406                    (state, event) => {
15407                        *self.state__ = state;
15408                        break (DeserializerEvent::Break(event), false);
15409                    }
15410                }
15411            };
15412            if let Some(fallback) = fallback {
15413                *self.state__ = fallback;
15414            }
15415            Ok(DeserializerOutput {
15416                artifact: DeserializerArtifact::Deserializer(self),
15417                event,
15418                allow_any,
15419            })
15420        }
15421        fn finish(mut self, helper: &mut DeserializeHelper) -> Result<super::OpenContent, Error> {
15422            let state = replace(&mut *self.state__, OpenContentDeserializerState::Unknown__);
15423            self.finish_state(helper, state)?;
15424            Ok(super::OpenContent {
15425                id: self.id,
15426                mode: self.mode,
15427                annotation: self.annotation,
15428                any: self.any,
15429            })
15430        }
15431    }
15432    #[derive(Debug)]
15433    pub struct AnyAttributeDeserializer {
15434        id: Option<String>,
15435        namespace: Option<super::NamespaceListType>,
15436        not_namespace: Option<super::NotNamespaceType>,
15437        process_contents: super::ProcessContentsType,
15438        not_q_name: Option<super::QnameListAType>,
15439        annotation: Option<super::Annotation>,
15440        state__: Box<AnyAttributeDeserializerState>,
15441    }
15442    #[derive(Debug)]
15443    enum AnyAttributeDeserializerState {
15444        Init__,
15445        Annotation(Option<<super::Annotation as WithDeserializer>::Deserializer>),
15446        Done__,
15447        Unknown__,
15448    }
15449    impl AnyAttributeDeserializer {
15450        fn from_bytes_start(
15451            helper: &mut DeserializeHelper,
15452            bytes_start: &BytesStart<'_>,
15453        ) -> Result<Box<Self>, Error> {
15454            let mut id: Option<String> = None;
15455            let mut namespace: Option<super::NamespaceListType> = None;
15456            let mut not_namespace: Option<super::NotNamespaceType> = None;
15457            let mut process_contents: Option<super::ProcessContentsType> = None;
15458            let mut not_q_name: Option<super::QnameListAType> = None;
15459            for attrib in helper.filter_xmlns_attributes(bytes_start) {
15460                let attrib = attrib?;
15461                if matches!(
15462                    helper.resolve_local_name(attrib.key, &super::NS_XS),
15463                    Some(b"id")
15464                ) {
15465                    helper.read_attrib(&mut id, b"id", &attrib.value)?;
15466                } else if matches!(
15467                    helper.resolve_local_name(attrib.key, &super::NS_XS),
15468                    Some(b"namespace")
15469                ) {
15470                    helper.read_attrib(&mut namespace, b"namespace", &attrib.value)?;
15471                } else if matches!(
15472                    helper.resolve_local_name(attrib.key, &super::NS_XS),
15473                    Some(b"notNamespace")
15474                ) {
15475                    helper.read_attrib(&mut not_namespace, b"notNamespace", &attrib.value)?;
15476                } else if matches!(
15477                    helper.resolve_local_name(attrib.key, &super::NS_XS),
15478                    Some(b"processContents")
15479                ) {
15480                    helper.read_attrib(&mut process_contents, b"processContents", &attrib.value)?;
15481                } else if matches!(
15482                    helper.resolve_local_name(attrib.key, &super::NS_XS),
15483                    Some(b"notQName")
15484                ) {
15485                    helper.read_attrib(&mut not_q_name, b"notQName", &attrib.value)?;
15486                }
15487            }
15488            Ok(Box::new(Self {
15489                id: id,
15490                namespace: namespace,
15491                not_namespace: not_namespace,
15492                process_contents: process_contents
15493                    .unwrap_or_else(super::AnyAttribute::default_process_contents),
15494                not_q_name: not_q_name,
15495                annotation: None,
15496                state__: Box::new(AnyAttributeDeserializerState::Init__),
15497            }))
15498        }
15499        fn finish_state(
15500            &mut self,
15501            helper: &mut DeserializeHelper,
15502            state: AnyAttributeDeserializerState,
15503        ) -> Result<(), Error> {
15504            use AnyAttributeDeserializerState as S;
15505            match state {
15506                S::Annotation(Some(deserializer)) => {
15507                    self.store_annotation(deserializer.finish(helper)?)?
15508                }
15509                _ => (),
15510            }
15511            Ok(())
15512        }
15513        fn store_annotation(&mut self, value: super::Annotation) -> Result<(), Error> {
15514            if self.annotation.is_some() {
15515                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
15516                    b"annotation",
15517                )))?;
15518            }
15519            self.annotation = Some(value);
15520            Ok(())
15521        }
15522        fn handle_annotation<'de>(
15523            &mut self,
15524            helper: &mut DeserializeHelper,
15525            output: DeserializerOutput<'de, super::Annotation>,
15526            fallback: &mut Option<AnyAttributeDeserializerState>,
15527        ) -> Result<ElementHandlerOutput<'de>, Error> {
15528            let DeserializerOutput {
15529                artifact,
15530                event,
15531                allow_any,
15532            } = output;
15533            if artifact.is_none() {
15534                fallback.get_or_insert(AnyAttributeDeserializerState::Annotation(None));
15535                *self.state__ = AnyAttributeDeserializerState::Done__;
15536                return Ok(ElementHandlerOutput::from_event(event, allow_any));
15537            }
15538            if let Some(fallback) = fallback.take() {
15539                self.finish_state(helper, fallback)?;
15540            }
15541            Ok(match artifact {
15542                DeserializerArtifact::None => unreachable!(),
15543                DeserializerArtifact::Data(data) => {
15544                    self.store_annotation(data)?;
15545                    *self.state__ = AnyAttributeDeserializerState::Done__;
15546                    ElementHandlerOutput::from_event(event, allow_any)
15547                }
15548                DeserializerArtifact::Deserializer(deserializer) => {
15549                    let ret = ElementHandlerOutput::from_event(event, allow_any);
15550                    match &ret {
15551                        ElementHandlerOutput::Continue { .. } => {
15552                            fallback.get_or_insert(AnyAttributeDeserializerState::Annotation(
15553                                Some(deserializer),
15554                            ));
15555                            *self.state__ = AnyAttributeDeserializerState::Done__;
15556                        }
15557                        ElementHandlerOutput::Break { .. } => {
15558                            *self.state__ =
15559                                AnyAttributeDeserializerState::Annotation(Some(deserializer));
15560                        }
15561                    }
15562                    ret
15563                }
15564            })
15565        }
15566    }
15567    impl<'de> Deserializer<'de, super::AnyAttribute> for Box<AnyAttributeDeserializer> {
15568        fn init(
15569            helper: &mut DeserializeHelper,
15570            event: Event<'de>,
15571        ) -> DeserializerResult<'de, super::AnyAttribute> {
15572            helper.init_deserializer_from_start_event(
15573                event,
15574                AnyAttributeDeserializer::from_bytes_start,
15575            )
15576        }
15577        fn next(
15578            mut self,
15579            helper: &mut DeserializeHelper,
15580            event: Event<'de>,
15581        ) -> DeserializerResult<'de, super::AnyAttribute> {
15582            use AnyAttributeDeserializerState as S;
15583            let mut event = event;
15584            let mut fallback = None;
15585            let mut allow_any_element = false;
15586            let (event, allow_any) = loop {
15587                let state = replace(&mut *self.state__, S::Unknown__);
15588                event = match (state, event) {
15589                    (S::Unknown__, _) => unreachable!(),
15590                    (S::Annotation(Some(deserializer)), event) => {
15591                        let output = deserializer.next(helper, event)?;
15592                        match self.handle_annotation(helper, output, &mut fallback)? {
15593                            ElementHandlerOutput::Continue { event, allow_any } => {
15594                                allow_any_element = allow_any_element || allow_any;
15595                                event
15596                            }
15597                            ElementHandlerOutput::Break { event, allow_any } => {
15598                                break (event, allow_any)
15599                            }
15600                        }
15601                    }
15602                    (_, Event::End(_)) => {
15603                        if let Some(fallback) = fallback.take() {
15604                            self.finish_state(helper, fallback)?;
15605                        }
15606                        return Ok(DeserializerOutput {
15607                            artifact: DeserializerArtifact::Data(self.finish(helper)?),
15608                            event: DeserializerEvent::None,
15609                            allow_any: false,
15610                        });
15611                    }
15612                    (S::Init__, event) => {
15613                        fallback.get_or_insert(S::Init__);
15614                        *self.state__ = AnyAttributeDeserializerState::Annotation(None);
15615                        event
15616                    }
15617                    (S::Annotation(None), event @ (Event::Start(_) | Event::Empty(_))) => {
15618                        let output = helper.init_start_tag_deserializer(
15619                            event,
15620                            Some(&super::NS_XS),
15621                            b"annotation",
15622                            false,
15623                        )?;
15624                        match self.handle_annotation(helper, output, &mut fallback)? {
15625                            ElementHandlerOutput::Continue { event, allow_any } => {
15626                                allow_any_element = allow_any_element || allow_any;
15627                                event
15628                            }
15629                            ElementHandlerOutput::Break { event, allow_any } => {
15630                                break (event, allow_any)
15631                            }
15632                        }
15633                    }
15634                    (S::Done__, event) => {
15635                        fallback.get_or_insert(S::Done__);
15636                        break (DeserializerEvent::Continue(event), allow_any_element);
15637                    }
15638                    (state, event) => {
15639                        *self.state__ = state;
15640                        break (DeserializerEvent::Break(event), false);
15641                    }
15642                }
15643            };
15644            if let Some(fallback) = fallback {
15645                *self.state__ = fallback;
15646            }
15647            Ok(DeserializerOutput {
15648                artifact: DeserializerArtifact::Deserializer(self),
15649                event,
15650                allow_any,
15651            })
15652        }
15653        fn finish(mut self, helper: &mut DeserializeHelper) -> Result<super::AnyAttribute, Error> {
15654            let state = replace(&mut *self.state__, AnyAttributeDeserializerState::Unknown__);
15655            self.finish_state(helper, state)?;
15656            Ok(super::AnyAttribute {
15657                id: self.id,
15658                namespace: self.namespace,
15659                not_namespace: self.not_namespace,
15660                process_contents: self.process_contents,
15661                not_q_name: self.not_q_name,
15662                annotation: self.annotation,
15663            })
15664        }
15665    }
15666    #[derive(Debug)]
15667    pub struct AssertionTypeDeserializer {
15668        id: Option<String>,
15669        test: Option<String>,
15670        xpath_default_namespace: Option<super::XpathDefaultNamespaceType>,
15671        annotation: Option<super::Annotation>,
15672        state__: Box<AssertionTypeDeserializerState>,
15673    }
15674    #[derive(Debug)]
15675    enum AssertionTypeDeserializerState {
15676        Init__,
15677        Annotation(Option<<super::Annotation as WithDeserializer>::Deserializer>),
15678        Done__,
15679        Unknown__,
15680    }
15681    impl AssertionTypeDeserializer {
15682        fn from_bytes_start(
15683            helper: &mut DeserializeHelper,
15684            bytes_start: &BytesStart<'_>,
15685        ) -> Result<Box<Self>, Error> {
15686            let mut id: Option<String> = None;
15687            let mut test: Option<String> = None;
15688            let mut xpath_default_namespace: Option<super::XpathDefaultNamespaceType> = None;
15689            for attrib in helper.filter_xmlns_attributes(bytes_start) {
15690                let attrib = attrib?;
15691                if matches!(
15692                    helper.resolve_local_name(attrib.key, &super::NS_XS),
15693                    Some(b"id")
15694                ) {
15695                    helper.read_attrib(&mut id, b"id", &attrib.value)?;
15696                } else if matches!(
15697                    helper.resolve_local_name(attrib.key, &super::NS_XS),
15698                    Some(b"test")
15699                ) {
15700                    helper.read_attrib(&mut test, b"test", &attrib.value)?;
15701                } else if matches!(
15702                    helper.resolve_local_name(attrib.key, &super::NS_XS),
15703                    Some(b"xpathDefaultNamespace")
15704                ) {
15705                    helper.read_attrib(
15706                        &mut xpath_default_namespace,
15707                        b"xpathDefaultNamespace",
15708                        &attrib.value,
15709                    )?;
15710                }
15711            }
15712            Ok(Box::new(Self {
15713                id: id,
15714                test: test,
15715                xpath_default_namespace: xpath_default_namespace,
15716                annotation: None,
15717                state__: Box::new(AssertionTypeDeserializerState::Init__),
15718            }))
15719        }
15720        fn finish_state(
15721            &mut self,
15722            helper: &mut DeserializeHelper,
15723            state: AssertionTypeDeserializerState,
15724        ) -> Result<(), Error> {
15725            use AssertionTypeDeserializerState as S;
15726            match state {
15727                S::Annotation(Some(deserializer)) => {
15728                    self.store_annotation(deserializer.finish(helper)?)?
15729                }
15730                _ => (),
15731            }
15732            Ok(())
15733        }
15734        fn store_annotation(&mut self, value: super::Annotation) -> Result<(), Error> {
15735            if self.annotation.is_some() {
15736                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
15737                    b"annotation",
15738                )))?;
15739            }
15740            self.annotation = Some(value);
15741            Ok(())
15742        }
15743        fn handle_annotation<'de>(
15744            &mut self,
15745            helper: &mut DeserializeHelper,
15746            output: DeserializerOutput<'de, super::Annotation>,
15747            fallback: &mut Option<AssertionTypeDeserializerState>,
15748        ) -> Result<ElementHandlerOutput<'de>, Error> {
15749            let DeserializerOutput {
15750                artifact,
15751                event,
15752                allow_any,
15753            } = output;
15754            if artifact.is_none() {
15755                fallback.get_or_insert(AssertionTypeDeserializerState::Annotation(None));
15756                *self.state__ = AssertionTypeDeserializerState::Done__;
15757                return Ok(ElementHandlerOutput::from_event(event, allow_any));
15758            }
15759            if let Some(fallback) = fallback.take() {
15760                self.finish_state(helper, fallback)?;
15761            }
15762            Ok(match artifact {
15763                DeserializerArtifact::None => unreachable!(),
15764                DeserializerArtifact::Data(data) => {
15765                    self.store_annotation(data)?;
15766                    *self.state__ = AssertionTypeDeserializerState::Done__;
15767                    ElementHandlerOutput::from_event(event, allow_any)
15768                }
15769                DeserializerArtifact::Deserializer(deserializer) => {
15770                    let ret = ElementHandlerOutput::from_event(event, allow_any);
15771                    match &ret {
15772                        ElementHandlerOutput::Continue { .. } => {
15773                            fallback.get_or_insert(AssertionTypeDeserializerState::Annotation(
15774                                Some(deserializer),
15775                            ));
15776                            *self.state__ = AssertionTypeDeserializerState::Done__;
15777                        }
15778                        ElementHandlerOutput::Break { .. } => {
15779                            *self.state__ =
15780                                AssertionTypeDeserializerState::Annotation(Some(deserializer));
15781                        }
15782                    }
15783                    ret
15784                }
15785            })
15786        }
15787    }
15788    impl<'de> Deserializer<'de, super::AssertionType> for Box<AssertionTypeDeserializer> {
15789        fn init(
15790            helper: &mut DeserializeHelper,
15791            event: Event<'de>,
15792        ) -> DeserializerResult<'de, super::AssertionType> {
15793            helper.init_deserializer_from_start_event(
15794                event,
15795                AssertionTypeDeserializer::from_bytes_start,
15796            )
15797        }
15798        fn next(
15799            mut self,
15800            helper: &mut DeserializeHelper,
15801            event: Event<'de>,
15802        ) -> DeserializerResult<'de, super::AssertionType> {
15803            use AssertionTypeDeserializerState as S;
15804            let mut event = event;
15805            let mut fallback = None;
15806            let mut allow_any_element = false;
15807            let (event, allow_any) = loop {
15808                let state = replace(&mut *self.state__, S::Unknown__);
15809                event = match (state, event) {
15810                    (S::Unknown__, _) => unreachable!(),
15811                    (S::Annotation(Some(deserializer)), event) => {
15812                        let output = deserializer.next(helper, event)?;
15813                        match self.handle_annotation(helper, output, &mut fallback)? {
15814                            ElementHandlerOutput::Continue { event, allow_any } => {
15815                                allow_any_element = allow_any_element || allow_any;
15816                                event
15817                            }
15818                            ElementHandlerOutput::Break { event, allow_any } => {
15819                                break (event, allow_any)
15820                            }
15821                        }
15822                    }
15823                    (_, Event::End(_)) => {
15824                        if let Some(fallback) = fallback.take() {
15825                            self.finish_state(helper, fallback)?;
15826                        }
15827                        return Ok(DeserializerOutput {
15828                            artifact: DeserializerArtifact::Data(self.finish(helper)?),
15829                            event: DeserializerEvent::None,
15830                            allow_any: false,
15831                        });
15832                    }
15833                    (S::Init__, event) => {
15834                        fallback.get_or_insert(S::Init__);
15835                        *self.state__ = AssertionTypeDeserializerState::Annotation(None);
15836                        event
15837                    }
15838                    (S::Annotation(None), event @ (Event::Start(_) | Event::Empty(_))) => {
15839                        let output = helper.init_start_tag_deserializer(
15840                            event,
15841                            Some(&super::NS_XS),
15842                            b"annotation",
15843                            false,
15844                        )?;
15845                        match self.handle_annotation(helper, output, &mut fallback)? {
15846                            ElementHandlerOutput::Continue { event, allow_any } => {
15847                                allow_any_element = allow_any_element || allow_any;
15848                                event
15849                            }
15850                            ElementHandlerOutput::Break { event, allow_any } => {
15851                                break (event, allow_any)
15852                            }
15853                        }
15854                    }
15855                    (S::Done__, event) => {
15856                        fallback.get_or_insert(S::Done__);
15857                        break (DeserializerEvent::Continue(event), allow_any_element);
15858                    }
15859                    (state, event) => {
15860                        *self.state__ = state;
15861                        break (DeserializerEvent::Break(event), false);
15862                    }
15863                }
15864            };
15865            if let Some(fallback) = fallback {
15866                *self.state__ = fallback;
15867            }
15868            Ok(DeserializerOutput {
15869                artifact: DeserializerArtifact::Deserializer(self),
15870                event,
15871                allow_any,
15872            })
15873        }
15874        fn finish(mut self, helper: &mut DeserializeHelper) -> Result<super::AssertionType, Error> {
15875            let state = replace(
15876                &mut *self.state__,
15877                AssertionTypeDeserializerState::Unknown__,
15878            );
15879            self.finish_state(helper, state)?;
15880            Ok(super::AssertionType {
15881                id: self.id,
15882                test: self.test,
15883                xpath_default_namespace: self.xpath_default_namespace,
15884                annotation: self.annotation,
15885            })
15886        }
15887    }
15888    #[derive(Debug)]
15889    pub struct AnyDeserializer {
15890        id: Option<String>,
15891        namespace: Option<super::NamespaceListType>,
15892        not_namespace: Option<super::NotNamespaceType>,
15893        process_contents: super::ProcessContentsType,
15894        not_q_name: Option<super::QnameListType>,
15895        min_occurs: usize,
15896        max_occurs: MaxOccurs,
15897        annotation: Option<super::Annotation>,
15898        state__: Box<AnyDeserializerState>,
15899    }
15900    #[derive(Debug)]
15901    enum AnyDeserializerState {
15902        Init__,
15903        Annotation(Option<<super::Annotation as WithDeserializer>::Deserializer>),
15904        Done__,
15905        Unknown__,
15906    }
15907    impl AnyDeserializer {
15908        fn from_bytes_start(
15909            helper: &mut DeserializeHelper,
15910            bytes_start: &BytesStart<'_>,
15911        ) -> Result<Box<Self>, Error> {
15912            let mut id: Option<String> = None;
15913            let mut namespace: Option<super::NamespaceListType> = None;
15914            let mut not_namespace: Option<super::NotNamespaceType> = None;
15915            let mut process_contents: Option<super::ProcessContentsType> = None;
15916            let mut not_q_name: Option<super::QnameListType> = None;
15917            let mut min_occurs: Option<usize> = None;
15918            let mut max_occurs: Option<MaxOccurs> = None;
15919            for attrib in helper.filter_xmlns_attributes(bytes_start) {
15920                let attrib = attrib?;
15921                if matches!(
15922                    helper.resolve_local_name(attrib.key, &super::NS_XS),
15923                    Some(b"id")
15924                ) {
15925                    helper.read_attrib(&mut id, b"id", &attrib.value)?;
15926                } else if matches!(
15927                    helper.resolve_local_name(attrib.key, &super::NS_XS),
15928                    Some(b"namespace")
15929                ) {
15930                    helper.read_attrib(&mut namespace, b"namespace", &attrib.value)?;
15931                } else if matches!(
15932                    helper.resolve_local_name(attrib.key, &super::NS_XS),
15933                    Some(b"notNamespace")
15934                ) {
15935                    helper.read_attrib(&mut not_namespace, b"notNamespace", &attrib.value)?;
15936                } else if matches!(
15937                    helper.resolve_local_name(attrib.key, &super::NS_XS),
15938                    Some(b"processContents")
15939                ) {
15940                    helper.read_attrib(&mut process_contents, b"processContents", &attrib.value)?;
15941                } else if matches!(
15942                    helper.resolve_local_name(attrib.key, &super::NS_XS),
15943                    Some(b"notQName")
15944                ) {
15945                    helper.read_attrib(&mut not_q_name, b"notQName", &attrib.value)?;
15946                } else if matches!(
15947                    helper.resolve_local_name(attrib.key, &super::NS_XS),
15948                    Some(b"minOccurs")
15949                ) {
15950                    helper.read_attrib(&mut min_occurs, b"minOccurs", &attrib.value)?;
15951                } else if matches!(
15952                    helper.resolve_local_name(attrib.key, &super::NS_XS),
15953                    Some(b"maxOccurs")
15954                ) {
15955                    helper.read_attrib(&mut max_occurs, b"maxOccurs", &attrib.value)?;
15956                }
15957            }
15958            Ok(Box::new(Self {
15959                id: id,
15960                namespace: namespace,
15961                not_namespace: not_namespace,
15962                process_contents: process_contents
15963                    .unwrap_or_else(super::Any::default_process_contents),
15964                not_q_name: not_q_name,
15965                min_occurs: min_occurs.unwrap_or_else(super::Any::default_min_occurs),
15966                max_occurs: max_occurs.unwrap_or_else(super::Any::default_max_occurs),
15967                annotation: None,
15968                state__: Box::new(AnyDeserializerState::Init__),
15969            }))
15970        }
15971        fn finish_state(
15972            &mut self,
15973            helper: &mut DeserializeHelper,
15974            state: AnyDeserializerState,
15975        ) -> Result<(), Error> {
15976            use AnyDeserializerState as S;
15977            match state {
15978                S::Annotation(Some(deserializer)) => {
15979                    self.store_annotation(deserializer.finish(helper)?)?
15980                }
15981                _ => (),
15982            }
15983            Ok(())
15984        }
15985        fn store_annotation(&mut self, value: super::Annotation) -> Result<(), Error> {
15986            if self.annotation.is_some() {
15987                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
15988                    b"annotation",
15989                )))?;
15990            }
15991            self.annotation = Some(value);
15992            Ok(())
15993        }
15994        fn handle_annotation<'de>(
15995            &mut self,
15996            helper: &mut DeserializeHelper,
15997            output: DeserializerOutput<'de, super::Annotation>,
15998            fallback: &mut Option<AnyDeserializerState>,
15999        ) -> Result<ElementHandlerOutput<'de>, Error> {
16000            let DeserializerOutput {
16001                artifact,
16002                event,
16003                allow_any,
16004            } = output;
16005            if artifact.is_none() {
16006                fallback.get_or_insert(AnyDeserializerState::Annotation(None));
16007                *self.state__ = AnyDeserializerState::Done__;
16008                return Ok(ElementHandlerOutput::from_event(event, allow_any));
16009            }
16010            if let Some(fallback) = fallback.take() {
16011                self.finish_state(helper, fallback)?;
16012            }
16013            Ok(match artifact {
16014                DeserializerArtifact::None => unreachable!(),
16015                DeserializerArtifact::Data(data) => {
16016                    self.store_annotation(data)?;
16017                    *self.state__ = AnyDeserializerState::Done__;
16018                    ElementHandlerOutput::from_event(event, allow_any)
16019                }
16020                DeserializerArtifact::Deserializer(deserializer) => {
16021                    let ret = ElementHandlerOutput::from_event(event, allow_any);
16022                    match &ret {
16023                        ElementHandlerOutput::Continue { .. } => {
16024                            fallback.get_or_insert(AnyDeserializerState::Annotation(Some(
16025                                deserializer,
16026                            )));
16027                            *self.state__ = AnyDeserializerState::Done__;
16028                        }
16029                        ElementHandlerOutput::Break { .. } => {
16030                            *self.state__ = AnyDeserializerState::Annotation(Some(deserializer));
16031                        }
16032                    }
16033                    ret
16034                }
16035            })
16036        }
16037    }
16038    impl<'de> Deserializer<'de, super::Any> for Box<AnyDeserializer> {
16039        fn init(
16040            helper: &mut DeserializeHelper,
16041            event: Event<'de>,
16042        ) -> DeserializerResult<'de, super::Any> {
16043            helper.init_deserializer_from_start_event(event, AnyDeserializer::from_bytes_start)
16044        }
16045        fn next(
16046            mut self,
16047            helper: &mut DeserializeHelper,
16048            event: Event<'de>,
16049        ) -> DeserializerResult<'de, super::Any> {
16050            use AnyDeserializerState as S;
16051            let mut event = event;
16052            let mut fallback = None;
16053            let mut allow_any_element = false;
16054            let (event, allow_any) = loop {
16055                let state = replace(&mut *self.state__, S::Unknown__);
16056                event = match (state, event) {
16057                    (S::Unknown__, _) => unreachable!(),
16058                    (S::Annotation(Some(deserializer)), event) => {
16059                        let output = deserializer.next(helper, event)?;
16060                        match self.handle_annotation(helper, output, &mut fallback)? {
16061                            ElementHandlerOutput::Continue { event, allow_any } => {
16062                                allow_any_element = allow_any_element || allow_any;
16063                                event
16064                            }
16065                            ElementHandlerOutput::Break { event, allow_any } => {
16066                                break (event, allow_any)
16067                            }
16068                        }
16069                    }
16070                    (_, Event::End(_)) => {
16071                        if let Some(fallback) = fallback.take() {
16072                            self.finish_state(helper, fallback)?;
16073                        }
16074                        return Ok(DeserializerOutput {
16075                            artifact: DeserializerArtifact::Data(self.finish(helper)?),
16076                            event: DeserializerEvent::None,
16077                            allow_any: false,
16078                        });
16079                    }
16080                    (S::Init__, event) => {
16081                        fallback.get_or_insert(S::Init__);
16082                        *self.state__ = AnyDeserializerState::Annotation(None);
16083                        event
16084                    }
16085                    (S::Annotation(None), event @ (Event::Start(_) | Event::Empty(_))) => {
16086                        let output = helper.init_start_tag_deserializer(
16087                            event,
16088                            Some(&super::NS_XS),
16089                            b"annotation",
16090                            false,
16091                        )?;
16092                        match self.handle_annotation(helper, output, &mut fallback)? {
16093                            ElementHandlerOutput::Continue { event, allow_any } => {
16094                                allow_any_element = allow_any_element || allow_any;
16095                                event
16096                            }
16097                            ElementHandlerOutput::Break { event, allow_any } => {
16098                                break (event, allow_any)
16099                            }
16100                        }
16101                    }
16102                    (S::Done__, event) => {
16103                        fallback.get_or_insert(S::Done__);
16104                        break (DeserializerEvent::Continue(event), allow_any_element);
16105                    }
16106                    (state, event) => {
16107                        *self.state__ = state;
16108                        break (DeserializerEvent::Break(event), false);
16109                    }
16110                }
16111            };
16112            if let Some(fallback) = fallback {
16113                *self.state__ = fallback;
16114            }
16115            Ok(DeserializerOutput {
16116                artifact: DeserializerArtifact::Deserializer(self),
16117                event,
16118                allow_any,
16119            })
16120        }
16121        fn finish(mut self, helper: &mut DeserializeHelper) -> Result<super::Any, Error> {
16122            let state = replace(&mut *self.state__, AnyDeserializerState::Unknown__);
16123            self.finish_state(helper, state)?;
16124            Ok(super::Any {
16125                id: self.id,
16126                namespace: self.namespace,
16127                not_namespace: self.not_namespace,
16128                process_contents: self.process_contents,
16129                not_q_name: self.not_q_name,
16130                min_occurs: self.min_occurs,
16131                max_occurs: self.max_occurs,
16132                annotation: self.annotation,
16133            })
16134        }
16135    }
16136    #[derive(Debug)]
16137    pub struct AltTypeDeserializer {
16138        id: Option<String>,
16139        test: Option<String>,
16140        type_: Option<QName>,
16141        xpath_default_namespace: Option<super::XpathDefaultNamespaceType>,
16142        content: Vec<super::AltTypeContent>,
16143        state__: Box<AltTypeDeserializerState>,
16144    }
16145    #[derive(Debug)]
16146    enum AltTypeDeserializerState {
16147        Init__,
16148        Next__,
16149        Content__(<super::AltTypeContent as WithDeserializer>::Deserializer),
16150        Unknown__,
16151    }
16152    impl AltTypeDeserializer {
16153        fn from_bytes_start(
16154            helper: &mut DeserializeHelper,
16155            bytes_start: &BytesStart<'_>,
16156        ) -> Result<Box<Self>, Error> {
16157            let mut id: Option<String> = None;
16158            let mut test: Option<String> = None;
16159            let mut type_: Option<QName> = None;
16160            let mut xpath_default_namespace: Option<super::XpathDefaultNamespaceType> = None;
16161            for attrib in helper.filter_xmlns_attributes(bytes_start) {
16162                let attrib = attrib?;
16163                if matches!(
16164                    helper.resolve_local_name(attrib.key, &super::NS_XS),
16165                    Some(b"id")
16166                ) {
16167                    helper.read_attrib(&mut id, b"id", &attrib.value)?;
16168                } else if matches!(
16169                    helper.resolve_local_name(attrib.key, &super::NS_XS),
16170                    Some(b"test")
16171                ) {
16172                    helper.read_attrib(&mut test, b"test", &attrib.value)?;
16173                } else if matches!(
16174                    helper.resolve_local_name(attrib.key, &super::NS_XS),
16175                    Some(b"type")
16176                ) {
16177                    helper.read_attrib(&mut type_, b"type", &attrib.value)?;
16178                } else if matches!(
16179                    helper.resolve_local_name(attrib.key, &super::NS_XS),
16180                    Some(b"xpathDefaultNamespace")
16181                ) {
16182                    helper.read_attrib(
16183                        &mut xpath_default_namespace,
16184                        b"xpathDefaultNamespace",
16185                        &attrib.value,
16186                    )?;
16187                }
16188            }
16189            Ok(Box::new(Self {
16190                id: id,
16191                test: test,
16192                type_: type_,
16193                xpath_default_namespace: xpath_default_namespace,
16194                content: Vec::new(),
16195                state__: Box::new(AltTypeDeserializerState::Init__),
16196            }))
16197        }
16198        fn finish_state(
16199            &mut self,
16200            helper: &mut DeserializeHelper,
16201            state: AltTypeDeserializerState,
16202        ) -> Result<(), Error> {
16203            if let AltTypeDeserializerState::Content__(deserializer) = state {
16204                self.store_content(deserializer.finish(helper)?)?;
16205            }
16206            Ok(())
16207        }
16208        fn store_content(&mut self, value: super::AltTypeContent) -> Result<(), Error> {
16209            self.content.push(value);
16210            Ok(())
16211        }
16212        fn handle_content<'de>(
16213            &mut self,
16214            helper: &mut DeserializeHelper,
16215            output: DeserializerOutput<'de, super::AltTypeContent>,
16216            fallback: &mut Option<AltTypeDeserializerState>,
16217        ) -> Result<ElementHandlerOutput<'de>, Error> {
16218            let DeserializerOutput {
16219                artifact,
16220                event,
16221                allow_any,
16222            } = output;
16223            if artifact.is_none() {
16224                *self.state__ = fallback.take().unwrap_or(AltTypeDeserializerState::Next__);
16225                return Ok(ElementHandlerOutput::break_(event, allow_any));
16226            }
16227            if let Some(fallback) = fallback.take() {
16228                self.finish_state(helper, fallback)?;
16229            }
16230            Ok(match artifact {
16231                DeserializerArtifact::None => unreachable!(),
16232                DeserializerArtifact::Data(data) => {
16233                    self.store_content(data)?;
16234                    *self.state__ = AltTypeDeserializerState::Next__;
16235                    ElementHandlerOutput::from_event(event, allow_any)
16236                }
16237                DeserializerArtifact::Deserializer(deserializer) => {
16238                    let can_have_more = self.content.len().saturating_add(1) < 2usize;
16239                    let ret = if can_have_more {
16240                        ElementHandlerOutput::from_event(event, allow_any)
16241                    } else {
16242                        ElementHandlerOutput::from_event_end(event, allow_any)
16243                    };
16244                    match (can_have_more, &ret) {
16245                        (true, ElementHandlerOutput::Continue { .. }) => {
16246                            fallback
16247                                .get_or_insert(AltTypeDeserializerState::Content__(deserializer));
16248                            *self.state__ = AltTypeDeserializerState::Next__;
16249                        }
16250                        (false, _) | (_, ElementHandlerOutput::Break { .. }) => {
16251                            *self.state__ = AltTypeDeserializerState::Content__(deserializer);
16252                        }
16253                    }
16254                    ret
16255                }
16256            })
16257        }
16258    }
16259    impl<'de> Deserializer<'de, super::AltType> for Box<AltTypeDeserializer> {
16260        fn init(
16261            helper: &mut DeserializeHelper,
16262            event: Event<'de>,
16263        ) -> DeserializerResult<'de, super::AltType> {
16264            helper.init_deserializer_from_start_event(event, AltTypeDeserializer::from_bytes_start)
16265        }
16266        fn next(
16267            mut self,
16268            helper: &mut DeserializeHelper,
16269            event: Event<'de>,
16270        ) -> DeserializerResult<'de, super::AltType> {
16271            use AltTypeDeserializerState as S;
16272            let mut event = event;
16273            let mut fallback = None;
16274            let (event, allow_any) = loop {
16275                let state = replace(&mut *self.state__, S::Unknown__);
16276                event = match (state, event) {
16277                    (S::Unknown__, _) => unreachable!(),
16278                    (S::Content__(deserializer), event) => {
16279                        let output = deserializer.next(helper, event)?;
16280                        match self.handle_content(helper, output, &mut fallback)? {
16281                            ElementHandlerOutput::Break { event, allow_any } => {
16282                                break (event, allow_any)
16283                            }
16284                            ElementHandlerOutput::Continue { event, .. } => event,
16285                        }
16286                    }
16287                    (_, Event::End(_)) => {
16288                        return Ok(DeserializerOutput {
16289                            artifact: DeserializerArtifact::Data(self.finish(helper)?),
16290                            event: DeserializerEvent::None,
16291                            allow_any: false,
16292                        });
16293                    }
16294                    (state @ (S::Init__ | S::Next__), event) => {
16295                        fallback.get_or_insert(state);
16296                        let output =
16297                            <super::AltTypeContent as WithDeserializer>::Deserializer::init(
16298                                helper, event,
16299                            )?;
16300                        match self.handle_content(helper, output, &mut fallback)? {
16301                            ElementHandlerOutput::Break { event, allow_any } => {
16302                                break (event, allow_any)
16303                            }
16304                            ElementHandlerOutput::Continue { event, .. } => event,
16305                        }
16306                    }
16307                }
16308            };
16309            let artifact = DeserializerArtifact::Deserializer(self);
16310            Ok(DeserializerOutput {
16311                artifact,
16312                event,
16313                allow_any,
16314            })
16315        }
16316        fn finish(mut self, helper: &mut DeserializeHelper) -> Result<super::AltType, Error> {
16317            let state = replace(&mut *self.state__, AltTypeDeserializerState::Unknown__);
16318            self.finish_state(helper, state)?;
16319            Ok(super::AltType {
16320                id: self.id,
16321                test: self.test,
16322                type_: self.type_,
16323                xpath_default_namespace: self.xpath_default_namespace,
16324                content: self.content,
16325            })
16326        }
16327    }
16328    #[derive(Debug)]
16329    pub struct AltTypeContentDeserializer {
16330        state__: Box<AltTypeContentDeserializerState>,
16331    }
16332    #[derive(Debug)]
16333    pub enum AltTypeContentDeserializerState {
16334        Init__,
16335        Annotation(
16336            Option<super::Annotation>,
16337            Option<<super::Annotation as WithDeserializer>::Deserializer>,
16338        ),
16339        SimpleType(
16340            Option<super::SimpleBaseType>,
16341            Option<<super::SimpleBaseType as WithDeserializer>::Deserializer>,
16342        ),
16343        ComplexType(
16344            Option<super::ComplexBaseType>,
16345            Option<<super::ComplexBaseType as WithDeserializer>::Deserializer>,
16346        ),
16347        Done__(super::AltTypeContent),
16348        Unknown__,
16349    }
16350    impl AltTypeContentDeserializer {
16351        fn find_suitable<'de>(
16352            &mut self,
16353            helper: &mut DeserializeHelper,
16354            event: Event<'de>,
16355            fallback: &mut Option<AltTypeContentDeserializerState>,
16356        ) -> Result<ElementHandlerOutput<'de>, Error> {
16357            if let Event::Start(x) | Event::Empty(x) = &event {
16358                if matches!(
16359                    helper.resolve_local_name(x.name(), &super::NS_XS),
16360                    Some(b"annotation")
16361                ) {
16362                    let output =
16363                        <super::Annotation as WithDeserializer>::Deserializer::init(helper, event)?;
16364                    return self.handle_annotation(
16365                        helper,
16366                        Default::default(),
16367                        output,
16368                        &mut *fallback,
16369                    );
16370                }
16371                if matches!(
16372                    helper.resolve_local_name(x.name(), &super::NS_XS),
16373                    Some(b"simpleType")
16374                ) {
16375                    let output = <super::SimpleBaseType as WithDeserializer>::Deserializer::init(
16376                        helper, event,
16377                    )?;
16378                    return self.handle_simple_type(
16379                        helper,
16380                        Default::default(),
16381                        output,
16382                        &mut *fallback,
16383                    );
16384                }
16385                if matches!(
16386                    helper.resolve_local_name(x.name(), &super::NS_XS),
16387                    Some(b"complexType")
16388                ) {
16389                    let output = <super::ComplexBaseType as WithDeserializer>::Deserializer::init(
16390                        helper, event,
16391                    )?;
16392                    return self.handle_complex_type(
16393                        helper,
16394                        Default::default(),
16395                        output,
16396                        &mut *fallback,
16397                    );
16398                }
16399            }
16400            *self.state__ = fallback
16401                .take()
16402                .unwrap_or(AltTypeContentDeserializerState::Init__);
16403            Ok(ElementHandlerOutput::return_to_parent(event, false))
16404        }
16405        fn finish_state(
16406            helper: &mut DeserializeHelper,
16407            state: AltTypeContentDeserializerState,
16408        ) -> Result<super::AltTypeContent, Error> {
16409            use AltTypeContentDeserializerState as S;
16410            match state {
16411                S::Unknown__ => unreachable!(),
16412                S::Init__ => Err(ErrorKind::MissingContent.into()),
16413                S::Annotation(mut values, deserializer) => {
16414                    if let Some(deserializer) = deserializer {
16415                        let value = deserializer.finish(helper)?;
16416                        AltTypeContentDeserializer::store_annotation(&mut values, value)?;
16417                    }
16418                    Ok(super::AltTypeContent::Annotation(values.ok_or_else(
16419                        || ErrorKind::MissingElement("annotation".into()),
16420                    )?))
16421                }
16422                S::SimpleType(mut values, deserializer) => {
16423                    if let Some(deserializer) = deserializer {
16424                        let value = deserializer.finish(helper)?;
16425                        AltTypeContentDeserializer::store_simple_type(&mut values, value)?;
16426                    }
16427                    Ok(super::AltTypeContent::SimpleType(values.ok_or_else(
16428                        || ErrorKind::MissingElement("simpleType".into()),
16429                    )?))
16430                }
16431                S::ComplexType(mut values, deserializer) => {
16432                    if let Some(deserializer) = deserializer {
16433                        let value = deserializer.finish(helper)?;
16434                        AltTypeContentDeserializer::store_complex_type(&mut values, value)?;
16435                    }
16436                    Ok(super::AltTypeContent::ComplexType(values.ok_or_else(
16437                        || ErrorKind::MissingElement("complexType".into()),
16438                    )?))
16439                }
16440                S::Done__(data) => Ok(data),
16441            }
16442        }
16443        fn store_annotation(
16444            values: &mut Option<super::Annotation>,
16445            value: super::Annotation,
16446        ) -> Result<(), Error> {
16447            if values.is_some() {
16448                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
16449                    b"annotation",
16450                )))?;
16451            }
16452            *values = Some(value);
16453            Ok(())
16454        }
16455        fn store_simple_type(
16456            values: &mut Option<super::SimpleBaseType>,
16457            value: super::SimpleBaseType,
16458        ) -> Result<(), Error> {
16459            if values.is_some() {
16460                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
16461                    b"simpleType",
16462                )))?;
16463            }
16464            *values = Some(value);
16465            Ok(())
16466        }
16467        fn store_complex_type(
16468            values: &mut Option<super::ComplexBaseType>,
16469            value: super::ComplexBaseType,
16470        ) -> Result<(), Error> {
16471            if values.is_some() {
16472                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
16473                    b"complexType",
16474                )))?;
16475            }
16476            *values = Some(value);
16477            Ok(())
16478        }
16479        fn handle_annotation<'de>(
16480            &mut self,
16481            helper: &mut DeserializeHelper,
16482            mut values: Option<super::Annotation>,
16483            output: DeserializerOutput<'de, super::Annotation>,
16484            fallback: &mut Option<AltTypeContentDeserializerState>,
16485        ) -> Result<ElementHandlerOutput<'de>, Error> {
16486            let DeserializerOutput {
16487                artifact,
16488                event,
16489                allow_any,
16490            } = output;
16491            if artifact.is_none() {
16492                *self.state__ = match fallback.take() {
16493                    None if values.is_none() => {
16494                        *self.state__ = AltTypeContentDeserializerState::Init__;
16495                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
16496                    }
16497                    None => AltTypeContentDeserializerState::Annotation(values, None),
16498                    Some(AltTypeContentDeserializerState::Annotation(_, Some(deserializer))) => {
16499                        AltTypeContentDeserializerState::Annotation(values, Some(deserializer))
16500                    }
16501                    _ => unreachable!(),
16502                };
16503                return Ok(ElementHandlerOutput::break_(event, allow_any));
16504            }
16505            match fallback.take() {
16506                None => (),
16507                Some(AltTypeContentDeserializerState::Annotation(_, Some(deserializer))) => {
16508                    let data = deserializer.finish(helper)?;
16509                    AltTypeContentDeserializer::store_annotation(&mut values, data)?;
16510                }
16511                Some(_) => unreachable!(),
16512            }
16513            Ok(match artifact {
16514                DeserializerArtifact::None => unreachable!(),
16515                DeserializerArtifact::Data(data) => {
16516                    AltTypeContentDeserializer::store_annotation(&mut values, data)?;
16517                    let data = AltTypeContentDeserializer::finish_state(
16518                        helper,
16519                        AltTypeContentDeserializerState::Annotation(values, None),
16520                    )?;
16521                    *self.state__ = AltTypeContentDeserializerState::Done__(data);
16522                    ElementHandlerOutput::Break { event, allow_any }
16523                }
16524                DeserializerArtifact::Deserializer(deserializer) => {
16525                    *self.state__ =
16526                        AltTypeContentDeserializerState::Annotation(values, Some(deserializer));
16527                    ElementHandlerOutput::from_event_end(event, allow_any)
16528                }
16529            })
16530        }
16531        fn handle_simple_type<'de>(
16532            &mut self,
16533            helper: &mut DeserializeHelper,
16534            mut values: Option<super::SimpleBaseType>,
16535            output: DeserializerOutput<'de, super::SimpleBaseType>,
16536            fallback: &mut Option<AltTypeContentDeserializerState>,
16537        ) -> Result<ElementHandlerOutput<'de>, Error> {
16538            let DeserializerOutput {
16539                artifact,
16540                event,
16541                allow_any,
16542            } = output;
16543            if artifact.is_none() {
16544                *self.state__ = match fallback.take() {
16545                    None if values.is_none() => {
16546                        *self.state__ = AltTypeContentDeserializerState::Init__;
16547                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
16548                    }
16549                    None => AltTypeContentDeserializerState::SimpleType(values, None),
16550                    Some(AltTypeContentDeserializerState::SimpleType(_, Some(deserializer))) => {
16551                        AltTypeContentDeserializerState::SimpleType(values, Some(deserializer))
16552                    }
16553                    _ => unreachable!(),
16554                };
16555                return Ok(ElementHandlerOutput::break_(event, allow_any));
16556            }
16557            match fallback.take() {
16558                None => (),
16559                Some(AltTypeContentDeserializerState::SimpleType(_, Some(deserializer))) => {
16560                    let data = deserializer.finish(helper)?;
16561                    AltTypeContentDeserializer::store_simple_type(&mut values, data)?;
16562                }
16563                Some(_) => unreachable!(),
16564            }
16565            Ok(match artifact {
16566                DeserializerArtifact::None => unreachable!(),
16567                DeserializerArtifact::Data(data) => {
16568                    AltTypeContentDeserializer::store_simple_type(&mut values, data)?;
16569                    let data = AltTypeContentDeserializer::finish_state(
16570                        helper,
16571                        AltTypeContentDeserializerState::SimpleType(values, None),
16572                    )?;
16573                    *self.state__ = AltTypeContentDeserializerState::Done__(data);
16574                    ElementHandlerOutput::Break { event, allow_any }
16575                }
16576                DeserializerArtifact::Deserializer(deserializer) => {
16577                    *self.state__ =
16578                        AltTypeContentDeserializerState::SimpleType(values, Some(deserializer));
16579                    ElementHandlerOutput::from_event_end(event, allow_any)
16580                }
16581            })
16582        }
16583        fn handle_complex_type<'de>(
16584            &mut self,
16585            helper: &mut DeserializeHelper,
16586            mut values: Option<super::ComplexBaseType>,
16587            output: DeserializerOutput<'de, super::ComplexBaseType>,
16588            fallback: &mut Option<AltTypeContentDeserializerState>,
16589        ) -> Result<ElementHandlerOutput<'de>, Error> {
16590            let DeserializerOutput {
16591                artifact,
16592                event,
16593                allow_any,
16594            } = output;
16595            if artifact.is_none() {
16596                *self.state__ = match fallback.take() {
16597                    None if values.is_none() => {
16598                        *self.state__ = AltTypeContentDeserializerState::Init__;
16599                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
16600                    }
16601                    None => AltTypeContentDeserializerState::ComplexType(values, None),
16602                    Some(AltTypeContentDeserializerState::ComplexType(_, Some(deserializer))) => {
16603                        AltTypeContentDeserializerState::ComplexType(values, Some(deserializer))
16604                    }
16605                    _ => unreachable!(),
16606                };
16607                return Ok(ElementHandlerOutput::break_(event, allow_any));
16608            }
16609            match fallback.take() {
16610                None => (),
16611                Some(AltTypeContentDeserializerState::ComplexType(_, Some(deserializer))) => {
16612                    let data = deserializer.finish(helper)?;
16613                    AltTypeContentDeserializer::store_complex_type(&mut values, data)?;
16614                }
16615                Some(_) => unreachable!(),
16616            }
16617            Ok(match artifact {
16618                DeserializerArtifact::None => unreachable!(),
16619                DeserializerArtifact::Data(data) => {
16620                    AltTypeContentDeserializer::store_complex_type(&mut values, data)?;
16621                    let data = AltTypeContentDeserializer::finish_state(
16622                        helper,
16623                        AltTypeContentDeserializerState::ComplexType(values, None),
16624                    )?;
16625                    *self.state__ = AltTypeContentDeserializerState::Done__(data);
16626                    ElementHandlerOutput::Break { event, allow_any }
16627                }
16628                DeserializerArtifact::Deserializer(deserializer) => {
16629                    *self.state__ =
16630                        AltTypeContentDeserializerState::ComplexType(values, Some(deserializer));
16631                    ElementHandlerOutput::from_event_end(event, allow_any)
16632                }
16633            })
16634        }
16635    }
16636    impl<'de> Deserializer<'de, super::AltTypeContent> for Box<AltTypeContentDeserializer> {
16637        fn init(
16638            helper: &mut DeserializeHelper,
16639            event: Event<'de>,
16640        ) -> DeserializerResult<'de, super::AltTypeContent> {
16641            let deserializer = Box::new(AltTypeContentDeserializer {
16642                state__: Box::new(AltTypeContentDeserializerState::Init__),
16643            });
16644            let mut output = deserializer.next(helper, event)?;
16645            output.artifact = match output.artifact {
16646                DeserializerArtifact::Deserializer(x)
16647                    if matches!(&*x.state__, AltTypeContentDeserializerState::Init__) =>
16648                {
16649                    DeserializerArtifact::None
16650                }
16651                artifact => artifact,
16652            };
16653            Ok(output)
16654        }
16655        fn next(
16656            mut self,
16657            helper: &mut DeserializeHelper,
16658            event: Event<'de>,
16659        ) -> DeserializerResult<'de, super::AltTypeContent> {
16660            use AltTypeContentDeserializerState as S;
16661            let mut event = event;
16662            let mut fallback = None;
16663            let (event, allow_any) = loop {
16664                let state = replace(&mut *self.state__, S::Unknown__);
16665                event = match (state, event) {
16666                    (S::Unknown__, _) => unreachable!(),
16667                    (S::Annotation(values, Some(deserializer)), event) => {
16668                        let output = deserializer.next(helper, event)?;
16669                        match self.handle_annotation(helper, values, output, &mut fallback)? {
16670                            ElementHandlerOutput::Break { event, allow_any } => {
16671                                break (event, allow_any)
16672                            }
16673                            ElementHandlerOutput::Continue { event, .. } => event,
16674                        }
16675                    }
16676                    (S::SimpleType(values, Some(deserializer)), event) => {
16677                        let output = deserializer.next(helper, event)?;
16678                        match self.handle_simple_type(helper, values, output, &mut fallback)? {
16679                            ElementHandlerOutput::Break { event, allow_any } => {
16680                                break (event, allow_any)
16681                            }
16682                            ElementHandlerOutput::Continue { event, .. } => event,
16683                        }
16684                    }
16685                    (S::ComplexType(values, Some(deserializer)), event) => {
16686                        let output = deserializer.next(helper, event)?;
16687                        match self.handle_complex_type(helper, values, output, &mut fallback)? {
16688                            ElementHandlerOutput::Break { event, allow_any } => {
16689                                break (event, allow_any)
16690                            }
16691                            ElementHandlerOutput::Continue { event, .. } => event,
16692                        }
16693                    }
16694                    (state, event @ Event::End(_)) => {
16695                        return Ok(DeserializerOutput {
16696                            artifact: DeserializerArtifact::Data(
16697                                AltTypeContentDeserializer::finish_state(helper, state)?,
16698                            ),
16699                            event: DeserializerEvent::Continue(event),
16700                            allow_any: false,
16701                        });
16702                    }
16703                    (S::Init__, event) => match self.find_suitable(helper, event, &mut fallback)? {
16704                        ElementHandlerOutput::Break { event, allow_any } => {
16705                            break (event, allow_any)
16706                        }
16707                        ElementHandlerOutput::Continue { event, .. } => event,
16708                    },
16709                    (S::Annotation(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
16710                        let output = helper.init_start_tag_deserializer(
16711                            event,
16712                            Some(&super::NS_XS),
16713                            b"annotation",
16714                            false,
16715                        )?;
16716                        match self.handle_annotation(helper, values, output, &mut fallback)? {
16717                            ElementHandlerOutput::Break { event, allow_any } => {
16718                                break (event, allow_any)
16719                            }
16720                            ElementHandlerOutput::Continue { event, .. } => event,
16721                        }
16722                    }
16723                    (S::SimpleType(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
16724                        let output = helper.init_start_tag_deserializer(
16725                            event,
16726                            Some(&super::NS_XS),
16727                            b"simpleType",
16728                            true,
16729                        )?;
16730                        match self.handle_simple_type(helper, values, output, &mut fallback)? {
16731                            ElementHandlerOutput::Break { event, allow_any } => {
16732                                break (event, allow_any)
16733                            }
16734                            ElementHandlerOutput::Continue { event, .. } => event,
16735                        }
16736                    }
16737                    (S::ComplexType(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
16738                        let output = helper.init_start_tag_deserializer(
16739                            event,
16740                            Some(&super::NS_XS),
16741                            b"complexType",
16742                            true,
16743                        )?;
16744                        match self.handle_complex_type(helper, values, output, &mut fallback)? {
16745                            ElementHandlerOutput::Break { event, allow_any } => {
16746                                break (event, allow_any)
16747                            }
16748                            ElementHandlerOutput::Continue { event, .. } => event,
16749                        }
16750                    }
16751                    (s @ S::Done__(_), event) => {
16752                        *self.state__ = s;
16753                        break (DeserializerEvent::Continue(event), false);
16754                    }
16755                    (state, event) => {
16756                        *self.state__ = state;
16757                        break (DeserializerEvent::Break(event), false);
16758                    }
16759                }
16760            };
16761            let artifact = if matches!(&*self.state__, S::Done__(_)) {
16762                DeserializerArtifact::Data(self.finish(helper)?)
16763            } else {
16764                DeserializerArtifact::Deserializer(self)
16765            };
16766            Ok(DeserializerOutput {
16767                artifact,
16768                event,
16769                allow_any,
16770            })
16771        }
16772        fn finish(self, helper: &mut DeserializeHelper) -> Result<super::AltTypeContent, Error> {
16773            AltTypeContentDeserializer::finish_state(helper, *self.state__)
16774        }
16775    }
16776    #[derive(Debug)]
16777    pub struct KeybaseTypeDeserializer {
16778        id: Option<String>,
16779        name: Option<String>,
16780        ref_: Option<QName>,
16781        content: Option<super::KeybaseTypeContent>,
16782        state__: Box<KeybaseTypeDeserializerState>,
16783    }
16784    #[derive(Debug)]
16785    enum KeybaseTypeDeserializerState {
16786        Init__,
16787        Next__,
16788        Content__(<super::KeybaseTypeContent as WithDeserializer>::Deserializer),
16789        Unknown__,
16790    }
16791    impl KeybaseTypeDeserializer {
16792        fn from_bytes_start(
16793            helper: &mut DeserializeHelper,
16794            bytes_start: &BytesStart<'_>,
16795        ) -> Result<Box<Self>, Error> {
16796            let mut id: Option<String> = None;
16797            let mut name: Option<String> = None;
16798            let mut ref_: Option<QName> = None;
16799            for attrib in helper.filter_xmlns_attributes(bytes_start) {
16800                let attrib = attrib?;
16801                if matches!(
16802                    helper.resolve_local_name(attrib.key, &super::NS_XS),
16803                    Some(b"id")
16804                ) {
16805                    helper.read_attrib(&mut id, b"id", &attrib.value)?;
16806                } else if matches!(
16807                    helper.resolve_local_name(attrib.key, &super::NS_XS),
16808                    Some(b"name")
16809                ) {
16810                    helper.read_attrib(&mut name, b"name", &attrib.value)?;
16811                } else if matches!(
16812                    helper.resolve_local_name(attrib.key, &super::NS_XS),
16813                    Some(b"ref")
16814                ) {
16815                    helper.read_attrib(&mut ref_, b"ref", &attrib.value)?;
16816                }
16817            }
16818            Ok(Box::new(Self {
16819                id: id,
16820                name: name,
16821                ref_: ref_,
16822                content: None,
16823                state__: Box::new(KeybaseTypeDeserializerState::Init__),
16824            }))
16825        }
16826        fn finish_state(
16827            &mut self,
16828            helper: &mut DeserializeHelper,
16829            state: KeybaseTypeDeserializerState,
16830        ) -> Result<(), Error> {
16831            if let KeybaseTypeDeserializerState::Content__(deserializer) = state {
16832                self.store_content(deserializer.finish(helper)?)?;
16833            }
16834            Ok(())
16835        }
16836        fn store_content(&mut self, value: super::KeybaseTypeContent) -> Result<(), Error> {
16837            if self.content.is_some() {
16838                Err(ErrorKind::DuplicateContent)?;
16839            }
16840            self.content = Some(value);
16841            Ok(())
16842        }
16843        fn handle_content<'de>(
16844            &mut self,
16845            helper: &mut DeserializeHelper,
16846            output: DeserializerOutput<'de, super::KeybaseTypeContent>,
16847            fallback: &mut Option<KeybaseTypeDeserializerState>,
16848        ) -> Result<ElementHandlerOutput<'de>, Error> {
16849            let DeserializerOutput {
16850                artifact,
16851                event,
16852                allow_any,
16853            } = output;
16854            if artifact.is_none() {
16855                *self.state__ = fallback
16856                    .take()
16857                    .unwrap_or(KeybaseTypeDeserializerState::Next__);
16858                return Ok(ElementHandlerOutput::break_(event, allow_any));
16859            }
16860            if let Some(fallback) = fallback.take() {
16861                self.finish_state(helper, fallback)?;
16862            }
16863            Ok(match artifact {
16864                DeserializerArtifact::None => unreachable!(),
16865                DeserializerArtifact::Data(data) => {
16866                    self.store_content(data)?;
16867                    *self.state__ = KeybaseTypeDeserializerState::Next__;
16868                    ElementHandlerOutput::from_event(event, allow_any)
16869                }
16870                DeserializerArtifact::Deserializer(deserializer) => {
16871                    *self.state__ = KeybaseTypeDeserializerState::Content__(deserializer);
16872                    ElementHandlerOutput::from_event_end(event, allow_any)
16873                }
16874            })
16875        }
16876    }
16877    impl<'de> Deserializer<'de, super::KeybaseType> for Box<KeybaseTypeDeserializer> {
16878        fn init(
16879            helper: &mut DeserializeHelper,
16880            event: Event<'de>,
16881        ) -> DeserializerResult<'de, super::KeybaseType> {
16882            helper.init_deserializer_from_start_event(
16883                event,
16884                KeybaseTypeDeserializer::from_bytes_start,
16885            )
16886        }
16887        fn next(
16888            mut self,
16889            helper: &mut DeserializeHelper,
16890            event: Event<'de>,
16891        ) -> DeserializerResult<'de, super::KeybaseType> {
16892            use KeybaseTypeDeserializerState as S;
16893            let mut event = event;
16894            let mut fallback = None;
16895            let (event, allow_any) = loop {
16896                let state = replace(&mut *self.state__, S::Unknown__);
16897                event = match (state, event) {
16898                    (S::Unknown__, _) => unreachable!(),
16899                    (S::Content__(deserializer), event) => {
16900                        let output = deserializer.next(helper, event)?;
16901                        match self.handle_content(helper, output, &mut fallback)? {
16902                            ElementHandlerOutput::Break { event, allow_any } => {
16903                                break (event, allow_any)
16904                            }
16905                            ElementHandlerOutput::Continue { event, .. } => event,
16906                        }
16907                    }
16908                    (_, Event::End(_)) => {
16909                        return Ok(DeserializerOutput {
16910                            artifact: DeserializerArtifact::Data(self.finish(helper)?),
16911                            event: DeserializerEvent::None,
16912                            allow_any: false,
16913                        });
16914                    }
16915                    (state @ (S::Init__ | S::Next__), event) => {
16916                        fallback.get_or_insert(state);
16917                        let output =
16918                            <super::KeybaseTypeContent as WithDeserializer>::Deserializer::init(
16919                                helper, event,
16920                            )?;
16921                        match self.handle_content(helper, output, &mut fallback)? {
16922                            ElementHandlerOutput::Break { event, allow_any } => {
16923                                break (event, allow_any)
16924                            }
16925                            ElementHandlerOutput::Continue { event, .. } => event,
16926                        }
16927                    }
16928                }
16929            };
16930            let artifact = DeserializerArtifact::Deserializer(self);
16931            Ok(DeserializerOutput {
16932                artifact,
16933                event,
16934                allow_any,
16935            })
16936        }
16937        fn finish(mut self, helper: &mut DeserializeHelper) -> Result<super::KeybaseType, Error> {
16938            let state = replace(&mut *self.state__, KeybaseTypeDeserializerState::Unknown__);
16939            self.finish_state(helper, state)?;
16940            Ok(super::KeybaseType {
16941                id: self.id,
16942                name: self.name,
16943                ref_: self.ref_,
16944                content: self.content,
16945            })
16946        }
16947    }
16948    #[derive(Debug)]
16949    pub struct KeybaseTypeContentDeserializer {
16950        annotation: Option<super::Annotation>,
16951        selector: Option<super::Field>,
16952        field: Vec<super::Field>,
16953        state__: Box<KeybaseTypeContentDeserializerState>,
16954    }
16955    #[derive(Debug)]
16956    enum KeybaseTypeContentDeserializerState {
16957        Init__,
16958        Annotation(Option<<super::Annotation as WithDeserializer>::Deserializer>),
16959        Selector(Option<<super::Field as WithDeserializer>::Deserializer>),
16960        Field(Option<<super::Field as WithDeserializer>::Deserializer>),
16961        Done__,
16962        Unknown__,
16963    }
16964    impl KeybaseTypeContentDeserializer {
16965        fn finish_state(
16966            &mut self,
16967            helper: &mut DeserializeHelper,
16968            state: KeybaseTypeContentDeserializerState,
16969        ) -> Result<(), Error> {
16970            use KeybaseTypeContentDeserializerState as S;
16971            match state {
16972                S::Annotation(Some(deserializer)) => {
16973                    self.store_annotation(deserializer.finish(helper)?)?
16974                }
16975                S::Selector(Some(deserializer)) => {
16976                    self.store_selector(deserializer.finish(helper)?)?
16977                }
16978                S::Field(Some(deserializer)) => self.store_field(deserializer.finish(helper)?)?,
16979                _ => (),
16980            }
16981            Ok(())
16982        }
16983        fn store_annotation(&mut self, value: super::Annotation) -> Result<(), Error> {
16984            if self.annotation.is_some() {
16985                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
16986                    b"annotation",
16987                )))?;
16988            }
16989            self.annotation = Some(value);
16990            Ok(())
16991        }
16992        fn store_selector(&mut self, value: super::Field) -> Result<(), Error> {
16993            if self.selector.is_some() {
16994                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
16995                    b"selector",
16996                )))?;
16997            }
16998            self.selector = Some(value);
16999            Ok(())
17000        }
17001        fn store_field(&mut self, value: super::Field) -> Result<(), Error> {
17002            self.field.push(value);
17003            Ok(())
17004        }
17005        fn handle_annotation<'de>(
17006            &mut self,
17007            helper: &mut DeserializeHelper,
17008            output: DeserializerOutput<'de, super::Annotation>,
17009            fallback: &mut Option<KeybaseTypeContentDeserializerState>,
17010        ) -> Result<ElementHandlerOutput<'de>, Error> {
17011            let DeserializerOutput {
17012                artifact,
17013                event,
17014                allow_any,
17015            } = output;
17016            if artifact.is_none() {
17017                fallback.get_or_insert(KeybaseTypeContentDeserializerState::Annotation(None));
17018                *self.state__ = KeybaseTypeContentDeserializerState::Selector(None);
17019                return Ok(ElementHandlerOutput::from_event(event, allow_any));
17020            }
17021            if let Some(fallback) = fallback.take() {
17022                self.finish_state(helper, fallback)?;
17023            }
17024            Ok(match artifact {
17025                DeserializerArtifact::None => unreachable!(),
17026                DeserializerArtifact::Data(data) => {
17027                    self.store_annotation(data)?;
17028                    *self.state__ = KeybaseTypeContentDeserializerState::Selector(None);
17029                    ElementHandlerOutput::from_event(event, allow_any)
17030                }
17031                DeserializerArtifact::Deserializer(deserializer) => {
17032                    let ret = ElementHandlerOutput::from_event(event, allow_any);
17033                    match &ret {
17034                        ElementHandlerOutput::Continue { .. } => {
17035                            fallback.get_or_insert(
17036                                KeybaseTypeContentDeserializerState::Annotation(Some(deserializer)),
17037                            );
17038                            *self.state__ = KeybaseTypeContentDeserializerState::Selector(None);
17039                        }
17040                        ElementHandlerOutput::Break { .. } => {
17041                            *self.state__ =
17042                                KeybaseTypeContentDeserializerState::Annotation(Some(deserializer));
17043                        }
17044                    }
17045                    ret
17046                }
17047            })
17048        }
17049        fn handle_selector<'de>(
17050            &mut self,
17051            helper: &mut DeserializeHelper,
17052            output: DeserializerOutput<'de, super::Field>,
17053            fallback: &mut Option<KeybaseTypeContentDeserializerState>,
17054        ) -> Result<ElementHandlerOutput<'de>, Error> {
17055            let DeserializerOutput {
17056                artifact,
17057                event,
17058                allow_any,
17059            } = output;
17060            if artifact.is_none() {
17061                if self.selector.is_some() {
17062                    fallback.get_or_insert(KeybaseTypeContentDeserializerState::Selector(None));
17063                    *self.state__ = KeybaseTypeContentDeserializerState::Field(None);
17064                    return Ok(ElementHandlerOutput::from_event(event, allow_any));
17065                } else {
17066                    *self.state__ = KeybaseTypeContentDeserializerState::Selector(None);
17067                    return Ok(ElementHandlerOutput::break_(event, allow_any));
17068                }
17069            }
17070            if let Some(fallback) = fallback.take() {
17071                self.finish_state(helper, fallback)?;
17072            }
17073            Ok(match artifact {
17074                DeserializerArtifact::None => unreachable!(),
17075                DeserializerArtifact::Data(data) => {
17076                    self.store_selector(data)?;
17077                    *self.state__ = KeybaseTypeContentDeserializerState::Field(None);
17078                    ElementHandlerOutput::from_event(event, allow_any)
17079                }
17080                DeserializerArtifact::Deserializer(deserializer) => {
17081                    let ret = ElementHandlerOutput::from_event(event, allow_any);
17082                    match &ret {
17083                        ElementHandlerOutput::Continue { .. } => {
17084                            fallback.get_or_insert(KeybaseTypeContentDeserializerState::Selector(
17085                                Some(deserializer),
17086                            ));
17087                            *self.state__ = KeybaseTypeContentDeserializerState::Field(None);
17088                        }
17089                        ElementHandlerOutput::Break { .. } => {
17090                            *self.state__ =
17091                                KeybaseTypeContentDeserializerState::Selector(Some(deserializer));
17092                        }
17093                    }
17094                    ret
17095                }
17096            })
17097        }
17098        fn handle_field<'de>(
17099            &mut self,
17100            helper: &mut DeserializeHelper,
17101            output: DeserializerOutput<'de, super::Field>,
17102            fallback: &mut Option<KeybaseTypeContentDeserializerState>,
17103        ) -> Result<ElementHandlerOutput<'de>, Error> {
17104            let DeserializerOutput {
17105                artifact,
17106                event,
17107                allow_any,
17108            } = output;
17109            if artifact.is_none() {
17110                if self.field.len() < 1usize {
17111                    *self.state__ = KeybaseTypeContentDeserializerState::Field(None);
17112                    return Ok(ElementHandlerOutput::break_(event, allow_any));
17113                } else {
17114                    fallback.get_or_insert(KeybaseTypeContentDeserializerState::Field(None));
17115                    *self.state__ = KeybaseTypeContentDeserializerState::Done__;
17116                    return Ok(ElementHandlerOutput::from_event(event, allow_any));
17117                }
17118            }
17119            if let Some(fallback) = fallback.take() {
17120                self.finish_state(helper, fallback)?;
17121            }
17122            Ok(match artifact {
17123                DeserializerArtifact::None => unreachable!(),
17124                DeserializerArtifact::Data(data) => {
17125                    self.store_field(data)?;
17126                    *self.state__ = KeybaseTypeContentDeserializerState::Field(None);
17127                    ElementHandlerOutput::from_event(event, allow_any)
17128                }
17129                DeserializerArtifact::Deserializer(deserializer) => {
17130                    let ret = ElementHandlerOutput::from_event(event, allow_any);
17131                    match &ret {
17132                        ElementHandlerOutput::Continue { .. } => {
17133                            fallback.get_or_insert(KeybaseTypeContentDeserializerState::Field(
17134                                Some(deserializer),
17135                            ));
17136                            *self.state__ = KeybaseTypeContentDeserializerState::Field(None);
17137                        }
17138                        ElementHandlerOutput::Break { .. } => {
17139                            *self.state__ =
17140                                KeybaseTypeContentDeserializerState::Field(Some(deserializer));
17141                        }
17142                    }
17143                    ret
17144                }
17145            })
17146        }
17147    }
17148    impl<'de> Deserializer<'de, super::KeybaseTypeContent> for Box<KeybaseTypeContentDeserializer> {
17149        fn init(
17150            helper: &mut DeserializeHelper,
17151            event: Event<'de>,
17152        ) -> DeserializerResult<'de, super::KeybaseTypeContent> {
17153            let deserializer = Box::new(KeybaseTypeContentDeserializer {
17154                annotation: None,
17155                selector: None,
17156                field: Vec::new(),
17157                state__: Box::new(KeybaseTypeContentDeserializerState::Init__),
17158            });
17159            let mut output = deserializer.next(helper, event)?;
17160            output.artifact = match output.artifact {
17161                DeserializerArtifact::Deserializer(x)
17162                    if matches!(&*x.state__, KeybaseTypeContentDeserializerState::Init__) =>
17163                {
17164                    DeserializerArtifact::None
17165                }
17166                artifact => artifact,
17167            };
17168            Ok(output)
17169        }
17170        fn next(
17171            mut self,
17172            helper: &mut DeserializeHelper,
17173            event: Event<'de>,
17174        ) -> DeserializerResult<'de, super::KeybaseTypeContent> {
17175            use KeybaseTypeContentDeserializerState as S;
17176            let mut event = event;
17177            let mut fallback = None;
17178            let mut allow_any_element = false;
17179            let (event, allow_any) = loop {
17180                let state = replace(&mut *self.state__, S::Unknown__);
17181                event = match (state, event) {
17182                    (S::Unknown__, _) => unreachable!(),
17183                    (S::Annotation(Some(deserializer)), event) => {
17184                        let output = deserializer.next(helper, event)?;
17185                        match self.handle_annotation(helper, output, &mut fallback)? {
17186                            ElementHandlerOutput::Continue { event, allow_any } => {
17187                                allow_any_element = allow_any_element || allow_any;
17188                                event
17189                            }
17190                            ElementHandlerOutput::Break { event, allow_any } => {
17191                                break (event, allow_any)
17192                            }
17193                        }
17194                    }
17195                    (S::Selector(Some(deserializer)), event) => {
17196                        let output = deserializer.next(helper, event)?;
17197                        match self.handle_selector(helper, output, &mut fallback)? {
17198                            ElementHandlerOutput::Continue { event, allow_any } => {
17199                                allow_any_element = allow_any_element || allow_any;
17200                                event
17201                            }
17202                            ElementHandlerOutput::Break { event, allow_any } => {
17203                                break (event, allow_any)
17204                            }
17205                        }
17206                    }
17207                    (S::Field(Some(deserializer)), event) => {
17208                        let output = deserializer.next(helper, event)?;
17209                        match self.handle_field(helper, output, &mut fallback)? {
17210                            ElementHandlerOutput::Continue { event, allow_any } => {
17211                                allow_any_element = allow_any_element || allow_any;
17212                                event
17213                            }
17214                            ElementHandlerOutput::Break { event, allow_any } => {
17215                                break (event, allow_any)
17216                            }
17217                        }
17218                    }
17219                    (_, event @ Event::End(_)) => {
17220                        if let Some(fallback) = fallback.take() {
17221                            self.finish_state(helper, fallback)?;
17222                        }
17223                        return Ok(DeserializerOutput {
17224                            artifact: DeserializerArtifact::Data(self.finish(helper)?),
17225                            event: DeserializerEvent::Continue(event),
17226                            allow_any: false,
17227                        });
17228                    }
17229                    (S::Init__, event) => {
17230                        fallback.get_or_insert(S::Init__);
17231                        *self.state__ = KeybaseTypeContentDeserializerState::Annotation(None);
17232                        event
17233                    }
17234                    (S::Annotation(None), event @ (Event::Start(_) | Event::Empty(_))) => {
17235                        let output = helper.init_start_tag_deserializer(
17236                            event,
17237                            Some(&super::NS_XS),
17238                            b"annotation",
17239                            false,
17240                        )?;
17241                        match self.handle_annotation(helper, output, &mut fallback)? {
17242                            ElementHandlerOutput::Continue { event, allow_any } => {
17243                                allow_any_element = allow_any_element || allow_any;
17244                                event
17245                            }
17246                            ElementHandlerOutput::Break { event, allow_any } => {
17247                                break (event, allow_any)
17248                            }
17249                        }
17250                    }
17251                    (S::Selector(None), event @ (Event::Start(_) | Event::Empty(_))) => {
17252                        let output = helper.init_start_tag_deserializer(
17253                            event,
17254                            Some(&super::NS_XS),
17255                            b"selector",
17256                            false,
17257                        )?;
17258                        match self.handle_selector(helper, output, &mut fallback)? {
17259                            ElementHandlerOutput::Continue { event, allow_any } => {
17260                                allow_any_element = allow_any_element || allow_any;
17261                                event
17262                            }
17263                            ElementHandlerOutput::Break { event, allow_any } => {
17264                                break (event, allow_any)
17265                            }
17266                        }
17267                    }
17268                    (S::Field(None), event @ (Event::Start(_) | Event::Empty(_))) => {
17269                        let output = helper.init_start_tag_deserializer(
17270                            event,
17271                            Some(&super::NS_XS),
17272                            b"field",
17273                            false,
17274                        )?;
17275                        match self.handle_field(helper, output, &mut fallback)? {
17276                            ElementHandlerOutput::Continue { event, allow_any } => {
17277                                allow_any_element = allow_any_element || allow_any;
17278                                event
17279                            }
17280                            ElementHandlerOutput::Break { event, allow_any } => {
17281                                break (event, allow_any)
17282                            }
17283                        }
17284                    }
17285                    (S::Done__, event) => {
17286                        fallback.get_or_insert(S::Done__);
17287                        break (DeserializerEvent::Continue(event), allow_any_element);
17288                    }
17289                    (state, event) => {
17290                        *self.state__ = state;
17291                        break (DeserializerEvent::Break(event), false);
17292                    }
17293                }
17294            };
17295            if let Some(fallback) = fallback {
17296                *self.state__ = fallback;
17297            }
17298            Ok(DeserializerOutput {
17299                artifact: DeserializerArtifact::Deserializer(self),
17300                event,
17301                allow_any,
17302            })
17303        }
17304        fn finish(
17305            mut self,
17306            helper: &mut DeserializeHelper,
17307        ) -> Result<super::KeybaseTypeContent, Error> {
17308            let state = replace(
17309                &mut *self.state__,
17310                KeybaseTypeContentDeserializerState::Unknown__,
17311            );
17312            self.finish_state(helper, state)?;
17313            Ok(super::KeybaseTypeContent {
17314                annotation: self.annotation,
17315                selector: self
17316                    .selector
17317                    .ok_or_else(|| ErrorKind::MissingElement("selector".into()))?,
17318                field: self.field,
17319            })
17320        }
17321    }
17322    #[derive(Debug)]
17323    pub struct KeyrefDeserializer {
17324        id: Option<String>,
17325        name: Option<String>,
17326        ref_: Option<QName>,
17327        refer: Option<QName>,
17328        content: Option<super::KeyrefContent>,
17329        state__: Box<KeyrefDeserializerState>,
17330    }
17331    #[derive(Debug)]
17332    enum KeyrefDeserializerState {
17333        Init__,
17334        Next__,
17335        Content__(<super::KeyrefContent as WithDeserializer>::Deserializer),
17336        Unknown__,
17337    }
17338    impl KeyrefDeserializer {
17339        fn from_bytes_start(
17340            helper: &mut DeserializeHelper,
17341            bytes_start: &BytesStart<'_>,
17342        ) -> Result<Box<Self>, Error> {
17343            let mut id: Option<String> = None;
17344            let mut name: Option<String> = None;
17345            let mut ref_: Option<QName> = None;
17346            let mut refer: Option<QName> = None;
17347            for attrib in helper.filter_xmlns_attributes(bytes_start) {
17348                let attrib = attrib?;
17349                if matches!(
17350                    helper.resolve_local_name(attrib.key, &super::NS_XS),
17351                    Some(b"id")
17352                ) {
17353                    helper.read_attrib(&mut id, b"id", &attrib.value)?;
17354                } else if matches!(
17355                    helper.resolve_local_name(attrib.key, &super::NS_XS),
17356                    Some(b"name")
17357                ) {
17358                    helper.read_attrib(&mut name, b"name", &attrib.value)?;
17359                } else if matches!(
17360                    helper.resolve_local_name(attrib.key, &super::NS_XS),
17361                    Some(b"ref")
17362                ) {
17363                    helper.read_attrib(&mut ref_, b"ref", &attrib.value)?;
17364                } else if matches!(
17365                    helper.resolve_local_name(attrib.key, &super::NS_XS),
17366                    Some(b"refer")
17367                ) {
17368                    helper.read_attrib(&mut refer, b"refer", &attrib.value)?;
17369                }
17370            }
17371            Ok(Box::new(Self {
17372                id: id,
17373                name: name,
17374                ref_: ref_,
17375                refer: refer,
17376                content: None,
17377                state__: Box::new(KeyrefDeserializerState::Init__),
17378            }))
17379        }
17380        fn finish_state(
17381            &mut self,
17382            helper: &mut DeserializeHelper,
17383            state: KeyrefDeserializerState,
17384        ) -> Result<(), Error> {
17385            if let KeyrefDeserializerState::Content__(deserializer) = state {
17386                self.store_content(deserializer.finish(helper)?)?;
17387            }
17388            Ok(())
17389        }
17390        fn store_content(&mut self, value: super::KeyrefContent) -> Result<(), Error> {
17391            if self.content.is_some() {
17392                Err(ErrorKind::DuplicateContent)?;
17393            }
17394            self.content = Some(value);
17395            Ok(())
17396        }
17397        fn handle_content<'de>(
17398            &mut self,
17399            helper: &mut DeserializeHelper,
17400            output: DeserializerOutput<'de, super::KeyrefContent>,
17401            fallback: &mut Option<KeyrefDeserializerState>,
17402        ) -> Result<ElementHandlerOutput<'de>, Error> {
17403            let DeserializerOutput {
17404                artifact,
17405                event,
17406                allow_any,
17407            } = output;
17408            if artifact.is_none() {
17409                *self.state__ = fallback.take().unwrap_or(KeyrefDeserializerState::Next__);
17410                return Ok(ElementHandlerOutput::break_(event, allow_any));
17411            }
17412            if let Some(fallback) = fallback.take() {
17413                self.finish_state(helper, fallback)?;
17414            }
17415            Ok(match artifact {
17416                DeserializerArtifact::None => unreachable!(),
17417                DeserializerArtifact::Data(data) => {
17418                    self.store_content(data)?;
17419                    *self.state__ = KeyrefDeserializerState::Next__;
17420                    ElementHandlerOutput::from_event(event, allow_any)
17421                }
17422                DeserializerArtifact::Deserializer(deserializer) => {
17423                    *self.state__ = KeyrefDeserializerState::Content__(deserializer);
17424                    ElementHandlerOutput::from_event_end(event, allow_any)
17425                }
17426            })
17427        }
17428    }
17429    impl<'de> Deserializer<'de, super::Keyref> for Box<KeyrefDeserializer> {
17430        fn init(
17431            helper: &mut DeserializeHelper,
17432            event: Event<'de>,
17433        ) -> DeserializerResult<'de, super::Keyref> {
17434            helper.init_deserializer_from_start_event(event, KeyrefDeserializer::from_bytes_start)
17435        }
17436        fn next(
17437            mut self,
17438            helper: &mut DeserializeHelper,
17439            event: Event<'de>,
17440        ) -> DeserializerResult<'de, super::Keyref> {
17441            use KeyrefDeserializerState as S;
17442            let mut event = event;
17443            let mut fallback = None;
17444            let (event, allow_any) = loop {
17445                let state = replace(&mut *self.state__, S::Unknown__);
17446                event = match (state, event) {
17447                    (S::Unknown__, _) => unreachable!(),
17448                    (S::Content__(deserializer), event) => {
17449                        let output = deserializer.next(helper, event)?;
17450                        match self.handle_content(helper, output, &mut fallback)? {
17451                            ElementHandlerOutput::Break { event, allow_any } => {
17452                                break (event, allow_any)
17453                            }
17454                            ElementHandlerOutput::Continue { event, .. } => event,
17455                        }
17456                    }
17457                    (_, Event::End(_)) => {
17458                        return Ok(DeserializerOutput {
17459                            artifact: DeserializerArtifact::Data(self.finish(helper)?),
17460                            event: DeserializerEvent::None,
17461                            allow_any: false,
17462                        });
17463                    }
17464                    (state @ (S::Init__ | S::Next__), event) => {
17465                        fallback.get_or_insert(state);
17466                        let output =
17467                            <super::KeyrefContent as WithDeserializer>::Deserializer::init(
17468                                helper, event,
17469                            )?;
17470                        match self.handle_content(helper, output, &mut fallback)? {
17471                            ElementHandlerOutput::Break { event, allow_any } => {
17472                                break (event, allow_any)
17473                            }
17474                            ElementHandlerOutput::Continue { event, .. } => event,
17475                        }
17476                    }
17477                }
17478            };
17479            let artifact = DeserializerArtifact::Deserializer(self);
17480            Ok(DeserializerOutput {
17481                artifact,
17482                event,
17483                allow_any,
17484            })
17485        }
17486        fn finish(mut self, helper: &mut DeserializeHelper) -> Result<super::Keyref, Error> {
17487            let state = replace(&mut *self.state__, KeyrefDeserializerState::Unknown__);
17488            self.finish_state(helper, state)?;
17489            Ok(super::Keyref {
17490                id: self.id,
17491                name: self.name,
17492                ref_: self.ref_,
17493                refer: self.refer,
17494                content: self.content,
17495            })
17496        }
17497    }
17498    #[derive(Debug)]
17499    pub struct KeyrefContentDeserializer {
17500        annotation: Option<super::Annotation>,
17501        selector: Option<super::Field>,
17502        field: Vec<super::Field>,
17503        state__: Box<KeyrefContentDeserializerState>,
17504    }
17505    #[derive(Debug)]
17506    enum KeyrefContentDeserializerState {
17507        Init__,
17508        Annotation(Option<<super::Annotation as WithDeserializer>::Deserializer>),
17509        Selector(Option<<super::Field as WithDeserializer>::Deserializer>),
17510        Field(Option<<super::Field as WithDeserializer>::Deserializer>),
17511        Done__,
17512        Unknown__,
17513    }
17514    impl KeyrefContentDeserializer {
17515        fn finish_state(
17516            &mut self,
17517            helper: &mut DeserializeHelper,
17518            state: KeyrefContentDeserializerState,
17519        ) -> Result<(), Error> {
17520            use KeyrefContentDeserializerState as S;
17521            match state {
17522                S::Annotation(Some(deserializer)) => {
17523                    self.store_annotation(deserializer.finish(helper)?)?
17524                }
17525                S::Selector(Some(deserializer)) => {
17526                    self.store_selector(deserializer.finish(helper)?)?
17527                }
17528                S::Field(Some(deserializer)) => self.store_field(deserializer.finish(helper)?)?,
17529                _ => (),
17530            }
17531            Ok(())
17532        }
17533        fn store_annotation(&mut self, value: super::Annotation) -> Result<(), Error> {
17534            if self.annotation.is_some() {
17535                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
17536                    b"annotation",
17537                )))?;
17538            }
17539            self.annotation = Some(value);
17540            Ok(())
17541        }
17542        fn store_selector(&mut self, value: super::Field) -> Result<(), Error> {
17543            if self.selector.is_some() {
17544                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
17545                    b"selector",
17546                )))?;
17547            }
17548            self.selector = Some(value);
17549            Ok(())
17550        }
17551        fn store_field(&mut self, value: super::Field) -> Result<(), Error> {
17552            self.field.push(value);
17553            Ok(())
17554        }
17555        fn handle_annotation<'de>(
17556            &mut self,
17557            helper: &mut DeserializeHelper,
17558            output: DeserializerOutput<'de, super::Annotation>,
17559            fallback: &mut Option<KeyrefContentDeserializerState>,
17560        ) -> Result<ElementHandlerOutput<'de>, Error> {
17561            let DeserializerOutput {
17562                artifact,
17563                event,
17564                allow_any,
17565            } = output;
17566            if artifact.is_none() {
17567                fallback.get_or_insert(KeyrefContentDeserializerState::Annotation(None));
17568                *self.state__ = KeyrefContentDeserializerState::Selector(None);
17569                return Ok(ElementHandlerOutput::from_event(event, allow_any));
17570            }
17571            if let Some(fallback) = fallback.take() {
17572                self.finish_state(helper, fallback)?;
17573            }
17574            Ok(match artifact {
17575                DeserializerArtifact::None => unreachable!(),
17576                DeserializerArtifact::Data(data) => {
17577                    self.store_annotation(data)?;
17578                    *self.state__ = KeyrefContentDeserializerState::Selector(None);
17579                    ElementHandlerOutput::from_event(event, allow_any)
17580                }
17581                DeserializerArtifact::Deserializer(deserializer) => {
17582                    let ret = ElementHandlerOutput::from_event(event, allow_any);
17583                    match &ret {
17584                        ElementHandlerOutput::Continue { .. } => {
17585                            fallback.get_or_insert(KeyrefContentDeserializerState::Annotation(
17586                                Some(deserializer),
17587                            ));
17588                            *self.state__ = KeyrefContentDeserializerState::Selector(None);
17589                        }
17590                        ElementHandlerOutput::Break { .. } => {
17591                            *self.state__ =
17592                                KeyrefContentDeserializerState::Annotation(Some(deserializer));
17593                        }
17594                    }
17595                    ret
17596                }
17597            })
17598        }
17599        fn handle_selector<'de>(
17600            &mut self,
17601            helper: &mut DeserializeHelper,
17602            output: DeserializerOutput<'de, super::Field>,
17603            fallback: &mut Option<KeyrefContentDeserializerState>,
17604        ) -> Result<ElementHandlerOutput<'de>, Error> {
17605            let DeserializerOutput {
17606                artifact,
17607                event,
17608                allow_any,
17609            } = output;
17610            if artifact.is_none() {
17611                if self.selector.is_some() {
17612                    fallback.get_or_insert(KeyrefContentDeserializerState::Selector(None));
17613                    *self.state__ = KeyrefContentDeserializerState::Field(None);
17614                    return Ok(ElementHandlerOutput::from_event(event, allow_any));
17615                } else {
17616                    *self.state__ = KeyrefContentDeserializerState::Selector(None);
17617                    return Ok(ElementHandlerOutput::break_(event, allow_any));
17618                }
17619            }
17620            if let Some(fallback) = fallback.take() {
17621                self.finish_state(helper, fallback)?;
17622            }
17623            Ok(match artifact {
17624                DeserializerArtifact::None => unreachable!(),
17625                DeserializerArtifact::Data(data) => {
17626                    self.store_selector(data)?;
17627                    *self.state__ = KeyrefContentDeserializerState::Field(None);
17628                    ElementHandlerOutput::from_event(event, allow_any)
17629                }
17630                DeserializerArtifact::Deserializer(deserializer) => {
17631                    let ret = ElementHandlerOutput::from_event(event, allow_any);
17632                    match &ret {
17633                        ElementHandlerOutput::Continue { .. } => {
17634                            fallback.get_or_insert(KeyrefContentDeserializerState::Selector(Some(
17635                                deserializer,
17636                            )));
17637                            *self.state__ = KeyrefContentDeserializerState::Field(None);
17638                        }
17639                        ElementHandlerOutput::Break { .. } => {
17640                            *self.state__ =
17641                                KeyrefContentDeserializerState::Selector(Some(deserializer));
17642                        }
17643                    }
17644                    ret
17645                }
17646            })
17647        }
17648        fn handle_field<'de>(
17649            &mut self,
17650            helper: &mut DeserializeHelper,
17651            output: DeserializerOutput<'de, super::Field>,
17652            fallback: &mut Option<KeyrefContentDeserializerState>,
17653        ) -> Result<ElementHandlerOutput<'de>, Error> {
17654            let DeserializerOutput {
17655                artifact,
17656                event,
17657                allow_any,
17658            } = output;
17659            if artifact.is_none() {
17660                if self.field.len() < 1usize {
17661                    *self.state__ = KeyrefContentDeserializerState::Field(None);
17662                    return Ok(ElementHandlerOutput::break_(event, allow_any));
17663                } else {
17664                    fallback.get_or_insert(KeyrefContentDeserializerState::Field(None));
17665                    *self.state__ = KeyrefContentDeserializerState::Done__;
17666                    return Ok(ElementHandlerOutput::from_event(event, allow_any));
17667                }
17668            }
17669            if let Some(fallback) = fallback.take() {
17670                self.finish_state(helper, fallback)?;
17671            }
17672            Ok(match artifact {
17673                DeserializerArtifact::None => unreachable!(),
17674                DeserializerArtifact::Data(data) => {
17675                    self.store_field(data)?;
17676                    *self.state__ = KeyrefContentDeserializerState::Field(None);
17677                    ElementHandlerOutput::from_event(event, allow_any)
17678                }
17679                DeserializerArtifact::Deserializer(deserializer) => {
17680                    let ret = ElementHandlerOutput::from_event(event, allow_any);
17681                    match &ret {
17682                        ElementHandlerOutput::Continue { .. } => {
17683                            fallback.get_or_insert(KeyrefContentDeserializerState::Field(Some(
17684                                deserializer,
17685                            )));
17686                            *self.state__ = KeyrefContentDeserializerState::Field(None);
17687                        }
17688                        ElementHandlerOutput::Break { .. } => {
17689                            *self.state__ =
17690                                KeyrefContentDeserializerState::Field(Some(deserializer));
17691                        }
17692                    }
17693                    ret
17694                }
17695            })
17696        }
17697    }
17698    impl<'de> Deserializer<'de, super::KeyrefContent> for Box<KeyrefContentDeserializer> {
17699        fn init(
17700            helper: &mut DeserializeHelper,
17701            event: Event<'de>,
17702        ) -> DeserializerResult<'de, super::KeyrefContent> {
17703            let deserializer = Box::new(KeyrefContentDeserializer {
17704                annotation: None,
17705                selector: None,
17706                field: Vec::new(),
17707                state__: Box::new(KeyrefContentDeserializerState::Init__),
17708            });
17709            let mut output = deserializer.next(helper, event)?;
17710            output.artifact = match output.artifact {
17711                DeserializerArtifact::Deserializer(x)
17712                    if matches!(&*x.state__, KeyrefContentDeserializerState::Init__) =>
17713                {
17714                    DeserializerArtifact::None
17715                }
17716                artifact => artifact,
17717            };
17718            Ok(output)
17719        }
17720        fn next(
17721            mut self,
17722            helper: &mut DeserializeHelper,
17723            event: Event<'de>,
17724        ) -> DeserializerResult<'de, super::KeyrefContent> {
17725            use KeyrefContentDeserializerState as S;
17726            let mut event = event;
17727            let mut fallback = None;
17728            let mut allow_any_element = false;
17729            let (event, allow_any) = loop {
17730                let state = replace(&mut *self.state__, S::Unknown__);
17731                event = match (state, event) {
17732                    (S::Unknown__, _) => unreachable!(),
17733                    (S::Annotation(Some(deserializer)), event) => {
17734                        let output = deserializer.next(helper, event)?;
17735                        match self.handle_annotation(helper, output, &mut fallback)? {
17736                            ElementHandlerOutput::Continue { event, allow_any } => {
17737                                allow_any_element = allow_any_element || allow_any;
17738                                event
17739                            }
17740                            ElementHandlerOutput::Break { event, allow_any } => {
17741                                break (event, allow_any)
17742                            }
17743                        }
17744                    }
17745                    (S::Selector(Some(deserializer)), event) => {
17746                        let output = deserializer.next(helper, event)?;
17747                        match self.handle_selector(helper, output, &mut fallback)? {
17748                            ElementHandlerOutput::Continue { event, allow_any } => {
17749                                allow_any_element = allow_any_element || allow_any;
17750                                event
17751                            }
17752                            ElementHandlerOutput::Break { event, allow_any } => {
17753                                break (event, allow_any)
17754                            }
17755                        }
17756                    }
17757                    (S::Field(Some(deserializer)), event) => {
17758                        let output = deserializer.next(helper, event)?;
17759                        match self.handle_field(helper, output, &mut fallback)? {
17760                            ElementHandlerOutput::Continue { event, allow_any } => {
17761                                allow_any_element = allow_any_element || allow_any;
17762                                event
17763                            }
17764                            ElementHandlerOutput::Break { event, allow_any } => {
17765                                break (event, allow_any)
17766                            }
17767                        }
17768                    }
17769                    (_, event @ Event::End(_)) => {
17770                        if let Some(fallback) = fallback.take() {
17771                            self.finish_state(helper, fallback)?;
17772                        }
17773                        return Ok(DeserializerOutput {
17774                            artifact: DeserializerArtifact::Data(self.finish(helper)?),
17775                            event: DeserializerEvent::Continue(event),
17776                            allow_any: false,
17777                        });
17778                    }
17779                    (S::Init__, event) => {
17780                        fallback.get_or_insert(S::Init__);
17781                        *self.state__ = KeyrefContentDeserializerState::Annotation(None);
17782                        event
17783                    }
17784                    (S::Annotation(None), event @ (Event::Start(_) | Event::Empty(_))) => {
17785                        let output = helper.init_start_tag_deserializer(
17786                            event,
17787                            Some(&super::NS_XS),
17788                            b"annotation",
17789                            false,
17790                        )?;
17791                        match self.handle_annotation(helper, output, &mut fallback)? {
17792                            ElementHandlerOutput::Continue { event, allow_any } => {
17793                                allow_any_element = allow_any_element || allow_any;
17794                                event
17795                            }
17796                            ElementHandlerOutput::Break { event, allow_any } => {
17797                                break (event, allow_any)
17798                            }
17799                        }
17800                    }
17801                    (S::Selector(None), event @ (Event::Start(_) | Event::Empty(_))) => {
17802                        let output = helper.init_start_tag_deserializer(
17803                            event,
17804                            Some(&super::NS_XS),
17805                            b"selector",
17806                            false,
17807                        )?;
17808                        match self.handle_selector(helper, output, &mut fallback)? {
17809                            ElementHandlerOutput::Continue { event, allow_any } => {
17810                                allow_any_element = allow_any_element || allow_any;
17811                                event
17812                            }
17813                            ElementHandlerOutput::Break { event, allow_any } => {
17814                                break (event, allow_any)
17815                            }
17816                        }
17817                    }
17818                    (S::Field(None), event @ (Event::Start(_) | Event::Empty(_))) => {
17819                        let output = helper.init_start_tag_deserializer(
17820                            event,
17821                            Some(&super::NS_XS),
17822                            b"field",
17823                            false,
17824                        )?;
17825                        match self.handle_field(helper, output, &mut fallback)? {
17826                            ElementHandlerOutput::Continue { event, allow_any } => {
17827                                allow_any_element = allow_any_element || allow_any;
17828                                event
17829                            }
17830                            ElementHandlerOutput::Break { event, allow_any } => {
17831                                break (event, allow_any)
17832                            }
17833                        }
17834                    }
17835                    (S::Done__, event) => {
17836                        fallback.get_or_insert(S::Done__);
17837                        break (DeserializerEvent::Continue(event), allow_any_element);
17838                    }
17839                    (state, event) => {
17840                        *self.state__ = state;
17841                        break (DeserializerEvent::Break(event), false);
17842                    }
17843                }
17844            };
17845            if let Some(fallback) = fallback {
17846                *self.state__ = fallback;
17847            }
17848            Ok(DeserializerOutput {
17849                artifact: DeserializerArtifact::Deserializer(self),
17850                event,
17851                allow_any,
17852            })
17853        }
17854        fn finish(mut self, helper: &mut DeserializeHelper) -> Result<super::KeyrefContent, Error> {
17855            let state = replace(
17856                &mut *self.state__,
17857                KeyrefContentDeserializerState::Unknown__,
17858            );
17859            self.finish_state(helper, state)?;
17860            Ok(super::KeyrefContent {
17861                annotation: self.annotation,
17862                selector: self
17863                    .selector
17864                    .ok_or_else(|| ErrorKind::MissingElement("selector".into()))?,
17865                field: self.field,
17866            })
17867        }
17868    }
17869    #[derive(Debug)]
17870    pub struct FacetDeserializer {
17871        state__: Box<FacetDeserializerState>,
17872    }
17873    #[derive(Debug)]
17874    pub enum FacetDeserializerState {
17875        Init__,
17876        MinExclusive(
17877            Option<super::FacetType>,
17878            Option<<super::FacetType as WithDeserializer>::Deserializer>,
17879        ),
17880        MinInclusive(
17881            Option<super::FacetType>,
17882            Option<<super::FacetType as WithDeserializer>::Deserializer>,
17883        ),
17884        MaxExclusive(
17885            Option<super::FacetType>,
17886            Option<<super::FacetType as WithDeserializer>::Deserializer>,
17887        ),
17888        MaxInclusive(
17889            Option<super::FacetType>,
17890            Option<<super::FacetType as WithDeserializer>::Deserializer>,
17891        ),
17892        TotalDigits(
17893            Option<super::FacetType>,
17894            Option<<super::FacetType as WithDeserializer>::Deserializer>,
17895        ),
17896        FractionDigits(
17897            Option<super::FacetType>,
17898            Option<<super::FacetType as WithDeserializer>::Deserializer>,
17899        ),
17900        Length(
17901            Option<super::FacetType>,
17902            Option<<super::FacetType as WithDeserializer>::Deserializer>,
17903        ),
17904        MinLength(
17905            Option<super::FacetType>,
17906            Option<<super::FacetType as WithDeserializer>::Deserializer>,
17907        ),
17908        MaxLength(
17909            Option<super::FacetType>,
17910            Option<<super::FacetType as WithDeserializer>::Deserializer>,
17911        ),
17912        Enumeration(
17913            Option<super::FacetType>,
17914            Option<<super::FacetType as WithDeserializer>::Deserializer>,
17915        ),
17916        WhiteSpace(
17917            Option<super::FacetType>,
17918            Option<<super::FacetType as WithDeserializer>::Deserializer>,
17919        ),
17920        Pattern(
17921            Option<super::FacetType>,
17922            Option<<super::FacetType as WithDeserializer>::Deserializer>,
17923        ),
17924        Assertion(
17925            Option<super::AssertionType>,
17926            Option<<super::AssertionType as WithDeserializer>::Deserializer>,
17927        ),
17928        ExplicitTimezone(
17929            Option<super::FacetType>,
17930            Option<<super::FacetType as WithDeserializer>::Deserializer>,
17931        ),
17932        Done__(super::Facet),
17933        Unknown__,
17934    }
17935    impl FacetDeserializer {
17936        fn find_suitable<'de>(
17937            &mut self,
17938            helper: &mut DeserializeHelper,
17939            event: Event<'de>,
17940            fallback: &mut Option<FacetDeserializerState>,
17941        ) -> Result<ElementHandlerOutput<'de>, Error> {
17942            if let Event::Start(x) | Event::Empty(x) = &event {
17943                if matches!(
17944                    helper.resolve_local_name(x.name(), &super::NS_XS),
17945                    Some(b"minExclusive")
17946                ) {
17947                    let output =
17948                        <super::FacetType as WithDeserializer>::Deserializer::init(helper, event)?;
17949                    return self.handle_min_exclusive(
17950                        helper,
17951                        Default::default(),
17952                        output,
17953                        &mut *fallback,
17954                    );
17955                }
17956                if matches!(
17957                    helper.resolve_local_name(x.name(), &super::NS_XS),
17958                    Some(b"minInclusive")
17959                ) {
17960                    let output =
17961                        <super::FacetType as WithDeserializer>::Deserializer::init(helper, event)?;
17962                    return self.handle_min_inclusive(
17963                        helper,
17964                        Default::default(),
17965                        output,
17966                        &mut *fallback,
17967                    );
17968                }
17969                if matches!(
17970                    helper.resolve_local_name(x.name(), &super::NS_XS),
17971                    Some(b"maxExclusive")
17972                ) {
17973                    let output =
17974                        <super::FacetType as WithDeserializer>::Deserializer::init(helper, event)?;
17975                    return self.handle_max_exclusive(
17976                        helper,
17977                        Default::default(),
17978                        output,
17979                        &mut *fallback,
17980                    );
17981                }
17982                if matches!(
17983                    helper.resolve_local_name(x.name(), &super::NS_XS),
17984                    Some(b"maxInclusive")
17985                ) {
17986                    let output =
17987                        <super::FacetType as WithDeserializer>::Deserializer::init(helper, event)?;
17988                    return self.handle_max_inclusive(
17989                        helper,
17990                        Default::default(),
17991                        output,
17992                        &mut *fallback,
17993                    );
17994                }
17995                if matches!(
17996                    helper.resolve_local_name(x.name(), &super::NS_XS),
17997                    Some(b"totalDigits")
17998                ) {
17999                    let output =
18000                        <super::FacetType as WithDeserializer>::Deserializer::init(helper, event)?;
18001                    return self.handle_total_digits(
18002                        helper,
18003                        Default::default(),
18004                        output,
18005                        &mut *fallback,
18006                    );
18007                }
18008                if matches!(
18009                    helper.resolve_local_name(x.name(), &super::NS_XS),
18010                    Some(b"fractionDigits")
18011                ) {
18012                    let output =
18013                        <super::FacetType as WithDeserializer>::Deserializer::init(helper, event)?;
18014                    return self.handle_fraction_digits(
18015                        helper,
18016                        Default::default(),
18017                        output,
18018                        &mut *fallback,
18019                    );
18020                }
18021                if matches!(
18022                    helper.resolve_local_name(x.name(), &super::NS_XS),
18023                    Some(b"length")
18024                ) {
18025                    let output =
18026                        <super::FacetType as WithDeserializer>::Deserializer::init(helper, event)?;
18027                    return self.handle_length(helper, Default::default(), output, &mut *fallback);
18028                }
18029                if matches!(
18030                    helper.resolve_local_name(x.name(), &super::NS_XS),
18031                    Some(b"minLength")
18032                ) {
18033                    let output =
18034                        <super::FacetType as WithDeserializer>::Deserializer::init(helper, event)?;
18035                    return self.handle_min_length(
18036                        helper,
18037                        Default::default(),
18038                        output,
18039                        &mut *fallback,
18040                    );
18041                }
18042                if matches!(
18043                    helper.resolve_local_name(x.name(), &super::NS_XS),
18044                    Some(b"maxLength")
18045                ) {
18046                    let output =
18047                        <super::FacetType as WithDeserializer>::Deserializer::init(helper, event)?;
18048                    return self.handle_max_length(
18049                        helper,
18050                        Default::default(),
18051                        output,
18052                        &mut *fallback,
18053                    );
18054                }
18055                if matches!(
18056                    helper.resolve_local_name(x.name(), &super::NS_XS),
18057                    Some(b"enumeration")
18058                ) {
18059                    let output =
18060                        <super::FacetType as WithDeserializer>::Deserializer::init(helper, event)?;
18061                    return self.handle_enumeration(
18062                        helper,
18063                        Default::default(),
18064                        output,
18065                        &mut *fallback,
18066                    );
18067                }
18068                if matches!(
18069                    helper.resolve_local_name(x.name(), &super::NS_XS),
18070                    Some(b"whiteSpace")
18071                ) {
18072                    let output =
18073                        <super::FacetType as WithDeserializer>::Deserializer::init(helper, event)?;
18074                    return self.handle_white_space(
18075                        helper,
18076                        Default::default(),
18077                        output,
18078                        &mut *fallback,
18079                    );
18080                }
18081                if matches!(
18082                    helper.resolve_local_name(x.name(), &super::NS_XS),
18083                    Some(b"pattern")
18084                ) {
18085                    let output =
18086                        <super::FacetType as WithDeserializer>::Deserializer::init(helper, event)?;
18087                    return self.handle_pattern(helper, Default::default(), output, &mut *fallback);
18088                }
18089                if matches!(
18090                    helper.resolve_local_name(x.name(), &super::NS_XS),
18091                    Some(b"assertion")
18092                ) {
18093                    let output = <super::AssertionType as WithDeserializer>::Deserializer::init(
18094                        helper, event,
18095                    )?;
18096                    return self.handle_assertion(
18097                        helper,
18098                        Default::default(),
18099                        output,
18100                        &mut *fallback,
18101                    );
18102                }
18103                if matches!(
18104                    helper.resolve_local_name(x.name(), &super::NS_XS),
18105                    Some(b"explicitTimezone")
18106                ) {
18107                    let output =
18108                        <super::FacetType as WithDeserializer>::Deserializer::init(helper, event)?;
18109                    return self.handle_explicit_timezone(
18110                        helper,
18111                        Default::default(),
18112                        output,
18113                        &mut *fallback,
18114                    );
18115                }
18116            }
18117            *self.state__ = fallback.take().unwrap_or(FacetDeserializerState::Init__);
18118            Ok(ElementHandlerOutput::return_to_parent(event, false))
18119        }
18120        fn finish_state(
18121            helper: &mut DeserializeHelper,
18122            state: FacetDeserializerState,
18123        ) -> Result<super::Facet, Error> {
18124            use FacetDeserializerState as S;
18125            match state {
18126                S::Unknown__ => unreachable!(),
18127                S::Init__ => Err(ErrorKind::MissingContent.into()),
18128                S::MinExclusive(mut values, deserializer) => {
18129                    if let Some(deserializer) = deserializer {
18130                        let value = deserializer.finish(helper)?;
18131                        FacetDeserializer::store_min_exclusive(&mut values, value)?;
18132                    }
18133                    Ok(super::Facet::MinExclusive(values.ok_or_else(|| {
18134                        ErrorKind::MissingElement("minExclusive".into())
18135                    })?))
18136                }
18137                S::MinInclusive(mut values, deserializer) => {
18138                    if let Some(deserializer) = deserializer {
18139                        let value = deserializer.finish(helper)?;
18140                        FacetDeserializer::store_min_inclusive(&mut values, value)?;
18141                    }
18142                    Ok(super::Facet::MinInclusive(values.ok_or_else(|| {
18143                        ErrorKind::MissingElement("minInclusive".into())
18144                    })?))
18145                }
18146                S::MaxExclusive(mut values, deserializer) => {
18147                    if let Some(deserializer) = deserializer {
18148                        let value = deserializer.finish(helper)?;
18149                        FacetDeserializer::store_max_exclusive(&mut values, value)?;
18150                    }
18151                    Ok(super::Facet::MaxExclusive(values.ok_or_else(|| {
18152                        ErrorKind::MissingElement("maxExclusive".into())
18153                    })?))
18154                }
18155                S::MaxInclusive(mut values, deserializer) => {
18156                    if let Some(deserializer) = deserializer {
18157                        let value = deserializer.finish(helper)?;
18158                        FacetDeserializer::store_max_inclusive(&mut values, value)?;
18159                    }
18160                    Ok(super::Facet::MaxInclusive(values.ok_or_else(|| {
18161                        ErrorKind::MissingElement("maxInclusive".into())
18162                    })?))
18163                }
18164                S::TotalDigits(mut values, deserializer) => {
18165                    if let Some(deserializer) = deserializer {
18166                        let value = deserializer.finish(helper)?;
18167                        FacetDeserializer::store_total_digits(&mut values, value)?;
18168                    }
18169                    Ok(super::Facet::TotalDigits(values.ok_or_else(|| {
18170                        ErrorKind::MissingElement("totalDigits".into())
18171                    })?))
18172                }
18173                S::FractionDigits(mut values, deserializer) => {
18174                    if let Some(deserializer) = deserializer {
18175                        let value = deserializer.finish(helper)?;
18176                        FacetDeserializer::store_fraction_digits(&mut values, value)?;
18177                    }
18178                    Ok(super::Facet::FractionDigits(values.ok_or_else(|| {
18179                        ErrorKind::MissingElement("fractionDigits".into())
18180                    })?))
18181                }
18182                S::Length(mut values, deserializer) => {
18183                    if let Some(deserializer) = deserializer {
18184                        let value = deserializer.finish(helper)?;
18185                        FacetDeserializer::store_length(&mut values, value)?;
18186                    }
18187                    Ok(super::Facet::Length(values.ok_or_else(|| {
18188                        ErrorKind::MissingElement("length".into())
18189                    })?))
18190                }
18191                S::MinLength(mut values, deserializer) => {
18192                    if let Some(deserializer) = deserializer {
18193                        let value = deserializer.finish(helper)?;
18194                        FacetDeserializer::store_min_length(&mut values, value)?;
18195                    }
18196                    Ok(super::Facet::MinLength(values.ok_or_else(|| {
18197                        ErrorKind::MissingElement("minLength".into())
18198                    })?))
18199                }
18200                S::MaxLength(mut values, deserializer) => {
18201                    if let Some(deserializer) = deserializer {
18202                        let value = deserializer.finish(helper)?;
18203                        FacetDeserializer::store_max_length(&mut values, value)?;
18204                    }
18205                    Ok(super::Facet::MaxLength(values.ok_or_else(|| {
18206                        ErrorKind::MissingElement("maxLength".into())
18207                    })?))
18208                }
18209                S::Enumeration(mut values, deserializer) => {
18210                    if let Some(deserializer) = deserializer {
18211                        let value = deserializer.finish(helper)?;
18212                        FacetDeserializer::store_enumeration(&mut values, value)?;
18213                    }
18214                    Ok(super::Facet::Enumeration(values.ok_or_else(|| {
18215                        ErrorKind::MissingElement("enumeration".into())
18216                    })?))
18217                }
18218                S::WhiteSpace(mut values, deserializer) => {
18219                    if let Some(deserializer) = deserializer {
18220                        let value = deserializer.finish(helper)?;
18221                        FacetDeserializer::store_white_space(&mut values, value)?;
18222                    }
18223                    Ok(super::Facet::WhiteSpace(values.ok_or_else(|| {
18224                        ErrorKind::MissingElement("whiteSpace".into())
18225                    })?))
18226                }
18227                S::Pattern(mut values, deserializer) => {
18228                    if let Some(deserializer) = deserializer {
18229                        let value = deserializer.finish(helper)?;
18230                        FacetDeserializer::store_pattern(&mut values, value)?;
18231                    }
18232                    Ok(super::Facet::Pattern(values.ok_or_else(|| {
18233                        ErrorKind::MissingElement("pattern".into())
18234                    })?))
18235                }
18236                S::Assertion(mut values, deserializer) => {
18237                    if let Some(deserializer) = deserializer {
18238                        let value = deserializer.finish(helper)?;
18239                        FacetDeserializer::store_assertion(&mut values, value)?;
18240                    }
18241                    Ok(super::Facet::Assertion(values.ok_or_else(|| {
18242                        ErrorKind::MissingElement("assertion".into())
18243                    })?))
18244                }
18245                S::ExplicitTimezone(mut values, deserializer) => {
18246                    if let Some(deserializer) = deserializer {
18247                        let value = deserializer.finish(helper)?;
18248                        FacetDeserializer::store_explicit_timezone(&mut values, value)?;
18249                    }
18250                    Ok(super::Facet::ExplicitTimezone(values.ok_or_else(|| {
18251                        ErrorKind::MissingElement("explicitTimezone".into())
18252                    })?))
18253                }
18254                S::Done__(data) => Ok(data),
18255            }
18256        }
18257        fn store_min_exclusive(
18258            values: &mut Option<super::FacetType>,
18259            value: super::FacetType,
18260        ) -> Result<(), Error> {
18261            if values.is_some() {
18262                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
18263                    b"minExclusive",
18264                )))?;
18265            }
18266            *values = Some(value);
18267            Ok(())
18268        }
18269        fn store_min_inclusive(
18270            values: &mut Option<super::FacetType>,
18271            value: super::FacetType,
18272        ) -> Result<(), Error> {
18273            if values.is_some() {
18274                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
18275                    b"minInclusive",
18276                )))?;
18277            }
18278            *values = Some(value);
18279            Ok(())
18280        }
18281        fn store_max_exclusive(
18282            values: &mut Option<super::FacetType>,
18283            value: super::FacetType,
18284        ) -> Result<(), Error> {
18285            if values.is_some() {
18286                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
18287                    b"maxExclusive",
18288                )))?;
18289            }
18290            *values = Some(value);
18291            Ok(())
18292        }
18293        fn store_max_inclusive(
18294            values: &mut Option<super::FacetType>,
18295            value: super::FacetType,
18296        ) -> Result<(), Error> {
18297            if values.is_some() {
18298                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
18299                    b"maxInclusive",
18300                )))?;
18301            }
18302            *values = Some(value);
18303            Ok(())
18304        }
18305        fn store_total_digits(
18306            values: &mut Option<super::FacetType>,
18307            value: super::FacetType,
18308        ) -> Result<(), Error> {
18309            if values.is_some() {
18310                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
18311                    b"totalDigits",
18312                )))?;
18313            }
18314            *values = Some(value);
18315            Ok(())
18316        }
18317        fn store_fraction_digits(
18318            values: &mut Option<super::FacetType>,
18319            value: super::FacetType,
18320        ) -> Result<(), Error> {
18321            if values.is_some() {
18322                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
18323                    b"fractionDigits",
18324                )))?;
18325            }
18326            *values = Some(value);
18327            Ok(())
18328        }
18329        fn store_length(
18330            values: &mut Option<super::FacetType>,
18331            value: super::FacetType,
18332        ) -> Result<(), Error> {
18333            if values.is_some() {
18334                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
18335                    b"length",
18336                )))?;
18337            }
18338            *values = Some(value);
18339            Ok(())
18340        }
18341        fn store_min_length(
18342            values: &mut Option<super::FacetType>,
18343            value: super::FacetType,
18344        ) -> Result<(), Error> {
18345            if values.is_some() {
18346                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
18347                    b"minLength",
18348                )))?;
18349            }
18350            *values = Some(value);
18351            Ok(())
18352        }
18353        fn store_max_length(
18354            values: &mut Option<super::FacetType>,
18355            value: super::FacetType,
18356        ) -> Result<(), Error> {
18357            if values.is_some() {
18358                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
18359                    b"maxLength",
18360                )))?;
18361            }
18362            *values = Some(value);
18363            Ok(())
18364        }
18365        fn store_enumeration(
18366            values: &mut Option<super::FacetType>,
18367            value: super::FacetType,
18368        ) -> Result<(), Error> {
18369            if values.is_some() {
18370                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
18371                    b"enumeration",
18372                )))?;
18373            }
18374            *values = Some(value);
18375            Ok(())
18376        }
18377        fn store_white_space(
18378            values: &mut Option<super::FacetType>,
18379            value: super::FacetType,
18380        ) -> Result<(), Error> {
18381            if values.is_some() {
18382                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
18383                    b"whiteSpace",
18384                )))?;
18385            }
18386            *values = Some(value);
18387            Ok(())
18388        }
18389        fn store_pattern(
18390            values: &mut Option<super::FacetType>,
18391            value: super::FacetType,
18392        ) -> Result<(), Error> {
18393            if values.is_some() {
18394                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
18395                    b"pattern",
18396                )))?;
18397            }
18398            *values = Some(value);
18399            Ok(())
18400        }
18401        fn store_assertion(
18402            values: &mut Option<super::AssertionType>,
18403            value: super::AssertionType,
18404        ) -> Result<(), Error> {
18405            if values.is_some() {
18406                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
18407                    b"assertion",
18408                )))?;
18409            }
18410            *values = Some(value);
18411            Ok(())
18412        }
18413        fn store_explicit_timezone(
18414            values: &mut Option<super::FacetType>,
18415            value: super::FacetType,
18416        ) -> Result<(), Error> {
18417            if values.is_some() {
18418                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
18419                    b"explicitTimezone",
18420                )))?;
18421            }
18422            *values = Some(value);
18423            Ok(())
18424        }
18425        fn handle_min_exclusive<'de>(
18426            &mut self,
18427            helper: &mut DeserializeHelper,
18428            mut values: Option<super::FacetType>,
18429            output: DeserializerOutput<'de, super::FacetType>,
18430            fallback: &mut Option<FacetDeserializerState>,
18431        ) -> Result<ElementHandlerOutput<'de>, Error> {
18432            let DeserializerOutput {
18433                artifact,
18434                event,
18435                allow_any,
18436            } = output;
18437            if artifact.is_none() {
18438                *self.state__ = match fallback.take() {
18439                    None if values.is_none() => {
18440                        *self.state__ = FacetDeserializerState::Init__;
18441                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
18442                    }
18443                    None => FacetDeserializerState::MinExclusive(values, None),
18444                    Some(FacetDeserializerState::MinExclusive(_, Some(deserializer))) => {
18445                        FacetDeserializerState::MinExclusive(values, Some(deserializer))
18446                    }
18447                    _ => unreachable!(),
18448                };
18449                return Ok(ElementHandlerOutput::break_(event, allow_any));
18450            }
18451            match fallback.take() {
18452                None => (),
18453                Some(FacetDeserializerState::MinExclusive(_, Some(deserializer))) => {
18454                    let data = deserializer.finish(helper)?;
18455                    FacetDeserializer::store_min_exclusive(&mut values, data)?;
18456                }
18457                Some(_) => unreachable!(),
18458            }
18459            Ok(match artifact {
18460                DeserializerArtifact::None => unreachable!(),
18461                DeserializerArtifact::Data(data) => {
18462                    FacetDeserializer::store_min_exclusive(&mut values, data)?;
18463                    let data = FacetDeserializer::finish_state(
18464                        helper,
18465                        FacetDeserializerState::MinExclusive(values, None),
18466                    )?;
18467                    *self.state__ = FacetDeserializerState::Done__(data);
18468                    ElementHandlerOutput::Break { event, allow_any }
18469                }
18470                DeserializerArtifact::Deserializer(deserializer) => {
18471                    *self.state__ =
18472                        FacetDeserializerState::MinExclusive(values, Some(deserializer));
18473                    ElementHandlerOutput::from_event_end(event, allow_any)
18474                }
18475            })
18476        }
18477        fn handle_min_inclusive<'de>(
18478            &mut self,
18479            helper: &mut DeserializeHelper,
18480            mut values: Option<super::FacetType>,
18481            output: DeserializerOutput<'de, super::FacetType>,
18482            fallback: &mut Option<FacetDeserializerState>,
18483        ) -> Result<ElementHandlerOutput<'de>, Error> {
18484            let DeserializerOutput {
18485                artifact,
18486                event,
18487                allow_any,
18488            } = output;
18489            if artifact.is_none() {
18490                *self.state__ = match fallback.take() {
18491                    None if values.is_none() => {
18492                        *self.state__ = FacetDeserializerState::Init__;
18493                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
18494                    }
18495                    None => FacetDeserializerState::MinInclusive(values, None),
18496                    Some(FacetDeserializerState::MinInclusive(_, Some(deserializer))) => {
18497                        FacetDeserializerState::MinInclusive(values, Some(deserializer))
18498                    }
18499                    _ => unreachable!(),
18500                };
18501                return Ok(ElementHandlerOutput::break_(event, allow_any));
18502            }
18503            match fallback.take() {
18504                None => (),
18505                Some(FacetDeserializerState::MinInclusive(_, Some(deserializer))) => {
18506                    let data = deserializer.finish(helper)?;
18507                    FacetDeserializer::store_min_inclusive(&mut values, data)?;
18508                }
18509                Some(_) => unreachable!(),
18510            }
18511            Ok(match artifact {
18512                DeserializerArtifact::None => unreachable!(),
18513                DeserializerArtifact::Data(data) => {
18514                    FacetDeserializer::store_min_inclusive(&mut values, data)?;
18515                    let data = FacetDeserializer::finish_state(
18516                        helper,
18517                        FacetDeserializerState::MinInclusive(values, None),
18518                    )?;
18519                    *self.state__ = FacetDeserializerState::Done__(data);
18520                    ElementHandlerOutput::Break { event, allow_any }
18521                }
18522                DeserializerArtifact::Deserializer(deserializer) => {
18523                    *self.state__ =
18524                        FacetDeserializerState::MinInclusive(values, Some(deserializer));
18525                    ElementHandlerOutput::from_event_end(event, allow_any)
18526                }
18527            })
18528        }
18529        fn handle_max_exclusive<'de>(
18530            &mut self,
18531            helper: &mut DeserializeHelper,
18532            mut values: Option<super::FacetType>,
18533            output: DeserializerOutput<'de, super::FacetType>,
18534            fallback: &mut Option<FacetDeserializerState>,
18535        ) -> Result<ElementHandlerOutput<'de>, Error> {
18536            let DeserializerOutput {
18537                artifact,
18538                event,
18539                allow_any,
18540            } = output;
18541            if artifact.is_none() {
18542                *self.state__ = match fallback.take() {
18543                    None if values.is_none() => {
18544                        *self.state__ = FacetDeserializerState::Init__;
18545                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
18546                    }
18547                    None => FacetDeserializerState::MaxExclusive(values, None),
18548                    Some(FacetDeserializerState::MaxExclusive(_, Some(deserializer))) => {
18549                        FacetDeserializerState::MaxExclusive(values, Some(deserializer))
18550                    }
18551                    _ => unreachable!(),
18552                };
18553                return Ok(ElementHandlerOutput::break_(event, allow_any));
18554            }
18555            match fallback.take() {
18556                None => (),
18557                Some(FacetDeserializerState::MaxExclusive(_, Some(deserializer))) => {
18558                    let data = deserializer.finish(helper)?;
18559                    FacetDeserializer::store_max_exclusive(&mut values, data)?;
18560                }
18561                Some(_) => unreachable!(),
18562            }
18563            Ok(match artifact {
18564                DeserializerArtifact::None => unreachable!(),
18565                DeserializerArtifact::Data(data) => {
18566                    FacetDeserializer::store_max_exclusive(&mut values, data)?;
18567                    let data = FacetDeserializer::finish_state(
18568                        helper,
18569                        FacetDeserializerState::MaxExclusive(values, None),
18570                    )?;
18571                    *self.state__ = FacetDeserializerState::Done__(data);
18572                    ElementHandlerOutput::Break { event, allow_any }
18573                }
18574                DeserializerArtifact::Deserializer(deserializer) => {
18575                    *self.state__ =
18576                        FacetDeserializerState::MaxExclusive(values, Some(deserializer));
18577                    ElementHandlerOutput::from_event_end(event, allow_any)
18578                }
18579            })
18580        }
18581        fn handle_max_inclusive<'de>(
18582            &mut self,
18583            helper: &mut DeserializeHelper,
18584            mut values: Option<super::FacetType>,
18585            output: DeserializerOutput<'de, super::FacetType>,
18586            fallback: &mut Option<FacetDeserializerState>,
18587        ) -> Result<ElementHandlerOutput<'de>, Error> {
18588            let DeserializerOutput {
18589                artifact,
18590                event,
18591                allow_any,
18592            } = output;
18593            if artifact.is_none() {
18594                *self.state__ = match fallback.take() {
18595                    None if values.is_none() => {
18596                        *self.state__ = FacetDeserializerState::Init__;
18597                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
18598                    }
18599                    None => FacetDeserializerState::MaxInclusive(values, None),
18600                    Some(FacetDeserializerState::MaxInclusive(_, Some(deserializer))) => {
18601                        FacetDeserializerState::MaxInclusive(values, Some(deserializer))
18602                    }
18603                    _ => unreachable!(),
18604                };
18605                return Ok(ElementHandlerOutput::break_(event, allow_any));
18606            }
18607            match fallback.take() {
18608                None => (),
18609                Some(FacetDeserializerState::MaxInclusive(_, Some(deserializer))) => {
18610                    let data = deserializer.finish(helper)?;
18611                    FacetDeserializer::store_max_inclusive(&mut values, data)?;
18612                }
18613                Some(_) => unreachable!(),
18614            }
18615            Ok(match artifact {
18616                DeserializerArtifact::None => unreachable!(),
18617                DeserializerArtifact::Data(data) => {
18618                    FacetDeserializer::store_max_inclusive(&mut values, data)?;
18619                    let data = FacetDeserializer::finish_state(
18620                        helper,
18621                        FacetDeserializerState::MaxInclusive(values, None),
18622                    )?;
18623                    *self.state__ = FacetDeserializerState::Done__(data);
18624                    ElementHandlerOutput::Break { event, allow_any }
18625                }
18626                DeserializerArtifact::Deserializer(deserializer) => {
18627                    *self.state__ =
18628                        FacetDeserializerState::MaxInclusive(values, Some(deserializer));
18629                    ElementHandlerOutput::from_event_end(event, allow_any)
18630                }
18631            })
18632        }
18633        fn handle_total_digits<'de>(
18634            &mut self,
18635            helper: &mut DeserializeHelper,
18636            mut values: Option<super::FacetType>,
18637            output: DeserializerOutput<'de, super::FacetType>,
18638            fallback: &mut Option<FacetDeserializerState>,
18639        ) -> Result<ElementHandlerOutput<'de>, Error> {
18640            let DeserializerOutput {
18641                artifact,
18642                event,
18643                allow_any,
18644            } = output;
18645            if artifact.is_none() {
18646                *self.state__ = match fallback.take() {
18647                    None if values.is_none() => {
18648                        *self.state__ = FacetDeserializerState::Init__;
18649                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
18650                    }
18651                    None => FacetDeserializerState::TotalDigits(values, None),
18652                    Some(FacetDeserializerState::TotalDigits(_, Some(deserializer))) => {
18653                        FacetDeserializerState::TotalDigits(values, Some(deserializer))
18654                    }
18655                    _ => unreachable!(),
18656                };
18657                return Ok(ElementHandlerOutput::break_(event, allow_any));
18658            }
18659            match fallback.take() {
18660                None => (),
18661                Some(FacetDeserializerState::TotalDigits(_, Some(deserializer))) => {
18662                    let data = deserializer.finish(helper)?;
18663                    FacetDeserializer::store_total_digits(&mut values, data)?;
18664                }
18665                Some(_) => unreachable!(),
18666            }
18667            Ok(match artifact {
18668                DeserializerArtifact::None => unreachable!(),
18669                DeserializerArtifact::Data(data) => {
18670                    FacetDeserializer::store_total_digits(&mut values, data)?;
18671                    let data = FacetDeserializer::finish_state(
18672                        helper,
18673                        FacetDeserializerState::TotalDigits(values, None),
18674                    )?;
18675                    *self.state__ = FacetDeserializerState::Done__(data);
18676                    ElementHandlerOutput::Break { event, allow_any }
18677                }
18678                DeserializerArtifact::Deserializer(deserializer) => {
18679                    *self.state__ = FacetDeserializerState::TotalDigits(values, Some(deserializer));
18680                    ElementHandlerOutput::from_event_end(event, allow_any)
18681                }
18682            })
18683        }
18684        fn handle_fraction_digits<'de>(
18685            &mut self,
18686            helper: &mut DeserializeHelper,
18687            mut values: Option<super::FacetType>,
18688            output: DeserializerOutput<'de, super::FacetType>,
18689            fallback: &mut Option<FacetDeserializerState>,
18690        ) -> Result<ElementHandlerOutput<'de>, Error> {
18691            let DeserializerOutput {
18692                artifact,
18693                event,
18694                allow_any,
18695            } = output;
18696            if artifact.is_none() {
18697                *self.state__ = match fallback.take() {
18698                    None if values.is_none() => {
18699                        *self.state__ = FacetDeserializerState::Init__;
18700                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
18701                    }
18702                    None => FacetDeserializerState::FractionDigits(values, None),
18703                    Some(FacetDeserializerState::FractionDigits(_, Some(deserializer))) => {
18704                        FacetDeserializerState::FractionDigits(values, Some(deserializer))
18705                    }
18706                    _ => unreachable!(),
18707                };
18708                return Ok(ElementHandlerOutput::break_(event, allow_any));
18709            }
18710            match fallback.take() {
18711                None => (),
18712                Some(FacetDeserializerState::FractionDigits(_, Some(deserializer))) => {
18713                    let data = deserializer.finish(helper)?;
18714                    FacetDeserializer::store_fraction_digits(&mut values, data)?;
18715                }
18716                Some(_) => unreachable!(),
18717            }
18718            Ok(match artifact {
18719                DeserializerArtifact::None => unreachable!(),
18720                DeserializerArtifact::Data(data) => {
18721                    FacetDeserializer::store_fraction_digits(&mut values, data)?;
18722                    let data = FacetDeserializer::finish_state(
18723                        helper,
18724                        FacetDeserializerState::FractionDigits(values, None),
18725                    )?;
18726                    *self.state__ = FacetDeserializerState::Done__(data);
18727                    ElementHandlerOutput::Break { event, allow_any }
18728                }
18729                DeserializerArtifact::Deserializer(deserializer) => {
18730                    *self.state__ =
18731                        FacetDeserializerState::FractionDigits(values, Some(deserializer));
18732                    ElementHandlerOutput::from_event_end(event, allow_any)
18733                }
18734            })
18735        }
18736        fn handle_length<'de>(
18737            &mut self,
18738            helper: &mut DeserializeHelper,
18739            mut values: Option<super::FacetType>,
18740            output: DeserializerOutput<'de, super::FacetType>,
18741            fallback: &mut Option<FacetDeserializerState>,
18742        ) -> Result<ElementHandlerOutput<'de>, Error> {
18743            let DeserializerOutput {
18744                artifact,
18745                event,
18746                allow_any,
18747            } = output;
18748            if artifact.is_none() {
18749                *self.state__ = match fallback.take() {
18750                    None if values.is_none() => {
18751                        *self.state__ = FacetDeserializerState::Init__;
18752                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
18753                    }
18754                    None => FacetDeserializerState::Length(values, None),
18755                    Some(FacetDeserializerState::Length(_, Some(deserializer))) => {
18756                        FacetDeserializerState::Length(values, Some(deserializer))
18757                    }
18758                    _ => unreachable!(),
18759                };
18760                return Ok(ElementHandlerOutput::break_(event, allow_any));
18761            }
18762            match fallback.take() {
18763                None => (),
18764                Some(FacetDeserializerState::Length(_, Some(deserializer))) => {
18765                    let data = deserializer.finish(helper)?;
18766                    FacetDeserializer::store_length(&mut values, data)?;
18767                }
18768                Some(_) => unreachable!(),
18769            }
18770            Ok(match artifact {
18771                DeserializerArtifact::None => unreachable!(),
18772                DeserializerArtifact::Data(data) => {
18773                    FacetDeserializer::store_length(&mut values, data)?;
18774                    let data = FacetDeserializer::finish_state(
18775                        helper,
18776                        FacetDeserializerState::Length(values, None),
18777                    )?;
18778                    *self.state__ = FacetDeserializerState::Done__(data);
18779                    ElementHandlerOutput::Break { event, allow_any }
18780                }
18781                DeserializerArtifact::Deserializer(deserializer) => {
18782                    *self.state__ = FacetDeserializerState::Length(values, Some(deserializer));
18783                    ElementHandlerOutput::from_event_end(event, allow_any)
18784                }
18785            })
18786        }
18787        fn handle_min_length<'de>(
18788            &mut self,
18789            helper: &mut DeserializeHelper,
18790            mut values: Option<super::FacetType>,
18791            output: DeserializerOutput<'de, super::FacetType>,
18792            fallback: &mut Option<FacetDeserializerState>,
18793        ) -> Result<ElementHandlerOutput<'de>, Error> {
18794            let DeserializerOutput {
18795                artifact,
18796                event,
18797                allow_any,
18798            } = output;
18799            if artifact.is_none() {
18800                *self.state__ = match fallback.take() {
18801                    None if values.is_none() => {
18802                        *self.state__ = FacetDeserializerState::Init__;
18803                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
18804                    }
18805                    None => FacetDeserializerState::MinLength(values, None),
18806                    Some(FacetDeserializerState::MinLength(_, Some(deserializer))) => {
18807                        FacetDeserializerState::MinLength(values, Some(deserializer))
18808                    }
18809                    _ => unreachable!(),
18810                };
18811                return Ok(ElementHandlerOutput::break_(event, allow_any));
18812            }
18813            match fallback.take() {
18814                None => (),
18815                Some(FacetDeserializerState::MinLength(_, Some(deserializer))) => {
18816                    let data = deserializer.finish(helper)?;
18817                    FacetDeserializer::store_min_length(&mut values, data)?;
18818                }
18819                Some(_) => unreachable!(),
18820            }
18821            Ok(match artifact {
18822                DeserializerArtifact::None => unreachable!(),
18823                DeserializerArtifact::Data(data) => {
18824                    FacetDeserializer::store_min_length(&mut values, data)?;
18825                    let data = FacetDeserializer::finish_state(
18826                        helper,
18827                        FacetDeserializerState::MinLength(values, None),
18828                    )?;
18829                    *self.state__ = FacetDeserializerState::Done__(data);
18830                    ElementHandlerOutput::Break { event, allow_any }
18831                }
18832                DeserializerArtifact::Deserializer(deserializer) => {
18833                    *self.state__ = FacetDeserializerState::MinLength(values, Some(deserializer));
18834                    ElementHandlerOutput::from_event_end(event, allow_any)
18835                }
18836            })
18837        }
18838        fn handle_max_length<'de>(
18839            &mut self,
18840            helper: &mut DeserializeHelper,
18841            mut values: Option<super::FacetType>,
18842            output: DeserializerOutput<'de, super::FacetType>,
18843            fallback: &mut Option<FacetDeserializerState>,
18844        ) -> Result<ElementHandlerOutput<'de>, Error> {
18845            let DeserializerOutput {
18846                artifact,
18847                event,
18848                allow_any,
18849            } = output;
18850            if artifact.is_none() {
18851                *self.state__ = match fallback.take() {
18852                    None if values.is_none() => {
18853                        *self.state__ = FacetDeserializerState::Init__;
18854                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
18855                    }
18856                    None => FacetDeserializerState::MaxLength(values, None),
18857                    Some(FacetDeserializerState::MaxLength(_, Some(deserializer))) => {
18858                        FacetDeserializerState::MaxLength(values, Some(deserializer))
18859                    }
18860                    _ => unreachable!(),
18861                };
18862                return Ok(ElementHandlerOutput::break_(event, allow_any));
18863            }
18864            match fallback.take() {
18865                None => (),
18866                Some(FacetDeserializerState::MaxLength(_, Some(deserializer))) => {
18867                    let data = deserializer.finish(helper)?;
18868                    FacetDeserializer::store_max_length(&mut values, data)?;
18869                }
18870                Some(_) => unreachable!(),
18871            }
18872            Ok(match artifact {
18873                DeserializerArtifact::None => unreachable!(),
18874                DeserializerArtifact::Data(data) => {
18875                    FacetDeserializer::store_max_length(&mut values, data)?;
18876                    let data = FacetDeserializer::finish_state(
18877                        helper,
18878                        FacetDeserializerState::MaxLength(values, None),
18879                    )?;
18880                    *self.state__ = FacetDeserializerState::Done__(data);
18881                    ElementHandlerOutput::Break { event, allow_any }
18882                }
18883                DeserializerArtifact::Deserializer(deserializer) => {
18884                    *self.state__ = FacetDeserializerState::MaxLength(values, Some(deserializer));
18885                    ElementHandlerOutput::from_event_end(event, allow_any)
18886                }
18887            })
18888        }
18889        fn handle_enumeration<'de>(
18890            &mut self,
18891            helper: &mut DeserializeHelper,
18892            mut values: Option<super::FacetType>,
18893            output: DeserializerOutput<'de, super::FacetType>,
18894            fallback: &mut Option<FacetDeserializerState>,
18895        ) -> Result<ElementHandlerOutput<'de>, Error> {
18896            let DeserializerOutput {
18897                artifact,
18898                event,
18899                allow_any,
18900            } = output;
18901            if artifact.is_none() {
18902                *self.state__ = match fallback.take() {
18903                    None if values.is_none() => {
18904                        *self.state__ = FacetDeserializerState::Init__;
18905                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
18906                    }
18907                    None => FacetDeserializerState::Enumeration(values, None),
18908                    Some(FacetDeserializerState::Enumeration(_, Some(deserializer))) => {
18909                        FacetDeserializerState::Enumeration(values, Some(deserializer))
18910                    }
18911                    _ => unreachable!(),
18912                };
18913                return Ok(ElementHandlerOutput::break_(event, allow_any));
18914            }
18915            match fallback.take() {
18916                None => (),
18917                Some(FacetDeserializerState::Enumeration(_, Some(deserializer))) => {
18918                    let data = deserializer.finish(helper)?;
18919                    FacetDeserializer::store_enumeration(&mut values, data)?;
18920                }
18921                Some(_) => unreachable!(),
18922            }
18923            Ok(match artifact {
18924                DeserializerArtifact::None => unreachable!(),
18925                DeserializerArtifact::Data(data) => {
18926                    FacetDeserializer::store_enumeration(&mut values, data)?;
18927                    let data = FacetDeserializer::finish_state(
18928                        helper,
18929                        FacetDeserializerState::Enumeration(values, None),
18930                    )?;
18931                    *self.state__ = FacetDeserializerState::Done__(data);
18932                    ElementHandlerOutput::Break { event, allow_any }
18933                }
18934                DeserializerArtifact::Deserializer(deserializer) => {
18935                    *self.state__ = FacetDeserializerState::Enumeration(values, Some(deserializer));
18936                    ElementHandlerOutput::from_event_end(event, allow_any)
18937                }
18938            })
18939        }
18940        fn handle_white_space<'de>(
18941            &mut self,
18942            helper: &mut DeserializeHelper,
18943            mut values: Option<super::FacetType>,
18944            output: DeserializerOutput<'de, super::FacetType>,
18945            fallback: &mut Option<FacetDeserializerState>,
18946        ) -> Result<ElementHandlerOutput<'de>, Error> {
18947            let DeserializerOutput {
18948                artifact,
18949                event,
18950                allow_any,
18951            } = output;
18952            if artifact.is_none() {
18953                *self.state__ = match fallback.take() {
18954                    None if values.is_none() => {
18955                        *self.state__ = FacetDeserializerState::Init__;
18956                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
18957                    }
18958                    None => FacetDeserializerState::WhiteSpace(values, None),
18959                    Some(FacetDeserializerState::WhiteSpace(_, Some(deserializer))) => {
18960                        FacetDeserializerState::WhiteSpace(values, Some(deserializer))
18961                    }
18962                    _ => unreachable!(),
18963                };
18964                return Ok(ElementHandlerOutput::break_(event, allow_any));
18965            }
18966            match fallback.take() {
18967                None => (),
18968                Some(FacetDeserializerState::WhiteSpace(_, Some(deserializer))) => {
18969                    let data = deserializer.finish(helper)?;
18970                    FacetDeserializer::store_white_space(&mut values, data)?;
18971                }
18972                Some(_) => unreachable!(),
18973            }
18974            Ok(match artifact {
18975                DeserializerArtifact::None => unreachable!(),
18976                DeserializerArtifact::Data(data) => {
18977                    FacetDeserializer::store_white_space(&mut values, data)?;
18978                    let data = FacetDeserializer::finish_state(
18979                        helper,
18980                        FacetDeserializerState::WhiteSpace(values, None),
18981                    )?;
18982                    *self.state__ = FacetDeserializerState::Done__(data);
18983                    ElementHandlerOutput::Break { event, allow_any }
18984                }
18985                DeserializerArtifact::Deserializer(deserializer) => {
18986                    *self.state__ = FacetDeserializerState::WhiteSpace(values, Some(deserializer));
18987                    ElementHandlerOutput::from_event_end(event, allow_any)
18988                }
18989            })
18990        }
18991        fn handle_pattern<'de>(
18992            &mut self,
18993            helper: &mut DeserializeHelper,
18994            mut values: Option<super::FacetType>,
18995            output: DeserializerOutput<'de, super::FacetType>,
18996            fallback: &mut Option<FacetDeserializerState>,
18997        ) -> Result<ElementHandlerOutput<'de>, Error> {
18998            let DeserializerOutput {
18999                artifact,
19000                event,
19001                allow_any,
19002            } = output;
19003            if artifact.is_none() {
19004                *self.state__ = match fallback.take() {
19005                    None if values.is_none() => {
19006                        *self.state__ = FacetDeserializerState::Init__;
19007                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
19008                    }
19009                    None => FacetDeserializerState::Pattern(values, None),
19010                    Some(FacetDeserializerState::Pattern(_, Some(deserializer))) => {
19011                        FacetDeserializerState::Pattern(values, Some(deserializer))
19012                    }
19013                    _ => unreachable!(),
19014                };
19015                return Ok(ElementHandlerOutput::break_(event, allow_any));
19016            }
19017            match fallback.take() {
19018                None => (),
19019                Some(FacetDeserializerState::Pattern(_, Some(deserializer))) => {
19020                    let data = deserializer.finish(helper)?;
19021                    FacetDeserializer::store_pattern(&mut values, data)?;
19022                }
19023                Some(_) => unreachable!(),
19024            }
19025            Ok(match artifact {
19026                DeserializerArtifact::None => unreachable!(),
19027                DeserializerArtifact::Data(data) => {
19028                    FacetDeserializer::store_pattern(&mut values, data)?;
19029                    let data = FacetDeserializer::finish_state(
19030                        helper,
19031                        FacetDeserializerState::Pattern(values, None),
19032                    )?;
19033                    *self.state__ = FacetDeserializerState::Done__(data);
19034                    ElementHandlerOutput::Break { event, allow_any }
19035                }
19036                DeserializerArtifact::Deserializer(deserializer) => {
19037                    *self.state__ = FacetDeserializerState::Pattern(values, Some(deserializer));
19038                    ElementHandlerOutput::from_event_end(event, allow_any)
19039                }
19040            })
19041        }
19042        fn handle_assertion<'de>(
19043            &mut self,
19044            helper: &mut DeserializeHelper,
19045            mut values: Option<super::AssertionType>,
19046            output: DeserializerOutput<'de, super::AssertionType>,
19047            fallback: &mut Option<FacetDeserializerState>,
19048        ) -> Result<ElementHandlerOutput<'de>, Error> {
19049            let DeserializerOutput {
19050                artifact,
19051                event,
19052                allow_any,
19053            } = output;
19054            if artifact.is_none() {
19055                *self.state__ = match fallback.take() {
19056                    None if values.is_none() => {
19057                        *self.state__ = FacetDeserializerState::Init__;
19058                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
19059                    }
19060                    None => FacetDeserializerState::Assertion(values, None),
19061                    Some(FacetDeserializerState::Assertion(_, Some(deserializer))) => {
19062                        FacetDeserializerState::Assertion(values, Some(deserializer))
19063                    }
19064                    _ => unreachable!(),
19065                };
19066                return Ok(ElementHandlerOutput::break_(event, allow_any));
19067            }
19068            match fallback.take() {
19069                None => (),
19070                Some(FacetDeserializerState::Assertion(_, Some(deserializer))) => {
19071                    let data = deserializer.finish(helper)?;
19072                    FacetDeserializer::store_assertion(&mut values, data)?;
19073                }
19074                Some(_) => unreachable!(),
19075            }
19076            Ok(match artifact {
19077                DeserializerArtifact::None => unreachable!(),
19078                DeserializerArtifact::Data(data) => {
19079                    FacetDeserializer::store_assertion(&mut values, data)?;
19080                    let data = FacetDeserializer::finish_state(
19081                        helper,
19082                        FacetDeserializerState::Assertion(values, None),
19083                    )?;
19084                    *self.state__ = FacetDeserializerState::Done__(data);
19085                    ElementHandlerOutput::Break { event, allow_any }
19086                }
19087                DeserializerArtifact::Deserializer(deserializer) => {
19088                    *self.state__ = FacetDeserializerState::Assertion(values, Some(deserializer));
19089                    ElementHandlerOutput::from_event_end(event, allow_any)
19090                }
19091            })
19092        }
19093        fn handle_explicit_timezone<'de>(
19094            &mut self,
19095            helper: &mut DeserializeHelper,
19096            mut values: Option<super::FacetType>,
19097            output: DeserializerOutput<'de, super::FacetType>,
19098            fallback: &mut Option<FacetDeserializerState>,
19099        ) -> Result<ElementHandlerOutput<'de>, Error> {
19100            let DeserializerOutput {
19101                artifact,
19102                event,
19103                allow_any,
19104            } = output;
19105            if artifact.is_none() {
19106                *self.state__ = match fallback.take() {
19107                    None if values.is_none() => {
19108                        *self.state__ = FacetDeserializerState::Init__;
19109                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
19110                    }
19111                    None => FacetDeserializerState::ExplicitTimezone(values, None),
19112                    Some(FacetDeserializerState::ExplicitTimezone(_, Some(deserializer))) => {
19113                        FacetDeserializerState::ExplicitTimezone(values, Some(deserializer))
19114                    }
19115                    _ => unreachable!(),
19116                };
19117                return Ok(ElementHandlerOutput::break_(event, allow_any));
19118            }
19119            match fallback.take() {
19120                None => (),
19121                Some(FacetDeserializerState::ExplicitTimezone(_, Some(deserializer))) => {
19122                    let data = deserializer.finish(helper)?;
19123                    FacetDeserializer::store_explicit_timezone(&mut values, data)?;
19124                }
19125                Some(_) => unreachable!(),
19126            }
19127            Ok(match artifact {
19128                DeserializerArtifact::None => unreachable!(),
19129                DeserializerArtifact::Data(data) => {
19130                    FacetDeserializer::store_explicit_timezone(&mut values, data)?;
19131                    let data = FacetDeserializer::finish_state(
19132                        helper,
19133                        FacetDeserializerState::ExplicitTimezone(values, None),
19134                    )?;
19135                    *self.state__ = FacetDeserializerState::Done__(data);
19136                    ElementHandlerOutput::Break { event, allow_any }
19137                }
19138                DeserializerArtifact::Deserializer(deserializer) => {
19139                    *self.state__ =
19140                        FacetDeserializerState::ExplicitTimezone(values, Some(deserializer));
19141                    ElementHandlerOutput::from_event_end(event, allow_any)
19142                }
19143            })
19144        }
19145    }
19146    impl<'de> Deserializer<'de, super::Facet> for Box<FacetDeserializer> {
19147        fn init(
19148            helper: &mut DeserializeHelper,
19149            event: Event<'de>,
19150        ) -> DeserializerResult<'de, super::Facet> {
19151            let deserializer = Box::new(FacetDeserializer {
19152                state__: Box::new(FacetDeserializerState::Init__),
19153            });
19154            let mut output = deserializer.next(helper, event)?;
19155            output.artifact = match output.artifact {
19156                DeserializerArtifact::Deserializer(x)
19157                    if matches!(&*x.state__, FacetDeserializerState::Init__) =>
19158                {
19159                    DeserializerArtifact::None
19160                }
19161                artifact => artifact,
19162            };
19163            Ok(output)
19164        }
19165        fn next(
19166            mut self,
19167            helper: &mut DeserializeHelper,
19168            event: Event<'de>,
19169        ) -> DeserializerResult<'de, super::Facet> {
19170            use FacetDeserializerState as S;
19171            let mut event = event;
19172            let mut fallback = None;
19173            let (event, allow_any) = loop {
19174                let state = replace(&mut *self.state__, S::Unknown__);
19175                event = match (state, event) {
19176                    (S::Unknown__, _) => unreachable!(),
19177                    (S::MinExclusive(values, Some(deserializer)), event) => {
19178                        let output = deserializer.next(helper, event)?;
19179                        match self.handle_min_exclusive(helper, values, output, &mut fallback)? {
19180                            ElementHandlerOutput::Break { event, allow_any } => {
19181                                break (event, allow_any)
19182                            }
19183                            ElementHandlerOutput::Continue { event, .. } => event,
19184                        }
19185                    }
19186                    (S::MinInclusive(values, Some(deserializer)), event) => {
19187                        let output = deserializer.next(helper, event)?;
19188                        match self.handle_min_inclusive(helper, values, output, &mut fallback)? {
19189                            ElementHandlerOutput::Break { event, allow_any } => {
19190                                break (event, allow_any)
19191                            }
19192                            ElementHandlerOutput::Continue { event, .. } => event,
19193                        }
19194                    }
19195                    (S::MaxExclusive(values, Some(deserializer)), event) => {
19196                        let output = deserializer.next(helper, event)?;
19197                        match self.handle_max_exclusive(helper, values, output, &mut fallback)? {
19198                            ElementHandlerOutput::Break { event, allow_any } => {
19199                                break (event, allow_any)
19200                            }
19201                            ElementHandlerOutput::Continue { event, .. } => event,
19202                        }
19203                    }
19204                    (S::MaxInclusive(values, Some(deserializer)), event) => {
19205                        let output = deserializer.next(helper, event)?;
19206                        match self.handle_max_inclusive(helper, values, output, &mut fallback)? {
19207                            ElementHandlerOutput::Break { event, allow_any } => {
19208                                break (event, allow_any)
19209                            }
19210                            ElementHandlerOutput::Continue { event, .. } => event,
19211                        }
19212                    }
19213                    (S::TotalDigits(values, Some(deserializer)), event) => {
19214                        let output = deserializer.next(helper, event)?;
19215                        match self.handle_total_digits(helper, values, output, &mut fallback)? {
19216                            ElementHandlerOutput::Break { event, allow_any } => {
19217                                break (event, allow_any)
19218                            }
19219                            ElementHandlerOutput::Continue { event, .. } => event,
19220                        }
19221                    }
19222                    (S::FractionDigits(values, Some(deserializer)), event) => {
19223                        let output = deserializer.next(helper, event)?;
19224                        match self.handle_fraction_digits(helper, values, output, &mut fallback)? {
19225                            ElementHandlerOutput::Break { event, allow_any } => {
19226                                break (event, allow_any)
19227                            }
19228                            ElementHandlerOutput::Continue { event, .. } => event,
19229                        }
19230                    }
19231                    (S::Length(values, Some(deserializer)), event) => {
19232                        let output = deserializer.next(helper, event)?;
19233                        match self.handle_length(helper, values, output, &mut fallback)? {
19234                            ElementHandlerOutput::Break { event, allow_any } => {
19235                                break (event, allow_any)
19236                            }
19237                            ElementHandlerOutput::Continue { event, .. } => event,
19238                        }
19239                    }
19240                    (S::MinLength(values, Some(deserializer)), event) => {
19241                        let output = deserializer.next(helper, event)?;
19242                        match self.handle_min_length(helper, values, output, &mut fallback)? {
19243                            ElementHandlerOutput::Break { event, allow_any } => {
19244                                break (event, allow_any)
19245                            }
19246                            ElementHandlerOutput::Continue { event, .. } => event,
19247                        }
19248                    }
19249                    (S::MaxLength(values, Some(deserializer)), event) => {
19250                        let output = deserializer.next(helper, event)?;
19251                        match self.handle_max_length(helper, values, output, &mut fallback)? {
19252                            ElementHandlerOutput::Break { event, allow_any } => {
19253                                break (event, allow_any)
19254                            }
19255                            ElementHandlerOutput::Continue { event, .. } => event,
19256                        }
19257                    }
19258                    (S::Enumeration(values, Some(deserializer)), event) => {
19259                        let output = deserializer.next(helper, event)?;
19260                        match self.handle_enumeration(helper, values, output, &mut fallback)? {
19261                            ElementHandlerOutput::Break { event, allow_any } => {
19262                                break (event, allow_any)
19263                            }
19264                            ElementHandlerOutput::Continue { event, .. } => event,
19265                        }
19266                    }
19267                    (S::WhiteSpace(values, Some(deserializer)), event) => {
19268                        let output = deserializer.next(helper, event)?;
19269                        match self.handle_white_space(helper, values, output, &mut fallback)? {
19270                            ElementHandlerOutput::Break { event, allow_any } => {
19271                                break (event, allow_any)
19272                            }
19273                            ElementHandlerOutput::Continue { event, .. } => event,
19274                        }
19275                    }
19276                    (S::Pattern(values, Some(deserializer)), event) => {
19277                        let output = deserializer.next(helper, event)?;
19278                        match self.handle_pattern(helper, values, output, &mut fallback)? {
19279                            ElementHandlerOutput::Break { event, allow_any } => {
19280                                break (event, allow_any)
19281                            }
19282                            ElementHandlerOutput::Continue { event, .. } => event,
19283                        }
19284                    }
19285                    (S::Assertion(values, Some(deserializer)), event) => {
19286                        let output = deserializer.next(helper, event)?;
19287                        match self.handle_assertion(helper, values, output, &mut fallback)? {
19288                            ElementHandlerOutput::Break { event, allow_any } => {
19289                                break (event, allow_any)
19290                            }
19291                            ElementHandlerOutput::Continue { event, .. } => event,
19292                        }
19293                    }
19294                    (S::ExplicitTimezone(values, Some(deserializer)), event) => {
19295                        let output = deserializer.next(helper, event)?;
19296                        match self.handle_explicit_timezone(
19297                            helper,
19298                            values,
19299                            output,
19300                            &mut fallback,
19301                        )? {
19302                            ElementHandlerOutput::Break { event, allow_any } => {
19303                                break (event, allow_any)
19304                            }
19305                            ElementHandlerOutput::Continue { event, .. } => event,
19306                        }
19307                    }
19308                    (state, event @ Event::End(_)) => {
19309                        return Ok(DeserializerOutput {
19310                            artifact: DeserializerArtifact::Data(FacetDeserializer::finish_state(
19311                                helper, state,
19312                            )?),
19313                            event: DeserializerEvent::Continue(event),
19314                            allow_any: false,
19315                        });
19316                    }
19317                    (S::Init__, event) => match self.find_suitable(helper, event, &mut fallback)? {
19318                        ElementHandlerOutput::Break { event, allow_any } => {
19319                            break (event, allow_any)
19320                        }
19321                        ElementHandlerOutput::Continue { event, .. } => event,
19322                    },
19323                    (
19324                        S::MinExclusive(values, None),
19325                        event @ (Event::Start(_) | Event::Empty(_)),
19326                    ) => {
19327                        let output = helper.init_start_tag_deserializer(
19328                            event,
19329                            Some(&super::NS_XS),
19330                            b"minExclusive",
19331                            false,
19332                        )?;
19333                        match self.handle_min_exclusive(helper, values, output, &mut fallback)? {
19334                            ElementHandlerOutput::Break { event, allow_any } => {
19335                                break (event, allow_any)
19336                            }
19337                            ElementHandlerOutput::Continue { event, .. } => event,
19338                        }
19339                    }
19340                    (
19341                        S::MinInclusive(values, None),
19342                        event @ (Event::Start(_) | Event::Empty(_)),
19343                    ) => {
19344                        let output = helper.init_start_tag_deserializer(
19345                            event,
19346                            Some(&super::NS_XS),
19347                            b"minInclusive",
19348                            false,
19349                        )?;
19350                        match self.handle_min_inclusive(helper, values, output, &mut fallback)? {
19351                            ElementHandlerOutput::Break { event, allow_any } => {
19352                                break (event, allow_any)
19353                            }
19354                            ElementHandlerOutput::Continue { event, .. } => event,
19355                        }
19356                    }
19357                    (
19358                        S::MaxExclusive(values, None),
19359                        event @ (Event::Start(_) | Event::Empty(_)),
19360                    ) => {
19361                        let output = helper.init_start_tag_deserializer(
19362                            event,
19363                            Some(&super::NS_XS),
19364                            b"maxExclusive",
19365                            false,
19366                        )?;
19367                        match self.handle_max_exclusive(helper, values, output, &mut fallback)? {
19368                            ElementHandlerOutput::Break { event, allow_any } => {
19369                                break (event, allow_any)
19370                            }
19371                            ElementHandlerOutput::Continue { event, .. } => event,
19372                        }
19373                    }
19374                    (
19375                        S::MaxInclusive(values, None),
19376                        event @ (Event::Start(_) | Event::Empty(_)),
19377                    ) => {
19378                        let output = helper.init_start_tag_deserializer(
19379                            event,
19380                            Some(&super::NS_XS),
19381                            b"maxInclusive",
19382                            false,
19383                        )?;
19384                        match self.handle_max_inclusive(helper, values, output, &mut fallback)? {
19385                            ElementHandlerOutput::Break { event, allow_any } => {
19386                                break (event, allow_any)
19387                            }
19388                            ElementHandlerOutput::Continue { event, .. } => event,
19389                        }
19390                    }
19391                    (S::TotalDigits(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
19392                        let output = helper.init_start_tag_deserializer(
19393                            event,
19394                            Some(&super::NS_XS),
19395                            b"totalDigits",
19396                            false,
19397                        )?;
19398                        match self.handle_total_digits(helper, values, output, &mut fallback)? {
19399                            ElementHandlerOutput::Break { event, allow_any } => {
19400                                break (event, allow_any)
19401                            }
19402                            ElementHandlerOutput::Continue { event, .. } => event,
19403                        }
19404                    }
19405                    (
19406                        S::FractionDigits(values, None),
19407                        event @ (Event::Start(_) | Event::Empty(_)),
19408                    ) => {
19409                        let output = helper.init_start_tag_deserializer(
19410                            event,
19411                            Some(&super::NS_XS),
19412                            b"fractionDigits",
19413                            false,
19414                        )?;
19415                        match self.handle_fraction_digits(helper, values, output, &mut fallback)? {
19416                            ElementHandlerOutput::Break { event, allow_any } => {
19417                                break (event, allow_any)
19418                            }
19419                            ElementHandlerOutput::Continue { event, .. } => event,
19420                        }
19421                    }
19422                    (S::Length(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
19423                        let output = helper.init_start_tag_deserializer(
19424                            event,
19425                            Some(&super::NS_XS),
19426                            b"length",
19427                            false,
19428                        )?;
19429                        match self.handle_length(helper, values, output, &mut fallback)? {
19430                            ElementHandlerOutput::Break { event, allow_any } => {
19431                                break (event, allow_any)
19432                            }
19433                            ElementHandlerOutput::Continue { event, .. } => event,
19434                        }
19435                    }
19436                    (S::MinLength(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
19437                        let output = helper.init_start_tag_deserializer(
19438                            event,
19439                            Some(&super::NS_XS),
19440                            b"minLength",
19441                            false,
19442                        )?;
19443                        match self.handle_min_length(helper, values, output, &mut fallback)? {
19444                            ElementHandlerOutput::Break { event, allow_any } => {
19445                                break (event, allow_any)
19446                            }
19447                            ElementHandlerOutput::Continue { event, .. } => event,
19448                        }
19449                    }
19450                    (S::MaxLength(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
19451                        let output = helper.init_start_tag_deserializer(
19452                            event,
19453                            Some(&super::NS_XS),
19454                            b"maxLength",
19455                            false,
19456                        )?;
19457                        match self.handle_max_length(helper, values, output, &mut fallback)? {
19458                            ElementHandlerOutput::Break { event, allow_any } => {
19459                                break (event, allow_any)
19460                            }
19461                            ElementHandlerOutput::Continue { event, .. } => event,
19462                        }
19463                    }
19464                    (S::Enumeration(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
19465                        let output = helper.init_start_tag_deserializer(
19466                            event,
19467                            Some(&super::NS_XS),
19468                            b"enumeration",
19469                            false,
19470                        )?;
19471                        match self.handle_enumeration(helper, values, output, &mut fallback)? {
19472                            ElementHandlerOutput::Break { event, allow_any } => {
19473                                break (event, allow_any)
19474                            }
19475                            ElementHandlerOutput::Continue { event, .. } => event,
19476                        }
19477                    }
19478                    (S::WhiteSpace(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
19479                        let output = helper.init_start_tag_deserializer(
19480                            event,
19481                            Some(&super::NS_XS),
19482                            b"whiteSpace",
19483                            false,
19484                        )?;
19485                        match self.handle_white_space(helper, values, output, &mut fallback)? {
19486                            ElementHandlerOutput::Break { event, allow_any } => {
19487                                break (event, allow_any)
19488                            }
19489                            ElementHandlerOutput::Continue { event, .. } => event,
19490                        }
19491                    }
19492                    (S::Pattern(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
19493                        let output = helper.init_start_tag_deserializer(
19494                            event,
19495                            Some(&super::NS_XS),
19496                            b"pattern",
19497                            false,
19498                        )?;
19499                        match self.handle_pattern(helper, values, output, &mut fallback)? {
19500                            ElementHandlerOutput::Break { event, allow_any } => {
19501                                break (event, allow_any)
19502                            }
19503                            ElementHandlerOutput::Continue { event, .. } => event,
19504                        }
19505                    }
19506                    (S::Assertion(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
19507                        let output = helper.init_start_tag_deserializer(
19508                            event,
19509                            Some(&super::NS_XS),
19510                            b"assertion",
19511                            false,
19512                        )?;
19513                        match self.handle_assertion(helper, values, output, &mut fallback)? {
19514                            ElementHandlerOutput::Break { event, allow_any } => {
19515                                break (event, allow_any)
19516                            }
19517                            ElementHandlerOutput::Continue { event, .. } => event,
19518                        }
19519                    }
19520                    (
19521                        S::ExplicitTimezone(values, None),
19522                        event @ (Event::Start(_) | Event::Empty(_)),
19523                    ) => {
19524                        let output = helper.init_start_tag_deserializer(
19525                            event,
19526                            Some(&super::NS_XS),
19527                            b"explicitTimezone",
19528                            false,
19529                        )?;
19530                        match self.handle_explicit_timezone(
19531                            helper,
19532                            values,
19533                            output,
19534                            &mut fallback,
19535                        )? {
19536                            ElementHandlerOutput::Break { event, allow_any } => {
19537                                break (event, allow_any)
19538                            }
19539                            ElementHandlerOutput::Continue { event, .. } => event,
19540                        }
19541                    }
19542                    (s @ S::Done__(_), event) => {
19543                        *self.state__ = s;
19544                        break (DeserializerEvent::Continue(event), false);
19545                    }
19546                    (state, event) => {
19547                        *self.state__ = state;
19548                        break (DeserializerEvent::Break(event), false);
19549                    }
19550                }
19551            };
19552            let artifact = if matches!(&*self.state__, S::Done__(_)) {
19553                DeserializerArtifact::Data(self.finish(helper)?)
19554            } else {
19555                DeserializerArtifact::Deserializer(self)
19556            };
19557            Ok(DeserializerOutput {
19558                artifact,
19559                event,
19560                allow_any,
19561            })
19562        }
19563        fn finish(self, helper: &mut DeserializeHelper) -> Result<super::Facet, Error> {
19564            FacetDeserializer::finish_state(helper, *self.state__)
19565        }
19566    }
19567    #[derive(Debug)]
19568    pub struct RestrictionTypeDeserializer {
19569        id: Option<String>,
19570        base: QName,
19571        content: Vec<super::RestrictionTypeContent>,
19572        state__: Box<RestrictionTypeDeserializerState>,
19573    }
19574    #[derive(Debug)]
19575    enum RestrictionTypeDeserializerState {
19576        Init__,
19577        Next__,
19578        Content__(<super::RestrictionTypeContent as WithDeserializer>::Deserializer),
19579        Unknown__,
19580    }
19581    impl RestrictionTypeDeserializer {
19582        fn from_bytes_start(
19583            helper: &mut DeserializeHelper,
19584            bytes_start: &BytesStart<'_>,
19585        ) -> Result<Box<Self>, Error> {
19586            let mut id: Option<String> = None;
19587            let mut base: Option<QName> = None;
19588            for attrib in helper.filter_xmlns_attributes(bytes_start) {
19589                let attrib = attrib?;
19590                if matches!(
19591                    helper.resolve_local_name(attrib.key, &super::NS_XS),
19592                    Some(b"id")
19593                ) {
19594                    helper.read_attrib(&mut id, b"id", &attrib.value)?;
19595                } else if matches!(
19596                    helper.resolve_local_name(attrib.key, &super::NS_XS),
19597                    Some(b"base")
19598                ) {
19599                    helper.read_attrib(&mut base, b"base", &attrib.value)?;
19600                }
19601            }
19602            Ok(Box::new(Self {
19603                id: id,
19604                base: base.ok_or_else(|| ErrorKind::MissingAttribute("base".into()))?,
19605                content: Vec::new(),
19606                state__: Box::new(RestrictionTypeDeserializerState::Init__),
19607            }))
19608        }
19609        fn finish_state(
19610            &mut self,
19611            helper: &mut DeserializeHelper,
19612            state: RestrictionTypeDeserializerState,
19613        ) -> Result<(), Error> {
19614            if let RestrictionTypeDeserializerState::Content__(deserializer) = state {
19615                self.store_content(deserializer.finish(helper)?)?;
19616            }
19617            Ok(())
19618        }
19619        fn store_content(&mut self, value: super::RestrictionTypeContent) -> Result<(), Error> {
19620            self.content.push(value);
19621            Ok(())
19622        }
19623        fn handle_content<'de>(
19624            &mut self,
19625            helper: &mut DeserializeHelper,
19626            output: DeserializerOutput<'de, super::RestrictionTypeContent>,
19627            fallback: &mut Option<RestrictionTypeDeserializerState>,
19628        ) -> Result<ElementHandlerOutput<'de>, Error> {
19629            let DeserializerOutput {
19630                artifact,
19631                event,
19632                allow_any,
19633            } = output;
19634            if artifact.is_none() {
19635                *self.state__ = fallback
19636                    .take()
19637                    .unwrap_or(RestrictionTypeDeserializerState::Next__);
19638                return Ok(ElementHandlerOutput::break_(event, allow_any));
19639            }
19640            if let Some(fallback) = fallback.take() {
19641                self.finish_state(helper, fallback)?;
19642            }
19643            Ok(match artifact {
19644                DeserializerArtifact::None => unreachable!(),
19645                DeserializerArtifact::Data(data) => {
19646                    self.store_content(data)?;
19647                    *self.state__ = RestrictionTypeDeserializerState::Next__;
19648                    ElementHandlerOutput::from_event(event, allow_any)
19649                }
19650                DeserializerArtifact::Deserializer(deserializer) => {
19651                    let ret = ElementHandlerOutput::from_event(event, allow_any);
19652                    match &ret {
19653                        ElementHandlerOutput::Break { .. } => {
19654                            *self.state__ =
19655                                RestrictionTypeDeserializerState::Content__(deserializer);
19656                        }
19657                        ElementHandlerOutput::Continue { .. } => {
19658                            fallback.get_or_insert(RestrictionTypeDeserializerState::Content__(
19659                                deserializer,
19660                            ));
19661                            *self.state__ = RestrictionTypeDeserializerState::Next__;
19662                        }
19663                    }
19664                    ret
19665                }
19666            })
19667        }
19668    }
19669    impl<'de> Deserializer<'de, super::RestrictionType> for Box<RestrictionTypeDeserializer> {
19670        fn init(
19671            helper: &mut DeserializeHelper,
19672            event: Event<'de>,
19673        ) -> DeserializerResult<'de, super::RestrictionType> {
19674            helper.init_deserializer_from_start_event(
19675                event,
19676                RestrictionTypeDeserializer::from_bytes_start,
19677            )
19678        }
19679        fn next(
19680            mut self,
19681            helper: &mut DeserializeHelper,
19682            event: Event<'de>,
19683        ) -> DeserializerResult<'de, super::RestrictionType> {
19684            use RestrictionTypeDeserializerState as S;
19685            let mut event = event;
19686            let mut fallback = None;
19687            let (event, allow_any) = loop {
19688                let state = replace(&mut *self.state__, S::Unknown__);
19689                event = match (state, event) {
19690                    (S::Unknown__, _) => unreachable!(),
19691                    (S::Content__(deserializer), event) => {
19692                        let output = deserializer.next(helper, event)?;
19693                        match self.handle_content(helper, output, &mut fallback)? {
19694                            ElementHandlerOutput::Break { event, allow_any } => {
19695                                break (event, allow_any)
19696                            }
19697                            ElementHandlerOutput::Continue { event, .. } => event,
19698                        }
19699                    }
19700                    (_, Event::End(_)) => {
19701                        return Ok(DeserializerOutput {
19702                            artifact: DeserializerArtifact::Data(self.finish(helper)?),
19703                            event: DeserializerEvent::None,
19704                            allow_any: false,
19705                        });
19706                    }
19707                    (state @ (S::Init__ | S::Next__), event) => {
19708                        fallback.get_or_insert(state);
19709                        let output = < super :: RestrictionTypeContent as WithDeserializer > :: Deserializer :: init (helper , event) ? ;
19710                        match self.handle_content(helper, output, &mut fallback)? {
19711                            ElementHandlerOutput::Break { event, allow_any } => {
19712                                break (event, allow_any)
19713                            }
19714                            ElementHandlerOutput::Continue { event, .. } => event,
19715                        }
19716                    }
19717                }
19718            };
19719            let artifact = DeserializerArtifact::Deserializer(self);
19720            Ok(DeserializerOutput {
19721                artifact,
19722                event,
19723                allow_any,
19724            })
19725        }
19726        fn finish(
19727            mut self,
19728            helper: &mut DeserializeHelper,
19729        ) -> Result<super::RestrictionType, Error> {
19730            let state = replace(
19731                &mut *self.state__,
19732                RestrictionTypeDeserializerState::Unknown__,
19733            );
19734            self.finish_state(helper, state)?;
19735            Ok(super::RestrictionType {
19736                id: self.id,
19737                base: self.base,
19738                content: self.content,
19739            })
19740        }
19741    }
19742    #[derive(Debug)]
19743    pub struct RestrictionTypeContentDeserializer {
19744        state__: Box<RestrictionTypeContentDeserializerState>,
19745    }
19746    #[derive(Debug)]
19747    pub enum RestrictionTypeContentDeserializerState {
19748        Init__,
19749        Annotation(
19750            Option<super::Annotation>,
19751            Option<<super::Annotation as WithDeserializer>::Deserializer>,
19752        ),
19753        OpenContent(
19754            Option<super::OpenContent>,
19755            Option<<super::OpenContent as WithDeserializer>::Deserializer>,
19756        ),
19757        Group(
19758            Option<super::GroupType>,
19759            Option<<super::GroupType as WithDeserializer>::Deserializer>,
19760        ),
19761        All(
19762            Option<super::GroupType>,
19763            Option<<super::GroupType as WithDeserializer>::Deserializer>,
19764        ),
19765        Choice(
19766            Option<super::GroupType>,
19767            Option<<super::GroupType as WithDeserializer>::Deserializer>,
19768        ),
19769        Sequence(
19770            Option<super::GroupType>,
19771            Option<<super::GroupType as WithDeserializer>::Deserializer>,
19772        ),
19773        SimpleType(
19774            Option<super::SimpleBaseType>,
19775            Option<<super::SimpleBaseType as WithDeserializer>::Deserializer>,
19776        ),
19777        Facet(
19778            Option<super::Facet>,
19779            Option<<super::Facet as WithDeserializer>::Deserializer>,
19780        ),
19781        Attribute(
19782            Option<super::AttributeType>,
19783            Option<<super::AttributeType as WithDeserializer>::Deserializer>,
19784        ),
19785        AttributeGroup(
19786            Option<super::AttributeGroupType>,
19787            Option<<super::AttributeGroupType as WithDeserializer>::Deserializer>,
19788        ),
19789        AnyAttribute(
19790            Option<super::AnyAttribute>,
19791            Option<<super::AnyAttribute as WithDeserializer>::Deserializer>,
19792        ),
19793        Assert(
19794            Option<super::AssertionType>,
19795            Option<<super::AssertionType as WithDeserializer>::Deserializer>,
19796        ),
19797        Done__(super::RestrictionTypeContent),
19798        Unknown__,
19799    }
19800    impl RestrictionTypeContentDeserializer {
19801        fn find_suitable<'de>(
19802            &mut self,
19803            helper: &mut DeserializeHelper,
19804            event: Event<'de>,
19805            fallback: &mut Option<RestrictionTypeContentDeserializerState>,
19806        ) -> Result<ElementHandlerOutput<'de>, Error> {
19807            let mut event = event;
19808            if let Event::Start(x) | Event::Empty(x) = &event {
19809                if matches!(
19810                    helper.resolve_local_name(x.name(), &super::NS_XS),
19811                    Some(b"annotation")
19812                ) {
19813                    let output =
19814                        <super::Annotation as WithDeserializer>::Deserializer::init(helper, event)?;
19815                    return self.handle_annotation(
19816                        helper,
19817                        Default::default(),
19818                        output,
19819                        &mut *fallback,
19820                    );
19821                }
19822                if matches!(
19823                    helper.resolve_local_name(x.name(), &super::NS_XS),
19824                    Some(b"openContent")
19825                ) {
19826                    let output = <super::OpenContent as WithDeserializer>::Deserializer::init(
19827                        helper, event,
19828                    )?;
19829                    return self.handle_open_content(
19830                        helper,
19831                        Default::default(),
19832                        output,
19833                        &mut *fallback,
19834                    );
19835                }
19836                if matches!(
19837                    helper.resolve_local_name(x.name(), &super::NS_XS),
19838                    Some(b"group")
19839                ) {
19840                    let output =
19841                        <super::GroupType as WithDeserializer>::Deserializer::init(helper, event)?;
19842                    return self.handle_group(helper, Default::default(), output, &mut *fallback);
19843                }
19844                if matches!(
19845                    helper.resolve_local_name(x.name(), &super::NS_XS),
19846                    Some(b"all")
19847                ) {
19848                    let output =
19849                        <super::GroupType as WithDeserializer>::Deserializer::init(helper, event)?;
19850                    return self.handle_all(helper, Default::default(), output, &mut *fallback);
19851                }
19852                if matches!(
19853                    helper.resolve_local_name(x.name(), &super::NS_XS),
19854                    Some(b"choice")
19855                ) {
19856                    let output =
19857                        <super::GroupType as WithDeserializer>::Deserializer::init(helper, event)?;
19858                    return self.handle_choice(helper, Default::default(), output, &mut *fallback);
19859                }
19860                if matches!(
19861                    helper.resolve_local_name(x.name(), &super::NS_XS),
19862                    Some(b"sequence")
19863                ) {
19864                    let output =
19865                        <super::GroupType as WithDeserializer>::Deserializer::init(helper, event)?;
19866                    return self.handle_sequence(
19867                        helper,
19868                        Default::default(),
19869                        output,
19870                        &mut *fallback,
19871                    );
19872                }
19873                if matches!(
19874                    helper.resolve_local_name(x.name(), &super::NS_XS),
19875                    Some(b"simpleType")
19876                ) {
19877                    let output = <super::SimpleBaseType as WithDeserializer>::Deserializer::init(
19878                        helper, event,
19879                    )?;
19880                    return self.handle_simple_type(
19881                        helper,
19882                        Default::default(),
19883                        output,
19884                        &mut *fallback,
19885                    );
19886                }
19887                if matches!(
19888                    helper.resolve_local_name(x.name(), &super::NS_XS),
19889                    Some(b"attribute")
19890                ) {
19891                    let output = <super::AttributeType as WithDeserializer>::Deserializer::init(
19892                        helper, event,
19893                    )?;
19894                    return self.handle_attribute(
19895                        helper,
19896                        Default::default(),
19897                        output,
19898                        &mut *fallback,
19899                    );
19900                }
19901                if matches!(
19902                    helper.resolve_local_name(x.name(), &super::NS_XS),
19903                    Some(b"attributeGroup")
19904                ) {
19905                    let output =
19906                        <super::AttributeGroupType as WithDeserializer>::Deserializer::init(
19907                            helper, event,
19908                        )?;
19909                    return self.handle_attribute_group(
19910                        helper,
19911                        Default::default(),
19912                        output,
19913                        &mut *fallback,
19914                    );
19915                }
19916                if matches!(
19917                    helper.resolve_local_name(x.name(), &super::NS_XS),
19918                    Some(b"anyAttribute")
19919                ) {
19920                    let output = <super::AnyAttribute as WithDeserializer>::Deserializer::init(
19921                        helper, event,
19922                    )?;
19923                    return self.handle_any_attribute(
19924                        helper,
19925                        Default::default(),
19926                        output,
19927                        &mut *fallback,
19928                    );
19929                }
19930                if matches!(
19931                    helper.resolve_local_name(x.name(), &super::NS_XS),
19932                    Some(b"assert")
19933                ) {
19934                    let output = <super::AssertionType as WithDeserializer>::Deserializer::init(
19935                        helper, event,
19936                    )?;
19937                    return self.handle_assert(helper, Default::default(), output, &mut *fallback);
19938                }
19939                event = {
19940                    let output =
19941                        <super::Facet as WithDeserializer>::Deserializer::init(helper, event)?;
19942                    match self.handle_facet(helper, Default::default(), output, &mut *fallback)? {
19943                        ElementHandlerOutput::Continue { event, .. } => event,
19944                        output => {
19945                            return Ok(output);
19946                        }
19947                    }
19948                };
19949            }
19950            *self.state__ = fallback
19951                .take()
19952                .unwrap_or(RestrictionTypeContentDeserializerState::Init__);
19953            Ok(ElementHandlerOutput::return_to_parent(event, true))
19954        }
19955        fn finish_state(
19956            helper: &mut DeserializeHelper,
19957            state: RestrictionTypeContentDeserializerState,
19958        ) -> Result<super::RestrictionTypeContent, Error> {
19959            use RestrictionTypeContentDeserializerState as S;
19960            match state {
19961                S::Unknown__ => unreachable!(),
19962                S::Init__ => Err(ErrorKind::MissingContent.into()),
19963                S::Annotation(mut values, deserializer) => {
19964                    if let Some(deserializer) = deserializer {
19965                        let value = deserializer.finish(helper)?;
19966                        RestrictionTypeContentDeserializer::store_annotation(&mut values, value)?;
19967                    }
19968                    Ok(super::RestrictionTypeContent::Annotation(
19969                        values.ok_or_else(|| ErrorKind::MissingElement("annotation".into()))?,
19970                    ))
19971                }
19972                S::OpenContent(mut values, deserializer) => {
19973                    if let Some(deserializer) = deserializer {
19974                        let value = deserializer.finish(helper)?;
19975                        RestrictionTypeContentDeserializer::store_open_content(&mut values, value)?;
19976                    }
19977                    Ok(super::RestrictionTypeContent::OpenContent(
19978                        values.ok_or_else(|| ErrorKind::MissingElement("openContent".into()))?,
19979                    ))
19980                }
19981                S::Group(mut values, deserializer) => {
19982                    if let Some(deserializer) = deserializer {
19983                        let value = deserializer.finish(helper)?;
19984                        RestrictionTypeContentDeserializer::store_group(&mut values, value)?;
19985                    }
19986                    Ok(super::RestrictionTypeContent::Group(values.ok_or_else(
19987                        || ErrorKind::MissingElement("group".into()),
19988                    )?))
19989                }
19990                S::All(mut values, deserializer) => {
19991                    if let Some(deserializer) = deserializer {
19992                        let value = deserializer.finish(helper)?;
19993                        RestrictionTypeContentDeserializer::store_all(&mut values, value)?;
19994                    }
19995                    Ok(super::RestrictionTypeContent::All(
19996                        values.ok_or_else(|| ErrorKind::MissingElement("all".into()))?,
19997                    ))
19998                }
19999                S::Choice(mut values, deserializer) => {
20000                    if let Some(deserializer) = deserializer {
20001                        let value = deserializer.finish(helper)?;
20002                        RestrictionTypeContentDeserializer::store_choice(&mut values, value)?;
20003                    }
20004                    Ok(super::RestrictionTypeContent::Choice(values.ok_or_else(
20005                        || ErrorKind::MissingElement("choice".into()),
20006                    )?))
20007                }
20008                S::Sequence(mut values, deserializer) => {
20009                    if let Some(deserializer) = deserializer {
20010                        let value = deserializer.finish(helper)?;
20011                        RestrictionTypeContentDeserializer::store_sequence(&mut values, value)?;
20012                    }
20013                    Ok(super::RestrictionTypeContent::Sequence(values.ok_or_else(
20014                        || ErrorKind::MissingElement("sequence".into()),
20015                    )?))
20016                }
20017                S::SimpleType(mut values, deserializer) => {
20018                    if let Some(deserializer) = deserializer {
20019                        let value = deserializer.finish(helper)?;
20020                        RestrictionTypeContentDeserializer::store_simple_type(&mut values, value)?;
20021                    }
20022                    Ok(super::RestrictionTypeContent::SimpleType(
20023                        values.ok_or_else(|| ErrorKind::MissingElement("simpleType".into()))?,
20024                    ))
20025                }
20026                S::Facet(mut values, deserializer) => {
20027                    if let Some(deserializer) = deserializer {
20028                        let value = deserializer.finish(helper)?;
20029                        RestrictionTypeContentDeserializer::store_facet(&mut values, value)?;
20030                    }
20031                    Ok(super::RestrictionTypeContent::Facet(values.ok_or_else(
20032                        || ErrorKind::MissingElement("facet".into()),
20033                    )?))
20034                }
20035                S::Attribute(mut values, deserializer) => {
20036                    if let Some(deserializer) = deserializer {
20037                        let value = deserializer.finish(helper)?;
20038                        RestrictionTypeContentDeserializer::store_attribute(&mut values, value)?;
20039                    }
20040                    Ok(super::RestrictionTypeContent::Attribute(
20041                        values.ok_or_else(|| ErrorKind::MissingElement("attribute".into()))?,
20042                    ))
20043                }
20044                S::AttributeGroup(mut values, deserializer) => {
20045                    if let Some(deserializer) = deserializer {
20046                        let value = deserializer.finish(helper)?;
20047                        RestrictionTypeContentDeserializer::store_attribute_group(
20048                            &mut values,
20049                            value,
20050                        )?;
20051                    }
20052                    Ok(super::RestrictionTypeContent::AttributeGroup(
20053                        values.ok_or_else(|| ErrorKind::MissingElement("attributeGroup".into()))?,
20054                    ))
20055                }
20056                S::AnyAttribute(mut values, deserializer) => {
20057                    if let Some(deserializer) = deserializer {
20058                        let value = deserializer.finish(helper)?;
20059                        RestrictionTypeContentDeserializer::store_any_attribute(
20060                            &mut values,
20061                            value,
20062                        )?;
20063                    }
20064                    Ok(super::RestrictionTypeContent::AnyAttribute(
20065                        values.ok_or_else(|| ErrorKind::MissingElement("anyAttribute".into()))?,
20066                    ))
20067                }
20068                S::Assert(mut values, deserializer) => {
20069                    if let Some(deserializer) = deserializer {
20070                        let value = deserializer.finish(helper)?;
20071                        RestrictionTypeContentDeserializer::store_assert(&mut values, value)?;
20072                    }
20073                    Ok(super::RestrictionTypeContent::Assert(values.ok_or_else(
20074                        || ErrorKind::MissingElement("assert".into()),
20075                    )?))
20076                }
20077                S::Done__(data) => Ok(data),
20078            }
20079        }
20080        fn store_annotation(
20081            values: &mut Option<super::Annotation>,
20082            value: super::Annotation,
20083        ) -> Result<(), Error> {
20084            if values.is_some() {
20085                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
20086                    b"annotation",
20087                )))?;
20088            }
20089            *values = Some(value);
20090            Ok(())
20091        }
20092        fn store_open_content(
20093            values: &mut Option<super::OpenContent>,
20094            value: super::OpenContent,
20095        ) -> Result<(), Error> {
20096            if values.is_some() {
20097                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
20098                    b"openContent",
20099                )))?;
20100            }
20101            *values = Some(value);
20102            Ok(())
20103        }
20104        fn store_group(
20105            values: &mut Option<super::GroupType>,
20106            value: super::GroupType,
20107        ) -> Result<(), Error> {
20108            if values.is_some() {
20109                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
20110                    b"group",
20111                )))?;
20112            }
20113            *values = Some(value);
20114            Ok(())
20115        }
20116        fn store_all(
20117            values: &mut Option<super::GroupType>,
20118            value: super::GroupType,
20119        ) -> Result<(), Error> {
20120            if values.is_some() {
20121                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(b"all")))?;
20122            }
20123            *values = Some(value);
20124            Ok(())
20125        }
20126        fn store_choice(
20127            values: &mut Option<super::GroupType>,
20128            value: super::GroupType,
20129        ) -> Result<(), Error> {
20130            if values.is_some() {
20131                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
20132                    b"choice",
20133                )))?;
20134            }
20135            *values = Some(value);
20136            Ok(())
20137        }
20138        fn store_sequence(
20139            values: &mut Option<super::GroupType>,
20140            value: super::GroupType,
20141        ) -> Result<(), Error> {
20142            if values.is_some() {
20143                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
20144                    b"sequence",
20145                )))?;
20146            }
20147            *values = Some(value);
20148            Ok(())
20149        }
20150        fn store_simple_type(
20151            values: &mut Option<super::SimpleBaseType>,
20152            value: super::SimpleBaseType,
20153        ) -> Result<(), Error> {
20154            if values.is_some() {
20155                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
20156                    b"simpleType",
20157                )))?;
20158            }
20159            *values = Some(value);
20160            Ok(())
20161        }
20162        fn store_facet(
20163            values: &mut Option<super::Facet>,
20164            value: super::Facet,
20165        ) -> Result<(), Error> {
20166            if values.is_some() {
20167                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
20168                    b"facet",
20169                )))?;
20170            }
20171            *values = Some(value);
20172            Ok(())
20173        }
20174        fn store_attribute(
20175            values: &mut Option<super::AttributeType>,
20176            value: super::AttributeType,
20177        ) -> Result<(), Error> {
20178            if values.is_some() {
20179                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
20180                    b"attribute",
20181                )))?;
20182            }
20183            *values = Some(value);
20184            Ok(())
20185        }
20186        fn store_attribute_group(
20187            values: &mut Option<super::AttributeGroupType>,
20188            value: super::AttributeGroupType,
20189        ) -> Result<(), Error> {
20190            if values.is_some() {
20191                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
20192                    b"attributeGroup",
20193                )))?;
20194            }
20195            *values = Some(value);
20196            Ok(())
20197        }
20198        fn store_any_attribute(
20199            values: &mut Option<super::AnyAttribute>,
20200            value: super::AnyAttribute,
20201        ) -> Result<(), Error> {
20202            if values.is_some() {
20203                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
20204                    b"anyAttribute",
20205                )))?;
20206            }
20207            *values = Some(value);
20208            Ok(())
20209        }
20210        fn store_assert(
20211            values: &mut Option<super::AssertionType>,
20212            value: super::AssertionType,
20213        ) -> Result<(), Error> {
20214            if values.is_some() {
20215                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
20216                    b"assert",
20217                )))?;
20218            }
20219            *values = Some(value);
20220            Ok(())
20221        }
20222        fn handle_annotation<'de>(
20223            &mut self,
20224            helper: &mut DeserializeHelper,
20225            mut values: Option<super::Annotation>,
20226            output: DeserializerOutput<'de, super::Annotation>,
20227            fallback: &mut Option<RestrictionTypeContentDeserializerState>,
20228        ) -> Result<ElementHandlerOutput<'de>, Error> {
20229            let DeserializerOutput {
20230                artifact,
20231                event,
20232                allow_any,
20233            } = output;
20234            if artifact.is_none() {
20235                *self.state__ = match fallback.take() {
20236                    None if values.is_none() => {
20237                        *self.state__ = RestrictionTypeContentDeserializerState::Init__;
20238                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
20239                    }
20240                    None => RestrictionTypeContentDeserializerState::Annotation(values, None),
20241                    Some(RestrictionTypeContentDeserializerState::Annotation(
20242                        _,
20243                        Some(deserializer),
20244                    )) => RestrictionTypeContentDeserializerState::Annotation(
20245                        values,
20246                        Some(deserializer),
20247                    ),
20248                    _ => unreachable!(),
20249                };
20250                return Ok(ElementHandlerOutput::break_(event, allow_any));
20251            }
20252            match fallback.take() {
20253                None => (),
20254                Some(RestrictionTypeContentDeserializerState::Annotation(
20255                    _,
20256                    Some(deserializer),
20257                )) => {
20258                    let data = deserializer.finish(helper)?;
20259                    RestrictionTypeContentDeserializer::store_annotation(&mut values, data)?;
20260                }
20261                Some(_) => unreachable!(),
20262            }
20263            Ok(match artifact {
20264                DeserializerArtifact::None => unreachable!(),
20265                DeserializerArtifact::Data(data) => {
20266                    RestrictionTypeContentDeserializer::store_annotation(&mut values, data)?;
20267                    let data = RestrictionTypeContentDeserializer::finish_state(
20268                        helper,
20269                        RestrictionTypeContentDeserializerState::Annotation(values, None),
20270                    )?;
20271                    *self.state__ = RestrictionTypeContentDeserializerState::Done__(data);
20272                    ElementHandlerOutput::Break { event, allow_any }
20273                }
20274                DeserializerArtifact::Deserializer(deserializer) => {
20275                    *self.state__ = RestrictionTypeContentDeserializerState::Annotation(
20276                        values,
20277                        Some(deserializer),
20278                    );
20279                    ElementHandlerOutput::from_event_end(event, allow_any)
20280                }
20281            })
20282        }
20283        fn handle_open_content<'de>(
20284            &mut self,
20285            helper: &mut DeserializeHelper,
20286            mut values: Option<super::OpenContent>,
20287            output: DeserializerOutput<'de, super::OpenContent>,
20288            fallback: &mut Option<RestrictionTypeContentDeserializerState>,
20289        ) -> Result<ElementHandlerOutput<'de>, Error> {
20290            let DeserializerOutput {
20291                artifact,
20292                event,
20293                allow_any,
20294            } = output;
20295            if artifact.is_none() {
20296                *self.state__ = match fallback.take() {
20297                    None if values.is_none() => {
20298                        *self.state__ = RestrictionTypeContentDeserializerState::Init__;
20299                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
20300                    }
20301                    None => RestrictionTypeContentDeserializerState::OpenContent(values, None),
20302                    Some(RestrictionTypeContentDeserializerState::OpenContent(
20303                        _,
20304                        Some(deserializer),
20305                    )) => RestrictionTypeContentDeserializerState::OpenContent(
20306                        values,
20307                        Some(deserializer),
20308                    ),
20309                    _ => unreachable!(),
20310                };
20311                return Ok(ElementHandlerOutput::break_(event, allow_any));
20312            }
20313            match fallback.take() {
20314                None => (),
20315                Some(RestrictionTypeContentDeserializerState::OpenContent(
20316                    _,
20317                    Some(deserializer),
20318                )) => {
20319                    let data = deserializer.finish(helper)?;
20320                    RestrictionTypeContentDeserializer::store_open_content(&mut values, data)?;
20321                }
20322                Some(_) => unreachable!(),
20323            }
20324            Ok(match artifact {
20325                DeserializerArtifact::None => unreachable!(),
20326                DeserializerArtifact::Data(data) => {
20327                    RestrictionTypeContentDeserializer::store_open_content(&mut values, data)?;
20328                    let data = RestrictionTypeContentDeserializer::finish_state(
20329                        helper,
20330                        RestrictionTypeContentDeserializerState::OpenContent(values, None),
20331                    )?;
20332                    *self.state__ = RestrictionTypeContentDeserializerState::Done__(data);
20333                    ElementHandlerOutput::Break { event, allow_any }
20334                }
20335                DeserializerArtifact::Deserializer(deserializer) => {
20336                    *self.state__ = RestrictionTypeContentDeserializerState::OpenContent(
20337                        values,
20338                        Some(deserializer),
20339                    );
20340                    ElementHandlerOutput::from_event_end(event, allow_any)
20341                }
20342            })
20343        }
20344        fn handle_group<'de>(
20345            &mut self,
20346            helper: &mut DeserializeHelper,
20347            mut values: Option<super::GroupType>,
20348            output: DeserializerOutput<'de, super::GroupType>,
20349            fallback: &mut Option<RestrictionTypeContentDeserializerState>,
20350        ) -> Result<ElementHandlerOutput<'de>, Error> {
20351            let DeserializerOutput {
20352                artifact,
20353                event,
20354                allow_any,
20355            } = output;
20356            if artifact.is_none() {
20357                *self.state__ = match fallback.take() {
20358                    None if values.is_none() => {
20359                        *self.state__ = RestrictionTypeContentDeserializerState::Init__;
20360                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
20361                    }
20362                    None => RestrictionTypeContentDeserializerState::Group(values, None),
20363                    Some(RestrictionTypeContentDeserializerState::Group(_, Some(deserializer))) => {
20364                        RestrictionTypeContentDeserializerState::Group(values, Some(deserializer))
20365                    }
20366                    _ => unreachable!(),
20367                };
20368                return Ok(ElementHandlerOutput::break_(event, allow_any));
20369            }
20370            match fallback.take() {
20371                None => (),
20372                Some(RestrictionTypeContentDeserializerState::Group(_, Some(deserializer))) => {
20373                    let data = deserializer.finish(helper)?;
20374                    RestrictionTypeContentDeserializer::store_group(&mut values, data)?;
20375                }
20376                Some(_) => unreachable!(),
20377            }
20378            Ok(match artifact {
20379                DeserializerArtifact::None => unreachable!(),
20380                DeserializerArtifact::Data(data) => {
20381                    RestrictionTypeContentDeserializer::store_group(&mut values, data)?;
20382                    let data = RestrictionTypeContentDeserializer::finish_state(
20383                        helper,
20384                        RestrictionTypeContentDeserializerState::Group(values, None),
20385                    )?;
20386                    *self.state__ = RestrictionTypeContentDeserializerState::Done__(data);
20387                    ElementHandlerOutput::Break { event, allow_any }
20388                }
20389                DeserializerArtifact::Deserializer(deserializer) => {
20390                    *self.state__ =
20391                        RestrictionTypeContentDeserializerState::Group(values, Some(deserializer));
20392                    ElementHandlerOutput::from_event_end(event, allow_any)
20393                }
20394            })
20395        }
20396        fn handle_all<'de>(
20397            &mut self,
20398            helper: &mut DeserializeHelper,
20399            mut values: Option<super::GroupType>,
20400            output: DeserializerOutput<'de, super::GroupType>,
20401            fallback: &mut Option<RestrictionTypeContentDeserializerState>,
20402        ) -> Result<ElementHandlerOutput<'de>, Error> {
20403            let DeserializerOutput {
20404                artifact,
20405                event,
20406                allow_any,
20407            } = output;
20408            if artifact.is_none() {
20409                *self.state__ = match fallback.take() {
20410                    None if values.is_none() => {
20411                        *self.state__ = RestrictionTypeContentDeserializerState::Init__;
20412                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
20413                    }
20414                    None => RestrictionTypeContentDeserializerState::All(values, None),
20415                    Some(RestrictionTypeContentDeserializerState::All(_, Some(deserializer))) => {
20416                        RestrictionTypeContentDeserializerState::All(values, Some(deserializer))
20417                    }
20418                    _ => unreachable!(),
20419                };
20420                return Ok(ElementHandlerOutput::break_(event, allow_any));
20421            }
20422            match fallback.take() {
20423                None => (),
20424                Some(RestrictionTypeContentDeserializerState::All(_, Some(deserializer))) => {
20425                    let data = deserializer.finish(helper)?;
20426                    RestrictionTypeContentDeserializer::store_all(&mut values, data)?;
20427                }
20428                Some(_) => unreachable!(),
20429            }
20430            Ok(match artifact {
20431                DeserializerArtifact::None => unreachable!(),
20432                DeserializerArtifact::Data(data) => {
20433                    RestrictionTypeContentDeserializer::store_all(&mut values, data)?;
20434                    let data = RestrictionTypeContentDeserializer::finish_state(
20435                        helper,
20436                        RestrictionTypeContentDeserializerState::All(values, None),
20437                    )?;
20438                    *self.state__ = RestrictionTypeContentDeserializerState::Done__(data);
20439                    ElementHandlerOutput::Break { event, allow_any }
20440                }
20441                DeserializerArtifact::Deserializer(deserializer) => {
20442                    *self.state__ =
20443                        RestrictionTypeContentDeserializerState::All(values, Some(deserializer));
20444                    ElementHandlerOutput::from_event_end(event, allow_any)
20445                }
20446            })
20447        }
20448        fn handle_choice<'de>(
20449            &mut self,
20450            helper: &mut DeserializeHelper,
20451            mut values: Option<super::GroupType>,
20452            output: DeserializerOutput<'de, super::GroupType>,
20453            fallback: &mut Option<RestrictionTypeContentDeserializerState>,
20454        ) -> Result<ElementHandlerOutput<'de>, Error> {
20455            let DeserializerOutput {
20456                artifact,
20457                event,
20458                allow_any,
20459            } = output;
20460            if artifact.is_none() {
20461                *self.state__ = match fallback.take() {
20462                    None if values.is_none() => {
20463                        *self.state__ = RestrictionTypeContentDeserializerState::Init__;
20464                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
20465                    }
20466                    None => RestrictionTypeContentDeserializerState::Choice(values, None),
20467                    Some(RestrictionTypeContentDeserializerState::Choice(
20468                        _,
20469                        Some(deserializer),
20470                    )) => {
20471                        RestrictionTypeContentDeserializerState::Choice(values, Some(deserializer))
20472                    }
20473                    _ => unreachable!(),
20474                };
20475                return Ok(ElementHandlerOutput::break_(event, allow_any));
20476            }
20477            match fallback.take() {
20478                None => (),
20479                Some(RestrictionTypeContentDeserializerState::Choice(_, Some(deserializer))) => {
20480                    let data = deserializer.finish(helper)?;
20481                    RestrictionTypeContentDeserializer::store_choice(&mut values, data)?;
20482                }
20483                Some(_) => unreachable!(),
20484            }
20485            Ok(match artifact {
20486                DeserializerArtifact::None => unreachable!(),
20487                DeserializerArtifact::Data(data) => {
20488                    RestrictionTypeContentDeserializer::store_choice(&mut values, data)?;
20489                    let data = RestrictionTypeContentDeserializer::finish_state(
20490                        helper,
20491                        RestrictionTypeContentDeserializerState::Choice(values, None),
20492                    )?;
20493                    *self.state__ = RestrictionTypeContentDeserializerState::Done__(data);
20494                    ElementHandlerOutput::Break { event, allow_any }
20495                }
20496                DeserializerArtifact::Deserializer(deserializer) => {
20497                    *self.state__ =
20498                        RestrictionTypeContentDeserializerState::Choice(values, Some(deserializer));
20499                    ElementHandlerOutput::from_event_end(event, allow_any)
20500                }
20501            })
20502        }
20503        fn handle_sequence<'de>(
20504            &mut self,
20505            helper: &mut DeserializeHelper,
20506            mut values: Option<super::GroupType>,
20507            output: DeserializerOutput<'de, super::GroupType>,
20508            fallback: &mut Option<RestrictionTypeContentDeserializerState>,
20509        ) -> Result<ElementHandlerOutput<'de>, Error> {
20510            let DeserializerOutput {
20511                artifact,
20512                event,
20513                allow_any,
20514            } = output;
20515            if artifact.is_none() {
20516                *self.state__ = match fallback.take() {
20517                    None if values.is_none() => {
20518                        *self.state__ = RestrictionTypeContentDeserializerState::Init__;
20519                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
20520                    }
20521                    None => RestrictionTypeContentDeserializerState::Sequence(values, None),
20522                    Some(RestrictionTypeContentDeserializerState::Sequence(
20523                        _,
20524                        Some(deserializer),
20525                    )) => RestrictionTypeContentDeserializerState::Sequence(
20526                        values,
20527                        Some(deserializer),
20528                    ),
20529                    _ => unreachable!(),
20530                };
20531                return Ok(ElementHandlerOutput::break_(event, allow_any));
20532            }
20533            match fallback.take() {
20534                None => (),
20535                Some(RestrictionTypeContentDeserializerState::Sequence(_, Some(deserializer))) => {
20536                    let data = deserializer.finish(helper)?;
20537                    RestrictionTypeContentDeserializer::store_sequence(&mut values, data)?;
20538                }
20539                Some(_) => unreachable!(),
20540            }
20541            Ok(match artifact {
20542                DeserializerArtifact::None => unreachable!(),
20543                DeserializerArtifact::Data(data) => {
20544                    RestrictionTypeContentDeserializer::store_sequence(&mut values, data)?;
20545                    let data = RestrictionTypeContentDeserializer::finish_state(
20546                        helper,
20547                        RestrictionTypeContentDeserializerState::Sequence(values, None),
20548                    )?;
20549                    *self.state__ = RestrictionTypeContentDeserializerState::Done__(data);
20550                    ElementHandlerOutput::Break { event, allow_any }
20551                }
20552                DeserializerArtifact::Deserializer(deserializer) => {
20553                    *self.state__ = RestrictionTypeContentDeserializerState::Sequence(
20554                        values,
20555                        Some(deserializer),
20556                    );
20557                    ElementHandlerOutput::from_event_end(event, allow_any)
20558                }
20559            })
20560        }
20561        fn handle_simple_type<'de>(
20562            &mut self,
20563            helper: &mut DeserializeHelper,
20564            mut values: Option<super::SimpleBaseType>,
20565            output: DeserializerOutput<'de, super::SimpleBaseType>,
20566            fallback: &mut Option<RestrictionTypeContentDeserializerState>,
20567        ) -> Result<ElementHandlerOutput<'de>, Error> {
20568            let DeserializerOutput {
20569                artifact,
20570                event,
20571                allow_any,
20572            } = output;
20573            if artifact.is_none() {
20574                *self.state__ = match fallback.take() {
20575                    None if values.is_none() => {
20576                        *self.state__ = RestrictionTypeContentDeserializerState::Init__;
20577                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
20578                    }
20579                    None => RestrictionTypeContentDeserializerState::SimpleType(values, None),
20580                    Some(RestrictionTypeContentDeserializerState::SimpleType(
20581                        _,
20582                        Some(deserializer),
20583                    )) => RestrictionTypeContentDeserializerState::SimpleType(
20584                        values,
20585                        Some(deserializer),
20586                    ),
20587                    _ => unreachable!(),
20588                };
20589                return Ok(ElementHandlerOutput::break_(event, allow_any));
20590            }
20591            match fallback.take() {
20592                None => (),
20593                Some(RestrictionTypeContentDeserializerState::SimpleType(
20594                    _,
20595                    Some(deserializer),
20596                )) => {
20597                    let data = deserializer.finish(helper)?;
20598                    RestrictionTypeContentDeserializer::store_simple_type(&mut values, data)?;
20599                }
20600                Some(_) => unreachable!(),
20601            }
20602            Ok(match artifact {
20603                DeserializerArtifact::None => unreachable!(),
20604                DeserializerArtifact::Data(data) => {
20605                    RestrictionTypeContentDeserializer::store_simple_type(&mut values, data)?;
20606                    let data = RestrictionTypeContentDeserializer::finish_state(
20607                        helper,
20608                        RestrictionTypeContentDeserializerState::SimpleType(values, None),
20609                    )?;
20610                    *self.state__ = RestrictionTypeContentDeserializerState::Done__(data);
20611                    ElementHandlerOutput::Break { event, allow_any }
20612                }
20613                DeserializerArtifact::Deserializer(deserializer) => {
20614                    *self.state__ = RestrictionTypeContentDeserializerState::SimpleType(
20615                        values,
20616                        Some(deserializer),
20617                    );
20618                    ElementHandlerOutput::from_event_end(event, allow_any)
20619                }
20620            })
20621        }
20622        fn handle_facet<'de>(
20623            &mut self,
20624            helper: &mut DeserializeHelper,
20625            mut values: Option<super::Facet>,
20626            output: DeserializerOutput<'de, super::Facet>,
20627            fallback: &mut Option<RestrictionTypeContentDeserializerState>,
20628        ) -> Result<ElementHandlerOutput<'de>, Error> {
20629            let DeserializerOutput {
20630                artifact,
20631                event,
20632                allow_any,
20633            } = output;
20634            if artifact.is_none() {
20635                *self.state__ = match fallback.take() {
20636                    None if values.is_none() => {
20637                        *self.state__ = RestrictionTypeContentDeserializerState::Init__;
20638                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
20639                    }
20640                    None => RestrictionTypeContentDeserializerState::Facet(values, None),
20641                    Some(RestrictionTypeContentDeserializerState::Facet(_, Some(deserializer))) => {
20642                        RestrictionTypeContentDeserializerState::Facet(values, Some(deserializer))
20643                    }
20644                    _ => unreachable!(),
20645                };
20646                return Ok(ElementHandlerOutput::break_(event, allow_any));
20647            }
20648            match fallback.take() {
20649                None => (),
20650                Some(RestrictionTypeContentDeserializerState::Facet(_, Some(deserializer))) => {
20651                    let data = deserializer.finish(helper)?;
20652                    RestrictionTypeContentDeserializer::store_facet(&mut values, data)?;
20653                }
20654                Some(_) => unreachable!(),
20655            }
20656            Ok(match artifact {
20657                DeserializerArtifact::None => unreachable!(),
20658                DeserializerArtifact::Data(data) => {
20659                    RestrictionTypeContentDeserializer::store_facet(&mut values, data)?;
20660                    let data = RestrictionTypeContentDeserializer::finish_state(
20661                        helper,
20662                        RestrictionTypeContentDeserializerState::Facet(values, None),
20663                    )?;
20664                    *self.state__ = RestrictionTypeContentDeserializerState::Done__(data);
20665                    ElementHandlerOutput::Break { event, allow_any }
20666                }
20667                DeserializerArtifact::Deserializer(deserializer) => {
20668                    *self.state__ =
20669                        RestrictionTypeContentDeserializerState::Facet(values, Some(deserializer));
20670                    ElementHandlerOutput::from_event_end(event, allow_any)
20671                }
20672            })
20673        }
20674        fn handle_attribute<'de>(
20675            &mut self,
20676            helper: &mut DeserializeHelper,
20677            mut values: Option<super::AttributeType>,
20678            output: DeserializerOutput<'de, super::AttributeType>,
20679            fallback: &mut Option<RestrictionTypeContentDeserializerState>,
20680        ) -> Result<ElementHandlerOutput<'de>, Error> {
20681            let DeserializerOutput {
20682                artifact,
20683                event,
20684                allow_any,
20685            } = output;
20686            if artifact.is_none() {
20687                *self.state__ = match fallback.take() {
20688                    None if values.is_none() => {
20689                        *self.state__ = RestrictionTypeContentDeserializerState::Init__;
20690                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
20691                    }
20692                    None => RestrictionTypeContentDeserializerState::Attribute(values, None),
20693                    Some(RestrictionTypeContentDeserializerState::Attribute(
20694                        _,
20695                        Some(deserializer),
20696                    )) => RestrictionTypeContentDeserializerState::Attribute(
20697                        values,
20698                        Some(deserializer),
20699                    ),
20700                    _ => unreachable!(),
20701                };
20702                return Ok(ElementHandlerOutput::break_(event, allow_any));
20703            }
20704            match fallback.take() {
20705                None => (),
20706                Some(RestrictionTypeContentDeserializerState::Attribute(_, Some(deserializer))) => {
20707                    let data = deserializer.finish(helper)?;
20708                    RestrictionTypeContentDeserializer::store_attribute(&mut values, data)?;
20709                }
20710                Some(_) => unreachable!(),
20711            }
20712            Ok(match artifact {
20713                DeserializerArtifact::None => unreachable!(),
20714                DeserializerArtifact::Data(data) => {
20715                    RestrictionTypeContentDeserializer::store_attribute(&mut values, data)?;
20716                    let data = RestrictionTypeContentDeserializer::finish_state(
20717                        helper,
20718                        RestrictionTypeContentDeserializerState::Attribute(values, None),
20719                    )?;
20720                    *self.state__ = RestrictionTypeContentDeserializerState::Done__(data);
20721                    ElementHandlerOutput::Break { event, allow_any }
20722                }
20723                DeserializerArtifact::Deserializer(deserializer) => {
20724                    *self.state__ = RestrictionTypeContentDeserializerState::Attribute(
20725                        values,
20726                        Some(deserializer),
20727                    );
20728                    ElementHandlerOutput::from_event_end(event, allow_any)
20729                }
20730            })
20731        }
20732        fn handle_attribute_group<'de>(
20733            &mut self,
20734            helper: &mut DeserializeHelper,
20735            mut values: Option<super::AttributeGroupType>,
20736            output: DeserializerOutput<'de, super::AttributeGroupType>,
20737            fallback: &mut Option<RestrictionTypeContentDeserializerState>,
20738        ) -> Result<ElementHandlerOutput<'de>, Error> {
20739            let DeserializerOutput {
20740                artifact,
20741                event,
20742                allow_any,
20743            } = output;
20744            if artifact.is_none() {
20745                *self.state__ = match fallback.take() {
20746                    None if values.is_none() => {
20747                        *self.state__ = RestrictionTypeContentDeserializerState::Init__;
20748                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
20749                    }
20750                    None => RestrictionTypeContentDeserializerState::AttributeGroup(values, None),
20751                    Some(RestrictionTypeContentDeserializerState::AttributeGroup(
20752                        _,
20753                        Some(deserializer),
20754                    )) => RestrictionTypeContentDeserializerState::AttributeGroup(
20755                        values,
20756                        Some(deserializer),
20757                    ),
20758                    _ => unreachable!(),
20759                };
20760                return Ok(ElementHandlerOutput::break_(event, allow_any));
20761            }
20762            match fallback.take() {
20763                None => (),
20764                Some(RestrictionTypeContentDeserializerState::AttributeGroup(
20765                    _,
20766                    Some(deserializer),
20767                )) => {
20768                    let data = deserializer.finish(helper)?;
20769                    RestrictionTypeContentDeserializer::store_attribute_group(&mut values, data)?;
20770                }
20771                Some(_) => unreachable!(),
20772            }
20773            Ok(match artifact {
20774                DeserializerArtifact::None => unreachable!(),
20775                DeserializerArtifact::Data(data) => {
20776                    RestrictionTypeContentDeserializer::store_attribute_group(&mut values, data)?;
20777                    let data = RestrictionTypeContentDeserializer::finish_state(
20778                        helper,
20779                        RestrictionTypeContentDeserializerState::AttributeGroup(values, None),
20780                    )?;
20781                    *self.state__ = RestrictionTypeContentDeserializerState::Done__(data);
20782                    ElementHandlerOutput::Break { event, allow_any }
20783                }
20784                DeserializerArtifact::Deserializer(deserializer) => {
20785                    *self.state__ = RestrictionTypeContentDeserializerState::AttributeGroup(
20786                        values,
20787                        Some(deserializer),
20788                    );
20789                    ElementHandlerOutput::from_event_end(event, allow_any)
20790                }
20791            })
20792        }
20793        fn handle_any_attribute<'de>(
20794            &mut self,
20795            helper: &mut DeserializeHelper,
20796            mut values: Option<super::AnyAttribute>,
20797            output: DeserializerOutput<'de, super::AnyAttribute>,
20798            fallback: &mut Option<RestrictionTypeContentDeserializerState>,
20799        ) -> Result<ElementHandlerOutput<'de>, Error> {
20800            let DeserializerOutput {
20801                artifact,
20802                event,
20803                allow_any,
20804            } = output;
20805            if artifact.is_none() {
20806                *self.state__ = match fallback.take() {
20807                    None if values.is_none() => {
20808                        *self.state__ = RestrictionTypeContentDeserializerState::Init__;
20809                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
20810                    }
20811                    None => RestrictionTypeContentDeserializerState::AnyAttribute(values, None),
20812                    Some(RestrictionTypeContentDeserializerState::AnyAttribute(
20813                        _,
20814                        Some(deserializer),
20815                    )) => RestrictionTypeContentDeserializerState::AnyAttribute(
20816                        values,
20817                        Some(deserializer),
20818                    ),
20819                    _ => unreachable!(),
20820                };
20821                return Ok(ElementHandlerOutput::break_(event, allow_any));
20822            }
20823            match fallback.take() {
20824                None => (),
20825                Some(RestrictionTypeContentDeserializerState::AnyAttribute(
20826                    _,
20827                    Some(deserializer),
20828                )) => {
20829                    let data = deserializer.finish(helper)?;
20830                    RestrictionTypeContentDeserializer::store_any_attribute(&mut values, data)?;
20831                }
20832                Some(_) => unreachable!(),
20833            }
20834            Ok(match artifact {
20835                DeserializerArtifact::None => unreachable!(),
20836                DeserializerArtifact::Data(data) => {
20837                    RestrictionTypeContentDeserializer::store_any_attribute(&mut values, data)?;
20838                    let data = RestrictionTypeContentDeserializer::finish_state(
20839                        helper,
20840                        RestrictionTypeContentDeserializerState::AnyAttribute(values, None),
20841                    )?;
20842                    *self.state__ = RestrictionTypeContentDeserializerState::Done__(data);
20843                    ElementHandlerOutput::Break { event, allow_any }
20844                }
20845                DeserializerArtifact::Deserializer(deserializer) => {
20846                    *self.state__ = RestrictionTypeContentDeserializerState::AnyAttribute(
20847                        values,
20848                        Some(deserializer),
20849                    );
20850                    ElementHandlerOutput::from_event_end(event, allow_any)
20851                }
20852            })
20853        }
20854        fn handle_assert<'de>(
20855            &mut self,
20856            helper: &mut DeserializeHelper,
20857            mut values: Option<super::AssertionType>,
20858            output: DeserializerOutput<'de, super::AssertionType>,
20859            fallback: &mut Option<RestrictionTypeContentDeserializerState>,
20860        ) -> Result<ElementHandlerOutput<'de>, Error> {
20861            let DeserializerOutput {
20862                artifact,
20863                event,
20864                allow_any,
20865            } = output;
20866            if artifact.is_none() {
20867                *self.state__ = match fallback.take() {
20868                    None if values.is_none() => {
20869                        *self.state__ = RestrictionTypeContentDeserializerState::Init__;
20870                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
20871                    }
20872                    None => RestrictionTypeContentDeserializerState::Assert(values, None),
20873                    Some(RestrictionTypeContentDeserializerState::Assert(
20874                        _,
20875                        Some(deserializer),
20876                    )) => {
20877                        RestrictionTypeContentDeserializerState::Assert(values, Some(deserializer))
20878                    }
20879                    _ => unreachable!(),
20880                };
20881                return Ok(ElementHandlerOutput::break_(event, allow_any));
20882            }
20883            match fallback.take() {
20884                None => (),
20885                Some(RestrictionTypeContentDeserializerState::Assert(_, Some(deserializer))) => {
20886                    let data = deserializer.finish(helper)?;
20887                    RestrictionTypeContentDeserializer::store_assert(&mut values, data)?;
20888                }
20889                Some(_) => unreachable!(),
20890            }
20891            Ok(match artifact {
20892                DeserializerArtifact::None => unreachable!(),
20893                DeserializerArtifact::Data(data) => {
20894                    RestrictionTypeContentDeserializer::store_assert(&mut values, data)?;
20895                    let data = RestrictionTypeContentDeserializer::finish_state(
20896                        helper,
20897                        RestrictionTypeContentDeserializerState::Assert(values, None),
20898                    )?;
20899                    *self.state__ = RestrictionTypeContentDeserializerState::Done__(data);
20900                    ElementHandlerOutput::Break { event, allow_any }
20901                }
20902                DeserializerArtifact::Deserializer(deserializer) => {
20903                    *self.state__ =
20904                        RestrictionTypeContentDeserializerState::Assert(values, Some(deserializer));
20905                    ElementHandlerOutput::from_event_end(event, allow_any)
20906                }
20907            })
20908        }
20909    }
20910    impl<'de> Deserializer<'de, super::RestrictionTypeContent>
20911        for Box<RestrictionTypeContentDeserializer>
20912    {
20913        fn init(
20914            helper: &mut DeserializeHelper,
20915            event: Event<'de>,
20916        ) -> DeserializerResult<'de, super::RestrictionTypeContent> {
20917            let deserializer = Box::new(RestrictionTypeContentDeserializer {
20918                state__: Box::new(RestrictionTypeContentDeserializerState::Init__),
20919            });
20920            let mut output = deserializer.next(helper, event)?;
20921            output.artifact = match output.artifact {
20922                DeserializerArtifact::Deserializer(x)
20923                    if matches!(&*x.state__, RestrictionTypeContentDeserializerState::Init__) =>
20924                {
20925                    DeserializerArtifact::None
20926                }
20927                artifact => artifact,
20928            };
20929            Ok(output)
20930        }
20931        fn next(
20932            mut self,
20933            helper: &mut DeserializeHelper,
20934            event: Event<'de>,
20935        ) -> DeserializerResult<'de, super::RestrictionTypeContent> {
20936            use RestrictionTypeContentDeserializerState as S;
20937            let mut event = event;
20938            let mut fallback = None;
20939            let (event, allow_any) = loop {
20940                let state = replace(&mut *self.state__, S::Unknown__);
20941                event = match (state, event) {
20942                    (S::Unknown__, _) => unreachable!(),
20943                    (S::Annotation(values, Some(deserializer)), event) => {
20944                        let output = deserializer.next(helper, event)?;
20945                        match self.handle_annotation(helper, values, output, &mut fallback)? {
20946                            ElementHandlerOutput::Break { event, allow_any } => {
20947                                break (event, allow_any)
20948                            }
20949                            ElementHandlerOutput::Continue { event, .. } => event,
20950                        }
20951                    }
20952                    (S::OpenContent(values, Some(deserializer)), event) => {
20953                        let output = deserializer.next(helper, event)?;
20954                        match self.handle_open_content(helper, values, output, &mut fallback)? {
20955                            ElementHandlerOutput::Break { event, allow_any } => {
20956                                break (event, allow_any)
20957                            }
20958                            ElementHandlerOutput::Continue { event, .. } => event,
20959                        }
20960                    }
20961                    (S::Group(values, Some(deserializer)), event) => {
20962                        let output = deserializer.next(helper, event)?;
20963                        match self.handle_group(helper, values, output, &mut fallback)? {
20964                            ElementHandlerOutput::Break { event, allow_any } => {
20965                                break (event, allow_any)
20966                            }
20967                            ElementHandlerOutput::Continue { event, .. } => event,
20968                        }
20969                    }
20970                    (S::All(values, Some(deserializer)), event) => {
20971                        let output = deserializer.next(helper, event)?;
20972                        match self.handle_all(helper, values, output, &mut fallback)? {
20973                            ElementHandlerOutput::Break { event, allow_any } => {
20974                                break (event, allow_any)
20975                            }
20976                            ElementHandlerOutput::Continue { event, .. } => event,
20977                        }
20978                    }
20979                    (S::Choice(values, Some(deserializer)), event) => {
20980                        let output = deserializer.next(helper, event)?;
20981                        match self.handle_choice(helper, values, output, &mut fallback)? {
20982                            ElementHandlerOutput::Break { event, allow_any } => {
20983                                break (event, allow_any)
20984                            }
20985                            ElementHandlerOutput::Continue { event, .. } => event,
20986                        }
20987                    }
20988                    (S::Sequence(values, Some(deserializer)), event) => {
20989                        let output = deserializer.next(helper, event)?;
20990                        match self.handle_sequence(helper, values, output, &mut fallback)? {
20991                            ElementHandlerOutput::Break { event, allow_any } => {
20992                                break (event, allow_any)
20993                            }
20994                            ElementHandlerOutput::Continue { event, .. } => event,
20995                        }
20996                    }
20997                    (S::SimpleType(values, Some(deserializer)), event) => {
20998                        let output = deserializer.next(helper, event)?;
20999                        match self.handle_simple_type(helper, values, output, &mut fallback)? {
21000                            ElementHandlerOutput::Break { event, allow_any } => {
21001                                break (event, allow_any)
21002                            }
21003                            ElementHandlerOutput::Continue { event, .. } => event,
21004                        }
21005                    }
21006                    (S::Facet(values, Some(deserializer)), event) => {
21007                        let output = deserializer.next(helper, event)?;
21008                        match self.handle_facet(helper, values, output, &mut fallback)? {
21009                            ElementHandlerOutput::Break { event, allow_any } => {
21010                                break (event, allow_any)
21011                            }
21012                            ElementHandlerOutput::Continue { event, .. } => event,
21013                        }
21014                    }
21015                    (S::Attribute(values, Some(deserializer)), event) => {
21016                        let output = deserializer.next(helper, event)?;
21017                        match self.handle_attribute(helper, values, output, &mut fallback)? {
21018                            ElementHandlerOutput::Break { event, allow_any } => {
21019                                break (event, allow_any)
21020                            }
21021                            ElementHandlerOutput::Continue { event, .. } => event,
21022                        }
21023                    }
21024                    (S::AttributeGroup(values, Some(deserializer)), event) => {
21025                        let output = deserializer.next(helper, event)?;
21026                        match self.handle_attribute_group(helper, values, output, &mut fallback)? {
21027                            ElementHandlerOutput::Break { event, allow_any } => {
21028                                break (event, allow_any)
21029                            }
21030                            ElementHandlerOutput::Continue { event, .. } => event,
21031                        }
21032                    }
21033                    (S::AnyAttribute(values, Some(deserializer)), event) => {
21034                        let output = deserializer.next(helper, event)?;
21035                        match self.handle_any_attribute(helper, values, output, &mut fallback)? {
21036                            ElementHandlerOutput::Break { event, allow_any } => {
21037                                break (event, allow_any)
21038                            }
21039                            ElementHandlerOutput::Continue { event, .. } => event,
21040                        }
21041                    }
21042                    (S::Assert(values, Some(deserializer)), event) => {
21043                        let output = deserializer.next(helper, event)?;
21044                        match self.handle_assert(helper, values, output, &mut fallback)? {
21045                            ElementHandlerOutput::Break { event, allow_any } => {
21046                                break (event, allow_any)
21047                            }
21048                            ElementHandlerOutput::Continue { event, .. } => event,
21049                        }
21050                    }
21051                    (state, event @ Event::End(_)) => {
21052                        return Ok(DeserializerOutput {
21053                            artifact: DeserializerArtifact::Data(
21054                                RestrictionTypeContentDeserializer::finish_state(helper, state)?,
21055                            ),
21056                            event: DeserializerEvent::Continue(event),
21057                            allow_any: false,
21058                        });
21059                    }
21060                    (S::Init__, event) => match self.find_suitable(helper, event, &mut fallback)? {
21061                        ElementHandlerOutput::Break { event, allow_any } => {
21062                            break (event, allow_any)
21063                        }
21064                        ElementHandlerOutput::Continue { event, .. } => event,
21065                    },
21066                    (S::Annotation(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
21067                        let output = helper.init_start_tag_deserializer(
21068                            event,
21069                            Some(&super::NS_XS),
21070                            b"annotation",
21071                            false,
21072                        )?;
21073                        match self.handle_annotation(helper, values, output, &mut fallback)? {
21074                            ElementHandlerOutput::Break { event, allow_any } => {
21075                                break (event, allow_any)
21076                            }
21077                            ElementHandlerOutput::Continue { event, .. } => event,
21078                        }
21079                    }
21080                    (S::OpenContent(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
21081                        let output = helper.init_start_tag_deserializer(
21082                            event,
21083                            Some(&super::NS_XS),
21084                            b"openContent",
21085                            false,
21086                        )?;
21087                        match self.handle_open_content(helper, values, output, &mut fallback)? {
21088                            ElementHandlerOutput::Break { event, allow_any } => {
21089                                break (event, allow_any)
21090                            }
21091                            ElementHandlerOutput::Continue { event, .. } => event,
21092                        }
21093                    }
21094                    (S::Group(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
21095                        let output = helper.init_start_tag_deserializer(
21096                            event,
21097                            Some(&super::NS_XS),
21098                            b"group",
21099                            true,
21100                        )?;
21101                        match self.handle_group(helper, values, output, &mut fallback)? {
21102                            ElementHandlerOutput::Break { event, allow_any } => {
21103                                break (event, allow_any)
21104                            }
21105                            ElementHandlerOutput::Continue { event, .. } => event,
21106                        }
21107                    }
21108                    (S::All(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
21109                        let output = helper.init_start_tag_deserializer(
21110                            event,
21111                            Some(&super::NS_XS),
21112                            b"all",
21113                            true,
21114                        )?;
21115                        match self.handle_all(helper, values, output, &mut fallback)? {
21116                            ElementHandlerOutput::Break { event, allow_any } => {
21117                                break (event, allow_any)
21118                            }
21119                            ElementHandlerOutput::Continue { event, .. } => event,
21120                        }
21121                    }
21122                    (S::Choice(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
21123                        let output = helper.init_start_tag_deserializer(
21124                            event,
21125                            Some(&super::NS_XS),
21126                            b"choice",
21127                            true,
21128                        )?;
21129                        match self.handle_choice(helper, values, output, &mut fallback)? {
21130                            ElementHandlerOutput::Break { event, allow_any } => {
21131                                break (event, allow_any)
21132                            }
21133                            ElementHandlerOutput::Continue { event, .. } => event,
21134                        }
21135                    }
21136                    (S::Sequence(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
21137                        let output = helper.init_start_tag_deserializer(
21138                            event,
21139                            Some(&super::NS_XS),
21140                            b"sequence",
21141                            true,
21142                        )?;
21143                        match self.handle_sequence(helper, values, output, &mut fallback)? {
21144                            ElementHandlerOutput::Break { event, allow_any } => {
21145                                break (event, allow_any)
21146                            }
21147                            ElementHandlerOutput::Continue { event, .. } => event,
21148                        }
21149                    }
21150                    (S::SimpleType(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
21151                        let output = helper.init_start_tag_deserializer(
21152                            event,
21153                            Some(&super::NS_XS),
21154                            b"simpleType",
21155                            true,
21156                        )?;
21157                        match self.handle_simple_type(helper, values, output, &mut fallback)? {
21158                            ElementHandlerOutput::Break { event, allow_any } => {
21159                                break (event, allow_any)
21160                            }
21161                            ElementHandlerOutput::Continue { event, .. } => event,
21162                        }
21163                    }
21164                    (S::Facet(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
21165                        let output =
21166                            <super::Facet as WithDeserializer>::Deserializer::init(helper, event)?;
21167                        match self.handle_facet(helper, values, output, &mut fallback)? {
21168                            ElementHandlerOutput::Break { event, allow_any } => {
21169                                break (event, allow_any)
21170                            }
21171                            ElementHandlerOutput::Continue { event, .. } => event,
21172                        }
21173                    }
21174                    (S::Attribute(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
21175                        let output = helper.init_start_tag_deserializer(
21176                            event,
21177                            Some(&super::NS_XS),
21178                            b"attribute",
21179                            false,
21180                        )?;
21181                        match self.handle_attribute(helper, values, output, &mut fallback)? {
21182                            ElementHandlerOutput::Break { event, allow_any } => {
21183                                break (event, allow_any)
21184                            }
21185                            ElementHandlerOutput::Continue { event, .. } => event,
21186                        }
21187                    }
21188                    (
21189                        S::AttributeGroup(values, None),
21190                        event @ (Event::Start(_) | Event::Empty(_)),
21191                    ) => {
21192                        let output = helper.init_start_tag_deserializer(
21193                            event,
21194                            Some(&super::NS_XS),
21195                            b"attributeGroup",
21196                            false,
21197                        )?;
21198                        match self.handle_attribute_group(helper, values, output, &mut fallback)? {
21199                            ElementHandlerOutput::Break { event, allow_any } => {
21200                                break (event, allow_any)
21201                            }
21202                            ElementHandlerOutput::Continue { event, .. } => event,
21203                        }
21204                    }
21205                    (
21206                        S::AnyAttribute(values, None),
21207                        event @ (Event::Start(_) | Event::Empty(_)),
21208                    ) => {
21209                        let output = helper.init_start_tag_deserializer(
21210                            event,
21211                            Some(&super::NS_XS),
21212                            b"anyAttribute",
21213                            false,
21214                        )?;
21215                        match self.handle_any_attribute(helper, values, output, &mut fallback)? {
21216                            ElementHandlerOutput::Break { event, allow_any } => {
21217                                break (event, allow_any)
21218                            }
21219                            ElementHandlerOutput::Continue { event, .. } => event,
21220                        }
21221                    }
21222                    (S::Assert(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
21223                        let output = helper.init_start_tag_deserializer(
21224                            event,
21225                            Some(&super::NS_XS),
21226                            b"assert",
21227                            false,
21228                        )?;
21229                        match self.handle_assert(helper, values, output, &mut fallback)? {
21230                            ElementHandlerOutput::Break { event, allow_any } => {
21231                                break (event, allow_any)
21232                            }
21233                            ElementHandlerOutput::Continue { event, .. } => event,
21234                        }
21235                    }
21236                    (s @ S::Done__(_), event) => {
21237                        *self.state__ = s;
21238                        break (DeserializerEvent::Continue(event), false);
21239                    }
21240                    (state, event) => {
21241                        *self.state__ = state;
21242                        break (DeserializerEvent::Break(event), false);
21243                    }
21244                }
21245            };
21246            let artifact = if matches!(&*self.state__, S::Done__(_)) {
21247                DeserializerArtifact::Data(self.finish(helper)?)
21248            } else {
21249                DeserializerArtifact::Deserializer(self)
21250            };
21251            Ok(DeserializerOutput {
21252                artifact,
21253                event,
21254                allow_any,
21255            })
21256        }
21257        fn finish(
21258            self,
21259            helper: &mut DeserializeHelper,
21260        ) -> Result<super::RestrictionTypeContent, Error> {
21261            RestrictionTypeContentDeserializer::finish_state(helper, *self.state__)
21262        }
21263    }
21264    #[derive(Debug)]
21265    pub struct ExtensionTypeDeserializer {
21266        id: Option<String>,
21267        base: QName,
21268        content: Vec<super::ExtensionTypeContent>,
21269        state__: Box<ExtensionTypeDeserializerState>,
21270    }
21271    #[derive(Debug)]
21272    enum ExtensionTypeDeserializerState {
21273        Init__,
21274        Next__,
21275        Content__(<super::ExtensionTypeContent as WithDeserializer>::Deserializer),
21276        Unknown__,
21277    }
21278    impl ExtensionTypeDeserializer {
21279        fn from_bytes_start(
21280            helper: &mut DeserializeHelper,
21281            bytes_start: &BytesStart<'_>,
21282        ) -> Result<Box<Self>, Error> {
21283            let mut id: Option<String> = None;
21284            let mut base: Option<QName> = None;
21285            for attrib in helper.filter_xmlns_attributes(bytes_start) {
21286                let attrib = attrib?;
21287                if matches!(
21288                    helper.resolve_local_name(attrib.key, &super::NS_XS),
21289                    Some(b"id")
21290                ) {
21291                    helper.read_attrib(&mut id, b"id", &attrib.value)?;
21292                } else if matches!(
21293                    helper.resolve_local_name(attrib.key, &super::NS_XS),
21294                    Some(b"base")
21295                ) {
21296                    helper.read_attrib(&mut base, b"base", &attrib.value)?;
21297                }
21298            }
21299            Ok(Box::new(Self {
21300                id: id,
21301                base: base.ok_or_else(|| ErrorKind::MissingAttribute("base".into()))?,
21302                content: Vec::new(),
21303                state__: Box::new(ExtensionTypeDeserializerState::Init__),
21304            }))
21305        }
21306        fn finish_state(
21307            &mut self,
21308            helper: &mut DeserializeHelper,
21309            state: ExtensionTypeDeserializerState,
21310        ) -> Result<(), Error> {
21311            if let ExtensionTypeDeserializerState::Content__(deserializer) = state {
21312                self.store_content(deserializer.finish(helper)?)?;
21313            }
21314            Ok(())
21315        }
21316        fn store_content(&mut self, value: super::ExtensionTypeContent) -> Result<(), Error> {
21317            self.content.push(value);
21318            Ok(())
21319        }
21320        fn handle_content<'de>(
21321            &mut self,
21322            helper: &mut DeserializeHelper,
21323            output: DeserializerOutput<'de, super::ExtensionTypeContent>,
21324            fallback: &mut Option<ExtensionTypeDeserializerState>,
21325        ) -> Result<ElementHandlerOutput<'de>, Error> {
21326            let DeserializerOutput {
21327                artifact,
21328                event,
21329                allow_any,
21330            } = output;
21331            if artifact.is_none() {
21332                *self.state__ = fallback
21333                    .take()
21334                    .unwrap_or(ExtensionTypeDeserializerState::Next__);
21335                return Ok(ElementHandlerOutput::break_(event, allow_any));
21336            }
21337            if let Some(fallback) = fallback.take() {
21338                self.finish_state(helper, fallback)?;
21339            }
21340            Ok(match artifact {
21341                DeserializerArtifact::None => unreachable!(),
21342                DeserializerArtifact::Data(data) => {
21343                    self.store_content(data)?;
21344                    *self.state__ = ExtensionTypeDeserializerState::Next__;
21345                    ElementHandlerOutput::from_event(event, allow_any)
21346                }
21347                DeserializerArtifact::Deserializer(deserializer) => {
21348                    let ret = ElementHandlerOutput::from_event(event, allow_any);
21349                    match &ret {
21350                        ElementHandlerOutput::Break { .. } => {
21351                            *self.state__ = ExtensionTypeDeserializerState::Content__(deserializer);
21352                        }
21353                        ElementHandlerOutput::Continue { .. } => {
21354                            fallback.get_or_insert(ExtensionTypeDeserializerState::Content__(
21355                                deserializer,
21356                            ));
21357                            *self.state__ = ExtensionTypeDeserializerState::Next__;
21358                        }
21359                    }
21360                    ret
21361                }
21362            })
21363        }
21364    }
21365    impl<'de> Deserializer<'de, super::ExtensionType> for Box<ExtensionTypeDeserializer> {
21366        fn init(
21367            helper: &mut DeserializeHelper,
21368            event: Event<'de>,
21369        ) -> DeserializerResult<'de, super::ExtensionType> {
21370            helper.init_deserializer_from_start_event(
21371                event,
21372                ExtensionTypeDeserializer::from_bytes_start,
21373            )
21374        }
21375        fn next(
21376            mut self,
21377            helper: &mut DeserializeHelper,
21378            event: Event<'de>,
21379        ) -> DeserializerResult<'de, super::ExtensionType> {
21380            use ExtensionTypeDeserializerState as S;
21381            let mut event = event;
21382            let mut fallback = None;
21383            let (event, allow_any) = loop {
21384                let state = replace(&mut *self.state__, S::Unknown__);
21385                event = match (state, event) {
21386                    (S::Unknown__, _) => unreachable!(),
21387                    (S::Content__(deserializer), event) => {
21388                        let output = deserializer.next(helper, event)?;
21389                        match self.handle_content(helper, output, &mut fallback)? {
21390                            ElementHandlerOutput::Break { event, allow_any } => {
21391                                break (event, allow_any)
21392                            }
21393                            ElementHandlerOutput::Continue { event, .. } => event,
21394                        }
21395                    }
21396                    (_, Event::End(_)) => {
21397                        return Ok(DeserializerOutput {
21398                            artifact: DeserializerArtifact::Data(self.finish(helper)?),
21399                            event: DeserializerEvent::None,
21400                            allow_any: false,
21401                        });
21402                    }
21403                    (state @ (S::Init__ | S::Next__), event) => {
21404                        fallback.get_or_insert(state);
21405                        let output =
21406                            <super::ExtensionTypeContent as WithDeserializer>::Deserializer::init(
21407                                helper, event,
21408                            )?;
21409                        match self.handle_content(helper, output, &mut fallback)? {
21410                            ElementHandlerOutput::Break { event, allow_any } => {
21411                                break (event, allow_any)
21412                            }
21413                            ElementHandlerOutput::Continue { event, .. } => event,
21414                        }
21415                    }
21416                }
21417            };
21418            let artifact = DeserializerArtifact::Deserializer(self);
21419            Ok(DeserializerOutput {
21420                artifact,
21421                event,
21422                allow_any,
21423            })
21424        }
21425        fn finish(mut self, helper: &mut DeserializeHelper) -> Result<super::ExtensionType, Error> {
21426            let state = replace(
21427                &mut *self.state__,
21428                ExtensionTypeDeserializerState::Unknown__,
21429            );
21430            self.finish_state(helper, state)?;
21431            Ok(super::ExtensionType {
21432                id: self.id,
21433                base: self.base,
21434                content: self.content,
21435            })
21436        }
21437    }
21438    #[derive(Debug)]
21439    pub struct ExtensionTypeContentDeserializer {
21440        state__: Box<ExtensionTypeContentDeserializerState>,
21441    }
21442    #[derive(Debug)]
21443    pub enum ExtensionTypeContentDeserializerState {
21444        Init__,
21445        Annotation(
21446            Option<super::Annotation>,
21447            Option<<super::Annotation as WithDeserializer>::Deserializer>,
21448        ),
21449        OpenContent(
21450            Option<super::OpenContent>,
21451            Option<<super::OpenContent as WithDeserializer>::Deserializer>,
21452        ),
21453        Group(
21454            Option<super::GroupType>,
21455            Option<<super::GroupType as WithDeserializer>::Deserializer>,
21456        ),
21457        All(
21458            Option<super::GroupType>,
21459            Option<<super::GroupType as WithDeserializer>::Deserializer>,
21460        ),
21461        Choice(
21462            Option<super::GroupType>,
21463            Option<<super::GroupType as WithDeserializer>::Deserializer>,
21464        ),
21465        Sequence(
21466            Option<super::GroupType>,
21467            Option<<super::GroupType as WithDeserializer>::Deserializer>,
21468        ),
21469        Attribute(
21470            Option<super::AttributeType>,
21471            Option<<super::AttributeType as WithDeserializer>::Deserializer>,
21472        ),
21473        AttributeGroup(
21474            Option<super::AttributeGroupType>,
21475            Option<<super::AttributeGroupType as WithDeserializer>::Deserializer>,
21476        ),
21477        AnyAttribute(
21478            Option<super::AnyAttribute>,
21479            Option<<super::AnyAttribute as WithDeserializer>::Deserializer>,
21480        ),
21481        Assert(
21482            Option<super::AssertionType>,
21483            Option<<super::AssertionType as WithDeserializer>::Deserializer>,
21484        ),
21485        Done__(super::ExtensionTypeContent),
21486        Unknown__,
21487    }
21488    impl ExtensionTypeContentDeserializer {
21489        fn find_suitable<'de>(
21490            &mut self,
21491            helper: &mut DeserializeHelper,
21492            event: Event<'de>,
21493            fallback: &mut Option<ExtensionTypeContentDeserializerState>,
21494        ) -> Result<ElementHandlerOutput<'de>, Error> {
21495            if let Event::Start(x) | Event::Empty(x) = &event {
21496                if matches!(
21497                    helper.resolve_local_name(x.name(), &super::NS_XS),
21498                    Some(b"annotation")
21499                ) {
21500                    let output =
21501                        <super::Annotation as WithDeserializer>::Deserializer::init(helper, event)?;
21502                    return self.handle_annotation(
21503                        helper,
21504                        Default::default(),
21505                        output,
21506                        &mut *fallback,
21507                    );
21508                }
21509                if matches!(
21510                    helper.resolve_local_name(x.name(), &super::NS_XS),
21511                    Some(b"openContent")
21512                ) {
21513                    let output = <super::OpenContent as WithDeserializer>::Deserializer::init(
21514                        helper, event,
21515                    )?;
21516                    return self.handle_open_content(
21517                        helper,
21518                        Default::default(),
21519                        output,
21520                        &mut *fallback,
21521                    );
21522                }
21523                if matches!(
21524                    helper.resolve_local_name(x.name(), &super::NS_XS),
21525                    Some(b"group")
21526                ) {
21527                    let output =
21528                        <super::GroupType as WithDeserializer>::Deserializer::init(helper, event)?;
21529                    return self.handle_group(helper, Default::default(), output, &mut *fallback);
21530                }
21531                if matches!(
21532                    helper.resolve_local_name(x.name(), &super::NS_XS),
21533                    Some(b"all")
21534                ) {
21535                    let output =
21536                        <super::GroupType as WithDeserializer>::Deserializer::init(helper, event)?;
21537                    return self.handle_all(helper, Default::default(), output, &mut *fallback);
21538                }
21539                if matches!(
21540                    helper.resolve_local_name(x.name(), &super::NS_XS),
21541                    Some(b"choice")
21542                ) {
21543                    let output =
21544                        <super::GroupType as WithDeserializer>::Deserializer::init(helper, event)?;
21545                    return self.handle_choice(helper, Default::default(), output, &mut *fallback);
21546                }
21547                if matches!(
21548                    helper.resolve_local_name(x.name(), &super::NS_XS),
21549                    Some(b"sequence")
21550                ) {
21551                    let output =
21552                        <super::GroupType as WithDeserializer>::Deserializer::init(helper, event)?;
21553                    return self.handle_sequence(
21554                        helper,
21555                        Default::default(),
21556                        output,
21557                        &mut *fallback,
21558                    );
21559                }
21560                if matches!(
21561                    helper.resolve_local_name(x.name(), &super::NS_XS),
21562                    Some(b"attribute")
21563                ) {
21564                    let output = <super::AttributeType as WithDeserializer>::Deserializer::init(
21565                        helper, event,
21566                    )?;
21567                    return self.handle_attribute(
21568                        helper,
21569                        Default::default(),
21570                        output,
21571                        &mut *fallback,
21572                    );
21573                }
21574                if matches!(
21575                    helper.resolve_local_name(x.name(), &super::NS_XS),
21576                    Some(b"attributeGroup")
21577                ) {
21578                    let output =
21579                        <super::AttributeGroupType as WithDeserializer>::Deserializer::init(
21580                            helper, event,
21581                        )?;
21582                    return self.handle_attribute_group(
21583                        helper,
21584                        Default::default(),
21585                        output,
21586                        &mut *fallback,
21587                    );
21588                }
21589                if matches!(
21590                    helper.resolve_local_name(x.name(), &super::NS_XS),
21591                    Some(b"anyAttribute")
21592                ) {
21593                    let output = <super::AnyAttribute as WithDeserializer>::Deserializer::init(
21594                        helper, event,
21595                    )?;
21596                    return self.handle_any_attribute(
21597                        helper,
21598                        Default::default(),
21599                        output,
21600                        &mut *fallback,
21601                    );
21602                }
21603                if matches!(
21604                    helper.resolve_local_name(x.name(), &super::NS_XS),
21605                    Some(b"assert")
21606                ) {
21607                    let output = <super::AssertionType as WithDeserializer>::Deserializer::init(
21608                        helper, event,
21609                    )?;
21610                    return self.handle_assert(helper, Default::default(), output, &mut *fallback);
21611                }
21612            }
21613            *self.state__ = fallback
21614                .take()
21615                .unwrap_or(ExtensionTypeContentDeserializerState::Init__);
21616            Ok(ElementHandlerOutput::return_to_parent(event, false))
21617        }
21618        fn finish_state(
21619            helper: &mut DeserializeHelper,
21620            state: ExtensionTypeContentDeserializerState,
21621        ) -> Result<super::ExtensionTypeContent, Error> {
21622            use ExtensionTypeContentDeserializerState as S;
21623            match state {
21624                S::Unknown__ => unreachable!(),
21625                S::Init__ => Err(ErrorKind::MissingContent.into()),
21626                S::Annotation(mut values, deserializer) => {
21627                    if let Some(deserializer) = deserializer {
21628                        let value = deserializer.finish(helper)?;
21629                        ExtensionTypeContentDeserializer::store_annotation(&mut values, value)?;
21630                    }
21631                    Ok(super::ExtensionTypeContent::Annotation(values.ok_or_else(
21632                        || ErrorKind::MissingElement("annotation".into()),
21633                    )?))
21634                }
21635                S::OpenContent(mut values, deserializer) => {
21636                    if let Some(deserializer) = deserializer {
21637                        let value = deserializer.finish(helper)?;
21638                        ExtensionTypeContentDeserializer::store_open_content(&mut values, value)?;
21639                    }
21640                    Ok(super::ExtensionTypeContent::OpenContent(
21641                        values.ok_or_else(|| ErrorKind::MissingElement("openContent".into()))?,
21642                    ))
21643                }
21644                S::Group(mut values, deserializer) => {
21645                    if let Some(deserializer) = deserializer {
21646                        let value = deserializer.finish(helper)?;
21647                        ExtensionTypeContentDeserializer::store_group(&mut values, value)?;
21648                    }
21649                    Ok(super::ExtensionTypeContent::Group(values.ok_or_else(
21650                        || ErrorKind::MissingElement("group".into()),
21651                    )?))
21652                }
21653                S::All(mut values, deserializer) => {
21654                    if let Some(deserializer) = deserializer {
21655                        let value = deserializer.finish(helper)?;
21656                        ExtensionTypeContentDeserializer::store_all(&mut values, value)?;
21657                    }
21658                    Ok(super::ExtensionTypeContent::All(
21659                        values.ok_or_else(|| ErrorKind::MissingElement("all".into()))?,
21660                    ))
21661                }
21662                S::Choice(mut values, deserializer) => {
21663                    if let Some(deserializer) = deserializer {
21664                        let value = deserializer.finish(helper)?;
21665                        ExtensionTypeContentDeserializer::store_choice(&mut values, value)?;
21666                    }
21667                    Ok(super::ExtensionTypeContent::Choice(values.ok_or_else(
21668                        || ErrorKind::MissingElement("choice".into()),
21669                    )?))
21670                }
21671                S::Sequence(mut values, deserializer) => {
21672                    if let Some(deserializer) = deserializer {
21673                        let value = deserializer.finish(helper)?;
21674                        ExtensionTypeContentDeserializer::store_sequence(&mut values, value)?;
21675                    }
21676                    Ok(super::ExtensionTypeContent::Sequence(values.ok_or_else(
21677                        || ErrorKind::MissingElement("sequence".into()),
21678                    )?))
21679                }
21680                S::Attribute(mut values, deserializer) => {
21681                    if let Some(deserializer) = deserializer {
21682                        let value = deserializer.finish(helper)?;
21683                        ExtensionTypeContentDeserializer::store_attribute(&mut values, value)?;
21684                    }
21685                    Ok(super::ExtensionTypeContent::Attribute(values.ok_or_else(
21686                        || ErrorKind::MissingElement("attribute".into()),
21687                    )?))
21688                }
21689                S::AttributeGroup(mut values, deserializer) => {
21690                    if let Some(deserializer) = deserializer {
21691                        let value = deserializer.finish(helper)?;
21692                        ExtensionTypeContentDeserializer::store_attribute_group(
21693                            &mut values,
21694                            value,
21695                        )?;
21696                    }
21697                    Ok(super::ExtensionTypeContent::AttributeGroup(
21698                        values.ok_or_else(|| ErrorKind::MissingElement("attributeGroup".into()))?,
21699                    ))
21700                }
21701                S::AnyAttribute(mut values, deserializer) => {
21702                    if let Some(deserializer) = deserializer {
21703                        let value = deserializer.finish(helper)?;
21704                        ExtensionTypeContentDeserializer::store_any_attribute(&mut values, value)?;
21705                    }
21706                    Ok(super::ExtensionTypeContent::AnyAttribute(
21707                        values.ok_or_else(|| ErrorKind::MissingElement("anyAttribute".into()))?,
21708                    ))
21709                }
21710                S::Assert(mut values, deserializer) => {
21711                    if let Some(deserializer) = deserializer {
21712                        let value = deserializer.finish(helper)?;
21713                        ExtensionTypeContentDeserializer::store_assert(&mut values, value)?;
21714                    }
21715                    Ok(super::ExtensionTypeContent::Assert(values.ok_or_else(
21716                        || ErrorKind::MissingElement("assert".into()),
21717                    )?))
21718                }
21719                S::Done__(data) => Ok(data),
21720            }
21721        }
21722        fn store_annotation(
21723            values: &mut Option<super::Annotation>,
21724            value: super::Annotation,
21725        ) -> Result<(), Error> {
21726            if values.is_some() {
21727                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
21728                    b"annotation",
21729                )))?;
21730            }
21731            *values = Some(value);
21732            Ok(())
21733        }
21734        fn store_open_content(
21735            values: &mut Option<super::OpenContent>,
21736            value: super::OpenContent,
21737        ) -> Result<(), Error> {
21738            if values.is_some() {
21739                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
21740                    b"openContent",
21741                )))?;
21742            }
21743            *values = Some(value);
21744            Ok(())
21745        }
21746        fn store_group(
21747            values: &mut Option<super::GroupType>,
21748            value: super::GroupType,
21749        ) -> Result<(), Error> {
21750            if values.is_some() {
21751                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
21752                    b"group",
21753                )))?;
21754            }
21755            *values = Some(value);
21756            Ok(())
21757        }
21758        fn store_all(
21759            values: &mut Option<super::GroupType>,
21760            value: super::GroupType,
21761        ) -> Result<(), Error> {
21762            if values.is_some() {
21763                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(b"all")))?;
21764            }
21765            *values = Some(value);
21766            Ok(())
21767        }
21768        fn store_choice(
21769            values: &mut Option<super::GroupType>,
21770            value: super::GroupType,
21771        ) -> Result<(), Error> {
21772            if values.is_some() {
21773                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
21774                    b"choice",
21775                )))?;
21776            }
21777            *values = Some(value);
21778            Ok(())
21779        }
21780        fn store_sequence(
21781            values: &mut Option<super::GroupType>,
21782            value: super::GroupType,
21783        ) -> Result<(), Error> {
21784            if values.is_some() {
21785                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
21786                    b"sequence",
21787                )))?;
21788            }
21789            *values = Some(value);
21790            Ok(())
21791        }
21792        fn store_attribute(
21793            values: &mut Option<super::AttributeType>,
21794            value: super::AttributeType,
21795        ) -> Result<(), Error> {
21796            if values.is_some() {
21797                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
21798                    b"attribute",
21799                )))?;
21800            }
21801            *values = Some(value);
21802            Ok(())
21803        }
21804        fn store_attribute_group(
21805            values: &mut Option<super::AttributeGroupType>,
21806            value: super::AttributeGroupType,
21807        ) -> Result<(), Error> {
21808            if values.is_some() {
21809                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
21810                    b"attributeGroup",
21811                )))?;
21812            }
21813            *values = Some(value);
21814            Ok(())
21815        }
21816        fn store_any_attribute(
21817            values: &mut Option<super::AnyAttribute>,
21818            value: super::AnyAttribute,
21819        ) -> Result<(), Error> {
21820            if values.is_some() {
21821                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
21822                    b"anyAttribute",
21823                )))?;
21824            }
21825            *values = Some(value);
21826            Ok(())
21827        }
21828        fn store_assert(
21829            values: &mut Option<super::AssertionType>,
21830            value: super::AssertionType,
21831        ) -> Result<(), Error> {
21832            if values.is_some() {
21833                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
21834                    b"assert",
21835                )))?;
21836            }
21837            *values = Some(value);
21838            Ok(())
21839        }
21840        fn handle_annotation<'de>(
21841            &mut self,
21842            helper: &mut DeserializeHelper,
21843            mut values: Option<super::Annotation>,
21844            output: DeserializerOutput<'de, super::Annotation>,
21845            fallback: &mut Option<ExtensionTypeContentDeserializerState>,
21846        ) -> Result<ElementHandlerOutput<'de>, Error> {
21847            let DeserializerOutput {
21848                artifact,
21849                event,
21850                allow_any,
21851            } = output;
21852            if artifact.is_none() {
21853                *self.state__ = match fallback.take() {
21854                    None if values.is_none() => {
21855                        *self.state__ = ExtensionTypeContentDeserializerState::Init__;
21856                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
21857                    }
21858                    None => ExtensionTypeContentDeserializerState::Annotation(values, None),
21859                    Some(ExtensionTypeContentDeserializerState::Annotation(
21860                        _,
21861                        Some(deserializer),
21862                    )) => ExtensionTypeContentDeserializerState::Annotation(
21863                        values,
21864                        Some(deserializer),
21865                    ),
21866                    _ => unreachable!(),
21867                };
21868                return Ok(ElementHandlerOutput::break_(event, allow_any));
21869            }
21870            match fallback.take() {
21871                None => (),
21872                Some(ExtensionTypeContentDeserializerState::Annotation(_, Some(deserializer))) => {
21873                    let data = deserializer.finish(helper)?;
21874                    ExtensionTypeContentDeserializer::store_annotation(&mut values, data)?;
21875                }
21876                Some(_) => unreachable!(),
21877            }
21878            Ok(match artifact {
21879                DeserializerArtifact::None => unreachable!(),
21880                DeserializerArtifact::Data(data) => {
21881                    ExtensionTypeContentDeserializer::store_annotation(&mut values, data)?;
21882                    let data = ExtensionTypeContentDeserializer::finish_state(
21883                        helper,
21884                        ExtensionTypeContentDeserializerState::Annotation(values, None),
21885                    )?;
21886                    *self.state__ = ExtensionTypeContentDeserializerState::Done__(data);
21887                    ElementHandlerOutput::Break { event, allow_any }
21888                }
21889                DeserializerArtifact::Deserializer(deserializer) => {
21890                    *self.state__ = ExtensionTypeContentDeserializerState::Annotation(
21891                        values,
21892                        Some(deserializer),
21893                    );
21894                    ElementHandlerOutput::from_event_end(event, allow_any)
21895                }
21896            })
21897        }
21898        fn handle_open_content<'de>(
21899            &mut self,
21900            helper: &mut DeserializeHelper,
21901            mut values: Option<super::OpenContent>,
21902            output: DeserializerOutput<'de, super::OpenContent>,
21903            fallback: &mut Option<ExtensionTypeContentDeserializerState>,
21904        ) -> Result<ElementHandlerOutput<'de>, Error> {
21905            let DeserializerOutput {
21906                artifact,
21907                event,
21908                allow_any,
21909            } = output;
21910            if artifact.is_none() {
21911                *self.state__ = match fallback.take() {
21912                    None if values.is_none() => {
21913                        *self.state__ = ExtensionTypeContentDeserializerState::Init__;
21914                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
21915                    }
21916                    None => ExtensionTypeContentDeserializerState::OpenContent(values, None),
21917                    Some(ExtensionTypeContentDeserializerState::OpenContent(
21918                        _,
21919                        Some(deserializer),
21920                    )) => ExtensionTypeContentDeserializerState::OpenContent(
21921                        values,
21922                        Some(deserializer),
21923                    ),
21924                    _ => unreachable!(),
21925                };
21926                return Ok(ElementHandlerOutput::break_(event, allow_any));
21927            }
21928            match fallback.take() {
21929                None => (),
21930                Some(ExtensionTypeContentDeserializerState::OpenContent(_, Some(deserializer))) => {
21931                    let data = deserializer.finish(helper)?;
21932                    ExtensionTypeContentDeserializer::store_open_content(&mut values, data)?;
21933                }
21934                Some(_) => unreachable!(),
21935            }
21936            Ok(match artifact {
21937                DeserializerArtifact::None => unreachable!(),
21938                DeserializerArtifact::Data(data) => {
21939                    ExtensionTypeContentDeserializer::store_open_content(&mut values, data)?;
21940                    let data = ExtensionTypeContentDeserializer::finish_state(
21941                        helper,
21942                        ExtensionTypeContentDeserializerState::OpenContent(values, None),
21943                    )?;
21944                    *self.state__ = ExtensionTypeContentDeserializerState::Done__(data);
21945                    ElementHandlerOutput::Break { event, allow_any }
21946                }
21947                DeserializerArtifact::Deserializer(deserializer) => {
21948                    *self.state__ = ExtensionTypeContentDeserializerState::OpenContent(
21949                        values,
21950                        Some(deserializer),
21951                    );
21952                    ElementHandlerOutput::from_event_end(event, allow_any)
21953                }
21954            })
21955        }
21956        fn handle_group<'de>(
21957            &mut self,
21958            helper: &mut DeserializeHelper,
21959            mut values: Option<super::GroupType>,
21960            output: DeserializerOutput<'de, super::GroupType>,
21961            fallback: &mut Option<ExtensionTypeContentDeserializerState>,
21962        ) -> Result<ElementHandlerOutput<'de>, Error> {
21963            let DeserializerOutput {
21964                artifact,
21965                event,
21966                allow_any,
21967            } = output;
21968            if artifact.is_none() {
21969                *self.state__ = match fallback.take() {
21970                    None if values.is_none() => {
21971                        *self.state__ = ExtensionTypeContentDeserializerState::Init__;
21972                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
21973                    }
21974                    None => ExtensionTypeContentDeserializerState::Group(values, None),
21975                    Some(ExtensionTypeContentDeserializerState::Group(_, Some(deserializer))) => {
21976                        ExtensionTypeContentDeserializerState::Group(values, Some(deserializer))
21977                    }
21978                    _ => unreachable!(),
21979                };
21980                return Ok(ElementHandlerOutput::break_(event, allow_any));
21981            }
21982            match fallback.take() {
21983                None => (),
21984                Some(ExtensionTypeContentDeserializerState::Group(_, Some(deserializer))) => {
21985                    let data = deserializer.finish(helper)?;
21986                    ExtensionTypeContentDeserializer::store_group(&mut values, data)?;
21987                }
21988                Some(_) => unreachable!(),
21989            }
21990            Ok(match artifact {
21991                DeserializerArtifact::None => unreachable!(),
21992                DeserializerArtifact::Data(data) => {
21993                    ExtensionTypeContentDeserializer::store_group(&mut values, data)?;
21994                    let data = ExtensionTypeContentDeserializer::finish_state(
21995                        helper,
21996                        ExtensionTypeContentDeserializerState::Group(values, None),
21997                    )?;
21998                    *self.state__ = ExtensionTypeContentDeserializerState::Done__(data);
21999                    ElementHandlerOutput::Break { event, allow_any }
22000                }
22001                DeserializerArtifact::Deserializer(deserializer) => {
22002                    *self.state__ =
22003                        ExtensionTypeContentDeserializerState::Group(values, Some(deserializer));
22004                    ElementHandlerOutput::from_event_end(event, allow_any)
22005                }
22006            })
22007        }
22008        fn handle_all<'de>(
22009            &mut self,
22010            helper: &mut DeserializeHelper,
22011            mut values: Option<super::GroupType>,
22012            output: DeserializerOutput<'de, super::GroupType>,
22013            fallback: &mut Option<ExtensionTypeContentDeserializerState>,
22014        ) -> Result<ElementHandlerOutput<'de>, Error> {
22015            let DeserializerOutput {
22016                artifact,
22017                event,
22018                allow_any,
22019            } = output;
22020            if artifact.is_none() {
22021                *self.state__ = match fallback.take() {
22022                    None if values.is_none() => {
22023                        *self.state__ = ExtensionTypeContentDeserializerState::Init__;
22024                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
22025                    }
22026                    None => ExtensionTypeContentDeserializerState::All(values, None),
22027                    Some(ExtensionTypeContentDeserializerState::All(_, Some(deserializer))) => {
22028                        ExtensionTypeContentDeserializerState::All(values, Some(deserializer))
22029                    }
22030                    _ => unreachable!(),
22031                };
22032                return Ok(ElementHandlerOutput::break_(event, allow_any));
22033            }
22034            match fallback.take() {
22035                None => (),
22036                Some(ExtensionTypeContentDeserializerState::All(_, Some(deserializer))) => {
22037                    let data = deserializer.finish(helper)?;
22038                    ExtensionTypeContentDeserializer::store_all(&mut values, data)?;
22039                }
22040                Some(_) => unreachable!(),
22041            }
22042            Ok(match artifact {
22043                DeserializerArtifact::None => unreachable!(),
22044                DeserializerArtifact::Data(data) => {
22045                    ExtensionTypeContentDeserializer::store_all(&mut values, data)?;
22046                    let data = ExtensionTypeContentDeserializer::finish_state(
22047                        helper,
22048                        ExtensionTypeContentDeserializerState::All(values, None),
22049                    )?;
22050                    *self.state__ = ExtensionTypeContentDeserializerState::Done__(data);
22051                    ElementHandlerOutput::Break { event, allow_any }
22052                }
22053                DeserializerArtifact::Deserializer(deserializer) => {
22054                    *self.state__ =
22055                        ExtensionTypeContentDeserializerState::All(values, Some(deserializer));
22056                    ElementHandlerOutput::from_event_end(event, allow_any)
22057                }
22058            })
22059        }
22060        fn handle_choice<'de>(
22061            &mut self,
22062            helper: &mut DeserializeHelper,
22063            mut values: Option<super::GroupType>,
22064            output: DeserializerOutput<'de, super::GroupType>,
22065            fallback: &mut Option<ExtensionTypeContentDeserializerState>,
22066        ) -> Result<ElementHandlerOutput<'de>, Error> {
22067            let DeserializerOutput {
22068                artifact,
22069                event,
22070                allow_any,
22071            } = output;
22072            if artifact.is_none() {
22073                *self.state__ = match fallback.take() {
22074                    None if values.is_none() => {
22075                        *self.state__ = ExtensionTypeContentDeserializerState::Init__;
22076                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
22077                    }
22078                    None => ExtensionTypeContentDeserializerState::Choice(values, None),
22079                    Some(ExtensionTypeContentDeserializerState::Choice(_, Some(deserializer))) => {
22080                        ExtensionTypeContentDeserializerState::Choice(values, Some(deserializer))
22081                    }
22082                    _ => unreachable!(),
22083                };
22084                return Ok(ElementHandlerOutput::break_(event, allow_any));
22085            }
22086            match fallback.take() {
22087                None => (),
22088                Some(ExtensionTypeContentDeserializerState::Choice(_, Some(deserializer))) => {
22089                    let data = deserializer.finish(helper)?;
22090                    ExtensionTypeContentDeserializer::store_choice(&mut values, data)?;
22091                }
22092                Some(_) => unreachable!(),
22093            }
22094            Ok(match artifact {
22095                DeserializerArtifact::None => unreachable!(),
22096                DeserializerArtifact::Data(data) => {
22097                    ExtensionTypeContentDeserializer::store_choice(&mut values, data)?;
22098                    let data = ExtensionTypeContentDeserializer::finish_state(
22099                        helper,
22100                        ExtensionTypeContentDeserializerState::Choice(values, None),
22101                    )?;
22102                    *self.state__ = ExtensionTypeContentDeserializerState::Done__(data);
22103                    ElementHandlerOutput::Break { event, allow_any }
22104                }
22105                DeserializerArtifact::Deserializer(deserializer) => {
22106                    *self.state__ =
22107                        ExtensionTypeContentDeserializerState::Choice(values, Some(deserializer));
22108                    ElementHandlerOutput::from_event_end(event, allow_any)
22109                }
22110            })
22111        }
22112        fn handle_sequence<'de>(
22113            &mut self,
22114            helper: &mut DeserializeHelper,
22115            mut values: Option<super::GroupType>,
22116            output: DeserializerOutput<'de, super::GroupType>,
22117            fallback: &mut Option<ExtensionTypeContentDeserializerState>,
22118        ) -> Result<ElementHandlerOutput<'de>, Error> {
22119            let DeserializerOutput {
22120                artifact,
22121                event,
22122                allow_any,
22123            } = output;
22124            if artifact.is_none() {
22125                *self.state__ = match fallback.take() {
22126                    None if values.is_none() => {
22127                        *self.state__ = ExtensionTypeContentDeserializerState::Init__;
22128                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
22129                    }
22130                    None => ExtensionTypeContentDeserializerState::Sequence(values, None),
22131                    Some(ExtensionTypeContentDeserializerState::Sequence(
22132                        _,
22133                        Some(deserializer),
22134                    )) => {
22135                        ExtensionTypeContentDeserializerState::Sequence(values, Some(deserializer))
22136                    }
22137                    _ => unreachable!(),
22138                };
22139                return Ok(ElementHandlerOutput::break_(event, allow_any));
22140            }
22141            match fallback.take() {
22142                None => (),
22143                Some(ExtensionTypeContentDeserializerState::Sequence(_, Some(deserializer))) => {
22144                    let data = deserializer.finish(helper)?;
22145                    ExtensionTypeContentDeserializer::store_sequence(&mut values, data)?;
22146                }
22147                Some(_) => unreachable!(),
22148            }
22149            Ok(match artifact {
22150                DeserializerArtifact::None => unreachable!(),
22151                DeserializerArtifact::Data(data) => {
22152                    ExtensionTypeContentDeserializer::store_sequence(&mut values, data)?;
22153                    let data = ExtensionTypeContentDeserializer::finish_state(
22154                        helper,
22155                        ExtensionTypeContentDeserializerState::Sequence(values, None),
22156                    )?;
22157                    *self.state__ = ExtensionTypeContentDeserializerState::Done__(data);
22158                    ElementHandlerOutput::Break { event, allow_any }
22159                }
22160                DeserializerArtifact::Deserializer(deserializer) => {
22161                    *self.state__ =
22162                        ExtensionTypeContentDeserializerState::Sequence(values, Some(deserializer));
22163                    ElementHandlerOutput::from_event_end(event, allow_any)
22164                }
22165            })
22166        }
22167        fn handle_attribute<'de>(
22168            &mut self,
22169            helper: &mut DeserializeHelper,
22170            mut values: Option<super::AttributeType>,
22171            output: DeserializerOutput<'de, super::AttributeType>,
22172            fallback: &mut Option<ExtensionTypeContentDeserializerState>,
22173        ) -> Result<ElementHandlerOutput<'de>, Error> {
22174            let DeserializerOutput {
22175                artifact,
22176                event,
22177                allow_any,
22178            } = output;
22179            if artifact.is_none() {
22180                *self.state__ = match fallback.take() {
22181                    None if values.is_none() => {
22182                        *self.state__ = ExtensionTypeContentDeserializerState::Init__;
22183                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
22184                    }
22185                    None => ExtensionTypeContentDeserializerState::Attribute(values, None),
22186                    Some(ExtensionTypeContentDeserializerState::Attribute(
22187                        _,
22188                        Some(deserializer),
22189                    )) => {
22190                        ExtensionTypeContentDeserializerState::Attribute(values, Some(deserializer))
22191                    }
22192                    _ => unreachable!(),
22193                };
22194                return Ok(ElementHandlerOutput::break_(event, allow_any));
22195            }
22196            match fallback.take() {
22197                None => (),
22198                Some(ExtensionTypeContentDeserializerState::Attribute(_, Some(deserializer))) => {
22199                    let data = deserializer.finish(helper)?;
22200                    ExtensionTypeContentDeserializer::store_attribute(&mut values, data)?;
22201                }
22202                Some(_) => unreachable!(),
22203            }
22204            Ok(match artifact {
22205                DeserializerArtifact::None => unreachable!(),
22206                DeserializerArtifact::Data(data) => {
22207                    ExtensionTypeContentDeserializer::store_attribute(&mut values, data)?;
22208                    let data = ExtensionTypeContentDeserializer::finish_state(
22209                        helper,
22210                        ExtensionTypeContentDeserializerState::Attribute(values, None),
22211                    )?;
22212                    *self.state__ = ExtensionTypeContentDeserializerState::Done__(data);
22213                    ElementHandlerOutput::Break { event, allow_any }
22214                }
22215                DeserializerArtifact::Deserializer(deserializer) => {
22216                    *self.state__ = ExtensionTypeContentDeserializerState::Attribute(
22217                        values,
22218                        Some(deserializer),
22219                    );
22220                    ElementHandlerOutput::from_event_end(event, allow_any)
22221                }
22222            })
22223        }
22224        fn handle_attribute_group<'de>(
22225            &mut self,
22226            helper: &mut DeserializeHelper,
22227            mut values: Option<super::AttributeGroupType>,
22228            output: DeserializerOutput<'de, super::AttributeGroupType>,
22229            fallback: &mut Option<ExtensionTypeContentDeserializerState>,
22230        ) -> Result<ElementHandlerOutput<'de>, Error> {
22231            let DeserializerOutput {
22232                artifact,
22233                event,
22234                allow_any,
22235            } = output;
22236            if artifact.is_none() {
22237                *self.state__ = match fallback.take() {
22238                    None if values.is_none() => {
22239                        *self.state__ = ExtensionTypeContentDeserializerState::Init__;
22240                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
22241                    }
22242                    None => ExtensionTypeContentDeserializerState::AttributeGroup(values, None),
22243                    Some(ExtensionTypeContentDeserializerState::AttributeGroup(
22244                        _,
22245                        Some(deserializer),
22246                    )) => ExtensionTypeContentDeserializerState::AttributeGroup(
22247                        values,
22248                        Some(deserializer),
22249                    ),
22250                    _ => unreachable!(),
22251                };
22252                return Ok(ElementHandlerOutput::break_(event, allow_any));
22253            }
22254            match fallback.take() {
22255                None => (),
22256                Some(ExtensionTypeContentDeserializerState::AttributeGroup(
22257                    _,
22258                    Some(deserializer),
22259                )) => {
22260                    let data = deserializer.finish(helper)?;
22261                    ExtensionTypeContentDeserializer::store_attribute_group(&mut values, data)?;
22262                }
22263                Some(_) => unreachable!(),
22264            }
22265            Ok(match artifact {
22266                DeserializerArtifact::None => unreachable!(),
22267                DeserializerArtifact::Data(data) => {
22268                    ExtensionTypeContentDeserializer::store_attribute_group(&mut values, data)?;
22269                    let data = ExtensionTypeContentDeserializer::finish_state(
22270                        helper,
22271                        ExtensionTypeContentDeserializerState::AttributeGroup(values, None),
22272                    )?;
22273                    *self.state__ = ExtensionTypeContentDeserializerState::Done__(data);
22274                    ElementHandlerOutput::Break { event, allow_any }
22275                }
22276                DeserializerArtifact::Deserializer(deserializer) => {
22277                    *self.state__ = ExtensionTypeContentDeserializerState::AttributeGroup(
22278                        values,
22279                        Some(deserializer),
22280                    );
22281                    ElementHandlerOutput::from_event_end(event, allow_any)
22282                }
22283            })
22284        }
22285        fn handle_any_attribute<'de>(
22286            &mut self,
22287            helper: &mut DeserializeHelper,
22288            mut values: Option<super::AnyAttribute>,
22289            output: DeserializerOutput<'de, super::AnyAttribute>,
22290            fallback: &mut Option<ExtensionTypeContentDeserializerState>,
22291        ) -> Result<ElementHandlerOutput<'de>, Error> {
22292            let DeserializerOutput {
22293                artifact,
22294                event,
22295                allow_any,
22296            } = output;
22297            if artifact.is_none() {
22298                *self.state__ = match fallback.take() {
22299                    None if values.is_none() => {
22300                        *self.state__ = ExtensionTypeContentDeserializerState::Init__;
22301                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
22302                    }
22303                    None => ExtensionTypeContentDeserializerState::AnyAttribute(values, None),
22304                    Some(ExtensionTypeContentDeserializerState::AnyAttribute(
22305                        _,
22306                        Some(deserializer),
22307                    )) => ExtensionTypeContentDeserializerState::AnyAttribute(
22308                        values,
22309                        Some(deserializer),
22310                    ),
22311                    _ => unreachable!(),
22312                };
22313                return Ok(ElementHandlerOutput::break_(event, allow_any));
22314            }
22315            match fallback.take() {
22316                None => (),
22317                Some(ExtensionTypeContentDeserializerState::AnyAttribute(
22318                    _,
22319                    Some(deserializer),
22320                )) => {
22321                    let data = deserializer.finish(helper)?;
22322                    ExtensionTypeContentDeserializer::store_any_attribute(&mut values, data)?;
22323                }
22324                Some(_) => unreachable!(),
22325            }
22326            Ok(match artifact {
22327                DeserializerArtifact::None => unreachable!(),
22328                DeserializerArtifact::Data(data) => {
22329                    ExtensionTypeContentDeserializer::store_any_attribute(&mut values, data)?;
22330                    let data = ExtensionTypeContentDeserializer::finish_state(
22331                        helper,
22332                        ExtensionTypeContentDeserializerState::AnyAttribute(values, None),
22333                    )?;
22334                    *self.state__ = ExtensionTypeContentDeserializerState::Done__(data);
22335                    ElementHandlerOutput::Break { event, allow_any }
22336                }
22337                DeserializerArtifact::Deserializer(deserializer) => {
22338                    *self.state__ = ExtensionTypeContentDeserializerState::AnyAttribute(
22339                        values,
22340                        Some(deserializer),
22341                    );
22342                    ElementHandlerOutput::from_event_end(event, allow_any)
22343                }
22344            })
22345        }
22346        fn handle_assert<'de>(
22347            &mut self,
22348            helper: &mut DeserializeHelper,
22349            mut values: Option<super::AssertionType>,
22350            output: DeserializerOutput<'de, super::AssertionType>,
22351            fallback: &mut Option<ExtensionTypeContentDeserializerState>,
22352        ) -> Result<ElementHandlerOutput<'de>, Error> {
22353            let DeserializerOutput {
22354                artifact,
22355                event,
22356                allow_any,
22357            } = output;
22358            if artifact.is_none() {
22359                *self.state__ = match fallback.take() {
22360                    None if values.is_none() => {
22361                        *self.state__ = ExtensionTypeContentDeserializerState::Init__;
22362                        return Ok(ElementHandlerOutput::from_event(event, allow_any));
22363                    }
22364                    None => ExtensionTypeContentDeserializerState::Assert(values, None),
22365                    Some(ExtensionTypeContentDeserializerState::Assert(_, Some(deserializer))) => {
22366                        ExtensionTypeContentDeserializerState::Assert(values, Some(deserializer))
22367                    }
22368                    _ => unreachable!(),
22369                };
22370                return Ok(ElementHandlerOutput::break_(event, allow_any));
22371            }
22372            match fallback.take() {
22373                None => (),
22374                Some(ExtensionTypeContentDeserializerState::Assert(_, Some(deserializer))) => {
22375                    let data = deserializer.finish(helper)?;
22376                    ExtensionTypeContentDeserializer::store_assert(&mut values, data)?;
22377                }
22378                Some(_) => unreachable!(),
22379            }
22380            Ok(match artifact {
22381                DeserializerArtifact::None => unreachable!(),
22382                DeserializerArtifact::Data(data) => {
22383                    ExtensionTypeContentDeserializer::store_assert(&mut values, data)?;
22384                    let data = ExtensionTypeContentDeserializer::finish_state(
22385                        helper,
22386                        ExtensionTypeContentDeserializerState::Assert(values, None),
22387                    )?;
22388                    *self.state__ = ExtensionTypeContentDeserializerState::Done__(data);
22389                    ElementHandlerOutput::Break { event, allow_any }
22390                }
22391                DeserializerArtifact::Deserializer(deserializer) => {
22392                    *self.state__ =
22393                        ExtensionTypeContentDeserializerState::Assert(values, Some(deserializer));
22394                    ElementHandlerOutput::from_event_end(event, allow_any)
22395                }
22396            })
22397        }
22398    }
22399    impl<'de> Deserializer<'de, super::ExtensionTypeContent> for Box<ExtensionTypeContentDeserializer> {
22400        fn init(
22401            helper: &mut DeserializeHelper,
22402            event: Event<'de>,
22403        ) -> DeserializerResult<'de, super::ExtensionTypeContent> {
22404            let deserializer = Box::new(ExtensionTypeContentDeserializer {
22405                state__: Box::new(ExtensionTypeContentDeserializerState::Init__),
22406            });
22407            let mut output = deserializer.next(helper, event)?;
22408            output.artifact = match output.artifact {
22409                DeserializerArtifact::Deserializer(x)
22410                    if matches!(&*x.state__, ExtensionTypeContentDeserializerState::Init__) =>
22411                {
22412                    DeserializerArtifact::None
22413                }
22414                artifact => artifact,
22415            };
22416            Ok(output)
22417        }
22418        fn next(
22419            mut self,
22420            helper: &mut DeserializeHelper,
22421            event: Event<'de>,
22422        ) -> DeserializerResult<'de, super::ExtensionTypeContent> {
22423            use ExtensionTypeContentDeserializerState as S;
22424            let mut event = event;
22425            let mut fallback = None;
22426            let (event, allow_any) = loop {
22427                let state = replace(&mut *self.state__, S::Unknown__);
22428                event = match (state, event) {
22429                    (S::Unknown__, _) => unreachable!(),
22430                    (S::Annotation(values, Some(deserializer)), event) => {
22431                        let output = deserializer.next(helper, event)?;
22432                        match self.handle_annotation(helper, values, output, &mut fallback)? {
22433                            ElementHandlerOutput::Break { event, allow_any } => {
22434                                break (event, allow_any)
22435                            }
22436                            ElementHandlerOutput::Continue { event, .. } => event,
22437                        }
22438                    }
22439                    (S::OpenContent(values, Some(deserializer)), event) => {
22440                        let output = deserializer.next(helper, event)?;
22441                        match self.handle_open_content(helper, values, output, &mut fallback)? {
22442                            ElementHandlerOutput::Break { event, allow_any } => {
22443                                break (event, allow_any)
22444                            }
22445                            ElementHandlerOutput::Continue { event, .. } => event,
22446                        }
22447                    }
22448                    (S::Group(values, Some(deserializer)), event) => {
22449                        let output = deserializer.next(helper, event)?;
22450                        match self.handle_group(helper, values, output, &mut fallback)? {
22451                            ElementHandlerOutput::Break { event, allow_any } => {
22452                                break (event, allow_any)
22453                            }
22454                            ElementHandlerOutput::Continue { event, .. } => event,
22455                        }
22456                    }
22457                    (S::All(values, Some(deserializer)), event) => {
22458                        let output = deserializer.next(helper, event)?;
22459                        match self.handle_all(helper, values, output, &mut fallback)? {
22460                            ElementHandlerOutput::Break { event, allow_any } => {
22461                                break (event, allow_any)
22462                            }
22463                            ElementHandlerOutput::Continue { event, .. } => event,
22464                        }
22465                    }
22466                    (S::Choice(values, Some(deserializer)), event) => {
22467                        let output = deserializer.next(helper, event)?;
22468                        match self.handle_choice(helper, values, output, &mut fallback)? {
22469                            ElementHandlerOutput::Break { event, allow_any } => {
22470                                break (event, allow_any)
22471                            }
22472                            ElementHandlerOutput::Continue { event, .. } => event,
22473                        }
22474                    }
22475                    (S::Sequence(values, Some(deserializer)), event) => {
22476                        let output = deserializer.next(helper, event)?;
22477                        match self.handle_sequence(helper, values, output, &mut fallback)? {
22478                            ElementHandlerOutput::Break { event, allow_any } => {
22479                                break (event, allow_any)
22480                            }
22481                            ElementHandlerOutput::Continue { event, .. } => event,
22482                        }
22483                    }
22484                    (S::Attribute(values, Some(deserializer)), event) => {
22485                        let output = deserializer.next(helper, event)?;
22486                        match self.handle_attribute(helper, values, output, &mut fallback)? {
22487                            ElementHandlerOutput::Break { event, allow_any } => {
22488                                break (event, allow_any)
22489                            }
22490                            ElementHandlerOutput::Continue { event, .. } => event,
22491                        }
22492                    }
22493                    (S::AttributeGroup(values, Some(deserializer)), event) => {
22494                        let output = deserializer.next(helper, event)?;
22495                        match self.handle_attribute_group(helper, values, output, &mut fallback)? {
22496                            ElementHandlerOutput::Break { event, allow_any } => {
22497                                break (event, allow_any)
22498                            }
22499                            ElementHandlerOutput::Continue { event, .. } => event,
22500                        }
22501                    }
22502                    (S::AnyAttribute(values, Some(deserializer)), event) => {
22503                        let output = deserializer.next(helper, event)?;
22504                        match self.handle_any_attribute(helper, values, output, &mut fallback)? {
22505                            ElementHandlerOutput::Break { event, allow_any } => {
22506                                break (event, allow_any)
22507                            }
22508                            ElementHandlerOutput::Continue { event, .. } => event,
22509                        }
22510                    }
22511                    (S::Assert(values, Some(deserializer)), event) => {
22512                        let output = deserializer.next(helper, event)?;
22513                        match self.handle_assert(helper, values, output, &mut fallback)? {
22514                            ElementHandlerOutput::Break { event, allow_any } => {
22515                                break (event, allow_any)
22516                            }
22517                            ElementHandlerOutput::Continue { event, .. } => event,
22518                        }
22519                    }
22520                    (state, event @ Event::End(_)) => {
22521                        return Ok(DeserializerOutput {
22522                            artifact: DeserializerArtifact::Data(
22523                                ExtensionTypeContentDeserializer::finish_state(helper, state)?,
22524                            ),
22525                            event: DeserializerEvent::Continue(event),
22526                            allow_any: false,
22527                        });
22528                    }
22529                    (S::Init__, event) => match self.find_suitable(helper, event, &mut fallback)? {
22530                        ElementHandlerOutput::Break { event, allow_any } => {
22531                            break (event, allow_any)
22532                        }
22533                        ElementHandlerOutput::Continue { event, .. } => event,
22534                    },
22535                    (S::Annotation(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
22536                        let output = helper.init_start_tag_deserializer(
22537                            event,
22538                            Some(&super::NS_XS),
22539                            b"annotation",
22540                            false,
22541                        )?;
22542                        match self.handle_annotation(helper, values, output, &mut fallback)? {
22543                            ElementHandlerOutput::Break { event, allow_any } => {
22544                                break (event, allow_any)
22545                            }
22546                            ElementHandlerOutput::Continue { event, .. } => event,
22547                        }
22548                    }
22549                    (S::OpenContent(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
22550                        let output = helper.init_start_tag_deserializer(
22551                            event,
22552                            Some(&super::NS_XS),
22553                            b"openContent",
22554                            false,
22555                        )?;
22556                        match self.handle_open_content(helper, values, output, &mut fallback)? {
22557                            ElementHandlerOutput::Break { event, allow_any } => {
22558                                break (event, allow_any)
22559                            }
22560                            ElementHandlerOutput::Continue { event, .. } => event,
22561                        }
22562                    }
22563                    (S::Group(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
22564                        let output = helper.init_start_tag_deserializer(
22565                            event,
22566                            Some(&super::NS_XS),
22567                            b"group",
22568                            true,
22569                        )?;
22570                        match self.handle_group(helper, values, output, &mut fallback)? {
22571                            ElementHandlerOutput::Break { event, allow_any } => {
22572                                break (event, allow_any)
22573                            }
22574                            ElementHandlerOutput::Continue { event, .. } => event,
22575                        }
22576                    }
22577                    (S::All(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
22578                        let output = helper.init_start_tag_deserializer(
22579                            event,
22580                            Some(&super::NS_XS),
22581                            b"all",
22582                            true,
22583                        )?;
22584                        match self.handle_all(helper, values, output, &mut fallback)? {
22585                            ElementHandlerOutput::Break { event, allow_any } => {
22586                                break (event, allow_any)
22587                            }
22588                            ElementHandlerOutput::Continue { event, .. } => event,
22589                        }
22590                    }
22591                    (S::Choice(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
22592                        let output = helper.init_start_tag_deserializer(
22593                            event,
22594                            Some(&super::NS_XS),
22595                            b"choice",
22596                            true,
22597                        )?;
22598                        match self.handle_choice(helper, values, output, &mut fallback)? {
22599                            ElementHandlerOutput::Break { event, allow_any } => {
22600                                break (event, allow_any)
22601                            }
22602                            ElementHandlerOutput::Continue { event, .. } => event,
22603                        }
22604                    }
22605                    (S::Sequence(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
22606                        let output = helper.init_start_tag_deserializer(
22607                            event,
22608                            Some(&super::NS_XS),
22609                            b"sequence",
22610                            true,
22611                        )?;
22612                        match self.handle_sequence(helper, values, output, &mut fallback)? {
22613                            ElementHandlerOutput::Break { event, allow_any } => {
22614                                break (event, allow_any)
22615                            }
22616                            ElementHandlerOutput::Continue { event, .. } => event,
22617                        }
22618                    }
22619                    (S::Attribute(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
22620                        let output = helper.init_start_tag_deserializer(
22621                            event,
22622                            Some(&super::NS_XS),
22623                            b"attribute",
22624                            false,
22625                        )?;
22626                        match self.handle_attribute(helper, values, output, &mut fallback)? {
22627                            ElementHandlerOutput::Break { event, allow_any } => {
22628                                break (event, allow_any)
22629                            }
22630                            ElementHandlerOutput::Continue { event, .. } => event,
22631                        }
22632                    }
22633                    (
22634                        S::AttributeGroup(values, None),
22635                        event @ (Event::Start(_) | Event::Empty(_)),
22636                    ) => {
22637                        let output = helper.init_start_tag_deserializer(
22638                            event,
22639                            Some(&super::NS_XS),
22640                            b"attributeGroup",
22641                            false,
22642                        )?;
22643                        match self.handle_attribute_group(helper, values, output, &mut fallback)? {
22644                            ElementHandlerOutput::Break { event, allow_any } => {
22645                                break (event, allow_any)
22646                            }
22647                            ElementHandlerOutput::Continue { event, .. } => event,
22648                        }
22649                    }
22650                    (
22651                        S::AnyAttribute(values, None),
22652                        event @ (Event::Start(_) | Event::Empty(_)),
22653                    ) => {
22654                        let output = helper.init_start_tag_deserializer(
22655                            event,
22656                            Some(&super::NS_XS),
22657                            b"anyAttribute",
22658                            false,
22659                        )?;
22660                        match self.handle_any_attribute(helper, values, output, &mut fallback)? {
22661                            ElementHandlerOutput::Break { event, allow_any } => {
22662                                break (event, allow_any)
22663                            }
22664                            ElementHandlerOutput::Continue { event, .. } => event,
22665                        }
22666                    }
22667                    (S::Assert(values, None), event @ (Event::Start(_) | Event::Empty(_))) => {
22668                        let output = helper.init_start_tag_deserializer(
22669                            event,
22670                            Some(&super::NS_XS),
22671                            b"assert",
22672                            false,
22673                        )?;
22674                        match self.handle_assert(helper, values, output, &mut fallback)? {
22675                            ElementHandlerOutput::Break { event, allow_any } => {
22676                                break (event, allow_any)
22677                            }
22678                            ElementHandlerOutput::Continue { event, .. } => event,
22679                        }
22680                    }
22681                    (s @ S::Done__(_), event) => {
22682                        *self.state__ = s;
22683                        break (DeserializerEvent::Continue(event), false);
22684                    }
22685                    (state, event) => {
22686                        *self.state__ = state;
22687                        break (DeserializerEvent::Break(event), false);
22688                    }
22689                }
22690            };
22691            let artifact = if matches!(&*self.state__, S::Done__(_)) {
22692                DeserializerArtifact::Data(self.finish(helper)?)
22693            } else {
22694                DeserializerArtifact::Deserializer(self)
22695            };
22696            Ok(DeserializerOutput {
22697                artifact,
22698                event,
22699                allow_any,
22700            })
22701        }
22702        fn finish(
22703            self,
22704            helper: &mut DeserializeHelper,
22705        ) -> Result<super::ExtensionTypeContent, Error> {
22706            ExtensionTypeContentDeserializer::finish_state(helper, *self.state__)
22707        }
22708    }
22709    #[derive(Debug)]
22710    pub struct FieldDeserializer {
22711        id: Option<String>,
22712        xpath: String,
22713        xpath_default_namespace: Option<super::XpathDefaultNamespaceType>,
22714        annotation: Option<super::Annotation>,
22715        state__: Box<FieldDeserializerState>,
22716    }
22717    #[derive(Debug)]
22718    enum FieldDeserializerState {
22719        Init__,
22720        Annotation(Option<<super::Annotation as WithDeserializer>::Deserializer>),
22721        Done__,
22722        Unknown__,
22723    }
22724    impl FieldDeserializer {
22725        fn from_bytes_start(
22726            helper: &mut DeserializeHelper,
22727            bytes_start: &BytesStart<'_>,
22728        ) -> Result<Box<Self>, Error> {
22729            let mut id: Option<String> = None;
22730            let mut xpath: Option<String> = None;
22731            let mut xpath_default_namespace: Option<super::XpathDefaultNamespaceType> = None;
22732            for attrib in helper.filter_xmlns_attributes(bytes_start) {
22733                let attrib = attrib?;
22734                if matches!(
22735                    helper.resolve_local_name(attrib.key, &super::NS_XS),
22736                    Some(b"id")
22737                ) {
22738                    helper.read_attrib(&mut id, b"id", &attrib.value)?;
22739                } else if matches!(
22740                    helper.resolve_local_name(attrib.key, &super::NS_XS),
22741                    Some(b"xpath")
22742                ) {
22743                    helper.read_attrib(&mut xpath, b"xpath", &attrib.value)?;
22744                } else if matches!(
22745                    helper.resolve_local_name(attrib.key, &super::NS_XS),
22746                    Some(b"xpathDefaultNamespace")
22747                ) {
22748                    helper.read_attrib(
22749                        &mut xpath_default_namespace,
22750                        b"xpathDefaultNamespace",
22751                        &attrib.value,
22752                    )?;
22753                }
22754            }
22755            Ok(Box::new(Self {
22756                id: id,
22757                xpath: xpath.ok_or_else(|| ErrorKind::MissingAttribute("xpath".into()))?,
22758                xpath_default_namespace: xpath_default_namespace,
22759                annotation: None,
22760                state__: Box::new(FieldDeserializerState::Init__),
22761            }))
22762        }
22763        fn finish_state(
22764            &mut self,
22765            helper: &mut DeserializeHelper,
22766            state: FieldDeserializerState,
22767        ) -> Result<(), Error> {
22768            use FieldDeserializerState as S;
22769            match state {
22770                S::Annotation(Some(deserializer)) => {
22771                    self.store_annotation(deserializer.finish(helper)?)?
22772                }
22773                _ => (),
22774            }
22775            Ok(())
22776        }
22777        fn store_annotation(&mut self, value: super::Annotation) -> Result<(), Error> {
22778            if self.annotation.is_some() {
22779                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
22780                    b"annotation",
22781                )))?;
22782            }
22783            self.annotation = Some(value);
22784            Ok(())
22785        }
22786        fn handle_annotation<'de>(
22787            &mut self,
22788            helper: &mut DeserializeHelper,
22789            output: DeserializerOutput<'de, super::Annotation>,
22790            fallback: &mut Option<FieldDeserializerState>,
22791        ) -> Result<ElementHandlerOutput<'de>, Error> {
22792            let DeserializerOutput {
22793                artifact,
22794                event,
22795                allow_any,
22796            } = output;
22797            if artifact.is_none() {
22798                fallback.get_or_insert(FieldDeserializerState::Annotation(None));
22799                *self.state__ = FieldDeserializerState::Done__;
22800                return Ok(ElementHandlerOutput::from_event(event, allow_any));
22801            }
22802            if let Some(fallback) = fallback.take() {
22803                self.finish_state(helper, fallback)?;
22804            }
22805            Ok(match artifact {
22806                DeserializerArtifact::None => unreachable!(),
22807                DeserializerArtifact::Data(data) => {
22808                    self.store_annotation(data)?;
22809                    *self.state__ = FieldDeserializerState::Done__;
22810                    ElementHandlerOutput::from_event(event, allow_any)
22811                }
22812                DeserializerArtifact::Deserializer(deserializer) => {
22813                    let ret = ElementHandlerOutput::from_event(event, allow_any);
22814                    match &ret {
22815                        ElementHandlerOutput::Continue { .. } => {
22816                            fallback.get_or_insert(FieldDeserializerState::Annotation(Some(
22817                                deserializer,
22818                            )));
22819                            *self.state__ = FieldDeserializerState::Done__;
22820                        }
22821                        ElementHandlerOutput::Break { .. } => {
22822                            *self.state__ = FieldDeserializerState::Annotation(Some(deserializer));
22823                        }
22824                    }
22825                    ret
22826                }
22827            })
22828        }
22829    }
22830    impl<'de> Deserializer<'de, super::Field> for Box<FieldDeserializer> {
22831        fn init(
22832            helper: &mut DeserializeHelper,
22833            event: Event<'de>,
22834        ) -> DeserializerResult<'de, super::Field> {
22835            helper.init_deserializer_from_start_event(event, FieldDeserializer::from_bytes_start)
22836        }
22837        fn next(
22838            mut self,
22839            helper: &mut DeserializeHelper,
22840            event: Event<'de>,
22841        ) -> DeserializerResult<'de, super::Field> {
22842            use FieldDeserializerState as S;
22843            let mut event = event;
22844            let mut fallback = None;
22845            let mut allow_any_element = false;
22846            let (event, allow_any) = loop {
22847                let state = replace(&mut *self.state__, S::Unknown__);
22848                event = match (state, event) {
22849                    (S::Unknown__, _) => unreachable!(),
22850                    (S::Annotation(Some(deserializer)), event) => {
22851                        let output = deserializer.next(helper, event)?;
22852                        match self.handle_annotation(helper, output, &mut fallback)? {
22853                            ElementHandlerOutput::Continue { event, allow_any } => {
22854                                allow_any_element = allow_any_element || allow_any;
22855                                event
22856                            }
22857                            ElementHandlerOutput::Break { event, allow_any } => {
22858                                break (event, allow_any)
22859                            }
22860                        }
22861                    }
22862                    (_, Event::End(_)) => {
22863                        if let Some(fallback) = fallback.take() {
22864                            self.finish_state(helper, fallback)?;
22865                        }
22866                        return Ok(DeserializerOutput {
22867                            artifact: DeserializerArtifact::Data(self.finish(helper)?),
22868                            event: DeserializerEvent::None,
22869                            allow_any: false,
22870                        });
22871                    }
22872                    (S::Init__, event) => {
22873                        fallback.get_or_insert(S::Init__);
22874                        *self.state__ = FieldDeserializerState::Annotation(None);
22875                        event
22876                    }
22877                    (S::Annotation(None), event @ (Event::Start(_) | Event::Empty(_))) => {
22878                        let output = helper.init_start_tag_deserializer(
22879                            event,
22880                            Some(&super::NS_XS),
22881                            b"annotation",
22882                            false,
22883                        )?;
22884                        match self.handle_annotation(helper, output, &mut fallback)? {
22885                            ElementHandlerOutput::Continue { event, allow_any } => {
22886                                allow_any_element = allow_any_element || allow_any;
22887                                event
22888                            }
22889                            ElementHandlerOutput::Break { event, allow_any } => {
22890                                break (event, allow_any)
22891                            }
22892                        }
22893                    }
22894                    (S::Done__, event) => {
22895                        fallback.get_or_insert(S::Done__);
22896                        break (DeserializerEvent::Continue(event), allow_any_element);
22897                    }
22898                    (state, event) => {
22899                        *self.state__ = state;
22900                        break (DeserializerEvent::Break(event), false);
22901                    }
22902                }
22903            };
22904            if let Some(fallback) = fallback {
22905                *self.state__ = fallback;
22906            }
22907            Ok(DeserializerOutput {
22908                artifact: DeserializerArtifact::Deserializer(self),
22909                event,
22910                allow_any,
22911            })
22912        }
22913        fn finish(mut self, helper: &mut DeserializeHelper) -> Result<super::Field, Error> {
22914            let state = replace(&mut *self.state__, FieldDeserializerState::Unknown__);
22915            self.finish_state(helper, state)?;
22916            Ok(super::Field {
22917                id: self.id,
22918                xpath: self.xpath,
22919                xpath_default_namespace: self.xpath_default_namespace,
22920                annotation: self.annotation,
22921            })
22922        }
22923    }
22924    #[derive(Debug)]
22925    pub struct FacetTypeDeserializer {
22926        id: Option<String>,
22927        value: String,
22928        fixed: bool,
22929        annotation: Option<super::Annotation>,
22930        state__: Box<FacetTypeDeserializerState>,
22931    }
22932    #[derive(Debug)]
22933    enum FacetTypeDeserializerState {
22934        Init__,
22935        Annotation(Option<<super::Annotation as WithDeserializer>::Deserializer>),
22936        Done__,
22937        Unknown__,
22938    }
22939    impl FacetTypeDeserializer {
22940        fn from_bytes_start(
22941            helper: &mut DeserializeHelper,
22942            bytes_start: &BytesStart<'_>,
22943        ) -> Result<Box<Self>, Error> {
22944            let mut id: Option<String> = None;
22945            let mut value: Option<String> = None;
22946            let mut fixed: Option<bool> = None;
22947            for attrib in helper.filter_xmlns_attributes(bytes_start) {
22948                let attrib = attrib?;
22949                if matches!(
22950                    helper.resolve_local_name(attrib.key, &super::NS_XS),
22951                    Some(b"id")
22952                ) {
22953                    helper.read_attrib(&mut id, b"id", &attrib.value)?;
22954                } else if matches!(
22955                    helper.resolve_local_name(attrib.key, &super::NS_XS),
22956                    Some(b"value")
22957                ) {
22958                    helper.read_attrib(&mut value, b"value", &attrib.value)?;
22959                } else if matches!(
22960                    helper.resolve_local_name(attrib.key, &super::NS_XS),
22961                    Some(b"fixed")
22962                ) {
22963                    helper.read_attrib(&mut fixed, b"fixed", &attrib.value)?;
22964                }
22965            }
22966            Ok(Box::new(Self {
22967                id: id,
22968                value: value.ok_or_else(|| ErrorKind::MissingAttribute("value".into()))?,
22969                fixed: fixed.unwrap_or_else(super::FacetType::default_fixed),
22970                annotation: None,
22971                state__: Box::new(FacetTypeDeserializerState::Init__),
22972            }))
22973        }
22974        fn finish_state(
22975            &mut self,
22976            helper: &mut DeserializeHelper,
22977            state: FacetTypeDeserializerState,
22978        ) -> Result<(), Error> {
22979            use FacetTypeDeserializerState as S;
22980            match state {
22981                S::Annotation(Some(deserializer)) => {
22982                    self.store_annotation(deserializer.finish(helper)?)?
22983                }
22984                _ => (),
22985            }
22986            Ok(())
22987        }
22988        fn store_annotation(&mut self, value: super::Annotation) -> Result<(), Error> {
22989            if self.annotation.is_some() {
22990                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
22991                    b"annotation",
22992                )))?;
22993            }
22994            self.annotation = Some(value);
22995            Ok(())
22996        }
22997        fn handle_annotation<'de>(
22998            &mut self,
22999            helper: &mut DeserializeHelper,
23000            output: DeserializerOutput<'de, super::Annotation>,
23001            fallback: &mut Option<FacetTypeDeserializerState>,
23002        ) -> Result<ElementHandlerOutput<'de>, Error> {
23003            let DeserializerOutput {
23004                artifact,
23005                event,
23006                allow_any,
23007            } = output;
23008            if artifact.is_none() {
23009                fallback.get_or_insert(FacetTypeDeserializerState::Annotation(None));
23010                *self.state__ = FacetTypeDeserializerState::Done__;
23011                return Ok(ElementHandlerOutput::from_event(event, allow_any));
23012            }
23013            if let Some(fallback) = fallback.take() {
23014                self.finish_state(helper, fallback)?;
23015            }
23016            Ok(match artifact {
23017                DeserializerArtifact::None => unreachable!(),
23018                DeserializerArtifact::Data(data) => {
23019                    self.store_annotation(data)?;
23020                    *self.state__ = FacetTypeDeserializerState::Done__;
23021                    ElementHandlerOutput::from_event(event, allow_any)
23022                }
23023                DeserializerArtifact::Deserializer(deserializer) => {
23024                    let ret = ElementHandlerOutput::from_event(event, allow_any);
23025                    match &ret {
23026                        ElementHandlerOutput::Continue { .. } => {
23027                            fallback.get_or_insert(FacetTypeDeserializerState::Annotation(Some(
23028                                deserializer,
23029                            )));
23030                            *self.state__ = FacetTypeDeserializerState::Done__;
23031                        }
23032                        ElementHandlerOutput::Break { .. } => {
23033                            *self.state__ =
23034                                FacetTypeDeserializerState::Annotation(Some(deserializer));
23035                        }
23036                    }
23037                    ret
23038                }
23039            })
23040        }
23041    }
23042    impl<'de> Deserializer<'de, super::FacetType> for Box<FacetTypeDeserializer> {
23043        fn init(
23044            helper: &mut DeserializeHelper,
23045            event: Event<'de>,
23046        ) -> DeserializerResult<'de, super::FacetType> {
23047            helper
23048                .init_deserializer_from_start_event(event, FacetTypeDeserializer::from_bytes_start)
23049        }
23050        fn next(
23051            mut self,
23052            helper: &mut DeserializeHelper,
23053            event: Event<'de>,
23054        ) -> DeserializerResult<'de, super::FacetType> {
23055            use FacetTypeDeserializerState as S;
23056            let mut event = event;
23057            let mut fallback = None;
23058            let mut allow_any_element = false;
23059            let (event, allow_any) = loop {
23060                let state = replace(&mut *self.state__, S::Unknown__);
23061                event = match (state, event) {
23062                    (S::Unknown__, _) => unreachable!(),
23063                    (S::Annotation(Some(deserializer)), event) => {
23064                        let output = deserializer.next(helper, event)?;
23065                        match self.handle_annotation(helper, output, &mut fallback)? {
23066                            ElementHandlerOutput::Continue { event, allow_any } => {
23067                                allow_any_element = allow_any_element || allow_any;
23068                                event
23069                            }
23070                            ElementHandlerOutput::Break { event, allow_any } => {
23071                                break (event, allow_any)
23072                            }
23073                        }
23074                    }
23075                    (_, Event::End(_)) => {
23076                        if let Some(fallback) = fallback.take() {
23077                            self.finish_state(helper, fallback)?;
23078                        }
23079                        return Ok(DeserializerOutput {
23080                            artifact: DeserializerArtifact::Data(self.finish(helper)?),
23081                            event: DeserializerEvent::None,
23082                            allow_any: false,
23083                        });
23084                    }
23085                    (S::Init__, event) => {
23086                        fallback.get_or_insert(S::Init__);
23087                        *self.state__ = FacetTypeDeserializerState::Annotation(None);
23088                        event
23089                    }
23090                    (S::Annotation(None), event @ (Event::Start(_) | Event::Empty(_))) => {
23091                        let output = helper.init_start_tag_deserializer(
23092                            event,
23093                            Some(&super::NS_XS),
23094                            b"annotation",
23095                            false,
23096                        )?;
23097                        match self.handle_annotation(helper, output, &mut fallback)? {
23098                            ElementHandlerOutput::Continue { event, allow_any } => {
23099                                allow_any_element = allow_any_element || allow_any;
23100                                event
23101                            }
23102                            ElementHandlerOutput::Break { event, allow_any } => {
23103                                break (event, allow_any)
23104                            }
23105                        }
23106                    }
23107                    (S::Done__, event) => {
23108                        fallback.get_or_insert(S::Done__);
23109                        break (DeserializerEvent::Continue(event), allow_any_element);
23110                    }
23111                    (state, event) => {
23112                        *self.state__ = state;
23113                        break (DeserializerEvent::Break(event), false);
23114                    }
23115                }
23116            };
23117            if let Some(fallback) = fallback {
23118                *self.state__ = fallback;
23119            }
23120            Ok(DeserializerOutput {
23121                artifact: DeserializerArtifact::Deserializer(self),
23122                event,
23123                allow_any,
23124            })
23125        }
23126        fn finish(mut self, helper: &mut DeserializeHelper) -> Result<super::FacetType, Error> {
23127            let state = replace(&mut *self.state__, FacetTypeDeserializerState::Unknown__);
23128            self.finish_state(helper, state)?;
23129            Ok(super::FacetType {
23130                id: self.id,
23131                value: self.value,
23132                fixed: self.fixed,
23133                annotation: self.annotation,
23134            })
23135        }
23136    }
23137}