xsd_parser/schema/
xs_generated.rs

1use crate::{
2    quick_xml::{
3        DeserializeBytes, DeserializeReader, Error, ErrorKind, RawByteStr, WithDeserializer,
4    },
5    schema::Namespace,
6};
7pub const NS_XS: Namespace = Namespace::new_const(b"http://www.w3.org/2001/XMLSchema");
8pub const NS_XML: Namespace = Namespace::new_const(b"http://www.w3.org/XML/1998/namespace");
9#[derive(Debug, Clone, Eq, PartialEq)]
10pub struct Schema {
11    pub target_namespace: Option<String>,
12    pub version: Option<String>,
13    pub final_default: FullDerivationSetType,
14    pub block_default: BlockSetType,
15    pub attribute_form_default: FormChoiceType,
16    pub element_form_default: FormChoiceType,
17    pub default_attributes: Option<QName>,
18    pub xpath_default_namespace: XpathDefaultNamespaceType,
19    pub id: Option<String>,
20    pub lang: Option<String>,
21    pub content: Vec<SchemaContent>,
22}
23#[derive(Debug, Clone, Eq, PartialEq)]
24pub enum SchemaContent {
25    Include(Include),
26    Import(Import),
27    Redefine(Redefine),
28    Override(Override),
29    Annotation(Annotation),
30    DefaultOpenContent(DefaultOpenContent),
31    SimpleType(SimpleBaseType),
32    ComplexType(ComplexBaseType),
33    Group(GroupType),
34    AttributeGroup(AttributeGroupType),
35    Element(ElementType),
36    Attribute(AttributeType),
37    Notation(Notation),
38}
39impl Schema {
40    #[must_use]
41    pub fn default_final_default() -> FullDerivationSetType {
42        FullDerivationSetType::TypeDerivationControlList(TypeDerivationControlList(Vec::new()))
43    }
44    #[must_use]
45    pub fn default_block_default() -> BlockSetType {
46        BlockSetType::BlockSetItemList(BlockSetItemList(Vec::new()))
47    }
48    #[must_use]
49    pub fn default_attribute_form_default() -> FormChoiceType {
50        FormChoiceType::Unqualified
51    }
52    #[must_use]
53    pub fn default_element_form_default() -> FormChoiceType {
54        FormChoiceType::Unqualified
55    }
56    #[must_use]
57    pub fn default_xpath_default_namespace() -> XpathDefaultNamespaceType {
58        XpathDefaultNamespaceType::String(String::from("##local"))
59    }
60}
61impl WithDeserializer for Schema {
62    type Deserializer = Box<quick_xml_deserialize::SchemaDeserializer>;
63}
64impl WithDeserializer for SchemaContent {
65    type Deserializer = Box<quick_xml_deserialize::SchemaContentDeserializer>;
66}
67#[derive(Debug, Clone, Eq, PartialEq)]
68pub enum FullDerivationSetType {
69    All,
70    TypeDerivationControlList(TypeDerivationControlList),
71}
72impl DeserializeBytes for FullDerivationSetType {
73    fn deserialize_bytes<R>(reader: &R, bytes: &[u8]) -> Result<Self, Error>
74    where
75        R: DeserializeReader,
76    {
77        match bytes {
78            b"#all" => Ok(Self::All),
79            x => Ok(Self::TypeDerivationControlList(
80                TypeDerivationControlList::deserialize_bytes(reader, x)?,
81            )),
82        }
83    }
84}
85#[derive(Debug, Clone, Eq, PartialEq, Default)]
86pub struct TypeDerivationControlList(pub Vec<TypeDerivationControlType>);
87impl DeserializeBytes for TypeDerivationControlList {
88    fn deserialize_bytes<R>(reader: &R, bytes: &[u8]) -> Result<Self, Error>
89    where
90        R: DeserializeReader,
91    {
92        Ok(Self(
93            bytes
94                .split(|b| *b == b' ' || *b == b'|' || *b == b',' || *b == b';')
95                .map(|bytes| TypeDerivationControlType::deserialize_bytes(reader, bytes))
96                .collect::<Result<Vec<_>, _>>()?,
97        ))
98    }
99}
100#[derive(Debug, Clone, Eq, PartialEq)]
101pub enum BlockSetType {
102    All,
103    BlockSetItemList(BlockSetItemList),
104}
105impl DeserializeBytes for BlockSetType {
106    fn deserialize_bytes<R>(reader: &R, bytes: &[u8]) -> Result<Self, Error>
107    where
108        R: DeserializeReader,
109    {
110        match bytes {
111            b"#all" => Ok(Self::All),
112            x => Ok(Self::BlockSetItemList(BlockSetItemList::deserialize_bytes(
113                reader, x,
114            )?)),
115        }
116    }
117}
118#[derive(Debug, Clone, Eq, PartialEq, Default)]
119pub struct BlockSetItemList(pub Vec<BlockSetItemType>);
120impl DeserializeBytes for BlockSetItemList {
121    fn deserialize_bytes<R>(reader: &R, bytes: &[u8]) -> Result<Self, Error>
122    where
123        R: DeserializeReader,
124    {
125        Ok(Self(
126            bytes
127                .split(|b| *b == b' ' || *b == b'|' || *b == b',' || *b == b';')
128                .map(|bytes| BlockSetItemType::deserialize_bytes(reader, bytes))
129                .collect::<Result<Vec<_>, _>>()?,
130        ))
131    }
132}
133#[derive(Debug, Clone, Eq, PartialEq)]
134pub enum FormChoiceType {
135    Qualified,
136    Unqualified,
137}
138impl DeserializeBytes for FormChoiceType {
139    fn deserialize_bytes<R>(reader: &R, bytes: &[u8]) -> Result<Self, Error>
140    where
141        R: DeserializeReader,
142    {
143        match bytes {
144            b"qualified" => Ok(Self::Qualified),
145            b"unqualified" => Ok(Self::Unqualified),
146            x => Err(reader.map_error(ErrorKind::UnknownOrInvalidValue(RawByteStr::from_slice(x)))),
147        }
148    }
149}
150#[derive(Debug, Clone, Eq, PartialEq)]
151pub enum XpathDefaultNamespaceType {
152    String(String),
153    DefaultNamespace,
154    TargetNamespace,
155    Local,
156}
157impl DeserializeBytes for XpathDefaultNamespaceType {
158    fn deserialize_bytes<R>(reader: &R, bytes: &[u8]) -> Result<Self, Error>
159    where
160        R: DeserializeReader,
161    {
162        match bytes {
163            b"##defaultNamespace" => Ok(Self::DefaultNamespace),
164            b"##targetNamespace" => Ok(Self::TargetNamespace),
165            b"##local" => Ok(Self::Local),
166            x => Ok(Self::String(String::deserialize_bytes(reader, x)?)),
167        }
168    }
169}
170#[derive(Debug, Clone, Eq, PartialEq)]
171pub struct Include {
172    pub id: Option<String>,
173    pub schema_location: String,
174    pub annotation: Option<Annotation>,
175}
176impl WithDeserializer for Include {
177    type Deserializer = Box<quick_xml_deserialize::IncludeDeserializer>;
178}
179#[derive(Debug, Clone, Eq, PartialEq)]
180pub struct Import {
181    pub id: Option<String>,
182    pub namespace: Option<String>,
183    pub schema_location: Option<String>,
184    pub annotation: Option<Annotation>,
185}
186impl WithDeserializer for Import {
187    type Deserializer = Box<quick_xml_deserialize::ImportDeserializer>;
188}
189#[derive(Debug, Clone, Eq, PartialEq)]
190pub struct Redefine {
191    pub schema_location: String,
192    pub id: Option<String>,
193    pub content: Vec<RedefineContent>,
194}
195#[derive(Debug, Clone, Eq, PartialEq)]
196pub enum RedefineContent {
197    Annotation(Annotation),
198    SimpleType(SimpleBaseType),
199    ComplexType(ComplexBaseType),
200    Group(GroupType),
201    AttributeGroup(AttributeGroupType),
202}
203impl WithDeserializer for Redefine {
204    type Deserializer = Box<quick_xml_deserialize::RedefineDeserializer>;
205}
206impl WithDeserializer for RedefineContent {
207    type Deserializer = Box<quick_xml_deserialize::RedefineContentDeserializer>;
208}
209#[derive(Debug, Clone, Eq, PartialEq)]
210pub struct Override {
211    pub schema_location: String,
212    pub id: Option<String>,
213    pub content: Vec<OverrideContent>,
214}
215#[derive(Debug, Clone, Eq, PartialEq)]
216pub enum OverrideContent {
217    Annotation(Annotation),
218    SimpleType(SimpleBaseType),
219    ComplexType(ComplexBaseType),
220    Group(GroupType),
221    AttributeGroup(AttributeGroupType),
222    Element(ElementType),
223    Attribute(AttributeType),
224    Notation(Notation),
225}
226impl WithDeserializer for Override {
227    type Deserializer = Box<quick_xml_deserialize::OverrideDeserializer>;
228}
229impl WithDeserializer for OverrideContent {
230    type Deserializer = Box<quick_xml_deserialize::OverrideContentDeserializer>;
231}
232#[derive(Debug, Clone, Eq, PartialEq)]
233pub struct Annotation {
234    pub id: Option<String>,
235    pub content: Vec<AnnotationContent>,
236}
237#[derive(Debug, Clone, Eq, PartialEq)]
238pub enum AnnotationContent {
239    Appinfo(Appinfo),
240    Documentation(Documentation),
241}
242impl WithDeserializer for Annotation {
243    type Deserializer = Box<quick_xml_deserialize::AnnotationDeserializer>;
244}
245impl WithDeserializer for AnnotationContent {
246    type Deserializer = Box<quick_xml_deserialize::AnnotationContentDeserializer>;
247}
248#[derive(Debug, Clone, Eq, PartialEq)]
249pub struct DefaultOpenContent {
250    pub id: Option<String>,
251    pub applies_to_empty: bool,
252    pub mode: DefaultOpenContentModeType,
253    pub annotation: Option<Annotation>,
254    pub any: WildcardType,
255}
256impl DefaultOpenContent {
257    #[must_use]
258    pub fn default_applies_to_empty() -> bool {
259        false
260    }
261    #[must_use]
262    pub fn default_mode() -> DefaultOpenContentModeType {
263        DefaultOpenContentModeType::Interleave
264    }
265}
266impl WithDeserializer for DefaultOpenContent {
267    type Deserializer = Box<quick_xml_deserialize::DefaultOpenContentDeserializer>;
268}
269#[derive(Debug, Clone, Eq, PartialEq)]
270pub struct SimpleBaseType {
271    pub id: Option<String>,
272    pub final_: Option<SimpleDerivationSetType>,
273    pub name: Option<String>,
274    pub content: Vec<SimpleBaseTypeContent>,
275}
276#[derive(Debug, Clone, Eq, PartialEq)]
277pub enum SimpleBaseTypeContent {
278    Annotation(Annotation),
279    Restriction(Restriction),
280    List(List),
281    Union(Union),
282}
283impl WithDeserializer for SimpleBaseType {
284    type Deserializer = Box<quick_xml_deserialize::SimpleBaseTypeDeserializer>;
285}
286impl WithDeserializer for SimpleBaseTypeContent {
287    type Deserializer = Box<quick_xml_deserialize::SimpleBaseTypeContentDeserializer>;
288}
289#[derive(Debug, Clone, Eq, PartialEq)]
290pub struct ComplexBaseType {
291    pub id: Option<String>,
292    pub name: Option<String>,
293    pub mixed: Option<bool>,
294    pub abstract_: bool,
295    pub final_: Option<DerivationSetType>,
296    pub block: Option<DerivationSetType>,
297    pub default_attributes_apply: bool,
298    pub content: Vec<ComplexBaseTypeContent>,
299}
300#[derive(Debug, Clone, Eq, PartialEq)]
301pub enum ComplexBaseTypeContent {
302    Annotation(Annotation),
303    SimpleContent(SimpleContent),
304    ComplexContent(ComplexContent),
305    OpenContent(OpenContent),
306    Group(GroupType),
307    All(GroupType),
308    Choice(GroupType),
309    Sequence(GroupType),
310    Attribute(AttributeType),
311    AttributeGroup(AttributeGroupType),
312    AnyAttribute(AnyAttribute),
313    Assert(AssertionType),
314}
315impl ComplexBaseType {
316    #[must_use]
317    pub fn default_abstract_() -> bool {
318        false
319    }
320    #[must_use]
321    pub fn default_default_attributes_apply() -> bool {
322        true
323    }
324}
325impl WithDeserializer for ComplexBaseType {
326    type Deserializer = Box<quick_xml_deserialize::ComplexBaseTypeDeserializer>;
327}
328impl WithDeserializer for ComplexBaseTypeContent {
329    type Deserializer = Box<quick_xml_deserialize::ComplexBaseTypeContentDeserializer>;
330}
331#[derive(Debug, Clone, Eq, PartialEq)]
332pub struct GroupType {
333    pub id: Option<String>,
334    pub name: Option<String>,
335    pub ref_: Option<QName>,
336    pub min_occurs: usize,
337    pub max_occurs: MaxOccurs,
338    pub content: Vec<GroupTypeContent>,
339}
340#[derive(Debug, Clone, Eq, PartialEq)]
341pub enum GroupTypeContent {
342    Annotation(Annotation),
343    Element(ElementType),
344    Group(GroupType),
345    All(GroupType),
346    Choice(GroupType),
347    Sequence(GroupType),
348    Any(Any),
349}
350impl GroupType {
351    #[must_use]
352    pub fn default_min_occurs() -> usize {
353        1usize
354    }
355    #[must_use]
356    pub fn default_max_occurs() -> MaxOccurs {
357        MaxOccurs::Bounded(1usize)
358    }
359}
360impl WithDeserializer for GroupType {
361    type Deserializer = Box<quick_xml_deserialize::GroupTypeDeserializer>;
362}
363impl WithDeserializer for GroupTypeContent {
364    type Deserializer = Box<quick_xml_deserialize::GroupTypeContentDeserializer>;
365}
366#[derive(Debug, Clone, Eq, PartialEq)]
367pub struct AttributeGroupType {
368    pub id: Option<String>,
369    pub name: Option<String>,
370    pub ref_: Option<QName>,
371    pub content: Vec<AttributeGroupTypeContent>,
372}
373#[derive(Debug, Clone, Eq, PartialEq)]
374pub enum AttributeGroupTypeContent {
375    Annotation(Annotation),
376    Attribute(AttributeType),
377    AttributeGroup(AttributeGroupType),
378    AnyAttribute(AnyAttribute),
379}
380impl WithDeserializer for AttributeGroupType {
381    type Deserializer = Box<quick_xml_deserialize::AttributeGroupTypeDeserializer>;
382}
383impl WithDeserializer for AttributeGroupTypeContent {
384    type Deserializer = Box<quick_xml_deserialize::AttributeGroupTypeContentDeserializer>;
385}
386#[derive(Debug, Clone, Eq, PartialEq)]
387pub struct ElementType {
388    pub id: Option<String>,
389    pub name: Option<String>,
390    pub ref_: Option<QName>,
391    pub type_: Option<QName>,
392    pub substitution_group: Option<QNameList>,
393    pub min_occurs: usize,
394    pub max_occurs: MaxOccurs,
395    pub default: Option<String>,
396    pub fixed: Option<String>,
397    pub nillable: Option<bool>,
398    pub abstract_: bool,
399    pub final_: Option<DerivationSetType>,
400    pub block: Option<BlockSetType>,
401    pub form: Option<FormChoiceType>,
402    pub target_namespace: Option<String>,
403    pub content: Vec<ElementTypeContent>,
404}
405#[derive(Debug, Clone, Eq, PartialEq)]
406pub enum ElementTypeContent {
407    Annotation(Annotation),
408    SimpleType(SimpleBaseType),
409    ComplexType(ComplexBaseType),
410    Alternative(AltType),
411    Unique(KeybaseType),
412    Key(KeybaseType),
413    Keyref(Keyref),
414}
415impl ElementType {
416    #[must_use]
417    pub fn default_min_occurs() -> usize {
418        1usize
419    }
420    #[must_use]
421    pub fn default_max_occurs() -> MaxOccurs {
422        MaxOccurs::Bounded(1usize)
423    }
424    #[must_use]
425    pub fn default_abstract_() -> bool {
426        false
427    }
428}
429impl WithDeserializer for ElementType {
430    type Deserializer = Box<quick_xml_deserialize::ElementTypeDeserializer>;
431}
432impl WithDeserializer for ElementTypeContent {
433    type Deserializer = Box<quick_xml_deserialize::ElementTypeContentDeserializer>;
434}
435#[derive(Debug, Clone, Eq, PartialEq)]
436pub struct AttributeType {
437    pub id: Option<String>,
438    pub name: Option<String>,
439    pub ref_: Option<QName>,
440    pub type_: Option<QName>,
441    pub use_: AttributeUseType,
442    pub default: Option<String>,
443    pub fixed: Option<String>,
444    pub form: Option<FormChoiceType>,
445    pub target_namespace: Option<String>,
446    pub inheritable: Option<bool>,
447    pub annotation: Option<Annotation>,
448    pub simple_type: Option<SimpleBaseType>,
449}
450impl AttributeType {
451    #[must_use]
452    pub fn default_use_() -> AttributeUseType {
453        AttributeUseType::Optional
454    }
455}
456impl WithDeserializer for AttributeType {
457    type Deserializer = Box<quick_xml_deserialize::AttributeTypeDeserializer>;
458}
459#[derive(Debug, Clone, Eq, PartialEq)]
460pub struct Notation {
461    pub id: Option<String>,
462    pub name: String,
463    pub public: Option<String>,
464    pub system: Option<String>,
465    pub annotation: Option<Annotation>,
466}
467impl WithDeserializer for Notation {
468    type Deserializer = Box<quick_xml_deserialize::NotationDeserializer>;
469}
470#[derive(Debug, Clone, Eq, PartialEq)]
471pub enum TypeDerivationControlType {
472    Extension,
473    Restriction,
474    List,
475    Union,
476}
477impl DeserializeBytes for TypeDerivationControlType {
478    fn deserialize_bytes<R>(reader: &R, bytes: &[u8]) -> Result<Self, Error>
479    where
480        R: DeserializeReader,
481    {
482        match bytes {
483            b"extension" => Ok(Self::Extension),
484            b"restriction" => Ok(Self::Restriction),
485            b"list" => Ok(Self::List),
486            b"union" => Ok(Self::Union),
487            x => Err(reader.map_error(ErrorKind::UnknownOrInvalidValue(RawByteStr::from_slice(x)))),
488        }
489    }
490}
491#[derive(Debug, Clone, Eq, PartialEq)]
492pub enum BlockSetItemType {
493    Extension,
494    Restriction,
495    Substitution,
496}
497impl DeserializeBytes for BlockSetItemType {
498    fn deserialize_bytes<R>(reader: &R, bytes: &[u8]) -> Result<Self, Error>
499    where
500        R: DeserializeReader,
501    {
502        match bytes {
503            b"extension" => Ok(Self::Extension),
504            b"restriction" => Ok(Self::Restriction),
505            b"substitution" => Ok(Self::Substitution),
506            x => Err(reader.map_error(ErrorKind::UnknownOrInvalidValue(RawByteStr::from_slice(x)))),
507        }
508    }
509}
510#[derive(Debug, Clone, Eq, PartialEq)]
511pub struct Appinfo {
512    pub source: Option<String>,
513}
514impl WithDeserializer for Appinfo {
515    type Deserializer = Box<quick_xml_deserialize::AppinfoDeserializer>;
516}
517#[derive(Debug, Clone, Eq, PartialEq)]
518pub struct Documentation {
519    pub source: Option<String>,
520    pub lang: Option<String>,
521}
522impl WithDeserializer for Documentation {
523    type Deserializer = Box<quick_xml_deserialize::DocumentationDeserializer>;
524}
525#[derive(Debug, Clone, Eq, PartialEq)]
526pub enum DefaultOpenContentModeType {
527    Interleave,
528    Suffix,
529}
530impl DeserializeBytes for DefaultOpenContentModeType {
531    fn deserialize_bytes<R>(reader: &R, bytes: &[u8]) -> Result<Self, Error>
532    where
533        R: DeserializeReader,
534    {
535        match bytes {
536            b"interleave" => Ok(Self::Interleave),
537            b"suffix" => Ok(Self::Suffix),
538            x => Err(reader.map_error(ErrorKind::UnknownOrInvalidValue(RawByteStr::from_slice(x)))),
539        }
540    }
541}
542#[derive(Debug, Clone, Eq, PartialEq)]
543pub struct WildcardType {
544    pub id: Option<String>,
545    pub namespace: Option<NamespaceListType>,
546    pub not_namespace: Option<BasicNamespaceListType>,
547    pub process_contents: ProcessContentsType,
548    pub annotation: Option<Annotation>,
549}
550impl WildcardType {
551    #[must_use]
552    pub fn default_process_contents() -> ProcessContentsType {
553        ProcessContentsType::Strict
554    }
555}
556impl WithDeserializer for WildcardType {
557    type Deserializer = Box<quick_xml_deserialize::WildcardTypeDeserializer>;
558}
559#[derive(Debug, Clone, Eq, PartialEq)]
560pub enum SimpleDerivationSetType {
561    All,
562    SimpleDerivationSetItemList(SimpleDerivationSetItemList),
563}
564impl DeserializeBytes for SimpleDerivationSetType {
565    fn deserialize_bytes<R>(reader: &R, bytes: &[u8]) -> Result<Self, Error>
566    where
567        R: DeserializeReader,
568    {
569        match bytes {
570            b"#all" => Ok(Self::All),
571            x => Ok(Self::SimpleDerivationSetItemList(
572                SimpleDerivationSetItemList::deserialize_bytes(reader, x)?,
573            )),
574        }
575    }
576}
577#[derive(Debug, Clone, Eq, PartialEq)]
578pub struct Restriction {
579    pub id: Option<String>,
580    pub base: Option<QName>,
581    pub content: Vec<RestrictionContent>,
582}
583#[derive(Debug, Clone, Eq, PartialEq)]
584pub enum RestrictionContent {
585    Annotation(Annotation),
586    SimpleType(SimpleBaseType),
587    Facet(Facet),
588}
589impl WithDeserializer for Restriction {
590    type Deserializer = Box<quick_xml_deserialize::RestrictionDeserializer>;
591}
592impl WithDeserializer for RestrictionContent {
593    type Deserializer = Box<quick_xml_deserialize::RestrictionContentDeserializer>;
594}
595#[derive(Debug, Clone, Eq, PartialEq)]
596pub struct List {
597    pub id: Option<String>,
598    pub item_type: Option<QName>,
599    pub annotation: Option<Annotation>,
600    pub simple_type: Option<SimpleBaseType>,
601}
602impl WithDeserializer for List {
603    type Deserializer = Box<quick_xml_deserialize::ListDeserializer>;
604}
605#[derive(Debug, Clone, Eq, PartialEq)]
606pub struct Union {
607    pub id: Option<String>,
608    pub member_types: Option<QNameList>,
609    pub annotation: Option<Annotation>,
610    pub simple_type: Vec<SimpleBaseType>,
611}
612impl WithDeserializer for Union {
613    type Deserializer = Box<quick_xml_deserialize::UnionDeserializer>;
614}
615#[derive(Debug, Clone, Eq, PartialEq)]
616pub enum DerivationSetType {
617    All,
618    ReducedDerivationControlList(ReducedDerivationControlList),
619}
620impl DeserializeBytes for DerivationSetType {
621    fn deserialize_bytes<R>(reader: &R, bytes: &[u8]) -> Result<Self, Error>
622    where
623        R: DeserializeReader,
624    {
625        match bytes {
626            b"#all" => Ok(Self::All),
627            x => Ok(Self::ReducedDerivationControlList(
628                ReducedDerivationControlList::deserialize_bytes(reader, x)?,
629            )),
630        }
631    }
632}
633#[derive(Debug, Clone, Eq, PartialEq)]
634pub struct SimpleContent {
635    pub id: Option<String>,
636    pub content: Vec<SimpleContentContent>,
637}
638#[derive(Debug, Clone, Eq, PartialEq)]
639pub enum SimpleContentContent {
640    Annotation(Annotation),
641    Restriction(RestrictionType),
642    Extension(ExtensionType),
643}
644impl WithDeserializer for SimpleContent {
645    type Deserializer = Box<quick_xml_deserialize::SimpleContentDeserializer>;
646}
647impl WithDeserializer for SimpleContentContent {
648    type Deserializer = Box<quick_xml_deserialize::SimpleContentContentDeserializer>;
649}
650#[derive(Debug, Clone, Eq, PartialEq)]
651pub struct ComplexContent {
652    pub id: Option<String>,
653    pub mixed: Option<bool>,
654    pub content: Vec<ComplexContentContent>,
655}
656#[derive(Debug, Clone, Eq, PartialEq)]
657pub enum ComplexContentContent {
658    Annotation(Annotation),
659    Restriction(RestrictionType),
660    Extension(ExtensionType),
661}
662impl WithDeserializer for ComplexContent {
663    type Deserializer = Box<quick_xml_deserialize::ComplexContentDeserializer>;
664}
665impl WithDeserializer for ComplexContentContent {
666    type Deserializer = Box<quick_xml_deserialize::ComplexContentContentDeserializer>;
667}
668#[derive(Debug, Clone, Eq, PartialEq)]
669pub struct OpenContent {
670    pub id: Option<String>,
671    pub mode: OpenContentModeType,
672    pub annotation: Option<Annotation>,
673    pub any: Option<WildcardType>,
674}
675impl OpenContent {
676    #[must_use]
677    pub fn default_mode() -> OpenContentModeType {
678        OpenContentModeType::Interleave
679    }
680}
681impl WithDeserializer for OpenContent {
682    type Deserializer = Box<quick_xml_deserialize::OpenContentDeserializer>;
683}
684#[derive(Debug, Clone, Eq, PartialEq)]
685pub struct AnyAttribute {
686    pub id: Option<String>,
687    pub namespace: Option<NamespaceListType>,
688    pub not_namespace: Option<BasicNamespaceListType>,
689    pub process_contents: ProcessContentsType,
690    pub not_q_name: Option<QnameListAType>,
691    pub annotation: Option<Annotation>,
692}
693impl AnyAttribute {
694    #[must_use]
695    pub fn default_process_contents() -> ProcessContentsType {
696        ProcessContentsType::Strict
697    }
698}
699impl WithDeserializer for AnyAttribute {
700    type Deserializer = Box<quick_xml_deserialize::AnyAttributeDeserializer>;
701}
702#[derive(Debug, Clone, Eq, PartialEq)]
703pub struct AssertionType {
704    pub id: Option<String>,
705    pub test: Option<String>,
706    pub xpath_default_namespace: Option<XpathDefaultNamespaceType>,
707    pub annotation: Option<Annotation>,
708}
709impl WithDeserializer for AssertionType {
710    type Deserializer = Box<quick_xml_deserialize::AssertionTypeDeserializer>;
711}
712#[derive(Debug, Clone, Eq, PartialEq)]
713pub struct Any {
714    pub id: Option<String>,
715    pub namespace: Option<NamespaceListType>,
716    pub not_namespace: Option<BasicNamespaceListType>,
717    pub process_contents: ProcessContentsType,
718    pub not_q_name: Option<QnameListType>,
719    pub min_occurs: usize,
720    pub max_occurs: MaxOccurs,
721    pub annotation: Option<Annotation>,
722}
723impl Any {
724    #[must_use]
725    pub fn default_process_contents() -> ProcessContentsType {
726        ProcessContentsType::Strict
727    }
728    #[must_use]
729    pub fn default_min_occurs() -> usize {
730        1usize
731    }
732    #[must_use]
733    pub fn default_max_occurs() -> MaxOccurs {
734        MaxOccurs::Bounded(1usize)
735    }
736}
737impl WithDeserializer for Any {
738    type Deserializer = Box<quick_xml_deserialize::AnyDeserializer>;
739}
740#[derive(Debug, Clone, Eq, PartialEq, Default)]
741pub struct QNameList(pub Vec<QName>);
742impl DeserializeBytes for QNameList {
743    fn deserialize_bytes<R>(reader: &R, bytes: &[u8]) -> Result<Self, Error>
744    where
745        R: DeserializeReader,
746    {
747        Ok(Self(
748            bytes
749                .split(|b| *b == b' ' || *b == b'|' || *b == b',' || *b == b';')
750                .map(|bytes| QName::deserialize_bytes(reader, bytes))
751                .collect::<Result<Vec<_>, _>>()?,
752        ))
753    }
754}
755#[derive(Debug, Clone, Eq, PartialEq)]
756pub struct AltType {
757    pub id: Option<String>,
758    pub test: Option<String>,
759    pub type_: Option<QName>,
760    pub xpath_default_namespace: Option<XpathDefaultNamespaceType>,
761    pub content: Vec<AltTypeContent>,
762}
763#[derive(Debug, Clone, Eq, PartialEq)]
764pub enum AltTypeContent {
765    Annotation(Annotation),
766    SimpleType(SimpleBaseType),
767    ComplexType(ComplexBaseType),
768}
769impl WithDeserializer for AltType {
770    type Deserializer = Box<quick_xml_deserialize::AltTypeDeserializer>;
771}
772impl WithDeserializer for AltTypeContent {
773    type Deserializer = Box<quick_xml_deserialize::AltTypeContentDeserializer>;
774}
775#[derive(Debug, Clone, Eq, PartialEq)]
776pub struct KeybaseType {
777    pub id: Option<String>,
778    pub name: Option<String>,
779    pub ref_: Option<QName>,
780    pub content: Option<KeybaseTypeContent>,
781}
782#[derive(Debug, Clone, Eq, PartialEq)]
783pub struct KeybaseTypeContent {
784    pub annotation: Option<Annotation>,
785    pub selector: Field,
786    pub field: Vec<Field>,
787}
788impl WithDeserializer for KeybaseType {
789    type Deserializer = Box<quick_xml_deserialize::KeybaseTypeDeserializer>;
790}
791impl WithDeserializer for KeybaseTypeContent {
792    type Deserializer = Box<quick_xml_deserialize::KeybaseTypeContentDeserializer>;
793}
794#[derive(Debug, Clone, Eq, PartialEq)]
795pub struct Keyref {
796    pub id: Option<String>,
797    pub name: Option<String>,
798    pub ref_: Option<QName>,
799    pub refer: Option<QName>,
800    pub content: Option<KeyrefContent>,
801}
802#[derive(Debug, Clone, Eq, PartialEq)]
803pub struct KeyrefContent {
804    pub annotation: Option<Annotation>,
805    pub selector: Field,
806    pub field: Vec<Field>,
807}
808impl WithDeserializer for Keyref {
809    type Deserializer = Box<quick_xml_deserialize::KeyrefDeserializer>;
810}
811impl WithDeserializer for KeyrefContent {
812    type Deserializer = Box<quick_xml_deserialize::KeyrefContentDeserializer>;
813}
814#[derive(Debug, Clone, Eq, PartialEq)]
815pub enum AttributeUseType {
816    Prohibited,
817    Optional,
818    Required,
819}
820impl DeserializeBytes for AttributeUseType {
821    fn deserialize_bytes<R>(reader: &R, bytes: &[u8]) -> Result<Self, Error>
822    where
823        R: DeserializeReader,
824    {
825        match bytes {
826            b"prohibited" => Ok(Self::Prohibited),
827            b"optional" => Ok(Self::Optional),
828            b"required" => Ok(Self::Required),
829            x => Err(reader.map_error(ErrorKind::UnknownOrInvalidValue(RawByteStr::from_slice(x)))),
830        }
831    }
832}
833#[derive(Debug, Clone, Eq, PartialEq)]
834pub enum NamespaceListType {
835    Any,
836    Other,
837    BasicNamespaceList(BasicNamespaceListType),
838}
839impl DeserializeBytes for NamespaceListType {
840    fn deserialize_bytes<R>(reader: &R, bytes: &[u8]) -> Result<Self, Error>
841    where
842        R: DeserializeReader,
843    {
844        match bytes {
845            b"##any" => Ok(Self::Any),
846            b"##other" => Ok(Self::Other),
847            x => Ok(Self::BasicNamespaceList(
848                BasicNamespaceListType::deserialize_bytes(reader, x)?,
849            )),
850        }
851    }
852}
853#[derive(Debug, Clone, Eq, PartialEq, Default)]
854pub struct BasicNamespaceListType(pub Vec<BasicNamespaceListItemType>);
855impl DeserializeBytes for BasicNamespaceListType {
856    fn deserialize_bytes<R>(reader: &R, bytes: &[u8]) -> Result<Self, Error>
857    where
858        R: DeserializeReader,
859    {
860        Ok(Self(
861            bytes
862                .split(|b| *b == b' ' || *b == b'|' || *b == b',' || *b == b';')
863                .map(|bytes| BasicNamespaceListItemType::deserialize_bytes(reader, bytes))
864                .collect::<Result<Vec<_>, _>>()?,
865        ))
866    }
867}
868#[derive(Debug, Clone, Eq, PartialEq)]
869pub enum ProcessContentsType {
870    Skip,
871    Lax,
872    Strict,
873}
874impl DeserializeBytes for ProcessContentsType {
875    fn deserialize_bytes<R>(reader: &R, bytes: &[u8]) -> Result<Self, Error>
876    where
877        R: DeserializeReader,
878    {
879        match bytes {
880            b"skip" => Ok(Self::Skip),
881            b"lax" => Ok(Self::Lax),
882            b"strict" => Ok(Self::Strict),
883            x => Err(reader.map_error(ErrorKind::UnknownOrInvalidValue(RawByteStr::from_slice(x)))),
884        }
885    }
886}
887#[derive(Debug, Clone, Eq, PartialEq, Default)]
888pub struct SimpleDerivationSetItemList(pub Vec<SimpleDerivationSetItemType>);
889impl DeserializeBytes for SimpleDerivationSetItemList {
890    fn deserialize_bytes<R>(reader: &R, bytes: &[u8]) -> Result<Self, Error>
891    where
892        R: DeserializeReader,
893    {
894        Ok(Self(
895            bytes
896                .split(|b| *b == b' ' || *b == b'|' || *b == b',' || *b == b';')
897                .map(|bytes| SimpleDerivationSetItemType::deserialize_bytes(reader, bytes))
898                .collect::<Result<Vec<_>, _>>()?,
899        ))
900    }
901}
902#[derive(Debug, Clone, Eq, PartialEq)]
903pub enum Facet {
904    MinExclusive(FacetType),
905    MinInclusive(FacetType),
906    MaxExclusive(FacetType),
907    MaxInclusive(FacetType),
908    TotalDigits(FacetType),
909    FractionDigits(FacetType),
910    Length(FacetType),
911    MinLength(FacetType),
912    MaxLength(FacetType),
913    Enumeration(FacetType),
914    WhiteSpace(FacetType),
915    Pattern(FacetType),
916    Assertion(AssertionType),
917    ExplicitTimezone(FacetType),
918}
919impl WithDeserializer for Facet {
920    type Deserializer = Box<quick_xml_deserialize::FacetDeserializer>;
921}
922#[derive(Debug, Clone, Eq, PartialEq, Default)]
923pub struct ReducedDerivationControlList(pub Vec<ReducedDerivationControlType>);
924impl DeserializeBytes for ReducedDerivationControlList {
925    fn deserialize_bytes<R>(reader: &R, bytes: &[u8]) -> Result<Self, Error>
926    where
927        R: DeserializeReader,
928    {
929        Ok(Self(
930            bytes
931                .split(|b| *b == b' ' || *b == b'|' || *b == b',' || *b == b';')
932                .map(|bytes| ReducedDerivationControlType::deserialize_bytes(reader, bytes))
933                .collect::<Result<Vec<_>, _>>()?,
934        ))
935    }
936}
937#[derive(Debug, Clone, Eq, PartialEq)]
938pub struct RestrictionType {
939    pub id: Option<String>,
940    pub base: QName,
941    pub content: Vec<RestrictionTypeContent>,
942}
943#[derive(Debug, Clone, Eq, PartialEq)]
944pub enum RestrictionTypeContent {
945    Annotation(Annotation),
946    OpenContent(OpenContent),
947    Group(GroupType),
948    All(GroupType),
949    Choice(GroupType),
950    Sequence(GroupType),
951    SimpleType(SimpleBaseType),
952    Facet(Facet),
953    Attribute(AttributeType),
954    AttributeGroup(AttributeGroupType),
955    AnyAttribute(AnyAttribute),
956    Assert(AssertionType),
957}
958impl WithDeserializer for RestrictionType {
959    type Deserializer = Box<quick_xml_deserialize::RestrictionTypeDeserializer>;
960}
961impl WithDeserializer for RestrictionTypeContent {
962    type Deserializer = Box<quick_xml_deserialize::RestrictionTypeContentDeserializer>;
963}
964#[derive(Debug, Clone, Eq, PartialEq)]
965pub struct ExtensionType {
966    pub id: Option<String>,
967    pub base: QName,
968    pub content: Vec<ExtensionTypeContent>,
969}
970#[derive(Debug, Clone, Eq, PartialEq)]
971pub enum ExtensionTypeContent {
972    Annotation(Annotation),
973    OpenContent(OpenContent),
974    Group(GroupType),
975    All(GroupType),
976    Choice(GroupType),
977    Sequence(GroupType),
978    Attribute(AttributeType),
979    AttributeGroup(AttributeGroupType),
980    AnyAttribute(AnyAttribute),
981    Assert(AssertionType),
982}
983impl WithDeserializer for ExtensionType {
984    type Deserializer = Box<quick_xml_deserialize::ExtensionTypeDeserializer>;
985}
986impl WithDeserializer for ExtensionTypeContent {
987    type Deserializer = Box<quick_xml_deserialize::ExtensionTypeContentDeserializer>;
988}
989#[derive(Debug, Clone, Eq, PartialEq)]
990pub enum OpenContentModeType {
991    None,
992    Interleave,
993    Suffix,
994}
995impl DeserializeBytes for OpenContentModeType {
996    fn deserialize_bytes<R>(reader: &R, bytes: &[u8]) -> Result<Self, Error>
997    where
998        R: DeserializeReader,
999    {
1000        match bytes {
1001            b"none" => Ok(Self::None),
1002            b"interleave" => Ok(Self::Interleave),
1003            b"suffix" => Ok(Self::Suffix),
1004            x => Err(reader.map_error(ErrorKind::UnknownOrInvalidValue(RawByteStr::from_slice(x)))),
1005        }
1006    }
1007}
1008#[derive(Debug, Clone, Eq, PartialEq, Default)]
1009pub struct QnameListAType(pub Vec<QnameListAItemType>);
1010impl DeserializeBytes for QnameListAType {
1011    fn deserialize_bytes<R>(reader: &R, bytes: &[u8]) -> Result<Self, Error>
1012    where
1013        R: DeserializeReader,
1014    {
1015        Ok(Self(
1016            bytes
1017                .split(|b| *b == b' ' || *b == b'|' || *b == b',' || *b == b';')
1018                .map(|bytes| QnameListAItemType::deserialize_bytes(reader, bytes))
1019                .collect::<Result<Vec<_>, _>>()?,
1020        ))
1021    }
1022}
1023#[derive(Debug, Clone, Eq, PartialEq, Default)]
1024pub struct QnameListType(pub Vec<QnameListItemType>);
1025impl DeserializeBytes for QnameListType {
1026    fn deserialize_bytes<R>(reader: &R, bytes: &[u8]) -> Result<Self, Error>
1027    where
1028        R: DeserializeReader,
1029    {
1030        Ok(Self(
1031            bytes
1032                .split(|b| *b == b' ' || *b == b'|' || *b == b',' || *b == b';')
1033                .map(|bytes| QnameListItemType::deserialize_bytes(reader, bytes))
1034                .collect::<Result<Vec<_>, _>>()?,
1035        ))
1036    }
1037}
1038#[derive(Debug, Clone, Eq, PartialEq)]
1039pub struct Field {
1040    pub id: Option<String>,
1041    pub xpath: String,
1042    pub xpath_default_namespace: Option<XpathDefaultNamespaceType>,
1043    pub annotation: Option<Annotation>,
1044}
1045impl WithDeserializer for Field {
1046    type Deserializer = Box<quick_xml_deserialize::FieldDeserializer>;
1047}
1048#[derive(Debug, Clone, Eq, PartialEq)]
1049pub enum BasicNamespaceListItemType {
1050    String(String),
1051    TargetNamespace,
1052    Local,
1053}
1054impl DeserializeBytes for BasicNamespaceListItemType {
1055    fn deserialize_bytes<R>(reader: &R, bytes: &[u8]) -> Result<Self, Error>
1056    where
1057        R: DeserializeReader,
1058    {
1059        match bytes {
1060            b"##targetNamespace" => Ok(Self::TargetNamespace),
1061            b"##local" => Ok(Self::Local),
1062            x => Ok(Self::String(String::deserialize_bytes(reader, x)?)),
1063        }
1064    }
1065}
1066#[derive(Debug, Clone, Eq, PartialEq)]
1067pub enum SimpleDerivationSetItemType {
1068    List,
1069    Union,
1070    Restriction,
1071    Extension,
1072}
1073impl DeserializeBytes for SimpleDerivationSetItemType {
1074    fn deserialize_bytes<R>(reader: &R, bytes: &[u8]) -> Result<Self, Error>
1075    where
1076        R: DeserializeReader,
1077    {
1078        match bytes {
1079            b"list" => Ok(Self::List),
1080            b"union" => Ok(Self::Union),
1081            b"restriction" => Ok(Self::Restriction),
1082            b"extension" => Ok(Self::Extension),
1083            x => Err(reader.map_error(ErrorKind::UnknownOrInvalidValue(RawByteStr::from_slice(x)))),
1084        }
1085    }
1086}
1087#[derive(Debug, Clone, Eq, PartialEq)]
1088pub struct FacetType {
1089    pub id: Option<String>,
1090    pub value: String,
1091    pub fixed: bool,
1092    pub annotation: Option<Annotation>,
1093}
1094impl FacetType {
1095    #[must_use]
1096    pub fn default_fixed() -> bool {
1097        false
1098    }
1099}
1100impl WithDeserializer for FacetType {
1101    type Deserializer = Box<quick_xml_deserialize::FacetTypeDeserializer>;
1102}
1103#[derive(Debug, Clone, Eq, PartialEq)]
1104pub enum ReducedDerivationControlType {
1105    Extension,
1106    Restriction,
1107}
1108impl DeserializeBytes for ReducedDerivationControlType {
1109    fn deserialize_bytes<R>(reader: &R, bytes: &[u8]) -> Result<Self, Error>
1110    where
1111        R: DeserializeReader,
1112    {
1113        match bytes {
1114            b"extension" => Ok(Self::Extension),
1115            b"restriction" => Ok(Self::Restriction),
1116            x => Err(reader.map_error(ErrorKind::UnknownOrInvalidValue(RawByteStr::from_slice(x)))),
1117        }
1118    }
1119}
1120#[derive(Debug, Clone, Eq, PartialEq)]
1121pub enum QnameListAItemType {
1122    QName(QName),
1123    Defined,
1124}
1125impl DeserializeBytes for QnameListAItemType {
1126    fn deserialize_bytes<R>(reader: &R, bytes: &[u8]) -> Result<Self, Error>
1127    where
1128        R: DeserializeReader,
1129    {
1130        match bytes {
1131            b"##defined" => Ok(Self::Defined),
1132            x => Ok(Self::QName(QName::deserialize_bytes(reader, x)?)),
1133        }
1134    }
1135}
1136#[derive(Debug, Clone, Eq, PartialEq)]
1137pub enum QnameListItemType {
1138    QName(QName),
1139    Defined,
1140    DefinedSibling,
1141}
1142impl DeserializeBytes for QnameListItemType {
1143    fn deserialize_bytes<R>(reader: &R, bytes: &[u8]) -> Result<Self, Error>
1144    where
1145        R: DeserializeReader,
1146    {
1147        match bytes {
1148            b"##defined" => Ok(Self::Defined),
1149            b"##definedSibling" => Ok(Self::DefinedSibling),
1150            x => Ok(Self::QName(QName::deserialize_bytes(reader, x)?)),
1151        }
1152    }
1153}
1154pub mod quick_xml_deserialize {
1155    use crate::quick_xml::{
1156        filter_xmlns_attributes, BytesStart, DeserializeReader, Deserializer, DeserializerArtifact,
1157        DeserializerEvent, DeserializerOutput, DeserializerResult, ElementHandlerOutput, Error,
1158        ErrorKind, Event, RawByteStr, WithDeserializer,
1159    };
1160    use core::mem::replace;
1161    #[derive(Debug)]
1162    pub struct SchemaDeserializer {
1163        target_namespace: Option<String>,
1164        version: Option<String>,
1165        final_default: super::FullDerivationSetType,
1166        block_default: super::BlockSetType,
1167        attribute_form_default: super::FormChoiceType,
1168        element_form_default: super::FormChoiceType,
1169        default_attributes: Option<super::QName>,
1170        xpath_default_namespace: super::XpathDefaultNamespaceType,
1171        id: Option<String>,
1172        lang: Option<String>,
1173        content: Vec<super::SchemaContent>,
1174        state: Box<SchemaDeserializerState>,
1175    }
1176    #[derive(Debug)]
1177    enum SchemaDeserializerState {
1178        Init__,
1179        Next__,
1180        Content__(<super::SchemaContent as WithDeserializer>::Deserializer),
1181        Unknown__,
1182    }
1183    impl SchemaDeserializer {
1184        fn from_bytes_start<R>(reader: &R, bytes_start: &BytesStart<'_>) -> Result<Box<Self>, Error>
1185        where
1186            R: DeserializeReader,
1187        {
1188            let mut target_namespace: Option<String> = None;
1189            let mut version: Option<String> = None;
1190            let mut final_default: Option<super::FullDerivationSetType> = None;
1191            let mut block_default: Option<super::BlockSetType> = None;
1192            let mut attribute_form_default: Option<super::FormChoiceType> = None;
1193            let mut element_form_default: Option<super::FormChoiceType> = None;
1194            let mut default_attributes: Option<super::QName> = None;
1195            let mut xpath_default_namespace: Option<super::XpathDefaultNamespaceType> = None;
1196            let mut id: Option<String> = None;
1197            let mut lang: Option<String> = None;
1198            for attrib in filter_xmlns_attributes(bytes_start) {
1199                let attrib = attrib?;
1200                if matches!(
1201                    reader.resolve_local_name(attrib.key, &super::NS_XS),
1202                    Some(b"targetNamespace")
1203                ) {
1204                    reader.read_attrib(&mut target_namespace, b"targetNamespace", &attrib.value)?;
1205                } else if matches!(
1206                    reader.resolve_local_name(attrib.key, &super::NS_XS),
1207                    Some(b"version")
1208                ) {
1209                    reader.read_attrib(&mut version, b"version", &attrib.value)?;
1210                } else if matches!(
1211                    reader.resolve_local_name(attrib.key, &super::NS_XS),
1212                    Some(b"finalDefault")
1213                ) {
1214                    reader.read_attrib(&mut final_default, b"finalDefault", &attrib.value)?;
1215                } else if matches!(
1216                    reader.resolve_local_name(attrib.key, &super::NS_XS),
1217                    Some(b"blockDefault")
1218                ) {
1219                    reader.read_attrib(&mut block_default, b"blockDefault", &attrib.value)?;
1220                } else if matches!(
1221                    reader.resolve_local_name(attrib.key, &super::NS_XS),
1222                    Some(b"attributeFormDefault")
1223                ) {
1224                    reader.read_attrib(
1225                        &mut attribute_form_default,
1226                        b"attributeFormDefault",
1227                        &attrib.value,
1228                    )?;
1229                } else if matches!(
1230                    reader.resolve_local_name(attrib.key, &super::NS_XS),
1231                    Some(b"elementFormDefault")
1232                ) {
1233                    reader.read_attrib(
1234                        &mut element_form_default,
1235                        b"elementFormDefault",
1236                        &attrib.value,
1237                    )?;
1238                } else if matches!(
1239                    reader.resolve_local_name(attrib.key, &super::NS_XS),
1240                    Some(b"defaultAttributes")
1241                ) {
1242                    reader.read_attrib(
1243                        &mut default_attributes,
1244                        b"defaultAttributes",
1245                        &attrib.value,
1246                    )?;
1247                } else if matches!(
1248                    reader.resolve_local_name(attrib.key, &super::NS_XS),
1249                    Some(b"xpathDefaultNamespace")
1250                ) {
1251                    reader.read_attrib(
1252                        &mut xpath_default_namespace,
1253                        b"xpathDefaultNamespace",
1254                        &attrib.value,
1255                    )?;
1256                } else if matches!(
1257                    reader.resolve_local_name(attrib.key, &super::NS_XS),
1258                    Some(b"id")
1259                ) {
1260                    reader.read_attrib(&mut id, b"id", &attrib.value)?;
1261                } else if matches!(
1262                    reader.resolve_local_name(attrib.key, &super::NS_XML),
1263                    Some(b"lang")
1264                ) {
1265                    reader.read_attrib(&mut lang, b"lang", &attrib.value)?;
1266                }
1267            }
1268            Ok(Box::new(Self {
1269                target_namespace: target_namespace,
1270                version: version,
1271                final_default: final_default.unwrap_or_else(super::Schema::default_final_default),
1272                block_default: block_default.unwrap_or_else(super::Schema::default_block_default),
1273                attribute_form_default: attribute_form_default
1274                    .unwrap_or_else(super::Schema::default_attribute_form_default),
1275                element_form_default: element_form_default
1276                    .unwrap_or_else(super::Schema::default_element_form_default),
1277                default_attributes: default_attributes,
1278                xpath_default_namespace: xpath_default_namespace
1279                    .unwrap_or_else(super::Schema::default_xpath_default_namespace),
1280                id: id,
1281                lang: lang,
1282                content: Vec::new(),
1283                state: Box::new(SchemaDeserializerState::Init__),
1284            }))
1285        }
1286        fn finish_state<R>(
1287            &mut self,
1288            reader: &R,
1289            state: SchemaDeserializerState,
1290        ) -> Result<(), Error>
1291        where
1292            R: DeserializeReader,
1293        {
1294            if let SchemaDeserializerState::Content__(deserializer) = state {
1295                self.store_content(deserializer.finish(reader)?)?;
1296            }
1297            Ok(())
1298        }
1299        fn store_content(&mut self, value: super::SchemaContent) -> Result<(), Error> {
1300            self.content.push(value);
1301            Ok(())
1302        }
1303        fn handle_content<'de, R>(
1304            &mut self,
1305            reader: &R,
1306            output: DeserializerOutput<'de, super::SchemaContent>,
1307            fallback: &mut Option<SchemaDeserializerState>,
1308        ) -> Result<ElementHandlerOutput<'de>, Error>
1309        where
1310            R: DeserializeReader,
1311        {
1312            let DeserializerOutput {
1313                artifact,
1314                event,
1315                allow_any,
1316            } = output;
1317            if artifact.is_none() {
1318                *self.state = fallback.take().unwrap_or(SchemaDeserializerState::Next__);
1319                return Ok(ElementHandlerOutput::break_(event, allow_any));
1320            }
1321            if let Some(fallback) = fallback.take() {
1322                self.finish_state(reader, fallback)?;
1323            }
1324            Ok(match artifact {
1325                DeserializerArtifact::None => unreachable!(),
1326                DeserializerArtifact::Data(data) => {
1327                    self.store_content(data)?;
1328                    *self.state = SchemaDeserializerState::Next__;
1329                    ElementHandlerOutput::from_event(event, allow_any)
1330                }
1331                DeserializerArtifact::Deserializer(deserializer) => {
1332                    let can_have_more = self.content.len().saturating_add(1) < 13usize;
1333                    let ret = if can_have_more {
1334                        ElementHandlerOutput::from_event(event, allow_any)
1335                    } else {
1336                        ElementHandlerOutput::from_event_end(event, allow_any)
1337                    };
1338                    match (can_have_more, &ret) {
1339                        (true, ElementHandlerOutput::Continue { .. }) => {
1340                            fallback
1341                                .get_or_insert(SchemaDeserializerState::Content__(deserializer));
1342                            *self.state = SchemaDeserializerState::Next__;
1343                        }
1344                        (false, _) | (_, ElementHandlerOutput::Break { .. }) => {
1345                            *self.state = SchemaDeserializerState::Content__(deserializer);
1346                        }
1347                    }
1348                    ret
1349                }
1350            })
1351        }
1352    }
1353    impl<'de> Deserializer<'de, super::Schema> for Box<SchemaDeserializer> {
1354        fn init<R>(reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::Schema>
1355        where
1356            R: DeserializeReader,
1357        {
1358            reader.init_deserializer_from_start_event(event, SchemaDeserializer::from_bytes_start)
1359        }
1360        fn next<R>(
1361            mut self,
1362            reader: &R,
1363            event: Event<'de>,
1364        ) -> DeserializerResult<'de, super::Schema>
1365        where
1366            R: DeserializeReader,
1367        {
1368            use SchemaDeserializerState as S;
1369            let mut event = event;
1370            let mut fallback = None;
1371            let (event, allow_any) = loop {
1372                let state = replace(&mut *self.state, S::Unknown__);
1373                event = match (state, event) {
1374                    (S::Content__(deserializer), event) => {
1375                        let output = deserializer.next(reader, event)?;
1376                        match self.handle_content(reader, output, &mut fallback)? {
1377                            ElementHandlerOutput::Break { event, allow_any } => {
1378                                break (event, allow_any)
1379                            }
1380                            ElementHandlerOutput::Continue { event, .. } => event,
1381                        }
1382                    }
1383                    (_, Event::End(_)) => {
1384                        return Ok(DeserializerOutput {
1385                            artifact: DeserializerArtifact::Data(self.finish(reader)?),
1386                            event: DeserializerEvent::None,
1387                            allow_any: false,
1388                        });
1389                    }
1390                    (state @ (S::Init__ | S::Next__), event) => {
1391                        fallback.get_or_insert(state);
1392                        let output =
1393                            <super::SchemaContent as WithDeserializer>::Deserializer::init(
1394                                reader, event,
1395                            )?;
1396                        match self.handle_content(reader, output, &mut fallback)? {
1397                            ElementHandlerOutput::Break { event, allow_any } => {
1398                                break (event, allow_any)
1399                            }
1400                            ElementHandlerOutput::Continue { event, .. } => event,
1401                        }
1402                    }
1403                    (S::Unknown__, _) => unreachable!(),
1404                }
1405            };
1406            let artifact = DeserializerArtifact::Deserializer(self);
1407            Ok(DeserializerOutput {
1408                artifact,
1409                event,
1410                allow_any,
1411            })
1412        }
1413        fn finish<R>(mut self, reader: &R) -> Result<super::Schema, Error>
1414        where
1415            R: DeserializeReader,
1416        {
1417            let state = replace(&mut *self.state, SchemaDeserializerState::Unknown__);
1418            self.finish_state(reader, state)?;
1419            Ok(super::Schema {
1420                target_namespace: self.target_namespace,
1421                version: self.version,
1422                final_default: self.final_default,
1423                block_default: self.block_default,
1424                attribute_form_default: self.attribute_form_default,
1425                element_form_default: self.element_form_default,
1426                default_attributes: self.default_attributes,
1427                xpath_default_namespace: self.xpath_default_namespace,
1428                id: self.id,
1429                lang: self.lang,
1430                content: self.content,
1431            })
1432        }
1433    }
1434    #[derive(Debug)]
1435    pub struct SchemaContentDeserializer {
1436        state: Box<SchemaContentDeserializerState>,
1437    }
1438    #[derive(Debug)]
1439    pub enum SchemaContentDeserializerState {
1440        Init__,
1441        Include(
1442            Option<super::Include>,
1443            Option<<super::Include as WithDeserializer>::Deserializer>,
1444        ),
1445        Import(
1446            Option<super::Import>,
1447            Option<<super::Import as WithDeserializer>::Deserializer>,
1448        ),
1449        Redefine(
1450            Option<super::Redefine>,
1451            Option<<super::Redefine as WithDeserializer>::Deserializer>,
1452        ),
1453        Override(
1454            Option<super::Override>,
1455            Option<<super::Override as WithDeserializer>::Deserializer>,
1456        ),
1457        Annotation(
1458            Option<super::Annotation>,
1459            Option<<super::Annotation as WithDeserializer>::Deserializer>,
1460        ),
1461        DefaultOpenContent(
1462            Option<super::DefaultOpenContent>,
1463            Option<<super::DefaultOpenContent as WithDeserializer>::Deserializer>,
1464        ),
1465        SimpleType(
1466            Option<super::SimpleBaseType>,
1467            Option<<super::SimpleBaseType as WithDeserializer>::Deserializer>,
1468        ),
1469        ComplexType(
1470            Option<super::ComplexBaseType>,
1471            Option<<super::ComplexBaseType as WithDeserializer>::Deserializer>,
1472        ),
1473        Group(
1474            Option<super::GroupType>,
1475            Option<<super::GroupType as WithDeserializer>::Deserializer>,
1476        ),
1477        AttributeGroup(
1478            Option<super::AttributeGroupType>,
1479            Option<<super::AttributeGroupType as WithDeserializer>::Deserializer>,
1480        ),
1481        Element(
1482            Option<super::ElementType>,
1483            Option<<super::ElementType as WithDeserializer>::Deserializer>,
1484        ),
1485        Attribute(
1486            Option<super::AttributeType>,
1487            Option<<super::AttributeType as WithDeserializer>::Deserializer>,
1488        ),
1489        Notation(
1490            Option<super::Notation>,
1491            Option<<super::Notation as WithDeserializer>::Deserializer>,
1492        ),
1493        Done__(super::SchemaContent),
1494        Unknown__,
1495    }
1496    impl SchemaContentDeserializer {
1497        fn find_suitable<'de, R>(
1498            &mut self,
1499            reader: &R,
1500            event: Event<'de>,
1501            fallback: &mut Option<SchemaContentDeserializerState>,
1502        ) -> Result<ElementHandlerOutput<'de>, Error>
1503        where
1504            R: DeserializeReader,
1505        {
1506            let (Event::Start(x) | Event::Empty(x)) = &event else {
1507                *self.state = fallback
1508                    .take()
1509                    .unwrap_or(SchemaContentDeserializerState::Init__);
1510                return Ok(ElementHandlerOutput::return_to_parent(event, false));
1511            };
1512            if matches!(
1513                reader.resolve_local_name(x.name(), &super::NS_XS),
1514                Some(b"include")
1515            ) {
1516                let output =
1517                    <super::Include as WithDeserializer>::Deserializer::init(reader, event)?;
1518                return self.handle_include(reader, Default::default(), output, &mut *fallback);
1519            }
1520            if matches!(
1521                reader.resolve_local_name(x.name(), &super::NS_XS),
1522                Some(b"import")
1523            ) {
1524                let output =
1525                    <super::Import as WithDeserializer>::Deserializer::init(reader, event)?;
1526                return self.handle_import(reader, Default::default(), output, &mut *fallback);
1527            }
1528            if matches!(
1529                reader.resolve_local_name(x.name(), &super::NS_XS),
1530                Some(b"redefine")
1531            ) {
1532                let output =
1533                    <super::Redefine as WithDeserializer>::Deserializer::init(reader, event)?;
1534                return self.handle_redefine(reader, Default::default(), output, &mut *fallback);
1535            }
1536            if matches!(
1537                reader.resolve_local_name(x.name(), &super::NS_XS),
1538                Some(b"override")
1539            ) {
1540                let output =
1541                    <super::Override as WithDeserializer>::Deserializer::init(reader, event)?;
1542                return self.handle_override_(reader, Default::default(), output, &mut *fallback);
1543            }
1544            if matches!(
1545                reader.resolve_local_name(x.name(), &super::NS_XS),
1546                Some(b"annotation")
1547            ) {
1548                let output =
1549                    <super::Annotation as WithDeserializer>::Deserializer::init(reader, event)?;
1550                return self.handle_annotation(reader, Default::default(), output, &mut *fallback);
1551            }
1552            if matches!(
1553                reader.resolve_local_name(x.name(), &super::NS_XS),
1554                Some(b"defaultOpenContent")
1555            ) {
1556                let output = <super::DefaultOpenContent as WithDeserializer>::Deserializer::init(
1557                    reader, event,
1558                )?;
1559                return self.handle_default_open_content(
1560                    reader,
1561                    Default::default(),
1562                    output,
1563                    &mut *fallback,
1564                );
1565            }
1566            if matches!(
1567                reader.resolve_local_name(x.name(), &super::NS_XS),
1568                Some(b"simpleType")
1569            ) {
1570                let output =
1571                    <super::SimpleBaseType as WithDeserializer>::Deserializer::init(reader, event)?;
1572                return self.handle_simple_type(reader, Default::default(), output, &mut *fallback);
1573            }
1574            if matches!(
1575                reader.resolve_local_name(x.name(), &super::NS_XS),
1576                Some(b"complexType")
1577            ) {
1578                let output = <super::ComplexBaseType as WithDeserializer>::Deserializer::init(
1579                    reader, event,
1580                )?;
1581                return self.handle_complex_type(
1582                    reader,
1583                    Default::default(),
1584                    output,
1585                    &mut *fallback,
1586                );
1587            }
1588            if matches!(
1589                reader.resolve_local_name(x.name(), &super::NS_XS),
1590                Some(b"group")
1591            ) {
1592                let output =
1593                    <super::GroupType as WithDeserializer>::Deserializer::init(reader, event)?;
1594                return self.handle_group(reader, Default::default(), output, &mut *fallback);
1595            }
1596            if matches!(
1597                reader.resolve_local_name(x.name(), &super::NS_XS),
1598                Some(b"attributeGroup")
1599            ) {
1600                let output = <super::AttributeGroupType as WithDeserializer>::Deserializer::init(
1601                    reader, event,
1602                )?;
1603                return self.handle_attribute_group(
1604                    reader,
1605                    Default::default(),
1606                    output,
1607                    &mut *fallback,
1608                );
1609            }
1610            if matches!(
1611                reader.resolve_local_name(x.name(), &super::NS_XS),
1612                Some(b"element")
1613            ) {
1614                let output =
1615                    <super::ElementType as WithDeserializer>::Deserializer::init(reader, event)?;
1616                return self.handle_element(reader, Default::default(), output, &mut *fallback);
1617            }
1618            if matches!(
1619                reader.resolve_local_name(x.name(), &super::NS_XS),
1620                Some(b"attribute")
1621            ) {
1622                let output =
1623                    <super::AttributeType as WithDeserializer>::Deserializer::init(reader, event)?;
1624                return self.handle_attribute(reader, Default::default(), output, &mut *fallback);
1625            }
1626            if matches!(
1627                reader.resolve_local_name(x.name(), &super::NS_XS),
1628                Some(b"notation")
1629            ) {
1630                let output =
1631                    <super::Notation as WithDeserializer>::Deserializer::init(reader, event)?;
1632                return self.handle_notation(reader, Default::default(), output, &mut *fallback);
1633            }
1634            *self.state = fallback
1635                .take()
1636                .unwrap_or(SchemaContentDeserializerState::Init__);
1637            Ok(ElementHandlerOutput::return_to_parent(event, false))
1638        }
1639        fn finish_state<R>(
1640            reader: &R,
1641            state: SchemaContentDeserializerState,
1642        ) -> Result<super::SchemaContent, Error>
1643        where
1644            R: DeserializeReader,
1645        {
1646            use SchemaContentDeserializerState as S;
1647            match state {
1648                S::Init__ => Err(ErrorKind::MissingContent.into()),
1649                S::Include(mut values, deserializer) => {
1650                    if let Some(deserializer) = deserializer {
1651                        let value = deserializer.finish(reader)?;
1652                        SchemaContentDeserializer::store_include(&mut values, value)?;
1653                    }
1654                    Ok(super::SchemaContent::Include(values.ok_or_else(|| {
1655                        ErrorKind::MissingElement("include".into())
1656                    })?))
1657                }
1658                S::Import(mut values, deserializer) => {
1659                    if let Some(deserializer) = deserializer {
1660                        let value = deserializer.finish(reader)?;
1661                        SchemaContentDeserializer::store_import(&mut values, value)?;
1662                    }
1663                    Ok(super::SchemaContent::Import(values.ok_or_else(|| {
1664                        ErrorKind::MissingElement("import".into())
1665                    })?))
1666                }
1667                S::Redefine(mut values, deserializer) => {
1668                    if let Some(deserializer) = deserializer {
1669                        let value = deserializer.finish(reader)?;
1670                        SchemaContentDeserializer::store_redefine(&mut values, value)?;
1671                    }
1672                    Ok(super::SchemaContent::Redefine(values.ok_or_else(|| {
1673                        ErrorKind::MissingElement("redefine".into())
1674                    })?))
1675                }
1676                S::Override(mut values, deserializer) => {
1677                    if let Some(deserializer) = deserializer {
1678                        let value = deserializer.finish(reader)?;
1679                        SchemaContentDeserializer::store_override_(&mut values, value)?;
1680                    }
1681                    Ok(super::SchemaContent::Override(values.ok_or_else(|| {
1682                        ErrorKind::MissingElement("override".into())
1683                    })?))
1684                }
1685                S::Annotation(mut values, deserializer) => {
1686                    if let Some(deserializer) = deserializer {
1687                        let value = deserializer.finish(reader)?;
1688                        SchemaContentDeserializer::store_annotation(&mut values, value)?;
1689                    }
1690                    Ok(super::SchemaContent::Annotation(values.ok_or_else(
1691                        || ErrorKind::MissingElement("annotation".into()),
1692                    )?))
1693                }
1694                S::DefaultOpenContent(mut values, deserializer) => {
1695                    if let Some(deserializer) = deserializer {
1696                        let value = deserializer.finish(reader)?;
1697                        SchemaContentDeserializer::store_default_open_content(&mut values, value)?;
1698                    }
1699                    Ok(super::SchemaContent::DefaultOpenContent(
1700                        values.ok_or_else(|| {
1701                            ErrorKind::MissingElement("defaultOpenContent".into())
1702                        })?,
1703                    ))
1704                }
1705                S::SimpleType(mut values, deserializer) => {
1706                    if let Some(deserializer) = deserializer {
1707                        let value = deserializer.finish(reader)?;
1708                        SchemaContentDeserializer::store_simple_type(&mut values, value)?;
1709                    }
1710                    Ok(super::SchemaContent::SimpleType(values.ok_or_else(
1711                        || ErrorKind::MissingElement("simpleType".into()),
1712                    )?))
1713                }
1714                S::ComplexType(mut values, deserializer) => {
1715                    if let Some(deserializer) = deserializer {
1716                        let value = deserializer.finish(reader)?;
1717                        SchemaContentDeserializer::store_complex_type(&mut values, value)?;
1718                    }
1719                    Ok(super::SchemaContent::ComplexType(values.ok_or_else(
1720                        || ErrorKind::MissingElement("complexType".into()),
1721                    )?))
1722                }
1723                S::Group(mut values, deserializer) => {
1724                    if let Some(deserializer) = deserializer {
1725                        let value = deserializer.finish(reader)?;
1726                        SchemaContentDeserializer::store_group(&mut values, value)?;
1727                    }
1728                    Ok(super::SchemaContent::Group(values.ok_or_else(|| {
1729                        ErrorKind::MissingElement("group".into())
1730                    })?))
1731                }
1732                S::AttributeGroup(mut values, deserializer) => {
1733                    if let Some(deserializer) = deserializer {
1734                        let value = deserializer.finish(reader)?;
1735                        SchemaContentDeserializer::store_attribute_group(&mut values, value)?;
1736                    }
1737                    Ok(super::SchemaContent::AttributeGroup(values.ok_or_else(
1738                        || ErrorKind::MissingElement("attributeGroup".into()),
1739                    )?))
1740                }
1741                S::Element(mut values, deserializer) => {
1742                    if let Some(deserializer) = deserializer {
1743                        let value = deserializer.finish(reader)?;
1744                        SchemaContentDeserializer::store_element(&mut values, value)?;
1745                    }
1746                    Ok(super::SchemaContent::Element(values.ok_or_else(|| {
1747                        ErrorKind::MissingElement("element".into())
1748                    })?))
1749                }
1750                S::Attribute(mut values, deserializer) => {
1751                    if let Some(deserializer) = deserializer {
1752                        let value = deserializer.finish(reader)?;
1753                        SchemaContentDeserializer::store_attribute(&mut values, value)?;
1754                    }
1755                    Ok(super::SchemaContent::Attribute(values.ok_or_else(
1756                        || ErrorKind::MissingElement("attribute".into()),
1757                    )?))
1758                }
1759                S::Notation(mut values, deserializer) => {
1760                    if let Some(deserializer) = deserializer {
1761                        let value = deserializer.finish(reader)?;
1762                        SchemaContentDeserializer::store_notation(&mut values, value)?;
1763                    }
1764                    Ok(super::SchemaContent::Notation(values.ok_or_else(|| {
1765                        ErrorKind::MissingElement("notation".into())
1766                    })?))
1767                }
1768                S::Done__(data) => Ok(data),
1769                S::Unknown__ => unreachable!(),
1770            }
1771        }
1772        fn store_include(
1773            values: &mut Option<super::Include>,
1774            value: super::Include,
1775        ) -> Result<(), Error> {
1776            if values.is_some() {
1777                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
1778                    b"include",
1779                )))?;
1780            }
1781            *values = Some(value);
1782            Ok(())
1783        }
1784        fn store_import(
1785            values: &mut Option<super::Import>,
1786            value: super::Import,
1787        ) -> Result<(), Error> {
1788            if values.is_some() {
1789                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
1790                    b"import",
1791                )))?;
1792            }
1793            *values = Some(value);
1794            Ok(())
1795        }
1796        fn store_redefine(
1797            values: &mut Option<super::Redefine>,
1798            value: super::Redefine,
1799        ) -> Result<(), Error> {
1800            if values.is_some() {
1801                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
1802                    b"redefine",
1803                )))?;
1804            }
1805            *values = Some(value);
1806            Ok(())
1807        }
1808        fn store_override_(
1809            values: &mut Option<super::Override>,
1810            value: super::Override,
1811        ) -> Result<(), Error> {
1812            if values.is_some() {
1813                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
1814                    b"override",
1815                )))?;
1816            }
1817            *values = Some(value);
1818            Ok(())
1819        }
1820        fn store_annotation(
1821            values: &mut Option<super::Annotation>,
1822            value: super::Annotation,
1823        ) -> Result<(), Error> {
1824            if values.is_some() {
1825                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
1826                    b"annotation",
1827                )))?;
1828            }
1829            *values = Some(value);
1830            Ok(())
1831        }
1832        fn store_default_open_content(
1833            values: &mut Option<super::DefaultOpenContent>,
1834            value: super::DefaultOpenContent,
1835        ) -> Result<(), Error> {
1836            if values.is_some() {
1837                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
1838                    b"defaultOpenContent",
1839                )))?;
1840            }
1841            *values = Some(value);
1842            Ok(())
1843        }
1844        fn store_simple_type(
1845            values: &mut Option<super::SimpleBaseType>,
1846            value: super::SimpleBaseType,
1847        ) -> Result<(), Error> {
1848            if values.is_some() {
1849                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
1850                    b"simpleType",
1851                )))?;
1852            }
1853            *values = Some(value);
1854            Ok(())
1855        }
1856        fn store_complex_type(
1857            values: &mut Option<super::ComplexBaseType>,
1858            value: super::ComplexBaseType,
1859        ) -> Result<(), Error> {
1860            if values.is_some() {
1861                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
1862                    b"complexType",
1863                )))?;
1864            }
1865            *values = Some(value);
1866            Ok(())
1867        }
1868        fn store_group(
1869            values: &mut Option<super::GroupType>,
1870            value: super::GroupType,
1871        ) -> Result<(), Error> {
1872            if values.is_some() {
1873                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
1874                    b"group",
1875                )))?;
1876            }
1877            *values = Some(value);
1878            Ok(())
1879        }
1880        fn store_attribute_group(
1881            values: &mut Option<super::AttributeGroupType>,
1882            value: super::AttributeGroupType,
1883        ) -> Result<(), Error> {
1884            if values.is_some() {
1885                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
1886                    b"attributeGroup",
1887                )))?;
1888            }
1889            *values = Some(value);
1890            Ok(())
1891        }
1892        fn store_element(
1893            values: &mut Option<super::ElementType>,
1894            value: super::ElementType,
1895        ) -> Result<(), Error> {
1896            if values.is_some() {
1897                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
1898                    b"element",
1899                )))?;
1900            }
1901            *values = Some(value);
1902            Ok(())
1903        }
1904        fn store_attribute(
1905            values: &mut Option<super::AttributeType>,
1906            value: super::AttributeType,
1907        ) -> Result<(), Error> {
1908            if values.is_some() {
1909                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
1910                    b"attribute",
1911                )))?;
1912            }
1913            *values = Some(value);
1914            Ok(())
1915        }
1916        fn store_notation(
1917            values: &mut Option<super::Notation>,
1918            value: super::Notation,
1919        ) -> Result<(), Error> {
1920            if values.is_some() {
1921                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
1922                    b"notation",
1923                )))?;
1924            }
1925            *values = Some(value);
1926            Ok(())
1927        }
1928        fn handle_include<'de, R>(
1929            &mut self,
1930            reader: &R,
1931            mut values: Option<super::Include>,
1932            output: DeserializerOutput<'de, super::Include>,
1933            fallback: &mut Option<SchemaContentDeserializerState>,
1934        ) -> Result<ElementHandlerOutput<'de>, Error>
1935        where
1936            R: DeserializeReader,
1937        {
1938            let DeserializerOutput {
1939                artifact,
1940                event,
1941                allow_any,
1942            } = output;
1943            if artifact.is_none() {
1944                *self.state = match fallback.take() {
1945                    None => SchemaContentDeserializerState::Init__,
1946                    Some(SchemaContentDeserializerState::Include(_, Some(deserializer))) => {
1947                        SchemaContentDeserializerState::Include(values, Some(deserializer))
1948                    }
1949                    _ => unreachable!(),
1950                };
1951                return Ok(ElementHandlerOutput::break_(event, allow_any));
1952            }
1953            match fallback.take() {
1954                None => (),
1955                Some(SchemaContentDeserializerState::Include(_, Some(deserializer))) => {
1956                    let data = deserializer.finish(reader)?;
1957                    SchemaContentDeserializer::store_include(&mut values, data)?;
1958                }
1959                Some(_) => unreachable!(),
1960            }
1961            Ok(match artifact {
1962                DeserializerArtifact::None => unreachable!(),
1963                DeserializerArtifact::Data(data) => {
1964                    SchemaContentDeserializer::store_include(&mut values, data)?;
1965                    let data = SchemaContentDeserializer::finish_state(
1966                        reader,
1967                        SchemaContentDeserializerState::Include(values, None),
1968                    )?;
1969                    *self.state = SchemaContentDeserializerState::Done__(data);
1970                    ElementHandlerOutput::Break { event, allow_any }
1971                }
1972                DeserializerArtifact::Deserializer(deserializer) => {
1973                    *self.state =
1974                        SchemaContentDeserializerState::Include(values, Some(deserializer));
1975                    ElementHandlerOutput::from_event_end(event, allow_any)
1976                }
1977            })
1978        }
1979        fn handle_import<'de, R>(
1980            &mut self,
1981            reader: &R,
1982            mut values: Option<super::Import>,
1983            output: DeserializerOutput<'de, super::Import>,
1984            fallback: &mut Option<SchemaContentDeserializerState>,
1985        ) -> Result<ElementHandlerOutput<'de>, Error>
1986        where
1987            R: DeserializeReader,
1988        {
1989            let DeserializerOutput {
1990                artifact,
1991                event,
1992                allow_any,
1993            } = output;
1994            if artifact.is_none() {
1995                *self.state = match fallback.take() {
1996                    None => SchemaContentDeserializerState::Init__,
1997                    Some(SchemaContentDeserializerState::Import(_, Some(deserializer))) => {
1998                        SchemaContentDeserializerState::Import(values, Some(deserializer))
1999                    }
2000                    _ => unreachable!(),
2001                };
2002                return Ok(ElementHandlerOutput::break_(event, allow_any));
2003            }
2004            match fallback.take() {
2005                None => (),
2006                Some(SchemaContentDeserializerState::Import(_, Some(deserializer))) => {
2007                    let data = deserializer.finish(reader)?;
2008                    SchemaContentDeserializer::store_import(&mut values, data)?;
2009                }
2010                Some(_) => unreachable!(),
2011            }
2012            Ok(match artifact {
2013                DeserializerArtifact::None => unreachable!(),
2014                DeserializerArtifact::Data(data) => {
2015                    SchemaContentDeserializer::store_import(&mut values, data)?;
2016                    let data = SchemaContentDeserializer::finish_state(
2017                        reader,
2018                        SchemaContentDeserializerState::Import(values, None),
2019                    )?;
2020                    *self.state = SchemaContentDeserializerState::Done__(data);
2021                    ElementHandlerOutput::Break { event, allow_any }
2022                }
2023                DeserializerArtifact::Deserializer(deserializer) => {
2024                    *self.state =
2025                        SchemaContentDeserializerState::Import(values, Some(deserializer));
2026                    ElementHandlerOutput::from_event_end(event, allow_any)
2027                }
2028            })
2029        }
2030        fn handle_redefine<'de, R>(
2031            &mut self,
2032            reader: &R,
2033            mut values: Option<super::Redefine>,
2034            output: DeserializerOutput<'de, super::Redefine>,
2035            fallback: &mut Option<SchemaContentDeserializerState>,
2036        ) -> Result<ElementHandlerOutput<'de>, Error>
2037        where
2038            R: DeserializeReader,
2039        {
2040            let DeserializerOutput {
2041                artifact,
2042                event,
2043                allow_any,
2044            } = output;
2045            if artifact.is_none() {
2046                *self.state = match fallback.take() {
2047                    None => SchemaContentDeserializerState::Init__,
2048                    Some(SchemaContentDeserializerState::Redefine(_, Some(deserializer))) => {
2049                        SchemaContentDeserializerState::Redefine(values, Some(deserializer))
2050                    }
2051                    _ => unreachable!(),
2052                };
2053                return Ok(ElementHandlerOutput::break_(event, allow_any));
2054            }
2055            match fallback.take() {
2056                None => (),
2057                Some(SchemaContentDeserializerState::Redefine(_, Some(deserializer))) => {
2058                    let data = deserializer.finish(reader)?;
2059                    SchemaContentDeserializer::store_redefine(&mut values, data)?;
2060                }
2061                Some(_) => unreachable!(),
2062            }
2063            Ok(match artifact {
2064                DeserializerArtifact::None => unreachable!(),
2065                DeserializerArtifact::Data(data) => {
2066                    SchemaContentDeserializer::store_redefine(&mut values, data)?;
2067                    let data = SchemaContentDeserializer::finish_state(
2068                        reader,
2069                        SchemaContentDeserializerState::Redefine(values, None),
2070                    )?;
2071                    *self.state = SchemaContentDeserializerState::Done__(data);
2072                    ElementHandlerOutput::Break { event, allow_any }
2073                }
2074                DeserializerArtifact::Deserializer(deserializer) => {
2075                    *self.state =
2076                        SchemaContentDeserializerState::Redefine(values, Some(deserializer));
2077                    ElementHandlerOutput::from_event_end(event, allow_any)
2078                }
2079            })
2080        }
2081        fn handle_override_<'de, R>(
2082            &mut self,
2083            reader: &R,
2084            mut values: Option<super::Override>,
2085            output: DeserializerOutput<'de, super::Override>,
2086            fallback: &mut Option<SchemaContentDeserializerState>,
2087        ) -> Result<ElementHandlerOutput<'de>, Error>
2088        where
2089            R: DeserializeReader,
2090        {
2091            let DeserializerOutput {
2092                artifact,
2093                event,
2094                allow_any,
2095            } = output;
2096            if artifact.is_none() {
2097                *self.state = match fallback.take() {
2098                    None => SchemaContentDeserializerState::Init__,
2099                    Some(SchemaContentDeserializerState::Override(_, Some(deserializer))) => {
2100                        SchemaContentDeserializerState::Override(values, Some(deserializer))
2101                    }
2102                    _ => unreachable!(),
2103                };
2104                return Ok(ElementHandlerOutput::break_(event, allow_any));
2105            }
2106            match fallback.take() {
2107                None => (),
2108                Some(SchemaContentDeserializerState::Override(_, Some(deserializer))) => {
2109                    let data = deserializer.finish(reader)?;
2110                    SchemaContentDeserializer::store_override_(&mut values, data)?;
2111                }
2112                Some(_) => unreachable!(),
2113            }
2114            Ok(match artifact {
2115                DeserializerArtifact::None => unreachable!(),
2116                DeserializerArtifact::Data(data) => {
2117                    SchemaContentDeserializer::store_override_(&mut values, data)?;
2118                    let data = SchemaContentDeserializer::finish_state(
2119                        reader,
2120                        SchemaContentDeserializerState::Override(values, None),
2121                    )?;
2122                    *self.state = SchemaContentDeserializerState::Done__(data);
2123                    ElementHandlerOutput::Break { event, allow_any }
2124                }
2125                DeserializerArtifact::Deserializer(deserializer) => {
2126                    *self.state =
2127                        SchemaContentDeserializerState::Override(values, Some(deserializer));
2128                    ElementHandlerOutput::from_event_end(event, allow_any)
2129                }
2130            })
2131        }
2132        fn handle_annotation<'de, R>(
2133            &mut self,
2134            reader: &R,
2135            mut values: Option<super::Annotation>,
2136            output: DeserializerOutput<'de, super::Annotation>,
2137            fallback: &mut Option<SchemaContentDeserializerState>,
2138        ) -> Result<ElementHandlerOutput<'de>, Error>
2139        where
2140            R: DeserializeReader,
2141        {
2142            let DeserializerOutput {
2143                artifact,
2144                event,
2145                allow_any,
2146            } = output;
2147            if artifact.is_none() {
2148                *self.state = match fallback.take() {
2149                    None => SchemaContentDeserializerState::Init__,
2150                    Some(SchemaContentDeserializerState::Annotation(_, Some(deserializer))) => {
2151                        SchemaContentDeserializerState::Annotation(values, Some(deserializer))
2152                    }
2153                    _ => unreachable!(),
2154                };
2155                return Ok(ElementHandlerOutput::break_(event, allow_any));
2156            }
2157            match fallback.take() {
2158                None => (),
2159                Some(SchemaContentDeserializerState::Annotation(_, Some(deserializer))) => {
2160                    let data = deserializer.finish(reader)?;
2161                    SchemaContentDeserializer::store_annotation(&mut values, data)?;
2162                }
2163                Some(_) => unreachable!(),
2164            }
2165            Ok(match artifact {
2166                DeserializerArtifact::None => unreachable!(),
2167                DeserializerArtifact::Data(data) => {
2168                    SchemaContentDeserializer::store_annotation(&mut values, data)?;
2169                    let data = SchemaContentDeserializer::finish_state(
2170                        reader,
2171                        SchemaContentDeserializerState::Annotation(values, None),
2172                    )?;
2173                    *self.state = SchemaContentDeserializerState::Done__(data);
2174                    ElementHandlerOutput::Break { event, allow_any }
2175                }
2176                DeserializerArtifact::Deserializer(deserializer) => {
2177                    *self.state =
2178                        SchemaContentDeserializerState::Annotation(values, Some(deserializer));
2179                    ElementHandlerOutput::from_event_end(event, allow_any)
2180                }
2181            })
2182        }
2183        fn handle_default_open_content<'de, R>(
2184            &mut self,
2185            reader: &R,
2186            mut values: Option<super::DefaultOpenContent>,
2187            output: DeserializerOutput<'de, super::DefaultOpenContent>,
2188            fallback: &mut Option<SchemaContentDeserializerState>,
2189        ) -> Result<ElementHandlerOutput<'de>, Error>
2190        where
2191            R: DeserializeReader,
2192        {
2193            let DeserializerOutput {
2194                artifact,
2195                event,
2196                allow_any,
2197            } = output;
2198            if artifact.is_none() {
2199                *self.state = match fallback.take() {
2200                    None => SchemaContentDeserializerState::Init__,
2201                    Some(SchemaContentDeserializerState::DefaultOpenContent(
2202                        _,
2203                        Some(deserializer),
2204                    )) => SchemaContentDeserializerState::DefaultOpenContent(
2205                        values,
2206                        Some(deserializer),
2207                    ),
2208                    _ => unreachable!(),
2209                };
2210                return Ok(ElementHandlerOutput::break_(event, allow_any));
2211            }
2212            match fallback.take() {
2213                None => (),
2214                Some(SchemaContentDeserializerState::DefaultOpenContent(_, Some(deserializer))) => {
2215                    let data = deserializer.finish(reader)?;
2216                    SchemaContentDeserializer::store_default_open_content(&mut values, data)?;
2217                }
2218                Some(_) => unreachable!(),
2219            }
2220            Ok(match artifact {
2221                DeserializerArtifact::None => unreachable!(),
2222                DeserializerArtifact::Data(data) => {
2223                    SchemaContentDeserializer::store_default_open_content(&mut values, data)?;
2224                    let data = SchemaContentDeserializer::finish_state(
2225                        reader,
2226                        SchemaContentDeserializerState::DefaultOpenContent(values, None),
2227                    )?;
2228                    *self.state = SchemaContentDeserializerState::Done__(data);
2229                    ElementHandlerOutput::Break { event, allow_any }
2230                }
2231                DeserializerArtifact::Deserializer(deserializer) => {
2232                    *self.state = SchemaContentDeserializerState::DefaultOpenContent(
2233                        values,
2234                        Some(deserializer),
2235                    );
2236                    ElementHandlerOutput::from_event_end(event, allow_any)
2237                }
2238            })
2239        }
2240        fn handle_simple_type<'de, R>(
2241            &mut self,
2242            reader: &R,
2243            mut values: Option<super::SimpleBaseType>,
2244            output: DeserializerOutput<'de, super::SimpleBaseType>,
2245            fallback: &mut Option<SchemaContentDeserializerState>,
2246        ) -> Result<ElementHandlerOutput<'de>, Error>
2247        where
2248            R: DeserializeReader,
2249        {
2250            let DeserializerOutput {
2251                artifact,
2252                event,
2253                allow_any,
2254            } = output;
2255            if artifact.is_none() {
2256                *self.state = match fallback.take() {
2257                    None => SchemaContentDeserializerState::Init__,
2258                    Some(SchemaContentDeserializerState::SimpleType(_, Some(deserializer))) => {
2259                        SchemaContentDeserializerState::SimpleType(values, Some(deserializer))
2260                    }
2261                    _ => unreachable!(),
2262                };
2263                return Ok(ElementHandlerOutput::break_(event, allow_any));
2264            }
2265            match fallback.take() {
2266                None => (),
2267                Some(SchemaContentDeserializerState::SimpleType(_, Some(deserializer))) => {
2268                    let data = deserializer.finish(reader)?;
2269                    SchemaContentDeserializer::store_simple_type(&mut values, data)?;
2270                }
2271                Some(_) => unreachable!(),
2272            }
2273            Ok(match artifact {
2274                DeserializerArtifact::None => unreachable!(),
2275                DeserializerArtifact::Data(data) => {
2276                    SchemaContentDeserializer::store_simple_type(&mut values, data)?;
2277                    let data = SchemaContentDeserializer::finish_state(
2278                        reader,
2279                        SchemaContentDeserializerState::SimpleType(values, None),
2280                    )?;
2281                    *self.state = SchemaContentDeserializerState::Done__(data);
2282                    ElementHandlerOutput::Break { event, allow_any }
2283                }
2284                DeserializerArtifact::Deserializer(deserializer) => {
2285                    *self.state =
2286                        SchemaContentDeserializerState::SimpleType(values, Some(deserializer));
2287                    ElementHandlerOutput::from_event_end(event, allow_any)
2288                }
2289            })
2290        }
2291        fn handle_complex_type<'de, R>(
2292            &mut self,
2293            reader: &R,
2294            mut values: Option<super::ComplexBaseType>,
2295            output: DeserializerOutput<'de, super::ComplexBaseType>,
2296            fallback: &mut Option<SchemaContentDeserializerState>,
2297        ) -> Result<ElementHandlerOutput<'de>, Error>
2298        where
2299            R: DeserializeReader,
2300        {
2301            let DeserializerOutput {
2302                artifact,
2303                event,
2304                allow_any,
2305            } = output;
2306            if artifact.is_none() {
2307                *self.state = match fallback.take() {
2308                    None => SchemaContentDeserializerState::Init__,
2309                    Some(SchemaContentDeserializerState::ComplexType(_, Some(deserializer))) => {
2310                        SchemaContentDeserializerState::ComplexType(values, Some(deserializer))
2311                    }
2312                    _ => unreachable!(),
2313                };
2314                return Ok(ElementHandlerOutput::break_(event, allow_any));
2315            }
2316            match fallback.take() {
2317                None => (),
2318                Some(SchemaContentDeserializerState::ComplexType(_, Some(deserializer))) => {
2319                    let data = deserializer.finish(reader)?;
2320                    SchemaContentDeserializer::store_complex_type(&mut values, data)?;
2321                }
2322                Some(_) => unreachable!(),
2323            }
2324            Ok(match artifact {
2325                DeserializerArtifact::None => unreachable!(),
2326                DeserializerArtifact::Data(data) => {
2327                    SchemaContentDeserializer::store_complex_type(&mut values, data)?;
2328                    let data = SchemaContentDeserializer::finish_state(
2329                        reader,
2330                        SchemaContentDeserializerState::ComplexType(values, None),
2331                    )?;
2332                    *self.state = SchemaContentDeserializerState::Done__(data);
2333                    ElementHandlerOutput::Break { event, allow_any }
2334                }
2335                DeserializerArtifact::Deserializer(deserializer) => {
2336                    *self.state =
2337                        SchemaContentDeserializerState::ComplexType(values, Some(deserializer));
2338                    ElementHandlerOutput::from_event_end(event, allow_any)
2339                }
2340            })
2341        }
2342        fn handle_group<'de, R>(
2343            &mut self,
2344            reader: &R,
2345            mut values: Option<super::GroupType>,
2346            output: DeserializerOutput<'de, super::GroupType>,
2347            fallback: &mut Option<SchemaContentDeserializerState>,
2348        ) -> Result<ElementHandlerOutput<'de>, Error>
2349        where
2350            R: DeserializeReader,
2351        {
2352            let DeserializerOutput {
2353                artifact,
2354                event,
2355                allow_any,
2356            } = output;
2357            if artifact.is_none() {
2358                *self.state = match fallback.take() {
2359                    None => SchemaContentDeserializerState::Init__,
2360                    Some(SchemaContentDeserializerState::Group(_, Some(deserializer))) => {
2361                        SchemaContentDeserializerState::Group(values, Some(deserializer))
2362                    }
2363                    _ => unreachable!(),
2364                };
2365                return Ok(ElementHandlerOutput::break_(event, allow_any));
2366            }
2367            match fallback.take() {
2368                None => (),
2369                Some(SchemaContentDeserializerState::Group(_, Some(deserializer))) => {
2370                    let data = deserializer.finish(reader)?;
2371                    SchemaContentDeserializer::store_group(&mut values, data)?;
2372                }
2373                Some(_) => unreachable!(),
2374            }
2375            Ok(match artifact {
2376                DeserializerArtifact::None => unreachable!(),
2377                DeserializerArtifact::Data(data) => {
2378                    SchemaContentDeserializer::store_group(&mut values, data)?;
2379                    let data = SchemaContentDeserializer::finish_state(
2380                        reader,
2381                        SchemaContentDeserializerState::Group(values, None),
2382                    )?;
2383                    *self.state = SchemaContentDeserializerState::Done__(data);
2384                    ElementHandlerOutput::Break { event, allow_any }
2385                }
2386                DeserializerArtifact::Deserializer(deserializer) => {
2387                    *self.state = SchemaContentDeserializerState::Group(values, Some(deserializer));
2388                    ElementHandlerOutput::from_event_end(event, allow_any)
2389                }
2390            })
2391        }
2392        fn handle_attribute_group<'de, R>(
2393            &mut self,
2394            reader: &R,
2395            mut values: Option<super::AttributeGroupType>,
2396            output: DeserializerOutput<'de, super::AttributeGroupType>,
2397            fallback: &mut Option<SchemaContentDeserializerState>,
2398        ) -> Result<ElementHandlerOutput<'de>, Error>
2399        where
2400            R: DeserializeReader,
2401        {
2402            let DeserializerOutput {
2403                artifact,
2404                event,
2405                allow_any,
2406            } = output;
2407            if artifact.is_none() {
2408                *self.state = match fallback.take() {
2409                    None => SchemaContentDeserializerState::Init__,
2410                    Some(SchemaContentDeserializerState::AttributeGroup(_, Some(deserializer))) => {
2411                        SchemaContentDeserializerState::AttributeGroup(values, Some(deserializer))
2412                    }
2413                    _ => unreachable!(),
2414                };
2415                return Ok(ElementHandlerOutput::break_(event, allow_any));
2416            }
2417            match fallback.take() {
2418                None => (),
2419                Some(SchemaContentDeserializerState::AttributeGroup(_, Some(deserializer))) => {
2420                    let data = deserializer.finish(reader)?;
2421                    SchemaContentDeserializer::store_attribute_group(&mut values, data)?;
2422                }
2423                Some(_) => unreachable!(),
2424            }
2425            Ok(match artifact {
2426                DeserializerArtifact::None => unreachable!(),
2427                DeserializerArtifact::Data(data) => {
2428                    SchemaContentDeserializer::store_attribute_group(&mut values, data)?;
2429                    let data = SchemaContentDeserializer::finish_state(
2430                        reader,
2431                        SchemaContentDeserializerState::AttributeGroup(values, None),
2432                    )?;
2433                    *self.state = SchemaContentDeserializerState::Done__(data);
2434                    ElementHandlerOutput::Break { event, allow_any }
2435                }
2436                DeserializerArtifact::Deserializer(deserializer) => {
2437                    *self.state =
2438                        SchemaContentDeserializerState::AttributeGroup(values, Some(deserializer));
2439                    ElementHandlerOutput::from_event_end(event, allow_any)
2440                }
2441            })
2442        }
2443        fn handle_element<'de, R>(
2444            &mut self,
2445            reader: &R,
2446            mut values: Option<super::ElementType>,
2447            output: DeserializerOutput<'de, super::ElementType>,
2448            fallback: &mut Option<SchemaContentDeserializerState>,
2449        ) -> Result<ElementHandlerOutput<'de>, Error>
2450        where
2451            R: DeserializeReader,
2452        {
2453            let DeserializerOutput {
2454                artifact,
2455                event,
2456                allow_any,
2457            } = output;
2458            if artifact.is_none() {
2459                *self.state = match fallback.take() {
2460                    None => SchemaContentDeserializerState::Init__,
2461                    Some(SchemaContentDeserializerState::Element(_, Some(deserializer))) => {
2462                        SchemaContentDeserializerState::Element(values, Some(deserializer))
2463                    }
2464                    _ => unreachable!(),
2465                };
2466                return Ok(ElementHandlerOutput::break_(event, allow_any));
2467            }
2468            match fallback.take() {
2469                None => (),
2470                Some(SchemaContentDeserializerState::Element(_, Some(deserializer))) => {
2471                    let data = deserializer.finish(reader)?;
2472                    SchemaContentDeserializer::store_element(&mut values, data)?;
2473                }
2474                Some(_) => unreachable!(),
2475            }
2476            Ok(match artifact {
2477                DeserializerArtifact::None => unreachable!(),
2478                DeserializerArtifact::Data(data) => {
2479                    SchemaContentDeserializer::store_element(&mut values, data)?;
2480                    let data = SchemaContentDeserializer::finish_state(
2481                        reader,
2482                        SchemaContentDeserializerState::Element(values, None),
2483                    )?;
2484                    *self.state = SchemaContentDeserializerState::Done__(data);
2485                    ElementHandlerOutput::Break { event, allow_any }
2486                }
2487                DeserializerArtifact::Deserializer(deserializer) => {
2488                    *self.state =
2489                        SchemaContentDeserializerState::Element(values, Some(deserializer));
2490                    ElementHandlerOutput::from_event_end(event, allow_any)
2491                }
2492            })
2493        }
2494        fn handle_attribute<'de, R>(
2495            &mut self,
2496            reader: &R,
2497            mut values: Option<super::AttributeType>,
2498            output: DeserializerOutput<'de, super::AttributeType>,
2499            fallback: &mut Option<SchemaContentDeserializerState>,
2500        ) -> Result<ElementHandlerOutput<'de>, Error>
2501        where
2502            R: DeserializeReader,
2503        {
2504            let DeserializerOutput {
2505                artifact,
2506                event,
2507                allow_any,
2508            } = output;
2509            if artifact.is_none() {
2510                *self.state = match fallback.take() {
2511                    None => SchemaContentDeserializerState::Init__,
2512                    Some(SchemaContentDeserializerState::Attribute(_, Some(deserializer))) => {
2513                        SchemaContentDeserializerState::Attribute(values, Some(deserializer))
2514                    }
2515                    _ => unreachable!(),
2516                };
2517                return Ok(ElementHandlerOutput::break_(event, allow_any));
2518            }
2519            match fallback.take() {
2520                None => (),
2521                Some(SchemaContentDeserializerState::Attribute(_, Some(deserializer))) => {
2522                    let data = deserializer.finish(reader)?;
2523                    SchemaContentDeserializer::store_attribute(&mut values, data)?;
2524                }
2525                Some(_) => unreachable!(),
2526            }
2527            Ok(match artifact {
2528                DeserializerArtifact::None => unreachable!(),
2529                DeserializerArtifact::Data(data) => {
2530                    SchemaContentDeserializer::store_attribute(&mut values, data)?;
2531                    let data = SchemaContentDeserializer::finish_state(
2532                        reader,
2533                        SchemaContentDeserializerState::Attribute(values, None),
2534                    )?;
2535                    *self.state = SchemaContentDeserializerState::Done__(data);
2536                    ElementHandlerOutput::Break { event, allow_any }
2537                }
2538                DeserializerArtifact::Deserializer(deserializer) => {
2539                    *self.state =
2540                        SchemaContentDeserializerState::Attribute(values, Some(deserializer));
2541                    ElementHandlerOutput::from_event_end(event, allow_any)
2542                }
2543            })
2544        }
2545        fn handle_notation<'de, R>(
2546            &mut self,
2547            reader: &R,
2548            mut values: Option<super::Notation>,
2549            output: DeserializerOutput<'de, super::Notation>,
2550            fallback: &mut Option<SchemaContentDeserializerState>,
2551        ) -> Result<ElementHandlerOutput<'de>, Error>
2552        where
2553            R: DeserializeReader,
2554        {
2555            let DeserializerOutput {
2556                artifact,
2557                event,
2558                allow_any,
2559            } = output;
2560            if artifact.is_none() {
2561                *self.state = match fallback.take() {
2562                    None => SchemaContentDeserializerState::Init__,
2563                    Some(SchemaContentDeserializerState::Notation(_, Some(deserializer))) => {
2564                        SchemaContentDeserializerState::Notation(values, Some(deserializer))
2565                    }
2566                    _ => unreachable!(),
2567                };
2568                return Ok(ElementHandlerOutput::break_(event, allow_any));
2569            }
2570            match fallback.take() {
2571                None => (),
2572                Some(SchemaContentDeserializerState::Notation(_, Some(deserializer))) => {
2573                    let data = deserializer.finish(reader)?;
2574                    SchemaContentDeserializer::store_notation(&mut values, data)?;
2575                }
2576                Some(_) => unreachable!(),
2577            }
2578            Ok(match artifact {
2579                DeserializerArtifact::None => unreachable!(),
2580                DeserializerArtifact::Data(data) => {
2581                    SchemaContentDeserializer::store_notation(&mut values, data)?;
2582                    let data = SchemaContentDeserializer::finish_state(
2583                        reader,
2584                        SchemaContentDeserializerState::Notation(values, None),
2585                    )?;
2586                    *self.state = SchemaContentDeserializerState::Done__(data);
2587                    ElementHandlerOutput::Break { event, allow_any }
2588                }
2589                DeserializerArtifact::Deserializer(deserializer) => {
2590                    *self.state =
2591                        SchemaContentDeserializerState::Notation(values, Some(deserializer));
2592                    ElementHandlerOutput::from_event_end(event, allow_any)
2593                }
2594            })
2595        }
2596    }
2597    impl<'de> Deserializer<'de, super::SchemaContent> for Box<SchemaContentDeserializer> {
2598        fn init<R>(reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::SchemaContent>
2599        where
2600            R: DeserializeReader,
2601        {
2602            let deserializer = Box::new(SchemaContentDeserializer {
2603                state: Box::new(SchemaContentDeserializerState::Init__),
2604            });
2605            let mut output = deserializer.next(reader, event)?;
2606            output.artifact = match output.artifact {
2607                DeserializerArtifact::Deserializer(x)
2608                    if matches!(&*x.state, SchemaContentDeserializerState::Init__) =>
2609                {
2610                    DeserializerArtifact::None
2611                }
2612                artifact => artifact,
2613            };
2614            Ok(output)
2615        }
2616        fn next<R>(
2617            mut self,
2618            reader: &R,
2619            event: Event<'de>,
2620        ) -> DeserializerResult<'de, super::SchemaContent>
2621        where
2622            R: DeserializeReader,
2623        {
2624            use SchemaContentDeserializerState as S;
2625            let mut event = event;
2626            let mut fallback = None;
2627            let (event, allow_any) = loop {
2628                let state = replace(&mut *self.state, S::Unknown__);
2629                event = match (state, event) {
2630                    (S::Include(values, Some(deserializer)), event) => {
2631                        let output = deserializer.next(reader, event)?;
2632                        match self.handle_include(reader, values, output, &mut fallback)? {
2633                            ElementHandlerOutput::Break { event, allow_any } => {
2634                                break (event, allow_any)
2635                            }
2636                            ElementHandlerOutput::Continue { event, .. } => event,
2637                        }
2638                    }
2639                    (S::Import(values, Some(deserializer)), event) => {
2640                        let output = deserializer.next(reader, event)?;
2641                        match self.handle_import(reader, values, output, &mut fallback)? {
2642                            ElementHandlerOutput::Break { event, allow_any } => {
2643                                break (event, allow_any)
2644                            }
2645                            ElementHandlerOutput::Continue { event, .. } => event,
2646                        }
2647                    }
2648                    (S::Redefine(values, Some(deserializer)), event) => {
2649                        let output = deserializer.next(reader, event)?;
2650                        match self.handle_redefine(reader, values, output, &mut fallback)? {
2651                            ElementHandlerOutput::Break { event, allow_any } => {
2652                                break (event, allow_any)
2653                            }
2654                            ElementHandlerOutput::Continue { event, .. } => event,
2655                        }
2656                    }
2657                    (S::Override(values, Some(deserializer)), event) => {
2658                        let output = deserializer.next(reader, event)?;
2659                        match self.handle_override_(reader, values, output, &mut fallback)? {
2660                            ElementHandlerOutput::Break { event, allow_any } => {
2661                                break (event, allow_any)
2662                            }
2663                            ElementHandlerOutput::Continue { event, .. } => event,
2664                        }
2665                    }
2666                    (S::Annotation(values, Some(deserializer)), event) => {
2667                        let output = deserializer.next(reader, event)?;
2668                        match self.handle_annotation(reader, values, output, &mut fallback)? {
2669                            ElementHandlerOutput::Break { event, allow_any } => {
2670                                break (event, allow_any)
2671                            }
2672                            ElementHandlerOutput::Continue { event, .. } => event,
2673                        }
2674                    }
2675                    (S::DefaultOpenContent(values, Some(deserializer)), event) => {
2676                        let output = deserializer.next(reader, event)?;
2677                        match self.handle_default_open_content(
2678                            reader,
2679                            values,
2680                            output,
2681                            &mut fallback,
2682                        )? {
2683                            ElementHandlerOutput::Break { event, allow_any } => {
2684                                break (event, allow_any)
2685                            }
2686                            ElementHandlerOutput::Continue { event, .. } => event,
2687                        }
2688                    }
2689                    (S::SimpleType(values, Some(deserializer)), event) => {
2690                        let output = deserializer.next(reader, event)?;
2691                        match self.handle_simple_type(reader, values, output, &mut fallback)? {
2692                            ElementHandlerOutput::Break { event, allow_any } => {
2693                                break (event, allow_any)
2694                            }
2695                            ElementHandlerOutput::Continue { event, .. } => event,
2696                        }
2697                    }
2698                    (S::ComplexType(values, Some(deserializer)), event) => {
2699                        let output = deserializer.next(reader, event)?;
2700                        match self.handle_complex_type(reader, values, output, &mut fallback)? {
2701                            ElementHandlerOutput::Break { event, allow_any } => {
2702                                break (event, allow_any)
2703                            }
2704                            ElementHandlerOutput::Continue { event, .. } => event,
2705                        }
2706                    }
2707                    (S::Group(values, Some(deserializer)), event) => {
2708                        let output = deserializer.next(reader, event)?;
2709                        match self.handle_group(reader, values, output, &mut fallback)? {
2710                            ElementHandlerOutput::Break { event, allow_any } => {
2711                                break (event, allow_any)
2712                            }
2713                            ElementHandlerOutput::Continue { event, .. } => event,
2714                        }
2715                    }
2716                    (S::AttributeGroup(values, Some(deserializer)), event) => {
2717                        let output = deserializer.next(reader, event)?;
2718                        match self.handle_attribute_group(reader, values, output, &mut fallback)? {
2719                            ElementHandlerOutput::Break { event, allow_any } => {
2720                                break (event, allow_any)
2721                            }
2722                            ElementHandlerOutput::Continue { event, .. } => event,
2723                        }
2724                    }
2725                    (S::Element(values, Some(deserializer)), event) => {
2726                        let output = deserializer.next(reader, event)?;
2727                        match self.handle_element(reader, values, output, &mut fallback)? {
2728                            ElementHandlerOutput::Break { event, allow_any } => {
2729                                break (event, allow_any)
2730                            }
2731                            ElementHandlerOutput::Continue { event, .. } => event,
2732                        }
2733                    }
2734                    (S::Attribute(values, Some(deserializer)), event) => {
2735                        let output = deserializer.next(reader, event)?;
2736                        match self.handle_attribute(reader, values, output, &mut fallback)? {
2737                            ElementHandlerOutput::Break { event, allow_any } => {
2738                                break (event, allow_any)
2739                            }
2740                            ElementHandlerOutput::Continue { event, .. } => event,
2741                        }
2742                    }
2743                    (S::Notation(values, Some(deserializer)), event) => {
2744                        let output = deserializer.next(reader, event)?;
2745                        match self.handle_notation(reader, values, output, &mut fallback)? {
2746                            ElementHandlerOutput::Break { event, allow_any } => {
2747                                break (event, allow_any)
2748                            }
2749                            ElementHandlerOutput::Continue { event, .. } => event,
2750                        }
2751                    }
2752                    (state, event @ Event::End(_)) => {
2753                        return Ok(DeserializerOutput {
2754                            artifact: DeserializerArtifact::Data(
2755                                SchemaContentDeserializer::finish_state(reader, state)?,
2756                            ),
2757                            event: DeserializerEvent::Continue(event),
2758                            allow_any: false,
2759                        });
2760                    }
2761                    (S::Init__, event) => match self.find_suitable(reader, event, &mut fallback)? {
2762                        ElementHandlerOutput::Break { event, allow_any } => {
2763                            break (event, allow_any)
2764                        }
2765                        ElementHandlerOutput::Continue { event, .. } => event,
2766                    },
2767                    (S::Include(values, None), event) => {
2768                        let output = <super::Include as WithDeserializer>::Deserializer::init(
2769                            reader, event,
2770                        )?;
2771                        match self.handle_include(reader, 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) => {
2779                        let output =
2780                            <super::Import as WithDeserializer>::Deserializer::init(reader, event)?;
2781                        match self.handle_import(reader, values, output, &mut fallback)? {
2782                            ElementHandlerOutput::Break { event, allow_any } => {
2783                                break (event, allow_any)
2784                            }
2785                            ElementHandlerOutput::Continue { event, .. } => event,
2786                        }
2787                    }
2788                    (S::Redefine(values, None), event) => {
2789                        let output = <super::Redefine as WithDeserializer>::Deserializer::init(
2790                            reader, event,
2791                        )?;
2792                        match self.handle_redefine(reader, values, output, &mut fallback)? {
2793                            ElementHandlerOutput::Break { event, allow_any } => {
2794                                break (event, allow_any)
2795                            }
2796                            ElementHandlerOutput::Continue { event, .. } => event,
2797                        }
2798                    }
2799                    (S::Override(values, None), event) => {
2800                        let output = <super::Override as WithDeserializer>::Deserializer::init(
2801                            reader, event,
2802                        )?;
2803                        match self.handle_override_(reader, values, output, &mut fallback)? {
2804                            ElementHandlerOutput::Break { event, allow_any } => {
2805                                break (event, allow_any)
2806                            }
2807                            ElementHandlerOutput::Continue { event, .. } => event,
2808                        }
2809                    }
2810                    (S::Annotation(values, None), event) => {
2811                        let output = <super::Annotation as WithDeserializer>::Deserializer::init(
2812                            reader, event,
2813                        )?;
2814                        match self.handle_annotation(reader, values, output, &mut fallback)? {
2815                            ElementHandlerOutput::Break { event, allow_any } => {
2816                                break (event, allow_any)
2817                            }
2818                            ElementHandlerOutput::Continue { event, .. } => event,
2819                        }
2820                    }
2821                    (S::DefaultOpenContent(values, None), event) => {
2822                        let output =
2823                            <super::DefaultOpenContent as WithDeserializer>::Deserializer::init(
2824                                reader, event,
2825                            )?;
2826                        match self.handle_default_open_content(
2827                            reader,
2828                            values,
2829                            output,
2830                            &mut fallback,
2831                        )? {
2832                            ElementHandlerOutput::Break { event, allow_any } => {
2833                                break (event, allow_any)
2834                            }
2835                            ElementHandlerOutput::Continue { event, .. } => event,
2836                        }
2837                    }
2838                    (S::SimpleType(values, None), event) => {
2839                        let output =
2840                            <super::SimpleBaseType as WithDeserializer>::Deserializer::init(
2841                                reader, event,
2842                            )?;
2843                        match self.handle_simple_type(reader, values, output, &mut fallback)? {
2844                            ElementHandlerOutput::Break { event, allow_any } => {
2845                                break (event, allow_any)
2846                            }
2847                            ElementHandlerOutput::Continue { event, .. } => event,
2848                        }
2849                    }
2850                    (S::ComplexType(values, None), event) => {
2851                        let output =
2852                            <super::ComplexBaseType as WithDeserializer>::Deserializer::init(
2853                                reader, event,
2854                            )?;
2855                        match self.handle_complex_type(reader, values, output, &mut fallback)? {
2856                            ElementHandlerOutput::Break { event, allow_any } => {
2857                                break (event, allow_any)
2858                            }
2859                            ElementHandlerOutput::Continue { event, .. } => event,
2860                        }
2861                    }
2862                    (S::Group(values, None), event) => {
2863                        let output = <super::GroupType as WithDeserializer>::Deserializer::init(
2864                            reader, event,
2865                        )?;
2866                        match self.handle_group(reader, values, output, &mut fallback)? {
2867                            ElementHandlerOutput::Break { event, allow_any } => {
2868                                break (event, allow_any)
2869                            }
2870                            ElementHandlerOutput::Continue { event, .. } => event,
2871                        }
2872                    }
2873                    (S::AttributeGroup(values, None), event) => {
2874                        let output =
2875                            <super::AttributeGroupType as WithDeserializer>::Deserializer::init(
2876                                reader, event,
2877                            )?;
2878                        match self.handle_attribute_group(reader, values, output, &mut fallback)? {
2879                            ElementHandlerOutput::Break { event, allow_any } => {
2880                                break (event, allow_any)
2881                            }
2882                            ElementHandlerOutput::Continue { event, .. } => event,
2883                        }
2884                    }
2885                    (S::Element(values, None), event) => {
2886                        let output = <super::ElementType as WithDeserializer>::Deserializer::init(
2887                            reader, event,
2888                        )?;
2889                        match self.handle_element(reader, values, output, &mut fallback)? {
2890                            ElementHandlerOutput::Break { event, allow_any } => {
2891                                break (event, allow_any)
2892                            }
2893                            ElementHandlerOutput::Continue { event, .. } => event,
2894                        }
2895                    }
2896                    (S::Attribute(values, None), event) => {
2897                        let output =
2898                            <super::AttributeType as WithDeserializer>::Deserializer::init(
2899                                reader, event,
2900                            )?;
2901                        match self.handle_attribute(reader, values, output, &mut fallback)? {
2902                            ElementHandlerOutput::Break { event, allow_any } => {
2903                                break (event, allow_any)
2904                            }
2905                            ElementHandlerOutput::Continue { event, .. } => event,
2906                        }
2907                    }
2908                    (S::Notation(values, None), event) => {
2909                        let output = <super::Notation as WithDeserializer>::Deserializer::init(
2910                            reader, event,
2911                        )?;
2912                        match self.handle_notation(reader, values, output, &mut fallback)? {
2913                            ElementHandlerOutput::Break { event, allow_any } => {
2914                                break (event, allow_any)
2915                            }
2916                            ElementHandlerOutput::Continue { event, .. } => event,
2917                        }
2918                    }
2919                    (s @ S::Done__(_), event) => {
2920                        *self.state = s;
2921                        break (DeserializerEvent::Continue(event), false);
2922                    }
2923                    (S::Unknown__, _) => unreachable!(),
2924                }
2925            };
2926            let artifact = if matches!(&*self.state, S::Done__(_)) {
2927                DeserializerArtifact::Data(self.finish(reader)?)
2928            } else {
2929                DeserializerArtifact::Deserializer(self)
2930            };
2931            Ok(DeserializerOutput {
2932                artifact,
2933                event,
2934                allow_any,
2935            })
2936        }
2937        fn finish<R>(self, reader: &R) -> Result<super::SchemaContent, Error>
2938        where
2939            R: DeserializeReader,
2940        {
2941            SchemaContentDeserializer::finish_state(reader, *self.state)
2942        }
2943    }
2944    #[derive(Debug)]
2945    pub struct IncludeDeserializer {
2946        id: Option<String>,
2947        schema_location: String,
2948        annotation: Option<super::Annotation>,
2949        state: Box<IncludeDeserializerState>,
2950    }
2951    #[derive(Debug)]
2952    enum IncludeDeserializerState {
2953        Init__,
2954        Annotation(Option<<super::Annotation as WithDeserializer>::Deserializer>),
2955        Done__,
2956        Unknown__,
2957    }
2958    impl IncludeDeserializer {
2959        fn from_bytes_start<R>(reader: &R, bytes_start: &BytesStart<'_>) -> Result<Box<Self>, Error>
2960        where
2961            R: DeserializeReader,
2962        {
2963            let mut id: Option<String> = None;
2964            let mut schema_location: Option<String> = None;
2965            for attrib in filter_xmlns_attributes(bytes_start) {
2966                let attrib = attrib?;
2967                if matches!(
2968                    reader.resolve_local_name(attrib.key, &super::NS_XS),
2969                    Some(b"id")
2970                ) {
2971                    reader.read_attrib(&mut id, b"id", &attrib.value)?;
2972                } else if matches!(
2973                    reader.resolve_local_name(attrib.key, &super::NS_XS),
2974                    Some(b"schemaLocation")
2975                ) {
2976                    reader.read_attrib(&mut schema_location, b"schemaLocation", &attrib.value)?;
2977                }
2978            }
2979            Ok(Box::new(Self {
2980                id: id,
2981                schema_location: schema_location.ok_or_else(|| {
2982                    reader.map_error(ErrorKind::MissingAttribute("schemaLocation".into()))
2983                })?,
2984                annotation: None,
2985                state: Box::new(IncludeDeserializerState::Init__),
2986            }))
2987        }
2988        fn finish_state<R>(
2989            &mut self,
2990            reader: &R,
2991            state: IncludeDeserializerState,
2992        ) -> Result<(), Error>
2993        where
2994            R: DeserializeReader,
2995        {
2996            use IncludeDeserializerState as S;
2997            match state {
2998                S::Annotation(Some(deserializer)) => {
2999                    self.store_annotation(deserializer.finish(reader)?)?
3000                }
3001                _ => (),
3002            }
3003            Ok(())
3004        }
3005        fn store_annotation(&mut self, value: super::Annotation) -> Result<(), Error> {
3006            if self.annotation.is_some() {
3007                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
3008                    b"annotation",
3009                )))?;
3010            }
3011            self.annotation = Some(value);
3012            Ok(())
3013        }
3014        fn handle_annotation<'de, R>(
3015            &mut self,
3016            reader: &R,
3017            output: DeserializerOutput<'de, super::Annotation>,
3018            fallback: &mut Option<IncludeDeserializerState>,
3019        ) -> Result<ElementHandlerOutput<'de>, Error>
3020        where
3021            R: DeserializeReader,
3022        {
3023            let DeserializerOutput {
3024                artifact,
3025                event,
3026                allow_any,
3027            } = output;
3028            if artifact.is_none() {
3029                fallback.get_or_insert(IncludeDeserializerState::Annotation(None));
3030                *self.state = IncludeDeserializerState::Done__;
3031                return Ok(ElementHandlerOutput::from_event(event, allow_any));
3032            }
3033            if let Some(fallback) = fallback.take() {
3034                self.finish_state(reader, fallback)?;
3035            }
3036            Ok(match artifact {
3037                DeserializerArtifact::None => unreachable!(),
3038                DeserializerArtifact::Data(data) => {
3039                    self.store_annotation(data)?;
3040                    *self.state = IncludeDeserializerState::Done__;
3041                    ElementHandlerOutput::from_event(event, allow_any)
3042                }
3043                DeserializerArtifact::Deserializer(deserializer) => {
3044                    let ret = ElementHandlerOutput::from_event(event, allow_any);
3045                    match &ret {
3046                        ElementHandlerOutput::Continue { .. } => {
3047                            fallback.get_or_insert(IncludeDeserializerState::Annotation(Some(
3048                                deserializer,
3049                            )));
3050                            *self.state = IncludeDeserializerState::Done__;
3051                        }
3052                        ElementHandlerOutput::Break { .. } => {
3053                            *self.state = IncludeDeserializerState::Annotation(Some(deserializer));
3054                        }
3055                    }
3056                    ret
3057                }
3058            })
3059        }
3060    }
3061    impl<'de> Deserializer<'de, super::Include> for Box<IncludeDeserializer> {
3062        fn init<R>(reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::Include>
3063        where
3064            R: DeserializeReader,
3065        {
3066            reader.init_deserializer_from_start_event(event, IncludeDeserializer::from_bytes_start)
3067        }
3068        fn next<R>(
3069            mut self,
3070            reader: &R,
3071            event: Event<'de>,
3072        ) -> DeserializerResult<'de, super::Include>
3073        where
3074            R: DeserializeReader,
3075        {
3076            use IncludeDeserializerState as S;
3077            let mut event = event;
3078            let mut fallback = None;
3079            let mut allow_any_element = false;
3080            let (event, allow_any) = loop {
3081                let state = replace(&mut *self.state, S::Unknown__);
3082                event = match (state, event) {
3083                    (S::Annotation(Some(deserializer)), event) => {
3084                        let output = deserializer.next(reader, event)?;
3085                        match self.handle_annotation(reader, output, &mut fallback)? {
3086                            ElementHandlerOutput::Continue { event, allow_any } => {
3087                                allow_any_element = allow_any_element || allow_any;
3088                                event
3089                            }
3090                            ElementHandlerOutput::Break { event, allow_any } => {
3091                                break (event, allow_any)
3092                            }
3093                        }
3094                    }
3095                    (_, Event::End(_)) => {
3096                        if let Some(fallback) = fallback.take() {
3097                            self.finish_state(reader, fallback)?;
3098                        }
3099                        return Ok(DeserializerOutput {
3100                            artifact: DeserializerArtifact::Data(self.finish(reader)?),
3101                            event: DeserializerEvent::None,
3102                            allow_any: false,
3103                        });
3104                    }
3105                    (S::Init__, event) => {
3106                        fallback.get_or_insert(S::Init__);
3107                        *self.state = IncludeDeserializerState::Annotation(None);
3108                        event
3109                    }
3110                    (S::Annotation(None), event @ (Event::Start(_) | Event::Empty(_))) => {
3111                        if reader.check_start_tag_name(&event, Some(&super::NS_XS), b"annotation") {
3112                            let output =
3113                                <super::Annotation as WithDeserializer>::Deserializer::init(
3114                                    reader, event,
3115                                )?;
3116                            match self.handle_annotation(reader, output, &mut fallback)? {
3117                                ElementHandlerOutput::Continue { event, allow_any } => {
3118                                    allow_any_element = allow_any_element || allow_any;
3119                                    event
3120                                }
3121                                ElementHandlerOutput::Break { event, allow_any } => {
3122                                    break (event, allow_any)
3123                                }
3124                            }
3125                        } else {
3126                            *self.state = S::Done__;
3127                            allow_any_element = true;
3128                            fallback.get_or_insert(S::Annotation(None));
3129                            event
3130                        }
3131                    }
3132                    (S::Done__, event) => {
3133                        fallback.get_or_insert(S::Done__);
3134                        break (DeserializerEvent::Continue(event), allow_any_element);
3135                    }
3136                    (S::Unknown__, _) => unreachable!(),
3137                    (state, event) => {
3138                        *self.state = state;
3139                        break (DeserializerEvent::Break(event), false);
3140                    }
3141                }
3142            };
3143            if let Some(fallback) = fallback {
3144                *self.state = fallback;
3145            }
3146            Ok(DeserializerOutput {
3147                artifact: DeserializerArtifact::Deserializer(self),
3148                event,
3149                allow_any,
3150            })
3151        }
3152        fn finish<R>(mut self, reader: &R) -> Result<super::Include, Error>
3153        where
3154            R: DeserializeReader,
3155        {
3156            let state = replace(&mut *self.state, IncludeDeserializerState::Unknown__);
3157            self.finish_state(reader, state)?;
3158            Ok(super::Include {
3159                id: self.id,
3160                schema_location: self.schema_location,
3161                annotation: self.annotation,
3162            })
3163        }
3164    }
3165    #[derive(Debug)]
3166    pub struct ImportDeserializer {
3167        id: Option<String>,
3168        namespace: Option<String>,
3169        schema_location: Option<String>,
3170        annotation: Option<super::Annotation>,
3171        state: Box<ImportDeserializerState>,
3172    }
3173    #[derive(Debug)]
3174    enum ImportDeserializerState {
3175        Init__,
3176        Annotation(Option<<super::Annotation as WithDeserializer>::Deserializer>),
3177        Done__,
3178        Unknown__,
3179    }
3180    impl ImportDeserializer {
3181        fn from_bytes_start<R>(reader: &R, bytes_start: &BytesStart<'_>) -> Result<Box<Self>, Error>
3182        where
3183            R: DeserializeReader,
3184        {
3185            let mut id: Option<String> = None;
3186            let mut namespace: Option<String> = None;
3187            let mut schema_location: Option<String> = None;
3188            for attrib in filter_xmlns_attributes(bytes_start) {
3189                let attrib = attrib?;
3190                if matches!(
3191                    reader.resolve_local_name(attrib.key, &super::NS_XS),
3192                    Some(b"id")
3193                ) {
3194                    reader.read_attrib(&mut id, b"id", &attrib.value)?;
3195                } else if matches!(
3196                    reader.resolve_local_name(attrib.key, &super::NS_XS),
3197                    Some(b"namespace")
3198                ) {
3199                    reader.read_attrib(&mut namespace, b"namespace", &attrib.value)?;
3200                } else if matches!(
3201                    reader.resolve_local_name(attrib.key, &super::NS_XS),
3202                    Some(b"schemaLocation")
3203                ) {
3204                    reader.read_attrib(&mut schema_location, b"schemaLocation", &attrib.value)?;
3205                }
3206            }
3207            Ok(Box::new(Self {
3208                id: id,
3209                namespace: namespace,
3210                schema_location: schema_location,
3211                annotation: None,
3212                state: Box::new(ImportDeserializerState::Init__),
3213            }))
3214        }
3215        fn finish_state<R>(
3216            &mut self,
3217            reader: &R,
3218            state: ImportDeserializerState,
3219        ) -> Result<(), Error>
3220        where
3221            R: DeserializeReader,
3222        {
3223            use ImportDeserializerState as S;
3224            match state {
3225                S::Annotation(Some(deserializer)) => {
3226                    self.store_annotation(deserializer.finish(reader)?)?
3227                }
3228                _ => (),
3229            }
3230            Ok(())
3231        }
3232        fn store_annotation(&mut self, value: super::Annotation) -> Result<(), Error> {
3233            if self.annotation.is_some() {
3234                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
3235                    b"annotation",
3236                )))?;
3237            }
3238            self.annotation = Some(value);
3239            Ok(())
3240        }
3241        fn handle_annotation<'de, R>(
3242            &mut self,
3243            reader: &R,
3244            output: DeserializerOutput<'de, super::Annotation>,
3245            fallback: &mut Option<ImportDeserializerState>,
3246        ) -> Result<ElementHandlerOutput<'de>, Error>
3247        where
3248            R: DeserializeReader,
3249        {
3250            let DeserializerOutput {
3251                artifact,
3252                event,
3253                allow_any,
3254            } = output;
3255            if artifact.is_none() {
3256                fallback.get_or_insert(ImportDeserializerState::Annotation(None));
3257                *self.state = ImportDeserializerState::Done__;
3258                return Ok(ElementHandlerOutput::from_event(event, allow_any));
3259            }
3260            if let Some(fallback) = fallback.take() {
3261                self.finish_state(reader, fallback)?;
3262            }
3263            Ok(match artifact {
3264                DeserializerArtifact::None => unreachable!(),
3265                DeserializerArtifact::Data(data) => {
3266                    self.store_annotation(data)?;
3267                    *self.state = ImportDeserializerState::Done__;
3268                    ElementHandlerOutput::from_event(event, allow_any)
3269                }
3270                DeserializerArtifact::Deserializer(deserializer) => {
3271                    let ret = ElementHandlerOutput::from_event(event, allow_any);
3272                    match &ret {
3273                        ElementHandlerOutput::Continue { .. } => {
3274                            fallback.get_or_insert(ImportDeserializerState::Annotation(Some(
3275                                deserializer,
3276                            )));
3277                            *self.state = ImportDeserializerState::Done__;
3278                        }
3279                        ElementHandlerOutput::Break { .. } => {
3280                            *self.state = ImportDeserializerState::Annotation(Some(deserializer));
3281                        }
3282                    }
3283                    ret
3284                }
3285            })
3286        }
3287    }
3288    impl<'de> Deserializer<'de, super::Import> for Box<ImportDeserializer> {
3289        fn init<R>(reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::Import>
3290        where
3291            R: DeserializeReader,
3292        {
3293            reader.init_deserializer_from_start_event(event, ImportDeserializer::from_bytes_start)
3294        }
3295        fn next<R>(
3296            mut self,
3297            reader: &R,
3298            event: Event<'de>,
3299        ) -> DeserializerResult<'de, super::Import>
3300        where
3301            R: DeserializeReader,
3302        {
3303            use ImportDeserializerState as S;
3304            let mut event = event;
3305            let mut fallback = None;
3306            let mut allow_any_element = false;
3307            let (event, allow_any) = loop {
3308                let state = replace(&mut *self.state, S::Unknown__);
3309                event = match (state, event) {
3310                    (S::Annotation(Some(deserializer)), event) => {
3311                        let output = deserializer.next(reader, event)?;
3312                        match self.handle_annotation(reader, output, &mut fallback)? {
3313                            ElementHandlerOutput::Continue { event, allow_any } => {
3314                                allow_any_element = allow_any_element || allow_any;
3315                                event
3316                            }
3317                            ElementHandlerOutput::Break { event, allow_any } => {
3318                                break (event, allow_any)
3319                            }
3320                        }
3321                    }
3322                    (_, Event::End(_)) => {
3323                        if let Some(fallback) = fallback.take() {
3324                            self.finish_state(reader, fallback)?;
3325                        }
3326                        return Ok(DeserializerOutput {
3327                            artifact: DeserializerArtifact::Data(self.finish(reader)?),
3328                            event: DeserializerEvent::None,
3329                            allow_any: false,
3330                        });
3331                    }
3332                    (S::Init__, event) => {
3333                        fallback.get_or_insert(S::Init__);
3334                        *self.state = ImportDeserializerState::Annotation(None);
3335                        event
3336                    }
3337                    (S::Annotation(None), event @ (Event::Start(_) | Event::Empty(_))) => {
3338                        if reader.check_start_tag_name(&event, Some(&super::NS_XS), b"annotation") {
3339                            let output =
3340                                <super::Annotation as WithDeserializer>::Deserializer::init(
3341                                    reader, event,
3342                                )?;
3343                            match self.handle_annotation(reader, output, &mut fallback)? {
3344                                ElementHandlerOutput::Continue { event, allow_any } => {
3345                                    allow_any_element = allow_any_element || allow_any;
3346                                    event
3347                                }
3348                                ElementHandlerOutput::Break { event, allow_any } => {
3349                                    break (event, allow_any)
3350                                }
3351                            }
3352                        } else {
3353                            *self.state = S::Done__;
3354                            allow_any_element = true;
3355                            fallback.get_or_insert(S::Annotation(None));
3356                            event
3357                        }
3358                    }
3359                    (S::Done__, event) => {
3360                        fallback.get_or_insert(S::Done__);
3361                        break (DeserializerEvent::Continue(event), allow_any_element);
3362                    }
3363                    (S::Unknown__, _) => unreachable!(),
3364                    (state, event) => {
3365                        *self.state = state;
3366                        break (DeserializerEvent::Break(event), false);
3367                    }
3368                }
3369            };
3370            if let Some(fallback) = fallback {
3371                *self.state = fallback;
3372            }
3373            Ok(DeserializerOutput {
3374                artifact: DeserializerArtifact::Deserializer(self),
3375                event,
3376                allow_any,
3377            })
3378        }
3379        fn finish<R>(mut self, reader: &R) -> Result<super::Import, Error>
3380        where
3381            R: DeserializeReader,
3382        {
3383            let state = replace(&mut *self.state, ImportDeserializerState::Unknown__);
3384            self.finish_state(reader, state)?;
3385            Ok(super::Import {
3386                id: self.id,
3387                namespace: self.namespace,
3388                schema_location: self.schema_location,
3389                annotation: self.annotation,
3390            })
3391        }
3392    }
3393    #[derive(Debug)]
3394    pub struct RedefineDeserializer {
3395        schema_location: String,
3396        id: Option<String>,
3397        content: Vec<super::RedefineContent>,
3398        state: Box<RedefineDeserializerState>,
3399    }
3400    #[derive(Debug)]
3401    enum RedefineDeserializerState {
3402        Init__,
3403        Next__,
3404        Content__(<super::RedefineContent as WithDeserializer>::Deserializer),
3405        Unknown__,
3406    }
3407    impl RedefineDeserializer {
3408        fn from_bytes_start<R>(reader: &R, bytes_start: &BytesStart<'_>) -> Result<Box<Self>, Error>
3409        where
3410            R: DeserializeReader,
3411        {
3412            let mut schema_location: Option<String> = None;
3413            let mut id: Option<String> = None;
3414            for attrib in filter_xmlns_attributes(bytes_start) {
3415                let attrib = attrib?;
3416                if matches!(
3417                    reader.resolve_local_name(attrib.key, &super::NS_XS),
3418                    Some(b"schemaLocation")
3419                ) {
3420                    reader.read_attrib(&mut schema_location, b"schemaLocation", &attrib.value)?;
3421                } else if matches!(
3422                    reader.resolve_local_name(attrib.key, &super::NS_XS),
3423                    Some(b"id")
3424                ) {
3425                    reader.read_attrib(&mut id, b"id", &attrib.value)?;
3426                }
3427            }
3428            Ok(Box::new(Self {
3429                schema_location: schema_location.ok_or_else(|| {
3430                    reader.map_error(ErrorKind::MissingAttribute("schemaLocation".into()))
3431                })?,
3432                id: id,
3433                content: Vec::new(),
3434                state: Box::new(RedefineDeserializerState::Init__),
3435            }))
3436        }
3437        fn finish_state<R>(
3438            &mut self,
3439            reader: &R,
3440            state: RedefineDeserializerState,
3441        ) -> Result<(), Error>
3442        where
3443            R: DeserializeReader,
3444        {
3445            if let RedefineDeserializerState::Content__(deserializer) = state {
3446                self.store_content(deserializer.finish(reader)?)?;
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, R>(
3455            &mut self,
3456            reader: &R,
3457            output: DeserializerOutput<'de, super::RedefineContent>,
3458            fallback: &mut Option<RedefineDeserializerState>,
3459        ) -> Result<ElementHandlerOutput<'de>, Error>
3460        where
3461            R: DeserializeReader,
3462        {
3463            let DeserializerOutput {
3464                artifact,
3465                event,
3466                allow_any,
3467            } = output;
3468            if artifact.is_none() {
3469                *self.state = fallback.take().unwrap_or(RedefineDeserializerState::Next__);
3470                return Ok(ElementHandlerOutput::break_(event, allow_any));
3471            }
3472            if let Some(fallback) = fallback.take() {
3473                self.finish_state(reader, fallback)?;
3474            }
3475            Ok(match artifact {
3476                DeserializerArtifact::None => unreachable!(),
3477                DeserializerArtifact::Data(data) => {
3478                    self.store_content(data)?;
3479                    *self.state = RedefineDeserializerState::Next__;
3480                    ElementHandlerOutput::from_event(event, allow_any)
3481                }
3482                DeserializerArtifact::Deserializer(deserializer) => {
3483                    let ret = ElementHandlerOutput::from_event(event, allow_any);
3484                    match &ret {
3485                        ElementHandlerOutput::Break { .. } => {
3486                            *self.state = RedefineDeserializerState::Content__(deserializer);
3487                        }
3488                        ElementHandlerOutput::Continue { .. } => {
3489                            fallback
3490                                .get_or_insert(RedefineDeserializerState::Content__(deserializer));
3491                            *self.state = RedefineDeserializerState::Next__;
3492                        }
3493                    }
3494                    ret
3495                }
3496            })
3497        }
3498    }
3499    impl<'de> Deserializer<'de, super::Redefine> for Box<RedefineDeserializer> {
3500        fn init<R>(reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::Redefine>
3501        where
3502            R: DeserializeReader,
3503        {
3504            reader.init_deserializer_from_start_event(event, RedefineDeserializer::from_bytes_start)
3505        }
3506        fn next<R>(
3507            mut self,
3508            reader: &R,
3509            event: Event<'de>,
3510        ) -> DeserializerResult<'de, super::Redefine>
3511        where
3512            R: DeserializeReader,
3513        {
3514            use RedefineDeserializerState as S;
3515            let mut event = event;
3516            let mut fallback = None;
3517            let (event, allow_any) = loop {
3518                let state = replace(&mut *self.state, S::Unknown__);
3519                event = match (state, event) {
3520                    (S::Content__(deserializer), event) => {
3521                        let output = deserializer.next(reader, event)?;
3522                        match self.handle_content(reader, output, &mut fallback)? {
3523                            ElementHandlerOutput::Break { event, allow_any } => {
3524                                break (event, allow_any)
3525                            }
3526                            ElementHandlerOutput::Continue { event, .. } => event,
3527                        }
3528                    }
3529                    (_, Event::End(_)) => {
3530                        return Ok(DeserializerOutput {
3531                            artifact: DeserializerArtifact::Data(self.finish(reader)?),
3532                            event: DeserializerEvent::None,
3533                            allow_any: false,
3534                        });
3535                    }
3536                    (state @ (S::Init__ | S::Next__), event) => {
3537                        fallback.get_or_insert(state);
3538                        let output =
3539                            <super::RedefineContent as WithDeserializer>::Deserializer::init(
3540                                reader, event,
3541                            )?;
3542                        match self.handle_content(reader, output, &mut fallback)? {
3543                            ElementHandlerOutput::Break { event, allow_any } => {
3544                                break (event, allow_any)
3545                            }
3546                            ElementHandlerOutput::Continue { event, .. } => event,
3547                        }
3548                    }
3549                    (S::Unknown__, _) => unreachable!(),
3550                }
3551            };
3552            let artifact = DeserializerArtifact::Deserializer(self);
3553            Ok(DeserializerOutput {
3554                artifact,
3555                event,
3556                allow_any,
3557            })
3558        }
3559        fn finish<R>(mut self, reader: &R) -> Result<super::Redefine, Error>
3560        where
3561            R: DeserializeReader,
3562        {
3563            let state = replace(&mut *self.state, RedefineDeserializerState::Unknown__);
3564            self.finish_state(reader, state)?;
3565            Ok(super::Redefine {
3566                schema_location: self.schema_location,
3567                id: self.id,
3568                content: self.content,
3569            })
3570        }
3571    }
3572    #[derive(Debug)]
3573    pub struct RedefineContentDeserializer {
3574        state: Box<RedefineContentDeserializerState>,
3575    }
3576    #[derive(Debug)]
3577    pub enum RedefineContentDeserializerState {
3578        Init__,
3579        Annotation(
3580            Option<super::Annotation>,
3581            Option<<super::Annotation as WithDeserializer>::Deserializer>,
3582        ),
3583        SimpleType(
3584            Option<super::SimpleBaseType>,
3585            Option<<super::SimpleBaseType as WithDeserializer>::Deserializer>,
3586        ),
3587        ComplexType(
3588            Option<super::ComplexBaseType>,
3589            Option<<super::ComplexBaseType as WithDeserializer>::Deserializer>,
3590        ),
3591        Group(
3592            Option<super::GroupType>,
3593            Option<<super::GroupType as WithDeserializer>::Deserializer>,
3594        ),
3595        AttributeGroup(
3596            Option<super::AttributeGroupType>,
3597            Option<<super::AttributeGroupType as WithDeserializer>::Deserializer>,
3598        ),
3599        Done__(super::RedefineContent),
3600        Unknown__,
3601    }
3602    impl RedefineContentDeserializer {
3603        fn find_suitable<'de, R>(
3604            &mut self,
3605            reader: &R,
3606            event: Event<'de>,
3607            fallback: &mut Option<RedefineContentDeserializerState>,
3608        ) -> Result<ElementHandlerOutput<'de>, Error>
3609        where
3610            R: DeserializeReader,
3611        {
3612            let (Event::Start(x) | Event::Empty(x)) = &event else {
3613                *self.state = fallback
3614                    .take()
3615                    .unwrap_or(RedefineContentDeserializerState::Init__);
3616                return Ok(ElementHandlerOutput::return_to_parent(event, false));
3617            };
3618            if matches!(
3619                reader.resolve_local_name(x.name(), &super::NS_XS),
3620                Some(b"annotation")
3621            ) {
3622                let output =
3623                    <super::Annotation as WithDeserializer>::Deserializer::init(reader, event)?;
3624                return self.handle_annotation(reader, Default::default(), output, &mut *fallback);
3625            }
3626            if matches!(
3627                reader.resolve_local_name(x.name(), &super::NS_XS),
3628                Some(b"simpleType")
3629            ) {
3630                let output =
3631                    <super::SimpleBaseType as WithDeserializer>::Deserializer::init(reader, event)?;
3632                return self.handle_simple_type(reader, Default::default(), output, &mut *fallback);
3633            }
3634            if matches!(
3635                reader.resolve_local_name(x.name(), &super::NS_XS),
3636                Some(b"complexType")
3637            ) {
3638                let output = <super::ComplexBaseType as WithDeserializer>::Deserializer::init(
3639                    reader, event,
3640                )?;
3641                return self.handle_complex_type(
3642                    reader,
3643                    Default::default(),
3644                    output,
3645                    &mut *fallback,
3646                );
3647            }
3648            if matches!(
3649                reader.resolve_local_name(x.name(), &super::NS_XS),
3650                Some(b"group")
3651            ) {
3652                let output =
3653                    <super::GroupType as WithDeserializer>::Deserializer::init(reader, event)?;
3654                return self.handle_group(reader, Default::default(), output, &mut *fallback);
3655            }
3656            if matches!(
3657                reader.resolve_local_name(x.name(), &super::NS_XS),
3658                Some(b"attributeGroup")
3659            ) {
3660                let output = <super::AttributeGroupType as WithDeserializer>::Deserializer::init(
3661                    reader, event,
3662                )?;
3663                return self.handle_attribute_group(
3664                    reader,
3665                    Default::default(),
3666                    output,
3667                    &mut *fallback,
3668                );
3669            }
3670            *self.state = fallback
3671                .take()
3672                .unwrap_or(RedefineContentDeserializerState::Init__);
3673            Ok(ElementHandlerOutput::return_to_parent(event, false))
3674        }
3675        fn finish_state<R>(
3676            reader: &R,
3677            state: RedefineContentDeserializerState,
3678        ) -> Result<super::RedefineContent, Error>
3679        where
3680            R: DeserializeReader,
3681        {
3682            use RedefineContentDeserializerState as S;
3683            match state {
3684                S::Init__ => Err(ErrorKind::MissingContent.into()),
3685                S::Annotation(mut values, deserializer) => {
3686                    if let Some(deserializer) = deserializer {
3687                        let value = deserializer.finish(reader)?;
3688                        RedefineContentDeserializer::store_annotation(&mut values, value)?;
3689                    }
3690                    Ok(super::RedefineContent::Annotation(values.ok_or_else(
3691                        || ErrorKind::MissingElement("annotation".into()),
3692                    )?))
3693                }
3694                S::SimpleType(mut values, deserializer) => {
3695                    if let Some(deserializer) = deserializer {
3696                        let value = deserializer.finish(reader)?;
3697                        RedefineContentDeserializer::store_simple_type(&mut values, value)?;
3698                    }
3699                    Ok(super::RedefineContent::SimpleType(values.ok_or_else(
3700                        || ErrorKind::MissingElement("simpleType".into()),
3701                    )?))
3702                }
3703                S::ComplexType(mut values, deserializer) => {
3704                    if let Some(deserializer) = deserializer {
3705                        let value = deserializer.finish(reader)?;
3706                        RedefineContentDeserializer::store_complex_type(&mut values, value)?;
3707                    }
3708                    Ok(super::RedefineContent::ComplexType(values.ok_or_else(
3709                        || ErrorKind::MissingElement("complexType".into()),
3710                    )?))
3711                }
3712                S::Group(mut values, deserializer) => {
3713                    if let Some(deserializer) = deserializer {
3714                        let value = deserializer.finish(reader)?;
3715                        RedefineContentDeserializer::store_group(&mut values, value)?;
3716                    }
3717                    Ok(super::RedefineContent::Group(values.ok_or_else(|| {
3718                        ErrorKind::MissingElement("group".into())
3719                    })?))
3720                }
3721                S::AttributeGroup(mut values, deserializer) => {
3722                    if let Some(deserializer) = deserializer {
3723                        let value = deserializer.finish(reader)?;
3724                        RedefineContentDeserializer::store_attribute_group(&mut values, value)?;
3725                    }
3726                    Ok(super::RedefineContent::AttributeGroup(values.ok_or_else(
3727                        || ErrorKind::MissingElement("attributeGroup".into()),
3728                    )?))
3729                }
3730                S::Done__(data) => Ok(data),
3731                S::Unknown__ => unreachable!(),
3732            }
3733        }
3734        fn store_annotation(
3735            values: &mut Option<super::Annotation>,
3736            value: super::Annotation,
3737        ) -> Result<(), Error> {
3738            if values.is_some() {
3739                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
3740                    b"annotation",
3741                )))?;
3742            }
3743            *values = Some(value);
3744            Ok(())
3745        }
3746        fn store_simple_type(
3747            values: &mut Option<super::SimpleBaseType>,
3748            value: super::SimpleBaseType,
3749        ) -> Result<(), Error> {
3750            if values.is_some() {
3751                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
3752                    b"simpleType",
3753                )))?;
3754            }
3755            *values = Some(value);
3756            Ok(())
3757        }
3758        fn store_complex_type(
3759            values: &mut Option<super::ComplexBaseType>,
3760            value: super::ComplexBaseType,
3761        ) -> Result<(), Error> {
3762            if values.is_some() {
3763                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
3764                    b"complexType",
3765                )))?;
3766            }
3767            *values = Some(value);
3768            Ok(())
3769        }
3770        fn store_group(
3771            values: &mut Option<super::GroupType>,
3772            value: super::GroupType,
3773        ) -> Result<(), Error> {
3774            if values.is_some() {
3775                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
3776                    b"group",
3777                )))?;
3778            }
3779            *values = Some(value);
3780            Ok(())
3781        }
3782        fn store_attribute_group(
3783            values: &mut Option<super::AttributeGroupType>,
3784            value: super::AttributeGroupType,
3785        ) -> Result<(), Error> {
3786            if values.is_some() {
3787                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
3788                    b"attributeGroup",
3789                )))?;
3790            }
3791            *values = Some(value);
3792            Ok(())
3793        }
3794        fn handle_annotation<'de, R>(
3795            &mut self,
3796            reader: &R,
3797            mut values: Option<super::Annotation>,
3798            output: DeserializerOutput<'de, super::Annotation>,
3799            fallback: &mut Option<RedefineContentDeserializerState>,
3800        ) -> Result<ElementHandlerOutput<'de>, Error>
3801        where
3802            R: DeserializeReader,
3803        {
3804            let DeserializerOutput {
3805                artifact,
3806                event,
3807                allow_any,
3808            } = output;
3809            if artifact.is_none() {
3810                *self.state = match fallback.take() {
3811                    None => RedefineContentDeserializerState::Init__,
3812                    Some(RedefineContentDeserializerState::Annotation(_, Some(deserializer))) => {
3813                        RedefineContentDeserializerState::Annotation(values, Some(deserializer))
3814                    }
3815                    _ => unreachable!(),
3816                };
3817                return Ok(ElementHandlerOutput::break_(event, allow_any));
3818            }
3819            match fallback.take() {
3820                None => (),
3821                Some(RedefineContentDeserializerState::Annotation(_, Some(deserializer))) => {
3822                    let data = deserializer.finish(reader)?;
3823                    RedefineContentDeserializer::store_annotation(&mut values, data)?;
3824                }
3825                Some(_) => unreachable!(),
3826            }
3827            Ok(match artifact {
3828                DeserializerArtifact::None => unreachable!(),
3829                DeserializerArtifact::Data(data) => {
3830                    RedefineContentDeserializer::store_annotation(&mut values, data)?;
3831                    let data = RedefineContentDeserializer::finish_state(
3832                        reader,
3833                        RedefineContentDeserializerState::Annotation(values, None),
3834                    )?;
3835                    *self.state = RedefineContentDeserializerState::Done__(data);
3836                    ElementHandlerOutput::Break { event, allow_any }
3837                }
3838                DeserializerArtifact::Deserializer(deserializer) => {
3839                    *self.state =
3840                        RedefineContentDeserializerState::Annotation(values, Some(deserializer));
3841                    ElementHandlerOutput::from_event_end(event, allow_any)
3842                }
3843            })
3844        }
3845        fn handle_simple_type<'de, R>(
3846            &mut self,
3847            reader: &R,
3848            mut values: Option<super::SimpleBaseType>,
3849            output: DeserializerOutput<'de, super::SimpleBaseType>,
3850            fallback: &mut Option<RedefineContentDeserializerState>,
3851        ) -> Result<ElementHandlerOutput<'de>, Error>
3852        where
3853            R: DeserializeReader,
3854        {
3855            let DeserializerOutput {
3856                artifact,
3857                event,
3858                allow_any,
3859            } = output;
3860            if artifact.is_none() {
3861                *self.state = match fallback.take() {
3862                    None => RedefineContentDeserializerState::Init__,
3863                    Some(RedefineContentDeserializerState::SimpleType(_, Some(deserializer))) => {
3864                        RedefineContentDeserializerState::SimpleType(values, Some(deserializer))
3865                    }
3866                    _ => unreachable!(),
3867                };
3868                return Ok(ElementHandlerOutput::break_(event, allow_any));
3869            }
3870            match fallback.take() {
3871                None => (),
3872                Some(RedefineContentDeserializerState::SimpleType(_, Some(deserializer))) => {
3873                    let data = deserializer.finish(reader)?;
3874                    RedefineContentDeserializer::store_simple_type(&mut values, data)?;
3875                }
3876                Some(_) => unreachable!(),
3877            }
3878            Ok(match artifact {
3879                DeserializerArtifact::None => unreachable!(),
3880                DeserializerArtifact::Data(data) => {
3881                    RedefineContentDeserializer::store_simple_type(&mut values, data)?;
3882                    let data = RedefineContentDeserializer::finish_state(
3883                        reader,
3884                        RedefineContentDeserializerState::SimpleType(values, None),
3885                    )?;
3886                    *self.state = RedefineContentDeserializerState::Done__(data);
3887                    ElementHandlerOutput::Break { event, allow_any }
3888                }
3889                DeserializerArtifact::Deserializer(deserializer) => {
3890                    *self.state =
3891                        RedefineContentDeserializerState::SimpleType(values, Some(deserializer));
3892                    ElementHandlerOutput::from_event_end(event, allow_any)
3893                }
3894            })
3895        }
3896        fn handle_complex_type<'de, R>(
3897            &mut self,
3898            reader: &R,
3899            mut values: Option<super::ComplexBaseType>,
3900            output: DeserializerOutput<'de, super::ComplexBaseType>,
3901            fallback: &mut Option<RedefineContentDeserializerState>,
3902        ) -> Result<ElementHandlerOutput<'de>, Error>
3903        where
3904            R: DeserializeReader,
3905        {
3906            let DeserializerOutput {
3907                artifact,
3908                event,
3909                allow_any,
3910            } = output;
3911            if artifact.is_none() {
3912                *self.state = match fallback.take() {
3913                    None => RedefineContentDeserializerState::Init__,
3914                    Some(RedefineContentDeserializerState::ComplexType(_, Some(deserializer))) => {
3915                        RedefineContentDeserializerState::ComplexType(values, Some(deserializer))
3916                    }
3917                    _ => unreachable!(),
3918                };
3919                return Ok(ElementHandlerOutput::break_(event, allow_any));
3920            }
3921            match fallback.take() {
3922                None => (),
3923                Some(RedefineContentDeserializerState::ComplexType(_, Some(deserializer))) => {
3924                    let data = deserializer.finish(reader)?;
3925                    RedefineContentDeserializer::store_complex_type(&mut values, data)?;
3926                }
3927                Some(_) => unreachable!(),
3928            }
3929            Ok(match artifact {
3930                DeserializerArtifact::None => unreachable!(),
3931                DeserializerArtifact::Data(data) => {
3932                    RedefineContentDeserializer::store_complex_type(&mut values, data)?;
3933                    let data = RedefineContentDeserializer::finish_state(
3934                        reader,
3935                        RedefineContentDeserializerState::ComplexType(values, None),
3936                    )?;
3937                    *self.state = RedefineContentDeserializerState::Done__(data);
3938                    ElementHandlerOutput::Break { event, allow_any }
3939                }
3940                DeserializerArtifact::Deserializer(deserializer) => {
3941                    *self.state =
3942                        RedefineContentDeserializerState::ComplexType(values, Some(deserializer));
3943                    ElementHandlerOutput::from_event_end(event, allow_any)
3944                }
3945            })
3946        }
3947        fn handle_group<'de, R>(
3948            &mut self,
3949            reader: &R,
3950            mut values: Option<super::GroupType>,
3951            output: DeserializerOutput<'de, super::GroupType>,
3952            fallback: &mut Option<RedefineContentDeserializerState>,
3953        ) -> Result<ElementHandlerOutput<'de>, Error>
3954        where
3955            R: DeserializeReader,
3956        {
3957            let DeserializerOutput {
3958                artifact,
3959                event,
3960                allow_any,
3961            } = output;
3962            if artifact.is_none() {
3963                *self.state = match fallback.take() {
3964                    None => RedefineContentDeserializerState::Init__,
3965                    Some(RedefineContentDeserializerState::Group(_, Some(deserializer))) => {
3966                        RedefineContentDeserializerState::Group(values, Some(deserializer))
3967                    }
3968                    _ => unreachable!(),
3969                };
3970                return Ok(ElementHandlerOutput::break_(event, allow_any));
3971            }
3972            match fallback.take() {
3973                None => (),
3974                Some(RedefineContentDeserializerState::Group(_, Some(deserializer))) => {
3975                    let data = deserializer.finish(reader)?;
3976                    RedefineContentDeserializer::store_group(&mut values, data)?;
3977                }
3978                Some(_) => unreachable!(),
3979            }
3980            Ok(match artifact {
3981                DeserializerArtifact::None => unreachable!(),
3982                DeserializerArtifact::Data(data) => {
3983                    RedefineContentDeserializer::store_group(&mut values, data)?;
3984                    let data = RedefineContentDeserializer::finish_state(
3985                        reader,
3986                        RedefineContentDeserializerState::Group(values, None),
3987                    )?;
3988                    *self.state = RedefineContentDeserializerState::Done__(data);
3989                    ElementHandlerOutput::Break { event, allow_any }
3990                }
3991                DeserializerArtifact::Deserializer(deserializer) => {
3992                    *self.state =
3993                        RedefineContentDeserializerState::Group(values, Some(deserializer));
3994                    ElementHandlerOutput::from_event_end(event, allow_any)
3995                }
3996            })
3997        }
3998        fn handle_attribute_group<'de, R>(
3999            &mut self,
4000            reader: &R,
4001            mut values: Option<super::AttributeGroupType>,
4002            output: DeserializerOutput<'de, super::AttributeGroupType>,
4003            fallback: &mut Option<RedefineContentDeserializerState>,
4004        ) -> Result<ElementHandlerOutput<'de>, Error>
4005        where
4006            R: DeserializeReader,
4007        {
4008            let DeserializerOutput {
4009                artifact,
4010                event,
4011                allow_any,
4012            } = output;
4013            if artifact.is_none() {
4014                *self.state = match fallback.take() {
4015                    None => RedefineContentDeserializerState::Init__,
4016                    Some(RedefineContentDeserializerState::AttributeGroup(
4017                        _,
4018                        Some(deserializer),
4019                    )) => {
4020                        RedefineContentDeserializerState::AttributeGroup(values, Some(deserializer))
4021                    }
4022                    _ => unreachable!(),
4023                };
4024                return Ok(ElementHandlerOutput::break_(event, allow_any));
4025            }
4026            match fallback.take() {
4027                None => (),
4028                Some(RedefineContentDeserializerState::AttributeGroup(_, Some(deserializer))) => {
4029                    let data = deserializer.finish(reader)?;
4030                    RedefineContentDeserializer::store_attribute_group(&mut values, data)?;
4031                }
4032                Some(_) => unreachable!(),
4033            }
4034            Ok(match artifact {
4035                DeserializerArtifact::None => unreachable!(),
4036                DeserializerArtifact::Data(data) => {
4037                    RedefineContentDeserializer::store_attribute_group(&mut values, data)?;
4038                    let data = RedefineContentDeserializer::finish_state(
4039                        reader,
4040                        RedefineContentDeserializerState::AttributeGroup(values, None),
4041                    )?;
4042                    *self.state = RedefineContentDeserializerState::Done__(data);
4043                    ElementHandlerOutput::Break { event, allow_any }
4044                }
4045                DeserializerArtifact::Deserializer(deserializer) => {
4046                    *self.state = RedefineContentDeserializerState::AttributeGroup(
4047                        values,
4048                        Some(deserializer),
4049                    );
4050                    ElementHandlerOutput::from_event_end(event, allow_any)
4051                }
4052            })
4053        }
4054    }
4055    impl<'de> Deserializer<'de, super::RedefineContent> for Box<RedefineContentDeserializer> {
4056        fn init<R>(reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::RedefineContent>
4057        where
4058            R: DeserializeReader,
4059        {
4060            let deserializer = Box::new(RedefineContentDeserializer {
4061                state: Box::new(RedefineContentDeserializerState::Init__),
4062            });
4063            let mut output = deserializer.next(reader, event)?;
4064            output.artifact = match output.artifact {
4065                DeserializerArtifact::Deserializer(x)
4066                    if matches!(&*x.state, RedefineContentDeserializerState::Init__) =>
4067                {
4068                    DeserializerArtifact::None
4069                }
4070                artifact => artifact,
4071            };
4072            Ok(output)
4073        }
4074        fn next<R>(
4075            mut self,
4076            reader: &R,
4077            event: Event<'de>,
4078        ) -> DeserializerResult<'de, super::RedefineContent>
4079        where
4080            R: DeserializeReader,
4081        {
4082            use RedefineContentDeserializerState as S;
4083            let mut event = event;
4084            let mut fallback = None;
4085            let (event, allow_any) = loop {
4086                let state = replace(&mut *self.state, S::Unknown__);
4087                event = match (state, event) {
4088                    (S::Annotation(values, Some(deserializer)), event) => {
4089                        let output = deserializer.next(reader, event)?;
4090                        match self.handle_annotation(reader, values, output, &mut fallback)? {
4091                            ElementHandlerOutput::Break { event, allow_any } => {
4092                                break (event, allow_any)
4093                            }
4094                            ElementHandlerOutput::Continue { event, .. } => event,
4095                        }
4096                    }
4097                    (S::SimpleType(values, Some(deserializer)), event) => {
4098                        let output = deserializer.next(reader, event)?;
4099                        match self.handle_simple_type(reader, values, output, &mut fallback)? {
4100                            ElementHandlerOutput::Break { event, allow_any } => {
4101                                break (event, allow_any)
4102                            }
4103                            ElementHandlerOutput::Continue { event, .. } => event,
4104                        }
4105                    }
4106                    (S::ComplexType(values, Some(deserializer)), event) => {
4107                        let output = deserializer.next(reader, event)?;
4108                        match self.handle_complex_type(reader, values, output, &mut fallback)? {
4109                            ElementHandlerOutput::Break { event, allow_any } => {
4110                                break (event, allow_any)
4111                            }
4112                            ElementHandlerOutput::Continue { event, .. } => event,
4113                        }
4114                    }
4115                    (S::Group(values, Some(deserializer)), event) => {
4116                        let output = deserializer.next(reader, event)?;
4117                        match self.handle_group(reader, values, output, &mut fallback)? {
4118                            ElementHandlerOutput::Break { event, allow_any } => {
4119                                break (event, allow_any)
4120                            }
4121                            ElementHandlerOutput::Continue { event, .. } => event,
4122                        }
4123                    }
4124                    (S::AttributeGroup(values, Some(deserializer)), event) => {
4125                        let output = deserializer.next(reader, event)?;
4126                        match self.handle_attribute_group(reader, values, output, &mut fallback)? {
4127                            ElementHandlerOutput::Break { event, allow_any } => {
4128                                break (event, allow_any)
4129                            }
4130                            ElementHandlerOutput::Continue { event, .. } => event,
4131                        }
4132                    }
4133                    (state, event @ Event::End(_)) => {
4134                        return Ok(DeserializerOutput {
4135                            artifact: DeserializerArtifact::Data(
4136                                RedefineContentDeserializer::finish_state(reader, state)?,
4137                            ),
4138                            event: DeserializerEvent::Continue(event),
4139                            allow_any: false,
4140                        });
4141                    }
4142                    (S::Init__, event) => match self.find_suitable(reader, event, &mut fallback)? {
4143                        ElementHandlerOutput::Break { event, allow_any } => {
4144                            break (event, allow_any)
4145                        }
4146                        ElementHandlerOutput::Continue { event, .. } => event,
4147                    },
4148                    (S::Annotation(values, None), event) => {
4149                        let output = <super::Annotation as WithDeserializer>::Deserializer::init(
4150                            reader, event,
4151                        )?;
4152                        match self.handle_annotation(reader, values, output, &mut fallback)? {
4153                            ElementHandlerOutput::Break { event, allow_any } => {
4154                                break (event, allow_any)
4155                            }
4156                            ElementHandlerOutput::Continue { event, .. } => event,
4157                        }
4158                    }
4159                    (S::SimpleType(values, None), event) => {
4160                        let output =
4161                            <super::SimpleBaseType as WithDeserializer>::Deserializer::init(
4162                                reader, event,
4163                            )?;
4164                        match self.handle_simple_type(reader, values, output, &mut fallback)? {
4165                            ElementHandlerOutput::Break { event, allow_any } => {
4166                                break (event, allow_any)
4167                            }
4168                            ElementHandlerOutput::Continue { event, .. } => event,
4169                        }
4170                    }
4171                    (S::ComplexType(values, None), event) => {
4172                        let output =
4173                            <super::ComplexBaseType as WithDeserializer>::Deserializer::init(
4174                                reader, event,
4175                            )?;
4176                        match self.handle_complex_type(reader, values, output, &mut fallback)? {
4177                            ElementHandlerOutput::Break { event, allow_any } => {
4178                                break (event, allow_any)
4179                            }
4180                            ElementHandlerOutput::Continue { event, .. } => event,
4181                        }
4182                    }
4183                    (S::Group(values, None), event) => {
4184                        let output = <super::GroupType as WithDeserializer>::Deserializer::init(
4185                            reader, event,
4186                        )?;
4187                        match self.handle_group(reader, values, output, &mut fallback)? {
4188                            ElementHandlerOutput::Break { event, allow_any } => {
4189                                break (event, allow_any)
4190                            }
4191                            ElementHandlerOutput::Continue { event, .. } => event,
4192                        }
4193                    }
4194                    (S::AttributeGroup(values, None), event) => {
4195                        let output =
4196                            <super::AttributeGroupType as WithDeserializer>::Deserializer::init(
4197                                reader, event,
4198                            )?;
4199                        match self.handle_attribute_group(reader, values, output, &mut fallback)? {
4200                            ElementHandlerOutput::Break { event, allow_any } => {
4201                                break (event, allow_any)
4202                            }
4203                            ElementHandlerOutput::Continue { event, .. } => event,
4204                        }
4205                    }
4206                    (s @ S::Done__(_), event) => {
4207                        *self.state = s;
4208                        break (DeserializerEvent::Continue(event), false);
4209                    }
4210                    (S::Unknown__, _) => unreachable!(),
4211                }
4212            };
4213            let artifact = if matches!(&*self.state, S::Done__(_)) {
4214                DeserializerArtifact::Data(self.finish(reader)?)
4215            } else {
4216                DeserializerArtifact::Deserializer(self)
4217            };
4218            Ok(DeserializerOutput {
4219                artifact,
4220                event,
4221                allow_any,
4222            })
4223        }
4224        fn finish<R>(self, reader: &R) -> Result<super::RedefineContent, Error>
4225        where
4226            R: DeserializeReader,
4227        {
4228            RedefineContentDeserializer::finish_state(reader, *self.state)
4229        }
4230    }
4231    #[derive(Debug)]
4232    pub struct OverrideDeserializer {
4233        schema_location: String,
4234        id: Option<String>,
4235        content: Vec<super::OverrideContent>,
4236        state: Box<OverrideDeserializerState>,
4237    }
4238    #[derive(Debug)]
4239    enum OverrideDeserializerState {
4240        Init__,
4241        Next__,
4242        Content__(<super::OverrideContent as WithDeserializer>::Deserializer),
4243        Unknown__,
4244    }
4245    impl OverrideDeserializer {
4246        fn from_bytes_start<R>(reader: &R, bytes_start: &BytesStart<'_>) -> Result<Box<Self>, Error>
4247        where
4248            R: DeserializeReader,
4249        {
4250            let mut schema_location: Option<String> = None;
4251            let mut id: Option<String> = None;
4252            for attrib in filter_xmlns_attributes(bytes_start) {
4253                let attrib = attrib?;
4254                if matches!(
4255                    reader.resolve_local_name(attrib.key, &super::NS_XS),
4256                    Some(b"schemaLocation")
4257                ) {
4258                    reader.read_attrib(&mut schema_location, b"schemaLocation", &attrib.value)?;
4259                } else if matches!(
4260                    reader.resolve_local_name(attrib.key, &super::NS_XS),
4261                    Some(b"id")
4262                ) {
4263                    reader.read_attrib(&mut id, b"id", &attrib.value)?;
4264                }
4265            }
4266            Ok(Box::new(Self {
4267                schema_location: schema_location.ok_or_else(|| {
4268                    reader.map_error(ErrorKind::MissingAttribute("schemaLocation".into()))
4269                })?,
4270                id: id,
4271                content: Vec::new(),
4272                state: Box::new(OverrideDeserializerState::Init__),
4273            }))
4274        }
4275        fn finish_state<R>(
4276            &mut self,
4277            reader: &R,
4278            state: OverrideDeserializerState,
4279        ) -> Result<(), Error>
4280        where
4281            R: DeserializeReader,
4282        {
4283            if let OverrideDeserializerState::Content__(deserializer) = state {
4284                self.store_content(deserializer.finish(reader)?)?;
4285            }
4286            Ok(())
4287        }
4288        fn store_content(&mut self, value: super::OverrideContent) -> Result<(), Error> {
4289            self.content.push(value);
4290            Ok(())
4291        }
4292        fn handle_content<'de, R>(
4293            &mut self,
4294            reader: &R,
4295            output: DeserializerOutput<'de, super::OverrideContent>,
4296            fallback: &mut Option<OverrideDeserializerState>,
4297        ) -> Result<ElementHandlerOutput<'de>, Error>
4298        where
4299            R: DeserializeReader,
4300        {
4301            let DeserializerOutput {
4302                artifact,
4303                event,
4304                allow_any,
4305            } = output;
4306            if artifact.is_none() {
4307                *self.state = fallback.take().unwrap_or(OverrideDeserializerState::Next__);
4308                return Ok(ElementHandlerOutput::break_(event, allow_any));
4309            }
4310            if let Some(fallback) = fallback.take() {
4311                self.finish_state(reader, fallback)?;
4312            }
4313            Ok(match artifact {
4314                DeserializerArtifact::None => unreachable!(),
4315                DeserializerArtifact::Data(data) => {
4316                    self.store_content(data)?;
4317                    *self.state = OverrideDeserializerState::Next__;
4318                    ElementHandlerOutput::from_event(event, allow_any)
4319                }
4320                DeserializerArtifact::Deserializer(deserializer) => {
4321                    let ret = ElementHandlerOutput::from_event(event, allow_any);
4322                    match &ret {
4323                        ElementHandlerOutput::Break { .. } => {
4324                            *self.state = OverrideDeserializerState::Content__(deserializer);
4325                        }
4326                        ElementHandlerOutput::Continue { .. } => {
4327                            fallback
4328                                .get_or_insert(OverrideDeserializerState::Content__(deserializer));
4329                            *self.state = OverrideDeserializerState::Next__;
4330                        }
4331                    }
4332                    ret
4333                }
4334            })
4335        }
4336    }
4337    impl<'de> Deserializer<'de, super::Override> for Box<OverrideDeserializer> {
4338        fn init<R>(reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::Override>
4339        where
4340            R: DeserializeReader,
4341        {
4342            reader.init_deserializer_from_start_event(event, OverrideDeserializer::from_bytes_start)
4343        }
4344        fn next<R>(
4345            mut self,
4346            reader: &R,
4347            event: Event<'de>,
4348        ) -> DeserializerResult<'de, super::Override>
4349        where
4350            R: DeserializeReader,
4351        {
4352            use OverrideDeserializerState as S;
4353            let mut event = event;
4354            let mut fallback = None;
4355            let (event, allow_any) = loop {
4356                let state = replace(&mut *self.state, S::Unknown__);
4357                event = match (state, event) {
4358                    (S::Content__(deserializer), event) => {
4359                        let output = deserializer.next(reader, event)?;
4360                        match self.handle_content(reader, output, &mut fallback)? {
4361                            ElementHandlerOutput::Break { event, allow_any } => {
4362                                break (event, allow_any)
4363                            }
4364                            ElementHandlerOutput::Continue { event, .. } => event,
4365                        }
4366                    }
4367                    (_, Event::End(_)) => {
4368                        return Ok(DeserializerOutput {
4369                            artifact: DeserializerArtifact::Data(self.finish(reader)?),
4370                            event: DeserializerEvent::None,
4371                            allow_any: false,
4372                        });
4373                    }
4374                    (state @ (S::Init__ | S::Next__), event) => {
4375                        fallback.get_or_insert(state);
4376                        let output =
4377                            <super::OverrideContent as WithDeserializer>::Deserializer::init(
4378                                reader, event,
4379                            )?;
4380                        match self.handle_content(reader, output, &mut fallback)? {
4381                            ElementHandlerOutput::Break { event, allow_any } => {
4382                                break (event, allow_any)
4383                            }
4384                            ElementHandlerOutput::Continue { event, .. } => event,
4385                        }
4386                    }
4387                    (S::Unknown__, _) => unreachable!(),
4388                }
4389            };
4390            let artifact = DeserializerArtifact::Deserializer(self);
4391            Ok(DeserializerOutput {
4392                artifact,
4393                event,
4394                allow_any,
4395            })
4396        }
4397        fn finish<R>(mut self, reader: &R) -> Result<super::Override, Error>
4398        where
4399            R: DeserializeReader,
4400        {
4401            let state = replace(&mut *self.state, OverrideDeserializerState::Unknown__);
4402            self.finish_state(reader, state)?;
4403            Ok(super::Override {
4404                schema_location: self.schema_location,
4405                id: self.id,
4406                content: self.content,
4407            })
4408        }
4409    }
4410    #[derive(Debug)]
4411    pub struct OverrideContentDeserializer {
4412        state: Box<OverrideContentDeserializerState>,
4413    }
4414    #[derive(Debug)]
4415    pub enum OverrideContentDeserializerState {
4416        Init__,
4417        Annotation(
4418            Option<super::Annotation>,
4419            Option<<super::Annotation as WithDeserializer>::Deserializer>,
4420        ),
4421        SimpleType(
4422            Option<super::SimpleBaseType>,
4423            Option<<super::SimpleBaseType as WithDeserializer>::Deserializer>,
4424        ),
4425        ComplexType(
4426            Option<super::ComplexBaseType>,
4427            Option<<super::ComplexBaseType as WithDeserializer>::Deserializer>,
4428        ),
4429        Group(
4430            Option<super::GroupType>,
4431            Option<<super::GroupType as WithDeserializer>::Deserializer>,
4432        ),
4433        AttributeGroup(
4434            Option<super::AttributeGroupType>,
4435            Option<<super::AttributeGroupType as WithDeserializer>::Deserializer>,
4436        ),
4437        Element(
4438            Option<super::ElementType>,
4439            Option<<super::ElementType as WithDeserializer>::Deserializer>,
4440        ),
4441        Attribute(
4442            Option<super::AttributeType>,
4443            Option<<super::AttributeType as WithDeserializer>::Deserializer>,
4444        ),
4445        Notation(
4446            Option<super::Notation>,
4447            Option<<super::Notation as WithDeserializer>::Deserializer>,
4448        ),
4449        Done__(super::OverrideContent),
4450        Unknown__,
4451    }
4452    impl OverrideContentDeserializer {
4453        fn find_suitable<'de, R>(
4454            &mut self,
4455            reader: &R,
4456            event: Event<'de>,
4457            fallback: &mut Option<OverrideContentDeserializerState>,
4458        ) -> Result<ElementHandlerOutput<'de>, Error>
4459        where
4460            R: DeserializeReader,
4461        {
4462            let (Event::Start(x) | Event::Empty(x)) = &event else {
4463                *self.state = fallback
4464                    .take()
4465                    .unwrap_or(OverrideContentDeserializerState::Init__);
4466                return Ok(ElementHandlerOutput::return_to_parent(event, false));
4467            };
4468            if matches!(
4469                reader.resolve_local_name(x.name(), &super::NS_XS),
4470                Some(b"annotation")
4471            ) {
4472                let output =
4473                    <super::Annotation as WithDeserializer>::Deserializer::init(reader, event)?;
4474                return self.handle_annotation(reader, Default::default(), output, &mut *fallback);
4475            }
4476            if matches!(
4477                reader.resolve_local_name(x.name(), &super::NS_XS),
4478                Some(b"simpleType")
4479            ) {
4480                let output =
4481                    <super::SimpleBaseType as WithDeserializer>::Deserializer::init(reader, event)?;
4482                return self.handle_simple_type(reader, Default::default(), output, &mut *fallback);
4483            }
4484            if matches!(
4485                reader.resolve_local_name(x.name(), &super::NS_XS),
4486                Some(b"complexType")
4487            ) {
4488                let output = <super::ComplexBaseType as WithDeserializer>::Deserializer::init(
4489                    reader, event,
4490                )?;
4491                return self.handle_complex_type(
4492                    reader,
4493                    Default::default(),
4494                    output,
4495                    &mut *fallback,
4496                );
4497            }
4498            if matches!(
4499                reader.resolve_local_name(x.name(), &super::NS_XS),
4500                Some(b"group")
4501            ) {
4502                let output =
4503                    <super::GroupType as WithDeserializer>::Deserializer::init(reader, event)?;
4504                return self.handle_group(reader, Default::default(), output, &mut *fallback);
4505            }
4506            if matches!(
4507                reader.resolve_local_name(x.name(), &super::NS_XS),
4508                Some(b"attributeGroup")
4509            ) {
4510                let output = <super::AttributeGroupType as WithDeserializer>::Deserializer::init(
4511                    reader, event,
4512                )?;
4513                return self.handle_attribute_group(
4514                    reader,
4515                    Default::default(),
4516                    output,
4517                    &mut *fallback,
4518                );
4519            }
4520            if matches!(
4521                reader.resolve_local_name(x.name(), &super::NS_XS),
4522                Some(b"element")
4523            ) {
4524                let output =
4525                    <super::ElementType as WithDeserializer>::Deserializer::init(reader, event)?;
4526                return self.handle_element(reader, Default::default(), output, &mut *fallback);
4527            }
4528            if matches!(
4529                reader.resolve_local_name(x.name(), &super::NS_XS),
4530                Some(b"attribute")
4531            ) {
4532                let output =
4533                    <super::AttributeType as WithDeserializer>::Deserializer::init(reader, event)?;
4534                return self.handle_attribute(reader, Default::default(), output, &mut *fallback);
4535            }
4536            if matches!(
4537                reader.resolve_local_name(x.name(), &super::NS_XS),
4538                Some(b"notation")
4539            ) {
4540                let output =
4541                    <super::Notation as WithDeserializer>::Deserializer::init(reader, event)?;
4542                return self.handle_notation(reader, Default::default(), output, &mut *fallback);
4543            }
4544            *self.state = fallback
4545                .take()
4546                .unwrap_or(OverrideContentDeserializerState::Init__);
4547            Ok(ElementHandlerOutput::return_to_parent(event, false))
4548        }
4549        fn finish_state<R>(
4550            reader: &R,
4551            state: OverrideContentDeserializerState,
4552        ) -> Result<super::OverrideContent, Error>
4553        where
4554            R: DeserializeReader,
4555        {
4556            use OverrideContentDeserializerState as S;
4557            match state {
4558                S::Init__ => Err(ErrorKind::MissingContent.into()),
4559                S::Annotation(mut values, deserializer) => {
4560                    if let Some(deserializer) = deserializer {
4561                        let value = deserializer.finish(reader)?;
4562                        OverrideContentDeserializer::store_annotation(&mut values, value)?;
4563                    }
4564                    Ok(super::OverrideContent::Annotation(values.ok_or_else(
4565                        || ErrorKind::MissingElement("annotation".into()),
4566                    )?))
4567                }
4568                S::SimpleType(mut values, deserializer) => {
4569                    if let Some(deserializer) = deserializer {
4570                        let value = deserializer.finish(reader)?;
4571                        OverrideContentDeserializer::store_simple_type(&mut values, value)?;
4572                    }
4573                    Ok(super::OverrideContent::SimpleType(values.ok_or_else(
4574                        || ErrorKind::MissingElement("simpleType".into()),
4575                    )?))
4576                }
4577                S::ComplexType(mut values, deserializer) => {
4578                    if let Some(deserializer) = deserializer {
4579                        let value = deserializer.finish(reader)?;
4580                        OverrideContentDeserializer::store_complex_type(&mut values, value)?;
4581                    }
4582                    Ok(super::OverrideContent::ComplexType(values.ok_or_else(
4583                        || ErrorKind::MissingElement("complexType".into()),
4584                    )?))
4585                }
4586                S::Group(mut values, deserializer) => {
4587                    if let Some(deserializer) = deserializer {
4588                        let value = deserializer.finish(reader)?;
4589                        OverrideContentDeserializer::store_group(&mut values, value)?;
4590                    }
4591                    Ok(super::OverrideContent::Group(values.ok_or_else(|| {
4592                        ErrorKind::MissingElement("group".into())
4593                    })?))
4594                }
4595                S::AttributeGroup(mut values, deserializer) => {
4596                    if let Some(deserializer) = deserializer {
4597                        let value = deserializer.finish(reader)?;
4598                        OverrideContentDeserializer::store_attribute_group(&mut values, value)?;
4599                    }
4600                    Ok(super::OverrideContent::AttributeGroup(values.ok_or_else(
4601                        || ErrorKind::MissingElement("attributeGroup".into()),
4602                    )?))
4603                }
4604                S::Element(mut values, deserializer) => {
4605                    if let Some(deserializer) = deserializer {
4606                        let value = deserializer.finish(reader)?;
4607                        OverrideContentDeserializer::store_element(&mut values, value)?;
4608                    }
4609                    Ok(super::OverrideContent::Element(values.ok_or_else(
4610                        || ErrorKind::MissingElement("element".into()),
4611                    )?))
4612                }
4613                S::Attribute(mut values, deserializer) => {
4614                    if let Some(deserializer) = deserializer {
4615                        let value = deserializer.finish(reader)?;
4616                        OverrideContentDeserializer::store_attribute(&mut values, value)?;
4617                    }
4618                    Ok(super::OverrideContent::Attribute(values.ok_or_else(
4619                        || ErrorKind::MissingElement("attribute".into()),
4620                    )?))
4621                }
4622                S::Notation(mut values, deserializer) => {
4623                    if let Some(deserializer) = deserializer {
4624                        let value = deserializer.finish(reader)?;
4625                        OverrideContentDeserializer::store_notation(&mut values, value)?;
4626                    }
4627                    Ok(super::OverrideContent::Notation(values.ok_or_else(
4628                        || ErrorKind::MissingElement("notation".into()),
4629                    )?))
4630                }
4631                S::Done__(data) => Ok(data),
4632                S::Unknown__ => unreachable!(),
4633            }
4634        }
4635        fn store_annotation(
4636            values: &mut Option<super::Annotation>,
4637            value: super::Annotation,
4638        ) -> Result<(), Error> {
4639            if values.is_some() {
4640                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
4641                    b"annotation",
4642                )))?;
4643            }
4644            *values = Some(value);
4645            Ok(())
4646        }
4647        fn store_simple_type(
4648            values: &mut Option<super::SimpleBaseType>,
4649            value: super::SimpleBaseType,
4650        ) -> Result<(), Error> {
4651            if values.is_some() {
4652                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
4653                    b"simpleType",
4654                )))?;
4655            }
4656            *values = Some(value);
4657            Ok(())
4658        }
4659        fn store_complex_type(
4660            values: &mut Option<super::ComplexBaseType>,
4661            value: super::ComplexBaseType,
4662        ) -> Result<(), Error> {
4663            if values.is_some() {
4664                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
4665                    b"complexType",
4666                )))?;
4667            }
4668            *values = Some(value);
4669            Ok(())
4670        }
4671        fn store_group(
4672            values: &mut Option<super::GroupType>,
4673            value: super::GroupType,
4674        ) -> Result<(), Error> {
4675            if values.is_some() {
4676                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
4677                    b"group",
4678                )))?;
4679            }
4680            *values = Some(value);
4681            Ok(())
4682        }
4683        fn store_attribute_group(
4684            values: &mut Option<super::AttributeGroupType>,
4685            value: super::AttributeGroupType,
4686        ) -> Result<(), Error> {
4687            if values.is_some() {
4688                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
4689                    b"attributeGroup",
4690                )))?;
4691            }
4692            *values = Some(value);
4693            Ok(())
4694        }
4695        fn store_element(
4696            values: &mut Option<super::ElementType>,
4697            value: super::ElementType,
4698        ) -> Result<(), Error> {
4699            if values.is_some() {
4700                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
4701                    b"element",
4702                )))?;
4703            }
4704            *values = Some(value);
4705            Ok(())
4706        }
4707        fn store_attribute(
4708            values: &mut Option<super::AttributeType>,
4709            value: super::AttributeType,
4710        ) -> Result<(), Error> {
4711            if values.is_some() {
4712                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
4713                    b"attribute",
4714                )))?;
4715            }
4716            *values = Some(value);
4717            Ok(())
4718        }
4719        fn store_notation(
4720            values: &mut Option<super::Notation>,
4721            value: super::Notation,
4722        ) -> Result<(), Error> {
4723            if values.is_some() {
4724                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
4725                    b"notation",
4726                )))?;
4727            }
4728            *values = Some(value);
4729            Ok(())
4730        }
4731        fn handle_annotation<'de, R>(
4732            &mut self,
4733            reader: &R,
4734            mut values: Option<super::Annotation>,
4735            output: DeserializerOutput<'de, super::Annotation>,
4736            fallback: &mut Option<OverrideContentDeserializerState>,
4737        ) -> Result<ElementHandlerOutput<'de>, Error>
4738        where
4739            R: DeserializeReader,
4740        {
4741            let DeserializerOutput {
4742                artifact,
4743                event,
4744                allow_any,
4745            } = output;
4746            if artifact.is_none() {
4747                *self.state = match fallback.take() {
4748                    None => OverrideContentDeserializerState::Init__,
4749                    Some(OverrideContentDeserializerState::Annotation(_, Some(deserializer))) => {
4750                        OverrideContentDeserializerState::Annotation(values, Some(deserializer))
4751                    }
4752                    _ => unreachable!(),
4753                };
4754                return Ok(ElementHandlerOutput::break_(event, allow_any));
4755            }
4756            match fallback.take() {
4757                None => (),
4758                Some(OverrideContentDeserializerState::Annotation(_, Some(deserializer))) => {
4759                    let data = deserializer.finish(reader)?;
4760                    OverrideContentDeserializer::store_annotation(&mut values, data)?;
4761                }
4762                Some(_) => unreachable!(),
4763            }
4764            Ok(match artifact {
4765                DeserializerArtifact::None => unreachable!(),
4766                DeserializerArtifact::Data(data) => {
4767                    OverrideContentDeserializer::store_annotation(&mut values, data)?;
4768                    let data = OverrideContentDeserializer::finish_state(
4769                        reader,
4770                        OverrideContentDeserializerState::Annotation(values, None),
4771                    )?;
4772                    *self.state = OverrideContentDeserializerState::Done__(data);
4773                    ElementHandlerOutput::Break { event, allow_any }
4774                }
4775                DeserializerArtifact::Deserializer(deserializer) => {
4776                    *self.state =
4777                        OverrideContentDeserializerState::Annotation(values, Some(deserializer));
4778                    ElementHandlerOutput::from_event_end(event, allow_any)
4779                }
4780            })
4781        }
4782        fn handle_simple_type<'de, R>(
4783            &mut self,
4784            reader: &R,
4785            mut values: Option<super::SimpleBaseType>,
4786            output: DeserializerOutput<'de, super::SimpleBaseType>,
4787            fallback: &mut Option<OverrideContentDeserializerState>,
4788        ) -> Result<ElementHandlerOutput<'de>, Error>
4789        where
4790            R: DeserializeReader,
4791        {
4792            let DeserializerOutput {
4793                artifact,
4794                event,
4795                allow_any,
4796            } = output;
4797            if artifact.is_none() {
4798                *self.state = match fallback.take() {
4799                    None => OverrideContentDeserializerState::Init__,
4800                    Some(OverrideContentDeserializerState::SimpleType(_, Some(deserializer))) => {
4801                        OverrideContentDeserializerState::SimpleType(values, Some(deserializer))
4802                    }
4803                    _ => unreachable!(),
4804                };
4805                return Ok(ElementHandlerOutput::break_(event, allow_any));
4806            }
4807            match fallback.take() {
4808                None => (),
4809                Some(OverrideContentDeserializerState::SimpleType(_, Some(deserializer))) => {
4810                    let data = deserializer.finish(reader)?;
4811                    OverrideContentDeserializer::store_simple_type(&mut values, data)?;
4812                }
4813                Some(_) => unreachable!(),
4814            }
4815            Ok(match artifact {
4816                DeserializerArtifact::None => unreachable!(),
4817                DeserializerArtifact::Data(data) => {
4818                    OverrideContentDeserializer::store_simple_type(&mut values, data)?;
4819                    let data = OverrideContentDeserializer::finish_state(
4820                        reader,
4821                        OverrideContentDeserializerState::SimpleType(values, None),
4822                    )?;
4823                    *self.state = OverrideContentDeserializerState::Done__(data);
4824                    ElementHandlerOutput::Break { event, allow_any }
4825                }
4826                DeserializerArtifact::Deserializer(deserializer) => {
4827                    *self.state =
4828                        OverrideContentDeserializerState::SimpleType(values, Some(deserializer));
4829                    ElementHandlerOutput::from_event_end(event, allow_any)
4830                }
4831            })
4832        }
4833        fn handle_complex_type<'de, R>(
4834            &mut self,
4835            reader: &R,
4836            mut values: Option<super::ComplexBaseType>,
4837            output: DeserializerOutput<'de, super::ComplexBaseType>,
4838            fallback: &mut Option<OverrideContentDeserializerState>,
4839        ) -> Result<ElementHandlerOutput<'de>, Error>
4840        where
4841            R: DeserializeReader,
4842        {
4843            let DeserializerOutput {
4844                artifact,
4845                event,
4846                allow_any,
4847            } = output;
4848            if artifact.is_none() {
4849                *self.state = match fallback.take() {
4850                    None => OverrideContentDeserializerState::Init__,
4851                    Some(OverrideContentDeserializerState::ComplexType(_, Some(deserializer))) => {
4852                        OverrideContentDeserializerState::ComplexType(values, Some(deserializer))
4853                    }
4854                    _ => unreachable!(),
4855                };
4856                return Ok(ElementHandlerOutput::break_(event, allow_any));
4857            }
4858            match fallback.take() {
4859                None => (),
4860                Some(OverrideContentDeserializerState::ComplexType(_, Some(deserializer))) => {
4861                    let data = deserializer.finish(reader)?;
4862                    OverrideContentDeserializer::store_complex_type(&mut values, data)?;
4863                }
4864                Some(_) => unreachable!(),
4865            }
4866            Ok(match artifact {
4867                DeserializerArtifact::None => unreachable!(),
4868                DeserializerArtifact::Data(data) => {
4869                    OverrideContentDeserializer::store_complex_type(&mut values, data)?;
4870                    let data = OverrideContentDeserializer::finish_state(
4871                        reader,
4872                        OverrideContentDeserializerState::ComplexType(values, None),
4873                    )?;
4874                    *self.state = OverrideContentDeserializerState::Done__(data);
4875                    ElementHandlerOutput::Break { event, allow_any }
4876                }
4877                DeserializerArtifact::Deserializer(deserializer) => {
4878                    *self.state =
4879                        OverrideContentDeserializerState::ComplexType(values, Some(deserializer));
4880                    ElementHandlerOutput::from_event_end(event, allow_any)
4881                }
4882            })
4883        }
4884        fn handle_group<'de, R>(
4885            &mut self,
4886            reader: &R,
4887            mut values: Option<super::GroupType>,
4888            output: DeserializerOutput<'de, super::GroupType>,
4889            fallback: &mut Option<OverrideContentDeserializerState>,
4890        ) -> Result<ElementHandlerOutput<'de>, Error>
4891        where
4892            R: DeserializeReader,
4893        {
4894            let DeserializerOutput {
4895                artifact,
4896                event,
4897                allow_any,
4898            } = output;
4899            if artifact.is_none() {
4900                *self.state = match fallback.take() {
4901                    None => OverrideContentDeserializerState::Init__,
4902                    Some(OverrideContentDeserializerState::Group(_, Some(deserializer))) => {
4903                        OverrideContentDeserializerState::Group(values, Some(deserializer))
4904                    }
4905                    _ => unreachable!(),
4906                };
4907                return Ok(ElementHandlerOutput::break_(event, allow_any));
4908            }
4909            match fallback.take() {
4910                None => (),
4911                Some(OverrideContentDeserializerState::Group(_, Some(deserializer))) => {
4912                    let data = deserializer.finish(reader)?;
4913                    OverrideContentDeserializer::store_group(&mut values, data)?;
4914                }
4915                Some(_) => unreachable!(),
4916            }
4917            Ok(match artifact {
4918                DeserializerArtifact::None => unreachable!(),
4919                DeserializerArtifact::Data(data) => {
4920                    OverrideContentDeserializer::store_group(&mut values, data)?;
4921                    let data = OverrideContentDeserializer::finish_state(
4922                        reader,
4923                        OverrideContentDeserializerState::Group(values, None),
4924                    )?;
4925                    *self.state = OverrideContentDeserializerState::Done__(data);
4926                    ElementHandlerOutput::Break { event, allow_any }
4927                }
4928                DeserializerArtifact::Deserializer(deserializer) => {
4929                    *self.state =
4930                        OverrideContentDeserializerState::Group(values, Some(deserializer));
4931                    ElementHandlerOutput::from_event_end(event, allow_any)
4932                }
4933            })
4934        }
4935        fn handle_attribute_group<'de, R>(
4936            &mut self,
4937            reader: &R,
4938            mut values: Option<super::AttributeGroupType>,
4939            output: DeserializerOutput<'de, super::AttributeGroupType>,
4940            fallback: &mut Option<OverrideContentDeserializerState>,
4941        ) -> Result<ElementHandlerOutput<'de>, Error>
4942        where
4943            R: DeserializeReader,
4944        {
4945            let DeserializerOutput {
4946                artifact,
4947                event,
4948                allow_any,
4949            } = output;
4950            if artifact.is_none() {
4951                *self.state = match fallback.take() {
4952                    None => OverrideContentDeserializerState::Init__,
4953                    Some(OverrideContentDeserializerState::AttributeGroup(
4954                        _,
4955                        Some(deserializer),
4956                    )) => {
4957                        OverrideContentDeserializerState::AttributeGroup(values, Some(deserializer))
4958                    }
4959                    _ => unreachable!(),
4960                };
4961                return Ok(ElementHandlerOutput::break_(event, allow_any));
4962            }
4963            match fallback.take() {
4964                None => (),
4965                Some(OverrideContentDeserializerState::AttributeGroup(_, Some(deserializer))) => {
4966                    let data = deserializer.finish(reader)?;
4967                    OverrideContentDeserializer::store_attribute_group(&mut values, data)?;
4968                }
4969                Some(_) => unreachable!(),
4970            }
4971            Ok(match artifact {
4972                DeserializerArtifact::None => unreachable!(),
4973                DeserializerArtifact::Data(data) => {
4974                    OverrideContentDeserializer::store_attribute_group(&mut values, data)?;
4975                    let data = OverrideContentDeserializer::finish_state(
4976                        reader,
4977                        OverrideContentDeserializerState::AttributeGroup(values, None),
4978                    )?;
4979                    *self.state = OverrideContentDeserializerState::Done__(data);
4980                    ElementHandlerOutput::Break { event, allow_any }
4981                }
4982                DeserializerArtifact::Deserializer(deserializer) => {
4983                    *self.state = OverrideContentDeserializerState::AttributeGroup(
4984                        values,
4985                        Some(deserializer),
4986                    );
4987                    ElementHandlerOutput::from_event_end(event, allow_any)
4988                }
4989            })
4990        }
4991        fn handle_element<'de, R>(
4992            &mut self,
4993            reader: &R,
4994            mut values: Option<super::ElementType>,
4995            output: DeserializerOutput<'de, super::ElementType>,
4996            fallback: &mut Option<OverrideContentDeserializerState>,
4997        ) -> Result<ElementHandlerOutput<'de>, Error>
4998        where
4999            R: DeserializeReader,
5000        {
5001            let DeserializerOutput {
5002                artifact,
5003                event,
5004                allow_any,
5005            } = output;
5006            if artifact.is_none() {
5007                *self.state = match fallback.take() {
5008                    None => OverrideContentDeserializerState::Init__,
5009                    Some(OverrideContentDeserializerState::Element(_, Some(deserializer))) => {
5010                        OverrideContentDeserializerState::Element(values, Some(deserializer))
5011                    }
5012                    _ => unreachable!(),
5013                };
5014                return Ok(ElementHandlerOutput::break_(event, allow_any));
5015            }
5016            match fallback.take() {
5017                None => (),
5018                Some(OverrideContentDeserializerState::Element(_, Some(deserializer))) => {
5019                    let data = deserializer.finish(reader)?;
5020                    OverrideContentDeserializer::store_element(&mut values, data)?;
5021                }
5022                Some(_) => unreachable!(),
5023            }
5024            Ok(match artifact {
5025                DeserializerArtifact::None => unreachable!(),
5026                DeserializerArtifact::Data(data) => {
5027                    OverrideContentDeserializer::store_element(&mut values, data)?;
5028                    let data = OverrideContentDeserializer::finish_state(
5029                        reader,
5030                        OverrideContentDeserializerState::Element(values, None),
5031                    )?;
5032                    *self.state = OverrideContentDeserializerState::Done__(data);
5033                    ElementHandlerOutput::Break { event, allow_any }
5034                }
5035                DeserializerArtifact::Deserializer(deserializer) => {
5036                    *self.state =
5037                        OverrideContentDeserializerState::Element(values, Some(deserializer));
5038                    ElementHandlerOutput::from_event_end(event, allow_any)
5039                }
5040            })
5041        }
5042        fn handle_attribute<'de, R>(
5043            &mut self,
5044            reader: &R,
5045            mut values: Option<super::AttributeType>,
5046            output: DeserializerOutput<'de, super::AttributeType>,
5047            fallback: &mut Option<OverrideContentDeserializerState>,
5048        ) -> Result<ElementHandlerOutput<'de>, Error>
5049        where
5050            R: DeserializeReader,
5051        {
5052            let DeserializerOutput {
5053                artifact,
5054                event,
5055                allow_any,
5056            } = output;
5057            if artifact.is_none() {
5058                *self.state = match fallback.take() {
5059                    None => OverrideContentDeserializerState::Init__,
5060                    Some(OverrideContentDeserializerState::Attribute(_, Some(deserializer))) => {
5061                        OverrideContentDeserializerState::Attribute(values, Some(deserializer))
5062                    }
5063                    _ => unreachable!(),
5064                };
5065                return Ok(ElementHandlerOutput::break_(event, allow_any));
5066            }
5067            match fallback.take() {
5068                None => (),
5069                Some(OverrideContentDeserializerState::Attribute(_, Some(deserializer))) => {
5070                    let data = deserializer.finish(reader)?;
5071                    OverrideContentDeserializer::store_attribute(&mut values, data)?;
5072                }
5073                Some(_) => unreachable!(),
5074            }
5075            Ok(match artifact {
5076                DeserializerArtifact::None => unreachable!(),
5077                DeserializerArtifact::Data(data) => {
5078                    OverrideContentDeserializer::store_attribute(&mut values, data)?;
5079                    let data = OverrideContentDeserializer::finish_state(
5080                        reader,
5081                        OverrideContentDeserializerState::Attribute(values, None),
5082                    )?;
5083                    *self.state = OverrideContentDeserializerState::Done__(data);
5084                    ElementHandlerOutput::Break { event, allow_any }
5085                }
5086                DeserializerArtifact::Deserializer(deserializer) => {
5087                    *self.state =
5088                        OverrideContentDeserializerState::Attribute(values, Some(deserializer));
5089                    ElementHandlerOutput::from_event_end(event, allow_any)
5090                }
5091            })
5092        }
5093        fn handle_notation<'de, R>(
5094            &mut self,
5095            reader: &R,
5096            mut values: Option<super::Notation>,
5097            output: DeserializerOutput<'de, super::Notation>,
5098            fallback: &mut Option<OverrideContentDeserializerState>,
5099        ) -> Result<ElementHandlerOutput<'de>, Error>
5100        where
5101            R: DeserializeReader,
5102        {
5103            let DeserializerOutput {
5104                artifact,
5105                event,
5106                allow_any,
5107            } = output;
5108            if artifact.is_none() {
5109                *self.state = match fallback.take() {
5110                    None => OverrideContentDeserializerState::Init__,
5111                    Some(OverrideContentDeserializerState::Notation(_, Some(deserializer))) => {
5112                        OverrideContentDeserializerState::Notation(values, Some(deserializer))
5113                    }
5114                    _ => unreachable!(),
5115                };
5116                return Ok(ElementHandlerOutput::break_(event, allow_any));
5117            }
5118            match fallback.take() {
5119                None => (),
5120                Some(OverrideContentDeserializerState::Notation(_, Some(deserializer))) => {
5121                    let data = deserializer.finish(reader)?;
5122                    OverrideContentDeserializer::store_notation(&mut values, data)?;
5123                }
5124                Some(_) => unreachable!(),
5125            }
5126            Ok(match artifact {
5127                DeserializerArtifact::None => unreachable!(),
5128                DeserializerArtifact::Data(data) => {
5129                    OverrideContentDeserializer::store_notation(&mut values, data)?;
5130                    let data = OverrideContentDeserializer::finish_state(
5131                        reader,
5132                        OverrideContentDeserializerState::Notation(values, None),
5133                    )?;
5134                    *self.state = OverrideContentDeserializerState::Done__(data);
5135                    ElementHandlerOutput::Break { event, allow_any }
5136                }
5137                DeserializerArtifact::Deserializer(deserializer) => {
5138                    *self.state =
5139                        OverrideContentDeserializerState::Notation(values, Some(deserializer));
5140                    ElementHandlerOutput::from_event_end(event, allow_any)
5141                }
5142            })
5143        }
5144    }
5145    impl<'de> Deserializer<'de, super::OverrideContent> for Box<OverrideContentDeserializer> {
5146        fn init<R>(reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::OverrideContent>
5147        where
5148            R: DeserializeReader,
5149        {
5150            let deserializer = Box::new(OverrideContentDeserializer {
5151                state: Box::new(OverrideContentDeserializerState::Init__),
5152            });
5153            let mut output = deserializer.next(reader, event)?;
5154            output.artifact = match output.artifact {
5155                DeserializerArtifact::Deserializer(x)
5156                    if matches!(&*x.state, OverrideContentDeserializerState::Init__) =>
5157                {
5158                    DeserializerArtifact::None
5159                }
5160                artifact => artifact,
5161            };
5162            Ok(output)
5163        }
5164        fn next<R>(
5165            mut self,
5166            reader: &R,
5167            event: Event<'de>,
5168        ) -> DeserializerResult<'de, super::OverrideContent>
5169        where
5170            R: DeserializeReader,
5171        {
5172            use OverrideContentDeserializerState as S;
5173            let mut event = event;
5174            let mut fallback = None;
5175            let (event, allow_any) = loop {
5176                let state = replace(&mut *self.state, S::Unknown__);
5177                event = match (state, event) {
5178                    (S::Annotation(values, Some(deserializer)), event) => {
5179                        let output = deserializer.next(reader, event)?;
5180                        match self.handle_annotation(reader, values, output, &mut fallback)? {
5181                            ElementHandlerOutput::Break { event, allow_any } => {
5182                                break (event, allow_any)
5183                            }
5184                            ElementHandlerOutput::Continue { event, .. } => event,
5185                        }
5186                    }
5187                    (S::SimpleType(values, Some(deserializer)), event) => {
5188                        let output = deserializer.next(reader, event)?;
5189                        match self.handle_simple_type(reader, values, output, &mut fallback)? {
5190                            ElementHandlerOutput::Break { event, allow_any } => {
5191                                break (event, allow_any)
5192                            }
5193                            ElementHandlerOutput::Continue { event, .. } => event,
5194                        }
5195                    }
5196                    (S::ComplexType(values, Some(deserializer)), event) => {
5197                        let output = deserializer.next(reader, event)?;
5198                        match self.handle_complex_type(reader, 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::Group(values, Some(deserializer)), event) => {
5206                        let output = deserializer.next(reader, event)?;
5207                        match self.handle_group(reader, 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::AttributeGroup(values, Some(deserializer)), event) => {
5215                        let output = deserializer.next(reader, event)?;
5216                        match self.handle_attribute_group(reader, 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::Element(values, Some(deserializer)), event) => {
5224                        let output = deserializer.next(reader, event)?;
5225                        match self.handle_element(reader, 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::Attribute(values, Some(deserializer)), event) => {
5233                        let output = deserializer.next(reader, event)?;
5234                        match self.handle_attribute(reader, 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::Notation(values, Some(deserializer)), event) => {
5242                        let output = deserializer.next(reader, event)?;
5243                        match self.handle_notation(reader, values, output, &mut fallback)? {
5244                            ElementHandlerOutput::Break { event, allow_any } => {
5245                                break (event, allow_any)
5246                            }
5247                            ElementHandlerOutput::Continue { event, .. } => event,
5248                        }
5249                    }
5250                    (state, event @ Event::End(_)) => {
5251                        return Ok(DeserializerOutput {
5252                            artifact: DeserializerArtifact::Data(
5253                                OverrideContentDeserializer::finish_state(reader, state)?,
5254                            ),
5255                            event: DeserializerEvent::Continue(event),
5256                            allow_any: false,
5257                        });
5258                    }
5259                    (S::Init__, event) => match self.find_suitable(reader, event, &mut fallback)? {
5260                        ElementHandlerOutput::Break { event, allow_any } => {
5261                            break (event, allow_any)
5262                        }
5263                        ElementHandlerOutput::Continue { event, .. } => event,
5264                    },
5265                    (S::Annotation(values, None), event) => {
5266                        let output = <super::Annotation as WithDeserializer>::Deserializer::init(
5267                            reader, event,
5268                        )?;
5269                        match self.handle_annotation(reader, values, output, &mut fallback)? {
5270                            ElementHandlerOutput::Break { event, allow_any } => {
5271                                break (event, allow_any)
5272                            }
5273                            ElementHandlerOutput::Continue { event, .. } => event,
5274                        }
5275                    }
5276                    (S::SimpleType(values, None), event) => {
5277                        let output =
5278                            <super::SimpleBaseType as WithDeserializer>::Deserializer::init(
5279                                reader, event,
5280                            )?;
5281                        match self.handle_simple_type(reader, values, output, &mut fallback)? {
5282                            ElementHandlerOutput::Break { event, allow_any } => {
5283                                break (event, allow_any)
5284                            }
5285                            ElementHandlerOutput::Continue { event, .. } => event,
5286                        }
5287                    }
5288                    (S::ComplexType(values, None), event) => {
5289                        let output =
5290                            <super::ComplexBaseType as WithDeserializer>::Deserializer::init(
5291                                reader, event,
5292                            )?;
5293                        match self.handle_complex_type(reader, values, output, &mut fallback)? {
5294                            ElementHandlerOutput::Break { event, allow_any } => {
5295                                break (event, allow_any)
5296                            }
5297                            ElementHandlerOutput::Continue { event, .. } => event,
5298                        }
5299                    }
5300                    (S::Group(values, None), event) => {
5301                        let output = <super::GroupType as WithDeserializer>::Deserializer::init(
5302                            reader, event,
5303                        )?;
5304                        match self.handle_group(reader, 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::AttributeGroup(values, None), event) => {
5312                        let output =
5313                            <super::AttributeGroupType as WithDeserializer>::Deserializer::init(
5314                                reader, event,
5315                            )?;
5316                        match self.handle_attribute_group(reader, values, output, &mut fallback)? {
5317                            ElementHandlerOutput::Break { event, allow_any } => {
5318                                break (event, allow_any)
5319                            }
5320                            ElementHandlerOutput::Continue { event, .. } => event,
5321                        }
5322                    }
5323                    (S::Element(values, None), event) => {
5324                        let output = <super::ElementType as WithDeserializer>::Deserializer::init(
5325                            reader, event,
5326                        )?;
5327                        match self.handle_element(reader, values, output, &mut fallback)? {
5328                            ElementHandlerOutput::Break { event, allow_any } => {
5329                                break (event, allow_any)
5330                            }
5331                            ElementHandlerOutput::Continue { event, .. } => event,
5332                        }
5333                    }
5334                    (S::Attribute(values, None), event) => {
5335                        let output =
5336                            <super::AttributeType as WithDeserializer>::Deserializer::init(
5337                                reader, event,
5338                            )?;
5339                        match self.handle_attribute(reader, values, output, &mut fallback)? {
5340                            ElementHandlerOutput::Break { event, allow_any } => {
5341                                break (event, allow_any)
5342                            }
5343                            ElementHandlerOutput::Continue { event, .. } => event,
5344                        }
5345                    }
5346                    (S::Notation(values, None), event) => {
5347                        let output = <super::Notation as WithDeserializer>::Deserializer::init(
5348                            reader, event,
5349                        )?;
5350                        match self.handle_notation(reader, values, output, &mut fallback)? {
5351                            ElementHandlerOutput::Break { event, allow_any } => {
5352                                break (event, allow_any)
5353                            }
5354                            ElementHandlerOutput::Continue { event, .. } => event,
5355                        }
5356                    }
5357                    (s @ S::Done__(_), event) => {
5358                        *self.state = s;
5359                        break (DeserializerEvent::Continue(event), false);
5360                    }
5361                    (S::Unknown__, _) => unreachable!(),
5362                }
5363            };
5364            let artifact = if matches!(&*self.state, S::Done__(_)) {
5365                DeserializerArtifact::Data(self.finish(reader)?)
5366            } else {
5367                DeserializerArtifact::Deserializer(self)
5368            };
5369            Ok(DeserializerOutput {
5370                artifact,
5371                event,
5372                allow_any,
5373            })
5374        }
5375        fn finish<R>(self, reader: &R) -> Result<super::OverrideContent, Error>
5376        where
5377            R: DeserializeReader,
5378        {
5379            OverrideContentDeserializer::finish_state(reader, *self.state)
5380        }
5381    }
5382    #[derive(Debug)]
5383    pub struct AnnotationDeserializer {
5384        id: Option<String>,
5385        content: Vec<super::AnnotationContent>,
5386        state: Box<AnnotationDeserializerState>,
5387    }
5388    #[derive(Debug)]
5389    enum AnnotationDeserializerState {
5390        Init__,
5391        Next__,
5392        Content__(<super::AnnotationContent as WithDeserializer>::Deserializer),
5393        Unknown__,
5394    }
5395    impl AnnotationDeserializer {
5396        fn from_bytes_start<R>(reader: &R, bytes_start: &BytesStart<'_>) -> Result<Box<Self>, Error>
5397        where
5398            R: DeserializeReader,
5399        {
5400            let mut id: Option<String> = None;
5401            for attrib in filter_xmlns_attributes(bytes_start) {
5402                let attrib = attrib?;
5403                if matches!(
5404                    reader.resolve_local_name(attrib.key, &super::NS_XS),
5405                    Some(b"id")
5406                ) {
5407                    reader.read_attrib(&mut id, b"id", &attrib.value)?;
5408                }
5409            }
5410            Ok(Box::new(Self {
5411                id: id,
5412                content: Vec::new(),
5413                state: Box::new(AnnotationDeserializerState::Init__),
5414            }))
5415        }
5416        fn finish_state<R>(
5417            &mut self,
5418            reader: &R,
5419            state: AnnotationDeserializerState,
5420        ) -> Result<(), Error>
5421        where
5422            R: DeserializeReader,
5423        {
5424            if let AnnotationDeserializerState::Content__(deserializer) = state {
5425                self.store_content(deserializer.finish(reader)?)?;
5426            }
5427            Ok(())
5428        }
5429        fn store_content(&mut self, value: super::AnnotationContent) -> Result<(), Error> {
5430            self.content.push(value);
5431            Ok(())
5432        }
5433        fn handle_content<'de, R>(
5434            &mut self,
5435            reader: &R,
5436            output: DeserializerOutput<'de, super::AnnotationContent>,
5437            fallback: &mut Option<AnnotationDeserializerState>,
5438        ) -> Result<ElementHandlerOutput<'de>, Error>
5439        where
5440            R: DeserializeReader,
5441        {
5442            let DeserializerOutput {
5443                artifact,
5444                event,
5445                allow_any,
5446            } = output;
5447            if artifact.is_none() {
5448                *self.state = fallback
5449                    .take()
5450                    .unwrap_or(AnnotationDeserializerState::Next__);
5451                return Ok(ElementHandlerOutput::break_(event, allow_any));
5452            }
5453            if let Some(fallback) = fallback.take() {
5454                self.finish_state(reader, fallback)?;
5455            }
5456            Ok(match artifact {
5457                DeserializerArtifact::None => unreachable!(),
5458                DeserializerArtifact::Data(data) => {
5459                    self.store_content(data)?;
5460                    *self.state = AnnotationDeserializerState::Next__;
5461                    ElementHandlerOutput::from_event(event, allow_any)
5462                }
5463                DeserializerArtifact::Deserializer(deserializer) => {
5464                    let ret = ElementHandlerOutput::from_event(event, allow_any);
5465                    match &ret {
5466                        ElementHandlerOutput::Break { .. } => {
5467                            *self.state = AnnotationDeserializerState::Content__(deserializer);
5468                        }
5469                        ElementHandlerOutput::Continue { .. } => {
5470                            fallback.get_or_insert(AnnotationDeserializerState::Content__(
5471                                deserializer,
5472                            ));
5473                            *self.state = AnnotationDeserializerState::Next__;
5474                        }
5475                    }
5476                    ret
5477                }
5478            })
5479        }
5480    }
5481    impl<'de> Deserializer<'de, super::Annotation> for Box<AnnotationDeserializer> {
5482        fn init<R>(reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::Annotation>
5483        where
5484            R: DeserializeReader,
5485        {
5486            reader
5487                .init_deserializer_from_start_event(event, AnnotationDeserializer::from_bytes_start)
5488        }
5489        fn next<R>(
5490            mut self,
5491            reader: &R,
5492            event: Event<'de>,
5493        ) -> DeserializerResult<'de, super::Annotation>
5494        where
5495            R: DeserializeReader,
5496        {
5497            use AnnotationDeserializerState as S;
5498            let mut event = event;
5499            let mut fallback = None;
5500            let (event, allow_any) = loop {
5501                let state = replace(&mut *self.state, S::Unknown__);
5502                event = match (state, event) {
5503                    (S::Content__(deserializer), event) => {
5504                        let output = deserializer.next(reader, event)?;
5505                        match self.handle_content(reader, output, &mut fallback)? {
5506                            ElementHandlerOutput::Break { event, allow_any } => {
5507                                break (event, allow_any)
5508                            }
5509                            ElementHandlerOutput::Continue { event, .. } => event,
5510                        }
5511                    }
5512                    (_, Event::End(_)) => {
5513                        return Ok(DeserializerOutput {
5514                            artifact: DeserializerArtifact::Data(self.finish(reader)?),
5515                            event: DeserializerEvent::None,
5516                            allow_any: false,
5517                        });
5518                    }
5519                    (state @ (S::Init__ | S::Next__), event) => {
5520                        fallback.get_or_insert(state);
5521                        let output =
5522                            <super::AnnotationContent as WithDeserializer>::Deserializer::init(
5523                                reader, event,
5524                            )?;
5525                        match self.handle_content(reader, output, &mut fallback)? {
5526                            ElementHandlerOutput::Break { event, allow_any } => {
5527                                break (event, allow_any)
5528                            }
5529                            ElementHandlerOutput::Continue { event, .. } => event,
5530                        }
5531                    }
5532                    (S::Unknown__, _) => unreachable!(),
5533                }
5534            };
5535            let artifact = DeserializerArtifact::Deserializer(self);
5536            Ok(DeserializerOutput {
5537                artifact,
5538                event,
5539                allow_any,
5540            })
5541        }
5542        fn finish<R>(mut self, reader: &R) -> Result<super::Annotation, Error>
5543        where
5544            R: DeserializeReader,
5545        {
5546            let state = replace(&mut *self.state, AnnotationDeserializerState::Unknown__);
5547            self.finish_state(reader, state)?;
5548            Ok(super::Annotation {
5549                id: self.id,
5550                content: self.content,
5551            })
5552        }
5553    }
5554    #[derive(Debug)]
5555    pub struct AnnotationContentDeserializer {
5556        state: Box<AnnotationContentDeserializerState>,
5557    }
5558    #[derive(Debug)]
5559    pub enum AnnotationContentDeserializerState {
5560        Init__,
5561        Appinfo(
5562            Option<super::Appinfo>,
5563            Option<<super::Appinfo as WithDeserializer>::Deserializer>,
5564        ),
5565        Documentation(
5566            Option<super::Documentation>,
5567            Option<<super::Documentation as WithDeserializer>::Deserializer>,
5568        ),
5569        Done__(super::AnnotationContent),
5570        Unknown__,
5571    }
5572    impl AnnotationContentDeserializer {
5573        fn find_suitable<'de, R>(
5574            &mut self,
5575            reader: &R,
5576            event: Event<'de>,
5577            fallback: &mut Option<AnnotationContentDeserializerState>,
5578        ) -> Result<ElementHandlerOutput<'de>, Error>
5579        where
5580            R: DeserializeReader,
5581        {
5582            let (Event::Start(x) | Event::Empty(x)) = &event else {
5583                *self.state = fallback
5584                    .take()
5585                    .unwrap_or(AnnotationContentDeserializerState::Init__);
5586                return Ok(ElementHandlerOutput::return_to_parent(event, false));
5587            };
5588            if matches!(
5589                reader.resolve_local_name(x.name(), &super::NS_XS),
5590                Some(b"appinfo")
5591            ) {
5592                let output =
5593                    <super::Appinfo as WithDeserializer>::Deserializer::init(reader, event)?;
5594                return self.handle_appinfo(reader, Default::default(), output, &mut *fallback);
5595            }
5596            if matches!(
5597                reader.resolve_local_name(x.name(), &super::NS_XS),
5598                Some(b"documentation")
5599            ) {
5600                let output =
5601                    <super::Documentation as WithDeserializer>::Deserializer::init(reader, event)?;
5602                return self.handle_documentation(
5603                    reader,
5604                    Default::default(),
5605                    output,
5606                    &mut *fallback,
5607                );
5608            }
5609            *self.state = fallback
5610                .take()
5611                .unwrap_or(AnnotationContentDeserializerState::Init__);
5612            Ok(ElementHandlerOutput::return_to_parent(event, false))
5613        }
5614        fn finish_state<R>(
5615            reader: &R,
5616            state: AnnotationContentDeserializerState,
5617        ) -> Result<super::AnnotationContent, Error>
5618        where
5619            R: DeserializeReader,
5620        {
5621            use AnnotationContentDeserializerState as S;
5622            match state {
5623                S::Init__ => Err(ErrorKind::MissingContent.into()),
5624                S::Appinfo(mut values, deserializer) => {
5625                    if let Some(deserializer) = deserializer {
5626                        let value = deserializer.finish(reader)?;
5627                        AnnotationContentDeserializer::store_appinfo(&mut values, value)?;
5628                    }
5629                    Ok(super::AnnotationContent::Appinfo(values.ok_or_else(
5630                        || ErrorKind::MissingElement("appinfo".into()),
5631                    )?))
5632                }
5633                S::Documentation(mut values, deserializer) => {
5634                    if let Some(deserializer) = deserializer {
5635                        let value = deserializer.finish(reader)?;
5636                        AnnotationContentDeserializer::store_documentation(&mut values, value)?;
5637                    }
5638                    Ok(super::AnnotationContent::Documentation(values.ok_or_else(
5639                        || ErrorKind::MissingElement("documentation".into()),
5640                    )?))
5641                }
5642                S::Done__(data) => Ok(data),
5643                S::Unknown__ => unreachable!(),
5644            }
5645        }
5646        fn store_appinfo(
5647            values: &mut Option<super::Appinfo>,
5648            value: super::Appinfo,
5649        ) -> Result<(), Error> {
5650            if values.is_some() {
5651                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
5652                    b"appinfo",
5653                )))?;
5654            }
5655            *values = Some(value);
5656            Ok(())
5657        }
5658        fn store_documentation(
5659            values: &mut Option<super::Documentation>,
5660            value: super::Documentation,
5661        ) -> Result<(), Error> {
5662            if values.is_some() {
5663                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
5664                    b"documentation",
5665                )))?;
5666            }
5667            *values = Some(value);
5668            Ok(())
5669        }
5670        fn handle_appinfo<'de, R>(
5671            &mut self,
5672            reader: &R,
5673            mut values: Option<super::Appinfo>,
5674            output: DeserializerOutput<'de, super::Appinfo>,
5675            fallback: &mut Option<AnnotationContentDeserializerState>,
5676        ) -> Result<ElementHandlerOutput<'de>, Error>
5677        where
5678            R: DeserializeReader,
5679        {
5680            let DeserializerOutput {
5681                artifact,
5682                event,
5683                allow_any,
5684            } = output;
5685            if artifact.is_none() {
5686                *self.state = match fallback.take() {
5687                    None => AnnotationContentDeserializerState::Init__,
5688                    Some(AnnotationContentDeserializerState::Appinfo(_, Some(deserializer))) => {
5689                        AnnotationContentDeserializerState::Appinfo(values, Some(deserializer))
5690                    }
5691                    _ => unreachable!(),
5692                };
5693                return Ok(ElementHandlerOutput::break_(event, allow_any));
5694            }
5695            match fallback.take() {
5696                None => (),
5697                Some(AnnotationContentDeserializerState::Appinfo(_, Some(deserializer))) => {
5698                    let data = deserializer.finish(reader)?;
5699                    AnnotationContentDeserializer::store_appinfo(&mut values, data)?;
5700                }
5701                Some(_) => unreachable!(),
5702            }
5703            Ok(match artifact {
5704                DeserializerArtifact::None => unreachable!(),
5705                DeserializerArtifact::Data(data) => {
5706                    AnnotationContentDeserializer::store_appinfo(&mut values, data)?;
5707                    let data = AnnotationContentDeserializer::finish_state(
5708                        reader,
5709                        AnnotationContentDeserializerState::Appinfo(values, None),
5710                    )?;
5711                    *self.state = AnnotationContentDeserializerState::Done__(data);
5712                    ElementHandlerOutput::Break { event, allow_any }
5713                }
5714                DeserializerArtifact::Deserializer(deserializer) => {
5715                    *self.state =
5716                        AnnotationContentDeserializerState::Appinfo(values, Some(deserializer));
5717                    ElementHandlerOutput::from_event_end(event, allow_any)
5718                }
5719            })
5720        }
5721        fn handle_documentation<'de, R>(
5722            &mut self,
5723            reader: &R,
5724            mut values: Option<super::Documentation>,
5725            output: DeserializerOutput<'de, super::Documentation>,
5726            fallback: &mut Option<AnnotationContentDeserializerState>,
5727        ) -> Result<ElementHandlerOutput<'de>, Error>
5728        where
5729            R: DeserializeReader,
5730        {
5731            let DeserializerOutput {
5732                artifact,
5733                event,
5734                allow_any,
5735            } = output;
5736            if artifact.is_none() {
5737                *self.state = match fallback.take() {
5738                    None => AnnotationContentDeserializerState::Init__,
5739                    Some(AnnotationContentDeserializerState::Documentation(
5740                        _,
5741                        Some(deserializer),
5742                    )) => AnnotationContentDeserializerState::Documentation(
5743                        values,
5744                        Some(deserializer),
5745                    ),
5746                    _ => unreachable!(),
5747                };
5748                return Ok(ElementHandlerOutput::break_(event, allow_any));
5749            }
5750            match fallback.take() {
5751                None => (),
5752                Some(AnnotationContentDeserializerState::Documentation(_, Some(deserializer))) => {
5753                    let data = deserializer.finish(reader)?;
5754                    AnnotationContentDeserializer::store_documentation(&mut values, data)?;
5755                }
5756                Some(_) => unreachable!(),
5757            }
5758            Ok(match artifact {
5759                DeserializerArtifact::None => unreachable!(),
5760                DeserializerArtifact::Data(data) => {
5761                    AnnotationContentDeserializer::store_documentation(&mut values, data)?;
5762                    let data = AnnotationContentDeserializer::finish_state(
5763                        reader,
5764                        AnnotationContentDeserializerState::Documentation(values, None),
5765                    )?;
5766                    *self.state = AnnotationContentDeserializerState::Done__(data);
5767                    ElementHandlerOutput::Break { event, allow_any }
5768                }
5769                DeserializerArtifact::Deserializer(deserializer) => {
5770                    *self.state = AnnotationContentDeserializerState::Documentation(
5771                        values,
5772                        Some(deserializer),
5773                    );
5774                    ElementHandlerOutput::from_event_end(event, allow_any)
5775                }
5776            })
5777        }
5778    }
5779    impl<'de> Deserializer<'de, super::AnnotationContent> for Box<AnnotationContentDeserializer> {
5780        fn init<R>(
5781            reader: &R,
5782            event: Event<'de>,
5783        ) -> DeserializerResult<'de, super::AnnotationContent>
5784        where
5785            R: DeserializeReader,
5786        {
5787            let deserializer = Box::new(AnnotationContentDeserializer {
5788                state: Box::new(AnnotationContentDeserializerState::Init__),
5789            });
5790            let mut output = deserializer.next(reader, event)?;
5791            output.artifact = match output.artifact {
5792                DeserializerArtifact::Deserializer(x)
5793                    if matches!(&*x.state, AnnotationContentDeserializerState::Init__) =>
5794                {
5795                    DeserializerArtifact::None
5796                }
5797                artifact => artifact,
5798            };
5799            Ok(output)
5800        }
5801        fn next<R>(
5802            mut self,
5803            reader: &R,
5804            event: Event<'de>,
5805        ) -> DeserializerResult<'de, super::AnnotationContent>
5806        where
5807            R: DeserializeReader,
5808        {
5809            use AnnotationContentDeserializerState as S;
5810            let mut event = event;
5811            let mut fallback = None;
5812            let (event, allow_any) = loop {
5813                let state = replace(&mut *self.state, S::Unknown__);
5814                event = match (state, event) {
5815                    (S::Appinfo(values, Some(deserializer)), event) => {
5816                        let output = deserializer.next(reader, event)?;
5817                        match self.handle_appinfo(reader, values, output, &mut fallback)? {
5818                            ElementHandlerOutput::Break { event, allow_any } => {
5819                                break (event, allow_any)
5820                            }
5821                            ElementHandlerOutput::Continue { event, .. } => event,
5822                        }
5823                    }
5824                    (S::Documentation(values, Some(deserializer)), event) => {
5825                        let output = deserializer.next(reader, event)?;
5826                        match self.handle_documentation(reader, values, output, &mut fallback)? {
5827                            ElementHandlerOutput::Break { event, allow_any } => {
5828                                break (event, allow_any)
5829                            }
5830                            ElementHandlerOutput::Continue { event, .. } => event,
5831                        }
5832                    }
5833                    (state, event @ Event::End(_)) => {
5834                        return Ok(DeserializerOutput {
5835                            artifact: DeserializerArtifact::Data(
5836                                AnnotationContentDeserializer::finish_state(reader, state)?,
5837                            ),
5838                            event: DeserializerEvent::Continue(event),
5839                            allow_any: false,
5840                        });
5841                    }
5842                    (S::Init__, event) => match self.find_suitable(reader, event, &mut fallback)? {
5843                        ElementHandlerOutput::Break { event, allow_any } => {
5844                            break (event, allow_any)
5845                        }
5846                        ElementHandlerOutput::Continue { event, .. } => event,
5847                    },
5848                    (S::Appinfo(values, None), event) => {
5849                        let output = <super::Appinfo as WithDeserializer>::Deserializer::init(
5850                            reader, event,
5851                        )?;
5852                        match self.handle_appinfo(reader, values, output, &mut fallback)? {
5853                            ElementHandlerOutput::Break { event, allow_any } => {
5854                                break (event, allow_any)
5855                            }
5856                            ElementHandlerOutput::Continue { event, .. } => event,
5857                        }
5858                    }
5859                    (S::Documentation(values, None), event) => {
5860                        let output =
5861                            <super::Documentation as WithDeserializer>::Deserializer::init(
5862                                reader, event,
5863                            )?;
5864                        match self.handle_documentation(reader, values, output, &mut fallback)? {
5865                            ElementHandlerOutput::Break { event, allow_any } => {
5866                                break (event, allow_any)
5867                            }
5868                            ElementHandlerOutput::Continue { event, .. } => event,
5869                        }
5870                    }
5871                    (s @ S::Done__(_), event) => {
5872                        *self.state = s;
5873                        break (DeserializerEvent::Continue(event), false);
5874                    }
5875                    (S::Unknown__, _) => unreachable!(),
5876                }
5877            };
5878            let artifact = if matches!(&*self.state, S::Done__(_)) {
5879                DeserializerArtifact::Data(self.finish(reader)?)
5880            } else {
5881                DeserializerArtifact::Deserializer(self)
5882            };
5883            Ok(DeserializerOutput {
5884                artifact,
5885                event,
5886                allow_any,
5887            })
5888        }
5889        fn finish<R>(self, reader: &R) -> Result<super::AnnotationContent, Error>
5890        where
5891            R: DeserializeReader,
5892        {
5893            AnnotationContentDeserializer::finish_state(reader, *self.state)
5894        }
5895    }
5896    #[derive(Debug)]
5897    pub struct DefaultOpenContentDeserializer {
5898        id: Option<String>,
5899        applies_to_empty: bool,
5900        mode: super::DefaultOpenContentModeType,
5901        annotation: Option<super::Annotation>,
5902        any: Option<super::WildcardType>,
5903        state: Box<DefaultOpenContentDeserializerState>,
5904    }
5905    #[derive(Debug)]
5906    enum DefaultOpenContentDeserializerState {
5907        Init__,
5908        Annotation(Option<<super::Annotation as WithDeserializer>::Deserializer>),
5909        Any(Option<<super::WildcardType as WithDeserializer>::Deserializer>),
5910        Done__,
5911        Unknown__,
5912    }
5913    impl DefaultOpenContentDeserializer {
5914        fn from_bytes_start<R>(reader: &R, bytes_start: &BytesStart<'_>) -> Result<Box<Self>, Error>
5915        where
5916            R: DeserializeReader,
5917        {
5918            let mut id: Option<String> = None;
5919            let mut applies_to_empty: Option<bool> = None;
5920            let mut mode: Option<super::DefaultOpenContentModeType> = None;
5921            for attrib in filter_xmlns_attributes(bytes_start) {
5922                let attrib = attrib?;
5923                if matches!(
5924                    reader.resolve_local_name(attrib.key, &super::NS_XS),
5925                    Some(b"id")
5926                ) {
5927                    reader.read_attrib(&mut id, b"id", &attrib.value)?;
5928                } else if matches!(
5929                    reader.resolve_local_name(attrib.key, &super::NS_XS),
5930                    Some(b"appliesToEmpty")
5931                ) {
5932                    reader.read_attrib(&mut applies_to_empty, b"appliesToEmpty", &attrib.value)?;
5933                } else if matches!(
5934                    reader.resolve_local_name(attrib.key, &super::NS_XS),
5935                    Some(b"mode")
5936                ) {
5937                    reader.read_attrib(&mut mode, b"mode", &attrib.value)?;
5938                }
5939            }
5940            Ok(Box::new(Self {
5941                id: id,
5942                applies_to_empty: applies_to_empty
5943                    .unwrap_or_else(super::DefaultOpenContent::default_applies_to_empty),
5944                mode: mode.unwrap_or_else(super::DefaultOpenContent::default_mode),
5945                annotation: None,
5946                any: None,
5947                state: Box::new(DefaultOpenContentDeserializerState::Init__),
5948            }))
5949        }
5950        fn finish_state<R>(
5951            &mut self,
5952            reader: &R,
5953            state: DefaultOpenContentDeserializerState,
5954        ) -> Result<(), Error>
5955        where
5956            R: DeserializeReader,
5957        {
5958            use DefaultOpenContentDeserializerState as S;
5959            match state {
5960                S::Annotation(Some(deserializer)) => {
5961                    self.store_annotation(deserializer.finish(reader)?)?
5962                }
5963                S::Any(Some(deserializer)) => self.store_any(deserializer.finish(reader)?)?,
5964                _ => (),
5965            }
5966            Ok(())
5967        }
5968        fn store_annotation(&mut self, value: super::Annotation) -> Result<(), Error> {
5969            if self.annotation.is_some() {
5970                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
5971                    b"annotation",
5972                )))?;
5973            }
5974            self.annotation = Some(value);
5975            Ok(())
5976        }
5977        fn store_any(&mut self, value: super::WildcardType) -> Result<(), Error> {
5978            if self.any.is_some() {
5979                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(b"any")))?;
5980            }
5981            self.any = Some(value);
5982            Ok(())
5983        }
5984        fn handle_annotation<'de, R>(
5985            &mut self,
5986            reader: &R,
5987            output: DeserializerOutput<'de, super::Annotation>,
5988            fallback: &mut Option<DefaultOpenContentDeserializerState>,
5989        ) -> Result<ElementHandlerOutput<'de>, Error>
5990        where
5991            R: DeserializeReader,
5992        {
5993            let DeserializerOutput {
5994                artifact,
5995                event,
5996                allow_any,
5997            } = output;
5998            if artifact.is_none() {
5999                fallback.get_or_insert(DefaultOpenContentDeserializerState::Annotation(None));
6000                *self.state = DefaultOpenContentDeserializerState::Any(None);
6001                return Ok(ElementHandlerOutput::from_event(event, allow_any));
6002            }
6003            if let Some(fallback) = fallback.take() {
6004                self.finish_state(reader, fallback)?;
6005            }
6006            Ok(match artifact {
6007                DeserializerArtifact::None => unreachable!(),
6008                DeserializerArtifact::Data(data) => {
6009                    self.store_annotation(data)?;
6010                    *self.state = DefaultOpenContentDeserializerState::Any(None);
6011                    ElementHandlerOutput::from_event(event, allow_any)
6012                }
6013                DeserializerArtifact::Deserializer(deserializer) => {
6014                    let ret = ElementHandlerOutput::from_event(event, allow_any);
6015                    match &ret {
6016                        ElementHandlerOutput::Continue { .. } => {
6017                            fallback.get_or_insert(
6018                                DefaultOpenContentDeserializerState::Annotation(Some(deserializer)),
6019                            );
6020                            *self.state = DefaultOpenContentDeserializerState::Any(None);
6021                        }
6022                        ElementHandlerOutput::Break { .. } => {
6023                            *self.state =
6024                                DefaultOpenContentDeserializerState::Annotation(Some(deserializer));
6025                        }
6026                    }
6027                    ret
6028                }
6029            })
6030        }
6031        fn handle_any<'de, R>(
6032            &mut self,
6033            reader: &R,
6034            output: DeserializerOutput<'de, super::WildcardType>,
6035            fallback: &mut Option<DefaultOpenContentDeserializerState>,
6036        ) -> Result<ElementHandlerOutput<'de>, Error>
6037        where
6038            R: DeserializeReader,
6039        {
6040            let DeserializerOutput {
6041                artifact,
6042                event,
6043                allow_any,
6044            } = output;
6045            if artifact.is_none() {
6046                if self.any.is_some() {
6047                    fallback.get_or_insert(DefaultOpenContentDeserializerState::Any(None));
6048                    *self.state = DefaultOpenContentDeserializerState::Done__;
6049                    return Ok(ElementHandlerOutput::from_event(event, allow_any));
6050                } else {
6051                    *self.state = DefaultOpenContentDeserializerState::Any(None);
6052                    return Ok(ElementHandlerOutput::break_(event, allow_any));
6053                }
6054            }
6055            if let Some(fallback) = fallback.take() {
6056                self.finish_state(reader, fallback)?;
6057            }
6058            Ok(match artifact {
6059                DeserializerArtifact::None => unreachable!(),
6060                DeserializerArtifact::Data(data) => {
6061                    self.store_any(data)?;
6062                    *self.state = DefaultOpenContentDeserializerState::Done__;
6063                    ElementHandlerOutput::from_event(event, allow_any)
6064                }
6065                DeserializerArtifact::Deserializer(deserializer) => {
6066                    let ret = ElementHandlerOutput::from_event(event, allow_any);
6067                    match &ret {
6068                        ElementHandlerOutput::Continue { .. } => {
6069                            fallback.get_or_insert(DefaultOpenContentDeserializerState::Any(Some(
6070                                deserializer,
6071                            )));
6072                            *self.state = DefaultOpenContentDeserializerState::Done__;
6073                        }
6074                        ElementHandlerOutput::Break { .. } => {
6075                            *self.state =
6076                                DefaultOpenContentDeserializerState::Any(Some(deserializer));
6077                        }
6078                    }
6079                    ret
6080                }
6081            })
6082        }
6083    }
6084    impl<'de> Deserializer<'de, super::DefaultOpenContent> for Box<DefaultOpenContentDeserializer> {
6085        fn init<R>(
6086            reader: &R,
6087            event: Event<'de>,
6088        ) -> DeserializerResult<'de, super::DefaultOpenContent>
6089        where
6090            R: DeserializeReader,
6091        {
6092            reader.init_deserializer_from_start_event(
6093                event,
6094                DefaultOpenContentDeserializer::from_bytes_start,
6095            )
6096        }
6097        fn next<R>(
6098            mut self,
6099            reader: &R,
6100            event: Event<'de>,
6101        ) -> DeserializerResult<'de, super::DefaultOpenContent>
6102        where
6103            R: DeserializeReader,
6104        {
6105            use DefaultOpenContentDeserializerState as S;
6106            let mut event = event;
6107            let mut fallback = None;
6108            let mut allow_any_element = false;
6109            let (event, allow_any) = loop {
6110                let state = replace(&mut *self.state, S::Unknown__);
6111                event = match (state, event) {
6112                    (S::Annotation(Some(deserializer)), event) => {
6113                        let output = deserializer.next(reader, event)?;
6114                        match self.handle_annotation(reader, output, &mut fallback)? {
6115                            ElementHandlerOutput::Continue { event, allow_any } => {
6116                                allow_any_element = allow_any_element || allow_any;
6117                                event
6118                            }
6119                            ElementHandlerOutput::Break { event, allow_any } => {
6120                                break (event, allow_any)
6121                            }
6122                        }
6123                    }
6124                    (S::Any(Some(deserializer)), event) => {
6125                        let output = deserializer.next(reader, event)?;
6126                        match self.handle_any(reader, output, &mut fallback)? {
6127                            ElementHandlerOutput::Continue { event, allow_any } => {
6128                                allow_any_element = allow_any_element || allow_any;
6129                                event
6130                            }
6131                            ElementHandlerOutput::Break { event, allow_any } => {
6132                                break (event, allow_any)
6133                            }
6134                        }
6135                    }
6136                    (_, Event::End(_)) => {
6137                        if let Some(fallback) = fallback.take() {
6138                            self.finish_state(reader, fallback)?;
6139                        }
6140                        return Ok(DeserializerOutput {
6141                            artifact: DeserializerArtifact::Data(self.finish(reader)?),
6142                            event: DeserializerEvent::None,
6143                            allow_any: false,
6144                        });
6145                    }
6146                    (S::Init__, event) => {
6147                        fallback.get_or_insert(S::Init__);
6148                        *self.state = DefaultOpenContentDeserializerState::Annotation(None);
6149                        event
6150                    }
6151                    (S::Annotation(None), event @ (Event::Start(_) | Event::Empty(_))) => {
6152                        if reader.check_start_tag_name(&event, Some(&super::NS_XS), b"annotation") {
6153                            let output =
6154                                <super::Annotation as WithDeserializer>::Deserializer::init(
6155                                    reader, event,
6156                                )?;
6157                            match self.handle_annotation(reader, output, &mut fallback)? {
6158                                ElementHandlerOutput::Continue { event, allow_any } => {
6159                                    allow_any_element = allow_any_element || allow_any;
6160                                    event
6161                                }
6162                                ElementHandlerOutput::Break { event, allow_any } => {
6163                                    break (event, allow_any)
6164                                }
6165                            }
6166                        } else {
6167                            *self.state = S::Any(None);
6168                            allow_any_element = true;
6169                            fallback.get_or_insert(S::Annotation(None));
6170                            event
6171                        }
6172                    }
6173                    (S::Any(None), event @ (Event::Start(_) | Event::Empty(_))) => {
6174                        if reader.check_start_tag_name(&event, Some(&super::NS_XS), b"any") {
6175                            let output =
6176                                <super::WildcardType as WithDeserializer>::Deserializer::init(
6177                                    reader, event,
6178                                )?;
6179                            match self.handle_any(reader, output, &mut fallback)? {
6180                                ElementHandlerOutput::Continue { event, allow_any } => {
6181                                    allow_any_element = allow_any_element || allow_any;
6182                                    event
6183                                }
6184                                ElementHandlerOutput::Break { event, allow_any } => {
6185                                    break (event, allow_any)
6186                                }
6187                            }
6188                        } else {
6189                            *self.state = S::Done__;
6190                            allow_any_element = true;
6191                            fallback.get_or_insert(S::Any(None));
6192                            event
6193                        }
6194                    }
6195                    (S::Done__, event) => {
6196                        fallback.get_or_insert(S::Done__);
6197                        break (DeserializerEvent::Continue(event), allow_any_element);
6198                    }
6199                    (S::Unknown__, _) => unreachable!(),
6200                    (state, event) => {
6201                        *self.state = state;
6202                        break (DeserializerEvent::Break(event), false);
6203                    }
6204                }
6205            };
6206            if let Some(fallback) = fallback {
6207                *self.state = fallback;
6208            }
6209            Ok(DeserializerOutput {
6210                artifact: DeserializerArtifact::Deserializer(self),
6211                event,
6212                allow_any,
6213            })
6214        }
6215        fn finish<R>(mut self, reader: &R) -> Result<super::DefaultOpenContent, Error>
6216        where
6217            R: DeserializeReader,
6218        {
6219            let state = replace(
6220                &mut *self.state,
6221                DefaultOpenContentDeserializerState::Unknown__,
6222            );
6223            self.finish_state(reader, state)?;
6224            Ok(super::DefaultOpenContent {
6225                id: self.id,
6226                applies_to_empty: self.applies_to_empty,
6227                mode: self.mode,
6228                annotation: self.annotation,
6229                any: self
6230                    .any
6231                    .ok_or_else(|| ErrorKind::MissingElement("any".into()))?,
6232            })
6233        }
6234    }
6235    #[derive(Debug)]
6236    pub struct SimpleBaseTypeDeserializer {
6237        id: Option<String>,
6238        final_: Option<super::SimpleDerivationSetType>,
6239        name: Option<String>,
6240        content: Vec<super::SimpleBaseTypeContent>,
6241        state: Box<SimpleBaseTypeDeserializerState>,
6242    }
6243    #[derive(Debug)]
6244    enum SimpleBaseTypeDeserializerState {
6245        Init__,
6246        Next__,
6247        Content__(<super::SimpleBaseTypeContent as WithDeserializer>::Deserializer),
6248        Unknown__,
6249    }
6250    impl SimpleBaseTypeDeserializer {
6251        fn from_bytes_start<R>(reader: &R, bytes_start: &BytesStart<'_>) -> Result<Box<Self>, Error>
6252        where
6253            R: DeserializeReader,
6254        {
6255            let mut id: Option<String> = None;
6256            let mut final_: Option<super::SimpleDerivationSetType> = None;
6257            let mut name: Option<String> = None;
6258            for attrib in filter_xmlns_attributes(bytes_start) {
6259                let attrib = attrib?;
6260                if matches!(
6261                    reader.resolve_local_name(attrib.key, &super::NS_XS),
6262                    Some(b"id")
6263                ) {
6264                    reader.read_attrib(&mut id, b"id", &attrib.value)?;
6265                } else if matches!(
6266                    reader.resolve_local_name(attrib.key, &super::NS_XS),
6267                    Some(b"final")
6268                ) {
6269                    reader.read_attrib(&mut final_, b"final", &attrib.value)?;
6270                } else if matches!(
6271                    reader.resolve_local_name(attrib.key, &super::NS_XS),
6272                    Some(b"name")
6273                ) {
6274                    reader.read_attrib(&mut name, b"name", &attrib.value)?;
6275                }
6276            }
6277            Ok(Box::new(Self {
6278                id: id,
6279                final_: final_,
6280                name: name,
6281                content: Vec::new(),
6282                state: Box::new(SimpleBaseTypeDeserializerState::Init__),
6283            }))
6284        }
6285        fn finish_state<R>(
6286            &mut self,
6287            reader: &R,
6288            state: SimpleBaseTypeDeserializerState,
6289        ) -> Result<(), Error>
6290        where
6291            R: DeserializeReader,
6292        {
6293            if let SimpleBaseTypeDeserializerState::Content__(deserializer) = state {
6294                self.store_content(deserializer.finish(reader)?)?;
6295            }
6296            Ok(())
6297        }
6298        fn store_content(&mut self, value: super::SimpleBaseTypeContent) -> Result<(), Error> {
6299            self.content.push(value);
6300            Ok(())
6301        }
6302        fn handle_content<'de, R>(
6303            &mut self,
6304            reader: &R,
6305            output: DeserializerOutput<'de, super::SimpleBaseTypeContent>,
6306            fallback: &mut Option<SimpleBaseTypeDeserializerState>,
6307        ) -> Result<ElementHandlerOutput<'de>, Error>
6308        where
6309            R: DeserializeReader,
6310        {
6311            let DeserializerOutput {
6312                artifact,
6313                event,
6314                allow_any,
6315            } = output;
6316            if artifact.is_none() {
6317                *self.state = fallback
6318                    .take()
6319                    .unwrap_or(SimpleBaseTypeDeserializerState::Next__);
6320                return Ok(ElementHandlerOutput::break_(event, allow_any));
6321            }
6322            if let Some(fallback) = fallback.take() {
6323                self.finish_state(reader, fallback)?;
6324            }
6325            Ok(match artifact {
6326                DeserializerArtifact::None => unreachable!(),
6327                DeserializerArtifact::Data(data) => {
6328                    self.store_content(data)?;
6329                    *self.state = SimpleBaseTypeDeserializerState::Next__;
6330                    ElementHandlerOutput::from_event(event, allow_any)
6331                }
6332                DeserializerArtifact::Deserializer(deserializer) => {
6333                    let can_have_more = self.content.len().saturating_add(1) < 4usize;
6334                    let ret = if can_have_more {
6335                        ElementHandlerOutput::from_event(event, allow_any)
6336                    } else {
6337                        ElementHandlerOutput::from_event_end(event, allow_any)
6338                    };
6339                    match (can_have_more, &ret) {
6340                        (true, ElementHandlerOutput::Continue { .. }) => {
6341                            fallback.get_or_insert(SimpleBaseTypeDeserializerState::Content__(
6342                                deserializer,
6343                            ));
6344                            *self.state = SimpleBaseTypeDeserializerState::Next__;
6345                        }
6346                        (false, _) | (_, ElementHandlerOutput::Break { .. }) => {
6347                            *self.state = SimpleBaseTypeDeserializerState::Content__(deserializer);
6348                        }
6349                    }
6350                    ret
6351                }
6352            })
6353        }
6354    }
6355    impl<'de> Deserializer<'de, super::SimpleBaseType> for Box<SimpleBaseTypeDeserializer> {
6356        fn init<R>(reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::SimpleBaseType>
6357        where
6358            R: DeserializeReader,
6359        {
6360            reader.init_deserializer_from_start_event(
6361                event,
6362                SimpleBaseTypeDeserializer::from_bytes_start,
6363            )
6364        }
6365        fn next<R>(
6366            mut self,
6367            reader: &R,
6368            event: Event<'de>,
6369        ) -> DeserializerResult<'de, super::SimpleBaseType>
6370        where
6371            R: DeserializeReader,
6372        {
6373            use SimpleBaseTypeDeserializerState as S;
6374            let mut event = event;
6375            let mut fallback = None;
6376            let (event, allow_any) = loop {
6377                let state = replace(&mut *self.state, S::Unknown__);
6378                event = match (state, event) {
6379                    (S::Content__(deserializer), event) => {
6380                        let output = deserializer.next(reader, event)?;
6381                        match self.handle_content(reader, output, &mut fallback)? {
6382                            ElementHandlerOutput::Break { event, allow_any } => {
6383                                break (event, allow_any)
6384                            }
6385                            ElementHandlerOutput::Continue { event, .. } => event,
6386                        }
6387                    }
6388                    (_, Event::End(_)) => {
6389                        return Ok(DeserializerOutput {
6390                            artifact: DeserializerArtifact::Data(self.finish(reader)?),
6391                            event: DeserializerEvent::None,
6392                            allow_any: false,
6393                        });
6394                    }
6395                    (state @ (S::Init__ | S::Next__), event) => {
6396                        fallback.get_or_insert(state);
6397                        let output =
6398                            <super::SimpleBaseTypeContent as WithDeserializer>::Deserializer::init(
6399                                reader, event,
6400                            )?;
6401                        match self.handle_content(reader, output, &mut fallback)? {
6402                            ElementHandlerOutput::Break { event, allow_any } => {
6403                                break (event, allow_any)
6404                            }
6405                            ElementHandlerOutput::Continue { event, .. } => event,
6406                        }
6407                    }
6408                    (S::Unknown__, _) => unreachable!(),
6409                }
6410            };
6411            let artifact = DeserializerArtifact::Deserializer(self);
6412            Ok(DeserializerOutput {
6413                artifact,
6414                event,
6415                allow_any,
6416            })
6417        }
6418        fn finish<R>(mut self, reader: &R) -> Result<super::SimpleBaseType, Error>
6419        where
6420            R: DeserializeReader,
6421        {
6422            let state = replace(&mut *self.state, SimpleBaseTypeDeserializerState::Unknown__);
6423            self.finish_state(reader, state)?;
6424            Ok(super::SimpleBaseType {
6425                id: self.id,
6426                final_: self.final_,
6427                name: self.name,
6428                content: self.content,
6429            })
6430        }
6431    }
6432    #[derive(Debug)]
6433    pub struct SimpleBaseTypeContentDeserializer {
6434        state: Box<SimpleBaseTypeContentDeserializerState>,
6435    }
6436    #[derive(Debug)]
6437    pub enum SimpleBaseTypeContentDeserializerState {
6438        Init__,
6439        Annotation(
6440            Option<super::Annotation>,
6441            Option<<super::Annotation as WithDeserializer>::Deserializer>,
6442        ),
6443        Restriction(
6444            Option<super::Restriction>,
6445            Option<<super::Restriction as WithDeserializer>::Deserializer>,
6446        ),
6447        List(
6448            Option<super::List>,
6449            Option<<super::List as WithDeserializer>::Deserializer>,
6450        ),
6451        Union(
6452            Option<super::Union>,
6453            Option<<super::Union as WithDeserializer>::Deserializer>,
6454        ),
6455        Done__(super::SimpleBaseTypeContent),
6456        Unknown__,
6457    }
6458    impl SimpleBaseTypeContentDeserializer {
6459        fn find_suitable<'de, R>(
6460            &mut self,
6461            reader: &R,
6462            event: Event<'de>,
6463            fallback: &mut Option<SimpleBaseTypeContentDeserializerState>,
6464        ) -> Result<ElementHandlerOutput<'de>, Error>
6465        where
6466            R: DeserializeReader,
6467        {
6468            let (Event::Start(x) | Event::Empty(x)) = &event else {
6469                *self.state = fallback
6470                    .take()
6471                    .unwrap_or(SimpleBaseTypeContentDeserializerState::Init__);
6472                return Ok(ElementHandlerOutput::return_to_parent(event, false));
6473            };
6474            if matches!(
6475                reader.resolve_local_name(x.name(), &super::NS_XS),
6476                Some(b"annotation")
6477            ) {
6478                let output =
6479                    <super::Annotation as WithDeserializer>::Deserializer::init(reader, event)?;
6480                return self.handle_annotation(reader, Default::default(), output, &mut *fallback);
6481            }
6482            if matches!(
6483                reader.resolve_local_name(x.name(), &super::NS_XS),
6484                Some(b"restriction")
6485            ) {
6486                let output =
6487                    <super::Restriction as WithDeserializer>::Deserializer::init(reader, event)?;
6488                return self.handle_restriction(reader, Default::default(), output, &mut *fallback);
6489            }
6490            if matches!(
6491                reader.resolve_local_name(x.name(), &super::NS_XS),
6492                Some(b"list")
6493            ) {
6494                let output = <super::List as WithDeserializer>::Deserializer::init(reader, event)?;
6495                return self.handle_list(reader, Default::default(), output, &mut *fallback);
6496            }
6497            if matches!(
6498                reader.resolve_local_name(x.name(), &super::NS_XS),
6499                Some(b"union")
6500            ) {
6501                let output = <super::Union as WithDeserializer>::Deserializer::init(reader, event)?;
6502                return self.handle_union_(reader, Default::default(), output, &mut *fallback);
6503            }
6504            *self.state = fallback
6505                .take()
6506                .unwrap_or(SimpleBaseTypeContentDeserializerState::Init__);
6507            Ok(ElementHandlerOutput::return_to_parent(event, false))
6508        }
6509        fn finish_state<R>(
6510            reader: &R,
6511            state: SimpleBaseTypeContentDeserializerState,
6512        ) -> Result<super::SimpleBaseTypeContent, Error>
6513        where
6514            R: DeserializeReader,
6515        {
6516            use SimpleBaseTypeContentDeserializerState as S;
6517            match state {
6518                S::Init__ => Err(ErrorKind::MissingContent.into()),
6519                S::Annotation(mut values, deserializer) => {
6520                    if let Some(deserializer) = deserializer {
6521                        let value = deserializer.finish(reader)?;
6522                        SimpleBaseTypeContentDeserializer::store_annotation(&mut values, value)?;
6523                    }
6524                    Ok(super::SimpleBaseTypeContent::Annotation(
6525                        values.ok_or_else(|| ErrorKind::MissingElement("annotation".into()))?,
6526                    ))
6527                }
6528                S::Restriction(mut values, deserializer) => {
6529                    if let Some(deserializer) = deserializer {
6530                        let value = deserializer.finish(reader)?;
6531                        SimpleBaseTypeContentDeserializer::store_restriction(&mut values, value)?;
6532                    }
6533                    Ok(super::SimpleBaseTypeContent::Restriction(
6534                        values.ok_or_else(|| ErrorKind::MissingElement("restriction".into()))?,
6535                    ))
6536                }
6537                S::List(mut values, deserializer) => {
6538                    if let Some(deserializer) = deserializer {
6539                        let value = deserializer.finish(reader)?;
6540                        SimpleBaseTypeContentDeserializer::store_list(&mut values, value)?;
6541                    }
6542                    Ok(super::SimpleBaseTypeContent::List(
6543                        values.ok_or_else(|| ErrorKind::MissingElement("list".into()))?,
6544                    ))
6545                }
6546                S::Union(mut values, deserializer) => {
6547                    if let Some(deserializer) = deserializer {
6548                        let value = deserializer.finish(reader)?;
6549                        SimpleBaseTypeContentDeserializer::store_union_(&mut values, value)?;
6550                    }
6551                    Ok(super::SimpleBaseTypeContent::Union(values.ok_or_else(
6552                        || ErrorKind::MissingElement("union".into()),
6553                    )?))
6554                }
6555                S::Done__(data) => Ok(data),
6556                S::Unknown__ => unreachable!(),
6557            }
6558        }
6559        fn store_annotation(
6560            values: &mut Option<super::Annotation>,
6561            value: super::Annotation,
6562        ) -> Result<(), Error> {
6563            if values.is_some() {
6564                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
6565                    b"annotation",
6566                )))?;
6567            }
6568            *values = Some(value);
6569            Ok(())
6570        }
6571        fn store_restriction(
6572            values: &mut Option<super::Restriction>,
6573            value: super::Restriction,
6574        ) -> Result<(), Error> {
6575            if values.is_some() {
6576                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
6577                    b"restriction",
6578                )))?;
6579            }
6580            *values = Some(value);
6581            Ok(())
6582        }
6583        fn store_list(values: &mut Option<super::List>, value: super::List) -> Result<(), Error> {
6584            if values.is_some() {
6585                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(b"list")))?;
6586            }
6587            *values = Some(value);
6588            Ok(())
6589        }
6590        fn store_union_(
6591            values: &mut Option<super::Union>,
6592            value: super::Union,
6593        ) -> Result<(), Error> {
6594            if values.is_some() {
6595                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
6596                    b"union",
6597                )))?;
6598            }
6599            *values = Some(value);
6600            Ok(())
6601        }
6602        fn handle_annotation<'de, R>(
6603            &mut self,
6604            reader: &R,
6605            mut values: Option<super::Annotation>,
6606            output: DeserializerOutput<'de, super::Annotation>,
6607            fallback: &mut Option<SimpleBaseTypeContentDeserializerState>,
6608        ) -> Result<ElementHandlerOutput<'de>, Error>
6609        where
6610            R: DeserializeReader,
6611        {
6612            let DeserializerOutput {
6613                artifact,
6614                event,
6615                allow_any,
6616            } = output;
6617            if artifact.is_none() {
6618                *self.state = match fallback.take() {
6619                    None => SimpleBaseTypeContentDeserializerState::Init__,
6620                    Some(SimpleBaseTypeContentDeserializerState::Annotation(
6621                        _,
6622                        Some(deserializer),
6623                    )) => SimpleBaseTypeContentDeserializerState::Annotation(
6624                        values,
6625                        Some(deserializer),
6626                    ),
6627                    _ => unreachable!(),
6628                };
6629                return Ok(ElementHandlerOutput::break_(event, allow_any));
6630            }
6631            match fallback.take() {
6632                None => (),
6633                Some(SimpleBaseTypeContentDeserializerState::Annotation(_, Some(deserializer))) => {
6634                    let data = deserializer.finish(reader)?;
6635                    SimpleBaseTypeContentDeserializer::store_annotation(&mut values, data)?;
6636                }
6637                Some(_) => unreachable!(),
6638            }
6639            Ok(match artifact {
6640                DeserializerArtifact::None => unreachable!(),
6641                DeserializerArtifact::Data(data) => {
6642                    SimpleBaseTypeContentDeserializer::store_annotation(&mut values, data)?;
6643                    let data = SimpleBaseTypeContentDeserializer::finish_state(
6644                        reader,
6645                        SimpleBaseTypeContentDeserializerState::Annotation(values, None),
6646                    )?;
6647                    *self.state = SimpleBaseTypeContentDeserializerState::Done__(data);
6648                    ElementHandlerOutput::Break { event, allow_any }
6649                }
6650                DeserializerArtifact::Deserializer(deserializer) => {
6651                    *self.state = SimpleBaseTypeContentDeserializerState::Annotation(
6652                        values,
6653                        Some(deserializer),
6654                    );
6655                    ElementHandlerOutput::from_event_end(event, allow_any)
6656                }
6657            })
6658        }
6659        fn handle_restriction<'de, R>(
6660            &mut self,
6661            reader: &R,
6662            mut values: Option<super::Restriction>,
6663            output: DeserializerOutput<'de, super::Restriction>,
6664            fallback: &mut Option<SimpleBaseTypeContentDeserializerState>,
6665        ) -> Result<ElementHandlerOutput<'de>, Error>
6666        where
6667            R: DeserializeReader,
6668        {
6669            let DeserializerOutput {
6670                artifact,
6671                event,
6672                allow_any,
6673            } = output;
6674            if artifact.is_none() {
6675                *self.state = match fallback.take() {
6676                    None => SimpleBaseTypeContentDeserializerState::Init__,
6677                    Some(SimpleBaseTypeContentDeserializerState::Restriction(
6678                        _,
6679                        Some(deserializer),
6680                    )) => SimpleBaseTypeContentDeserializerState::Restriction(
6681                        values,
6682                        Some(deserializer),
6683                    ),
6684                    _ => unreachable!(),
6685                };
6686                return Ok(ElementHandlerOutput::break_(event, allow_any));
6687            }
6688            match fallback.take() {
6689                None => (),
6690                Some(SimpleBaseTypeContentDeserializerState::Restriction(
6691                    _,
6692                    Some(deserializer),
6693                )) => {
6694                    let data = deserializer.finish(reader)?;
6695                    SimpleBaseTypeContentDeserializer::store_restriction(&mut values, data)?;
6696                }
6697                Some(_) => unreachable!(),
6698            }
6699            Ok(match artifact {
6700                DeserializerArtifact::None => unreachable!(),
6701                DeserializerArtifact::Data(data) => {
6702                    SimpleBaseTypeContentDeserializer::store_restriction(&mut values, data)?;
6703                    let data = SimpleBaseTypeContentDeserializer::finish_state(
6704                        reader,
6705                        SimpleBaseTypeContentDeserializerState::Restriction(values, None),
6706                    )?;
6707                    *self.state = SimpleBaseTypeContentDeserializerState::Done__(data);
6708                    ElementHandlerOutput::Break { event, allow_any }
6709                }
6710                DeserializerArtifact::Deserializer(deserializer) => {
6711                    *self.state = SimpleBaseTypeContentDeserializerState::Restriction(
6712                        values,
6713                        Some(deserializer),
6714                    );
6715                    ElementHandlerOutput::from_event_end(event, allow_any)
6716                }
6717            })
6718        }
6719        fn handle_list<'de, R>(
6720            &mut self,
6721            reader: &R,
6722            mut values: Option<super::List>,
6723            output: DeserializerOutput<'de, super::List>,
6724            fallback: &mut Option<SimpleBaseTypeContentDeserializerState>,
6725        ) -> Result<ElementHandlerOutput<'de>, Error>
6726        where
6727            R: DeserializeReader,
6728        {
6729            let DeserializerOutput {
6730                artifact,
6731                event,
6732                allow_any,
6733            } = output;
6734            if artifact.is_none() {
6735                *self.state = match fallback.take() {
6736                    None => SimpleBaseTypeContentDeserializerState::Init__,
6737                    Some(SimpleBaseTypeContentDeserializerState::List(_, Some(deserializer))) => {
6738                        SimpleBaseTypeContentDeserializerState::List(values, Some(deserializer))
6739                    }
6740                    _ => unreachable!(),
6741                };
6742                return Ok(ElementHandlerOutput::break_(event, allow_any));
6743            }
6744            match fallback.take() {
6745                None => (),
6746                Some(SimpleBaseTypeContentDeserializerState::List(_, Some(deserializer))) => {
6747                    let data = deserializer.finish(reader)?;
6748                    SimpleBaseTypeContentDeserializer::store_list(&mut values, data)?;
6749                }
6750                Some(_) => unreachable!(),
6751            }
6752            Ok(match artifact {
6753                DeserializerArtifact::None => unreachable!(),
6754                DeserializerArtifact::Data(data) => {
6755                    SimpleBaseTypeContentDeserializer::store_list(&mut values, data)?;
6756                    let data = SimpleBaseTypeContentDeserializer::finish_state(
6757                        reader,
6758                        SimpleBaseTypeContentDeserializerState::List(values, None),
6759                    )?;
6760                    *self.state = SimpleBaseTypeContentDeserializerState::Done__(data);
6761                    ElementHandlerOutput::Break { event, allow_any }
6762                }
6763                DeserializerArtifact::Deserializer(deserializer) => {
6764                    *self.state =
6765                        SimpleBaseTypeContentDeserializerState::List(values, Some(deserializer));
6766                    ElementHandlerOutput::from_event_end(event, allow_any)
6767                }
6768            })
6769        }
6770        fn handle_union_<'de, R>(
6771            &mut self,
6772            reader: &R,
6773            mut values: Option<super::Union>,
6774            output: DeserializerOutput<'de, super::Union>,
6775            fallback: &mut Option<SimpleBaseTypeContentDeserializerState>,
6776        ) -> Result<ElementHandlerOutput<'de>, Error>
6777        where
6778            R: DeserializeReader,
6779        {
6780            let DeserializerOutput {
6781                artifact,
6782                event,
6783                allow_any,
6784            } = output;
6785            if artifact.is_none() {
6786                *self.state = match fallback.take() {
6787                    None => SimpleBaseTypeContentDeserializerState::Init__,
6788                    Some(SimpleBaseTypeContentDeserializerState::Union(_, Some(deserializer))) => {
6789                        SimpleBaseTypeContentDeserializerState::Union(values, Some(deserializer))
6790                    }
6791                    _ => unreachable!(),
6792                };
6793                return Ok(ElementHandlerOutput::break_(event, allow_any));
6794            }
6795            match fallback.take() {
6796                None => (),
6797                Some(SimpleBaseTypeContentDeserializerState::Union(_, Some(deserializer))) => {
6798                    let data = deserializer.finish(reader)?;
6799                    SimpleBaseTypeContentDeserializer::store_union_(&mut values, data)?;
6800                }
6801                Some(_) => unreachable!(),
6802            }
6803            Ok(match artifact {
6804                DeserializerArtifact::None => unreachable!(),
6805                DeserializerArtifact::Data(data) => {
6806                    SimpleBaseTypeContentDeserializer::store_union_(&mut values, data)?;
6807                    let data = SimpleBaseTypeContentDeserializer::finish_state(
6808                        reader,
6809                        SimpleBaseTypeContentDeserializerState::Union(values, None),
6810                    )?;
6811                    *self.state = SimpleBaseTypeContentDeserializerState::Done__(data);
6812                    ElementHandlerOutput::Break { event, allow_any }
6813                }
6814                DeserializerArtifact::Deserializer(deserializer) => {
6815                    *self.state =
6816                        SimpleBaseTypeContentDeserializerState::Union(values, Some(deserializer));
6817                    ElementHandlerOutput::from_event_end(event, allow_any)
6818                }
6819            })
6820        }
6821    }
6822    impl<'de> Deserializer<'de, super::SimpleBaseTypeContent>
6823        for Box<SimpleBaseTypeContentDeserializer>
6824    {
6825        fn init<R>(
6826            reader: &R,
6827            event: Event<'de>,
6828        ) -> DeserializerResult<'de, super::SimpleBaseTypeContent>
6829        where
6830            R: DeserializeReader,
6831        {
6832            let deserializer = Box::new(SimpleBaseTypeContentDeserializer {
6833                state: Box::new(SimpleBaseTypeContentDeserializerState::Init__),
6834            });
6835            let mut output = deserializer.next(reader, event)?;
6836            output.artifact = match output.artifact {
6837                DeserializerArtifact::Deserializer(x)
6838                    if matches!(&*x.state, SimpleBaseTypeContentDeserializerState::Init__) =>
6839                {
6840                    DeserializerArtifact::None
6841                }
6842                artifact => artifact,
6843            };
6844            Ok(output)
6845        }
6846        fn next<R>(
6847            mut self,
6848            reader: &R,
6849            event: Event<'de>,
6850        ) -> DeserializerResult<'de, super::SimpleBaseTypeContent>
6851        where
6852            R: DeserializeReader,
6853        {
6854            use SimpleBaseTypeContentDeserializerState as S;
6855            let mut event = event;
6856            let mut fallback = None;
6857            let (event, allow_any) = loop {
6858                let state = replace(&mut *self.state, S::Unknown__);
6859                event = match (state, event) {
6860                    (S::Annotation(values, Some(deserializer)), event) => {
6861                        let output = deserializer.next(reader, event)?;
6862                        match self.handle_annotation(reader, values, output, &mut fallback)? {
6863                            ElementHandlerOutput::Break { event, allow_any } => {
6864                                break (event, allow_any)
6865                            }
6866                            ElementHandlerOutput::Continue { event, .. } => event,
6867                        }
6868                    }
6869                    (S::Restriction(values, Some(deserializer)), event) => {
6870                        let output = deserializer.next(reader, event)?;
6871                        match self.handle_restriction(reader, values, output, &mut fallback)? {
6872                            ElementHandlerOutput::Break { event, allow_any } => {
6873                                break (event, allow_any)
6874                            }
6875                            ElementHandlerOutput::Continue { event, .. } => event,
6876                        }
6877                    }
6878                    (S::List(values, Some(deserializer)), event) => {
6879                        let output = deserializer.next(reader, event)?;
6880                        match self.handle_list(reader, values, output, &mut fallback)? {
6881                            ElementHandlerOutput::Break { event, allow_any } => {
6882                                break (event, allow_any)
6883                            }
6884                            ElementHandlerOutput::Continue { event, .. } => event,
6885                        }
6886                    }
6887                    (S::Union(values, Some(deserializer)), event) => {
6888                        let output = deserializer.next(reader, event)?;
6889                        match self.handle_union_(reader, values, output, &mut fallback)? {
6890                            ElementHandlerOutput::Break { event, allow_any } => {
6891                                break (event, allow_any)
6892                            }
6893                            ElementHandlerOutput::Continue { event, .. } => event,
6894                        }
6895                    }
6896                    (state, event @ Event::End(_)) => {
6897                        return Ok(DeserializerOutput {
6898                            artifact: DeserializerArtifact::Data(
6899                                SimpleBaseTypeContentDeserializer::finish_state(reader, state)?,
6900                            ),
6901                            event: DeserializerEvent::Continue(event),
6902                            allow_any: false,
6903                        });
6904                    }
6905                    (S::Init__, event) => match self.find_suitable(reader, event, &mut fallback)? {
6906                        ElementHandlerOutput::Break { event, allow_any } => {
6907                            break (event, allow_any)
6908                        }
6909                        ElementHandlerOutput::Continue { event, .. } => event,
6910                    },
6911                    (S::Annotation(values, None), event) => {
6912                        let output = <super::Annotation as WithDeserializer>::Deserializer::init(
6913                            reader, event,
6914                        )?;
6915                        match self.handle_annotation(reader, values, output, &mut fallback)? {
6916                            ElementHandlerOutput::Break { event, allow_any } => {
6917                                break (event, allow_any)
6918                            }
6919                            ElementHandlerOutput::Continue { event, .. } => event,
6920                        }
6921                    }
6922                    (S::Restriction(values, None), event) => {
6923                        let output = <super::Restriction as WithDeserializer>::Deserializer::init(
6924                            reader, event,
6925                        )?;
6926                        match self.handle_restriction(reader, values, output, &mut fallback)? {
6927                            ElementHandlerOutput::Break { event, allow_any } => {
6928                                break (event, allow_any)
6929                            }
6930                            ElementHandlerOutput::Continue { event, .. } => event,
6931                        }
6932                    }
6933                    (S::List(values, None), event) => {
6934                        let output =
6935                            <super::List as WithDeserializer>::Deserializer::init(reader, event)?;
6936                        match self.handle_list(reader, values, output, &mut fallback)? {
6937                            ElementHandlerOutput::Break { event, allow_any } => {
6938                                break (event, allow_any)
6939                            }
6940                            ElementHandlerOutput::Continue { event, .. } => event,
6941                        }
6942                    }
6943                    (S::Union(values, None), event) => {
6944                        let output =
6945                            <super::Union as WithDeserializer>::Deserializer::init(reader, event)?;
6946                        match self.handle_union_(reader, values, output, &mut fallback)? {
6947                            ElementHandlerOutput::Break { event, allow_any } => {
6948                                break (event, allow_any)
6949                            }
6950                            ElementHandlerOutput::Continue { event, .. } => event,
6951                        }
6952                    }
6953                    (s @ S::Done__(_), event) => {
6954                        *self.state = s;
6955                        break (DeserializerEvent::Continue(event), false);
6956                    }
6957                    (S::Unknown__, _) => unreachable!(),
6958                }
6959            };
6960            let artifact = if matches!(&*self.state, S::Done__(_)) {
6961                DeserializerArtifact::Data(self.finish(reader)?)
6962            } else {
6963                DeserializerArtifact::Deserializer(self)
6964            };
6965            Ok(DeserializerOutput {
6966                artifact,
6967                event,
6968                allow_any,
6969            })
6970        }
6971        fn finish<R>(self, reader: &R) -> Result<super::SimpleBaseTypeContent, Error>
6972        where
6973            R: DeserializeReader,
6974        {
6975            SimpleBaseTypeContentDeserializer::finish_state(reader, *self.state)
6976        }
6977    }
6978    #[derive(Debug)]
6979    pub struct ComplexBaseTypeDeserializer {
6980        id: Option<String>,
6981        name: Option<String>,
6982        mixed: Option<bool>,
6983        abstract_: bool,
6984        final_: Option<super::DerivationSetType>,
6985        block: Option<super::DerivationSetType>,
6986        default_attributes_apply: bool,
6987        content: Vec<super::ComplexBaseTypeContent>,
6988        state: Box<ComplexBaseTypeDeserializerState>,
6989    }
6990    #[derive(Debug)]
6991    enum ComplexBaseTypeDeserializerState {
6992        Init__,
6993        Next__,
6994        Content__(<super::ComplexBaseTypeContent as WithDeserializer>::Deserializer),
6995        Unknown__,
6996    }
6997    impl ComplexBaseTypeDeserializer {
6998        fn from_bytes_start<R>(reader: &R, bytes_start: &BytesStart<'_>) -> Result<Box<Self>, Error>
6999        where
7000            R: DeserializeReader,
7001        {
7002            let mut id: Option<String> = None;
7003            let mut name: Option<String> = None;
7004            let mut mixed: Option<bool> = None;
7005            let mut abstract_: Option<bool> = None;
7006            let mut final_: Option<super::DerivationSetType> = None;
7007            let mut block: Option<super::DerivationSetType> = None;
7008            let mut default_attributes_apply: Option<bool> = None;
7009            for attrib in filter_xmlns_attributes(bytes_start) {
7010                let attrib = attrib?;
7011                if matches!(
7012                    reader.resolve_local_name(attrib.key, &super::NS_XS),
7013                    Some(b"id")
7014                ) {
7015                    reader.read_attrib(&mut id, b"id", &attrib.value)?;
7016                } else if matches!(
7017                    reader.resolve_local_name(attrib.key, &super::NS_XS),
7018                    Some(b"name")
7019                ) {
7020                    reader.read_attrib(&mut name, b"name", &attrib.value)?;
7021                } else if matches!(
7022                    reader.resolve_local_name(attrib.key, &super::NS_XS),
7023                    Some(b"mixed")
7024                ) {
7025                    reader.read_attrib(&mut mixed, b"mixed", &attrib.value)?;
7026                } else if matches!(
7027                    reader.resolve_local_name(attrib.key, &super::NS_XS),
7028                    Some(b"abstract")
7029                ) {
7030                    reader.read_attrib(&mut abstract_, b"abstract", &attrib.value)?;
7031                } else if matches!(
7032                    reader.resolve_local_name(attrib.key, &super::NS_XS),
7033                    Some(b"final")
7034                ) {
7035                    reader.read_attrib(&mut final_, b"final", &attrib.value)?;
7036                } else if matches!(
7037                    reader.resolve_local_name(attrib.key, &super::NS_XS),
7038                    Some(b"block")
7039                ) {
7040                    reader.read_attrib(&mut block, b"block", &attrib.value)?;
7041                } else if matches!(
7042                    reader.resolve_local_name(attrib.key, &super::NS_XS),
7043                    Some(b"defaultAttributesApply")
7044                ) {
7045                    reader.read_attrib(
7046                        &mut default_attributes_apply,
7047                        b"defaultAttributesApply",
7048                        &attrib.value,
7049                    )?;
7050                }
7051            }
7052            Ok(Box::new(Self {
7053                id: id,
7054                name: name,
7055                mixed: mixed,
7056                abstract_: abstract_.unwrap_or_else(super::ComplexBaseType::default_abstract_),
7057                final_: final_,
7058                block: block,
7059                default_attributes_apply: default_attributes_apply
7060                    .unwrap_or_else(super::ComplexBaseType::default_default_attributes_apply),
7061                content: Vec::new(),
7062                state: Box::new(ComplexBaseTypeDeserializerState::Init__),
7063            }))
7064        }
7065        fn finish_state<R>(
7066            &mut self,
7067            reader: &R,
7068            state: ComplexBaseTypeDeserializerState,
7069        ) -> Result<(), Error>
7070        where
7071            R: DeserializeReader,
7072        {
7073            if let ComplexBaseTypeDeserializerState::Content__(deserializer) = state {
7074                self.store_content(deserializer.finish(reader)?)?;
7075            }
7076            Ok(())
7077        }
7078        fn store_content(&mut self, value: super::ComplexBaseTypeContent) -> Result<(), Error> {
7079            self.content.push(value);
7080            Ok(())
7081        }
7082        fn handle_content<'de, R>(
7083            &mut self,
7084            reader: &R,
7085            output: DeserializerOutput<'de, super::ComplexBaseTypeContent>,
7086            fallback: &mut Option<ComplexBaseTypeDeserializerState>,
7087        ) -> Result<ElementHandlerOutput<'de>, Error>
7088        where
7089            R: DeserializeReader,
7090        {
7091            let DeserializerOutput {
7092                artifact,
7093                event,
7094                allow_any,
7095            } = output;
7096            if artifact.is_none() {
7097                *self.state = fallback
7098                    .take()
7099                    .unwrap_or(ComplexBaseTypeDeserializerState::Next__);
7100                return Ok(ElementHandlerOutput::break_(event, allow_any));
7101            }
7102            if let Some(fallback) = fallback.take() {
7103                self.finish_state(reader, fallback)?;
7104            }
7105            Ok(match artifact {
7106                DeserializerArtifact::None => unreachable!(),
7107                DeserializerArtifact::Data(data) => {
7108                    self.store_content(data)?;
7109                    *self.state = ComplexBaseTypeDeserializerState::Next__;
7110                    ElementHandlerOutput::from_event(event, allow_any)
7111                }
7112                DeserializerArtifact::Deserializer(deserializer) => {
7113                    let ret = ElementHandlerOutput::from_event(event, allow_any);
7114                    match &ret {
7115                        ElementHandlerOutput::Break { .. } => {
7116                            *self.state = ComplexBaseTypeDeserializerState::Content__(deserializer);
7117                        }
7118                        ElementHandlerOutput::Continue { .. } => {
7119                            fallback.get_or_insert(ComplexBaseTypeDeserializerState::Content__(
7120                                deserializer,
7121                            ));
7122                            *self.state = ComplexBaseTypeDeserializerState::Next__;
7123                        }
7124                    }
7125                    ret
7126                }
7127            })
7128        }
7129    }
7130    impl<'de> Deserializer<'de, super::ComplexBaseType> for Box<ComplexBaseTypeDeserializer> {
7131        fn init<R>(reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::ComplexBaseType>
7132        where
7133            R: DeserializeReader,
7134        {
7135            reader.init_deserializer_from_start_event(
7136                event,
7137                ComplexBaseTypeDeserializer::from_bytes_start,
7138            )
7139        }
7140        fn next<R>(
7141            mut self,
7142            reader: &R,
7143            event: Event<'de>,
7144        ) -> DeserializerResult<'de, super::ComplexBaseType>
7145        where
7146            R: DeserializeReader,
7147        {
7148            use ComplexBaseTypeDeserializerState as S;
7149            let mut event = event;
7150            let mut fallback = None;
7151            let (event, allow_any) = loop {
7152                let state = replace(&mut *self.state, S::Unknown__);
7153                event = match (state, event) {
7154                    (S::Content__(deserializer), event) => {
7155                        let output = deserializer.next(reader, event)?;
7156                        match self.handle_content(reader, output, &mut fallback)? {
7157                            ElementHandlerOutput::Break { event, allow_any } => {
7158                                break (event, allow_any)
7159                            }
7160                            ElementHandlerOutput::Continue { event, .. } => event,
7161                        }
7162                    }
7163                    (_, Event::End(_)) => {
7164                        return Ok(DeserializerOutput {
7165                            artifact: DeserializerArtifact::Data(self.finish(reader)?),
7166                            event: DeserializerEvent::None,
7167                            allow_any: false,
7168                        });
7169                    }
7170                    (state @ (S::Init__ | S::Next__), event) => {
7171                        fallback.get_or_insert(state);
7172                        let output = < super :: ComplexBaseTypeContent as WithDeserializer > :: Deserializer :: init (reader , event) ? ;
7173                        match self.handle_content(reader, output, &mut fallback)? {
7174                            ElementHandlerOutput::Break { event, allow_any } => {
7175                                break (event, allow_any)
7176                            }
7177                            ElementHandlerOutput::Continue { event, .. } => event,
7178                        }
7179                    }
7180                    (S::Unknown__, _) => unreachable!(),
7181                }
7182            };
7183            let artifact = DeserializerArtifact::Deserializer(self);
7184            Ok(DeserializerOutput {
7185                artifact,
7186                event,
7187                allow_any,
7188            })
7189        }
7190        fn finish<R>(mut self, reader: &R) -> Result<super::ComplexBaseType, Error>
7191        where
7192            R: DeserializeReader,
7193        {
7194            let state = replace(
7195                &mut *self.state,
7196                ComplexBaseTypeDeserializerState::Unknown__,
7197            );
7198            self.finish_state(reader, state)?;
7199            Ok(super::ComplexBaseType {
7200                id: self.id,
7201                name: self.name,
7202                mixed: self.mixed,
7203                abstract_: self.abstract_,
7204                final_: self.final_,
7205                block: self.block,
7206                default_attributes_apply: self.default_attributes_apply,
7207                content: self.content,
7208            })
7209        }
7210    }
7211    #[derive(Debug)]
7212    pub struct ComplexBaseTypeContentDeserializer {
7213        state: Box<ComplexBaseTypeContentDeserializerState>,
7214    }
7215    #[derive(Debug)]
7216    pub enum ComplexBaseTypeContentDeserializerState {
7217        Init__,
7218        Annotation(
7219            Option<super::Annotation>,
7220            Option<<super::Annotation as WithDeserializer>::Deserializer>,
7221        ),
7222        SimpleContent(
7223            Option<super::SimpleContent>,
7224            Option<<super::SimpleContent as WithDeserializer>::Deserializer>,
7225        ),
7226        ComplexContent(
7227            Option<super::ComplexContent>,
7228            Option<<super::ComplexContent as WithDeserializer>::Deserializer>,
7229        ),
7230        OpenContent(
7231            Option<super::OpenContent>,
7232            Option<<super::OpenContent as WithDeserializer>::Deserializer>,
7233        ),
7234        Group(
7235            Option<super::GroupType>,
7236            Option<<super::GroupType as WithDeserializer>::Deserializer>,
7237        ),
7238        All(
7239            Option<super::GroupType>,
7240            Option<<super::GroupType as WithDeserializer>::Deserializer>,
7241        ),
7242        Choice(
7243            Option<super::GroupType>,
7244            Option<<super::GroupType as WithDeserializer>::Deserializer>,
7245        ),
7246        Sequence(
7247            Option<super::GroupType>,
7248            Option<<super::GroupType as WithDeserializer>::Deserializer>,
7249        ),
7250        Attribute(
7251            Option<super::AttributeType>,
7252            Option<<super::AttributeType as WithDeserializer>::Deserializer>,
7253        ),
7254        AttributeGroup(
7255            Option<super::AttributeGroupType>,
7256            Option<<super::AttributeGroupType as WithDeserializer>::Deserializer>,
7257        ),
7258        AnyAttribute(
7259            Option<super::AnyAttribute>,
7260            Option<<super::AnyAttribute as WithDeserializer>::Deserializer>,
7261        ),
7262        Assert(
7263            Option<super::AssertionType>,
7264            Option<<super::AssertionType as WithDeserializer>::Deserializer>,
7265        ),
7266        Done__(super::ComplexBaseTypeContent),
7267        Unknown__,
7268    }
7269    impl ComplexBaseTypeContentDeserializer {
7270        fn find_suitable<'de, R>(
7271            &mut self,
7272            reader: &R,
7273            event: Event<'de>,
7274            fallback: &mut Option<ComplexBaseTypeContentDeserializerState>,
7275        ) -> Result<ElementHandlerOutput<'de>, Error>
7276        where
7277            R: DeserializeReader,
7278        {
7279            let (Event::Start(x) | Event::Empty(x)) = &event else {
7280                *self.state = fallback
7281                    .take()
7282                    .unwrap_or(ComplexBaseTypeContentDeserializerState::Init__);
7283                return Ok(ElementHandlerOutput::return_to_parent(event, false));
7284            };
7285            if matches!(
7286                reader.resolve_local_name(x.name(), &super::NS_XS),
7287                Some(b"annotation")
7288            ) {
7289                let output =
7290                    <super::Annotation as WithDeserializer>::Deserializer::init(reader, event)?;
7291                return self.handle_annotation(reader, Default::default(), output, &mut *fallback);
7292            }
7293            if matches!(
7294                reader.resolve_local_name(x.name(), &super::NS_XS),
7295                Some(b"simpleContent")
7296            ) {
7297                let output =
7298                    <super::SimpleContent as WithDeserializer>::Deserializer::init(reader, event)?;
7299                return self.handle_simple_content(
7300                    reader,
7301                    Default::default(),
7302                    output,
7303                    &mut *fallback,
7304                );
7305            }
7306            if matches!(
7307                reader.resolve_local_name(x.name(), &super::NS_XS),
7308                Some(b"complexContent")
7309            ) {
7310                let output =
7311                    <super::ComplexContent as WithDeserializer>::Deserializer::init(reader, event)?;
7312                return self.handle_complex_content(
7313                    reader,
7314                    Default::default(),
7315                    output,
7316                    &mut *fallback,
7317                );
7318            }
7319            if matches!(
7320                reader.resolve_local_name(x.name(), &super::NS_XS),
7321                Some(b"openContent")
7322            ) {
7323                let output =
7324                    <super::OpenContent as WithDeserializer>::Deserializer::init(reader, event)?;
7325                return self.handle_open_content(
7326                    reader,
7327                    Default::default(),
7328                    output,
7329                    &mut *fallback,
7330                );
7331            }
7332            if matches!(
7333                reader.resolve_local_name(x.name(), &super::NS_XS),
7334                Some(b"group")
7335            ) {
7336                let output =
7337                    <super::GroupType as WithDeserializer>::Deserializer::init(reader, event)?;
7338                return self.handle_group(reader, Default::default(), output, &mut *fallback);
7339            }
7340            if matches!(
7341                reader.resolve_local_name(x.name(), &super::NS_XS),
7342                Some(b"all")
7343            ) {
7344                let output =
7345                    <super::GroupType as WithDeserializer>::Deserializer::init(reader, event)?;
7346                return self.handle_all(reader, Default::default(), output, &mut *fallback);
7347            }
7348            if matches!(
7349                reader.resolve_local_name(x.name(), &super::NS_XS),
7350                Some(b"choice")
7351            ) {
7352                let output =
7353                    <super::GroupType as WithDeserializer>::Deserializer::init(reader, event)?;
7354                return self.handle_choice(reader, Default::default(), output, &mut *fallback);
7355            }
7356            if matches!(
7357                reader.resolve_local_name(x.name(), &super::NS_XS),
7358                Some(b"sequence")
7359            ) {
7360                let output =
7361                    <super::GroupType as WithDeserializer>::Deserializer::init(reader, event)?;
7362                return self.handle_sequence(reader, Default::default(), output, &mut *fallback);
7363            }
7364            if matches!(
7365                reader.resolve_local_name(x.name(), &super::NS_XS),
7366                Some(b"attribute")
7367            ) {
7368                let output =
7369                    <super::AttributeType as WithDeserializer>::Deserializer::init(reader, event)?;
7370                return self.handle_attribute(reader, Default::default(), output, &mut *fallback);
7371            }
7372            if matches!(
7373                reader.resolve_local_name(x.name(), &super::NS_XS),
7374                Some(b"attributeGroup")
7375            ) {
7376                let output = <super::AttributeGroupType as WithDeserializer>::Deserializer::init(
7377                    reader, event,
7378                )?;
7379                return self.handle_attribute_group(
7380                    reader,
7381                    Default::default(),
7382                    output,
7383                    &mut *fallback,
7384                );
7385            }
7386            if matches!(
7387                reader.resolve_local_name(x.name(), &super::NS_XS),
7388                Some(b"anyAttribute")
7389            ) {
7390                let output =
7391                    <super::AnyAttribute as WithDeserializer>::Deserializer::init(reader, event)?;
7392                return self.handle_any_attribute(
7393                    reader,
7394                    Default::default(),
7395                    output,
7396                    &mut *fallback,
7397                );
7398            }
7399            if matches!(
7400                reader.resolve_local_name(x.name(), &super::NS_XS),
7401                Some(b"assert")
7402            ) {
7403                let output =
7404                    <super::AssertionType as WithDeserializer>::Deserializer::init(reader, event)?;
7405                return self.handle_assert(reader, Default::default(), output, &mut *fallback);
7406            }
7407            *self.state = fallback
7408                .take()
7409                .unwrap_or(ComplexBaseTypeContentDeserializerState::Init__);
7410            Ok(ElementHandlerOutput::return_to_parent(event, false))
7411        }
7412        fn finish_state<R>(
7413            reader: &R,
7414            state: ComplexBaseTypeContentDeserializerState,
7415        ) -> Result<super::ComplexBaseTypeContent, Error>
7416        where
7417            R: DeserializeReader,
7418        {
7419            use ComplexBaseTypeContentDeserializerState as S;
7420            match state {
7421                S::Init__ => Err(ErrorKind::MissingContent.into()),
7422                S::Annotation(mut values, deserializer) => {
7423                    if let Some(deserializer) = deserializer {
7424                        let value = deserializer.finish(reader)?;
7425                        ComplexBaseTypeContentDeserializer::store_annotation(&mut values, value)?;
7426                    }
7427                    Ok(super::ComplexBaseTypeContent::Annotation(
7428                        values.ok_or_else(|| ErrorKind::MissingElement("annotation".into()))?,
7429                    ))
7430                }
7431                S::SimpleContent(mut values, deserializer) => {
7432                    if let Some(deserializer) = deserializer {
7433                        let value = deserializer.finish(reader)?;
7434                        ComplexBaseTypeContentDeserializer::store_simple_content(
7435                            &mut values,
7436                            value,
7437                        )?;
7438                    }
7439                    Ok(super::ComplexBaseTypeContent::SimpleContent(
7440                        values.ok_or_else(|| ErrorKind::MissingElement("simpleContent".into()))?,
7441                    ))
7442                }
7443                S::ComplexContent(mut values, deserializer) => {
7444                    if let Some(deserializer) = deserializer {
7445                        let value = deserializer.finish(reader)?;
7446                        ComplexBaseTypeContentDeserializer::store_complex_content(
7447                            &mut values,
7448                            value,
7449                        )?;
7450                    }
7451                    Ok(super::ComplexBaseTypeContent::ComplexContent(
7452                        values.ok_or_else(|| ErrorKind::MissingElement("complexContent".into()))?,
7453                    ))
7454                }
7455                S::OpenContent(mut values, deserializer) => {
7456                    if let Some(deserializer) = deserializer {
7457                        let value = deserializer.finish(reader)?;
7458                        ComplexBaseTypeContentDeserializer::store_open_content(&mut values, value)?;
7459                    }
7460                    Ok(super::ComplexBaseTypeContent::OpenContent(
7461                        values.ok_or_else(|| ErrorKind::MissingElement("openContent".into()))?,
7462                    ))
7463                }
7464                S::Group(mut values, deserializer) => {
7465                    if let Some(deserializer) = deserializer {
7466                        let value = deserializer.finish(reader)?;
7467                        ComplexBaseTypeContentDeserializer::store_group(&mut values, value)?;
7468                    }
7469                    Ok(super::ComplexBaseTypeContent::Group(values.ok_or_else(
7470                        || ErrorKind::MissingElement("group".into()),
7471                    )?))
7472                }
7473                S::All(mut values, deserializer) => {
7474                    if let Some(deserializer) = deserializer {
7475                        let value = deserializer.finish(reader)?;
7476                        ComplexBaseTypeContentDeserializer::store_all(&mut values, value)?;
7477                    }
7478                    Ok(super::ComplexBaseTypeContent::All(
7479                        values.ok_or_else(|| ErrorKind::MissingElement("all".into()))?,
7480                    ))
7481                }
7482                S::Choice(mut values, deserializer) => {
7483                    if let Some(deserializer) = deserializer {
7484                        let value = deserializer.finish(reader)?;
7485                        ComplexBaseTypeContentDeserializer::store_choice(&mut values, value)?;
7486                    }
7487                    Ok(super::ComplexBaseTypeContent::Choice(values.ok_or_else(
7488                        || ErrorKind::MissingElement("choice".into()),
7489                    )?))
7490                }
7491                S::Sequence(mut values, deserializer) => {
7492                    if let Some(deserializer) = deserializer {
7493                        let value = deserializer.finish(reader)?;
7494                        ComplexBaseTypeContentDeserializer::store_sequence(&mut values, value)?;
7495                    }
7496                    Ok(super::ComplexBaseTypeContent::Sequence(values.ok_or_else(
7497                        || ErrorKind::MissingElement("sequence".into()),
7498                    )?))
7499                }
7500                S::Attribute(mut values, deserializer) => {
7501                    if let Some(deserializer) = deserializer {
7502                        let value = deserializer.finish(reader)?;
7503                        ComplexBaseTypeContentDeserializer::store_attribute(&mut values, value)?;
7504                    }
7505                    Ok(super::ComplexBaseTypeContent::Attribute(
7506                        values.ok_or_else(|| ErrorKind::MissingElement("attribute".into()))?,
7507                    ))
7508                }
7509                S::AttributeGroup(mut values, deserializer) => {
7510                    if let Some(deserializer) = deserializer {
7511                        let value = deserializer.finish(reader)?;
7512                        ComplexBaseTypeContentDeserializer::store_attribute_group(
7513                            &mut values,
7514                            value,
7515                        )?;
7516                    }
7517                    Ok(super::ComplexBaseTypeContent::AttributeGroup(
7518                        values.ok_or_else(|| ErrorKind::MissingElement("attributeGroup".into()))?,
7519                    ))
7520                }
7521                S::AnyAttribute(mut values, deserializer) => {
7522                    if let Some(deserializer) = deserializer {
7523                        let value = deserializer.finish(reader)?;
7524                        ComplexBaseTypeContentDeserializer::store_any_attribute(
7525                            &mut values,
7526                            value,
7527                        )?;
7528                    }
7529                    Ok(super::ComplexBaseTypeContent::AnyAttribute(
7530                        values.ok_or_else(|| ErrorKind::MissingElement("anyAttribute".into()))?,
7531                    ))
7532                }
7533                S::Assert(mut values, deserializer) => {
7534                    if let Some(deserializer) = deserializer {
7535                        let value = deserializer.finish(reader)?;
7536                        ComplexBaseTypeContentDeserializer::store_assert(&mut values, value)?;
7537                    }
7538                    Ok(super::ComplexBaseTypeContent::Assert(values.ok_or_else(
7539                        || ErrorKind::MissingElement("assert".into()),
7540                    )?))
7541                }
7542                S::Done__(data) => Ok(data),
7543                S::Unknown__ => unreachable!(),
7544            }
7545        }
7546        fn store_annotation(
7547            values: &mut Option<super::Annotation>,
7548            value: super::Annotation,
7549        ) -> Result<(), Error> {
7550            if values.is_some() {
7551                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
7552                    b"annotation",
7553                )))?;
7554            }
7555            *values = Some(value);
7556            Ok(())
7557        }
7558        fn store_simple_content(
7559            values: &mut Option<super::SimpleContent>,
7560            value: super::SimpleContent,
7561        ) -> Result<(), Error> {
7562            if values.is_some() {
7563                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
7564                    b"simpleContent",
7565                )))?;
7566            }
7567            *values = Some(value);
7568            Ok(())
7569        }
7570        fn store_complex_content(
7571            values: &mut Option<super::ComplexContent>,
7572            value: super::ComplexContent,
7573        ) -> Result<(), Error> {
7574            if values.is_some() {
7575                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
7576                    b"complexContent",
7577                )))?;
7578            }
7579            *values = Some(value);
7580            Ok(())
7581        }
7582        fn store_open_content(
7583            values: &mut Option<super::OpenContent>,
7584            value: super::OpenContent,
7585        ) -> Result<(), Error> {
7586            if values.is_some() {
7587                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
7588                    b"openContent",
7589                )))?;
7590            }
7591            *values = Some(value);
7592            Ok(())
7593        }
7594        fn store_group(
7595            values: &mut Option<super::GroupType>,
7596            value: super::GroupType,
7597        ) -> Result<(), Error> {
7598            if values.is_some() {
7599                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
7600                    b"group",
7601                )))?;
7602            }
7603            *values = Some(value);
7604            Ok(())
7605        }
7606        fn store_all(
7607            values: &mut Option<super::GroupType>,
7608            value: super::GroupType,
7609        ) -> Result<(), Error> {
7610            if values.is_some() {
7611                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(b"all")))?;
7612            }
7613            *values = Some(value);
7614            Ok(())
7615        }
7616        fn store_choice(
7617            values: &mut Option<super::GroupType>,
7618            value: super::GroupType,
7619        ) -> Result<(), Error> {
7620            if values.is_some() {
7621                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
7622                    b"choice",
7623                )))?;
7624            }
7625            *values = Some(value);
7626            Ok(())
7627        }
7628        fn store_sequence(
7629            values: &mut Option<super::GroupType>,
7630            value: super::GroupType,
7631        ) -> Result<(), Error> {
7632            if values.is_some() {
7633                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
7634                    b"sequence",
7635                )))?;
7636            }
7637            *values = Some(value);
7638            Ok(())
7639        }
7640        fn store_attribute(
7641            values: &mut Option<super::AttributeType>,
7642            value: super::AttributeType,
7643        ) -> Result<(), Error> {
7644            if values.is_some() {
7645                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
7646                    b"attribute",
7647                )))?;
7648            }
7649            *values = Some(value);
7650            Ok(())
7651        }
7652        fn store_attribute_group(
7653            values: &mut Option<super::AttributeGroupType>,
7654            value: super::AttributeGroupType,
7655        ) -> Result<(), Error> {
7656            if values.is_some() {
7657                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
7658                    b"attributeGroup",
7659                )))?;
7660            }
7661            *values = Some(value);
7662            Ok(())
7663        }
7664        fn store_any_attribute(
7665            values: &mut Option<super::AnyAttribute>,
7666            value: super::AnyAttribute,
7667        ) -> Result<(), Error> {
7668            if values.is_some() {
7669                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
7670                    b"anyAttribute",
7671                )))?;
7672            }
7673            *values = Some(value);
7674            Ok(())
7675        }
7676        fn store_assert(
7677            values: &mut Option<super::AssertionType>,
7678            value: super::AssertionType,
7679        ) -> Result<(), Error> {
7680            if values.is_some() {
7681                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
7682                    b"assert",
7683                )))?;
7684            }
7685            *values = Some(value);
7686            Ok(())
7687        }
7688        fn handle_annotation<'de, R>(
7689            &mut self,
7690            reader: &R,
7691            mut values: Option<super::Annotation>,
7692            output: DeserializerOutput<'de, super::Annotation>,
7693            fallback: &mut Option<ComplexBaseTypeContentDeserializerState>,
7694        ) -> Result<ElementHandlerOutput<'de>, Error>
7695        where
7696            R: DeserializeReader,
7697        {
7698            let DeserializerOutput {
7699                artifact,
7700                event,
7701                allow_any,
7702            } = output;
7703            if artifact.is_none() {
7704                *self.state = match fallback.take() {
7705                    None => ComplexBaseTypeContentDeserializerState::Init__,
7706                    Some(ComplexBaseTypeContentDeserializerState::Annotation(
7707                        _,
7708                        Some(deserializer),
7709                    )) => ComplexBaseTypeContentDeserializerState::Annotation(
7710                        values,
7711                        Some(deserializer),
7712                    ),
7713                    _ => unreachable!(),
7714                };
7715                return Ok(ElementHandlerOutput::break_(event, allow_any));
7716            }
7717            match fallback.take() {
7718                None => (),
7719                Some(ComplexBaseTypeContentDeserializerState::Annotation(
7720                    _,
7721                    Some(deserializer),
7722                )) => {
7723                    let data = deserializer.finish(reader)?;
7724                    ComplexBaseTypeContentDeserializer::store_annotation(&mut values, data)?;
7725                }
7726                Some(_) => unreachable!(),
7727            }
7728            Ok(match artifact {
7729                DeserializerArtifact::None => unreachable!(),
7730                DeserializerArtifact::Data(data) => {
7731                    ComplexBaseTypeContentDeserializer::store_annotation(&mut values, data)?;
7732                    let data = ComplexBaseTypeContentDeserializer::finish_state(
7733                        reader,
7734                        ComplexBaseTypeContentDeserializerState::Annotation(values, None),
7735                    )?;
7736                    *self.state = ComplexBaseTypeContentDeserializerState::Done__(data);
7737                    ElementHandlerOutput::Break { event, allow_any }
7738                }
7739                DeserializerArtifact::Deserializer(deserializer) => {
7740                    *self.state = ComplexBaseTypeContentDeserializerState::Annotation(
7741                        values,
7742                        Some(deserializer),
7743                    );
7744                    ElementHandlerOutput::from_event_end(event, allow_any)
7745                }
7746            })
7747        }
7748        fn handle_simple_content<'de, R>(
7749            &mut self,
7750            reader: &R,
7751            mut values: Option<super::SimpleContent>,
7752            output: DeserializerOutput<'de, super::SimpleContent>,
7753            fallback: &mut Option<ComplexBaseTypeContentDeserializerState>,
7754        ) -> Result<ElementHandlerOutput<'de>, Error>
7755        where
7756            R: DeserializeReader,
7757        {
7758            let DeserializerOutput {
7759                artifact,
7760                event,
7761                allow_any,
7762            } = output;
7763            if artifact.is_none() {
7764                *self.state = match fallback.take() {
7765                    None => ComplexBaseTypeContentDeserializerState::Init__,
7766                    Some(ComplexBaseTypeContentDeserializerState::SimpleContent(
7767                        _,
7768                        Some(deserializer),
7769                    )) => ComplexBaseTypeContentDeserializerState::SimpleContent(
7770                        values,
7771                        Some(deserializer),
7772                    ),
7773                    _ => unreachable!(),
7774                };
7775                return Ok(ElementHandlerOutput::break_(event, allow_any));
7776            }
7777            match fallback.take() {
7778                None => (),
7779                Some(ComplexBaseTypeContentDeserializerState::SimpleContent(
7780                    _,
7781                    Some(deserializer),
7782                )) => {
7783                    let data = deserializer.finish(reader)?;
7784                    ComplexBaseTypeContentDeserializer::store_simple_content(&mut values, data)?;
7785                }
7786                Some(_) => unreachable!(),
7787            }
7788            Ok(match artifact {
7789                DeserializerArtifact::None => unreachable!(),
7790                DeserializerArtifact::Data(data) => {
7791                    ComplexBaseTypeContentDeserializer::store_simple_content(&mut values, data)?;
7792                    let data = ComplexBaseTypeContentDeserializer::finish_state(
7793                        reader,
7794                        ComplexBaseTypeContentDeserializerState::SimpleContent(values, None),
7795                    )?;
7796                    *self.state = ComplexBaseTypeContentDeserializerState::Done__(data);
7797                    ElementHandlerOutput::Break { event, allow_any }
7798                }
7799                DeserializerArtifact::Deserializer(deserializer) => {
7800                    *self.state = ComplexBaseTypeContentDeserializerState::SimpleContent(
7801                        values,
7802                        Some(deserializer),
7803                    );
7804                    ElementHandlerOutput::from_event_end(event, allow_any)
7805                }
7806            })
7807        }
7808        fn handle_complex_content<'de, R>(
7809            &mut self,
7810            reader: &R,
7811            mut values: Option<super::ComplexContent>,
7812            output: DeserializerOutput<'de, super::ComplexContent>,
7813            fallback: &mut Option<ComplexBaseTypeContentDeserializerState>,
7814        ) -> Result<ElementHandlerOutput<'de>, Error>
7815        where
7816            R: DeserializeReader,
7817        {
7818            let DeserializerOutput {
7819                artifact,
7820                event,
7821                allow_any,
7822            } = output;
7823            if artifact.is_none() {
7824                *self.state = match fallback.take() {
7825                    None => ComplexBaseTypeContentDeserializerState::Init__,
7826                    Some(ComplexBaseTypeContentDeserializerState::ComplexContent(
7827                        _,
7828                        Some(deserializer),
7829                    )) => ComplexBaseTypeContentDeserializerState::ComplexContent(
7830                        values,
7831                        Some(deserializer),
7832                    ),
7833                    _ => unreachable!(),
7834                };
7835                return Ok(ElementHandlerOutput::break_(event, allow_any));
7836            }
7837            match fallback.take() {
7838                None => (),
7839                Some(ComplexBaseTypeContentDeserializerState::ComplexContent(
7840                    _,
7841                    Some(deserializer),
7842                )) => {
7843                    let data = deserializer.finish(reader)?;
7844                    ComplexBaseTypeContentDeserializer::store_complex_content(&mut values, data)?;
7845                }
7846                Some(_) => unreachable!(),
7847            }
7848            Ok(match artifact {
7849                DeserializerArtifact::None => unreachable!(),
7850                DeserializerArtifact::Data(data) => {
7851                    ComplexBaseTypeContentDeserializer::store_complex_content(&mut values, data)?;
7852                    let data = ComplexBaseTypeContentDeserializer::finish_state(
7853                        reader,
7854                        ComplexBaseTypeContentDeserializerState::ComplexContent(values, None),
7855                    )?;
7856                    *self.state = ComplexBaseTypeContentDeserializerState::Done__(data);
7857                    ElementHandlerOutput::Break { event, allow_any }
7858                }
7859                DeserializerArtifact::Deserializer(deserializer) => {
7860                    *self.state = ComplexBaseTypeContentDeserializerState::ComplexContent(
7861                        values,
7862                        Some(deserializer),
7863                    );
7864                    ElementHandlerOutput::from_event_end(event, allow_any)
7865                }
7866            })
7867        }
7868        fn handle_open_content<'de, R>(
7869            &mut self,
7870            reader: &R,
7871            mut values: Option<super::OpenContent>,
7872            output: DeserializerOutput<'de, super::OpenContent>,
7873            fallback: &mut Option<ComplexBaseTypeContentDeserializerState>,
7874        ) -> Result<ElementHandlerOutput<'de>, Error>
7875        where
7876            R: DeserializeReader,
7877        {
7878            let DeserializerOutput {
7879                artifact,
7880                event,
7881                allow_any,
7882            } = output;
7883            if artifact.is_none() {
7884                *self.state = match fallback.take() {
7885                    None => ComplexBaseTypeContentDeserializerState::Init__,
7886                    Some(ComplexBaseTypeContentDeserializerState::OpenContent(
7887                        _,
7888                        Some(deserializer),
7889                    )) => ComplexBaseTypeContentDeserializerState::OpenContent(
7890                        values,
7891                        Some(deserializer),
7892                    ),
7893                    _ => unreachable!(),
7894                };
7895                return Ok(ElementHandlerOutput::break_(event, allow_any));
7896            }
7897            match fallback.take() {
7898                None => (),
7899                Some(ComplexBaseTypeContentDeserializerState::OpenContent(
7900                    _,
7901                    Some(deserializer),
7902                )) => {
7903                    let data = deserializer.finish(reader)?;
7904                    ComplexBaseTypeContentDeserializer::store_open_content(&mut values, data)?;
7905                }
7906                Some(_) => unreachable!(),
7907            }
7908            Ok(match artifact {
7909                DeserializerArtifact::None => unreachable!(),
7910                DeserializerArtifact::Data(data) => {
7911                    ComplexBaseTypeContentDeserializer::store_open_content(&mut values, data)?;
7912                    let data = ComplexBaseTypeContentDeserializer::finish_state(
7913                        reader,
7914                        ComplexBaseTypeContentDeserializerState::OpenContent(values, None),
7915                    )?;
7916                    *self.state = ComplexBaseTypeContentDeserializerState::Done__(data);
7917                    ElementHandlerOutput::Break { event, allow_any }
7918                }
7919                DeserializerArtifact::Deserializer(deserializer) => {
7920                    *self.state = ComplexBaseTypeContentDeserializerState::OpenContent(
7921                        values,
7922                        Some(deserializer),
7923                    );
7924                    ElementHandlerOutput::from_event_end(event, allow_any)
7925                }
7926            })
7927        }
7928        fn handle_group<'de, R>(
7929            &mut self,
7930            reader: &R,
7931            mut values: Option<super::GroupType>,
7932            output: DeserializerOutput<'de, super::GroupType>,
7933            fallback: &mut Option<ComplexBaseTypeContentDeserializerState>,
7934        ) -> Result<ElementHandlerOutput<'de>, Error>
7935        where
7936            R: DeserializeReader,
7937        {
7938            let DeserializerOutput {
7939                artifact,
7940                event,
7941                allow_any,
7942            } = output;
7943            if artifact.is_none() {
7944                *self.state = match fallback.take() {
7945                    None => ComplexBaseTypeContentDeserializerState::Init__,
7946                    Some(ComplexBaseTypeContentDeserializerState::Group(_, Some(deserializer))) => {
7947                        ComplexBaseTypeContentDeserializerState::Group(values, Some(deserializer))
7948                    }
7949                    _ => unreachable!(),
7950                };
7951                return Ok(ElementHandlerOutput::break_(event, allow_any));
7952            }
7953            match fallback.take() {
7954                None => (),
7955                Some(ComplexBaseTypeContentDeserializerState::Group(_, Some(deserializer))) => {
7956                    let data = deserializer.finish(reader)?;
7957                    ComplexBaseTypeContentDeserializer::store_group(&mut values, data)?;
7958                }
7959                Some(_) => unreachable!(),
7960            }
7961            Ok(match artifact {
7962                DeserializerArtifact::None => unreachable!(),
7963                DeserializerArtifact::Data(data) => {
7964                    ComplexBaseTypeContentDeserializer::store_group(&mut values, data)?;
7965                    let data = ComplexBaseTypeContentDeserializer::finish_state(
7966                        reader,
7967                        ComplexBaseTypeContentDeserializerState::Group(values, None),
7968                    )?;
7969                    *self.state = ComplexBaseTypeContentDeserializerState::Done__(data);
7970                    ElementHandlerOutput::Break { event, allow_any }
7971                }
7972                DeserializerArtifact::Deserializer(deserializer) => {
7973                    *self.state =
7974                        ComplexBaseTypeContentDeserializerState::Group(values, Some(deserializer));
7975                    ElementHandlerOutput::from_event_end(event, allow_any)
7976                }
7977            })
7978        }
7979        fn handle_all<'de, R>(
7980            &mut self,
7981            reader: &R,
7982            mut values: Option<super::GroupType>,
7983            output: DeserializerOutput<'de, super::GroupType>,
7984            fallback: &mut Option<ComplexBaseTypeContentDeserializerState>,
7985        ) -> Result<ElementHandlerOutput<'de>, Error>
7986        where
7987            R: DeserializeReader,
7988        {
7989            let DeserializerOutput {
7990                artifact,
7991                event,
7992                allow_any,
7993            } = output;
7994            if artifact.is_none() {
7995                *self.state = match fallback.take() {
7996                    None => ComplexBaseTypeContentDeserializerState::Init__,
7997                    Some(ComplexBaseTypeContentDeserializerState::All(_, Some(deserializer))) => {
7998                        ComplexBaseTypeContentDeserializerState::All(values, Some(deserializer))
7999                    }
8000                    _ => unreachable!(),
8001                };
8002                return Ok(ElementHandlerOutput::break_(event, allow_any));
8003            }
8004            match fallback.take() {
8005                None => (),
8006                Some(ComplexBaseTypeContentDeserializerState::All(_, Some(deserializer))) => {
8007                    let data = deserializer.finish(reader)?;
8008                    ComplexBaseTypeContentDeserializer::store_all(&mut values, data)?;
8009                }
8010                Some(_) => unreachable!(),
8011            }
8012            Ok(match artifact {
8013                DeserializerArtifact::None => unreachable!(),
8014                DeserializerArtifact::Data(data) => {
8015                    ComplexBaseTypeContentDeserializer::store_all(&mut values, data)?;
8016                    let data = ComplexBaseTypeContentDeserializer::finish_state(
8017                        reader,
8018                        ComplexBaseTypeContentDeserializerState::All(values, None),
8019                    )?;
8020                    *self.state = ComplexBaseTypeContentDeserializerState::Done__(data);
8021                    ElementHandlerOutput::Break { event, allow_any }
8022                }
8023                DeserializerArtifact::Deserializer(deserializer) => {
8024                    *self.state =
8025                        ComplexBaseTypeContentDeserializerState::All(values, Some(deserializer));
8026                    ElementHandlerOutput::from_event_end(event, allow_any)
8027                }
8028            })
8029        }
8030        fn handle_choice<'de, R>(
8031            &mut self,
8032            reader: &R,
8033            mut values: Option<super::GroupType>,
8034            output: DeserializerOutput<'de, super::GroupType>,
8035            fallback: &mut Option<ComplexBaseTypeContentDeserializerState>,
8036        ) -> Result<ElementHandlerOutput<'de>, Error>
8037        where
8038            R: DeserializeReader,
8039        {
8040            let DeserializerOutput {
8041                artifact,
8042                event,
8043                allow_any,
8044            } = output;
8045            if artifact.is_none() {
8046                *self.state = match fallback.take() {
8047                    None => ComplexBaseTypeContentDeserializerState::Init__,
8048                    Some(ComplexBaseTypeContentDeserializerState::Choice(
8049                        _,
8050                        Some(deserializer),
8051                    )) => {
8052                        ComplexBaseTypeContentDeserializerState::Choice(values, Some(deserializer))
8053                    }
8054                    _ => unreachable!(),
8055                };
8056                return Ok(ElementHandlerOutput::break_(event, allow_any));
8057            }
8058            match fallback.take() {
8059                None => (),
8060                Some(ComplexBaseTypeContentDeserializerState::Choice(_, Some(deserializer))) => {
8061                    let data = deserializer.finish(reader)?;
8062                    ComplexBaseTypeContentDeserializer::store_choice(&mut values, data)?;
8063                }
8064                Some(_) => unreachable!(),
8065            }
8066            Ok(match artifact {
8067                DeserializerArtifact::None => unreachable!(),
8068                DeserializerArtifact::Data(data) => {
8069                    ComplexBaseTypeContentDeserializer::store_choice(&mut values, data)?;
8070                    let data = ComplexBaseTypeContentDeserializer::finish_state(
8071                        reader,
8072                        ComplexBaseTypeContentDeserializerState::Choice(values, None),
8073                    )?;
8074                    *self.state = ComplexBaseTypeContentDeserializerState::Done__(data);
8075                    ElementHandlerOutput::Break { event, allow_any }
8076                }
8077                DeserializerArtifact::Deserializer(deserializer) => {
8078                    *self.state =
8079                        ComplexBaseTypeContentDeserializerState::Choice(values, Some(deserializer));
8080                    ElementHandlerOutput::from_event_end(event, allow_any)
8081                }
8082            })
8083        }
8084        fn handle_sequence<'de, R>(
8085            &mut self,
8086            reader: &R,
8087            mut values: Option<super::GroupType>,
8088            output: DeserializerOutput<'de, super::GroupType>,
8089            fallback: &mut Option<ComplexBaseTypeContentDeserializerState>,
8090        ) -> Result<ElementHandlerOutput<'de>, Error>
8091        where
8092            R: DeserializeReader,
8093        {
8094            let DeserializerOutput {
8095                artifact,
8096                event,
8097                allow_any,
8098            } = output;
8099            if artifact.is_none() {
8100                *self.state = match fallback.take() {
8101                    None => ComplexBaseTypeContentDeserializerState::Init__,
8102                    Some(ComplexBaseTypeContentDeserializerState::Sequence(
8103                        _,
8104                        Some(deserializer),
8105                    )) => ComplexBaseTypeContentDeserializerState::Sequence(
8106                        values,
8107                        Some(deserializer),
8108                    ),
8109                    _ => unreachable!(),
8110                };
8111                return Ok(ElementHandlerOutput::break_(event, allow_any));
8112            }
8113            match fallback.take() {
8114                None => (),
8115                Some(ComplexBaseTypeContentDeserializerState::Sequence(_, Some(deserializer))) => {
8116                    let data = deserializer.finish(reader)?;
8117                    ComplexBaseTypeContentDeserializer::store_sequence(&mut values, data)?;
8118                }
8119                Some(_) => unreachable!(),
8120            }
8121            Ok(match artifact {
8122                DeserializerArtifact::None => unreachable!(),
8123                DeserializerArtifact::Data(data) => {
8124                    ComplexBaseTypeContentDeserializer::store_sequence(&mut values, data)?;
8125                    let data = ComplexBaseTypeContentDeserializer::finish_state(
8126                        reader,
8127                        ComplexBaseTypeContentDeserializerState::Sequence(values, None),
8128                    )?;
8129                    *self.state = ComplexBaseTypeContentDeserializerState::Done__(data);
8130                    ElementHandlerOutput::Break { event, allow_any }
8131                }
8132                DeserializerArtifact::Deserializer(deserializer) => {
8133                    *self.state = ComplexBaseTypeContentDeserializerState::Sequence(
8134                        values,
8135                        Some(deserializer),
8136                    );
8137                    ElementHandlerOutput::from_event_end(event, allow_any)
8138                }
8139            })
8140        }
8141        fn handle_attribute<'de, R>(
8142            &mut self,
8143            reader: &R,
8144            mut values: Option<super::AttributeType>,
8145            output: DeserializerOutput<'de, super::AttributeType>,
8146            fallback: &mut Option<ComplexBaseTypeContentDeserializerState>,
8147        ) -> Result<ElementHandlerOutput<'de>, Error>
8148        where
8149            R: DeserializeReader,
8150        {
8151            let DeserializerOutput {
8152                artifact,
8153                event,
8154                allow_any,
8155            } = output;
8156            if artifact.is_none() {
8157                *self.state = match fallback.take() {
8158                    None => ComplexBaseTypeContentDeserializerState::Init__,
8159                    Some(ComplexBaseTypeContentDeserializerState::Attribute(
8160                        _,
8161                        Some(deserializer),
8162                    )) => ComplexBaseTypeContentDeserializerState::Attribute(
8163                        values,
8164                        Some(deserializer),
8165                    ),
8166                    _ => unreachable!(),
8167                };
8168                return Ok(ElementHandlerOutput::break_(event, allow_any));
8169            }
8170            match fallback.take() {
8171                None => (),
8172                Some(ComplexBaseTypeContentDeserializerState::Attribute(_, Some(deserializer))) => {
8173                    let data = deserializer.finish(reader)?;
8174                    ComplexBaseTypeContentDeserializer::store_attribute(&mut values, data)?;
8175                }
8176                Some(_) => unreachable!(),
8177            }
8178            Ok(match artifact {
8179                DeserializerArtifact::None => unreachable!(),
8180                DeserializerArtifact::Data(data) => {
8181                    ComplexBaseTypeContentDeserializer::store_attribute(&mut values, data)?;
8182                    let data = ComplexBaseTypeContentDeserializer::finish_state(
8183                        reader,
8184                        ComplexBaseTypeContentDeserializerState::Attribute(values, None),
8185                    )?;
8186                    *self.state = ComplexBaseTypeContentDeserializerState::Done__(data);
8187                    ElementHandlerOutput::Break { event, allow_any }
8188                }
8189                DeserializerArtifact::Deserializer(deserializer) => {
8190                    *self.state = ComplexBaseTypeContentDeserializerState::Attribute(
8191                        values,
8192                        Some(deserializer),
8193                    );
8194                    ElementHandlerOutput::from_event_end(event, allow_any)
8195                }
8196            })
8197        }
8198        fn handle_attribute_group<'de, R>(
8199            &mut self,
8200            reader: &R,
8201            mut values: Option<super::AttributeGroupType>,
8202            output: DeserializerOutput<'de, super::AttributeGroupType>,
8203            fallback: &mut Option<ComplexBaseTypeContentDeserializerState>,
8204        ) -> Result<ElementHandlerOutput<'de>, Error>
8205        where
8206            R: DeserializeReader,
8207        {
8208            let DeserializerOutput {
8209                artifact,
8210                event,
8211                allow_any,
8212            } = output;
8213            if artifact.is_none() {
8214                *self.state = match fallback.take() {
8215                    None => ComplexBaseTypeContentDeserializerState::Init__,
8216                    Some(ComplexBaseTypeContentDeserializerState::AttributeGroup(
8217                        _,
8218                        Some(deserializer),
8219                    )) => ComplexBaseTypeContentDeserializerState::AttributeGroup(
8220                        values,
8221                        Some(deserializer),
8222                    ),
8223                    _ => unreachable!(),
8224                };
8225                return Ok(ElementHandlerOutput::break_(event, allow_any));
8226            }
8227            match fallback.take() {
8228                None => (),
8229                Some(ComplexBaseTypeContentDeserializerState::AttributeGroup(
8230                    _,
8231                    Some(deserializer),
8232                )) => {
8233                    let data = deserializer.finish(reader)?;
8234                    ComplexBaseTypeContentDeserializer::store_attribute_group(&mut values, data)?;
8235                }
8236                Some(_) => unreachable!(),
8237            }
8238            Ok(match artifact {
8239                DeserializerArtifact::None => unreachable!(),
8240                DeserializerArtifact::Data(data) => {
8241                    ComplexBaseTypeContentDeserializer::store_attribute_group(&mut values, data)?;
8242                    let data = ComplexBaseTypeContentDeserializer::finish_state(
8243                        reader,
8244                        ComplexBaseTypeContentDeserializerState::AttributeGroup(values, None),
8245                    )?;
8246                    *self.state = ComplexBaseTypeContentDeserializerState::Done__(data);
8247                    ElementHandlerOutput::Break { event, allow_any }
8248                }
8249                DeserializerArtifact::Deserializer(deserializer) => {
8250                    *self.state = ComplexBaseTypeContentDeserializerState::AttributeGroup(
8251                        values,
8252                        Some(deserializer),
8253                    );
8254                    ElementHandlerOutput::from_event_end(event, allow_any)
8255                }
8256            })
8257        }
8258        fn handle_any_attribute<'de, R>(
8259            &mut self,
8260            reader: &R,
8261            mut values: Option<super::AnyAttribute>,
8262            output: DeserializerOutput<'de, super::AnyAttribute>,
8263            fallback: &mut Option<ComplexBaseTypeContentDeserializerState>,
8264        ) -> Result<ElementHandlerOutput<'de>, Error>
8265        where
8266            R: DeserializeReader,
8267        {
8268            let DeserializerOutput {
8269                artifact,
8270                event,
8271                allow_any,
8272            } = output;
8273            if artifact.is_none() {
8274                *self.state = match fallback.take() {
8275                    None => ComplexBaseTypeContentDeserializerState::Init__,
8276                    Some(ComplexBaseTypeContentDeserializerState::AnyAttribute(
8277                        _,
8278                        Some(deserializer),
8279                    )) => ComplexBaseTypeContentDeserializerState::AnyAttribute(
8280                        values,
8281                        Some(deserializer),
8282                    ),
8283                    _ => unreachable!(),
8284                };
8285                return Ok(ElementHandlerOutput::break_(event, allow_any));
8286            }
8287            match fallback.take() {
8288                None => (),
8289                Some(ComplexBaseTypeContentDeserializerState::AnyAttribute(
8290                    _,
8291                    Some(deserializer),
8292                )) => {
8293                    let data = deserializer.finish(reader)?;
8294                    ComplexBaseTypeContentDeserializer::store_any_attribute(&mut values, data)?;
8295                }
8296                Some(_) => unreachable!(),
8297            }
8298            Ok(match artifact {
8299                DeserializerArtifact::None => unreachable!(),
8300                DeserializerArtifact::Data(data) => {
8301                    ComplexBaseTypeContentDeserializer::store_any_attribute(&mut values, data)?;
8302                    let data = ComplexBaseTypeContentDeserializer::finish_state(
8303                        reader,
8304                        ComplexBaseTypeContentDeserializerState::AnyAttribute(values, None),
8305                    )?;
8306                    *self.state = ComplexBaseTypeContentDeserializerState::Done__(data);
8307                    ElementHandlerOutput::Break { event, allow_any }
8308                }
8309                DeserializerArtifact::Deserializer(deserializer) => {
8310                    *self.state = ComplexBaseTypeContentDeserializerState::AnyAttribute(
8311                        values,
8312                        Some(deserializer),
8313                    );
8314                    ElementHandlerOutput::from_event_end(event, allow_any)
8315                }
8316            })
8317        }
8318        fn handle_assert<'de, R>(
8319            &mut self,
8320            reader: &R,
8321            mut values: Option<super::AssertionType>,
8322            output: DeserializerOutput<'de, super::AssertionType>,
8323            fallback: &mut Option<ComplexBaseTypeContentDeserializerState>,
8324        ) -> Result<ElementHandlerOutput<'de>, Error>
8325        where
8326            R: DeserializeReader,
8327        {
8328            let DeserializerOutput {
8329                artifact,
8330                event,
8331                allow_any,
8332            } = output;
8333            if artifact.is_none() {
8334                *self.state = match fallback.take() {
8335                    None => ComplexBaseTypeContentDeserializerState::Init__,
8336                    Some(ComplexBaseTypeContentDeserializerState::Assert(
8337                        _,
8338                        Some(deserializer),
8339                    )) => {
8340                        ComplexBaseTypeContentDeserializerState::Assert(values, Some(deserializer))
8341                    }
8342                    _ => unreachable!(),
8343                };
8344                return Ok(ElementHandlerOutput::break_(event, allow_any));
8345            }
8346            match fallback.take() {
8347                None => (),
8348                Some(ComplexBaseTypeContentDeserializerState::Assert(_, Some(deserializer))) => {
8349                    let data = deserializer.finish(reader)?;
8350                    ComplexBaseTypeContentDeserializer::store_assert(&mut values, data)?;
8351                }
8352                Some(_) => unreachable!(),
8353            }
8354            Ok(match artifact {
8355                DeserializerArtifact::None => unreachable!(),
8356                DeserializerArtifact::Data(data) => {
8357                    ComplexBaseTypeContentDeserializer::store_assert(&mut values, data)?;
8358                    let data = ComplexBaseTypeContentDeserializer::finish_state(
8359                        reader,
8360                        ComplexBaseTypeContentDeserializerState::Assert(values, None),
8361                    )?;
8362                    *self.state = ComplexBaseTypeContentDeserializerState::Done__(data);
8363                    ElementHandlerOutput::Break { event, allow_any }
8364                }
8365                DeserializerArtifact::Deserializer(deserializer) => {
8366                    *self.state =
8367                        ComplexBaseTypeContentDeserializerState::Assert(values, Some(deserializer));
8368                    ElementHandlerOutput::from_event_end(event, allow_any)
8369                }
8370            })
8371        }
8372    }
8373    impl<'de> Deserializer<'de, super::ComplexBaseTypeContent>
8374        for Box<ComplexBaseTypeContentDeserializer>
8375    {
8376        fn init<R>(
8377            reader: &R,
8378            event: Event<'de>,
8379        ) -> DeserializerResult<'de, super::ComplexBaseTypeContent>
8380        where
8381            R: DeserializeReader,
8382        {
8383            let deserializer = Box::new(ComplexBaseTypeContentDeserializer {
8384                state: Box::new(ComplexBaseTypeContentDeserializerState::Init__),
8385            });
8386            let mut output = deserializer.next(reader, event)?;
8387            output.artifact = match output.artifact {
8388                DeserializerArtifact::Deserializer(x)
8389                    if matches!(&*x.state, ComplexBaseTypeContentDeserializerState::Init__) =>
8390                {
8391                    DeserializerArtifact::None
8392                }
8393                artifact => artifact,
8394            };
8395            Ok(output)
8396        }
8397        fn next<R>(
8398            mut self,
8399            reader: &R,
8400            event: Event<'de>,
8401        ) -> DeserializerResult<'de, super::ComplexBaseTypeContent>
8402        where
8403            R: DeserializeReader,
8404        {
8405            use ComplexBaseTypeContentDeserializerState as S;
8406            let mut event = event;
8407            let mut fallback = None;
8408            let (event, allow_any) = loop {
8409                let state = replace(&mut *self.state, S::Unknown__);
8410                event = match (state, event) {
8411                    (S::Annotation(values, Some(deserializer)), event) => {
8412                        let output = deserializer.next(reader, event)?;
8413                        match self.handle_annotation(reader, values, output, &mut fallback)? {
8414                            ElementHandlerOutput::Break { event, allow_any } => {
8415                                break (event, allow_any)
8416                            }
8417                            ElementHandlerOutput::Continue { event, .. } => event,
8418                        }
8419                    }
8420                    (S::SimpleContent(values, Some(deserializer)), event) => {
8421                        let output = deserializer.next(reader, event)?;
8422                        match self.handle_simple_content(reader, values, output, &mut fallback)? {
8423                            ElementHandlerOutput::Break { event, allow_any } => {
8424                                break (event, allow_any)
8425                            }
8426                            ElementHandlerOutput::Continue { event, .. } => event,
8427                        }
8428                    }
8429                    (S::ComplexContent(values, Some(deserializer)), event) => {
8430                        let output = deserializer.next(reader, event)?;
8431                        match self.handle_complex_content(reader, values, output, &mut fallback)? {
8432                            ElementHandlerOutput::Break { event, allow_any } => {
8433                                break (event, allow_any)
8434                            }
8435                            ElementHandlerOutput::Continue { event, .. } => event,
8436                        }
8437                    }
8438                    (S::OpenContent(values, Some(deserializer)), event) => {
8439                        let output = deserializer.next(reader, event)?;
8440                        match self.handle_open_content(reader, values, output, &mut fallback)? {
8441                            ElementHandlerOutput::Break { event, allow_any } => {
8442                                break (event, allow_any)
8443                            }
8444                            ElementHandlerOutput::Continue { event, .. } => event,
8445                        }
8446                    }
8447                    (S::Group(values, Some(deserializer)), event) => {
8448                        let output = deserializer.next(reader, event)?;
8449                        match self.handle_group(reader, values, output, &mut fallback)? {
8450                            ElementHandlerOutput::Break { event, allow_any } => {
8451                                break (event, allow_any)
8452                            }
8453                            ElementHandlerOutput::Continue { event, .. } => event,
8454                        }
8455                    }
8456                    (S::All(values, Some(deserializer)), event) => {
8457                        let output = deserializer.next(reader, event)?;
8458                        match self.handle_all(reader, values, output, &mut fallback)? {
8459                            ElementHandlerOutput::Break { event, allow_any } => {
8460                                break (event, allow_any)
8461                            }
8462                            ElementHandlerOutput::Continue { event, .. } => event,
8463                        }
8464                    }
8465                    (S::Choice(values, Some(deserializer)), event) => {
8466                        let output = deserializer.next(reader, event)?;
8467                        match self.handle_choice(reader, values, output, &mut fallback)? {
8468                            ElementHandlerOutput::Break { event, allow_any } => {
8469                                break (event, allow_any)
8470                            }
8471                            ElementHandlerOutput::Continue { event, .. } => event,
8472                        }
8473                    }
8474                    (S::Sequence(values, Some(deserializer)), event) => {
8475                        let output = deserializer.next(reader, event)?;
8476                        match self.handle_sequence(reader, values, output, &mut fallback)? {
8477                            ElementHandlerOutput::Break { event, allow_any } => {
8478                                break (event, allow_any)
8479                            }
8480                            ElementHandlerOutput::Continue { event, .. } => event,
8481                        }
8482                    }
8483                    (S::Attribute(values, Some(deserializer)), event) => {
8484                        let output = deserializer.next(reader, event)?;
8485                        match self.handle_attribute(reader, values, output, &mut fallback)? {
8486                            ElementHandlerOutput::Break { event, allow_any } => {
8487                                break (event, allow_any)
8488                            }
8489                            ElementHandlerOutput::Continue { event, .. } => event,
8490                        }
8491                    }
8492                    (S::AttributeGroup(values, Some(deserializer)), event) => {
8493                        let output = deserializer.next(reader, event)?;
8494                        match self.handle_attribute_group(reader, values, output, &mut fallback)? {
8495                            ElementHandlerOutput::Break { event, allow_any } => {
8496                                break (event, allow_any)
8497                            }
8498                            ElementHandlerOutput::Continue { event, .. } => event,
8499                        }
8500                    }
8501                    (S::AnyAttribute(values, Some(deserializer)), event) => {
8502                        let output = deserializer.next(reader, event)?;
8503                        match self.handle_any_attribute(reader, values, output, &mut fallback)? {
8504                            ElementHandlerOutput::Break { event, allow_any } => {
8505                                break (event, allow_any)
8506                            }
8507                            ElementHandlerOutput::Continue { event, .. } => event,
8508                        }
8509                    }
8510                    (S::Assert(values, Some(deserializer)), event) => {
8511                        let output = deserializer.next(reader, event)?;
8512                        match self.handle_assert(reader, values, output, &mut fallback)? {
8513                            ElementHandlerOutput::Break { event, allow_any } => {
8514                                break (event, allow_any)
8515                            }
8516                            ElementHandlerOutput::Continue { event, .. } => event,
8517                        }
8518                    }
8519                    (state, event @ Event::End(_)) => {
8520                        return Ok(DeserializerOutput {
8521                            artifact: DeserializerArtifact::Data(
8522                                ComplexBaseTypeContentDeserializer::finish_state(reader, state)?,
8523                            ),
8524                            event: DeserializerEvent::Continue(event),
8525                            allow_any: false,
8526                        });
8527                    }
8528                    (S::Init__, event) => match self.find_suitable(reader, event, &mut fallback)? {
8529                        ElementHandlerOutput::Break { event, allow_any } => {
8530                            break (event, allow_any)
8531                        }
8532                        ElementHandlerOutput::Continue { event, .. } => event,
8533                    },
8534                    (S::Annotation(values, None), event) => {
8535                        let output = <super::Annotation as WithDeserializer>::Deserializer::init(
8536                            reader, event,
8537                        )?;
8538                        match self.handle_annotation(reader, values, output, &mut fallback)? {
8539                            ElementHandlerOutput::Break { event, allow_any } => {
8540                                break (event, allow_any)
8541                            }
8542                            ElementHandlerOutput::Continue { event, .. } => event,
8543                        }
8544                    }
8545                    (S::SimpleContent(values, None), event) => {
8546                        let output =
8547                            <super::SimpleContent as WithDeserializer>::Deserializer::init(
8548                                reader, event,
8549                            )?;
8550                        match self.handle_simple_content(reader, values, output, &mut fallback)? {
8551                            ElementHandlerOutput::Break { event, allow_any } => {
8552                                break (event, allow_any)
8553                            }
8554                            ElementHandlerOutput::Continue { event, .. } => event,
8555                        }
8556                    }
8557                    (S::ComplexContent(values, None), event) => {
8558                        let output =
8559                            <super::ComplexContent as WithDeserializer>::Deserializer::init(
8560                                reader, event,
8561                            )?;
8562                        match self.handle_complex_content(reader, values, output, &mut fallback)? {
8563                            ElementHandlerOutput::Break { event, allow_any } => {
8564                                break (event, allow_any)
8565                            }
8566                            ElementHandlerOutput::Continue { event, .. } => event,
8567                        }
8568                    }
8569                    (S::OpenContent(values, None), event) => {
8570                        let output = <super::OpenContent as WithDeserializer>::Deserializer::init(
8571                            reader, event,
8572                        )?;
8573                        match self.handle_open_content(reader, values, output, &mut fallback)? {
8574                            ElementHandlerOutput::Break { event, allow_any } => {
8575                                break (event, allow_any)
8576                            }
8577                            ElementHandlerOutput::Continue { event, .. } => event,
8578                        }
8579                    }
8580                    (S::Group(values, None), event) => {
8581                        let output = <super::GroupType as WithDeserializer>::Deserializer::init(
8582                            reader, event,
8583                        )?;
8584                        match self.handle_group(reader, values, output, &mut fallback)? {
8585                            ElementHandlerOutput::Break { event, allow_any } => {
8586                                break (event, allow_any)
8587                            }
8588                            ElementHandlerOutput::Continue { event, .. } => event,
8589                        }
8590                    }
8591                    (S::All(values, None), event) => {
8592                        let output = <super::GroupType as WithDeserializer>::Deserializer::init(
8593                            reader, event,
8594                        )?;
8595                        match self.handle_all(reader, values, output, &mut fallback)? {
8596                            ElementHandlerOutput::Break { event, allow_any } => {
8597                                break (event, allow_any)
8598                            }
8599                            ElementHandlerOutput::Continue { event, .. } => event,
8600                        }
8601                    }
8602                    (S::Choice(values, None), event) => {
8603                        let output = <super::GroupType as WithDeserializer>::Deserializer::init(
8604                            reader, event,
8605                        )?;
8606                        match self.handle_choice(reader, values, output, &mut fallback)? {
8607                            ElementHandlerOutput::Break { event, allow_any } => {
8608                                break (event, allow_any)
8609                            }
8610                            ElementHandlerOutput::Continue { event, .. } => event,
8611                        }
8612                    }
8613                    (S::Sequence(values, None), event) => {
8614                        let output = <super::GroupType as WithDeserializer>::Deserializer::init(
8615                            reader, event,
8616                        )?;
8617                        match self.handle_sequence(reader, values, output, &mut fallback)? {
8618                            ElementHandlerOutput::Break { event, allow_any } => {
8619                                break (event, allow_any)
8620                            }
8621                            ElementHandlerOutput::Continue { event, .. } => event,
8622                        }
8623                    }
8624                    (S::Attribute(values, None), event) => {
8625                        let output =
8626                            <super::AttributeType as WithDeserializer>::Deserializer::init(
8627                                reader, event,
8628                            )?;
8629                        match self.handle_attribute(reader, values, output, &mut fallback)? {
8630                            ElementHandlerOutput::Break { event, allow_any } => {
8631                                break (event, allow_any)
8632                            }
8633                            ElementHandlerOutput::Continue { event, .. } => event,
8634                        }
8635                    }
8636                    (S::AttributeGroup(values, None), event) => {
8637                        let output =
8638                            <super::AttributeGroupType as WithDeserializer>::Deserializer::init(
8639                                reader, event,
8640                            )?;
8641                        match self.handle_attribute_group(reader, values, output, &mut fallback)? {
8642                            ElementHandlerOutput::Break { event, allow_any } => {
8643                                break (event, allow_any)
8644                            }
8645                            ElementHandlerOutput::Continue { event, .. } => event,
8646                        }
8647                    }
8648                    (S::AnyAttribute(values, None), event) => {
8649                        let output = <super::AnyAttribute as WithDeserializer>::Deserializer::init(
8650                            reader, event,
8651                        )?;
8652                        match self.handle_any_attribute(reader, 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::Assert(values, None), event) => {
8660                        let output =
8661                            <super::AssertionType as WithDeserializer>::Deserializer::init(
8662                                reader, event,
8663                            )?;
8664                        match self.handle_assert(reader, values, output, &mut fallback)? {
8665                            ElementHandlerOutput::Break { event, allow_any } => {
8666                                break (event, allow_any)
8667                            }
8668                            ElementHandlerOutput::Continue { event, .. } => event,
8669                        }
8670                    }
8671                    (s @ S::Done__(_), event) => {
8672                        *self.state = s;
8673                        break (DeserializerEvent::Continue(event), false);
8674                    }
8675                    (S::Unknown__, _) => unreachable!(),
8676                }
8677            };
8678            let artifact = if matches!(&*self.state, S::Done__(_)) {
8679                DeserializerArtifact::Data(self.finish(reader)?)
8680            } else {
8681                DeserializerArtifact::Deserializer(self)
8682            };
8683            Ok(DeserializerOutput {
8684                artifact,
8685                event,
8686                allow_any,
8687            })
8688        }
8689        fn finish<R>(self, reader: &R) -> Result<super::ComplexBaseTypeContent, Error>
8690        where
8691            R: DeserializeReader,
8692        {
8693            ComplexBaseTypeContentDeserializer::finish_state(reader, *self.state)
8694        }
8695    }
8696    #[derive(Debug)]
8697    pub struct GroupTypeDeserializer {
8698        id: Option<String>,
8699        name: Option<String>,
8700        ref_: Option<super::QName>,
8701        min_occurs: usize,
8702        max_occurs: super::MaxOccurs,
8703        content: Vec<super::GroupTypeContent>,
8704        state: Box<GroupTypeDeserializerState>,
8705    }
8706    #[derive(Debug)]
8707    enum GroupTypeDeserializerState {
8708        Init__,
8709        Next__,
8710        Content__(<super::GroupTypeContent as WithDeserializer>::Deserializer),
8711        Unknown__,
8712    }
8713    impl GroupTypeDeserializer {
8714        fn from_bytes_start<R>(reader: &R, bytes_start: &BytesStart<'_>) -> Result<Box<Self>, Error>
8715        where
8716            R: DeserializeReader,
8717        {
8718            let mut id: Option<String> = None;
8719            let mut name: Option<String> = None;
8720            let mut ref_: Option<super::QName> = None;
8721            let mut min_occurs: Option<usize> = None;
8722            let mut max_occurs: Option<super::MaxOccurs> = None;
8723            for attrib in filter_xmlns_attributes(bytes_start) {
8724                let attrib = attrib?;
8725                if matches!(
8726                    reader.resolve_local_name(attrib.key, &super::NS_XS),
8727                    Some(b"id")
8728                ) {
8729                    reader.read_attrib(&mut id, b"id", &attrib.value)?;
8730                } else if matches!(
8731                    reader.resolve_local_name(attrib.key, &super::NS_XS),
8732                    Some(b"name")
8733                ) {
8734                    reader.read_attrib(&mut name, b"name", &attrib.value)?;
8735                } else if matches!(
8736                    reader.resolve_local_name(attrib.key, &super::NS_XS),
8737                    Some(b"ref")
8738                ) {
8739                    reader.read_attrib(&mut ref_, b"ref", &attrib.value)?;
8740                } else if matches!(
8741                    reader.resolve_local_name(attrib.key, &super::NS_XS),
8742                    Some(b"minOccurs")
8743                ) {
8744                    reader.read_attrib(&mut min_occurs, b"minOccurs", &attrib.value)?;
8745                } else if matches!(
8746                    reader.resolve_local_name(attrib.key, &super::NS_XS),
8747                    Some(b"maxOccurs")
8748                ) {
8749                    reader.read_attrib(&mut max_occurs, b"maxOccurs", &attrib.value)?;
8750                }
8751            }
8752            Ok(Box::new(Self {
8753                id: id,
8754                name: name,
8755                ref_: ref_,
8756                min_occurs: min_occurs.unwrap_or_else(super::GroupType::default_min_occurs),
8757                max_occurs: max_occurs.unwrap_or_else(super::GroupType::default_max_occurs),
8758                content: Vec::new(),
8759                state: Box::new(GroupTypeDeserializerState::Init__),
8760            }))
8761        }
8762        fn finish_state<R>(
8763            &mut self,
8764            reader: &R,
8765            state: GroupTypeDeserializerState,
8766        ) -> Result<(), Error>
8767        where
8768            R: DeserializeReader,
8769        {
8770            if let GroupTypeDeserializerState::Content__(deserializer) = state {
8771                self.store_content(deserializer.finish(reader)?)?;
8772            }
8773            Ok(())
8774        }
8775        fn store_content(&mut self, value: super::GroupTypeContent) -> Result<(), Error> {
8776            self.content.push(value);
8777            Ok(())
8778        }
8779        fn handle_content<'de, R>(
8780            &mut self,
8781            reader: &R,
8782            output: DeserializerOutput<'de, super::GroupTypeContent>,
8783            fallback: &mut Option<GroupTypeDeserializerState>,
8784        ) -> Result<ElementHandlerOutput<'de>, Error>
8785        where
8786            R: DeserializeReader,
8787        {
8788            let DeserializerOutput {
8789                artifact,
8790                event,
8791                allow_any,
8792            } = output;
8793            if artifact.is_none() {
8794                *self.state = fallback
8795                    .take()
8796                    .unwrap_or(GroupTypeDeserializerState::Next__);
8797                return Ok(ElementHandlerOutput::break_(event, allow_any));
8798            }
8799            if let Some(fallback) = fallback.take() {
8800                self.finish_state(reader, fallback)?;
8801            }
8802            Ok(match artifact {
8803                DeserializerArtifact::None => unreachable!(),
8804                DeserializerArtifact::Data(data) => {
8805                    self.store_content(data)?;
8806                    *self.state = GroupTypeDeserializerState::Next__;
8807                    ElementHandlerOutput::from_event(event, allow_any)
8808                }
8809                DeserializerArtifact::Deserializer(deserializer) => {
8810                    let ret = ElementHandlerOutput::from_event(event, allow_any);
8811                    match &ret {
8812                        ElementHandlerOutput::Break { .. } => {
8813                            *self.state = GroupTypeDeserializerState::Content__(deserializer);
8814                        }
8815                        ElementHandlerOutput::Continue { .. } => {
8816                            fallback
8817                                .get_or_insert(GroupTypeDeserializerState::Content__(deserializer));
8818                            *self.state = GroupTypeDeserializerState::Next__;
8819                        }
8820                    }
8821                    ret
8822                }
8823            })
8824        }
8825    }
8826    impl<'de> Deserializer<'de, super::GroupType> for Box<GroupTypeDeserializer> {
8827        fn init<R>(reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::GroupType>
8828        where
8829            R: DeserializeReader,
8830        {
8831            reader
8832                .init_deserializer_from_start_event(event, GroupTypeDeserializer::from_bytes_start)
8833        }
8834        fn next<R>(
8835            mut self,
8836            reader: &R,
8837            event: Event<'de>,
8838        ) -> DeserializerResult<'de, super::GroupType>
8839        where
8840            R: DeserializeReader,
8841        {
8842            use GroupTypeDeserializerState as S;
8843            let mut event = event;
8844            let mut fallback = None;
8845            let (event, allow_any) = loop {
8846                let state = replace(&mut *self.state, S::Unknown__);
8847                event = match (state, event) {
8848                    (S::Content__(deserializer), event) => {
8849                        let output = deserializer.next(reader, event)?;
8850                        match self.handle_content(reader, output, &mut fallback)? {
8851                            ElementHandlerOutput::Break { event, allow_any } => {
8852                                break (event, allow_any)
8853                            }
8854                            ElementHandlerOutput::Continue { event, .. } => event,
8855                        }
8856                    }
8857                    (_, Event::End(_)) => {
8858                        return Ok(DeserializerOutput {
8859                            artifact: DeserializerArtifact::Data(self.finish(reader)?),
8860                            event: DeserializerEvent::None,
8861                            allow_any: false,
8862                        });
8863                    }
8864                    (state @ (S::Init__ | S::Next__), event) => {
8865                        fallback.get_or_insert(state);
8866                        let output =
8867                            <super::GroupTypeContent as WithDeserializer>::Deserializer::init(
8868                                reader, event,
8869                            )?;
8870                        match self.handle_content(reader, output, &mut fallback)? {
8871                            ElementHandlerOutput::Break { event, allow_any } => {
8872                                break (event, allow_any)
8873                            }
8874                            ElementHandlerOutput::Continue { event, .. } => event,
8875                        }
8876                    }
8877                    (S::Unknown__, _) => unreachable!(),
8878                }
8879            };
8880            let artifact = DeserializerArtifact::Deserializer(self);
8881            Ok(DeserializerOutput {
8882                artifact,
8883                event,
8884                allow_any,
8885            })
8886        }
8887        fn finish<R>(mut self, reader: &R) -> Result<super::GroupType, Error>
8888        where
8889            R: DeserializeReader,
8890        {
8891            let state = replace(&mut *self.state, GroupTypeDeserializerState::Unknown__);
8892            self.finish_state(reader, state)?;
8893            Ok(super::GroupType {
8894                id: self.id,
8895                name: self.name,
8896                ref_: self.ref_,
8897                min_occurs: self.min_occurs,
8898                max_occurs: self.max_occurs,
8899                content: self.content,
8900            })
8901        }
8902    }
8903    #[derive(Debug)]
8904    pub struct GroupTypeContentDeserializer {
8905        state: Box<GroupTypeContentDeserializerState>,
8906    }
8907    #[derive(Debug)]
8908    pub enum GroupTypeContentDeserializerState {
8909        Init__,
8910        Annotation(
8911            Option<super::Annotation>,
8912            Option<<super::Annotation as WithDeserializer>::Deserializer>,
8913        ),
8914        Element(
8915            Option<super::ElementType>,
8916            Option<<super::ElementType as WithDeserializer>::Deserializer>,
8917        ),
8918        Group(
8919            Option<super::GroupType>,
8920            Option<<super::GroupType as WithDeserializer>::Deserializer>,
8921        ),
8922        All(
8923            Option<super::GroupType>,
8924            Option<<super::GroupType as WithDeserializer>::Deserializer>,
8925        ),
8926        Choice(
8927            Option<super::GroupType>,
8928            Option<<super::GroupType as WithDeserializer>::Deserializer>,
8929        ),
8930        Sequence(
8931            Option<super::GroupType>,
8932            Option<<super::GroupType as WithDeserializer>::Deserializer>,
8933        ),
8934        Any(
8935            Option<super::Any>,
8936            Option<<super::Any as WithDeserializer>::Deserializer>,
8937        ),
8938        Done__(super::GroupTypeContent),
8939        Unknown__,
8940    }
8941    impl GroupTypeContentDeserializer {
8942        fn find_suitable<'de, R>(
8943            &mut self,
8944            reader: &R,
8945            event: Event<'de>,
8946            fallback: &mut Option<GroupTypeContentDeserializerState>,
8947        ) -> Result<ElementHandlerOutput<'de>, Error>
8948        where
8949            R: DeserializeReader,
8950        {
8951            let (Event::Start(x) | Event::Empty(x)) = &event else {
8952                *self.state = fallback
8953                    .take()
8954                    .unwrap_or(GroupTypeContentDeserializerState::Init__);
8955                return Ok(ElementHandlerOutput::return_to_parent(event, false));
8956            };
8957            if matches!(
8958                reader.resolve_local_name(x.name(), &super::NS_XS),
8959                Some(b"annotation")
8960            ) {
8961                let output =
8962                    <super::Annotation as WithDeserializer>::Deserializer::init(reader, event)?;
8963                return self.handle_annotation(reader, Default::default(), output, &mut *fallback);
8964            }
8965            if matches!(
8966                reader.resolve_local_name(x.name(), &super::NS_XS),
8967                Some(b"element")
8968            ) {
8969                let output =
8970                    <super::ElementType as WithDeserializer>::Deserializer::init(reader, event)?;
8971                return self.handle_element(reader, Default::default(), output, &mut *fallback);
8972            }
8973            if matches!(
8974                reader.resolve_local_name(x.name(), &super::NS_XS),
8975                Some(b"group")
8976            ) {
8977                let output =
8978                    <super::GroupType as WithDeserializer>::Deserializer::init(reader, event)?;
8979                return self.handle_group(reader, Default::default(), output, &mut *fallback);
8980            }
8981            if matches!(
8982                reader.resolve_local_name(x.name(), &super::NS_XS),
8983                Some(b"all")
8984            ) {
8985                let output =
8986                    <super::GroupType as WithDeserializer>::Deserializer::init(reader, event)?;
8987                return self.handle_all(reader, Default::default(), output, &mut *fallback);
8988            }
8989            if matches!(
8990                reader.resolve_local_name(x.name(), &super::NS_XS),
8991                Some(b"choice")
8992            ) {
8993                let output =
8994                    <super::GroupType as WithDeserializer>::Deserializer::init(reader, event)?;
8995                return self.handle_choice(reader, Default::default(), output, &mut *fallback);
8996            }
8997            if matches!(
8998                reader.resolve_local_name(x.name(), &super::NS_XS),
8999                Some(b"sequence")
9000            ) {
9001                let output =
9002                    <super::GroupType as WithDeserializer>::Deserializer::init(reader, event)?;
9003                return self.handle_sequence(reader, Default::default(), output, &mut *fallback);
9004            }
9005            if matches!(
9006                reader.resolve_local_name(x.name(), &super::NS_XS),
9007                Some(b"any")
9008            ) {
9009                let output = <super::Any as WithDeserializer>::Deserializer::init(reader, event)?;
9010                return self.handle_any(reader, Default::default(), output, &mut *fallback);
9011            }
9012            *self.state = fallback
9013                .take()
9014                .unwrap_or(GroupTypeContentDeserializerState::Init__);
9015            Ok(ElementHandlerOutput::return_to_parent(event, false))
9016        }
9017        fn finish_state<R>(
9018            reader: &R,
9019            state: GroupTypeContentDeserializerState,
9020        ) -> Result<super::GroupTypeContent, Error>
9021        where
9022            R: DeserializeReader,
9023        {
9024            use GroupTypeContentDeserializerState as S;
9025            match state {
9026                S::Init__ => Err(ErrorKind::MissingContent.into()),
9027                S::Annotation(mut values, deserializer) => {
9028                    if let Some(deserializer) = deserializer {
9029                        let value = deserializer.finish(reader)?;
9030                        GroupTypeContentDeserializer::store_annotation(&mut values, value)?;
9031                    }
9032                    Ok(super::GroupTypeContent::Annotation(values.ok_or_else(
9033                        || ErrorKind::MissingElement("annotation".into()),
9034                    )?))
9035                }
9036                S::Element(mut values, deserializer) => {
9037                    if let Some(deserializer) = deserializer {
9038                        let value = deserializer.finish(reader)?;
9039                        GroupTypeContentDeserializer::store_element(&mut values, value)?;
9040                    }
9041                    Ok(super::GroupTypeContent::Element(values.ok_or_else(
9042                        || ErrorKind::MissingElement("element".into()),
9043                    )?))
9044                }
9045                S::Group(mut values, deserializer) => {
9046                    if let Some(deserializer) = deserializer {
9047                        let value = deserializer.finish(reader)?;
9048                        GroupTypeContentDeserializer::store_group(&mut values, value)?;
9049                    }
9050                    Ok(super::GroupTypeContent::Group(values.ok_or_else(|| {
9051                        ErrorKind::MissingElement("group".into())
9052                    })?))
9053                }
9054                S::All(mut values, deserializer) => {
9055                    if let Some(deserializer) = deserializer {
9056                        let value = deserializer.finish(reader)?;
9057                        GroupTypeContentDeserializer::store_all(&mut values, value)?;
9058                    }
9059                    Ok(super::GroupTypeContent::All(
9060                        values.ok_or_else(|| ErrorKind::MissingElement("all".into()))?,
9061                    ))
9062                }
9063                S::Choice(mut values, deserializer) => {
9064                    if let Some(deserializer) = deserializer {
9065                        let value = deserializer.finish(reader)?;
9066                        GroupTypeContentDeserializer::store_choice(&mut values, value)?;
9067                    }
9068                    Ok(super::GroupTypeContent::Choice(values.ok_or_else(
9069                        || ErrorKind::MissingElement("choice".into()),
9070                    )?))
9071                }
9072                S::Sequence(mut values, deserializer) => {
9073                    if let Some(deserializer) = deserializer {
9074                        let value = deserializer.finish(reader)?;
9075                        GroupTypeContentDeserializer::store_sequence(&mut values, value)?;
9076                    }
9077                    Ok(super::GroupTypeContent::Sequence(values.ok_or_else(
9078                        || ErrorKind::MissingElement("sequence".into()),
9079                    )?))
9080                }
9081                S::Any(mut values, deserializer) => {
9082                    if let Some(deserializer) = deserializer {
9083                        let value = deserializer.finish(reader)?;
9084                        GroupTypeContentDeserializer::store_any(&mut values, value)?;
9085                    }
9086                    Ok(super::GroupTypeContent::Any(
9087                        values.ok_or_else(|| ErrorKind::MissingElement("any".into()))?,
9088                    ))
9089                }
9090                S::Done__(data) => Ok(data),
9091                S::Unknown__ => unreachable!(),
9092            }
9093        }
9094        fn store_annotation(
9095            values: &mut Option<super::Annotation>,
9096            value: super::Annotation,
9097        ) -> Result<(), Error> {
9098            if values.is_some() {
9099                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
9100                    b"annotation",
9101                )))?;
9102            }
9103            *values = Some(value);
9104            Ok(())
9105        }
9106        fn store_element(
9107            values: &mut Option<super::ElementType>,
9108            value: super::ElementType,
9109        ) -> Result<(), Error> {
9110            if values.is_some() {
9111                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
9112                    b"element",
9113                )))?;
9114            }
9115            *values = Some(value);
9116            Ok(())
9117        }
9118        fn store_group(
9119            values: &mut Option<super::GroupType>,
9120            value: super::GroupType,
9121        ) -> Result<(), Error> {
9122            if values.is_some() {
9123                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
9124                    b"group",
9125                )))?;
9126            }
9127            *values = Some(value);
9128            Ok(())
9129        }
9130        fn store_all(
9131            values: &mut Option<super::GroupType>,
9132            value: super::GroupType,
9133        ) -> Result<(), Error> {
9134            if values.is_some() {
9135                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(b"all")))?;
9136            }
9137            *values = Some(value);
9138            Ok(())
9139        }
9140        fn store_choice(
9141            values: &mut Option<super::GroupType>,
9142            value: super::GroupType,
9143        ) -> Result<(), Error> {
9144            if values.is_some() {
9145                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
9146                    b"choice",
9147                )))?;
9148            }
9149            *values = Some(value);
9150            Ok(())
9151        }
9152        fn store_sequence(
9153            values: &mut Option<super::GroupType>,
9154            value: super::GroupType,
9155        ) -> Result<(), Error> {
9156            if values.is_some() {
9157                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
9158                    b"sequence",
9159                )))?;
9160            }
9161            *values = Some(value);
9162            Ok(())
9163        }
9164        fn store_any(values: &mut Option<super::Any>, value: super::Any) -> Result<(), Error> {
9165            if values.is_some() {
9166                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(b"any")))?;
9167            }
9168            *values = Some(value);
9169            Ok(())
9170        }
9171        fn handle_annotation<'de, R>(
9172            &mut self,
9173            reader: &R,
9174            mut values: Option<super::Annotation>,
9175            output: DeserializerOutput<'de, super::Annotation>,
9176            fallback: &mut Option<GroupTypeContentDeserializerState>,
9177        ) -> Result<ElementHandlerOutput<'de>, Error>
9178        where
9179            R: DeserializeReader,
9180        {
9181            let DeserializerOutput {
9182                artifact,
9183                event,
9184                allow_any,
9185            } = output;
9186            if artifact.is_none() {
9187                *self.state = match fallback.take() {
9188                    None => GroupTypeContentDeserializerState::Init__,
9189                    Some(GroupTypeContentDeserializerState::Annotation(_, Some(deserializer))) => {
9190                        GroupTypeContentDeserializerState::Annotation(values, Some(deserializer))
9191                    }
9192                    _ => unreachable!(),
9193                };
9194                return Ok(ElementHandlerOutput::break_(event, allow_any));
9195            }
9196            match fallback.take() {
9197                None => (),
9198                Some(GroupTypeContentDeserializerState::Annotation(_, Some(deserializer))) => {
9199                    let data = deserializer.finish(reader)?;
9200                    GroupTypeContentDeserializer::store_annotation(&mut values, data)?;
9201                }
9202                Some(_) => unreachable!(),
9203            }
9204            Ok(match artifact {
9205                DeserializerArtifact::None => unreachable!(),
9206                DeserializerArtifact::Data(data) => {
9207                    GroupTypeContentDeserializer::store_annotation(&mut values, data)?;
9208                    let data = GroupTypeContentDeserializer::finish_state(
9209                        reader,
9210                        GroupTypeContentDeserializerState::Annotation(values, None),
9211                    )?;
9212                    *self.state = GroupTypeContentDeserializerState::Done__(data);
9213                    ElementHandlerOutput::Break { event, allow_any }
9214                }
9215                DeserializerArtifact::Deserializer(deserializer) => {
9216                    *self.state =
9217                        GroupTypeContentDeserializerState::Annotation(values, Some(deserializer));
9218                    ElementHandlerOutput::from_event_end(event, allow_any)
9219                }
9220            })
9221        }
9222        fn handle_element<'de, R>(
9223            &mut self,
9224            reader: &R,
9225            mut values: Option<super::ElementType>,
9226            output: DeserializerOutput<'de, super::ElementType>,
9227            fallback: &mut Option<GroupTypeContentDeserializerState>,
9228        ) -> Result<ElementHandlerOutput<'de>, Error>
9229        where
9230            R: DeserializeReader,
9231        {
9232            let DeserializerOutput {
9233                artifact,
9234                event,
9235                allow_any,
9236            } = output;
9237            if artifact.is_none() {
9238                *self.state = match fallback.take() {
9239                    None => GroupTypeContentDeserializerState::Init__,
9240                    Some(GroupTypeContentDeserializerState::Element(_, Some(deserializer))) => {
9241                        GroupTypeContentDeserializerState::Element(values, Some(deserializer))
9242                    }
9243                    _ => unreachable!(),
9244                };
9245                return Ok(ElementHandlerOutput::break_(event, allow_any));
9246            }
9247            match fallback.take() {
9248                None => (),
9249                Some(GroupTypeContentDeserializerState::Element(_, Some(deserializer))) => {
9250                    let data = deserializer.finish(reader)?;
9251                    GroupTypeContentDeserializer::store_element(&mut values, data)?;
9252                }
9253                Some(_) => unreachable!(),
9254            }
9255            Ok(match artifact {
9256                DeserializerArtifact::None => unreachable!(),
9257                DeserializerArtifact::Data(data) => {
9258                    GroupTypeContentDeserializer::store_element(&mut values, data)?;
9259                    let data = GroupTypeContentDeserializer::finish_state(
9260                        reader,
9261                        GroupTypeContentDeserializerState::Element(values, None),
9262                    )?;
9263                    *self.state = GroupTypeContentDeserializerState::Done__(data);
9264                    ElementHandlerOutput::Break { event, allow_any }
9265                }
9266                DeserializerArtifact::Deserializer(deserializer) => {
9267                    *self.state =
9268                        GroupTypeContentDeserializerState::Element(values, Some(deserializer));
9269                    ElementHandlerOutput::from_event_end(event, allow_any)
9270                }
9271            })
9272        }
9273        fn handle_group<'de, R>(
9274            &mut self,
9275            reader: &R,
9276            mut values: Option<super::GroupType>,
9277            output: DeserializerOutput<'de, super::GroupType>,
9278            fallback: &mut Option<GroupTypeContentDeserializerState>,
9279        ) -> Result<ElementHandlerOutput<'de>, Error>
9280        where
9281            R: DeserializeReader,
9282        {
9283            let DeserializerOutput {
9284                artifact,
9285                event,
9286                allow_any,
9287            } = output;
9288            if artifact.is_none() {
9289                *self.state = match fallback.take() {
9290                    None => GroupTypeContentDeserializerState::Init__,
9291                    Some(GroupTypeContentDeserializerState::Group(_, Some(deserializer))) => {
9292                        GroupTypeContentDeserializerState::Group(values, Some(deserializer))
9293                    }
9294                    _ => unreachable!(),
9295                };
9296                return Ok(ElementHandlerOutput::break_(event, allow_any));
9297            }
9298            match fallback.take() {
9299                None => (),
9300                Some(GroupTypeContentDeserializerState::Group(_, Some(deserializer))) => {
9301                    let data = deserializer.finish(reader)?;
9302                    GroupTypeContentDeserializer::store_group(&mut values, data)?;
9303                }
9304                Some(_) => unreachable!(),
9305            }
9306            Ok(match artifact {
9307                DeserializerArtifact::None => unreachable!(),
9308                DeserializerArtifact::Data(data) => {
9309                    GroupTypeContentDeserializer::store_group(&mut values, data)?;
9310                    let data = GroupTypeContentDeserializer::finish_state(
9311                        reader,
9312                        GroupTypeContentDeserializerState::Group(values, None),
9313                    )?;
9314                    *self.state = GroupTypeContentDeserializerState::Done__(data);
9315                    ElementHandlerOutput::Break { event, allow_any }
9316                }
9317                DeserializerArtifact::Deserializer(deserializer) => {
9318                    *self.state =
9319                        GroupTypeContentDeserializerState::Group(values, Some(deserializer));
9320                    ElementHandlerOutput::from_event_end(event, allow_any)
9321                }
9322            })
9323        }
9324        fn handle_all<'de, R>(
9325            &mut self,
9326            reader: &R,
9327            mut values: Option<super::GroupType>,
9328            output: DeserializerOutput<'de, super::GroupType>,
9329            fallback: &mut Option<GroupTypeContentDeserializerState>,
9330        ) -> Result<ElementHandlerOutput<'de>, Error>
9331        where
9332            R: DeserializeReader,
9333        {
9334            let DeserializerOutput {
9335                artifact,
9336                event,
9337                allow_any,
9338            } = output;
9339            if artifact.is_none() {
9340                *self.state = match fallback.take() {
9341                    None => GroupTypeContentDeserializerState::Init__,
9342                    Some(GroupTypeContentDeserializerState::All(_, Some(deserializer))) => {
9343                        GroupTypeContentDeserializerState::All(values, Some(deserializer))
9344                    }
9345                    _ => unreachable!(),
9346                };
9347                return Ok(ElementHandlerOutput::break_(event, allow_any));
9348            }
9349            match fallback.take() {
9350                None => (),
9351                Some(GroupTypeContentDeserializerState::All(_, Some(deserializer))) => {
9352                    let data = deserializer.finish(reader)?;
9353                    GroupTypeContentDeserializer::store_all(&mut values, data)?;
9354                }
9355                Some(_) => unreachable!(),
9356            }
9357            Ok(match artifact {
9358                DeserializerArtifact::None => unreachable!(),
9359                DeserializerArtifact::Data(data) => {
9360                    GroupTypeContentDeserializer::store_all(&mut values, data)?;
9361                    let data = GroupTypeContentDeserializer::finish_state(
9362                        reader,
9363                        GroupTypeContentDeserializerState::All(values, None),
9364                    )?;
9365                    *self.state = GroupTypeContentDeserializerState::Done__(data);
9366                    ElementHandlerOutput::Break { event, allow_any }
9367                }
9368                DeserializerArtifact::Deserializer(deserializer) => {
9369                    *self.state =
9370                        GroupTypeContentDeserializerState::All(values, Some(deserializer));
9371                    ElementHandlerOutput::from_event_end(event, allow_any)
9372                }
9373            })
9374        }
9375        fn handle_choice<'de, R>(
9376            &mut self,
9377            reader: &R,
9378            mut values: Option<super::GroupType>,
9379            output: DeserializerOutput<'de, super::GroupType>,
9380            fallback: &mut Option<GroupTypeContentDeserializerState>,
9381        ) -> Result<ElementHandlerOutput<'de>, Error>
9382        where
9383            R: DeserializeReader,
9384        {
9385            let DeserializerOutput {
9386                artifact,
9387                event,
9388                allow_any,
9389            } = output;
9390            if artifact.is_none() {
9391                *self.state = match fallback.take() {
9392                    None => GroupTypeContentDeserializerState::Init__,
9393                    Some(GroupTypeContentDeserializerState::Choice(_, Some(deserializer))) => {
9394                        GroupTypeContentDeserializerState::Choice(values, Some(deserializer))
9395                    }
9396                    _ => unreachable!(),
9397                };
9398                return Ok(ElementHandlerOutput::break_(event, allow_any));
9399            }
9400            match fallback.take() {
9401                None => (),
9402                Some(GroupTypeContentDeserializerState::Choice(_, Some(deserializer))) => {
9403                    let data = deserializer.finish(reader)?;
9404                    GroupTypeContentDeserializer::store_choice(&mut values, data)?;
9405                }
9406                Some(_) => unreachable!(),
9407            }
9408            Ok(match artifact {
9409                DeserializerArtifact::None => unreachable!(),
9410                DeserializerArtifact::Data(data) => {
9411                    GroupTypeContentDeserializer::store_choice(&mut values, data)?;
9412                    let data = GroupTypeContentDeserializer::finish_state(
9413                        reader,
9414                        GroupTypeContentDeserializerState::Choice(values, None),
9415                    )?;
9416                    *self.state = GroupTypeContentDeserializerState::Done__(data);
9417                    ElementHandlerOutput::Break { event, allow_any }
9418                }
9419                DeserializerArtifact::Deserializer(deserializer) => {
9420                    *self.state =
9421                        GroupTypeContentDeserializerState::Choice(values, Some(deserializer));
9422                    ElementHandlerOutput::from_event_end(event, allow_any)
9423                }
9424            })
9425        }
9426        fn handle_sequence<'de, R>(
9427            &mut self,
9428            reader: &R,
9429            mut values: Option<super::GroupType>,
9430            output: DeserializerOutput<'de, super::GroupType>,
9431            fallback: &mut Option<GroupTypeContentDeserializerState>,
9432        ) -> Result<ElementHandlerOutput<'de>, Error>
9433        where
9434            R: DeserializeReader,
9435        {
9436            let DeserializerOutput {
9437                artifact,
9438                event,
9439                allow_any,
9440            } = output;
9441            if artifact.is_none() {
9442                *self.state = match fallback.take() {
9443                    None => GroupTypeContentDeserializerState::Init__,
9444                    Some(GroupTypeContentDeserializerState::Sequence(_, Some(deserializer))) => {
9445                        GroupTypeContentDeserializerState::Sequence(values, Some(deserializer))
9446                    }
9447                    _ => unreachable!(),
9448                };
9449                return Ok(ElementHandlerOutput::break_(event, allow_any));
9450            }
9451            match fallback.take() {
9452                None => (),
9453                Some(GroupTypeContentDeserializerState::Sequence(_, Some(deserializer))) => {
9454                    let data = deserializer.finish(reader)?;
9455                    GroupTypeContentDeserializer::store_sequence(&mut values, data)?;
9456                }
9457                Some(_) => unreachable!(),
9458            }
9459            Ok(match artifact {
9460                DeserializerArtifact::None => unreachable!(),
9461                DeserializerArtifact::Data(data) => {
9462                    GroupTypeContentDeserializer::store_sequence(&mut values, data)?;
9463                    let data = GroupTypeContentDeserializer::finish_state(
9464                        reader,
9465                        GroupTypeContentDeserializerState::Sequence(values, None),
9466                    )?;
9467                    *self.state = GroupTypeContentDeserializerState::Done__(data);
9468                    ElementHandlerOutput::Break { event, allow_any }
9469                }
9470                DeserializerArtifact::Deserializer(deserializer) => {
9471                    *self.state =
9472                        GroupTypeContentDeserializerState::Sequence(values, Some(deserializer));
9473                    ElementHandlerOutput::from_event_end(event, allow_any)
9474                }
9475            })
9476        }
9477        fn handle_any<'de, R>(
9478            &mut self,
9479            reader: &R,
9480            mut values: Option<super::Any>,
9481            output: DeserializerOutput<'de, super::Any>,
9482            fallback: &mut Option<GroupTypeContentDeserializerState>,
9483        ) -> Result<ElementHandlerOutput<'de>, Error>
9484        where
9485            R: DeserializeReader,
9486        {
9487            let DeserializerOutput {
9488                artifact,
9489                event,
9490                allow_any,
9491            } = output;
9492            if artifact.is_none() {
9493                *self.state = match fallback.take() {
9494                    None => GroupTypeContentDeserializerState::Init__,
9495                    Some(GroupTypeContentDeserializerState::Any(_, Some(deserializer))) => {
9496                        GroupTypeContentDeserializerState::Any(values, Some(deserializer))
9497                    }
9498                    _ => unreachable!(),
9499                };
9500                return Ok(ElementHandlerOutput::break_(event, allow_any));
9501            }
9502            match fallback.take() {
9503                None => (),
9504                Some(GroupTypeContentDeserializerState::Any(_, Some(deserializer))) => {
9505                    let data = deserializer.finish(reader)?;
9506                    GroupTypeContentDeserializer::store_any(&mut values, data)?;
9507                }
9508                Some(_) => unreachable!(),
9509            }
9510            Ok(match artifact {
9511                DeserializerArtifact::None => unreachable!(),
9512                DeserializerArtifact::Data(data) => {
9513                    GroupTypeContentDeserializer::store_any(&mut values, data)?;
9514                    let data = GroupTypeContentDeserializer::finish_state(
9515                        reader,
9516                        GroupTypeContentDeserializerState::Any(values, None),
9517                    )?;
9518                    *self.state = GroupTypeContentDeserializerState::Done__(data);
9519                    ElementHandlerOutput::Break { event, allow_any }
9520                }
9521                DeserializerArtifact::Deserializer(deserializer) => {
9522                    *self.state =
9523                        GroupTypeContentDeserializerState::Any(values, Some(deserializer));
9524                    ElementHandlerOutput::from_event_end(event, allow_any)
9525                }
9526            })
9527        }
9528    }
9529    impl<'de> Deserializer<'de, super::GroupTypeContent> for Box<GroupTypeContentDeserializer> {
9530        fn init<R>(
9531            reader: &R,
9532            event: Event<'de>,
9533        ) -> DeserializerResult<'de, super::GroupTypeContent>
9534        where
9535            R: DeserializeReader,
9536        {
9537            let deserializer = Box::new(GroupTypeContentDeserializer {
9538                state: Box::new(GroupTypeContentDeserializerState::Init__),
9539            });
9540            let mut output = deserializer.next(reader, event)?;
9541            output.artifact = match output.artifact {
9542                DeserializerArtifact::Deserializer(x)
9543                    if matches!(&*x.state, GroupTypeContentDeserializerState::Init__) =>
9544                {
9545                    DeserializerArtifact::None
9546                }
9547                artifact => artifact,
9548            };
9549            Ok(output)
9550        }
9551        fn next<R>(
9552            mut self,
9553            reader: &R,
9554            event: Event<'de>,
9555        ) -> DeserializerResult<'de, super::GroupTypeContent>
9556        where
9557            R: DeserializeReader,
9558        {
9559            use GroupTypeContentDeserializerState as S;
9560            let mut event = event;
9561            let mut fallback = None;
9562            let (event, allow_any) = loop {
9563                let state = replace(&mut *self.state, S::Unknown__);
9564                event = match (state, event) {
9565                    (S::Annotation(values, Some(deserializer)), event) => {
9566                        let output = deserializer.next(reader, event)?;
9567                        match self.handle_annotation(reader, values, output, &mut fallback)? {
9568                            ElementHandlerOutput::Break { event, allow_any } => {
9569                                break (event, allow_any)
9570                            }
9571                            ElementHandlerOutput::Continue { event, .. } => event,
9572                        }
9573                    }
9574                    (S::Element(values, Some(deserializer)), event) => {
9575                        let output = deserializer.next(reader, event)?;
9576                        match self.handle_element(reader, values, output, &mut fallback)? {
9577                            ElementHandlerOutput::Break { event, allow_any } => {
9578                                break (event, allow_any)
9579                            }
9580                            ElementHandlerOutput::Continue { event, .. } => event,
9581                        }
9582                    }
9583                    (S::Group(values, Some(deserializer)), event) => {
9584                        let output = deserializer.next(reader, event)?;
9585                        match self.handle_group(reader, values, output, &mut fallback)? {
9586                            ElementHandlerOutput::Break { event, allow_any } => {
9587                                break (event, allow_any)
9588                            }
9589                            ElementHandlerOutput::Continue { event, .. } => event,
9590                        }
9591                    }
9592                    (S::All(values, Some(deserializer)), event) => {
9593                        let output = deserializer.next(reader, event)?;
9594                        match self.handle_all(reader, values, output, &mut fallback)? {
9595                            ElementHandlerOutput::Break { event, allow_any } => {
9596                                break (event, allow_any)
9597                            }
9598                            ElementHandlerOutput::Continue { event, .. } => event,
9599                        }
9600                    }
9601                    (S::Choice(values, Some(deserializer)), event) => {
9602                        let output = deserializer.next(reader, event)?;
9603                        match self.handle_choice(reader, values, output, &mut fallback)? {
9604                            ElementHandlerOutput::Break { event, allow_any } => {
9605                                break (event, allow_any)
9606                            }
9607                            ElementHandlerOutput::Continue { event, .. } => event,
9608                        }
9609                    }
9610                    (S::Sequence(values, Some(deserializer)), event) => {
9611                        let output = deserializer.next(reader, event)?;
9612                        match self.handle_sequence(reader, values, output, &mut fallback)? {
9613                            ElementHandlerOutput::Break { event, allow_any } => {
9614                                break (event, allow_any)
9615                            }
9616                            ElementHandlerOutput::Continue { event, .. } => event,
9617                        }
9618                    }
9619                    (S::Any(values, Some(deserializer)), event) => {
9620                        let output = deserializer.next(reader, event)?;
9621                        match self.handle_any(reader, values, output, &mut fallback)? {
9622                            ElementHandlerOutput::Break { event, allow_any } => {
9623                                break (event, allow_any)
9624                            }
9625                            ElementHandlerOutput::Continue { event, .. } => event,
9626                        }
9627                    }
9628                    (state, event @ Event::End(_)) => {
9629                        return Ok(DeserializerOutput {
9630                            artifact: DeserializerArtifact::Data(
9631                                GroupTypeContentDeserializer::finish_state(reader, state)?,
9632                            ),
9633                            event: DeserializerEvent::Continue(event),
9634                            allow_any: false,
9635                        });
9636                    }
9637                    (S::Init__, event) => match self.find_suitable(reader, event, &mut fallback)? {
9638                        ElementHandlerOutput::Break { event, allow_any } => {
9639                            break (event, allow_any)
9640                        }
9641                        ElementHandlerOutput::Continue { event, .. } => event,
9642                    },
9643                    (S::Annotation(values, None), event) => {
9644                        let output = <super::Annotation as WithDeserializer>::Deserializer::init(
9645                            reader, event,
9646                        )?;
9647                        match self.handle_annotation(reader, values, output, &mut fallback)? {
9648                            ElementHandlerOutput::Break { event, allow_any } => {
9649                                break (event, allow_any)
9650                            }
9651                            ElementHandlerOutput::Continue { event, .. } => event,
9652                        }
9653                    }
9654                    (S::Element(values, None), event) => {
9655                        let output = <super::ElementType as WithDeserializer>::Deserializer::init(
9656                            reader, event,
9657                        )?;
9658                        match self.handle_element(reader, values, output, &mut fallback)? {
9659                            ElementHandlerOutput::Break { event, allow_any } => {
9660                                break (event, allow_any)
9661                            }
9662                            ElementHandlerOutput::Continue { event, .. } => event,
9663                        }
9664                    }
9665                    (S::Group(values, None), event) => {
9666                        let output = <super::GroupType as WithDeserializer>::Deserializer::init(
9667                            reader, event,
9668                        )?;
9669                        match self.handle_group(reader, values, output, &mut fallback)? {
9670                            ElementHandlerOutput::Break { event, allow_any } => {
9671                                break (event, allow_any)
9672                            }
9673                            ElementHandlerOutput::Continue { event, .. } => event,
9674                        }
9675                    }
9676                    (S::All(values, None), event) => {
9677                        let output = <super::GroupType as WithDeserializer>::Deserializer::init(
9678                            reader, event,
9679                        )?;
9680                        match self.handle_all(reader, values, output, &mut fallback)? {
9681                            ElementHandlerOutput::Break { event, allow_any } => {
9682                                break (event, allow_any)
9683                            }
9684                            ElementHandlerOutput::Continue { event, .. } => event,
9685                        }
9686                    }
9687                    (S::Choice(values, None), event) => {
9688                        let output = <super::GroupType as WithDeserializer>::Deserializer::init(
9689                            reader, event,
9690                        )?;
9691                        match self.handle_choice(reader, values, output, &mut fallback)? {
9692                            ElementHandlerOutput::Break { event, allow_any } => {
9693                                break (event, allow_any)
9694                            }
9695                            ElementHandlerOutput::Continue { event, .. } => event,
9696                        }
9697                    }
9698                    (S::Sequence(values, None), event) => {
9699                        let output = <super::GroupType as WithDeserializer>::Deserializer::init(
9700                            reader, event,
9701                        )?;
9702                        match self.handle_sequence(reader, values, output, &mut fallback)? {
9703                            ElementHandlerOutput::Break { event, allow_any } => {
9704                                break (event, allow_any)
9705                            }
9706                            ElementHandlerOutput::Continue { event, .. } => event,
9707                        }
9708                    }
9709                    (S::Any(values, None), event) => {
9710                        let output =
9711                            <super::Any as WithDeserializer>::Deserializer::init(reader, event)?;
9712                        match self.handle_any(reader, values, output, &mut fallback)? {
9713                            ElementHandlerOutput::Break { event, allow_any } => {
9714                                break (event, allow_any)
9715                            }
9716                            ElementHandlerOutput::Continue { event, .. } => event,
9717                        }
9718                    }
9719                    (s @ S::Done__(_), event) => {
9720                        *self.state = s;
9721                        break (DeserializerEvent::Continue(event), false);
9722                    }
9723                    (S::Unknown__, _) => unreachable!(),
9724                }
9725            };
9726            let artifact = if matches!(&*self.state, S::Done__(_)) {
9727                DeserializerArtifact::Data(self.finish(reader)?)
9728            } else {
9729                DeserializerArtifact::Deserializer(self)
9730            };
9731            Ok(DeserializerOutput {
9732                artifact,
9733                event,
9734                allow_any,
9735            })
9736        }
9737        fn finish<R>(self, reader: &R) -> Result<super::GroupTypeContent, Error>
9738        where
9739            R: DeserializeReader,
9740        {
9741            GroupTypeContentDeserializer::finish_state(reader, *self.state)
9742        }
9743    }
9744    #[derive(Debug)]
9745    pub struct AttributeGroupTypeDeserializer {
9746        id: Option<String>,
9747        name: Option<String>,
9748        ref_: Option<super::QName>,
9749        content: Vec<super::AttributeGroupTypeContent>,
9750        state: Box<AttributeGroupTypeDeserializerState>,
9751    }
9752    #[derive(Debug)]
9753    enum AttributeGroupTypeDeserializerState {
9754        Init__,
9755        Next__,
9756        Content__(<super::AttributeGroupTypeContent as WithDeserializer>::Deserializer),
9757        Unknown__,
9758    }
9759    impl AttributeGroupTypeDeserializer {
9760        fn from_bytes_start<R>(reader: &R, bytes_start: &BytesStart<'_>) -> Result<Box<Self>, Error>
9761        where
9762            R: DeserializeReader,
9763        {
9764            let mut id: Option<String> = None;
9765            let mut name: Option<String> = None;
9766            let mut ref_: Option<super::QName> = None;
9767            for attrib in filter_xmlns_attributes(bytes_start) {
9768                let attrib = attrib?;
9769                if matches!(
9770                    reader.resolve_local_name(attrib.key, &super::NS_XS),
9771                    Some(b"id")
9772                ) {
9773                    reader.read_attrib(&mut id, b"id", &attrib.value)?;
9774                } else if matches!(
9775                    reader.resolve_local_name(attrib.key, &super::NS_XS),
9776                    Some(b"name")
9777                ) {
9778                    reader.read_attrib(&mut name, b"name", &attrib.value)?;
9779                } else if matches!(
9780                    reader.resolve_local_name(attrib.key, &super::NS_XS),
9781                    Some(b"ref")
9782                ) {
9783                    reader.read_attrib(&mut ref_, b"ref", &attrib.value)?;
9784                }
9785            }
9786            Ok(Box::new(Self {
9787                id: id,
9788                name: name,
9789                ref_: ref_,
9790                content: Vec::new(),
9791                state: Box::new(AttributeGroupTypeDeserializerState::Init__),
9792            }))
9793        }
9794        fn finish_state<R>(
9795            &mut self,
9796            reader: &R,
9797            state: AttributeGroupTypeDeserializerState,
9798        ) -> Result<(), Error>
9799        where
9800            R: DeserializeReader,
9801        {
9802            if let AttributeGroupTypeDeserializerState::Content__(deserializer) = state {
9803                self.store_content(deserializer.finish(reader)?)?;
9804            }
9805            Ok(())
9806        }
9807        fn store_content(&mut self, value: super::AttributeGroupTypeContent) -> Result<(), Error> {
9808            self.content.push(value);
9809            Ok(())
9810        }
9811        fn handle_content<'de, R>(
9812            &mut self,
9813            reader: &R,
9814            output: DeserializerOutput<'de, super::AttributeGroupTypeContent>,
9815            fallback: &mut Option<AttributeGroupTypeDeserializerState>,
9816        ) -> Result<ElementHandlerOutput<'de>, Error>
9817        where
9818            R: DeserializeReader,
9819        {
9820            let DeserializerOutput {
9821                artifact,
9822                event,
9823                allow_any,
9824            } = output;
9825            if artifact.is_none() {
9826                *self.state = fallback
9827                    .take()
9828                    .unwrap_or(AttributeGroupTypeDeserializerState::Next__);
9829                return Ok(ElementHandlerOutput::break_(event, allow_any));
9830            }
9831            if let Some(fallback) = fallback.take() {
9832                self.finish_state(reader, fallback)?;
9833            }
9834            Ok(match artifact {
9835                DeserializerArtifact::None => unreachable!(),
9836                DeserializerArtifact::Data(data) => {
9837                    self.store_content(data)?;
9838                    *self.state = AttributeGroupTypeDeserializerState::Next__;
9839                    ElementHandlerOutput::from_event(event, allow_any)
9840                }
9841                DeserializerArtifact::Deserializer(deserializer) => {
9842                    let ret = ElementHandlerOutput::from_event(event, allow_any);
9843                    match &ret {
9844                        ElementHandlerOutput::Break { .. } => {
9845                            *self.state =
9846                                AttributeGroupTypeDeserializerState::Content__(deserializer);
9847                        }
9848                        ElementHandlerOutput::Continue { .. } => {
9849                            fallback.get_or_insert(AttributeGroupTypeDeserializerState::Content__(
9850                                deserializer,
9851                            ));
9852                            *self.state = AttributeGroupTypeDeserializerState::Next__;
9853                        }
9854                    }
9855                    ret
9856                }
9857            })
9858        }
9859    }
9860    impl<'de> Deserializer<'de, super::AttributeGroupType> for Box<AttributeGroupTypeDeserializer> {
9861        fn init<R>(
9862            reader: &R,
9863            event: Event<'de>,
9864        ) -> DeserializerResult<'de, super::AttributeGroupType>
9865        where
9866            R: DeserializeReader,
9867        {
9868            reader.init_deserializer_from_start_event(
9869                event,
9870                AttributeGroupTypeDeserializer::from_bytes_start,
9871            )
9872        }
9873        fn next<R>(
9874            mut self,
9875            reader: &R,
9876            event: Event<'de>,
9877        ) -> DeserializerResult<'de, super::AttributeGroupType>
9878        where
9879            R: DeserializeReader,
9880        {
9881            use AttributeGroupTypeDeserializerState as S;
9882            let mut event = event;
9883            let mut fallback = None;
9884            let (event, allow_any) = loop {
9885                let state = replace(&mut *self.state, S::Unknown__);
9886                event = match (state, event) {
9887                    (S::Content__(deserializer), event) => {
9888                        let output = deserializer.next(reader, event)?;
9889                        match self.handle_content(reader, output, &mut fallback)? {
9890                            ElementHandlerOutput::Break { event, allow_any } => {
9891                                break (event, allow_any)
9892                            }
9893                            ElementHandlerOutput::Continue { event, .. } => event,
9894                        }
9895                    }
9896                    (_, Event::End(_)) => {
9897                        return Ok(DeserializerOutput {
9898                            artifact: DeserializerArtifact::Data(self.finish(reader)?),
9899                            event: DeserializerEvent::None,
9900                            allow_any: false,
9901                        });
9902                    }
9903                    (state @ (S::Init__ | S::Next__), event) => {
9904                        fallback.get_or_insert(state);
9905                        let output = < super :: AttributeGroupTypeContent as WithDeserializer > :: Deserializer :: init (reader , event) ? ;
9906                        match self.handle_content(reader, output, &mut fallback)? {
9907                            ElementHandlerOutput::Break { event, allow_any } => {
9908                                break (event, allow_any)
9909                            }
9910                            ElementHandlerOutput::Continue { event, .. } => event,
9911                        }
9912                    }
9913                    (S::Unknown__, _) => unreachable!(),
9914                }
9915            };
9916            let artifact = DeserializerArtifact::Deserializer(self);
9917            Ok(DeserializerOutput {
9918                artifact,
9919                event,
9920                allow_any,
9921            })
9922        }
9923        fn finish<R>(mut self, reader: &R) -> Result<super::AttributeGroupType, Error>
9924        where
9925            R: DeserializeReader,
9926        {
9927            let state = replace(
9928                &mut *self.state,
9929                AttributeGroupTypeDeserializerState::Unknown__,
9930            );
9931            self.finish_state(reader, state)?;
9932            Ok(super::AttributeGroupType {
9933                id: self.id,
9934                name: self.name,
9935                ref_: self.ref_,
9936                content: self.content,
9937            })
9938        }
9939    }
9940    #[derive(Debug)]
9941    pub struct AttributeGroupTypeContentDeserializer {
9942        state: Box<AttributeGroupTypeContentDeserializerState>,
9943    }
9944    #[derive(Debug)]
9945    pub enum AttributeGroupTypeContentDeserializerState {
9946        Init__,
9947        Annotation(
9948            Option<super::Annotation>,
9949            Option<<super::Annotation as WithDeserializer>::Deserializer>,
9950        ),
9951        Attribute(
9952            Option<super::AttributeType>,
9953            Option<<super::AttributeType as WithDeserializer>::Deserializer>,
9954        ),
9955        AttributeGroup(
9956            Option<super::AttributeGroupType>,
9957            Option<<super::AttributeGroupType as WithDeserializer>::Deserializer>,
9958        ),
9959        AnyAttribute(
9960            Option<super::AnyAttribute>,
9961            Option<<super::AnyAttribute as WithDeserializer>::Deserializer>,
9962        ),
9963        Done__(super::AttributeGroupTypeContent),
9964        Unknown__,
9965    }
9966    impl AttributeGroupTypeContentDeserializer {
9967        fn find_suitable<'de, R>(
9968            &mut self,
9969            reader: &R,
9970            event: Event<'de>,
9971            fallback: &mut Option<AttributeGroupTypeContentDeserializerState>,
9972        ) -> Result<ElementHandlerOutput<'de>, Error>
9973        where
9974            R: DeserializeReader,
9975        {
9976            let (Event::Start(x) | Event::Empty(x)) = &event else {
9977                *self.state = fallback
9978                    .take()
9979                    .unwrap_or(AttributeGroupTypeContentDeserializerState::Init__);
9980                return Ok(ElementHandlerOutput::return_to_parent(event, false));
9981            };
9982            if matches!(
9983                reader.resolve_local_name(x.name(), &super::NS_XS),
9984                Some(b"annotation")
9985            ) {
9986                let output =
9987                    <super::Annotation as WithDeserializer>::Deserializer::init(reader, event)?;
9988                return self.handle_annotation(reader, Default::default(), output, &mut *fallback);
9989            }
9990            if matches!(
9991                reader.resolve_local_name(x.name(), &super::NS_XS),
9992                Some(b"attribute")
9993            ) {
9994                let output =
9995                    <super::AttributeType as WithDeserializer>::Deserializer::init(reader, event)?;
9996                return self.handle_attribute(reader, Default::default(), output, &mut *fallback);
9997            }
9998            if matches!(
9999                reader.resolve_local_name(x.name(), &super::NS_XS),
10000                Some(b"attributeGroup")
10001            ) {
10002                let output = <super::AttributeGroupType as WithDeserializer>::Deserializer::init(
10003                    reader, event,
10004                )?;
10005                return self.handle_attribute_group(
10006                    reader,
10007                    Default::default(),
10008                    output,
10009                    &mut *fallback,
10010                );
10011            }
10012            if matches!(
10013                reader.resolve_local_name(x.name(), &super::NS_XS),
10014                Some(b"anyAttribute")
10015            ) {
10016                let output =
10017                    <super::AnyAttribute as WithDeserializer>::Deserializer::init(reader, event)?;
10018                return self.handle_any_attribute(
10019                    reader,
10020                    Default::default(),
10021                    output,
10022                    &mut *fallback,
10023                );
10024            }
10025            *self.state = fallback
10026                .take()
10027                .unwrap_or(AttributeGroupTypeContentDeserializerState::Init__);
10028            Ok(ElementHandlerOutput::return_to_parent(event, false))
10029        }
10030        fn finish_state<R>(
10031            reader: &R,
10032            state: AttributeGroupTypeContentDeserializerState,
10033        ) -> Result<super::AttributeGroupTypeContent, Error>
10034        where
10035            R: DeserializeReader,
10036        {
10037            use AttributeGroupTypeContentDeserializerState as S;
10038            match state {
10039                S::Init__ => Err(ErrorKind::MissingContent.into()),
10040                S::Annotation(mut values, deserializer) => {
10041                    if let Some(deserializer) = deserializer {
10042                        let value = deserializer.finish(reader)?;
10043                        AttributeGroupTypeContentDeserializer::store_annotation(
10044                            &mut values,
10045                            value,
10046                        )?;
10047                    }
10048                    Ok(super::AttributeGroupTypeContent::Annotation(
10049                        values.ok_or_else(|| ErrorKind::MissingElement("annotation".into()))?,
10050                    ))
10051                }
10052                S::Attribute(mut values, deserializer) => {
10053                    if let Some(deserializer) = deserializer {
10054                        let value = deserializer.finish(reader)?;
10055                        AttributeGroupTypeContentDeserializer::store_attribute(&mut values, value)?;
10056                    }
10057                    Ok(super::AttributeGroupTypeContent::Attribute(
10058                        values.ok_or_else(|| ErrorKind::MissingElement("attribute".into()))?,
10059                    ))
10060                }
10061                S::AttributeGroup(mut values, deserializer) => {
10062                    if let Some(deserializer) = deserializer {
10063                        let value = deserializer.finish(reader)?;
10064                        AttributeGroupTypeContentDeserializer::store_attribute_group(
10065                            &mut values,
10066                            value,
10067                        )?;
10068                    }
10069                    Ok(super::AttributeGroupTypeContent::AttributeGroup(
10070                        values.ok_or_else(|| ErrorKind::MissingElement("attributeGroup".into()))?,
10071                    ))
10072                }
10073                S::AnyAttribute(mut values, deserializer) => {
10074                    if let Some(deserializer) = deserializer {
10075                        let value = deserializer.finish(reader)?;
10076                        AttributeGroupTypeContentDeserializer::store_any_attribute(
10077                            &mut values,
10078                            value,
10079                        )?;
10080                    }
10081                    Ok(super::AttributeGroupTypeContent::AnyAttribute(
10082                        values.ok_or_else(|| ErrorKind::MissingElement("anyAttribute".into()))?,
10083                    ))
10084                }
10085                S::Done__(data) => Ok(data),
10086                S::Unknown__ => unreachable!(),
10087            }
10088        }
10089        fn store_annotation(
10090            values: &mut Option<super::Annotation>,
10091            value: super::Annotation,
10092        ) -> Result<(), Error> {
10093            if values.is_some() {
10094                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
10095                    b"annotation",
10096                )))?;
10097            }
10098            *values = Some(value);
10099            Ok(())
10100        }
10101        fn store_attribute(
10102            values: &mut Option<super::AttributeType>,
10103            value: super::AttributeType,
10104        ) -> Result<(), Error> {
10105            if values.is_some() {
10106                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
10107                    b"attribute",
10108                )))?;
10109            }
10110            *values = Some(value);
10111            Ok(())
10112        }
10113        fn store_attribute_group(
10114            values: &mut Option<super::AttributeGroupType>,
10115            value: super::AttributeGroupType,
10116        ) -> Result<(), Error> {
10117            if values.is_some() {
10118                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
10119                    b"attributeGroup",
10120                )))?;
10121            }
10122            *values = Some(value);
10123            Ok(())
10124        }
10125        fn store_any_attribute(
10126            values: &mut Option<super::AnyAttribute>,
10127            value: super::AnyAttribute,
10128        ) -> Result<(), Error> {
10129            if values.is_some() {
10130                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
10131                    b"anyAttribute",
10132                )))?;
10133            }
10134            *values = Some(value);
10135            Ok(())
10136        }
10137        fn handle_annotation<'de, R>(
10138            &mut self,
10139            reader: &R,
10140            mut values: Option<super::Annotation>,
10141            output: DeserializerOutput<'de, super::Annotation>,
10142            fallback: &mut Option<AttributeGroupTypeContentDeserializerState>,
10143        ) -> Result<ElementHandlerOutput<'de>, Error>
10144        where
10145            R: DeserializeReader,
10146        {
10147            let DeserializerOutput {
10148                artifact,
10149                event,
10150                allow_any,
10151            } = output;
10152            if artifact.is_none() {
10153                *self.state = match fallback.take() {
10154                    None => AttributeGroupTypeContentDeserializerState::Init__,
10155                    Some(AttributeGroupTypeContentDeserializerState::Annotation(
10156                        _,
10157                        Some(deserializer),
10158                    )) => AttributeGroupTypeContentDeserializerState::Annotation(
10159                        values,
10160                        Some(deserializer),
10161                    ),
10162                    _ => unreachable!(),
10163                };
10164                return Ok(ElementHandlerOutput::break_(event, allow_any));
10165            }
10166            match fallback.take() {
10167                None => (),
10168                Some(AttributeGroupTypeContentDeserializerState::Annotation(
10169                    _,
10170                    Some(deserializer),
10171                )) => {
10172                    let data = deserializer.finish(reader)?;
10173                    AttributeGroupTypeContentDeserializer::store_annotation(&mut values, data)?;
10174                }
10175                Some(_) => unreachable!(),
10176            }
10177            Ok(match artifact {
10178                DeserializerArtifact::None => unreachable!(),
10179                DeserializerArtifact::Data(data) => {
10180                    AttributeGroupTypeContentDeserializer::store_annotation(&mut values, data)?;
10181                    let data = AttributeGroupTypeContentDeserializer::finish_state(
10182                        reader,
10183                        AttributeGroupTypeContentDeserializerState::Annotation(values, None),
10184                    )?;
10185                    *self.state = AttributeGroupTypeContentDeserializerState::Done__(data);
10186                    ElementHandlerOutput::Break { event, allow_any }
10187                }
10188                DeserializerArtifact::Deserializer(deserializer) => {
10189                    *self.state = AttributeGroupTypeContentDeserializerState::Annotation(
10190                        values,
10191                        Some(deserializer),
10192                    );
10193                    ElementHandlerOutput::from_event_end(event, allow_any)
10194                }
10195            })
10196        }
10197        fn handle_attribute<'de, R>(
10198            &mut self,
10199            reader: &R,
10200            mut values: Option<super::AttributeType>,
10201            output: DeserializerOutput<'de, super::AttributeType>,
10202            fallback: &mut Option<AttributeGroupTypeContentDeserializerState>,
10203        ) -> Result<ElementHandlerOutput<'de>, Error>
10204        where
10205            R: DeserializeReader,
10206        {
10207            let DeserializerOutput {
10208                artifact,
10209                event,
10210                allow_any,
10211            } = output;
10212            if artifact.is_none() {
10213                *self.state = match fallback.take() {
10214                    None => AttributeGroupTypeContentDeserializerState::Init__,
10215                    Some(AttributeGroupTypeContentDeserializerState::Attribute(
10216                        _,
10217                        Some(deserializer),
10218                    )) => AttributeGroupTypeContentDeserializerState::Attribute(
10219                        values,
10220                        Some(deserializer),
10221                    ),
10222                    _ => unreachable!(),
10223                };
10224                return Ok(ElementHandlerOutput::break_(event, allow_any));
10225            }
10226            match fallback.take() {
10227                None => (),
10228                Some(AttributeGroupTypeContentDeserializerState::Attribute(
10229                    _,
10230                    Some(deserializer),
10231                )) => {
10232                    let data = deserializer.finish(reader)?;
10233                    AttributeGroupTypeContentDeserializer::store_attribute(&mut values, data)?;
10234                }
10235                Some(_) => unreachable!(),
10236            }
10237            Ok(match artifact {
10238                DeserializerArtifact::None => unreachable!(),
10239                DeserializerArtifact::Data(data) => {
10240                    AttributeGroupTypeContentDeserializer::store_attribute(&mut values, data)?;
10241                    let data = AttributeGroupTypeContentDeserializer::finish_state(
10242                        reader,
10243                        AttributeGroupTypeContentDeserializerState::Attribute(values, None),
10244                    )?;
10245                    *self.state = AttributeGroupTypeContentDeserializerState::Done__(data);
10246                    ElementHandlerOutput::Break { event, allow_any }
10247                }
10248                DeserializerArtifact::Deserializer(deserializer) => {
10249                    *self.state = AttributeGroupTypeContentDeserializerState::Attribute(
10250                        values,
10251                        Some(deserializer),
10252                    );
10253                    ElementHandlerOutput::from_event_end(event, allow_any)
10254                }
10255            })
10256        }
10257        fn handle_attribute_group<'de, R>(
10258            &mut self,
10259            reader: &R,
10260            mut values: Option<super::AttributeGroupType>,
10261            output: DeserializerOutput<'de, super::AttributeGroupType>,
10262            fallback: &mut Option<AttributeGroupTypeContentDeserializerState>,
10263        ) -> Result<ElementHandlerOutput<'de>, Error>
10264        where
10265            R: DeserializeReader,
10266        {
10267            let DeserializerOutput {
10268                artifact,
10269                event,
10270                allow_any,
10271            } = output;
10272            if artifact.is_none() {
10273                *self.state = match fallback.take() {
10274                    None => AttributeGroupTypeContentDeserializerState::Init__,
10275                    Some(AttributeGroupTypeContentDeserializerState::AttributeGroup(
10276                        _,
10277                        Some(deserializer),
10278                    )) => AttributeGroupTypeContentDeserializerState::AttributeGroup(
10279                        values,
10280                        Some(deserializer),
10281                    ),
10282                    _ => unreachable!(),
10283                };
10284                return Ok(ElementHandlerOutput::break_(event, allow_any));
10285            }
10286            match fallback.take() {
10287                None => (),
10288                Some(AttributeGroupTypeContentDeserializerState::AttributeGroup(
10289                    _,
10290                    Some(deserializer),
10291                )) => {
10292                    let data = deserializer.finish(reader)?;
10293                    AttributeGroupTypeContentDeserializer::store_attribute_group(
10294                        &mut values,
10295                        data,
10296                    )?;
10297                }
10298                Some(_) => unreachable!(),
10299            }
10300            Ok(match artifact {
10301                DeserializerArtifact::None => unreachable!(),
10302                DeserializerArtifact::Data(data) => {
10303                    AttributeGroupTypeContentDeserializer::store_attribute_group(
10304                        &mut values,
10305                        data,
10306                    )?;
10307                    let data = AttributeGroupTypeContentDeserializer::finish_state(
10308                        reader,
10309                        AttributeGroupTypeContentDeserializerState::AttributeGroup(values, None),
10310                    )?;
10311                    *self.state = AttributeGroupTypeContentDeserializerState::Done__(data);
10312                    ElementHandlerOutput::Break { event, allow_any }
10313                }
10314                DeserializerArtifact::Deserializer(deserializer) => {
10315                    *self.state = AttributeGroupTypeContentDeserializerState::AttributeGroup(
10316                        values,
10317                        Some(deserializer),
10318                    );
10319                    ElementHandlerOutput::from_event_end(event, allow_any)
10320                }
10321            })
10322        }
10323        fn handle_any_attribute<'de, R>(
10324            &mut self,
10325            reader: &R,
10326            mut values: Option<super::AnyAttribute>,
10327            output: DeserializerOutput<'de, super::AnyAttribute>,
10328            fallback: &mut Option<AttributeGroupTypeContentDeserializerState>,
10329        ) -> Result<ElementHandlerOutput<'de>, Error>
10330        where
10331            R: DeserializeReader,
10332        {
10333            let DeserializerOutput {
10334                artifact,
10335                event,
10336                allow_any,
10337            } = output;
10338            if artifact.is_none() {
10339                *self.state = match fallback.take() {
10340                    None => AttributeGroupTypeContentDeserializerState::Init__,
10341                    Some(AttributeGroupTypeContentDeserializerState::AnyAttribute(
10342                        _,
10343                        Some(deserializer),
10344                    )) => AttributeGroupTypeContentDeserializerState::AnyAttribute(
10345                        values,
10346                        Some(deserializer),
10347                    ),
10348                    _ => unreachable!(),
10349                };
10350                return Ok(ElementHandlerOutput::break_(event, allow_any));
10351            }
10352            match fallback.take() {
10353                None => (),
10354                Some(AttributeGroupTypeContentDeserializerState::AnyAttribute(
10355                    _,
10356                    Some(deserializer),
10357                )) => {
10358                    let data = deserializer.finish(reader)?;
10359                    AttributeGroupTypeContentDeserializer::store_any_attribute(&mut values, data)?;
10360                }
10361                Some(_) => unreachable!(),
10362            }
10363            Ok(match artifact {
10364                DeserializerArtifact::None => unreachable!(),
10365                DeserializerArtifact::Data(data) => {
10366                    AttributeGroupTypeContentDeserializer::store_any_attribute(&mut values, data)?;
10367                    let data = AttributeGroupTypeContentDeserializer::finish_state(
10368                        reader,
10369                        AttributeGroupTypeContentDeserializerState::AnyAttribute(values, None),
10370                    )?;
10371                    *self.state = AttributeGroupTypeContentDeserializerState::Done__(data);
10372                    ElementHandlerOutput::Break { event, allow_any }
10373                }
10374                DeserializerArtifact::Deserializer(deserializer) => {
10375                    *self.state = AttributeGroupTypeContentDeserializerState::AnyAttribute(
10376                        values,
10377                        Some(deserializer),
10378                    );
10379                    ElementHandlerOutput::from_event_end(event, allow_any)
10380                }
10381            })
10382        }
10383    }
10384    impl<'de> Deserializer<'de, super::AttributeGroupTypeContent>
10385        for Box<AttributeGroupTypeContentDeserializer>
10386    {
10387        fn init<R>(
10388            reader: &R,
10389            event: Event<'de>,
10390        ) -> DeserializerResult<'de, super::AttributeGroupTypeContent>
10391        where
10392            R: DeserializeReader,
10393        {
10394            let deserializer = Box::new(AttributeGroupTypeContentDeserializer {
10395                state: Box::new(AttributeGroupTypeContentDeserializerState::Init__),
10396            });
10397            let mut output = deserializer.next(reader, event)?;
10398            output.artifact = match output.artifact {
10399                DeserializerArtifact::Deserializer(x)
10400                    if matches!(
10401                        &*x.state,
10402                        AttributeGroupTypeContentDeserializerState::Init__
10403                    ) =>
10404                {
10405                    DeserializerArtifact::None
10406                }
10407                artifact => artifact,
10408            };
10409            Ok(output)
10410        }
10411        fn next<R>(
10412            mut self,
10413            reader: &R,
10414            event: Event<'de>,
10415        ) -> DeserializerResult<'de, super::AttributeGroupTypeContent>
10416        where
10417            R: DeserializeReader,
10418        {
10419            use AttributeGroupTypeContentDeserializerState as S;
10420            let mut event = event;
10421            let mut fallback = None;
10422            let (event, allow_any) = loop {
10423                let state = replace(&mut *self.state, S::Unknown__);
10424                event = match (state, event) {
10425                    (S::Annotation(values, Some(deserializer)), event) => {
10426                        let output = deserializer.next(reader, event)?;
10427                        match self.handle_annotation(reader, values, output, &mut fallback)? {
10428                            ElementHandlerOutput::Break { event, allow_any } => {
10429                                break (event, allow_any)
10430                            }
10431                            ElementHandlerOutput::Continue { event, .. } => event,
10432                        }
10433                    }
10434                    (S::Attribute(values, Some(deserializer)), event) => {
10435                        let output = deserializer.next(reader, event)?;
10436                        match self.handle_attribute(reader, values, output, &mut fallback)? {
10437                            ElementHandlerOutput::Break { event, allow_any } => {
10438                                break (event, allow_any)
10439                            }
10440                            ElementHandlerOutput::Continue { event, .. } => event,
10441                        }
10442                    }
10443                    (S::AttributeGroup(values, Some(deserializer)), event) => {
10444                        let output = deserializer.next(reader, event)?;
10445                        match self.handle_attribute_group(reader, values, output, &mut fallback)? {
10446                            ElementHandlerOutput::Break { event, allow_any } => {
10447                                break (event, allow_any)
10448                            }
10449                            ElementHandlerOutput::Continue { event, .. } => event,
10450                        }
10451                    }
10452                    (S::AnyAttribute(values, Some(deserializer)), event) => {
10453                        let output = deserializer.next(reader, event)?;
10454                        match self.handle_any_attribute(reader, values, output, &mut fallback)? {
10455                            ElementHandlerOutput::Break { event, allow_any } => {
10456                                break (event, allow_any)
10457                            }
10458                            ElementHandlerOutput::Continue { event, .. } => event,
10459                        }
10460                    }
10461                    (state, event @ Event::End(_)) => {
10462                        return Ok(DeserializerOutput {
10463                            artifact: DeserializerArtifact::Data(
10464                                AttributeGroupTypeContentDeserializer::finish_state(reader, state)?,
10465                            ),
10466                            event: DeserializerEvent::Continue(event),
10467                            allow_any: false,
10468                        });
10469                    }
10470                    (S::Init__, event) => match self.find_suitable(reader, event, &mut fallback)? {
10471                        ElementHandlerOutput::Break { event, allow_any } => {
10472                            break (event, allow_any)
10473                        }
10474                        ElementHandlerOutput::Continue { event, .. } => event,
10475                    },
10476                    (S::Annotation(values, None), event) => {
10477                        let output = <super::Annotation as WithDeserializer>::Deserializer::init(
10478                            reader, event,
10479                        )?;
10480                        match self.handle_annotation(reader, values, output, &mut fallback)? {
10481                            ElementHandlerOutput::Break { event, allow_any } => {
10482                                break (event, allow_any)
10483                            }
10484                            ElementHandlerOutput::Continue { event, .. } => event,
10485                        }
10486                    }
10487                    (S::Attribute(values, None), event) => {
10488                        let output =
10489                            <super::AttributeType as WithDeserializer>::Deserializer::init(
10490                                reader, event,
10491                            )?;
10492                        match self.handle_attribute(reader, values, output, &mut fallback)? {
10493                            ElementHandlerOutput::Break { event, allow_any } => {
10494                                break (event, allow_any)
10495                            }
10496                            ElementHandlerOutput::Continue { event, .. } => event,
10497                        }
10498                    }
10499                    (S::AttributeGroup(values, None), event) => {
10500                        let output =
10501                            <super::AttributeGroupType as WithDeserializer>::Deserializer::init(
10502                                reader, event,
10503                            )?;
10504                        match self.handle_attribute_group(reader, values, output, &mut fallback)? {
10505                            ElementHandlerOutput::Break { event, allow_any } => {
10506                                break (event, allow_any)
10507                            }
10508                            ElementHandlerOutput::Continue { event, .. } => event,
10509                        }
10510                    }
10511                    (S::AnyAttribute(values, None), event) => {
10512                        let output = <super::AnyAttribute as WithDeserializer>::Deserializer::init(
10513                            reader, event,
10514                        )?;
10515                        match self.handle_any_attribute(reader, values, output, &mut fallback)? {
10516                            ElementHandlerOutput::Break { event, allow_any } => {
10517                                break (event, allow_any)
10518                            }
10519                            ElementHandlerOutput::Continue { event, .. } => event,
10520                        }
10521                    }
10522                    (s @ S::Done__(_), event) => {
10523                        *self.state = s;
10524                        break (DeserializerEvent::Continue(event), false);
10525                    }
10526                    (S::Unknown__, _) => unreachable!(),
10527                }
10528            };
10529            let artifact = if matches!(&*self.state, S::Done__(_)) {
10530                DeserializerArtifact::Data(self.finish(reader)?)
10531            } else {
10532                DeserializerArtifact::Deserializer(self)
10533            };
10534            Ok(DeserializerOutput {
10535                artifact,
10536                event,
10537                allow_any,
10538            })
10539        }
10540        fn finish<R>(self, reader: &R) -> Result<super::AttributeGroupTypeContent, Error>
10541        where
10542            R: DeserializeReader,
10543        {
10544            AttributeGroupTypeContentDeserializer::finish_state(reader, *self.state)
10545        }
10546    }
10547    #[derive(Debug)]
10548    pub struct ElementTypeDeserializer {
10549        id: Option<String>,
10550        name: Option<String>,
10551        ref_: Option<super::QName>,
10552        type_: Option<super::QName>,
10553        substitution_group: Option<super::QNameList>,
10554        min_occurs: usize,
10555        max_occurs: super::MaxOccurs,
10556        default: Option<String>,
10557        fixed: Option<String>,
10558        nillable: Option<bool>,
10559        abstract_: bool,
10560        final_: Option<super::DerivationSetType>,
10561        block: Option<super::BlockSetType>,
10562        form: Option<super::FormChoiceType>,
10563        target_namespace: Option<String>,
10564        content: Vec<super::ElementTypeContent>,
10565        state: Box<ElementTypeDeserializerState>,
10566    }
10567    #[derive(Debug)]
10568    enum ElementTypeDeserializerState {
10569        Init__,
10570        Next__,
10571        Content__(<super::ElementTypeContent as WithDeserializer>::Deserializer),
10572        Unknown__,
10573    }
10574    impl ElementTypeDeserializer {
10575        fn from_bytes_start<R>(reader: &R, bytes_start: &BytesStart<'_>) -> Result<Box<Self>, Error>
10576        where
10577            R: DeserializeReader,
10578        {
10579            let mut id: Option<String> = None;
10580            let mut name: Option<String> = None;
10581            let mut ref_: Option<super::QName> = None;
10582            let mut type_: Option<super::QName> = None;
10583            let mut substitution_group: Option<super::QNameList> = None;
10584            let mut min_occurs: Option<usize> = None;
10585            let mut max_occurs: Option<super::MaxOccurs> = None;
10586            let mut default: Option<String> = None;
10587            let mut fixed: Option<String> = None;
10588            let mut nillable: Option<bool> = None;
10589            let mut abstract_: Option<bool> = None;
10590            let mut final_: Option<super::DerivationSetType> = None;
10591            let mut block: Option<super::BlockSetType> = None;
10592            let mut form: Option<super::FormChoiceType> = None;
10593            let mut target_namespace: Option<String> = None;
10594            for attrib in filter_xmlns_attributes(bytes_start) {
10595                let attrib = attrib?;
10596                if matches!(
10597                    reader.resolve_local_name(attrib.key, &super::NS_XS),
10598                    Some(b"id")
10599                ) {
10600                    reader.read_attrib(&mut id, b"id", &attrib.value)?;
10601                } else if matches!(
10602                    reader.resolve_local_name(attrib.key, &super::NS_XS),
10603                    Some(b"name")
10604                ) {
10605                    reader.read_attrib(&mut name, b"name", &attrib.value)?;
10606                } else if matches!(
10607                    reader.resolve_local_name(attrib.key, &super::NS_XS),
10608                    Some(b"ref")
10609                ) {
10610                    reader.read_attrib(&mut ref_, b"ref", &attrib.value)?;
10611                } else if matches!(
10612                    reader.resolve_local_name(attrib.key, &super::NS_XS),
10613                    Some(b"type")
10614                ) {
10615                    reader.read_attrib(&mut type_, b"type", &attrib.value)?;
10616                } else if matches!(
10617                    reader.resolve_local_name(attrib.key, &super::NS_XS),
10618                    Some(b"substitutionGroup")
10619                ) {
10620                    reader.read_attrib(
10621                        &mut substitution_group,
10622                        b"substitutionGroup",
10623                        &attrib.value,
10624                    )?;
10625                } else if matches!(
10626                    reader.resolve_local_name(attrib.key, &super::NS_XS),
10627                    Some(b"minOccurs")
10628                ) {
10629                    reader.read_attrib(&mut min_occurs, b"minOccurs", &attrib.value)?;
10630                } else if matches!(
10631                    reader.resolve_local_name(attrib.key, &super::NS_XS),
10632                    Some(b"maxOccurs")
10633                ) {
10634                    reader.read_attrib(&mut max_occurs, b"maxOccurs", &attrib.value)?;
10635                } else if matches!(
10636                    reader.resolve_local_name(attrib.key, &super::NS_XS),
10637                    Some(b"default")
10638                ) {
10639                    reader.read_attrib(&mut default, b"default", &attrib.value)?;
10640                } else if matches!(
10641                    reader.resolve_local_name(attrib.key, &super::NS_XS),
10642                    Some(b"fixed")
10643                ) {
10644                    reader.read_attrib(&mut fixed, b"fixed", &attrib.value)?;
10645                } else if matches!(
10646                    reader.resolve_local_name(attrib.key, &super::NS_XS),
10647                    Some(b"nillable")
10648                ) {
10649                    reader.read_attrib(&mut nillable, b"nillable", &attrib.value)?;
10650                } else if matches!(
10651                    reader.resolve_local_name(attrib.key, &super::NS_XS),
10652                    Some(b"abstract")
10653                ) {
10654                    reader.read_attrib(&mut abstract_, b"abstract", &attrib.value)?;
10655                } else if matches!(
10656                    reader.resolve_local_name(attrib.key, &super::NS_XS),
10657                    Some(b"final")
10658                ) {
10659                    reader.read_attrib(&mut final_, b"final", &attrib.value)?;
10660                } else if matches!(
10661                    reader.resolve_local_name(attrib.key, &super::NS_XS),
10662                    Some(b"block")
10663                ) {
10664                    reader.read_attrib(&mut block, b"block", &attrib.value)?;
10665                } else if matches!(
10666                    reader.resolve_local_name(attrib.key, &super::NS_XS),
10667                    Some(b"form")
10668                ) {
10669                    reader.read_attrib(&mut form, b"form", &attrib.value)?;
10670                } else if matches!(
10671                    reader.resolve_local_name(attrib.key, &super::NS_XS),
10672                    Some(b"targetNamespace")
10673                ) {
10674                    reader.read_attrib(&mut target_namespace, b"targetNamespace", &attrib.value)?;
10675                }
10676            }
10677            Ok(Box::new(Self {
10678                id: id,
10679                name: name,
10680                ref_: ref_,
10681                type_: type_,
10682                substitution_group: substitution_group,
10683                min_occurs: min_occurs.unwrap_or_else(super::ElementType::default_min_occurs),
10684                max_occurs: max_occurs.unwrap_or_else(super::ElementType::default_max_occurs),
10685                default: default,
10686                fixed: fixed,
10687                nillable: nillable,
10688                abstract_: abstract_.unwrap_or_else(super::ElementType::default_abstract_),
10689                final_: final_,
10690                block: block,
10691                form: form,
10692                target_namespace: target_namespace,
10693                content: Vec::new(),
10694                state: Box::new(ElementTypeDeserializerState::Init__),
10695            }))
10696        }
10697        fn finish_state<R>(
10698            &mut self,
10699            reader: &R,
10700            state: ElementTypeDeserializerState,
10701        ) -> Result<(), Error>
10702        where
10703            R: DeserializeReader,
10704        {
10705            if let ElementTypeDeserializerState::Content__(deserializer) = state {
10706                self.store_content(deserializer.finish(reader)?)?;
10707            }
10708            Ok(())
10709        }
10710        fn store_content(&mut self, value: super::ElementTypeContent) -> Result<(), Error> {
10711            self.content.push(value);
10712            Ok(())
10713        }
10714        fn handle_content<'de, R>(
10715            &mut self,
10716            reader: &R,
10717            output: DeserializerOutput<'de, super::ElementTypeContent>,
10718            fallback: &mut Option<ElementTypeDeserializerState>,
10719        ) -> Result<ElementHandlerOutput<'de>, Error>
10720        where
10721            R: DeserializeReader,
10722        {
10723            let DeserializerOutput {
10724                artifact,
10725                event,
10726                allow_any,
10727            } = output;
10728            if artifact.is_none() {
10729                *self.state = fallback
10730                    .take()
10731                    .unwrap_or(ElementTypeDeserializerState::Next__);
10732                return Ok(ElementHandlerOutput::break_(event, allow_any));
10733            }
10734            if let Some(fallback) = fallback.take() {
10735                self.finish_state(reader, fallback)?;
10736            }
10737            Ok(match artifact {
10738                DeserializerArtifact::None => unreachable!(),
10739                DeserializerArtifact::Data(data) => {
10740                    self.store_content(data)?;
10741                    *self.state = ElementTypeDeserializerState::Next__;
10742                    ElementHandlerOutput::from_event(event, allow_any)
10743                }
10744                DeserializerArtifact::Deserializer(deserializer) => {
10745                    let ret = ElementHandlerOutput::from_event(event, allow_any);
10746                    match &ret {
10747                        ElementHandlerOutput::Break { .. } => {
10748                            *self.state = ElementTypeDeserializerState::Content__(deserializer);
10749                        }
10750                        ElementHandlerOutput::Continue { .. } => {
10751                            fallback.get_or_insert(ElementTypeDeserializerState::Content__(
10752                                deserializer,
10753                            ));
10754                            *self.state = ElementTypeDeserializerState::Next__;
10755                        }
10756                    }
10757                    ret
10758                }
10759            })
10760        }
10761    }
10762    impl<'de> Deserializer<'de, super::ElementType> for Box<ElementTypeDeserializer> {
10763        fn init<R>(reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::ElementType>
10764        where
10765            R: DeserializeReader,
10766        {
10767            reader.init_deserializer_from_start_event(
10768                event,
10769                ElementTypeDeserializer::from_bytes_start,
10770            )
10771        }
10772        fn next<R>(
10773            mut self,
10774            reader: &R,
10775            event: Event<'de>,
10776        ) -> DeserializerResult<'de, super::ElementType>
10777        where
10778            R: DeserializeReader,
10779        {
10780            use ElementTypeDeserializerState as S;
10781            let mut event = event;
10782            let mut fallback = None;
10783            let (event, allow_any) = loop {
10784                let state = replace(&mut *self.state, S::Unknown__);
10785                event = match (state, event) {
10786                    (S::Content__(deserializer), event) => {
10787                        let output = deserializer.next(reader, event)?;
10788                        match self.handle_content(reader, output, &mut fallback)? {
10789                            ElementHandlerOutput::Break { event, allow_any } => {
10790                                break (event, allow_any)
10791                            }
10792                            ElementHandlerOutput::Continue { event, .. } => event,
10793                        }
10794                    }
10795                    (_, Event::End(_)) => {
10796                        return Ok(DeserializerOutput {
10797                            artifact: DeserializerArtifact::Data(self.finish(reader)?),
10798                            event: DeserializerEvent::None,
10799                            allow_any: false,
10800                        });
10801                    }
10802                    (state @ (S::Init__ | S::Next__), event) => {
10803                        fallback.get_or_insert(state);
10804                        let output =
10805                            <super::ElementTypeContent as WithDeserializer>::Deserializer::init(
10806                                reader, event,
10807                            )?;
10808                        match self.handle_content(reader, output, &mut fallback)? {
10809                            ElementHandlerOutput::Break { event, allow_any } => {
10810                                break (event, allow_any)
10811                            }
10812                            ElementHandlerOutput::Continue { event, .. } => event,
10813                        }
10814                    }
10815                    (S::Unknown__, _) => unreachable!(),
10816                }
10817            };
10818            let artifact = DeserializerArtifact::Deserializer(self);
10819            Ok(DeserializerOutput {
10820                artifact,
10821                event,
10822                allow_any,
10823            })
10824        }
10825        fn finish<R>(mut self, reader: &R) -> Result<super::ElementType, Error>
10826        where
10827            R: DeserializeReader,
10828        {
10829            let state = replace(&mut *self.state, ElementTypeDeserializerState::Unknown__);
10830            self.finish_state(reader, state)?;
10831            Ok(super::ElementType {
10832                id: self.id,
10833                name: self.name,
10834                ref_: self.ref_,
10835                type_: self.type_,
10836                substitution_group: self.substitution_group,
10837                min_occurs: self.min_occurs,
10838                max_occurs: self.max_occurs,
10839                default: self.default,
10840                fixed: self.fixed,
10841                nillable: self.nillable,
10842                abstract_: self.abstract_,
10843                final_: self.final_,
10844                block: self.block,
10845                form: self.form,
10846                target_namespace: self.target_namespace,
10847                content: self.content,
10848            })
10849        }
10850    }
10851    #[derive(Debug)]
10852    pub struct ElementTypeContentDeserializer {
10853        state: Box<ElementTypeContentDeserializerState>,
10854    }
10855    #[derive(Debug)]
10856    pub enum ElementTypeContentDeserializerState {
10857        Init__,
10858        Annotation(
10859            Option<super::Annotation>,
10860            Option<<super::Annotation as WithDeserializer>::Deserializer>,
10861        ),
10862        SimpleType(
10863            Option<super::SimpleBaseType>,
10864            Option<<super::SimpleBaseType as WithDeserializer>::Deserializer>,
10865        ),
10866        ComplexType(
10867            Option<super::ComplexBaseType>,
10868            Option<<super::ComplexBaseType as WithDeserializer>::Deserializer>,
10869        ),
10870        Alternative(
10871            Option<super::AltType>,
10872            Option<<super::AltType as WithDeserializer>::Deserializer>,
10873        ),
10874        Unique(
10875            Option<super::KeybaseType>,
10876            Option<<super::KeybaseType as WithDeserializer>::Deserializer>,
10877        ),
10878        Key(
10879            Option<super::KeybaseType>,
10880            Option<<super::KeybaseType as WithDeserializer>::Deserializer>,
10881        ),
10882        Keyref(
10883            Option<super::Keyref>,
10884            Option<<super::Keyref as WithDeserializer>::Deserializer>,
10885        ),
10886        Done__(super::ElementTypeContent),
10887        Unknown__,
10888    }
10889    impl ElementTypeContentDeserializer {
10890        fn find_suitable<'de, R>(
10891            &mut self,
10892            reader: &R,
10893            event: Event<'de>,
10894            fallback: &mut Option<ElementTypeContentDeserializerState>,
10895        ) -> Result<ElementHandlerOutput<'de>, Error>
10896        where
10897            R: DeserializeReader,
10898        {
10899            let (Event::Start(x) | Event::Empty(x)) = &event else {
10900                *self.state = fallback
10901                    .take()
10902                    .unwrap_or(ElementTypeContentDeserializerState::Init__);
10903                return Ok(ElementHandlerOutput::return_to_parent(event, false));
10904            };
10905            if matches!(
10906                reader.resolve_local_name(x.name(), &super::NS_XS),
10907                Some(b"annotation")
10908            ) {
10909                let output =
10910                    <super::Annotation as WithDeserializer>::Deserializer::init(reader, event)?;
10911                return self.handle_annotation(reader, Default::default(), output, &mut *fallback);
10912            }
10913            if matches!(
10914                reader.resolve_local_name(x.name(), &super::NS_XS),
10915                Some(b"simpleType")
10916            ) {
10917                let output =
10918                    <super::SimpleBaseType as WithDeserializer>::Deserializer::init(reader, event)?;
10919                return self.handle_simple_type(reader, Default::default(), output, &mut *fallback);
10920            }
10921            if matches!(
10922                reader.resolve_local_name(x.name(), &super::NS_XS),
10923                Some(b"complexType")
10924            ) {
10925                let output = <super::ComplexBaseType as WithDeserializer>::Deserializer::init(
10926                    reader, event,
10927                )?;
10928                return self.handle_complex_type(
10929                    reader,
10930                    Default::default(),
10931                    output,
10932                    &mut *fallback,
10933                );
10934            }
10935            if matches!(
10936                reader.resolve_local_name(x.name(), &super::NS_XS),
10937                Some(b"alternative")
10938            ) {
10939                let output =
10940                    <super::AltType as WithDeserializer>::Deserializer::init(reader, event)?;
10941                return self.handle_alternative(reader, Default::default(), output, &mut *fallback);
10942            }
10943            if matches!(
10944                reader.resolve_local_name(x.name(), &super::NS_XS),
10945                Some(b"unique")
10946            ) {
10947                let output =
10948                    <super::KeybaseType as WithDeserializer>::Deserializer::init(reader, event)?;
10949                return self.handle_unique(reader, Default::default(), output, &mut *fallback);
10950            }
10951            if matches!(
10952                reader.resolve_local_name(x.name(), &super::NS_XS),
10953                Some(b"key")
10954            ) {
10955                let output =
10956                    <super::KeybaseType as WithDeserializer>::Deserializer::init(reader, event)?;
10957                return self.handle_key(reader, Default::default(), output, &mut *fallback);
10958            }
10959            if matches!(
10960                reader.resolve_local_name(x.name(), &super::NS_XS),
10961                Some(b"keyref")
10962            ) {
10963                let output =
10964                    <super::Keyref as WithDeserializer>::Deserializer::init(reader, event)?;
10965                return self.handle_keyref(reader, Default::default(), output, &mut *fallback);
10966            }
10967            *self.state = fallback
10968                .take()
10969                .unwrap_or(ElementTypeContentDeserializerState::Init__);
10970            Ok(ElementHandlerOutput::return_to_parent(event, false))
10971        }
10972        fn finish_state<R>(
10973            reader: &R,
10974            state: ElementTypeContentDeserializerState,
10975        ) -> Result<super::ElementTypeContent, Error>
10976        where
10977            R: DeserializeReader,
10978        {
10979            use ElementTypeContentDeserializerState as S;
10980            match state {
10981                S::Init__ => Err(ErrorKind::MissingContent.into()),
10982                S::Annotation(mut values, deserializer) => {
10983                    if let Some(deserializer) = deserializer {
10984                        let value = deserializer.finish(reader)?;
10985                        ElementTypeContentDeserializer::store_annotation(&mut values, value)?;
10986                    }
10987                    Ok(super::ElementTypeContent::Annotation(values.ok_or_else(
10988                        || ErrorKind::MissingElement("annotation".into()),
10989                    )?))
10990                }
10991                S::SimpleType(mut values, deserializer) => {
10992                    if let Some(deserializer) = deserializer {
10993                        let value = deserializer.finish(reader)?;
10994                        ElementTypeContentDeserializer::store_simple_type(&mut values, value)?;
10995                    }
10996                    Ok(super::ElementTypeContent::SimpleType(values.ok_or_else(
10997                        || ErrorKind::MissingElement("simpleType".into()),
10998                    )?))
10999                }
11000                S::ComplexType(mut values, deserializer) => {
11001                    if let Some(deserializer) = deserializer {
11002                        let value = deserializer.finish(reader)?;
11003                        ElementTypeContentDeserializer::store_complex_type(&mut values, value)?;
11004                    }
11005                    Ok(super::ElementTypeContent::ComplexType(values.ok_or_else(
11006                        || ErrorKind::MissingElement("complexType".into()),
11007                    )?))
11008                }
11009                S::Alternative(mut values, deserializer) => {
11010                    if let Some(deserializer) = deserializer {
11011                        let value = deserializer.finish(reader)?;
11012                        ElementTypeContentDeserializer::store_alternative(&mut values, value)?;
11013                    }
11014                    Ok(super::ElementTypeContent::Alternative(values.ok_or_else(
11015                        || ErrorKind::MissingElement("alternative".into()),
11016                    )?))
11017                }
11018                S::Unique(mut values, deserializer) => {
11019                    if let Some(deserializer) = deserializer {
11020                        let value = deserializer.finish(reader)?;
11021                        ElementTypeContentDeserializer::store_unique(&mut values, value)?;
11022                    }
11023                    Ok(super::ElementTypeContent::Unique(values.ok_or_else(
11024                        || ErrorKind::MissingElement("unique".into()),
11025                    )?))
11026                }
11027                S::Key(mut values, deserializer) => {
11028                    if let Some(deserializer) = deserializer {
11029                        let value = deserializer.finish(reader)?;
11030                        ElementTypeContentDeserializer::store_key(&mut values, value)?;
11031                    }
11032                    Ok(super::ElementTypeContent::Key(
11033                        values.ok_or_else(|| ErrorKind::MissingElement("key".into()))?,
11034                    ))
11035                }
11036                S::Keyref(mut values, deserializer) => {
11037                    if let Some(deserializer) = deserializer {
11038                        let value = deserializer.finish(reader)?;
11039                        ElementTypeContentDeserializer::store_keyref(&mut values, value)?;
11040                    }
11041                    Ok(super::ElementTypeContent::Keyref(values.ok_or_else(
11042                        || ErrorKind::MissingElement("keyref".into()),
11043                    )?))
11044                }
11045                S::Done__(data) => Ok(data),
11046                S::Unknown__ => unreachable!(),
11047            }
11048        }
11049        fn store_annotation(
11050            values: &mut Option<super::Annotation>,
11051            value: super::Annotation,
11052        ) -> Result<(), Error> {
11053            if values.is_some() {
11054                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
11055                    b"annotation",
11056                )))?;
11057            }
11058            *values = Some(value);
11059            Ok(())
11060        }
11061        fn store_simple_type(
11062            values: &mut Option<super::SimpleBaseType>,
11063            value: super::SimpleBaseType,
11064        ) -> Result<(), Error> {
11065            if values.is_some() {
11066                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
11067                    b"simpleType",
11068                )))?;
11069            }
11070            *values = Some(value);
11071            Ok(())
11072        }
11073        fn store_complex_type(
11074            values: &mut Option<super::ComplexBaseType>,
11075            value: super::ComplexBaseType,
11076        ) -> Result<(), Error> {
11077            if values.is_some() {
11078                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
11079                    b"complexType",
11080                )))?;
11081            }
11082            *values = Some(value);
11083            Ok(())
11084        }
11085        fn store_alternative(
11086            values: &mut Option<super::AltType>,
11087            value: super::AltType,
11088        ) -> Result<(), Error> {
11089            if values.is_some() {
11090                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
11091                    b"alternative",
11092                )))?;
11093            }
11094            *values = Some(value);
11095            Ok(())
11096        }
11097        fn store_unique(
11098            values: &mut Option<super::KeybaseType>,
11099            value: super::KeybaseType,
11100        ) -> Result<(), Error> {
11101            if values.is_some() {
11102                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
11103                    b"unique",
11104                )))?;
11105            }
11106            *values = Some(value);
11107            Ok(())
11108        }
11109        fn store_key(
11110            values: &mut Option<super::KeybaseType>,
11111            value: super::KeybaseType,
11112        ) -> Result<(), Error> {
11113            if values.is_some() {
11114                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(b"key")))?;
11115            }
11116            *values = Some(value);
11117            Ok(())
11118        }
11119        fn store_keyref(
11120            values: &mut Option<super::Keyref>,
11121            value: super::Keyref,
11122        ) -> Result<(), Error> {
11123            if values.is_some() {
11124                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
11125                    b"keyref",
11126                )))?;
11127            }
11128            *values = Some(value);
11129            Ok(())
11130        }
11131        fn handle_annotation<'de, R>(
11132            &mut self,
11133            reader: &R,
11134            mut values: Option<super::Annotation>,
11135            output: DeserializerOutput<'de, super::Annotation>,
11136            fallback: &mut Option<ElementTypeContentDeserializerState>,
11137        ) -> Result<ElementHandlerOutput<'de>, Error>
11138        where
11139            R: DeserializeReader,
11140        {
11141            let DeserializerOutput {
11142                artifact,
11143                event,
11144                allow_any,
11145            } = output;
11146            if artifact.is_none() {
11147                *self.state = match fallback.take() {
11148                    None => ElementTypeContentDeserializerState::Init__,
11149                    Some(ElementTypeContentDeserializerState::Annotation(
11150                        _,
11151                        Some(deserializer),
11152                    )) => {
11153                        ElementTypeContentDeserializerState::Annotation(values, Some(deserializer))
11154                    }
11155                    _ => unreachable!(),
11156                };
11157                return Ok(ElementHandlerOutput::break_(event, allow_any));
11158            }
11159            match fallback.take() {
11160                None => (),
11161                Some(ElementTypeContentDeserializerState::Annotation(_, Some(deserializer))) => {
11162                    let data = deserializer.finish(reader)?;
11163                    ElementTypeContentDeserializer::store_annotation(&mut values, data)?;
11164                }
11165                Some(_) => unreachable!(),
11166            }
11167            Ok(match artifact {
11168                DeserializerArtifact::None => unreachable!(),
11169                DeserializerArtifact::Data(data) => {
11170                    ElementTypeContentDeserializer::store_annotation(&mut values, data)?;
11171                    let data = ElementTypeContentDeserializer::finish_state(
11172                        reader,
11173                        ElementTypeContentDeserializerState::Annotation(values, None),
11174                    )?;
11175                    *self.state = ElementTypeContentDeserializerState::Done__(data);
11176                    ElementHandlerOutput::Break { event, allow_any }
11177                }
11178                DeserializerArtifact::Deserializer(deserializer) => {
11179                    *self.state =
11180                        ElementTypeContentDeserializerState::Annotation(values, Some(deserializer));
11181                    ElementHandlerOutput::from_event_end(event, allow_any)
11182                }
11183            })
11184        }
11185        fn handle_simple_type<'de, R>(
11186            &mut self,
11187            reader: &R,
11188            mut values: Option<super::SimpleBaseType>,
11189            output: DeserializerOutput<'de, super::SimpleBaseType>,
11190            fallback: &mut Option<ElementTypeContentDeserializerState>,
11191        ) -> Result<ElementHandlerOutput<'de>, Error>
11192        where
11193            R: DeserializeReader,
11194        {
11195            let DeserializerOutput {
11196                artifact,
11197                event,
11198                allow_any,
11199            } = output;
11200            if artifact.is_none() {
11201                *self.state = match fallback.take() {
11202                    None => ElementTypeContentDeserializerState::Init__,
11203                    Some(ElementTypeContentDeserializerState::SimpleType(
11204                        _,
11205                        Some(deserializer),
11206                    )) => {
11207                        ElementTypeContentDeserializerState::SimpleType(values, Some(deserializer))
11208                    }
11209                    _ => unreachable!(),
11210                };
11211                return Ok(ElementHandlerOutput::break_(event, allow_any));
11212            }
11213            match fallback.take() {
11214                None => (),
11215                Some(ElementTypeContentDeserializerState::SimpleType(_, Some(deserializer))) => {
11216                    let data = deserializer.finish(reader)?;
11217                    ElementTypeContentDeserializer::store_simple_type(&mut values, data)?;
11218                }
11219                Some(_) => unreachable!(),
11220            }
11221            Ok(match artifact {
11222                DeserializerArtifact::None => unreachable!(),
11223                DeserializerArtifact::Data(data) => {
11224                    ElementTypeContentDeserializer::store_simple_type(&mut values, data)?;
11225                    let data = ElementTypeContentDeserializer::finish_state(
11226                        reader,
11227                        ElementTypeContentDeserializerState::SimpleType(values, None),
11228                    )?;
11229                    *self.state = ElementTypeContentDeserializerState::Done__(data);
11230                    ElementHandlerOutput::Break { event, allow_any }
11231                }
11232                DeserializerArtifact::Deserializer(deserializer) => {
11233                    *self.state =
11234                        ElementTypeContentDeserializerState::SimpleType(values, Some(deserializer));
11235                    ElementHandlerOutput::from_event_end(event, allow_any)
11236                }
11237            })
11238        }
11239        fn handle_complex_type<'de, R>(
11240            &mut self,
11241            reader: &R,
11242            mut values: Option<super::ComplexBaseType>,
11243            output: DeserializerOutput<'de, super::ComplexBaseType>,
11244            fallback: &mut Option<ElementTypeContentDeserializerState>,
11245        ) -> Result<ElementHandlerOutput<'de>, Error>
11246        where
11247            R: DeserializeReader,
11248        {
11249            let DeserializerOutput {
11250                artifact,
11251                event,
11252                allow_any,
11253            } = output;
11254            if artifact.is_none() {
11255                *self.state = match fallback.take() {
11256                    None => ElementTypeContentDeserializerState::Init__,
11257                    Some(ElementTypeContentDeserializerState::ComplexType(
11258                        _,
11259                        Some(deserializer),
11260                    )) => {
11261                        ElementTypeContentDeserializerState::ComplexType(values, Some(deserializer))
11262                    }
11263                    _ => unreachable!(),
11264                };
11265                return Ok(ElementHandlerOutput::break_(event, allow_any));
11266            }
11267            match fallback.take() {
11268                None => (),
11269                Some(ElementTypeContentDeserializerState::ComplexType(_, Some(deserializer))) => {
11270                    let data = deserializer.finish(reader)?;
11271                    ElementTypeContentDeserializer::store_complex_type(&mut values, data)?;
11272                }
11273                Some(_) => unreachable!(),
11274            }
11275            Ok(match artifact {
11276                DeserializerArtifact::None => unreachable!(),
11277                DeserializerArtifact::Data(data) => {
11278                    ElementTypeContentDeserializer::store_complex_type(&mut values, data)?;
11279                    let data = ElementTypeContentDeserializer::finish_state(
11280                        reader,
11281                        ElementTypeContentDeserializerState::ComplexType(values, None),
11282                    )?;
11283                    *self.state = ElementTypeContentDeserializerState::Done__(data);
11284                    ElementHandlerOutput::Break { event, allow_any }
11285                }
11286                DeserializerArtifact::Deserializer(deserializer) => {
11287                    *self.state = ElementTypeContentDeserializerState::ComplexType(
11288                        values,
11289                        Some(deserializer),
11290                    );
11291                    ElementHandlerOutput::from_event_end(event, allow_any)
11292                }
11293            })
11294        }
11295        fn handle_alternative<'de, R>(
11296            &mut self,
11297            reader: &R,
11298            mut values: Option<super::AltType>,
11299            output: DeserializerOutput<'de, super::AltType>,
11300            fallback: &mut Option<ElementTypeContentDeserializerState>,
11301        ) -> Result<ElementHandlerOutput<'de>, Error>
11302        where
11303            R: DeserializeReader,
11304        {
11305            let DeserializerOutput {
11306                artifact,
11307                event,
11308                allow_any,
11309            } = output;
11310            if artifact.is_none() {
11311                *self.state = match fallback.take() {
11312                    None => ElementTypeContentDeserializerState::Init__,
11313                    Some(ElementTypeContentDeserializerState::Alternative(
11314                        _,
11315                        Some(deserializer),
11316                    )) => {
11317                        ElementTypeContentDeserializerState::Alternative(values, Some(deserializer))
11318                    }
11319                    _ => unreachable!(),
11320                };
11321                return Ok(ElementHandlerOutput::break_(event, allow_any));
11322            }
11323            match fallback.take() {
11324                None => (),
11325                Some(ElementTypeContentDeserializerState::Alternative(_, Some(deserializer))) => {
11326                    let data = deserializer.finish(reader)?;
11327                    ElementTypeContentDeserializer::store_alternative(&mut values, data)?;
11328                }
11329                Some(_) => unreachable!(),
11330            }
11331            Ok(match artifact {
11332                DeserializerArtifact::None => unreachable!(),
11333                DeserializerArtifact::Data(data) => {
11334                    ElementTypeContentDeserializer::store_alternative(&mut values, data)?;
11335                    let data = ElementTypeContentDeserializer::finish_state(
11336                        reader,
11337                        ElementTypeContentDeserializerState::Alternative(values, None),
11338                    )?;
11339                    *self.state = ElementTypeContentDeserializerState::Done__(data);
11340                    ElementHandlerOutput::Break { event, allow_any }
11341                }
11342                DeserializerArtifact::Deserializer(deserializer) => {
11343                    *self.state = ElementTypeContentDeserializerState::Alternative(
11344                        values,
11345                        Some(deserializer),
11346                    );
11347                    ElementHandlerOutput::from_event_end(event, allow_any)
11348                }
11349            })
11350        }
11351        fn handle_unique<'de, R>(
11352            &mut self,
11353            reader: &R,
11354            mut values: Option<super::KeybaseType>,
11355            output: DeserializerOutput<'de, super::KeybaseType>,
11356            fallback: &mut Option<ElementTypeContentDeserializerState>,
11357        ) -> Result<ElementHandlerOutput<'de>, Error>
11358        where
11359            R: DeserializeReader,
11360        {
11361            let DeserializerOutput {
11362                artifact,
11363                event,
11364                allow_any,
11365            } = output;
11366            if artifact.is_none() {
11367                *self.state = match fallback.take() {
11368                    None => ElementTypeContentDeserializerState::Init__,
11369                    Some(ElementTypeContentDeserializerState::Unique(_, Some(deserializer))) => {
11370                        ElementTypeContentDeserializerState::Unique(values, Some(deserializer))
11371                    }
11372                    _ => unreachable!(),
11373                };
11374                return Ok(ElementHandlerOutput::break_(event, allow_any));
11375            }
11376            match fallback.take() {
11377                None => (),
11378                Some(ElementTypeContentDeserializerState::Unique(_, Some(deserializer))) => {
11379                    let data = deserializer.finish(reader)?;
11380                    ElementTypeContentDeserializer::store_unique(&mut values, data)?;
11381                }
11382                Some(_) => unreachable!(),
11383            }
11384            Ok(match artifact {
11385                DeserializerArtifact::None => unreachable!(),
11386                DeserializerArtifact::Data(data) => {
11387                    ElementTypeContentDeserializer::store_unique(&mut values, data)?;
11388                    let data = ElementTypeContentDeserializer::finish_state(
11389                        reader,
11390                        ElementTypeContentDeserializerState::Unique(values, None),
11391                    )?;
11392                    *self.state = ElementTypeContentDeserializerState::Done__(data);
11393                    ElementHandlerOutput::Break { event, allow_any }
11394                }
11395                DeserializerArtifact::Deserializer(deserializer) => {
11396                    *self.state =
11397                        ElementTypeContentDeserializerState::Unique(values, Some(deserializer));
11398                    ElementHandlerOutput::from_event_end(event, allow_any)
11399                }
11400            })
11401        }
11402        fn handle_key<'de, R>(
11403            &mut self,
11404            reader: &R,
11405            mut values: Option<super::KeybaseType>,
11406            output: DeserializerOutput<'de, super::KeybaseType>,
11407            fallback: &mut Option<ElementTypeContentDeserializerState>,
11408        ) -> Result<ElementHandlerOutput<'de>, Error>
11409        where
11410            R: DeserializeReader,
11411        {
11412            let DeserializerOutput {
11413                artifact,
11414                event,
11415                allow_any,
11416            } = output;
11417            if artifact.is_none() {
11418                *self.state = match fallback.take() {
11419                    None => ElementTypeContentDeserializerState::Init__,
11420                    Some(ElementTypeContentDeserializerState::Key(_, Some(deserializer))) => {
11421                        ElementTypeContentDeserializerState::Key(values, Some(deserializer))
11422                    }
11423                    _ => unreachable!(),
11424                };
11425                return Ok(ElementHandlerOutput::break_(event, allow_any));
11426            }
11427            match fallback.take() {
11428                None => (),
11429                Some(ElementTypeContentDeserializerState::Key(_, Some(deserializer))) => {
11430                    let data = deserializer.finish(reader)?;
11431                    ElementTypeContentDeserializer::store_key(&mut values, data)?;
11432                }
11433                Some(_) => unreachable!(),
11434            }
11435            Ok(match artifact {
11436                DeserializerArtifact::None => unreachable!(),
11437                DeserializerArtifact::Data(data) => {
11438                    ElementTypeContentDeserializer::store_key(&mut values, data)?;
11439                    let data = ElementTypeContentDeserializer::finish_state(
11440                        reader,
11441                        ElementTypeContentDeserializerState::Key(values, None),
11442                    )?;
11443                    *self.state = ElementTypeContentDeserializerState::Done__(data);
11444                    ElementHandlerOutput::Break { event, allow_any }
11445                }
11446                DeserializerArtifact::Deserializer(deserializer) => {
11447                    *self.state =
11448                        ElementTypeContentDeserializerState::Key(values, Some(deserializer));
11449                    ElementHandlerOutput::from_event_end(event, allow_any)
11450                }
11451            })
11452        }
11453        fn handle_keyref<'de, R>(
11454            &mut self,
11455            reader: &R,
11456            mut values: Option<super::Keyref>,
11457            output: DeserializerOutput<'de, super::Keyref>,
11458            fallback: &mut Option<ElementTypeContentDeserializerState>,
11459        ) -> Result<ElementHandlerOutput<'de>, Error>
11460        where
11461            R: DeserializeReader,
11462        {
11463            let DeserializerOutput {
11464                artifact,
11465                event,
11466                allow_any,
11467            } = output;
11468            if artifact.is_none() {
11469                *self.state = match fallback.take() {
11470                    None => ElementTypeContentDeserializerState::Init__,
11471                    Some(ElementTypeContentDeserializerState::Keyref(_, Some(deserializer))) => {
11472                        ElementTypeContentDeserializerState::Keyref(values, Some(deserializer))
11473                    }
11474                    _ => unreachable!(),
11475                };
11476                return Ok(ElementHandlerOutput::break_(event, allow_any));
11477            }
11478            match fallback.take() {
11479                None => (),
11480                Some(ElementTypeContentDeserializerState::Keyref(_, Some(deserializer))) => {
11481                    let data = deserializer.finish(reader)?;
11482                    ElementTypeContentDeserializer::store_keyref(&mut values, data)?;
11483                }
11484                Some(_) => unreachable!(),
11485            }
11486            Ok(match artifact {
11487                DeserializerArtifact::None => unreachable!(),
11488                DeserializerArtifact::Data(data) => {
11489                    ElementTypeContentDeserializer::store_keyref(&mut values, data)?;
11490                    let data = ElementTypeContentDeserializer::finish_state(
11491                        reader,
11492                        ElementTypeContentDeserializerState::Keyref(values, None),
11493                    )?;
11494                    *self.state = ElementTypeContentDeserializerState::Done__(data);
11495                    ElementHandlerOutput::Break { event, allow_any }
11496                }
11497                DeserializerArtifact::Deserializer(deserializer) => {
11498                    *self.state =
11499                        ElementTypeContentDeserializerState::Keyref(values, Some(deserializer));
11500                    ElementHandlerOutput::from_event_end(event, allow_any)
11501                }
11502            })
11503        }
11504    }
11505    impl<'de> Deserializer<'de, super::ElementTypeContent> for Box<ElementTypeContentDeserializer> {
11506        fn init<R>(
11507            reader: &R,
11508            event: Event<'de>,
11509        ) -> DeserializerResult<'de, super::ElementTypeContent>
11510        where
11511            R: DeserializeReader,
11512        {
11513            let deserializer = Box::new(ElementTypeContentDeserializer {
11514                state: Box::new(ElementTypeContentDeserializerState::Init__),
11515            });
11516            let mut output = deserializer.next(reader, event)?;
11517            output.artifact = match output.artifact {
11518                DeserializerArtifact::Deserializer(x)
11519                    if matches!(&*x.state, ElementTypeContentDeserializerState::Init__) =>
11520                {
11521                    DeserializerArtifact::None
11522                }
11523                artifact => artifact,
11524            };
11525            Ok(output)
11526        }
11527        fn next<R>(
11528            mut self,
11529            reader: &R,
11530            event: Event<'de>,
11531        ) -> DeserializerResult<'de, super::ElementTypeContent>
11532        where
11533            R: DeserializeReader,
11534        {
11535            use ElementTypeContentDeserializerState as S;
11536            let mut event = event;
11537            let mut fallback = None;
11538            let (event, allow_any) = loop {
11539                let state = replace(&mut *self.state, S::Unknown__);
11540                event = match (state, event) {
11541                    (S::Annotation(values, Some(deserializer)), event) => {
11542                        let output = deserializer.next(reader, event)?;
11543                        match self.handle_annotation(reader, values, output, &mut fallback)? {
11544                            ElementHandlerOutput::Break { event, allow_any } => {
11545                                break (event, allow_any)
11546                            }
11547                            ElementHandlerOutput::Continue { event, .. } => event,
11548                        }
11549                    }
11550                    (S::SimpleType(values, Some(deserializer)), event) => {
11551                        let output = deserializer.next(reader, event)?;
11552                        match self.handle_simple_type(reader, values, output, &mut fallback)? {
11553                            ElementHandlerOutput::Break { event, allow_any } => {
11554                                break (event, allow_any)
11555                            }
11556                            ElementHandlerOutput::Continue { event, .. } => event,
11557                        }
11558                    }
11559                    (S::ComplexType(values, Some(deserializer)), event) => {
11560                        let output = deserializer.next(reader, event)?;
11561                        match self.handle_complex_type(reader, values, output, &mut fallback)? {
11562                            ElementHandlerOutput::Break { event, allow_any } => {
11563                                break (event, allow_any)
11564                            }
11565                            ElementHandlerOutput::Continue { event, .. } => event,
11566                        }
11567                    }
11568                    (S::Alternative(values, Some(deserializer)), event) => {
11569                        let output = deserializer.next(reader, event)?;
11570                        match self.handle_alternative(reader, values, output, &mut fallback)? {
11571                            ElementHandlerOutput::Break { event, allow_any } => {
11572                                break (event, allow_any)
11573                            }
11574                            ElementHandlerOutput::Continue { event, .. } => event,
11575                        }
11576                    }
11577                    (S::Unique(values, Some(deserializer)), event) => {
11578                        let output = deserializer.next(reader, event)?;
11579                        match self.handle_unique(reader, values, output, &mut fallback)? {
11580                            ElementHandlerOutput::Break { event, allow_any } => {
11581                                break (event, allow_any)
11582                            }
11583                            ElementHandlerOutput::Continue { event, .. } => event,
11584                        }
11585                    }
11586                    (S::Key(values, Some(deserializer)), event) => {
11587                        let output = deserializer.next(reader, event)?;
11588                        match self.handle_key(reader, values, output, &mut fallback)? {
11589                            ElementHandlerOutput::Break { event, allow_any } => {
11590                                break (event, allow_any)
11591                            }
11592                            ElementHandlerOutput::Continue { event, .. } => event,
11593                        }
11594                    }
11595                    (S::Keyref(values, Some(deserializer)), event) => {
11596                        let output = deserializer.next(reader, event)?;
11597                        match self.handle_keyref(reader, values, output, &mut fallback)? {
11598                            ElementHandlerOutput::Break { event, allow_any } => {
11599                                break (event, allow_any)
11600                            }
11601                            ElementHandlerOutput::Continue { event, .. } => event,
11602                        }
11603                    }
11604                    (state, event @ Event::End(_)) => {
11605                        return Ok(DeserializerOutput {
11606                            artifact: DeserializerArtifact::Data(
11607                                ElementTypeContentDeserializer::finish_state(reader, state)?,
11608                            ),
11609                            event: DeserializerEvent::Continue(event),
11610                            allow_any: false,
11611                        });
11612                    }
11613                    (S::Init__, event) => match self.find_suitable(reader, event, &mut fallback)? {
11614                        ElementHandlerOutput::Break { event, allow_any } => {
11615                            break (event, allow_any)
11616                        }
11617                        ElementHandlerOutput::Continue { event, .. } => event,
11618                    },
11619                    (S::Annotation(values, None), event) => {
11620                        let output = <super::Annotation as WithDeserializer>::Deserializer::init(
11621                            reader, event,
11622                        )?;
11623                        match self.handle_annotation(reader, values, output, &mut fallback)? {
11624                            ElementHandlerOutput::Break { event, allow_any } => {
11625                                break (event, allow_any)
11626                            }
11627                            ElementHandlerOutput::Continue { event, .. } => event,
11628                        }
11629                    }
11630                    (S::SimpleType(values, None), event) => {
11631                        let output =
11632                            <super::SimpleBaseType as WithDeserializer>::Deserializer::init(
11633                                reader, event,
11634                            )?;
11635                        match self.handle_simple_type(reader, values, output, &mut fallback)? {
11636                            ElementHandlerOutput::Break { event, allow_any } => {
11637                                break (event, allow_any)
11638                            }
11639                            ElementHandlerOutput::Continue { event, .. } => event,
11640                        }
11641                    }
11642                    (S::ComplexType(values, None), event) => {
11643                        let output =
11644                            <super::ComplexBaseType as WithDeserializer>::Deserializer::init(
11645                                reader, event,
11646                            )?;
11647                        match self.handle_complex_type(reader, values, output, &mut fallback)? {
11648                            ElementHandlerOutput::Break { event, allow_any } => {
11649                                break (event, allow_any)
11650                            }
11651                            ElementHandlerOutput::Continue { event, .. } => event,
11652                        }
11653                    }
11654                    (S::Alternative(values, None), event) => {
11655                        let output = <super::AltType as WithDeserializer>::Deserializer::init(
11656                            reader, event,
11657                        )?;
11658                        match self.handle_alternative(reader, values, output, &mut fallback)? {
11659                            ElementHandlerOutput::Break { event, allow_any } => {
11660                                break (event, allow_any)
11661                            }
11662                            ElementHandlerOutput::Continue { event, .. } => event,
11663                        }
11664                    }
11665                    (S::Unique(values, None), event) => {
11666                        let output = <super::KeybaseType as WithDeserializer>::Deserializer::init(
11667                            reader, event,
11668                        )?;
11669                        match self.handle_unique(reader, 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, None), event) => {
11677                        let output = <super::KeybaseType as WithDeserializer>::Deserializer::init(
11678                            reader, event,
11679                        )?;
11680                        match self.handle_key(reader, values, output, &mut fallback)? {
11681                            ElementHandlerOutput::Break { event, allow_any } => {
11682                                break (event, allow_any)
11683                            }
11684                            ElementHandlerOutput::Continue { event, .. } => event,
11685                        }
11686                    }
11687                    (S::Keyref(values, None), event) => {
11688                        let output =
11689                            <super::Keyref as WithDeserializer>::Deserializer::init(reader, event)?;
11690                        match self.handle_keyref(reader, values, output, &mut fallback)? {
11691                            ElementHandlerOutput::Break { event, allow_any } => {
11692                                break (event, allow_any)
11693                            }
11694                            ElementHandlerOutput::Continue { event, .. } => event,
11695                        }
11696                    }
11697                    (s @ S::Done__(_), event) => {
11698                        *self.state = s;
11699                        break (DeserializerEvent::Continue(event), false);
11700                    }
11701                    (S::Unknown__, _) => unreachable!(),
11702                }
11703            };
11704            let artifact = if matches!(&*self.state, S::Done__(_)) {
11705                DeserializerArtifact::Data(self.finish(reader)?)
11706            } else {
11707                DeserializerArtifact::Deserializer(self)
11708            };
11709            Ok(DeserializerOutput {
11710                artifact,
11711                event,
11712                allow_any,
11713            })
11714        }
11715        fn finish<R>(self, reader: &R) -> Result<super::ElementTypeContent, Error>
11716        where
11717            R: DeserializeReader,
11718        {
11719            ElementTypeContentDeserializer::finish_state(reader, *self.state)
11720        }
11721    }
11722    #[derive(Debug)]
11723    pub struct AttributeTypeDeserializer {
11724        id: Option<String>,
11725        name: Option<String>,
11726        ref_: Option<super::QName>,
11727        type_: Option<super::QName>,
11728        use_: super::AttributeUseType,
11729        default: Option<String>,
11730        fixed: Option<String>,
11731        form: Option<super::FormChoiceType>,
11732        target_namespace: Option<String>,
11733        inheritable: Option<bool>,
11734        annotation: Option<super::Annotation>,
11735        simple_type: Option<super::SimpleBaseType>,
11736        state: Box<AttributeTypeDeserializerState>,
11737    }
11738    #[derive(Debug)]
11739    enum AttributeTypeDeserializerState {
11740        Init__,
11741        Annotation(Option<<super::Annotation as WithDeserializer>::Deserializer>),
11742        SimpleType(Option<<super::SimpleBaseType as WithDeserializer>::Deserializer>),
11743        Done__,
11744        Unknown__,
11745    }
11746    impl AttributeTypeDeserializer {
11747        fn from_bytes_start<R>(reader: &R, bytes_start: &BytesStart<'_>) -> Result<Box<Self>, Error>
11748        where
11749            R: DeserializeReader,
11750        {
11751            let mut id: Option<String> = None;
11752            let mut name: Option<String> = None;
11753            let mut ref_: Option<super::QName> = None;
11754            let mut type_: Option<super::QName> = None;
11755            let mut use_: Option<super::AttributeUseType> = None;
11756            let mut default: Option<String> = None;
11757            let mut fixed: Option<String> = None;
11758            let mut form: Option<super::FormChoiceType> = None;
11759            let mut target_namespace: Option<String> = None;
11760            let mut inheritable: Option<bool> = None;
11761            for attrib in filter_xmlns_attributes(bytes_start) {
11762                let attrib = attrib?;
11763                if matches!(
11764                    reader.resolve_local_name(attrib.key, &super::NS_XS),
11765                    Some(b"id")
11766                ) {
11767                    reader.read_attrib(&mut id, b"id", &attrib.value)?;
11768                } else if matches!(
11769                    reader.resolve_local_name(attrib.key, &super::NS_XS),
11770                    Some(b"name")
11771                ) {
11772                    reader.read_attrib(&mut name, b"name", &attrib.value)?;
11773                } else if matches!(
11774                    reader.resolve_local_name(attrib.key, &super::NS_XS),
11775                    Some(b"ref")
11776                ) {
11777                    reader.read_attrib(&mut ref_, b"ref", &attrib.value)?;
11778                } else if matches!(
11779                    reader.resolve_local_name(attrib.key, &super::NS_XS),
11780                    Some(b"type")
11781                ) {
11782                    reader.read_attrib(&mut type_, b"type", &attrib.value)?;
11783                } else if matches!(
11784                    reader.resolve_local_name(attrib.key, &super::NS_XS),
11785                    Some(b"use")
11786                ) {
11787                    reader.read_attrib(&mut use_, b"use", &attrib.value)?;
11788                } else if matches!(
11789                    reader.resolve_local_name(attrib.key, &super::NS_XS),
11790                    Some(b"default")
11791                ) {
11792                    reader.read_attrib(&mut default, b"default", &attrib.value)?;
11793                } else if matches!(
11794                    reader.resolve_local_name(attrib.key, &super::NS_XS),
11795                    Some(b"fixed")
11796                ) {
11797                    reader.read_attrib(&mut fixed, b"fixed", &attrib.value)?;
11798                } else if matches!(
11799                    reader.resolve_local_name(attrib.key, &super::NS_XS),
11800                    Some(b"form")
11801                ) {
11802                    reader.read_attrib(&mut form, b"form", &attrib.value)?;
11803                } else if matches!(
11804                    reader.resolve_local_name(attrib.key, &super::NS_XS),
11805                    Some(b"targetNamespace")
11806                ) {
11807                    reader.read_attrib(&mut target_namespace, b"targetNamespace", &attrib.value)?;
11808                } else if matches!(
11809                    reader.resolve_local_name(attrib.key, &super::NS_XS),
11810                    Some(b"inheritable")
11811                ) {
11812                    reader.read_attrib(&mut inheritable, b"inheritable", &attrib.value)?;
11813                }
11814            }
11815            Ok(Box::new(Self {
11816                id: id,
11817                name: name,
11818                ref_: ref_,
11819                type_: type_,
11820                use_: use_.unwrap_or_else(super::AttributeType::default_use_),
11821                default: default,
11822                fixed: fixed,
11823                form: form,
11824                target_namespace: target_namespace,
11825                inheritable: inheritable,
11826                annotation: None,
11827                simple_type: None,
11828                state: Box::new(AttributeTypeDeserializerState::Init__),
11829            }))
11830        }
11831        fn finish_state<R>(
11832            &mut self,
11833            reader: &R,
11834            state: AttributeTypeDeserializerState,
11835        ) -> Result<(), Error>
11836        where
11837            R: DeserializeReader,
11838        {
11839            use AttributeTypeDeserializerState as S;
11840            match state {
11841                S::Annotation(Some(deserializer)) => {
11842                    self.store_annotation(deserializer.finish(reader)?)?
11843                }
11844                S::SimpleType(Some(deserializer)) => {
11845                    self.store_simple_type(deserializer.finish(reader)?)?
11846                }
11847                _ => (),
11848            }
11849            Ok(())
11850        }
11851        fn store_annotation(&mut self, value: super::Annotation) -> Result<(), Error> {
11852            if self.annotation.is_some() {
11853                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
11854                    b"annotation",
11855                )))?;
11856            }
11857            self.annotation = Some(value);
11858            Ok(())
11859        }
11860        fn store_simple_type(&mut self, value: super::SimpleBaseType) -> Result<(), Error> {
11861            if self.simple_type.is_some() {
11862                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
11863                    b"simpleType",
11864                )))?;
11865            }
11866            self.simple_type = Some(value);
11867            Ok(())
11868        }
11869        fn handle_annotation<'de, R>(
11870            &mut self,
11871            reader: &R,
11872            output: DeserializerOutput<'de, super::Annotation>,
11873            fallback: &mut Option<AttributeTypeDeserializerState>,
11874        ) -> Result<ElementHandlerOutput<'de>, Error>
11875        where
11876            R: DeserializeReader,
11877        {
11878            let DeserializerOutput {
11879                artifact,
11880                event,
11881                allow_any,
11882            } = output;
11883            if artifact.is_none() {
11884                fallback.get_or_insert(AttributeTypeDeserializerState::Annotation(None));
11885                *self.state = AttributeTypeDeserializerState::SimpleType(None);
11886                return Ok(ElementHandlerOutput::from_event(event, allow_any));
11887            }
11888            if let Some(fallback) = fallback.take() {
11889                self.finish_state(reader, fallback)?;
11890            }
11891            Ok(match artifact {
11892                DeserializerArtifact::None => unreachable!(),
11893                DeserializerArtifact::Data(data) => {
11894                    self.store_annotation(data)?;
11895                    *self.state = AttributeTypeDeserializerState::SimpleType(None);
11896                    ElementHandlerOutput::from_event(event, allow_any)
11897                }
11898                DeserializerArtifact::Deserializer(deserializer) => {
11899                    let ret = ElementHandlerOutput::from_event(event, allow_any);
11900                    match &ret {
11901                        ElementHandlerOutput::Continue { .. } => {
11902                            fallback.get_or_insert(AttributeTypeDeserializerState::Annotation(
11903                                Some(deserializer),
11904                            ));
11905                            *self.state = AttributeTypeDeserializerState::SimpleType(None);
11906                        }
11907                        ElementHandlerOutput::Break { .. } => {
11908                            *self.state =
11909                                AttributeTypeDeserializerState::Annotation(Some(deserializer));
11910                        }
11911                    }
11912                    ret
11913                }
11914            })
11915        }
11916        fn handle_simple_type<'de, R>(
11917            &mut self,
11918            reader: &R,
11919            output: DeserializerOutput<'de, super::SimpleBaseType>,
11920            fallback: &mut Option<AttributeTypeDeserializerState>,
11921        ) -> Result<ElementHandlerOutput<'de>, Error>
11922        where
11923            R: DeserializeReader,
11924        {
11925            let DeserializerOutput {
11926                artifact,
11927                event,
11928                allow_any,
11929            } = output;
11930            if artifact.is_none() {
11931                fallback.get_or_insert(AttributeTypeDeserializerState::SimpleType(None));
11932                *self.state = AttributeTypeDeserializerState::Done__;
11933                return Ok(ElementHandlerOutput::from_event(event, allow_any));
11934            }
11935            if let Some(fallback) = fallback.take() {
11936                self.finish_state(reader, fallback)?;
11937            }
11938            Ok(match artifact {
11939                DeserializerArtifact::None => unreachable!(),
11940                DeserializerArtifact::Data(data) => {
11941                    self.store_simple_type(data)?;
11942                    *self.state = AttributeTypeDeserializerState::Done__;
11943                    ElementHandlerOutput::from_event(event, allow_any)
11944                }
11945                DeserializerArtifact::Deserializer(deserializer) => {
11946                    let ret = ElementHandlerOutput::from_event(event, allow_any);
11947                    match &ret {
11948                        ElementHandlerOutput::Continue { .. } => {
11949                            fallback.get_or_insert(AttributeTypeDeserializerState::SimpleType(
11950                                Some(deserializer),
11951                            ));
11952                            *self.state = AttributeTypeDeserializerState::Done__;
11953                        }
11954                        ElementHandlerOutput::Break { .. } => {
11955                            *self.state =
11956                                AttributeTypeDeserializerState::SimpleType(Some(deserializer));
11957                        }
11958                    }
11959                    ret
11960                }
11961            })
11962        }
11963    }
11964    impl<'de> Deserializer<'de, super::AttributeType> for Box<AttributeTypeDeserializer> {
11965        fn init<R>(reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::AttributeType>
11966        where
11967            R: DeserializeReader,
11968        {
11969            reader.init_deserializer_from_start_event(
11970                event,
11971                AttributeTypeDeserializer::from_bytes_start,
11972            )
11973        }
11974        fn next<R>(
11975            mut self,
11976            reader: &R,
11977            event: Event<'de>,
11978        ) -> DeserializerResult<'de, super::AttributeType>
11979        where
11980            R: DeserializeReader,
11981        {
11982            use AttributeTypeDeserializerState as S;
11983            let mut event = event;
11984            let mut fallback = None;
11985            let mut allow_any_element = false;
11986            let (event, allow_any) = loop {
11987                let state = replace(&mut *self.state, S::Unknown__);
11988                event = match (state, event) {
11989                    (S::Annotation(Some(deserializer)), event) => {
11990                        let output = deserializer.next(reader, event)?;
11991                        match self.handle_annotation(reader, output, &mut fallback)? {
11992                            ElementHandlerOutput::Continue { event, allow_any } => {
11993                                allow_any_element = allow_any_element || allow_any;
11994                                event
11995                            }
11996                            ElementHandlerOutput::Break { event, allow_any } => {
11997                                break (event, allow_any)
11998                            }
11999                        }
12000                    }
12001                    (S::SimpleType(Some(deserializer)), event) => {
12002                        let output = deserializer.next(reader, event)?;
12003                        match self.handle_simple_type(reader, output, &mut fallback)? {
12004                            ElementHandlerOutput::Continue { event, allow_any } => {
12005                                allow_any_element = allow_any_element || allow_any;
12006                                event
12007                            }
12008                            ElementHandlerOutput::Break { event, allow_any } => {
12009                                break (event, allow_any)
12010                            }
12011                        }
12012                    }
12013                    (_, Event::End(_)) => {
12014                        if let Some(fallback) = fallback.take() {
12015                            self.finish_state(reader, fallback)?;
12016                        }
12017                        return Ok(DeserializerOutput {
12018                            artifact: DeserializerArtifact::Data(self.finish(reader)?),
12019                            event: DeserializerEvent::None,
12020                            allow_any: false,
12021                        });
12022                    }
12023                    (S::Init__, event) => {
12024                        fallback.get_or_insert(S::Init__);
12025                        *self.state = AttributeTypeDeserializerState::Annotation(None);
12026                        event
12027                    }
12028                    (S::Annotation(None), event @ (Event::Start(_) | Event::Empty(_))) => {
12029                        if reader.check_start_tag_name(&event, Some(&super::NS_XS), b"annotation") {
12030                            let output =
12031                                <super::Annotation as WithDeserializer>::Deserializer::init(
12032                                    reader, event,
12033                                )?;
12034                            match self.handle_annotation(reader, output, &mut fallback)? {
12035                                ElementHandlerOutput::Continue { event, allow_any } => {
12036                                    allow_any_element = allow_any_element || allow_any;
12037                                    event
12038                                }
12039                                ElementHandlerOutput::Break { event, allow_any } => {
12040                                    break (event, allow_any)
12041                                }
12042                            }
12043                        } else {
12044                            *self.state = S::SimpleType(None);
12045                            allow_any_element = true;
12046                            fallback.get_or_insert(S::Annotation(None));
12047                            event
12048                        }
12049                    }
12050                    (S::SimpleType(None), event @ (Event::Start(_) | Event::Empty(_))) => {
12051                        if reader.check_start_tag_name(&event, Some(&super::NS_XS), b"simpleType") {
12052                            let output =
12053                                <super::SimpleBaseType as WithDeserializer>::Deserializer::init(
12054                                    reader, event,
12055                                )?;
12056                            match self.handle_simple_type(reader, output, &mut fallback)? {
12057                                ElementHandlerOutput::Continue { event, allow_any } => {
12058                                    allow_any_element = allow_any_element || allow_any;
12059                                    event
12060                                }
12061                                ElementHandlerOutput::Break { event, allow_any } => {
12062                                    break (event, allow_any)
12063                                }
12064                            }
12065                        } else {
12066                            *self.state = S::Done__;
12067                            allow_any_element = true;
12068                            fallback.get_or_insert(S::SimpleType(None));
12069                            event
12070                        }
12071                    }
12072                    (S::Done__, event) => {
12073                        fallback.get_or_insert(S::Done__);
12074                        break (DeserializerEvent::Continue(event), allow_any_element);
12075                    }
12076                    (S::Unknown__, _) => unreachable!(),
12077                    (state, event) => {
12078                        *self.state = state;
12079                        break (DeserializerEvent::Break(event), false);
12080                    }
12081                }
12082            };
12083            if let Some(fallback) = fallback {
12084                *self.state = fallback;
12085            }
12086            Ok(DeserializerOutput {
12087                artifact: DeserializerArtifact::Deserializer(self),
12088                event,
12089                allow_any,
12090            })
12091        }
12092        fn finish<R>(mut self, reader: &R) -> Result<super::AttributeType, Error>
12093        where
12094            R: DeserializeReader,
12095        {
12096            let state = replace(&mut *self.state, AttributeTypeDeserializerState::Unknown__);
12097            self.finish_state(reader, state)?;
12098            Ok(super::AttributeType {
12099                id: self.id,
12100                name: self.name,
12101                ref_: self.ref_,
12102                type_: self.type_,
12103                use_: self.use_,
12104                default: self.default,
12105                fixed: self.fixed,
12106                form: self.form,
12107                target_namespace: self.target_namespace,
12108                inheritable: self.inheritable,
12109                annotation: self.annotation,
12110                simple_type: self.simple_type,
12111            })
12112        }
12113    }
12114    #[derive(Debug)]
12115    pub struct NotationDeserializer {
12116        id: Option<String>,
12117        name: String,
12118        public: Option<String>,
12119        system: Option<String>,
12120        annotation: Option<super::Annotation>,
12121        state: Box<NotationDeserializerState>,
12122    }
12123    #[derive(Debug)]
12124    enum NotationDeserializerState {
12125        Init__,
12126        Annotation(Option<<super::Annotation as WithDeserializer>::Deserializer>),
12127        Done__,
12128        Unknown__,
12129    }
12130    impl NotationDeserializer {
12131        fn from_bytes_start<R>(reader: &R, bytes_start: &BytesStart<'_>) -> Result<Box<Self>, Error>
12132        where
12133            R: DeserializeReader,
12134        {
12135            let mut id: Option<String> = None;
12136            let mut name: Option<String> = None;
12137            let mut public: Option<String> = None;
12138            let mut system: Option<String> = None;
12139            for attrib in filter_xmlns_attributes(bytes_start) {
12140                let attrib = attrib?;
12141                if matches!(
12142                    reader.resolve_local_name(attrib.key, &super::NS_XS),
12143                    Some(b"id")
12144                ) {
12145                    reader.read_attrib(&mut id, b"id", &attrib.value)?;
12146                } else if matches!(
12147                    reader.resolve_local_name(attrib.key, &super::NS_XS),
12148                    Some(b"name")
12149                ) {
12150                    reader.read_attrib(&mut name, b"name", &attrib.value)?;
12151                } else if matches!(
12152                    reader.resolve_local_name(attrib.key, &super::NS_XS),
12153                    Some(b"public")
12154                ) {
12155                    reader.read_attrib(&mut public, b"public", &attrib.value)?;
12156                } else if matches!(
12157                    reader.resolve_local_name(attrib.key, &super::NS_XS),
12158                    Some(b"system")
12159                ) {
12160                    reader.read_attrib(&mut system, b"system", &attrib.value)?;
12161                }
12162            }
12163            Ok(Box::new(Self {
12164                id: id,
12165                name: name
12166                    .ok_or_else(|| reader.map_error(ErrorKind::MissingAttribute("name".into())))?,
12167                public: public,
12168                system: system,
12169                annotation: None,
12170                state: Box::new(NotationDeserializerState::Init__),
12171            }))
12172        }
12173        fn finish_state<R>(
12174            &mut self,
12175            reader: &R,
12176            state: NotationDeserializerState,
12177        ) -> Result<(), Error>
12178        where
12179            R: DeserializeReader,
12180        {
12181            use NotationDeserializerState as S;
12182            match state {
12183                S::Annotation(Some(deserializer)) => {
12184                    self.store_annotation(deserializer.finish(reader)?)?
12185                }
12186                _ => (),
12187            }
12188            Ok(())
12189        }
12190        fn store_annotation(&mut self, value: super::Annotation) -> Result<(), Error> {
12191            if self.annotation.is_some() {
12192                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
12193                    b"annotation",
12194                )))?;
12195            }
12196            self.annotation = Some(value);
12197            Ok(())
12198        }
12199        fn handle_annotation<'de, R>(
12200            &mut self,
12201            reader: &R,
12202            output: DeserializerOutput<'de, super::Annotation>,
12203            fallback: &mut Option<NotationDeserializerState>,
12204        ) -> Result<ElementHandlerOutput<'de>, Error>
12205        where
12206            R: DeserializeReader,
12207        {
12208            let DeserializerOutput {
12209                artifact,
12210                event,
12211                allow_any,
12212            } = output;
12213            if artifact.is_none() {
12214                fallback.get_or_insert(NotationDeserializerState::Annotation(None));
12215                *self.state = NotationDeserializerState::Done__;
12216                return Ok(ElementHandlerOutput::from_event(event, allow_any));
12217            }
12218            if let Some(fallback) = fallback.take() {
12219                self.finish_state(reader, fallback)?;
12220            }
12221            Ok(match artifact {
12222                DeserializerArtifact::None => unreachable!(),
12223                DeserializerArtifact::Data(data) => {
12224                    self.store_annotation(data)?;
12225                    *self.state = NotationDeserializerState::Done__;
12226                    ElementHandlerOutput::from_event(event, allow_any)
12227                }
12228                DeserializerArtifact::Deserializer(deserializer) => {
12229                    let ret = ElementHandlerOutput::from_event(event, allow_any);
12230                    match &ret {
12231                        ElementHandlerOutput::Continue { .. } => {
12232                            fallback.get_or_insert(NotationDeserializerState::Annotation(Some(
12233                                deserializer,
12234                            )));
12235                            *self.state = NotationDeserializerState::Done__;
12236                        }
12237                        ElementHandlerOutput::Break { .. } => {
12238                            *self.state = NotationDeserializerState::Annotation(Some(deserializer));
12239                        }
12240                    }
12241                    ret
12242                }
12243            })
12244        }
12245    }
12246    impl<'de> Deserializer<'de, super::Notation> for Box<NotationDeserializer> {
12247        fn init<R>(reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::Notation>
12248        where
12249            R: DeserializeReader,
12250        {
12251            reader.init_deserializer_from_start_event(event, NotationDeserializer::from_bytes_start)
12252        }
12253        fn next<R>(
12254            mut self,
12255            reader: &R,
12256            event: Event<'de>,
12257        ) -> DeserializerResult<'de, super::Notation>
12258        where
12259            R: DeserializeReader,
12260        {
12261            use NotationDeserializerState as S;
12262            let mut event = event;
12263            let mut fallback = None;
12264            let mut allow_any_element = false;
12265            let (event, allow_any) = loop {
12266                let state = replace(&mut *self.state, S::Unknown__);
12267                event = match (state, event) {
12268                    (S::Annotation(Some(deserializer)), event) => {
12269                        let output = deserializer.next(reader, event)?;
12270                        match self.handle_annotation(reader, output, &mut fallback)? {
12271                            ElementHandlerOutput::Continue { event, allow_any } => {
12272                                allow_any_element = allow_any_element || allow_any;
12273                                event
12274                            }
12275                            ElementHandlerOutput::Break { event, allow_any } => {
12276                                break (event, allow_any)
12277                            }
12278                        }
12279                    }
12280                    (_, Event::End(_)) => {
12281                        if let Some(fallback) = fallback.take() {
12282                            self.finish_state(reader, fallback)?;
12283                        }
12284                        return Ok(DeserializerOutput {
12285                            artifact: DeserializerArtifact::Data(self.finish(reader)?),
12286                            event: DeserializerEvent::None,
12287                            allow_any: false,
12288                        });
12289                    }
12290                    (S::Init__, event) => {
12291                        fallback.get_or_insert(S::Init__);
12292                        *self.state = NotationDeserializerState::Annotation(None);
12293                        event
12294                    }
12295                    (S::Annotation(None), event @ (Event::Start(_) | Event::Empty(_))) => {
12296                        if reader.check_start_tag_name(&event, Some(&super::NS_XS), b"annotation") {
12297                            let output =
12298                                <super::Annotation as WithDeserializer>::Deserializer::init(
12299                                    reader, event,
12300                                )?;
12301                            match self.handle_annotation(reader, output, &mut fallback)? {
12302                                ElementHandlerOutput::Continue { event, allow_any } => {
12303                                    allow_any_element = allow_any_element || allow_any;
12304                                    event
12305                                }
12306                                ElementHandlerOutput::Break { event, allow_any } => {
12307                                    break (event, allow_any)
12308                                }
12309                            }
12310                        } else {
12311                            *self.state = S::Done__;
12312                            allow_any_element = true;
12313                            fallback.get_or_insert(S::Annotation(None));
12314                            event
12315                        }
12316                    }
12317                    (S::Done__, event) => {
12318                        fallback.get_or_insert(S::Done__);
12319                        break (DeserializerEvent::Continue(event), allow_any_element);
12320                    }
12321                    (S::Unknown__, _) => unreachable!(),
12322                    (state, event) => {
12323                        *self.state = state;
12324                        break (DeserializerEvent::Break(event), false);
12325                    }
12326                }
12327            };
12328            if let Some(fallback) = fallback {
12329                *self.state = fallback;
12330            }
12331            Ok(DeserializerOutput {
12332                artifact: DeserializerArtifact::Deserializer(self),
12333                event,
12334                allow_any,
12335            })
12336        }
12337        fn finish<R>(mut self, reader: &R) -> Result<super::Notation, Error>
12338        where
12339            R: DeserializeReader,
12340        {
12341            let state = replace(&mut *self.state, NotationDeserializerState::Unknown__);
12342            self.finish_state(reader, state)?;
12343            Ok(super::Notation {
12344                id: self.id,
12345                name: self.name,
12346                public: self.public,
12347                system: self.system,
12348                annotation: self.annotation,
12349            })
12350        }
12351    }
12352    #[derive(Debug)]
12353    pub struct AppinfoDeserializer {
12354        source: Option<String>,
12355        state: Box<AppinfoDeserializerState>,
12356    }
12357    #[derive(Debug)]
12358    enum AppinfoDeserializerState {
12359        Init__,
12360        Unknown__,
12361    }
12362    impl AppinfoDeserializer {
12363        fn from_bytes_start<R>(reader: &R, bytes_start: &BytesStart<'_>) -> Result<Box<Self>, Error>
12364        where
12365            R: DeserializeReader,
12366        {
12367            let mut source: Option<String> = None;
12368            for attrib in filter_xmlns_attributes(bytes_start) {
12369                let attrib = attrib?;
12370                if matches!(
12371                    reader.resolve_local_name(attrib.key, &super::NS_XS),
12372                    Some(b"source")
12373                ) {
12374                    reader.read_attrib(&mut source, b"source", &attrib.value)?;
12375                }
12376            }
12377            Ok(Box::new(Self {
12378                source: source,
12379                state: Box::new(AppinfoDeserializerState::Init__),
12380            }))
12381        }
12382        fn finish_state<R>(
12383            &mut self,
12384            reader: &R,
12385            state: AppinfoDeserializerState,
12386        ) -> Result<(), Error>
12387        where
12388            R: DeserializeReader,
12389        {
12390            Ok(())
12391        }
12392    }
12393    impl<'de> Deserializer<'de, super::Appinfo> for Box<AppinfoDeserializer> {
12394        fn init<R>(reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::Appinfo>
12395        where
12396            R: DeserializeReader,
12397        {
12398            reader.init_deserializer_from_start_event(event, AppinfoDeserializer::from_bytes_start)
12399        }
12400        fn next<R>(
12401            mut self,
12402            reader: &R,
12403            event: Event<'de>,
12404        ) -> DeserializerResult<'de, super::Appinfo>
12405        where
12406            R: DeserializeReader,
12407        {
12408            if let Event::End(_) = &event {
12409                Ok(DeserializerOutput {
12410                    artifact: DeserializerArtifact::Data(self.finish(reader)?),
12411                    event: DeserializerEvent::None,
12412                    allow_any: false,
12413                })
12414            } else {
12415                Ok(DeserializerOutput {
12416                    artifact: DeserializerArtifact::Deserializer(self),
12417                    event: DeserializerEvent::Break(event),
12418                    allow_any: true,
12419                })
12420            }
12421        }
12422        fn finish<R>(mut self, reader: &R) -> Result<super::Appinfo, Error>
12423        where
12424            R: DeserializeReader,
12425        {
12426            let state = replace(&mut *self.state, AppinfoDeserializerState::Unknown__);
12427            self.finish_state(reader, state)?;
12428            Ok(super::Appinfo {
12429                source: self.source,
12430            })
12431        }
12432    }
12433    #[derive(Debug)]
12434    pub struct DocumentationDeserializer {
12435        source: Option<String>,
12436        lang: Option<String>,
12437        state: Box<DocumentationDeserializerState>,
12438    }
12439    #[derive(Debug)]
12440    enum DocumentationDeserializerState {
12441        Init__,
12442        Unknown__,
12443    }
12444    impl DocumentationDeserializer {
12445        fn from_bytes_start<R>(reader: &R, bytes_start: &BytesStart<'_>) -> Result<Box<Self>, Error>
12446        where
12447            R: DeserializeReader,
12448        {
12449            let mut source: Option<String> = None;
12450            let mut lang: Option<String> = None;
12451            for attrib in filter_xmlns_attributes(bytes_start) {
12452                let attrib = attrib?;
12453                if matches!(
12454                    reader.resolve_local_name(attrib.key, &super::NS_XS),
12455                    Some(b"source")
12456                ) {
12457                    reader.read_attrib(&mut source, b"source", &attrib.value)?;
12458                } else if matches!(
12459                    reader.resolve_local_name(attrib.key, &super::NS_XML),
12460                    Some(b"lang")
12461                ) {
12462                    reader.read_attrib(&mut lang, b"lang", &attrib.value)?;
12463                }
12464            }
12465            Ok(Box::new(Self {
12466                source: source,
12467                lang: lang,
12468                state: Box::new(DocumentationDeserializerState::Init__),
12469            }))
12470        }
12471        fn finish_state<R>(
12472            &mut self,
12473            reader: &R,
12474            state: DocumentationDeserializerState,
12475        ) -> Result<(), Error>
12476        where
12477            R: DeserializeReader,
12478        {
12479            Ok(())
12480        }
12481    }
12482    impl<'de> Deserializer<'de, super::Documentation> for Box<DocumentationDeserializer> {
12483        fn init<R>(reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::Documentation>
12484        where
12485            R: DeserializeReader,
12486        {
12487            reader.init_deserializer_from_start_event(
12488                event,
12489                DocumentationDeserializer::from_bytes_start,
12490            )
12491        }
12492        fn next<R>(
12493            mut self,
12494            reader: &R,
12495            event: Event<'de>,
12496        ) -> DeserializerResult<'de, super::Documentation>
12497        where
12498            R: DeserializeReader,
12499        {
12500            if let Event::End(_) = &event {
12501                Ok(DeserializerOutput {
12502                    artifact: DeserializerArtifact::Data(self.finish(reader)?),
12503                    event: DeserializerEvent::None,
12504                    allow_any: false,
12505                })
12506            } else {
12507                Ok(DeserializerOutput {
12508                    artifact: DeserializerArtifact::Deserializer(self),
12509                    event: DeserializerEvent::Break(event),
12510                    allow_any: true,
12511                })
12512            }
12513        }
12514        fn finish<R>(mut self, reader: &R) -> Result<super::Documentation, Error>
12515        where
12516            R: DeserializeReader,
12517        {
12518            let state = replace(&mut *self.state, DocumentationDeserializerState::Unknown__);
12519            self.finish_state(reader, state)?;
12520            Ok(super::Documentation {
12521                source: self.source,
12522                lang: self.lang,
12523            })
12524        }
12525    }
12526    #[derive(Debug)]
12527    pub struct WildcardTypeDeserializer {
12528        id: Option<String>,
12529        namespace: Option<super::NamespaceListType>,
12530        not_namespace: Option<super::BasicNamespaceListType>,
12531        process_contents: super::ProcessContentsType,
12532        annotation: Option<super::Annotation>,
12533        state: Box<WildcardTypeDeserializerState>,
12534    }
12535    #[derive(Debug)]
12536    enum WildcardTypeDeserializerState {
12537        Init__,
12538        Annotation(Option<<super::Annotation as WithDeserializer>::Deserializer>),
12539        Done__,
12540        Unknown__,
12541    }
12542    impl WildcardTypeDeserializer {
12543        fn from_bytes_start<R>(reader: &R, bytes_start: &BytesStart<'_>) -> Result<Box<Self>, Error>
12544        where
12545            R: DeserializeReader,
12546        {
12547            let mut id: Option<String> = None;
12548            let mut namespace: Option<super::NamespaceListType> = None;
12549            let mut not_namespace: Option<super::BasicNamespaceListType> = None;
12550            let mut process_contents: Option<super::ProcessContentsType> = None;
12551            for attrib in filter_xmlns_attributes(bytes_start) {
12552                let attrib = attrib?;
12553                if matches!(
12554                    reader.resolve_local_name(attrib.key, &super::NS_XS),
12555                    Some(b"id")
12556                ) {
12557                    reader.read_attrib(&mut id, b"id", &attrib.value)?;
12558                } else if matches!(
12559                    reader.resolve_local_name(attrib.key, &super::NS_XS),
12560                    Some(b"namespace")
12561                ) {
12562                    reader.read_attrib(&mut namespace, b"namespace", &attrib.value)?;
12563                } else if matches!(
12564                    reader.resolve_local_name(attrib.key, &super::NS_XS),
12565                    Some(b"notNamespace")
12566                ) {
12567                    reader.read_attrib(&mut not_namespace, b"notNamespace", &attrib.value)?;
12568                } else if matches!(
12569                    reader.resolve_local_name(attrib.key, &super::NS_XS),
12570                    Some(b"processContents")
12571                ) {
12572                    reader.read_attrib(&mut process_contents, b"processContents", &attrib.value)?;
12573                }
12574            }
12575            Ok(Box::new(Self {
12576                id: id,
12577                namespace: namespace,
12578                not_namespace: not_namespace,
12579                process_contents: process_contents
12580                    .unwrap_or_else(super::WildcardType::default_process_contents),
12581                annotation: None,
12582                state: Box::new(WildcardTypeDeserializerState::Init__),
12583            }))
12584        }
12585        fn finish_state<R>(
12586            &mut self,
12587            reader: &R,
12588            state: WildcardTypeDeserializerState,
12589        ) -> Result<(), Error>
12590        where
12591            R: DeserializeReader,
12592        {
12593            use WildcardTypeDeserializerState as S;
12594            match state {
12595                S::Annotation(Some(deserializer)) => {
12596                    self.store_annotation(deserializer.finish(reader)?)?
12597                }
12598                _ => (),
12599            }
12600            Ok(())
12601        }
12602        fn store_annotation(&mut self, value: super::Annotation) -> Result<(), Error> {
12603            if self.annotation.is_some() {
12604                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
12605                    b"annotation",
12606                )))?;
12607            }
12608            self.annotation = Some(value);
12609            Ok(())
12610        }
12611        fn handle_annotation<'de, R>(
12612            &mut self,
12613            reader: &R,
12614            output: DeserializerOutput<'de, super::Annotation>,
12615            fallback: &mut Option<WildcardTypeDeserializerState>,
12616        ) -> Result<ElementHandlerOutput<'de>, Error>
12617        where
12618            R: DeserializeReader,
12619        {
12620            let DeserializerOutput {
12621                artifact,
12622                event,
12623                allow_any,
12624            } = output;
12625            if artifact.is_none() {
12626                fallback.get_or_insert(WildcardTypeDeserializerState::Annotation(None));
12627                *self.state = WildcardTypeDeserializerState::Done__;
12628                return Ok(ElementHandlerOutput::from_event(event, allow_any));
12629            }
12630            if let Some(fallback) = fallback.take() {
12631                self.finish_state(reader, fallback)?;
12632            }
12633            Ok(match artifact {
12634                DeserializerArtifact::None => unreachable!(),
12635                DeserializerArtifact::Data(data) => {
12636                    self.store_annotation(data)?;
12637                    *self.state = WildcardTypeDeserializerState::Done__;
12638                    ElementHandlerOutput::from_event(event, allow_any)
12639                }
12640                DeserializerArtifact::Deserializer(deserializer) => {
12641                    let ret = ElementHandlerOutput::from_event(event, allow_any);
12642                    match &ret {
12643                        ElementHandlerOutput::Continue { .. } => {
12644                            fallback.get_or_insert(WildcardTypeDeserializerState::Annotation(
12645                                Some(deserializer),
12646                            ));
12647                            *self.state = WildcardTypeDeserializerState::Done__;
12648                        }
12649                        ElementHandlerOutput::Break { .. } => {
12650                            *self.state =
12651                                WildcardTypeDeserializerState::Annotation(Some(deserializer));
12652                        }
12653                    }
12654                    ret
12655                }
12656            })
12657        }
12658    }
12659    impl<'de> Deserializer<'de, super::WildcardType> for Box<WildcardTypeDeserializer> {
12660        fn init<R>(reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::WildcardType>
12661        where
12662            R: DeserializeReader,
12663        {
12664            reader.init_deserializer_from_start_event(
12665                event,
12666                WildcardTypeDeserializer::from_bytes_start,
12667            )
12668        }
12669        fn next<R>(
12670            mut self,
12671            reader: &R,
12672            event: Event<'de>,
12673        ) -> DeserializerResult<'de, super::WildcardType>
12674        where
12675            R: DeserializeReader,
12676        {
12677            use WildcardTypeDeserializerState as S;
12678            let mut event = event;
12679            let mut fallback = None;
12680            let mut allow_any_element = false;
12681            let (event, allow_any) = loop {
12682                let state = replace(&mut *self.state, S::Unknown__);
12683                event = match (state, event) {
12684                    (S::Annotation(Some(deserializer)), event) => {
12685                        let output = deserializer.next(reader, event)?;
12686                        match self.handle_annotation(reader, output, &mut fallback)? {
12687                            ElementHandlerOutput::Continue { event, allow_any } => {
12688                                allow_any_element = allow_any_element || allow_any;
12689                                event
12690                            }
12691                            ElementHandlerOutput::Break { event, allow_any } => {
12692                                break (event, allow_any)
12693                            }
12694                        }
12695                    }
12696                    (_, Event::End(_)) => {
12697                        if let Some(fallback) = fallback.take() {
12698                            self.finish_state(reader, fallback)?;
12699                        }
12700                        return Ok(DeserializerOutput {
12701                            artifact: DeserializerArtifact::Data(self.finish(reader)?),
12702                            event: DeserializerEvent::None,
12703                            allow_any: false,
12704                        });
12705                    }
12706                    (S::Init__, event) => {
12707                        fallback.get_or_insert(S::Init__);
12708                        *self.state = WildcardTypeDeserializerState::Annotation(None);
12709                        event
12710                    }
12711                    (S::Annotation(None), event @ (Event::Start(_) | Event::Empty(_))) => {
12712                        if reader.check_start_tag_name(&event, Some(&super::NS_XS), b"annotation") {
12713                            let output =
12714                                <super::Annotation as WithDeserializer>::Deserializer::init(
12715                                    reader, event,
12716                                )?;
12717                            match self.handle_annotation(reader, output, &mut fallback)? {
12718                                ElementHandlerOutput::Continue { event, allow_any } => {
12719                                    allow_any_element = allow_any_element || allow_any;
12720                                    event
12721                                }
12722                                ElementHandlerOutput::Break { event, allow_any } => {
12723                                    break (event, allow_any)
12724                                }
12725                            }
12726                        } else {
12727                            *self.state = S::Done__;
12728                            allow_any_element = true;
12729                            fallback.get_or_insert(S::Annotation(None));
12730                            event
12731                        }
12732                    }
12733                    (S::Done__, event) => {
12734                        fallback.get_or_insert(S::Done__);
12735                        break (DeserializerEvent::Continue(event), allow_any_element);
12736                    }
12737                    (S::Unknown__, _) => unreachable!(),
12738                    (state, event) => {
12739                        *self.state = state;
12740                        break (DeserializerEvent::Break(event), false);
12741                    }
12742                }
12743            };
12744            if let Some(fallback) = fallback {
12745                *self.state = fallback;
12746            }
12747            Ok(DeserializerOutput {
12748                artifact: DeserializerArtifact::Deserializer(self),
12749                event,
12750                allow_any,
12751            })
12752        }
12753        fn finish<R>(mut self, reader: &R) -> Result<super::WildcardType, Error>
12754        where
12755            R: DeserializeReader,
12756        {
12757            let state = replace(&mut *self.state, WildcardTypeDeserializerState::Unknown__);
12758            self.finish_state(reader, state)?;
12759            Ok(super::WildcardType {
12760                id: self.id,
12761                namespace: self.namespace,
12762                not_namespace: self.not_namespace,
12763                process_contents: self.process_contents,
12764                annotation: self.annotation,
12765            })
12766        }
12767    }
12768    #[derive(Debug)]
12769    pub struct RestrictionDeserializer {
12770        id: Option<String>,
12771        base: Option<super::QName>,
12772        content: Vec<super::RestrictionContent>,
12773        state: Box<RestrictionDeserializerState>,
12774    }
12775    #[derive(Debug)]
12776    enum RestrictionDeserializerState {
12777        Init__,
12778        Next__,
12779        Content__(<super::RestrictionContent as WithDeserializer>::Deserializer),
12780        Unknown__,
12781    }
12782    impl RestrictionDeserializer {
12783        fn from_bytes_start<R>(reader: &R, bytes_start: &BytesStart<'_>) -> Result<Box<Self>, Error>
12784        where
12785            R: DeserializeReader,
12786        {
12787            let mut id: Option<String> = None;
12788            let mut base: Option<super::QName> = None;
12789            for attrib in filter_xmlns_attributes(bytes_start) {
12790                let attrib = attrib?;
12791                if matches!(
12792                    reader.resolve_local_name(attrib.key, &super::NS_XS),
12793                    Some(b"id")
12794                ) {
12795                    reader.read_attrib(&mut id, b"id", &attrib.value)?;
12796                } else if matches!(
12797                    reader.resolve_local_name(attrib.key, &super::NS_XS),
12798                    Some(b"base")
12799                ) {
12800                    reader.read_attrib(&mut base, b"base", &attrib.value)?;
12801                }
12802            }
12803            Ok(Box::new(Self {
12804                id: id,
12805                base: base,
12806                content: Vec::new(),
12807                state: Box::new(RestrictionDeserializerState::Init__),
12808            }))
12809        }
12810        fn finish_state<R>(
12811            &mut self,
12812            reader: &R,
12813            state: RestrictionDeserializerState,
12814        ) -> Result<(), Error>
12815        where
12816            R: DeserializeReader,
12817        {
12818            if let RestrictionDeserializerState::Content__(deserializer) = state {
12819                self.store_content(deserializer.finish(reader)?)?;
12820            }
12821            Ok(())
12822        }
12823        fn store_content(&mut self, value: super::RestrictionContent) -> Result<(), Error> {
12824            self.content.push(value);
12825            Ok(())
12826        }
12827        fn handle_content<'de, R>(
12828            &mut self,
12829            reader: &R,
12830            output: DeserializerOutput<'de, super::RestrictionContent>,
12831            fallback: &mut Option<RestrictionDeserializerState>,
12832        ) -> Result<ElementHandlerOutput<'de>, Error>
12833        where
12834            R: DeserializeReader,
12835        {
12836            let DeserializerOutput {
12837                artifact,
12838                event,
12839                allow_any,
12840            } = output;
12841            if artifact.is_none() {
12842                *self.state = fallback
12843                    .take()
12844                    .unwrap_or(RestrictionDeserializerState::Next__);
12845                return Ok(ElementHandlerOutput::break_(event, allow_any));
12846            }
12847            if let Some(fallback) = fallback.take() {
12848                self.finish_state(reader, fallback)?;
12849            }
12850            Ok(match artifact {
12851                DeserializerArtifact::None => unreachable!(),
12852                DeserializerArtifact::Data(data) => {
12853                    self.store_content(data)?;
12854                    *self.state = RestrictionDeserializerState::Next__;
12855                    ElementHandlerOutput::from_event(event, allow_any)
12856                }
12857                DeserializerArtifact::Deserializer(deserializer) => {
12858                    let ret = ElementHandlerOutput::from_event(event, allow_any);
12859                    match &ret {
12860                        ElementHandlerOutput::Break { .. } => {
12861                            *self.state = RestrictionDeserializerState::Content__(deserializer);
12862                        }
12863                        ElementHandlerOutput::Continue { .. } => {
12864                            fallback.get_or_insert(RestrictionDeserializerState::Content__(
12865                                deserializer,
12866                            ));
12867                            *self.state = RestrictionDeserializerState::Next__;
12868                        }
12869                    }
12870                    ret
12871                }
12872            })
12873        }
12874    }
12875    impl<'de> Deserializer<'de, super::Restriction> for Box<RestrictionDeserializer> {
12876        fn init<R>(reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::Restriction>
12877        where
12878            R: DeserializeReader,
12879        {
12880            reader.init_deserializer_from_start_event(
12881                event,
12882                RestrictionDeserializer::from_bytes_start,
12883            )
12884        }
12885        fn next<R>(
12886            mut self,
12887            reader: &R,
12888            event: Event<'de>,
12889        ) -> DeserializerResult<'de, super::Restriction>
12890        where
12891            R: DeserializeReader,
12892        {
12893            use RestrictionDeserializerState as S;
12894            let mut event = event;
12895            let mut fallback = None;
12896            let (event, allow_any) = loop {
12897                let state = replace(&mut *self.state, S::Unknown__);
12898                event = match (state, event) {
12899                    (S::Content__(deserializer), event) => {
12900                        let output = deserializer.next(reader, event)?;
12901                        match self.handle_content(reader, output, &mut fallback)? {
12902                            ElementHandlerOutput::Break { event, allow_any } => {
12903                                break (event, allow_any)
12904                            }
12905                            ElementHandlerOutput::Continue { event, .. } => event,
12906                        }
12907                    }
12908                    (_, Event::End(_)) => {
12909                        return Ok(DeserializerOutput {
12910                            artifact: DeserializerArtifact::Data(self.finish(reader)?),
12911                            event: DeserializerEvent::None,
12912                            allow_any: false,
12913                        });
12914                    }
12915                    (state @ (S::Init__ | S::Next__), event) => {
12916                        fallback.get_or_insert(state);
12917                        let output =
12918                            <super::RestrictionContent as WithDeserializer>::Deserializer::init(
12919                                reader, event,
12920                            )?;
12921                        match self.handle_content(reader, output, &mut fallback)? {
12922                            ElementHandlerOutput::Break { event, allow_any } => {
12923                                break (event, allow_any)
12924                            }
12925                            ElementHandlerOutput::Continue { event, .. } => event,
12926                        }
12927                    }
12928                    (S::Unknown__, _) => unreachable!(),
12929                }
12930            };
12931            let artifact = DeserializerArtifact::Deserializer(self);
12932            Ok(DeserializerOutput {
12933                artifact,
12934                event,
12935                allow_any,
12936            })
12937        }
12938        fn finish<R>(mut self, reader: &R) -> Result<super::Restriction, Error>
12939        where
12940            R: DeserializeReader,
12941        {
12942            let state = replace(&mut *self.state, RestrictionDeserializerState::Unknown__);
12943            self.finish_state(reader, state)?;
12944            Ok(super::Restriction {
12945                id: self.id,
12946                base: self.base,
12947                content: self.content,
12948            })
12949        }
12950    }
12951    #[derive(Debug)]
12952    pub struct RestrictionContentDeserializer {
12953        state: Box<RestrictionContentDeserializerState>,
12954    }
12955    #[derive(Debug)]
12956    pub enum RestrictionContentDeserializerState {
12957        Init__,
12958        Annotation(
12959            Option<super::Annotation>,
12960            Option<<super::Annotation as WithDeserializer>::Deserializer>,
12961        ),
12962        SimpleType(
12963            Option<super::SimpleBaseType>,
12964            Option<<super::SimpleBaseType as WithDeserializer>::Deserializer>,
12965        ),
12966        Facet(
12967            Option<super::Facet>,
12968            Option<<super::Facet as WithDeserializer>::Deserializer>,
12969        ),
12970        Done__(super::RestrictionContent),
12971        Unknown__,
12972    }
12973    impl RestrictionContentDeserializer {
12974        fn find_suitable<'de, R>(
12975            &mut self,
12976            reader: &R,
12977            event: Event<'de>,
12978            fallback: &mut Option<RestrictionContentDeserializerState>,
12979        ) -> Result<ElementHandlerOutput<'de>, Error>
12980        where
12981            R: DeserializeReader,
12982        {
12983            let (Event::Start(x) | Event::Empty(x)) = &event else {
12984                *self.state = fallback
12985                    .take()
12986                    .unwrap_or(RestrictionContentDeserializerState::Init__);
12987                return Ok(ElementHandlerOutput::return_to_parent(event, true));
12988            };
12989            if matches!(
12990                reader.resolve_local_name(x.name(), &super::NS_XS),
12991                Some(b"annotation")
12992            ) {
12993                let output =
12994                    <super::Annotation as WithDeserializer>::Deserializer::init(reader, event)?;
12995                return self.handle_annotation(reader, Default::default(), output, &mut *fallback);
12996            }
12997            if matches!(
12998                reader.resolve_local_name(x.name(), &super::NS_XS),
12999                Some(b"simpleType")
13000            ) {
13001                let output =
13002                    <super::SimpleBaseType as WithDeserializer>::Deserializer::init(reader, event)?;
13003                return self.handle_simple_type(reader, Default::default(), output, &mut *fallback);
13004            }
13005            let event = {
13006                let output = <super::Facet as WithDeserializer>::Deserializer::init(reader, event)?;
13007                match self.handle_facet(reader, Default::default(), output, &mut *fallback)? {
13008                    ElementHandlerOutput::Continue { event, .. } => event,
13009                    output => {
13010                        return Ok(output);
13011                    }
13012                }
13013            };
13014            *self.state = fallback
13015                .take()
13016                .unwrap_or(RestrictionContentDeserializerState::Init__);
13017            Ok(ElementHandlerOutput::return_to_parent(event, true))
13018        }
13019        fn finish_state<R>(
13020            reader: &R,
13021            state: RestrictionContentDeserializerState,
13022        ) -> Result<super::RestrictionContent, Error>
13023        where
13024            R: DeserializeReader,
13025        {
13026            use RestrictionContentDeserializerState as S;
13027            match state {
13028                S::Init__ => Err(ErrorKind::MissingContent.into()),
13029                S::Annotation(mut values, deserializer) => {
13030                    if let Some(deserializer) = deserializer {
13031                        let value = deserializer.finish(reader)?;
13032                        RestrictionContentDeserializer::store_annotation(&mut values, value)?;
13033                    }
13034                    Ok(super::RestrictionContent::Annotation(values.ok_or_else(
13035                        || ErrorKind::MissingElement("annotation".into()),
13036                    )?))
13037                }
13038                S::SimpleType(mut values, deserializer) => {
13039                    if let Some(deserializer) = deserializer {
13040                        let value = deserializer.finish(reader)?;
13041                        RestrictionContentDeserializer::store_simple_type(&mut values, value)?;
13042                    }
13043                    Ok(super::RestrictionContent::SimpleType(values.ok_or_else(
13044                        || ErrorKind::MissingElement("simpleType".into()),
13045                    )?))
13046                }
13047                S::Facet(mut values, deserializer) => {
13048                    if let Some(deserializer) = deserializer {
13049                        let value = deserializer.finish(reader)?;
13050                        RestrictionContentDeserializer::store_facet(&mut values, value)?;
13051                    }
13052                    Ok(super::RestrictionContent::Facet(values.ok_or_else(
13053                        || ErrorKind::MissingElement("facet".into()),
13054                    )?))
13055                }
13056                S::Done__(data) => Ok(data),
13057                S::Unknown__ => unreachable!(),
13058            }
13059        }
13060        fn store_annotation(
13061            values: &mut Option<super::Annotation>,
13062            value: super::Annotation,
13063        ) -> Result<(), Error> {
13064            if values.is_some() {
13065                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
13066                    b"annotation",
13067                )))?;
13068            }
13069            *values = Some(value);
13070            Ok(())
13071        }
13072        fn store_simple_type(
13073            values: &mut Option<super::SimpleBaseType>,
13074            value: super::SimpleBaseType,
13075        ) -> Result<(), Error> {
13076            if values.is_some() {
13077                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
13078                    b"simpleType",
13079                )))?;
13080            }
13081            *values = Some(value);
13082            Ok(())
13083        }
13084        fn store_facet(
13085            values: &mut Option<super::Facet>,
13086            value: super::Facet,
13087        ) -> Result<(), Error> {
13088            if values.is_some() {
13089                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
13090                    b"facet",
13091                )))?;
13092            }
13093            *values = Some(value);
13094            Ok(())
13095        }
13096        fn handle_annotation<'de, R>(
13097            &mut self,
13098            reader: &R,
13099            mut values: Option<super::Annotation>,
13100            output: DeserializerOutput<'de, super::Annotation>,
13101            fallback: &mut Option<RestrictionContentDeserializerState>,
13102        ) -> Result<ElementHandlerOutput<'de>, Error>
13103        where
13104            R: DeserializeReader,
13105        {
13106            let DeserializerOutput {
13107                artifact,
13108                event,
13109                allow_any,
13110            } = output;
13111            if artifact.is_none() {
13112                *self.state = match fallback.take() {
13113                    None => RestrictionContentDeserializerState::Init__,
13114                    Some(RestrictionContentDeserializerState::Annotation(
13115                        _,
13116                        Some(deserializer),
13117                    )) => {
13118                        RestrictionContentDeserializerState::Annotation(values, Some(deserializer))
13119                    }
13120                    _ => unreachable!(),
13121                };
13122                return Ok(ElementHandlerOutput::break_(event, allow_any));
13123            }
13124            match fallback.take() {
13125                None => (),
13126                Some(RestrictionContentDeserializerState::Annotation(_, Some(deserializer))) => {
13127                    let data = deserializer.finish(reader)?;
13128                    RestrictionContentDeserializer::store_annotation(&mut values, data)?;
13129                }
13130                Some(_) => unreachable!(),
13131            }
13132            Ok(match artifact {
13133                DeserializerArtifact::None => unreachable!(),
13134                DeserializerArtifact::Data(data) => {
13135                    RestrictionContentDeserializer::store_annotation(&mut values, data)?;
13136                    let data = RestrictionContentDeserializer::finish_state(
13137                        reader,
13138                        RestrictionContentDeserializerState::Annotation(values, None),
13139                    )?;
13140                    *self.state = RestrictionContentDeserializerState::Done__(data);
13141                    ElementHandlerOutput::Break { event, allow_any }
13142                }
13143                DeserializerArtifact::Deserializer(deserializer) => {
13144                    *self.state =
13145                        RestrictionContentDeserializerState::Annotation(values, Some(deserializer));
13146                    ElementHandlerOutput::from_event_end(event, allow_any)
13147                }
13148            })
13149        }
13150        fn handle_simple_type<'de, R>(
13151            &mut self,
13152            reader: &R,
13153            mut values: Option<super::SimpleBaseType>,
13154            output: DeserializerOutput<'de, super::SimpleBaseType>,
13155            fallback: &mut Option<RestrictionContentDeserializerState>,
13156        ) -> Result<ElementHandlerOutput<'de>, Error>
13157        where
13158            R: DeserializeReader,
13159        {
13160            let DeserializerOutput {
13161                artifact,
13162                event,
13163                allow_any,
13164            } = output;
13165            if artifact.is_none() {
13166                *self.state = match fallback.take() {
13167                    None => RestrictionContentDeserializerState::Init__,
13168                    Some(RestrictionContentDeserializerState::SimpleType(
13169                        _,
13170                        Some(deserializer),
13171                    )) => {
13172                        RestrictionContentDeserializerState::SimpleType(values, Some(deserializer))
13173                    }
13174                    _ => unreachable!(),
13175                };
13176                return Ok(ElementHandlerOutput::break_(event, allow_any));
13177            }
13178            match fallback.take() {
13179                None => (),
13180                Some(RestrictionContentDeserializerState::SimpleType(_, Some(deserializer))) => {
13181                    let data = deserializer.finish(reader)?;
13182                    RestrictionContentDeserializer::store_simple_type(&mut values, data)?;
13183                }
13184                Some(_) => unreachable!(),
13185            }
13186            Ok(match artifact {
13187                DeserializerArtifact::None => unreachable!(),
13188                DeserializerArtifact::Data(data) => {
13189                    RestrictionContentDeserializer::store_simple_type(&mut values, data)?;
13190                    let data = RestrictionContentDeserializer::finish_state(
13191                        reader,
13192                        RestrictionContentDeserializerState::SimpleType(values, None),
13193                    )?;
13194                    *self.state = RestrictionContentDeserializerState::Done__(data);
13195                    ElementHandlerOutput::Break { event, allow_any }
13196                }
13197                DeserializerArtifact::Deserializer(deserializer) => {
13198                    *self.state =
13199                        RestrictionContentDeserializerState::SimpleType(values, Some(deserializer));
13200                    ElementHandlerOutput::from_event_end(event, allow_any)
13201                }
13202            })
13203        }
13204        fn handle_facet<'de, R>(
13205            &mut self,
13206            reader: &R,
13207            mut values: Option<super::Facet>,
13208            output: DeserializerOutput<'de, super::Facet>,
13209            fallback: &mut Option<RestrictionContentDeserializerState>,
13210        ) -> Result<ElementHandlerOutput<'de>, Error>
13211        where
13212            R: DeserializeReader,
13213        {
13214            let DeserializerOutput {
13215                artifact,
13216                event,
13217                allow_any,
13218            } = output;
13219            if artifact.is_none() {
13220                *self.state = match fallback.take() {
13221                    None => RestrictionContentDeserializerState::Init__,
13222                    Some(RestrictionContentDeserializerState::Facet(_, Some(deserializer))) => {
13223                        RestrictionContentDeserializerState::Facet(values, Some(deserializer))
13224                    }
13225                    _ => unreachable!(),
13226                };
13227                return Ok(ElementHandlerOutput::break_(event, allow_any));
13228            }
13229            match fallback.take() {
13230                None => (),
13231                Some(RestrictionContentDeserializerState::Facet(_, Some(deserializer))) => {
13232                    let data = deserializer.finish(reader)?;
13233                    RestrictionContentDeserializer::store_facet(&mut values, data)?;
13234                }
13235                Some(_) => unreachable!(),
13236            }
13237            Ok(match artifact {
13238                DeserializerArtifact::None => unreachable!(),
13239                DeserializerArtifact::Data(data) => {
13240                    RestrictionContentDeserializer::store_facet(&mut values, data)?;
13241                    let data = RestrictionContentDeserializer::finish_state(
13242                        reader,
13243                        RestrictionContentDeserializerState::Facet(values, None),
13244                    )?;
13245                    *self.state = RestrictionContentDeserializerState::Done__(data);
13246                    ElementHandlerOutput::Break { event, allow_any }
13247                }
13248                DeserializerArtifact::Deserializer(deserializer) => {
13249                    *self.state =
13250                        RestrictionContentDeserializerState::Facet(values, Some(deserializer));
13251                    ElementHandlerOutput::from_event_end(event, allow_any)
13252                }
13253            })
13254        }
13255    }
13256    impl<'de> Deserializer<'de, super::RestrictionContent> for Box<RestrictionContentDeserializer> {
13257        fn init<R>(
13258            reader: &R,
13259            event: Event<'de>,
13260        ) -> DeserializerResult<'de, super::RestrictionContent>
13261        where
13262            R: DeserializeReader,
13263        {
13264            let deserializer = Box::new(RestrictionContentDeserializer {
13265                state: Box::new(RestrictionContentDeserializerState::Init__),
13266            });
13267            let mut output = deserializer.next(reader, event)?;
13268            output.artifact = match output.artifact {
13269                DeserializerArtifact::Deserializer(x)
13270                    if matches!(&*x.state, RestrictionContentDeserializerState::Init__) =>
13271                {
13272                    DeserializerArtifact::None
13273                }
13274                artifact => artifact,
13275            };
13276            Ok(output)
13277        }
13278        fn next<R>(
13279            mut self,
13280            reader: &R,
13281            event: Event<'de>,
13282        ) -> DeserializerResult<'de, super::RestrictionContent>
13283        where
13284            R: DeserializeReader,
13285        {
13286            use RestrictionContentDeserializerState as S;
13287            let mut event = event;
13288            let mut fallback = None;
13289            let (event, allow_any) = loop {
13290                let state = replace(&mut *self.state, S::Unknown__);
13291                event = match (state, event) {
13292                    (S::Annotation(values, Some(deserializer)), event) => {
13293                        let output = deserializer.next(reader, event)?;
13294                        match self.handle_annotation(reader, values, output, &mut fallback)? {
13295                            ElementHandlerOutput::Break { event, allow_any } => {
13296                                break (event, allow_any)
13297                            }
13298                            ElementHandlerOutput::Continue { event, .. } => event,
13299                        }
13300                    }
13301                    (S::SimpleType(values, Some(deserializer)), event) => {
13302                        let output = deserializer.next(reader, event)?;
13303                        match self.handle_simple_type(reader, values, output, &mut fallback)? {
13304                            ElementHandlerOutput::Break { event, allow_any } => {
13305                                break (event, allow_any)
13306                            }
13307                            ElementHandlerOutput::Continue { event, .. } => event,
13308                        }
13309                    }
13310                    (S::Facet(values, Some(deserializer)), event) => {
13311                        let output = deserializer.next(reader, event)?;
13312                        match self.handle_facet(reader, values, output, &mut fallback)? {
13313                            ElementHandlerOutput::Break { event, allow_any } => {
13314                                break (event, allow_any)
13315                            }
13316                            ElementHandlerOutput::Continue { event, .. } => event,
13317                        }
13318                    }
13319                    (state, event @ Event::End(_)) => {
13320                        return Ok(DeserializerOutput {
13321                            artifact: DeserializerArtifact::Data(
13322                                RestrictionContentDeserializer::finish_state(reader, state)?,
13323                            ),
13324                            event: DeserializerEvent::Continue(event),
13325                            allow_any: false,
13326                        });
13327                    }
13328                    (S::Init__, event) => match self.find_suitable(reader, event, &mut fallback)? {
13329                        ElementHandlerOutput::Break { event, allow_any } => {
13330                            break (event, allow_any)
13331                        }
13332                        ElementHandlerOutput::Continue { event, .. } => event,
13333                    },
13334                    (S::Annotation(values, None), event) => {
13335                        let output = <super::Annotation as WithDeserializer>::Deserializer::init(
13336                            reader, event,
13337                        )?;
13338                        match self.handle_annotation(reader, values, output, &mut fallback)? {
13339                            ElementHandlerOutput::Break { event, allow_any } => {
13340                                break (event, allow_any)
13341                            }
13342                            ElementHandlerOutput::Continue { event, .. } => event,
13343                        }
13344                    }
13345                    (S::SimpleType(values, None), event) => {
13346                        let output =
13347                            <super::SimpleBaseType as WithDeserializer>::Deserializer::init(
13348                                reader, event,
13349                            )?;
13350                        match self.handle_simple_type(reader, values, output, &mut fallback)? {
13351                            ElementHandlerOutput::Break { event, allow_any } => {
13352                                break (event, allow_any)
13353                            }
13354                            ElementHandlerOutput::Continue { event, .. } => event,
13355                        }
13356                    }
13357                    (S::Facet(values, None), event) => {
13358                        let output =
13359                            <super::Facet as WithDeserializer>::Deserializer::init(reader, event)?;
13360                        match self.handle_facet(reader, values, output, &mut fallback)? {
13361                            ElementHandlerOutput::Break { event, allow_any } => {
13362                                break (event, allow_any)
13363                            }
13364                            ElementHandlerOutput::Continue { event, .. } => event,
13365                        }
13366                    }
13367                    (s @ S::Done__(_), event) => {
13368                        *self.state = s;
13369                        break (DeserializerEvent::Continue(event), false);
13370                    }
13371                    (S::Unknown__, _) => unreachable!(),
13372                }
13373            };
13374            let artifact = if matches!(&*self.state, S::Done__(_)) {
13375                DeserializerArtifact::Data(self.finish(reader)?)
13376            } else {
13377                DeserializerArtifact::Deserializer(self)
13378            };
13379            Ok(DeserializerOutput {
13380                artifact,
13381                event,
13382                allow_any,
13383            })
13384        }
13385        fn finish<R>(self, reader: &R) -> Result<super::RestrictionContent, Error>
13386        where
13387            R: DeserializeReader,
13388        {
13389            RestrictionContentDeserializer::finish_state(reader, *self.state)
13390        }
13391    }
13392    #[derive(Debug)]
13393    pub struct ListDeserializer {
13394        id: Option<String>,
13395        item_type: Option<super::QName>,
13396        annotation: Option<super::Annotation>,
13397        simple_type: Option<super::SimpleBaseType>,
13398        state: Box<ListDeserializerState>,
13399    }
13400    #[derive(Debug)]
13401    enum ListDeserializerState {
13402        Init__,
13403        Annotation(Option<<super::Annotation as WithDeserializer>::Deserializer>),
13404        SimpleType(Option<<super::SimpleBaseType as WithDeserializer>::Deserializer>),
13405        Done__,
13406        Unknown__,
13407    }
13408    impl ListDeserializer {
13409        fn from_bytes_start<R>(reader: &R, bytes_start: &BytesStart<'_>) -> Result<Box<Self>, Error>
13410        where
13411            R: DeserializeReader,
13412        {
13413            let mut id: Option<String> = None;
13414            let mut item_type: Option<super::QName> = None;
13415            for attrib in filter_xmlns_attributes(bytes_start) {
13416                let attrib = attrib?;
13417                if matches!(
13418                    reader.resolve_local_name(attrib.key, &super::NS_XS),
13419                    Some(b"id")
13420                ) {
13421                    reader.read_attrib(&mut id, b"id", &attrib.value)?;
13422                } else if matches!(
13423                    reader.resolve_local_name(attrib.key, &super::NS_XS),
13424                    Some(b"itemType")
13425                ) {
13426                    reader.read_attrib(&mut item_type, b"itemType", &attrib.value)?;
13427                }
13428            }
13429            Ok(Box::new(Self {
13430                id: id,
13431                item_type: item_type,
13432                annotation: None,
13433                simple_type: None,
13434                state: Box::new(ListDeserializerState::Init__),
13435            }))
13436        }
13437        fn finish_state<R>(&mut self, reader: &R, state: ListDeserializerState) -> Result<(), Error>
13438        where
13439            R: DeserializeReader,
13440        {
13441            use ListDeserializerState as S;
13442            match state {
13443                S::Annotation(Some(deserializer)) => {
13444                    self.store_annotation(deserializer.finish(reader)?)?
13445                }
13446                S::SimpleType(Some(deserializer)) => {
13447                    self.store_simple_type(deserializer.finish(reader)?)?
13448                }
13449                _ => (),
13450            }
13451            Ok(())
13452        }
13453        fn store_annotation(&mut self, value: super::Annotation) -> Result<(), Error> {
13454            if self.annotation.is_some() {
13455                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
13456                    b"annotation",
13457                )))?;
13458            }
13459            self.annotation = Some(value);
13460            Ok(())
13461        }
13462        fn store_simple_type(&mut self, value: super::SimpleBaseType) -> Result<(), Error> {
13463            if self.simple_type.is_some() {
13464                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
13465                    b"simpleType",
13466                )))?;
13467            }
13468            self.simple_type = Some(value);
13469            Ok(())
13470        }
13471        fn handle_annotation<'de, R>(
13472            &mut self,
13473            reader: &R,
13474            output: DeserializerOutput<'de, super::Annotation>,
13475            fallback: &mut Option<ListDeserializerState>,
13476        ) -> Result<ElementHandlerOutput<'de>, Error>
13477        where
13478            R: DeserializeReader,
13479        {
13480            let DeserializerOutput {
13481                artifact,
13482                event,
13483                allow_any,
13484            } = output;
13485            if artifact.is_none() {
13486                fallback.get_or_insert(ListDeserializerState::Annotation(None));
13487                *self.state = ListDeserializerState::SimpleType(None);
13488                return Ok(ElementHandlerOutput::from_event(event, allow_any));
13489            }
13490            if let Some(fallback) = fallback.take() {
13491                self.finish_state(reader, fallback)?;
13492            }
13493            Ok(match artifact {
13494                DeserializerArtifact::None => unreachable!(),
13495                DeserializerArtifact::Data(data) => {
13496                    self.store_annotation(data)?;
13497                    *self.state = ListDeserializerState::SimpleType(None);
13498                    ElementHandlerOutput::from_event(event, allow_any)
13499                }
13500                DeserializerArtifact::Deserializer(deserializer) => {
13501                    let ret = ElementHandlerOutput::from_event(event, allow_any);
13502                    match &ret {
13503                        ElementHandlerOutput::Continue { .. } => {
13504                            fallback.get_or_insert(ListDeserializerState::Annotation(Some(
13505                                deserializer,
13506                            )));
13507                            *self.state = ListDeserializerState::SimpleType(None);
13508                        }
13509                        ElementHandlerOutput::Break { .. } => {
13510                            *self.state = ListDeserializerState::Annotation(Some(deserializer));
13511                        }
13512                    }
13513                    ret
13514                }
13515            })
13516        }
13517        fn handle_simple_type<'de, R>(
13518            &mut self,
13519            reader: &R,
13520            output: DeserializerOutput<'de, super::SimpleBaseType>,
13521            fallback: &mut Option<ListDeserializerState>,
13522        ) -> Result<ElementHandlerOutput<'de>, Error>
13523        where
13524            R: DeserializeReader,
13525        {
13526            let DeserializerOutput {
13527                artifact,
13528                event,
13529                allow_any,
13530            } = output;
13531            if artifact.is_none() {
13532                fallback.get_or_insert(ListDeserializerState::SimpleType(None));
13533                *self.state = ListDeserializerState::Done__;
13534                return Ok(ElementHandlerOutput::from_event(event, allow_any));
13535            }
13536            if let Some(fallback) = fallback.take() {
13537                self.finish_state(reader, fallback)?;
13538            }
13539            Ok(match artifact {
13540                DeserializerArtifact::None => unreachable!(),
13541                DeserializerArtifact::Data(data) => {
13542                    self.store_simple_type(data)?;
13543                    *self.state = ListDeserializerState::Done__;
13544                    ElementHandlerOutput::from_event(event, allow_any)
13545                }
13546                DeserializerArtifact::Deserializer(deserializer) => {
13547                    let ret = ElementHandlerOutput::from_event(event, allow_any);
13548                    match &ret {
13549                        ElementHandlerOutput::Continue { .. } => {
13550                            fallback.get_or_insert(ListDeserializerState::SimpleType(Some(
13551                                deserializer,
13552                            )));
13553                            *self.state = ListDeserializerState::Done__;
13554                        }
13555                        ElementHandlerOutput::Break { .. } => {
13556                            *self.state = ListDeserializerState::SimpleType(Some(deserializer));
13557                        }
13558                    }
13559                    ret
13560                }
13561            })
13562        }
13563    }
13564    impl<'de> Deserializer<'de, super::List> for Box<ListDeserializer> {
13565        fn init<R>(reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::List>
13566        where
13567            R: DeserializeReader,
13568        {
13569            reader.init_deserializer_from_start_event(event, ListDeserializer::from_bytes_start)
13570        }
13571        fn next<R>(mut self, reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::List>
13572        where
13573            R: DeserializeReader,
13574        {
13575            use ListDeserializerState as S;
13576            let mut event = event;
13577            let mut fallback = None;
13578            let mut allow_any_element = false;
13579            let (event, allow_any) = loop {
13580                let state = replace(&mut *self.state, S::Unknown__);
13581                event = match (state, event) {
13582                    (S::Annotation(Some(deserializer)), event) => {
13583                        let output = deserializer.next(reader, event)?;
13584                        match self.handle_annotation(reader, output, &mut fallback)? {
13585                            ElementHandlerOutput::Continue { event, allow_any } => {
13586                                allow_any_element = allow_any_element || allow_any;
13587                                event
13588                            }
13589                            ElementHandlerOutput::Break { event, allow_any } => {
13590                                break (event, allow_any)
13591                            }
13592                        }
13593                    }
13594                    (S::SimpleType(Some(deserializer)), event) => {
13595                        let output = deserializer.next(reader, event)?;
13596                        match self.handle_simple_type(reader, output, &mut fallback)? {
13597                            ElementHandlerOutput::Continue { event, allow_any } => {
13598                                allow_any_element = allow_any_element || allow_any;
13599                                event
13600                            }
13601                            ElementHandlerOutput::Break { event, allow_any } => {
13602                                break (event, allow_any)
13603                            }
13604                        }
13605                    }
13606                    (_, Event::End(_)) => {
13607                        if let Some(fallback) = fallback.take() {
13608                            self.finish_state(reader, fallback)?;
13609                        }
13610                        return Ok(DeserializerOutput {
13611                            artifact: DeserializerArtifact::Data(self.finish(reader)?),
13612                            event: DeserializerEvent::None,
13613                            allow_any: false,
13614                        });
13615                    }
13616                    (S::Init__, event) => {
13617                        fallback.get_or_insert(S::Init__);
13618                        *self.state = ListDeserializerState::Annotation(None);
13619                        event
13620                    }
13621                    (S::Annotation(None), event @ (Event::Start(_) | Event::Empty(_))) => {
13622                        if reader.check_start_tag_name(&event, Some(&super::NS_XS), b"annotation") {
13623                            let output =
13624                                <super::Annotation as WithDeserializer>::Deserializer::init(
13625                                    reader, event,
13626                                )?;
13627                            match self.handle_annotation(reader, output, &mut fallback)? {
13628                                ElementHandlerOutput::Continue { event, allow_any } => {
13629                                    allow_any_element = allow_any_element || allow_any;
13630                                    event
13631                                }
13632                                ElementHandlerOutput::Break { event, allow_any } => {
13633                                    break (event, allow_any)
13634                                }
13635                            }
13636                        } else {
13637                            *self.state = S::SimpleType(None);
13638                            allow_any_element = true;
13639                            fallback.get_or_insert(S::Annotation(None));
13640                            event
13641                        }
13642                    }
13643                    (S::SimpleType(None), event @ (Event::Start(_) | Event::Empty(_))) => {
13644                        if reader.check_start_tag_name(&event, Some(&super::NS_XS), b"simpleType") {
13645                            let output =
13646                                <super::SimpleBaseType as WithDeserializer>::Deserializer::init(
13647                                    reader, event,
13648                                )?;
13649                            match self.handle_simple_type(reader, output, &mut fallback)? {
13650                                ElementHandlerOutput::Continue { event, allow_any } => {
13651                                    allow_any_element = allow_any_element || allow_any;
13652                                    event
13653                                }
13654                                ElementHandlerOutput::Break { event, allow_any } => {
13655                                    break (event, allow_any)
13656                                }
13657                            }
13658                        } else {
13659                            *self.state = S::Done__;
13660                            allow_any_element = true;
13661                            fallback.get_or_insert(S::SimpleType(None));
13662                            event
13663                        }
13664                    }
13665                    (S::Done__, event) => {
13666                        fallback.get_or_insert(S::Done__);
13667                        break (DeserializerEvent::Continue(event), allow_any_element);
13668                    }
13669                    (S::Unknown__, _) => unreachable!(),
13670                    (state, event) => {
13671                        *self.state = state;
13672                        break (DeserializerEvent::Break(event), false);
13673                    }
13674                }
13675            };
13676            if let Some(fallback) = fallback {
13677                *self.state = fallback;
13678            }
13679            Ok(DeserializerOutput {
13680                artifact: DeserializerArtifact::Deserializer(self),
13681                event,
13682                allow_any,
13683            })
13684        }
13685        fn finish<R>(mut self, reader: &R) -> Result<super::List, Error>
13686        where
13687            R: DeserializeReader,
13688        {
13689            let state = replace(&mut *self.state, ListDeserializerState::Unknown__);
13690            self.finish_state(reader, state)?;
13691            Ok(super::List {
13692                id: self.id,
13693                item_type: self.item_type,
13694                annotation: self.annotation,
13695                simple_type: self.simple_type,
13696            })
13697        }
13698    }
13699    #[derive(Debug)]
13700    pub struct UnionDeserializer {
13701        id: Option<String>,
13702        member_types: Option<super::QNameList>,
13703        annotation: Option<super::Annotation>,
13704        simple_type: Vec<super::SimpleBaseType>,
13705        state: Box<UnionDeserializerState>,
13706    }
13707    #[derive(Debug)]
13708    enum UnionDeserializerState {
13709        Init__,
13710        Annotation(Option<<super::Annotation as WithDeserializer>::Deserializer>),
13711        SimpleType(Option<<super::SimpleBaseType as WithDeserializer>::Deserializer>),
13712        Done__,
13713        Unknown__,
13714    }
13715    impl UnionDeserializer {
13716        fn from_bytes_start<R>(reader: &R, bytes_start: &BytesStart<'_>) -> Result<Box<Self>, Error>
13717        where
13718            R: DeserializeReader,
13719        {
13720            let mut id: Option<String> = None;
13721            let mut member_types: Option<super::QNameList> = None;
13722            for attrib in filter_xmlns_attributes(bytes_start) {
13723                let attrib = attrib?;
13724                if matches!(
13725                    reader.resolve_local_name(attrib.key, &super::NS_XS),
13726                    Some(b"id")
13727                ) {
13728                    reader.read_attrib(&mut id, b"id", &attrib.value)?;
13729                } else if matches!(
13730                    reader.resolve_local_name(attrib.key, &super::NS_XS),
13731                    Some(b"memberTypes")
13732                ) {
13733                    reader.read_attrib(&mut member_types, b"memberTypes", &attrib.value)?;
13734                }
13735            }
13736            Ok(Box::new(Self {
13737                id: id,
13738                member_types: member_types,
13739                annotation: None,
13740                simple_type: Vec::new(),
13741                state: Box::new(UnionDeserializerState::Init__),
13742            }))
13743        }
13744        fn finish_state<R>(
13745            &mut self,
13746            reader: &R,
13747            state: UnionDeserializerState,
13748        ) -> Result<(), Error>
13749        where
13750            R: DeserializeReader,
13751        {
13752            use UnionDeserializerState as S;
13753            match state {
13754                S::Annotation(Some(deserializer)) => {
13755                    self.store_annotation(deserializer.finish(reader)?)?
13756                }
13757                S::SimpleType(Some(deserializer)) => {
13758                    self.store_simple_type(deserializer.finish(reader)?)?
13759                }
13760                _ => (),
13761            }
13762            Ok(())
13763        }
13764        fn store_annotation(&mut self, value: super::Annotation) -> Result<(), Error> {
13765            if self.annotation.is_some() {
13766                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
13767                    b"annotation",
13768                )))?;
13769            }
13770            self.annotation = Some(value);
13771            Ok(())
13772        }
13773        fn store_simple_type(&mut self, value: super::SimpleBaseType) -> Result<(), Error> {
13774            self.simple_type.push(value);
13775            Ok(())
13776        }
13777        fn handle_annotation<'de, R>(
13778            &mut self,
13779            reader: &R,
13780            output: DeserializerOutput<'de, super::Annotation>,
13781            fallback: &mut Option<UnionDeserializerState>,
13782        ) -> Result<ElementHandlerOutput<'de>, Error>
13783        where
13784            R: DeserializeReader,
13785        {
13786            let DeserializerOutput {
13787                artifact,
13788                event,
13789                allow_any,
13790            } = output;
13791            if artifact.is_none() {
13792                fallback.get_or_insert(UnionDeserializerState::Annotation(None));
13793                *self.state = UnionDeserializerState::SimpleType(None);
13794                return Ok(ElementHandlerOutput::from_event(event, allow_any));
13795            }
13796            if let Some(fallback) = fallback.take() {
13797                self.finish_state(reader, fallback)?;
13798            }
13799            Ok(match artifact {
13800                DeserializerArtifact::None => unreachable!(),
13801                DeserializerArtifact::Data(data) => {
13802                    self.store_annotation(data)?;
13803                    *self.state = UnionDeserializerState::SimpleType(None);
13804                    ElementHandlerOutput::from_event(event, allow_any)
13805                }
13806                DeserializerArtifact::Deserializer(deserializer) => {
13807                    let ret = ElementHandlerOutput::from_event(event, allow_any);
13808                    match &ret {
13809                        ElementHandlerOutput::Continue { .. } => {
13810                            fallback.get_or_insert(UnionDeserializerState::Annotation(Some(
13811                                deserializer,
13812                            )));
13813                            *self.state = UnionDeserializerState::SimpleType(None);
13814                        }
13815                        ElementHandlerOutput::Break { .. } => {
13816                            *self.state = UnionDeserializerState::Annotation(Some(deserializer));
13817                        }
13818                    }
13819                    ret
13820                }
13821            })
13822        }
13823        fn handle_simple_type<'de, R>(
13824            &mut self,
13825            reader: &R,
13826            output: DeserializerOutput<'de, super::SimpleBaseType>,
13827            fallback: &mut Option<UnionDeserializerState>,
13828        ) -> Result<ElementHandlerOutput<'de>, Error>
13829        where
13830            R: DeserializeReader,
13831        {
13832            let DeserializerOutput {
13833                artifact,
13834                event,
13835                allow_any,
13836            } = output;
13837            if artifact.is_none() {
13838                fallback.get_or_insert(UnionDeserializerState::SimpleType(None));
13839                *self.state = UnionDeserializerState::Done__;
13840                return Ok(ElementHandlerOutput::from_event(event, allow_any));
13841            }
13842            if let Some(fallback) = fallback.take() {
13843                self.finish_state(reader, fallback)?;
13844            }
13845            Ok(match artifact {
13846                DeserializerArtifact::None => unreachable!(),
13847                DeserializerArtifact::Data(data) => {
13848                    self.store_simple_type(data)?;
13849                    *self.state = UnionDeserializerState::SimpleType(None);
13850                    ElementHandlerOutput::from_event(event, allow_any)
13851                }
13852                DeserializerArtifact::Deserializer(deserializer) => {
13853                    let ret = ElementHandlerOutput::from_event(event, allow_any);
13854                    match &ret {
13855                        ElementHandlerOutput::Continue { .. } => {
13856                            fallback.get_or_insert(UnionDeserializerState::SimpleType(Some(
13857                                deserializer,
13858                            )));
13859                            *self.state = UnionDeserializerState::SimpleType(None);
13860                        }
13861                        ElementHandlerOutput::Break { .. } => {
13862                            *self.state = UnionDeserializerState::SimpleType(Some(deserializer));
13863                        }
13864                    }
13865                    ret
13866                }
13867            })
13868        }
13869    }
13870    impl<'de> Deserializer<'de, super::Union> for Box<UnionDeserializer> {
13871        fn init<R>(reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::Union>
13872        where
13873            R: DeserializeReader,
13874        {
13875            reader.init_deserializer_from_start_event(event, UnionDeserializer::from_bytes_start)
13876        }
13877        fn next<R>(mut self, reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::Union>
13878        where
13879            R: DeserializeReader,
13880        {
13881            use UnionDeserializerState as S;
13882            let mut event = event;
13883            let mut fallback = None;
13884            let mut allow_any_element = false;
13885            let (event, allow_any) = loop {
13886                let state = replace(&mut *self.state, S::Unknown__);
13887                event = match (state, event) {
13888                    (S::Annotation(Some(deserializer)), event) => {
13889                        let output = deserializer.next(reader, event)?;
13890                        match self.handle_annotation(reader, output, &mut fallback)? {
13891                            ElementHandlerOutput::Continue { event, allow_any } => {
13892                                allow_any_element = allow_any_element || allow_any;
13893                                event
13894                            }
13895                            ElementHandlerOutput::Break { event, allow_any } => {
13896                                break (event, allow_any)
13897                            }
13898                        }
13899                    }
13900                    (S::SimpleType(Some(deserializer)), event) => {
13901                        let output = deserializer.next(reader, event)?;
13902                        match self.handle_simple_type(reader, output, &mut fallback)? {
13903                            ElementHandlerOutput::Continue { event, allow_any } => {
13904                                allow_any_element = allow_any_element || allow_any;
13905                                event
13906                            }
13907                            ElementHandlerOutput::Break { event, allow_any } => {
13908                                break (event, allow_any)
13909                            }
13910                        }
13911                    }
13912                    (_, Event::End(_)) => {
13913                        if let Some(fallback) = fallback.take() {
13914                            self.finish_state(reader, fallback)?;
13915                        }
13916                        return Ok(DeserializerOutput {
13917                            artifact: DeserializerArtifact::Data(self.finish(reader)?),
13918                            event: DeserializerEvent::None,
13919                            allow_any: false,
13920                        });
13921                    }
13922                    (S::Init__, event) => {
13923                        fallback.get_or_insert(S::Init__);
13924                        *self.state = UnionDeserializerState::Annotation(None);
13925                        event
13926                    }
13927                    (S::Annotation(None), event @ (Event::Start(_) | Event::Empty(_))) => {
13928                        if reader.check_start_tag_name(&event, Some(&super::NS_XS), b"annotation") {
13929                            let output =
13930                                <super::Annotation as WithDeserializer>::Deserializer::init(
13931                                    reader, event,
13932                                )?;
13933                            match self.handle_annotation(reader, output, &mut fallback)? {
13934                                ElementHandlerOutput::Continue { event, allow_any } => {
13935                                    allow_any_element = allow_any_element || allow_any;
13936                                    event
13937                                }
13938                                ElementHandlerOutput::Break { event, allow_any } => {
13939                                    break (event, allow_any)
13940                                }
13941                            }
13942                        } else {
13943                            *self.state = S::SimpleType(None);
13944                            allow_any_element = true;
13945                            fallback.get_or_insert(S::Annotation(None));
13946                            event
13947                        }
13948                    }
13949                    (S::SimpleType(None), event @ (Event::Start(_) | Event::Empty(_))) => {
13950                        if reader.check_start_tag_name(&event, Some(&super::NS_XS), b"simpleType") {
13951                            let output =
13952                                <super::SimpleBaseType as WithDeserializer>::Deserializer::init(
13953                                    reader, event,
13954                                )?;
13955                            match self.handle_simple_type(reader, output, &mut fallback)? {
13956                                ElementHandlerOutput::Continue { event, allow_any } => {
13957                                    allow_any_element = allow_any_element || allow_any;
13958                                    event
13959                                }
13960                                ElementHandlerOutput::Break { event, allow_any } => {
13961                                    break (event, allow_any)
13962                                }
13963                            }
13964                        } else {
13965                            *self.state = S::Done__;
13966                            allow_any_element = true;
13967                            fallback.get_or_insert(S::SimpleType(None));
13968                            event
13969                        }
13970                    }
13971                    (S::Done__, event) => {
13972                        fallback.get_or_insert(S::Done__);
13973                        break (DeserializerEvent::Continue(event), allow_any_element);
13974                    }
13975                    (S::Unknown__, _) => unreachable!(),
13976                    (state, event) => {
13977                        *self.state = state;
13978                        break (DeserializerEvent::Break(event), false);
13979                    }
13980                }
13981            };
13982            if let Some(fallback) = fallback {
13983                *self.state = fallback;
13984            }
13985            Ok(DeserializerOutput {
13986                artifact: DeserializerArtifact::Deserializer(self),
13987                event,
13988                allow_any,
13989            })
13990        }
13991        fn finish<R>(mut self, reader: &R) -> Result<super::Union, Error>
13992        where
13993            R: DeserializeReader,
13994        {
13995            let state = replace(&mut *self.state, UnionDeserializerState::Unknown__);
13996            self.finish_state(reader, state)?;
13997            Ok(super::Union {
13998                id: self.id,
13999                member_types: self.member_types,
14000                annotation: self.annotation,
14001                simple_type: self.simple_type,
14002            })
14003        }
14004    }
14005    #[derive(Debug)]
14006    pub struct SimpleContentDeserializer {
14007        id: Option<String>,
14008        content: Vec<super::SimpleContentContent>,
14009        state: Box<SimpleContentDeserializerState>,
14010    }
14011    #[derive(Debug)]
14012    enum SimpleContentDeserializerState {
14013        Init__,
14014        Next__,
14015        Content__(<super::SimpleContentContent as WithDeserializer>::Deserializer),
14016        Unknown__,
14017    }
14018    impl SimpleContentDeserializer {
14019        fn from_bytes_start<R>(reader: &R, bytes_start: &BytesStart<'_>) -> Result<Box<Self>, Error>
14020        where
14021            R: DeserializeReader,
14022        {
14023            let mut id: Option<String> = None;
14024            for attrib in filter_xmlns_attributes(bytes_start) {
14025                let attrib = attrib?;
14026                if matches!(
14027                    reader.resolve_local_name(attrib.key, &super::NS_XS),
14028                    Some(b"id")
14029                ) {
14030                    reader.read_attrib(&mut id, b"id", &attrib.value)?;
14031                }
14032            }
14033            Ok(Box::new(Self {
14034                id: id,
14035                content: Vec::new(),
14036                state: Box::new(SimpleContentDeserializerState::Init__),
14037            }))
14038        }
14039        fn finish_state<R>(
14040            &mut self,
14041            reader: &R,
14042            state: SimpleContentDeserializerState,
14043        ) -> Result<(), Error>
14044        where
14045            R: DeserializeReader,
14046        {
14047            if let SimpleContentDeserializerState::Content__(deserializer) = state {
14048                self.store_content(deserializer.finish(reader)?)?;
14049            }
14050            Ok(())
14051        }
14052        fn store_content(&mut self, value: super::SimpleContentContent) -> Result<(), Error> {
14053            self.content.push(value);
14054            Ok(())
14055        }
14056        fn handle_content<'de, R>(
14057            &mut self,
14058            reader: &R,
14059            output: DeserializerOutput<'de, super::SimpleContentContent>,
14060            fallback: &mut Option<SimpleContentDeserializerState>,
14061        ) -> Result<ElementHandlerOutput<'de>, Error>
14062        where
14063            R: DeserializeReader,
14064        {
14065            let DeserializerOutput {
14066                artifact,
14067                event,
14068                allow_any,
14069            } = output;
14070            if artifact.is_none() {
14071                *self.state = fallback
14072                    .take()
14073                    .unwrap_or(SimpleContentDeserializerState::Next__);
14074                return Ok(ElementHandlerOutput::break_(event, allow_any));
14075            }
14076            if let Some(fallback) = fallback.take() {
14077                self.finish_state(reader, fallback)?;
14078            }
14079            Ok(match artifact {
14080                DeserializerArtifact::None => unreachable!(),
14081                DeserializerArtifact::Data(data) => {
14082                    self.store_content(data)?;
14083                    *self.state = SimpleContentDeserializerState::Next__;
14084                    ElementHandlerOutput::from_event(event, allow_any)
14085                }
14086                DeserializerArtifact::Deserializer(deserializer) => {
14087                    let can_have_more = self.content.len().saturating_add(1) < 3usize;
14088                    let ret = if can_have_more {
14089                        ElementHandlerOutput::from_event(event, allow_any)
14090                    } else {
14091                        ElementHandlerOutput::from_event_end(event, allow_any)
14092                    };
14093                    match (can_have_more, &ret) {
14094                        (true, ElementHandlerOutput::Continue { .. }) => {
14095                            fallback.get_or_insert(SimpleContentDeserializerState::Content__(
14096                                deserializer,
14097                            ));
14098                            *self.state = SimpleContentDeserializerState::Next__;
14099                        }
14100                        (false, _) | (_, ElementHandlerOutput::Break { .. }) => {
14101                            *self.state = SimpleContentDeserializerState::Content__(deserializer);
14102                        }
14103                    }
14104                    ret
14105                }
14106            })
14107        }
14108    }
14109    impl<'de> Deserializer<'de, super::SimpleContent> for Box<SimpleContentDeserializer> {
14110        fn init<R>(reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::SimpleContent>
14111        where
14112            R: DeserializeReader,
14113        {
14114            reader.init_deserializer_from_start_event(
14115                event,
14116                SimpleContentDeserializer::from_bytes_start,
14117            )
14118        }
14119        fn next<R>(
14120            mut self,
14121            reader: &R,
14122            event: Event<'de>,
14123        ) -> DeserializerResult<'de, super::SimpleContent>
14124        where
14125            R: DeserializeReader,
14126        {
14127            use SimpleContentDeserializerState as S;
14128            let mut event = event;
14129            let mut fallback = None;
14130            let (event, allow_any) = loop {
14131                let state = replace(&mut *self.state, S::Unknown__);
14132                event = match (state, event) {
14133                    (S::Content__(deserializer), event) => {
14134                        let output = deserializer.next(reader, event)?;
14135                        match self.handle_content(reader, output, &mut fallback)? {
14136                            ElementHandlerOutput::Break { event, allow_any } => {
14137                                break (event, allow_any)
14138                            }
14139                            ElementHandlerOutput::Continue { event, .. } => event,
14140                        }
14141                    }
14142                    (_, Event::End(_)) => {
14143                        return Ok(DeserializerOutput {
14144                            artifact: DeserializerArtifact::Data(self.finish(reader)?),
14145                            event: DeserializerEvent::None,
14146                            allow_any: false,
14147                        });
14148                    }
14149                    (state @ (S::Init__ | S::Next__), event) => {
14150                        fallback.get_or_insert(state);
14151                        let output =
14152                            <super::SimpleContentContent as WithDeserializer>::Deserializer::init(
14153                                reader, event,
14154                            )?;
14155                        match self.handle_content(reader, output, &mut fallback)? {
14156                            ElementHandlerOutput::Break { event, allow_any } => {
14157                                break (event, allow_any)
14158                            }
14159                            ElementHandlerOutput::Continue { event, .. } => event,
14160                        }
14161                    }
14162                    (S::Unknown__, _) => unreachable!(),
14163                }
14164            };
14165            let artifact = DeserializerArtifact::Deserializer(self);
14166            Ok(DeserializerOutput {
14167                artifact,
14168                event,
14169                allow_any,
14170            })
14171        }
14172        fn finish<R>(mut self, reader: &R) -> Result<super::SimpleContent, Error>
14173        where
14174            R: DeserializeReader,
14175        {
14176            let state = replace(&mut *self.state, SimpleContentDeserializerState::Unknown__);
14177            self.finish_state(reader, state)?;
14178            Ok(super::SimpleContent {
14179                id: self.id,
14180                content: self.content,
14181            })
14182        }
14183    }
14184    #[derive(Debug)]
14185    pub struct SimpleContentContentDeserializer {
14186        state: Box<SimpleContentContentDeserializerState>,
14187    }
14188    #[derive(Debug)]
14189    pub enum SimpleContentContentDeserializerState {
14190        Init__,
14191        Annotation(
14192            Option<super::Annotation>,
14193            Option<<super::Annotation as WithDeserializer>::Deserializer>,
14194        ),
14195        Restriction(
14196            Option<super::RestrictionType>,
14197            Option<<super::RestrictionType as WithDeserializer>::Deserializer>,
14198        ),
14199        Extension(
14200            Option<super::ExtensionType>,
14201            Option<<super::ExtensionType as WithDeserializer>::Deserializer>,
14202        ),
14203        Done__(super::SimpleContentContent),
14204        Unknown__,
14205    }
14206    impl SimpleContentContentDeserializer {
14207        fn find_suitable<'de, R>(
14208            &mut self,
14209            reader: &R,
14210            event: Event<'de>,
14211            fallback: &mut Option<SimpleContentContentDeserializerState>,
14212        ) -> Result<ElementHandlerOutput<'de>, Error>
14213        where
14214            R: DeserializeReader,
14215        {
14216            let (Event::Start(x) | Event::Empty(x)) = &event else {
14217                *self.state = fallback
14218                    .take()
14219                    .unwrap_or(SimpleContentContentDeserializerState::Init__);
14220                return Ok(ElementHandlerOutput::return_to_parent(event, false));
14221            };
14222            if matches!(
14223                reader.resolve_local_name(x.name(), &super::NS_XS),
14224                Some(b"annotation")
14225            ) {
14226                let output =
14227                    <super::Annotation as WithDeserializer>::Deserializer::init(reader, event)?;
14228                return self.handle_annotation(reader, Default::default(), output, &mut *fallback);
14229            }
14230            if matches!(
14231                reader.resolve_local_name(x.name(), &super::NS_XS),
14232                Some(b"restriction")
14233            ) {
14234                let output = <super::RestrictionType as WithDeserializer>::Deserializer::init(
14235                    reader, event,
14236                )?;
14237                return self.handle_restriction(reader, Default::default(), output, &mut *fallback);
14238            }
14239            if matches!(
14240                reader.resolve_local_name(x.name(), &super::NS_XS),
14241                Some(b"extension")
14242            ) {
14243                let output =
14244                    <super::ExtensionType as WithDeserializer>::Deserializer::init(reader, event)?;
14245                return self.handle_extension(reader, Default::default(), output, &mut *fallback);
14246            }
14247            *self.state = fallback
14248                .take()
14249                .unwrap_or(SimpleContentContentDeserializerState::Init__);
14250            Ok(ElementHandlerOutput::return_to_parent(event, false))
14251        }
14252        fn finish_state<R>(
14253            reader: &R,
14254            state: SimpleContentContentDeserializerState,
14255        ) -> Result<super::SimpleContentContent, Error>
14256        where
14257            R: DeserializeReader,
14258        {
14259            use SimpleContentContentDeserializerState as S;
14260            match state {
14261                S::Init__ => Err(ErrorKind::MissingContent.into()),
14262                S::Annotation(mut values, deserializer) => {
14263                    if let Some(deserializer) = deserializer {
14264                        let value = deserializer.finish(reader)?;
14265                        SimpleContentContentDeserializer::store_annotation(&mut values, value)?;
14266                    }
14267                    Ok(super::SimpleContentContent::Annotation(values.ok_or_else(
14268                        || ErrorKind::MissingElement("annotation".into()),
14269                    )?))
14270                }
14271                S::Restriction(mut values, deserializer) => {
14272                    if let Some(deserializer) = deserializer {
14273                        let value = deserializer.finish(reader)?;
14274                        SimpleContentContentDeserializer::store_restriction(&mut values, value)?;
14275                    }
14276                    Ok(super::SimpleContentContent::Restriction(
14277                        values.ok_or_else(|| ErrorKind::MissingElement("restriction".into()))?,
14278                    ))
14279                }
14280                S::Extension(mut values, deserializer) => {
14281                    if let Some(deserializer) = deserializer {
14282                        let value = deserializer.finish(reader)?;
14283                        SimpleContentContentDeserializer::store_extension(&mut values, value)?;
14284                    }
14285                    Ok(super::SimpleContentContent::Extension(values.ok_or_else(
14286                        || ErrorKind::MissingElement("extension".into()),
14287                    )?))
14288                }
14289                S::Done__(data) => Ok(data),
14290                S::Unknown__ => unreachable!(),
14291            }
14292        }
14293        fn store_annotation(
14294            values: &mut Option<super::Annotation>,
14295            value: super::Annotation,
14296        ) -> Result<(), Error> {
14297            if values.is_some() {
14298                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
14299                    b"annotation",
14300                )))?;
14301            }
14302            *values = Some(value);
14303            Ok(())
14304        }
14305        fn store_restriction(
14306            values: &mut Option<super::RestrictionType>,
14307            value: super::RestrictionType,
14308        ) -> Result<(), Error> {
14309            if values.is_some() {
14310                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
14311                    b"restriction",
14312                )))?;
14313            }
14314            *values = Some(value);
14315            Ok(())
14316        }
14317        fn store_extension(
14318            values: &mut Option<super::ExtensionType>,
14319            value: super::ExtensionType,
14320        ) -> Result<(), Error> {
14321            if values.is_some() {
14322                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
14323                    b"extension",
14324                )))?;
14325            }
14326            *values = Some(value);
14327            Ok(())
14328        }
14329        fn handle_annotation<'de, R>(
14330            &mut self,
14331            reader: &R,
14332            mut values: Option<super::Annotation>,
14333            output: DeserializerOutput<'de, super::Annotation>,
14334            fallback: &mut Option<SimpleContentContentDeserializerState>,
14335        ) -> Result<ElementHandlerOutput<'de>, Error>
14336        where
14337            R: DeserializeReader,
14338        {
14339            let DeserializerOutput {
14340                artifact,
14341                event,
14342                allow_any,
14343            } = output;
14344            if artifact.is_none() {
14345                *self.state = match fallback.take() {
14346                    None => SimpleContentContentDeserializerState::Init__,
14347                    Some(SimpleContentContentDeserializerState::Annotation(
14348                        _,
14349                        Some(deserializer),
14350                    )) => SimpleContentContentDeserializerState::Annotation(
14351                        values,
14352                        Some(deserializer),
14353                    ),
14354                    _ => unreachable!(),
14355                };
14356                return Ok(ElementHandlerOutput::break_(event, allow_any));
14357            }
14358            match fallback.take() {
14359                None => (),
14360                Some(SimpleContentContentDeserializerState::Annotation(_, Some(deserializer))) => {
14361                    let data = deserializer.finish(reader)?;
14362                    SimpleContentContentDeserializer::store_annotation(&mut values, data)?;
14363                }
14364                Some(_) => unreachable!(),
14365            }
14366            Ok(match artifact {
14367                DeserializerArtifact::None => unreachable!(),
14368                DeserializerArtifact::Data(data) => {
14369                    SimpleContentContentDeserializer::store_annotation(&mut values, data)?;
14370                    let data = SimpleContentContentDeserializer::finish_state(
14371                        reader,
14372                        SimpleContentContentDeserializerState::Annotation(values, None),
14373                    )?;
14374                    *self.state = SimpleContentContentDeserializerState::Done__(data);
14375                    ElementHandlerOutput::Break { event, allow_any }
14376                }
14377                DeserializerArtifact::Deserializer(deserializer) => {
14378                    *self.state = SimpleContentContentDeserializerState::Annotation(
14379                        values,
14380                        Some(deserializer),
14381                    );
14382                    ElementHandlerOutput::from_event_end(event, allow_any)
14383                }
14384            })
14385        }
14386        fn handle_restriction<'de, R>(
14387            &mut self,
14388            reader: &R,
14389            mut values: Option<super::RestrictionType>,
14390            output: DeserializerOutput<'de, super::RestrictionType>,
14391            fallback: &mut Option<SimpleContentContentDeserializerState>,
14392        ) -> Result<ElementHandlerOutput<'de>, Error>
14393        where
14394            R: DeserializeReader,
14395        {
14396            let DeserializerOutput {
14397                artifact,
14398                event,
14399                allow_any,
14400            } = output;
14401            if artifact.is_none() {
14402                *self.state = match fallback.take() {
14403                    None => SimpleContentContentDeserializerState::Init__,
14404                    Some(SimpleContentContentDeserializerState::Restriction(
14405                        _,
14406                        Some(deserializer),
14407                    )) => SimpleContentContentDeserializerState::Restriction(
14408                        values,
14409                        Some(deserializer),
14410                    ),
14411                    _ => unreachable!(),
14412                };
14413                return Ok(ElementHandlerOutput::break_(event, allow_any));
14414            }
14415            match fallback.take() {
14416                None => (),
14417                Some(SimpleContentContentDeserializerState::Restriction(_, Some(deserializer))) => {
14418                    let data = deserializer.finish(reader)?;
14419                    SimpleContentContentDeserializer::store_restriction(&mut values, data)?;
14420                }
14421                Some(_) => unreachable!(),
14422            }
14423            Ok(match artifact {
14424                DeserializerArtifact::None => unreachable!(),
14425                DeserializerArtifact::Data(data) => {
14426                    SimpleContentContentDeserializer::store_restriction(&mut values, data)?;
14427                    let data = SimpleContentContentDeserializer::finish_state(
14428                        reader,
14429                        SimpleContentContentDeserializerState::Restriction(values, None),
14430                    )?;
14431                    *self.state = SimpleContentContentDeserializerState::Done__(data);
14432                    ElementHandlerOutput::Break { event, allow_any }
14433                }
14434                DeserializerArtifact::Deserializer(deserializer) => {
14435                    *self.state = SimpleContentContentDeserializerState::Restriction(
14436                        values,
14437                        Some(deserializer),
14438                    );
14439                    ElementHandlerOutput::from_event_end(event, allow_any)
14440                }
14441            })
14442        }
14443        fn handle_extension<'de, R>(
14444            &mut self,
14445            reader: &R,
14446            mut values: Option<super::ExtensionType>,
14447            output: DeserializerOutput<'de, super::ExtensionType>,
14448            fallback: &mut Option<SimpleContentContentDeserializerState>,
14449        ) -> Result<ElementHandlerOutput<'de>, Error>
14450        where
14451            R: DeserializeReader,
14452        {
14453            let DeserializerOutput {
14454                artifact,
14455                event,
14456                allow_any,
14457            } = output;
14458            if artifact.is_none() {
14459                *self.state = match fallback.take() {
14460                    None => SimpleContentContentDeserializerState::Init__,
14461                    Some(SimpleContentContentDeserializerState::Extension(
14462                        _,
14463                        Some(deserializer),
14464                    )) => {
14465                        SimpleContentContentDeserializerState::Extension(values, Some(deserializer))
14466                    }
14467                    _ => unreachable!(),
14468                };
14469                return Ok(ElementHandlerOutput::break_(event, allow_any));
14470            }
14471            match fallback.take() {
14472                None => (),
14473                Some(SimpleContentContentDeserializerState::Extension(_, Some(deserializer))) => {
14474                    let data = deserializer.finish(reader)?;
14475                    SimpleContentContentDeserializer::store_extension(&mut values, data)?;
14476                }
14477                Some(_) => unreachable!(),
14478            }
14479            Ok(match artifact {
14480                DeserializerArtifact::None => unreachable!(),
14481                DeserializerArtifact::Data(data) => {
14482                    SimpleContentContentDeserializer::store_extension(&mut values, data)?;
14483                    let data = SimpleContentContentDeserializer::finish_state(
14484                        reader,
14485                        SimpleContentContentDeserializerState::Extension(values, None),
14486                    )?;
14487                    *self.state = SimpleContentContentDeserializerState::Done__(data);
14488                    ElementHandlerOutput::Break { event, allow_any }
14489                }
14490                DeserializerArtifact::Deserializer(deserializer) => {
14491                    *self.state = SimpleContentContentDeserializerState::Extension(
14492                        values,
14493                        Some(deserializer),
14494                    );
14495                    ElementHandlerOutput::from_event_end(event, allow_any)
14496                }
14497            })
14498        }
14499    }
14500    impl<'de> Deserializer<'de, super::SimpleContentContent> for Box<SimpleContentContentDeserializer> {
14501        fn init<R>(
14502            reader: &R,
14503            event: Event<'de>,
14504        ) -> DeserializerResult<'de, super::SimpleContentContent>
14505        where
14506            R: DeserializeReader,
14507        {
14508            let deserializer = Box::new(SimpleContentContentDeserializer {
14509                state: Box::new(SimpleContentContentDeserializerState::Init__),
14510            });
14511            let mut output = deserializer.next(reader, event)?;
14512            output.artifact = match output.artifact {
14513                DeserializerArtifact::Deserializer(x)
14514                    if matches!(&*x.state, SimpleContentContentDeserializerState::Init__) =>
14515                {
14516                    DeserializerArtifact::None
14517                }
14518                artifact => artifact,
14519            };
14520            Ok(output)
14521        }
14522        fn next<R>(
14523            mut self,
14524            reader: &R,
14525            event: Event<'de>,
14526        ) -> DeserializerResult<'de, super::SimpleContentContent>
14527        where
14528            R: DeserializeReader,
14529        {
14530            use SimpleContentContentDeserializerState as S;
14531            let mut event = event;
14532            let mut fallback = None;
14533            let (event, allow_any) = loop {
14534                let state = replace(&mut *self.state, S::Unknown__);
14535                event = match (state, event) {
14536                    (S::Annotation(values, Some(deserializer)), event) => {
14537                        let output = deserializer.next(reader, event)?;
14538                        match self.handle_annotation(reader, values, output, &mut fallback)? {
14539                            ElementHandlerOutput::Break { event, allow_any } => {
14540                                break (event, allow_any)
14541                            }
14542                            ElementHandlerOutput::Continue { event, .. } => event,
14543                        }
14544                    }
14545                    (S::Restriction(values, Some(deserializer)), event) => {
14546                        let output = deserializer.next(reader, event)?;
14547                        match self.handle_restriction(reader, values, output, &mut fallback)? {
14548                            ElementHandlerOutput::Break { event, allow_any } => {
14549                                break (event, allow_any)
14550                            }
14551                            ElementHandlerOutput::Continue { event, .. } => event,
14552                        }
14553                    }
14554                    (S::Extension(values, Some(deserializer)), event) => {
14555                        let output = deserializer.next(reader, event)?;
14556                        match self.handle_extension(reader, values, output, &mut fallback)? {
14557                            ElementHandlerOutput::Break { event, allow_any } => {
14558                                break (event, allow_any)
14559                            }
14560                            ElementHandlerOutput::Continue { event, .. } => event,
14561                        }
14562                    }
14563                    (state, event @ Event::End(_)) => {
14564                        return Ok(DeserializerOutput {
14565                            artifact: DeserializerArtifact::Data(
14566                                SimpleContentContentDeserializer::finish_state(reader, state)?,
14567                            ),
14568                            event: DeserializerEvent::Continue(event),
14569                            allow_any: false,
14570                        });
14571                    }
14572                    (S::Init__, event) => match self.find_suitable(reader, event, &mut fallback)? {
14573                        ElementHandlerOutput::Break { event, allow_any } => {
14574                            break (event, allow_any)
14575                        }
14576                        ElementHandlerOutput::Continue { event, .. } => event,
14577                    },
14578                    (S::Annotation(values, None), event) => {
14579                        let output = <super::Annotation as WithDeserializer>::Deserializer::init(
14580                            reader, event,
14581                        )?;
14582                        match self.handle_annotation(reader, values, output, &mut fallback)? {
14583                            ElementHandlerOutput::Break { event, allow_any } => {
14584                                break (event, allow_any)
14585                            }
14586                            ElementHandlerOutput::Continue { event, .. } => event,
14587                        }
14588                    }
14589                    (S::Restriction(values, None), event) => {
14590                        let output =
14591                            <super::RestrictionType as WithDeserializer>::Deserializer::init(
14592                                reader, event,
14593                            )?;
14594                        match self.handle_restriction(reader, values, output, &mut fallback)? {
14595                            ElementHandlerOutput::Break { event, allow_any } => {
14596                                break (event, allow_any)
14597                            }
14598                            ElementHandlerOutput::Continue { event, .. } => event,
14599                        }
14600                    }
14601                    (S::Extension(values, None), event) => {
14602                        let output =
14603                            <super::ExtensionType as WithDeserializer>::Deserializer::init(
14604                                reader, event,
14605                            )?;
14606                        match self.handle_extension(reader, values, output, &mut fallback)? {
14607                            ElementHandlerOutput::Break { event, allow_any } => {
14608                                break (event, allow_any)
14609                            }
14610                            ElementHandlerOutput::Continue { event, .. } => event,
14611                        }
14612                    }
14613                    (s @ S::Done__(_), event) => {
14614                        *self.state = s;
14615                        break (DeserializerEvent::Continue(event), false);
14616                    }
14617                    (S::Unknown__, _) => unreachable!(),
14618                }
14619            };
14620            let artifact = if matches!(&*self.state, S::Done__(_)) {
14621                DeserializerArtifact::Data(self.finish(reader)?)
14622            } else {
14623                DeserializerArtifact::Deserializer(self)
14624            };
14625            Ok(DeserializerOutput {
14626                artifact,
14627                event,
14628                allow_any,
14629            })
14630        }
14631        fn finish<R>(self, reader: &R) -> Result<super::SimpleContentContent, Error>
14632        where
14633            R: DeserializeReader,
14634        {
14635            SimpleContentContentDeserializer::finish_state(reader, *self.state)
14636        }
14637    }
14638    #[derive(Debug)]
14639    pub struct ComplexContentDeserializer {
14640        id: Option<String>,
14641        mixed: Option<bool>,
14642        content: Vec<super::ComplexContentContent>,
14643        state: Box<ComplexContentDeserializerState>,
14644    }
14645    #[derive(Debug)]
14646    enum ComplexContentDeserializerState {
14647        Init__,
14648        Next__,
14649        Content__(<super::ComplexContentContent as WithDeserializer>::Deserializer),
14650        Unknown__,
14651    }
14652    impl ComplexContentDeserializer {
14653        fn from_bytes_start<R>(reader: &R, bytes_start: &BytesStart<'_>) -> Result<Box<Self>, Error>
14654        where
14655            R: DeserializeReader,
14656        {
14657            let mut id: Option<String> = None;
14658            let mut mixed: Option<bool> = None;
14659            for attrib in filter_xmlns_attributes(bytes_start) {
14660                let attrib = attrib?;
14661                if matches!(
14662                    reader.resolve_local_name(attrib.key, &super::NS_XS),
14663                    Some(b"id")
14664                ) {
14665                    reader.read_attrib(&mut id, b"id", &attrib.value)?;
14666                } else if matches!(
14667                    reader.resolve_local_name(attrib.key, &super::NS_XS),
14668                    Some(b"mixed")
14669                ) {
14670                    reader.read_attrib(&mut mixed, b"mixed", &attrib.value)?;
14671                }
14672            }
14673            Ok(Box::new(Self {
14674                id: id,
14675                mixed: mixed,
14676                content: Vec::new(),
14677                state: Box::new(ComplexContentDeserializerState::Init__),
14678            }))
14679        }
14680        fn finish_state<R>(
14681            &mut self,
14682            reader: &R,
14683            state: ComplexContentDeserializerState,
14684        ) -> Result<(), Error>
14685        where
14686            R: DeserializeReader,
14687        {
14688            if let ComplexContentDeserializerState::Content__(deserializer) = state {
14689                self.store_content(deserializer.finish(reader)?)?;
14690            }
14691            Ok(())
14692        }
14693        fn store_content(&mut self, value: super::ComplexContentContent) -> Result<(), Error> {
14694            self.content.push(value);
14695            Ok(())
14696        }
14697        fn handle_content<'de, R>(
14698            &mut self,
14699            reader: &R,
14700            output: DeserializerOutput<'de, super::ComplexContentContent>,
14701            fallback: &mut Option<ComplexContentDeserializerState>,
14702        ) -> Result<ElementHandlerOutput<'de>, Error>
14703        where
14704            R: DeserializeReader,
14705        {
14706            let DeserializerOutput {
14707                artifact,
14708                event,
14709                allow_any,
14710            } = output;
14711            if artifact.is_none() {
14712                *self.state = fallback
14713                    .take()
14714                    .unwrap_or(ComplexContentDeserializerState::Next__);
14715                return Ok(ElementHandlerOutput::break_(event, allow_any));
14716            }
14717            if let Some(fallback) = fallback.take() {
14718                self.finish_state(reader, fallback)?;
14719            }
14720            Ok(match artifact {
14721                DeserializerArtifact::None => unreachable!(),
14722                DeserializerArtifact::Data(data) => {
14723                    self.store_content(data)?;
14724                    *self.state = ComplexContentDeserializerState::Next__;
14725                    ElementHandlerOutput::from_event(event, allow_any)
14726                }
14727                DeserializerArtifact::Deserializer(deserializer) => {
14728                    let can_have_more = self.content.len().saturating_add(1) < 3usize;
14729                    let ret = if can_have_more {
14730                        ElementHandlerOutput::from_event(event, allow_any)
14731                    } else {
14732                        ElementHandlerOutput::from_event_end(event, allow_any)
14733                    };
14734                    match (can_have_more, &ret) {
14735                        (true, ElementHandlerOutput::Continue { .. }) => {
14736                            fallback.get_or_insert(ComplexContentDeserializerState::Content__(
14737                                deserializer,
14738                            ));
14739                            *self.state = ComplexContentDeserializerState::Next__;
14740                        }
14741                        (false, _) | (_, ElementHandlerOutput::Break { .. }) => {
14742                            *self.state = ComplexContentDeserializerState::Content__(deserializer);
14743                        }
14744                    }
14745                    ret
14746                }
14747            })
14748        }
14749    }
14750    impl<'de> Deserializer<'de, super::ComplexContent> for Box<ComplexContentDeserializer> {
14751        fn init<R>(reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::ComplexContent>
14752        where
14753            R: DeserializeReader,
14754        {
14755            reader.init_deserializer_from_start_event(
14756                event,
14757                ComplexContentDeserializer::from_bytes_start,
14758            )
14759        }
14760        fn next<R>(
14761            mut self,
14762            reader: &R,
14763            event: Event<'de>,
14764        ) -> DeserializerResult<'de, super::ComplexContent>
14765        where
14766            R: DeserializeReader,
14767        {
14768            use ComplexContentDeserializerState as S;
14769            let mut event = event;
14770            let mut fallback = None;
14771            let (event, allow_any) = loop {
14772                let state = replace(&mut *self.state, S::Unknown__);
14773                event = match (state, event) {
14774                    (S::Content__(deserializer), event) => {
14775                        let output = deserializer.next(reader, event)?;
14776                        match self.handle_content(reader, output, &mut fallback)? {
14777                            ElementHandlerOutput::Break { event, allow_any } => {
14778                                break (event, allow_any)
14779                            }
14780                            ElementHandlerOutput::Continue { event, .. } => event,
14781                        }
14782                    }
14783                    (_, Event::End(_)) => {
14784                        return Ok(DeserializerOutput {
14785                            artifact: DeserializerArtifact::Data(self.finish(reader)?),
14786                            event: DeserializerEvent::None,
14787                            allow_any: false,
14788                        });
14789                    }
14790                    (state @ (S::Init__ | S::Next__), event) => {
14791                        fallback.get_or_insert(state);
14792                        let output =
14793                            <super::ComplexContentContent as WithDeserializer>::Deserializer::init(
14794                                reader, event,
14795                            )?;
14796                        match self.handle_content(reader, output, &mut fallback)? {
14797                            ElementHandlerOutput::Break { event, allow_any } => {
14798                                break (event, allow_any)
14799                            }
14800                            ElementHandlerOutput::Continue { event, .. } => event,
14801                        }
14802                    }
14803                    (S::Unknown__, _) => unreachable!(),
14804                }
14805            };
14806            let artifact = DeserializerArtifact::Deserializer(self);
14807            Ok(DeserializerOutput {
14808                artifact,
14809                event,
14810                allow_any,
14811            })
14812        }
14813        fn finish<R>(mut self, reader: &R) -> Result<super::ComplexContent, Error>
14814        where
14815            R: DeserializeReader,
14816        {
14817            let state = replace(&mut *self.state, ComplexContentDeserializerState::Unknown__);
14818            self.finish_state(reader, state)?;
14819            Ok(super::ComplexContent {
14820                id: self.id,
14821                mixed: self.mixed,
14822                content: self.content,
14823            })
14824        }
14825    }
14826    #[derive(Debug)]
14827    pub struct ComplexContentContentDeserializer {
14828        state: Box<ComplexContentContentDeserializerState>,
14829    }
14830    #[derive(Debug)]
14831    pub enum ComplexContentContentDeserializerState {
14832        Init__,
14833        Annotation(
14834            Option<super::Annotation>,
14835            Option<<super::Annotation as WithDeserializer>::Deserializer>,
14836        ),
14837        Restriction(
14838            Option<super::RestrictionType>,
14839            Option<<super::RestrictionType as WithDeserializer>::Deserializer>,
14840        ),
14841        Extension(
14842            Option<super::ExtensionType>,
14843            Option<<super::ExtensionType as WithDeserializer>::Deserializer>,
14844        ),
14845        Done__(super::ComplexContentContent),
14846        Unknown__,
14847    }
14848    impl ComplexContentContentDeserializer {
14849        fn find_suitable<'de, R>(
14850            &mut self,
14851            reader: &R,
14852            event: Event<'de>,
14853            fallback: &mut Option<ComplexContentContentDeserializerState>,
14854        ) -> Result<ElementHandlerOutput<'de>, Error>
14855        where
14856            R: DeserializeReader,
14857        {
14858            let (Event::Start(x) | Event::Empty(x)) = &event else {
14859                *self.state = fallback
14860                    .take()
14861                    .unwrap_or(ComplexContentContentDeserializerState::Init__);
14862                return Ok(ElementHandlerOutput::return_to_parent(event, false));
14863            };
14864            if matches!(
14865                reader.resolve_local_name(x.name(), &super::NS_XS),
14866                Some(b"annotation")
14867            ) {
14868                let output =
14869                    <super::Annotation as WithDeserializer>::Deserializer::init(reader, event)?;
14870                return self.handle_annotation(reader, Default::default(), output, &mut *fallback);
14871            }
14872            if matches!(
14873                reader.resolve_local_name(x.name(), &super::NS_XS),
14874                Some(b"restriction")
14875            ) {
14876                let output = <super::RestrictionType as WithDeserializer>::Deserializer::init(
14877                    reader, event,
14878                )?;
14879                return self.handle_restriction(reader, Default::default(), output, &mut *fallback);
14880            }
14881            if matches!(
14882                reader.resolve_local_name(x.name(), &super::NS_XS),
14883                Some(b"extension")
14884            ) {
14885                let output =
14886                    <super::ExtensionType as WithDeserializer>::Deserializer::init(reader, event)?;
14887                return self.handle_extension(reader, Default::default(), output, &mut *fallback);
14888            }
14889            *self.state = fallback
14890                .take()
14891                .unwrap_or(ComplexContentContentDeserializerState::Init__);
14892            Ok(ElementHandlerOutput::return_to_parent(event, false))
14893        }
14894        fn finish_state<R>(
14895            reader: &R,
14896            state: ComplexContentContentDeserializerState,
14897        ) -> Result<super::ComplexContentContent, Error>
14898        where
14899            R: DeserializeReader,
14900        {
14901            use ComplexContentContentDeserializerState as S;
14902            match state {
14903                S::Init__ => Err(ErrorKind::MissingContent.into()),
14904                S::Annotation(mut values, deserializer) => {
14905                    if let Some(deserializer) = deserializer {
14906                        let value = deserializer.finish(reader)?;
14907                        ComplexContentContentDeserializer::store_annotation(&mut values, value)?;
14908                    }
14909                    Ok(super::ComplexContentContent::Annotation(
14910                        values.ok_or_else(|| ErrorKind::MissingElement("annotation".into()))?,
14911                    ))
14912                }
14913                S::Restriction(mut values, deserializer) => {
14914                    if let Some(deserializer) = deserializer {
14915                        let value = deserializer.finish(reader)?;
14916                        ComplexContentContentDeserializer::store_restriction(&mut values, value)?;
14917                    }
14918                    Ok(super::ComplexContentContent::Restriction(
14919                        values.ok_or_else(|| ErrorKind::MissingElement("restriction".into()))?,
14920                    ))
14921                }
14922                S::Extension(mut values, deserializer) => {
14923                    if let Some(deserializer) = deserializer {
14924                        let value = deserializer.finish(reader)?;
14925                        ComplexContentContentDeserializer::store_extension(&mut values, value)?;
14926                    }
14927                    Ok(super::ComplexContentContent::Extension(values.ok_or_else(
14928                        || ErrorKind::MissingElement("extension".into()),
14929                    )?))
14930                }
14931                S::Done__(data) => Ok(data),
14932                S::Unknown__ => unreachable!(),
14933            }
14934        }
14935        fn store_annotation(
14936            values: &mut Option<super::Annotation>,
14937            value: super::Annotation,
14938        ) -> Result<(), Error> {
14939            if values.is_some() {
14940                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
14941                    b"annotation",
14942                )))?;
14943            }
14944            *values = Some(value);
14945            Ok(())
14946        }
14947        fn store_restriction(
14948            values: &mut Option<super::RestrictionType>,
14949            value: super::RestrictionType,
14950        ) -> Result<(), Error> {
14951            if values.is_some() {
14952                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
14953                    b"restriction",
14954                )))?;
14955            }
14956            *values = Some(value);
14957            Ok(())
14958        }
14959        fn store_extension(
14960            values: &mut Option<super::ExtensionType>,
14961            value: super::ExtensionType,
14962        ) -> Result<(), Error> {
14963            if values.is_some() {
14964                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
14965                    b"extension",
14966                )))?;
14967            }
14968            *values = Some(value);
14969            Ok(())
14970        }
14971        fn handle_annotation<'de, R>(
14972            &mut self,
14973            reader: &R,
14974            mut values: Option<super::Annotation>,
14975            output: DeserializerOutput<'de, super::Annotation>,
14976            fallback: &mut Option<ComplexContentContentDeserializerState>,
14977        ) -> Result<ElementHandlerOutput<'de>, Error>
14978        where
14979            R: DeserializeReader,
14980        {
14981            let DeserializerOutput {
14982                artifact,
14983                event,
14984                allow_any,
14985            } = output;
14986            if artifact.is_none() {
14987                *self.state = match fallback.take() {
14988                    None => ComplexContentContentDeserializerState::Init__,
14989                    Some(ComplexContentContentDeserializerState::Annotation(
14990                        _,
14991                        Some(deserializer),
14992                    )) => ComplexContentContentDeserializerState::Annotation(
14993                        values,
14994                        Some(deserializer),
14995                    ),
14996                    _ => unreachable!(),
14997                };
14998                return Ok(ElementHandlerOutput::break_(event, allow_any));
14999            }
15000            match fallback.take() {
15001                None => (),
15002                Some(ComplexContentContentDeserializerState::Annotation(_, Some(deserializer))) => {
15003                    let data = deserializer.finish(reader)?;
15004                    ComplexContentContentDeserializer::store_annotation(&mut values, data)?;
15005                }
15006                Some(_) => unreachable!(),
15007            }
15008            Ok(match artifact {
15009                DeserializerArtifact::None => unreachable!(),
15010                DeserializerArtifact::Data(data) => {
15011                    ComplexContentContentDeserializer::store_annotation(&mut values, data)?;
15012                    let data = ComplexContentContentDeserializer::finish_state(
15013                        reader,
15014                        ComplexContentContentDeserializerState::Annotation(values, None),
15015                    )?;
15016                    *self.state = ComplexContentContentDeserializerState::Done__(data);
15017                    ElementHandlerOutput::Break { event, allow_any }
15018                }
15019                DeserializerArtifact::Deserializer(deserializer) => {
15020                    *self.state = ComplexContentContentDeserializerState::Annotation(
15021                        values,
15022                        Some(deserializer),
15023                    );
15024                    ElementHandlerOutput::from_event_end(event, allow_any)
15025                }
15026            })
15027        }
15028        fn handle_restriction<'de, R>(
15029            &mut self,
15030            reader: &R,
15031            mut values: Option<super::RestrictionType>,
15032            output: DeserializerOutput<'de, super::RestrictionType>,
15033            fallback: &mut Option<ComplexContentContentDeserializerState>,
15034        ) -> Result<ElementHandlerOutput<'de>, Error>
15035        where
15036            R: DeserializeReader,
15037        {
15038            let DeserializerOutput {
15039                artifact,
15040                event,
15041                allow_any,
15042            } = output;
15043            if artifact.is_none() {
15044                *self.state = match fallback.take() {
15045                    None => ComplexContentContentDeserializerState::Init__,
15046                    Some(ComplexContentContentDeserializerState::Restriction(
15047                        _,
15048                        Some(deserializer),
15049                    )) => ComplexContentContentDeserializerState::Restriction(
15050                        values,
15051                        Some(deserializer),
15052                    ),
15053                    _ => unreachable!(),
15054                };
15055                return Ok(ElementHandlerOutput::break_(event, allow_any));
15056            }
15057            match fallback.take() {
15058                None => (),
15059                Some(ComplexContentContentDeserializerState::Restriction(
15060                    _,
15061                    Some(deserializer),
15062                )) => {
15063                    let data = deserializer.finish(reader)?;
15064                    ComplexContentContentDeserializer::store_restriction(&mut values, data)?;
15065                }
15066                Some(_) => unreachable!(),
15067            }
15068            Ok(match artifact {
15069                DeserializerArtifact::None => unreachable!(),
15070                DeserializerArtifact::Data(data) => {
15071                    ComplexContentContentDeserializer::store_restriction(&mut values, data)?;
15072                    let data = ComplexContentContentDeserializer::finish_state(
15073                        reader,
15074                        ComplexContentContentDeserializerState::Restriction(values, None),
15075                    )?;
15076                    *self.state = ComplexContentContentDeserializerState::Done__(data);
15077                    ElementHandlerOutput::Break { event, allow_any }
15078                }
15079                DeserializerArtifact::Deserializer(deserializer) => {
15080                    *self.state = ComplexContentContentDeserializerState::Restriction(
15081                        values,
15082                        Some(deserializer),
15083                    );
15084                    ElementHandlerOutput::from_event_end(event, allow_any)
15085                }
15086            })
15087        }
15088        fn handle_extension<'de, R>(
15089            &mut self,
15090            reader: &R,
15091            mut values: Option<super::ExtensionType>,
15092            output: DeserializerOutput<'de, super::ExtensionType>,
15093            fallback: &mut Option<ComplexContentContentDeserializerState>,
15094        ) -> Result<ElementHandlerOutput<'de>, Error>
15095        where
15096            R: DeserializeReader,
15097        {
15098            let DeserializerOutput {
15099                artifact,
15100                event,
15101                allow_any,
15102            } = output;
15103            if artifact.is_none() {
15104                *self.state = match fallback.take() {
15105                    None => ComplexContentContentDeserializerState::Init__,
15106                    Some(ComplexContentContentDeserializerState::Extension(
15107                        _,
15108                        Some(deserializer),
15109                    )) => ComplexContentContentDeserializerState::Extension(
15110                        values,
15111                        Some(deserializer),
15112                    ),
15113                    _ => unreachable!(),
15114                };
15115                return Ok(ElementHandlerOutput::break_(event, allow_any));
15116            }
15117            match fallback.take() {
15118                None => (),
15119                Some(ComplexContentContentDeserializerState::Extension(_, Some(deserializer))) => {
15120                    let data = deserializer.finish(reader)?;
15121                    ComplexContentContentDeserializer::store_extension(&mut values, data)?;
15122                }
15123                Some(_) => unreachable!(),
15124            }
15125            Ok(match artifact {
15126                DeserializerArtifact::None => unreachable!(),
15127                DeserializerArtifact::Data(data) => {
15128                    ComplexContentContentDeserializer::store_extension(&mut values, data)?;
15129                    let data = ComplexContentContentDeserializer::finish_state(
15130                        reader,
15131                        ComplexContentContentDeserializerState::Extension(values, None),
15132                    )?;
15133                    *self.state = ComplexContentContentDeserializerState::Done__(data);
15134                    ElementHandlerOutput::Break { event, allow_any }
15135                }
15136                DeserializerArtifact::Deserializer(deserializer) => {
15137                    *self.state = ComplexContentContentDeserializerState::Extension(
15138                        values,
15139                        Some(deserializer),
15140                    );
15141                    ElementHandlerOutput::from_event_end(event, allow_any)
15142                }
15143            })
15144        }
15145    }
15146    impl<'de> Deserializer<'de, super::ComplexContentContent>
15147        for Box<ComplexContentContentDeserializer>
15148    {
15149        fn init<R>(
15150            reader: &R,
15151            event: Event<'de>,
15152        ) -> DeserializerResult<'de, super::ComplexContentContent>
15153        where
15154            R: DeserializeReader,
15155        {
15156            let deserializer = Box::new(ComplexContentContentDeserializer {
15157                state: Box::new(ComplexContentContentDeserializerState::Init__),
15158            });
15159            let mut output = deserializer.next(reader, event)?;
15160            output.artifact = match output.artifact {
15161                DeserializerArtifact::Deserializer(x)
15162                    if matches!(&*x.state, ComplexContentContentDeserializerState::Init__) =>
15163                {
15164                    DeserializerArtifact::None
15165                }
15166                artifact => artifact,
15167            };
15168            Ok(output)
15169        }
15170        fn next<R>(
15171            mut self,
15172            reader: &R,
15173            event: Event<'de>,
15174        ) -> DeserializerResult<'de, super::ComplexContentContent>
15175        where
15176            R: DeserializeReader,
15177        {
15178            use ComplexContentContentDeserializerState as S;
15179            let mut event = event;
15180            let mut fallback = None;
15181            let (event, allow_any) = loop {
15182                let state = replace(&mut *self.state, S::Unknown__);
15183                event = match (state, event) {
15184                    (S::Annotation(values, Some(deserializer)), event) => {
15185                        let output = deserializer.next(reader, event)?;
15186                        match self.handle_annotation(reader, values, output, &mut fallback)? {
15187                            ElementHandlerOutput::Break { event, allow_any } => {
15188                                break (event, allow_any)
15189                            }
15190                            ElementHandlerOutput::Continue { event, .. } => event,
15191                        }
15192                    }
15193                    (S::Restriction(values, Some(deserializer)), event) => {
15194                        let output = deserializer.next(reader, event)?;
15195                        match self.handle_restriction(reader, values, output, &mut fallback)? {
15196                            ElementHandlerOutput::Break { event, allow_any } => {
15197                                break (event, allow_any)
15198                            }
15199                            ElementHandlerOutput::Continue { event, .. } => event,
15200                        }
15201                    }
15202                    (S::Extension(values, Some(deserializer)), event) => {
15203                        let output = deserializer.next(reader, event)?;
15204                        match self.handle_extension(reader, values, output, &mut fallback)? {
15205                            ElementHandlerOutput::Break { event, allow_any } => {
15206                                break (event, allow_any)
15207                            }
15208                            ElementHandlerOutput::Continue { event, .. } => event,
15209                        }
15210                    }
15211                    (state, event @ Event::End(_)) => {
15212                        return Ok(DeserializerOutput {
15213                            artifact: DeserializerArtifact::Data(
15214                                ComplexContentContentDeserializer::finish_state(reader, state)?,
15215                            ),
15216                            event: DeserializerEvent::Continue(event),
15217                            allow_any: false,
15218                        });
15219                    }
15220                    (S::Init__, event) => match self.find_suitable(reader, event, &mut fallback)? {
15221                        ElementHandlerOutput::Break { event, allow_any } => {
15222                            break (event, allow_any)
15223                        }
15224                        ElementHandlerOutput::Continue { event, .. } => event,
15225                    },
15226                    (S::Annotation(values, None), event) => {
15227                        let output = <super::Annotation as WithDeserializer>::Deserializer::init(
15228                            reader, event,
15229                        )?;
15230                        match self.handle_annotation(reader, values, output, &mut fallback)? {
15231                            ElementHandlerOutput::Break { event, allow_any } => {
15232                                break (event, allow_any)
15233                            }
15234                            ElementHandlerOutput::Continue { event, .. } => event,
15235                        }
15236                    }
15237                    (S::Restriction(values, None), event) => {
15238                        let output =
15239                            <super::RestrictionType as WithDeserializer>::Deserializer::init(
15240                                reader, event,
15241                            )?;
15242                        match self.handle_restriction(reader, values, output, &mut fallback)? {
15243                            ElementHandlerOutput::Break { event, allow_any } => {
15244                                break (event, allow_any)
15245                            }
15246                            ElementHandlerOutput::Continue { event, .. } => event,
15247                        }
15248                    }
15249                    (S::Extension(values, None), event) => {
15250                        let output =
15251                            <super::ExtensionType as WithDeserializer>::Deserializer::init(
15252                                reader, event,
15253                            )?;
15254                        match self.handle_extension(reader, values, output, &mut fallback)? {
15255                            ElementHandlerOutput::Break { event, allow_any } => {
15256                                break (event, allow_any)
15257                            }
15258                            ElementHandlerOutput::Continue { event, .. } => event,
15259                        }
15260                    }
15261                    (s @ S::Done__(_), event) => {
15262                        *self.state = s;
15263                        break (DeserializerEvent::Continue(event), false);
15264                    }
15265                    (S::Unknown__, _) => unreachable!(),
15266                }
15267            };
15268            let artifact = if matches!(&*self.state, S::Done__(_)) {
15269                DeserializerArtifact::Data(self.finish(reader)?)
15270            } else {
15271                DeserializerArtifact::Deserializer(self)
15272            };
15273            Ok(DeserializerOutput {
15274                artifact,
15275                event,
15276                allow_any,
15277            })
15278        }
15279        fn finish<R>(self, reader: &R) -> Result<super::ComplexContentContent, Error>
15280        where
15281            R: DeserializeReader,
15282        {
15283            ComplexContentContentDeserializer::finish_state(reader, *self.state)
15284        }
15285    }
15286    #[derive(Debug)]
15287    pub struct OpenContentDeserializer {
15288        id: Option<String>,
15289        mode: super::OpenContentModeType,
15290        annotation: Option<super::Annotation>,
15291        any: Option<super::WildcardType>,
15292        state: Box<OpenContentDeserializerState>,
15293    }
15294    #[derive(Debug)]
15295    enum OpenContentDeserializerState {
15296        Init__,
15297        Annotation(Option<<super::Annotation as WithDeserializer>::Deserializer>),
15298        Any(Option<<super::WildcardType as WithDeserializer>::Deserializer>),
15299        Done__,
15300        Unknown__,
15301    }
15302    impl OpenContentDeserializer {
15303        fn from_bytes_start<R>(reader: &R, bytes_start: &BytesStart<'_>) -> Result<Box<Self>, Error>
15304        where
15305            R: DeserializeReader,
15306        {
15307            let mut id: Option<String> = None;
15308            let mut mode: Option<super::OpenContentModeType> = None;
15309            for attrib in filter_xmlns_attributes(bytes_start) {
15310                let attrib = attrib?;
15311                if matches!(
15312                    reader.resolve_local_name(attrib.key, &super::NS_XS),
15313                    Some(b"id")
15314                ) {
15315                    reader.read_attrib(&mut id, b"id", &attrib.value)?;
15316                } else if matches!(
15317                    reader.resolve_local_name(attrib.key, &super::NS_XS),
15318                    Some(b"mode")
15319                ) {
15320                    reader.read_attrib(&mut mode, b"mode", &attrib.value)?;
15321                }
15322            }
15323            Ok(Box::new(Self {
15324                id: id,
15325                mode: mode.unwrap_or_else(super::OpenContent::default_mode),
15326                annotation: None,
15327                any: None,
15328                state: Box::new(OpenContentDeserializerState::Init__),
15329            }))
15330        }
15331        fn finish_state<R>(
15332            &mut self,
15333            reader: &R,
15334            state: OpenContentDeserializerState,
15335        ) -> Result<(), Error>
15336        where
15337            R: DeserializeReader,
15338        {
15339            use OpenContentDeserializerState as S;
15340            match state {
15341                S::Annotation(Some(deserializer)) => {
15342                    self.store_annotation(deserializer.finish(reader)?)?
15343                }
15344                S::Any(Some(deserializer)) => self.store_any(deserializer.finish(reader)?)?,
15345                _ => (),
15346            }
15347            Ok(())
15348        }
15349        fn store_annotation(&mut self, value: super::Annotation) -> Result<(), Error> {
15350            if self.annotation.is_some() {
15351                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
15352                    b"annotation",
15353                )))?;
15354            }
15355            self.annotation = Some(value);
15356            Ok(())
15357        }
15358        fn store_any(&mut self, value: super::WildcardType) -> Result<(), Error> {
15359            if self.any.is_some() {
15360                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(b"any")))?;
15361            }
15362            self.any = Some(value);
15363            Ok(())
15364        }
15365        fn handle_annotation<'de, R>(
15366            &mut self,
15367            reader: &R,
15368            output: DeserializerOutput<'de, super::Annotation>,
15369            fallback: &mut Option<OpenContentDeserializerState>,
15370        ) -> Result<ElementHandlerOutput<'de>, Error>
15371        where
15372            R: DeserializeReader,
15373        {
15374            let DeserializerOutput {
15375                artifact,
15376                event,
15377                allow_any,
15378            } = output;
15379            if artifact.is_none() {
15380                fallback.get_or_insert(OpenContentDeserializerState::Annotation(None));
15381                *self.state = OpenContentDeserializerState::Any(None);
15382                return Ok(ElementHandlerOutput::from_event(event, allow_any));
15383            }
15384            if let Some(fallback) = fallback.take() {
15385                self.finish_state(reader, fallback)?;
15386            }
15387            Ok(match artifact {
15388                DeserializerArtifact::None => unreachable!(),
15389                DeserializerArtifact::Data(data) => {
15390                    self.store_annotation(data)?;
15391                    *self.state = OpenContentDeserializerState::Any(None);
15392                    ElementHandlerOutput::from_event(event, allow_any)
15393                }
15394                DeserializerArtifact::Deserializer(deserializer) => {
15395                    let ret = ElementHandlerOutput::from_event(event, allow_any);
15396                    match &ret {
15397                        ElementHandlerOutput::Continue { .. } => {
15398                            fallback.get_or_insert(OpenContentDeserializerState::Annotation(Some(
15399                                deserializer,
15400                            )));
15401                            *self.state = OpenContentDeserializerState::Any(None);
15402                        }
15403                        ElementHandlerOutput::Break { .. } => {
15404                            *self.state =
15405                                OpenContentDeserializerState::Annotation(Some(deserializer));
15406                        }
15407                    }
15408                    ret
15409                }
15410            })
15411        }
15412        fn handle_any<'de, R>(
15413            &mut self,
15414            reader: &R,
15415            output: DeserializerOutput<'de, super::WildcardType>,
15416            fallback: &mut Option<OpenContentDeserializerState>,
15417        ) -> Result<ElementHandlerOutput<'de>, Error>
15418        where
15419            R: DeserializeReader,
15420        {
15421            let DeserializerOutput {
15422                artifact,
15423                event,
15424                allow_any,
15425            } = output;
15426            if artifact.is_none() {
15427                fallback.get_or_insert(OpenContentDeserializerState::Any(None));
15428                *self.state = OpenContentDeserializerState::Done__;
15429                return Ok(ElementHandlerOutput::from_event(event, allow_any));
15430            }
15431            if let Some(fallback) = fallback.take() {
15432                self.finish_state(reader, fallback)?;
15433            }
15434            Ok(match artifact {
15435                DeserializerArtifact::None => unreachable!(),
15436                DeserializerArtifact::Data(data) => {
15437                    self.store_any(data)?;
15438                    *self.state = OpenContentDeserializerState::Done__;
15439                    ElementHandlerOutput::from_event(event, allow_any)
15440                }
15441                DeserializerArtifact::Deserializer(deserializer) => {
15442                    let ret = ElementHandlerOutput::from_event(event, allow_any);
15443                    match &ret {
15444                        ElementHandlerOutput::Continue { .. } => {
15445                            fallback.get_or_insert(OpenContentDeserializerState::Any(Some(
15446                                deserializer,
15447                            )));
15448                            *self.state = OpenContentDeserializerState::Done__;
15449                        }
15450                        ElementHandlerOutput::Break { .. } => {
15451                            *self.state = OpenContentDeserializerState::Any(Some(deserializer));
15452                        }
15453                    }
15454                    ret
15455                }
15456            })
15457        }
15458    }
15459    impl<'de> Deserializer<'de, super::OpenContent> for Box<OpenContentDeserializer> {
15460        fn init<R>(reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::OpenContent>
15461        where
15462            R: DeserializeReader,
15463        {
15464            reader.init_deserializer_from_start_event(
15465                event,
15466                OpenContentDeserializer::from_bytes_start,
15467            )
15468        }
15469        fn next<R>(
15470            mut self,
15471            reader: &R,
15472            event: Event<'de>,
15473        ) -> DeserializerResult<'de, super::OpenContent>
15474        where
15475            R: DeserializeReader,
15476        {
15477            use OpenContentDeserializerState as S;
15478            let mut event = event;
15479            let mut fallback = None;
15480            let mut allow_any_element = false;
15481            let (event, allow_any) = loop {
15482                let state = replace(&mut *self.state, S::Unknown__);
15483                event = match (state, event) {
15484                    (S::Annotation(Some(deserializer)), event) => {
15485                        let output = deserializer.next(reader, event)?;
15486                        match self.handle_annotation(reader, output, &mut fallback)? {
15487                            ElementHandlerOutput::Continue { event, allow_any } => {
15488                                allow_any_element = allow_any_element || allow_any;
15489                                event
15490                            }
15491                            ElementHandlerOutput::Break { event, allow_any } => {
15492                                break (event, allow_any)
15493                            }
15494                        }
15495                    }
15496                    (S::Any(Some(deserializer)), event) => {
15497                        let output = deserializer.next(reader, event)?;
15498                        match self.handle_any(reader, output, &mut fallback)? {
15499                            ElementHandlerOutput::Continue { event, allow_any } => {
15500                                allow_any_element = allow_any_element || allow_any;
15501                                event
15502                            }
15503                            ElementHandlerOutput::Break { event, allow_any } => {
15504                                break (event, allow_any)
15505                            }
15506                        }
15507                    }
15508                    (_, Event::End(_)) => {
15509                        if let Some(fallback) = fallback.take() {
15510                            self.finish_state(reader, fallback)?;
15511                        }
15512                        return Ok(DeserializerOutput {
15513                            artifact: DeserializerArtifact::Data(self.finish(reader)?),
15514                            event: DeserializerEvent::None,
15515                            allow_any: false,
15516                        });
15517                    }
15518                    (S::Init__, event) => {
15519                        fallback.get_or_insert(S::Init__);
15520                        *self.state = OpenContentDeserializerState::Annotation(None);
15521                        event
15522                    }
15523                    (S::Annotation(None), event @ (Event::Start(_) | Event::Empty(_))) => {
15524                        if reader.check_start_tag_name(&event, Some(&super::NS_XS), b"annotation") {
15525                            let output =
15526                                <super::Annotation as WithDeserializer>::Deserializer::init(
15527                                    reader, event,
15528                                )?;
15529                            match self.handle_annotation(reader, output, &mut fallback)? {
15530                                ElementHandlerOutput::Continue { event, allow_any } => {
15531                                    allow_any_element = allow_any_element || allow_any;
15532                                    event
15533                                }
15534                                ElementHandlerOutput::Break { event, allow_any } => {
15535                                    break (event, allow_any)
15536                                }
15537                            }
15538                        } else {
15539                            *self.state = S::Any(None);
15540                            allow_any_element = true;
15541                            fallback.get_or_insert(S::Annotation(None));
15542                            event
15543                        }
15544                    }
15545                    (S::Any(None), event @ (Event::Start(_) | Event::Empty(_))) => {
15546                        if reader.check_start_tag_name(&event, Some(&super::NS_XS), b"any") {
15547                            let output =
15548                                <super::WildcardType as WithDeserializer>::Deserializer::init(
15549                                    reader, event,
15550                                )?;
15551                            match self.handle_any(reader, output, &mut fallback)? {
15552                                ElementHandlerOutput::Continue { event, allow_any } => {
15553                                    allow_any_element = allow_any_element || allow_any;
15554                                    event
15555                                }
15556                                ElementHandlerOutput::Break { event, allow_any } => {
15557                                    break (event, allow_any)
15558                                }
15559                            }
15560                        } else {
15561                            *self.state = S::Done__;
15562                            allow_any_element = true;
15563                            fallback.get_or_insert(S::Any(None));
15564                            event
15565                        }
15566                    }
15567                    (S::Done__, event) => {
15568                        fallback.get_or_insert(S::Done__);
15569                        break (DeserializerEvent::Continue(event), allow_any_element);
15570                    }
15571                    (S::Unknown__, _) => unreachable!(),
15572                    (state, event) => {
15573                        *self.state = state;
15574                        break (DeserializerEvent::Break(event), false);
15575                    }
15576                }
15577            };
15578            if let Some(fallback) = fallback {
15579                *self.state = fallback;
15580            }
15581            Ok(DeserializerOutput {
15582                artifact: DeserializerArtifact::Deserializer(self),
15583                event,
15584                allow_any,
15585            })
15586        }
15587        fn finish<R>(mut self, reader: &R) -> Result<super::OpenContent, Error>
15588        where
15589            R: DeserializeReader,
15590        {
15591            let state = replace(&mut *self.state, OpenContentDeserializerState::Unknown__);
15592            self.finish_state(reader, state)?;
15593            Ok(super::OpenContent {
15594                id: self.id,
15595                mode: self.mode,
15596                annotation: self.annotation,
15597                any: self.any,
15598            })
15599        }
15600    }
15601    #[derive(Debug)]
15602    pub struct AnyAttributeDeserializer {
15603        id: Option<String>,
15604        namespace: Option<super::NamespaceListType>,
15605        not_namespace: Option<super::BasicNamespaceListType>,
15606        process_contents: super::ProcessContentsType,
15607        not_q_name: Option<super::QnameListAType>,
15608        annotation: Option<super::Annotation>,
15609        state: Box<AnyAttributeDeserializerState>,
15610    }
15611    #[derive(Debug)]
15612    enum AnyAttributeDeserializerState {
15613        Init__,
15614        Annotation(Option<<super::Annotation as WithDeserializer>::Deserializer>),
15615        Done__,
15616        Unknown__,
15617    }
15618    impl AnyAttributeDeserializer {
15619        fn from_bytes_start<R>(reader: &R, bytes_start: &BytesStart<'_>) -> Result<Box<Self>, Error>
15620        where
15621            R: DeserializeReader,
15622        {
15623            let mut id: Option<String> = None;
15624            let mut namespace: Option<super::NamespaceListType> = None;
15625            let mut not_namespace: Option<super::BasicNamespaceListType> = None;
15626            let mut process_contents: Option<super::ProcessContentsType> = None;
15627            let mut not_q_name: Option<super::QnameListAType> = None;
15628            for attrib in filter_xmlns_attributes(bytes_start) {
15629                let attrib = attrib?;
15630                if matches!(
15631                    reader.resolve_local_name(attrib.key, &super::NS_XS),
15632                    Some(b"id")
15633                ) {
15634                    reader.read_attrib(&mut id, b"id", &attrib.value)?;
15635                } else if matches!(
15636                    reader.resolve_local_name(attrib.key, &super::NS_XS),
15637                    Some(b"namespace")
15638                ) {
15639                    reader.read_attrib(&mut namespace, b"namespace", &attrib.value)?;
15640                } else if matches!(
15641                    reader.resolve_local_name(attrib.key, &super::NS_XS),
15642                    Some(b"notNamespace")
15643                ) {
15644                    reader.read_attrib(&mut not_namespace, b"notNamespace", &attrib.value)?;
15645                } else if matches!(
15646                    reader.resolve_local_name(attrib.key, &super::NS_XS),
15647                    Some(b"processContents")
15648                ) {
15649                    reader.read_attrib(&mut process_contents, b"processContents", &attrib.value)?;
15650                } else if matches!(
15651                    reader.resolve_local_name(attrib.key, &super::NS_XS),
15652                    Some(b"notQName")
15653                ) {
15654                    reader.read_attrib(&mut not_q_name, b"notQName", &attrib.value)?;
15655                }
15656            }
15657            Ok(Box::new(Self {
15658                id: id,
15659                namespace: namespace,
15660                not_namespace: not_namespace,
15661                process_contents: process_contents
15662                    .unwrap_or_else(super::AnyAttribute::default_process_contents),
15663                not_q_name: not_q_name,
15664                annotation: None,
15665                state: Box::new(AnyAttributeDeserializerState::Init__),
15666            }))
15667        }
15668        fn finish_state<R>(
15669            &mut self,
15670            reader: &R,
15671            state: AnyAttributeDeserializerState,
15672        ) -> Result<(), Error>
15673        where
15674            R: DeserializeReader,
15675        {
15676            use AnyAttributeDeserializerState as S;
15677            match state {
15678                S::Annotation(Some(deserializer)) => {
15679                    self.store_annotation(deserializer.finish(reader)?)?
15680                }
15681                _ => (),
15682            }
15683            Ok(())
15684        }
15685        fn store_annotation(&mut self, value: super::Annotation) -> Result<(), Error> {
15686            if self.annotation.is_some() {
15687                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
15688                    b"annotation",
15689                )))?;
15690            }
15691            self.annotation = Some(value);
15692            Ok(())
15693        }
15694        fn handle_annotation<'de, R>(
15695            &mut self,
15696            reader: &R,
15697            output: DeserializerOutput<'de, super::Annotation>,
15698            fallback: &mut Option<AnyAttributeDeserializerState>,
15699        ) -> Result<ElementHandlerOutput<'de>, Error>
15700        where
15701            R: DeserializeReader,
15702        {
15703            let DeserializerOutput {
15704                artifact,
15705                event,
15706                allow_any,
15707            } = output;
15708            if artifact.is_none() {
15709                fallback.get_or_insert(AnyAttributeDeserializerState::Annotation(None));
15710                *self.state = AnyAttributeDeserializerState::Done__;
15711                return Ok(ElementHandlerOutput::from_event(event, allow_any));
15712            }
15713            if let Some(fallback) = fallback.take() {
15714                self.finish_state(reader, fallback)?;
15715            }
15716            Ok(match artifact {
15717                DeserializerArtifact::None => unreachable!(),
15718                DeserializerArtifact::Data(data) => {
15719                    self.store_annotation(data)?;
15720                    *self.state = AnyAttributeDeserializerState::Done__;
15721                    ElementHandlerOutput::from_event(event, allow_any)
15722                }
15723                DeserializerArtifact::Deserializer(deserializer) => {
15724                    let ret = ElementHandlerOutput::from_event(event, allow_any);
15725                    match &ret {
15726                        ElementHandlerOutput::Continue { .. } => {
15727                            fallback.get_or_insert(AnyAttributeDeserializerState::Annotation(
15728                                Some(deserializer),
15729                            ));
15730                            *self.state = AnyAttributeDeserializerState::Done__;
15731                        }
15732                        ElementHandlerOutput::Break { .. } => {
15733                            *self.state =
15734                                AnyAttributeDeserializerState::Annotation(Some(deserializer));
15735                        }
15736                    }
15737                    ret
15738                }
15739            })
15740        }
15741    }
15742    impl<'de> Deserializer<'de, super::AnyAttribute> for Box<AnyAttributeDeserializer> {
15743        fn init<R>(reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::AnyAttribute>
15744        where
15745            R: DeserializeReader,
15746        {
15747            reader.init_deserializer_from_start_event(
15748                event,
15749                AnyAttributeDeserializer::from_bytes_start,
15750            )
15751        }
15752        fn next<R>(
15753            mut self,
15754            reader: &R,
15755            event: Event<'de>,
15756        ) -> DeserializerResult<'de, super::AnyAttribute>
15757        where
15758            R: DeserializeReader,
15759        {
15760            use AnyAttributeDeserializerState as S;
15761            let mut event = event;
15762            let mut fallback = None;
15763            let mut allow_any_element = false;
15764            let (event, allow_any) = loop {
15765                let state = replace(&mut *self.state, S::Unknown__);
15766                event = match (state, event) {
15767                    (S::Annotation(Some(deserializer)), event) => {
15768                        let output = deserializer.next(reader, event)?;
15769                        match self.handle_annotation(reader, output, &mut fallback)? {
15770                            ElementHandlerOutput::Continue { event, allow_any } => {
15771                                allow_any_element = allow_any_element || allow_any;
15772                                event
15773                            }
15774                            ElementHandlerOutput::Break { event, allow_any } => {
15775                                break (event, allow_any)
15776                            }
15777                        }
15778                    }
15779                    (_, Event::End(_)) => {
15780                        if let Some(fallback) = fallback.take() {
15781                            self.finish_state(reader, fallback)?;
15782                        }
15783                        return Ok(DeserializerOutput {
15784                            artifact: DeserializerArtifact::Data(self.finish(reader)?),
15785                            event: DeserializerEvent::None,
15786                            allow_any: false,
15787                        });
15788                    }
15789                    (S::Init__, event) => {
15790                        fallback.get_or_insert(S::Init__);
15791                        *self.state = AnyAttributeDeserializerState::Annotation(None);
15792                        event
15793                    }
15794                    (S::Annotation(None), event @ (Event::Start(_) | Event::Empty(_))) => {
15795                        if reader.check_start_tag_name(&event, Some(&super::NS_XS), b"annotation") {
15796                            let output =
15797                                <super::Annotation as WithDeserializer>::Deserializer::init(
15798                                    reader, event,
15799                                )?;
15800                            match self.handle_annotation(reader, output, &mut fallback)? {
15801                                ElementHandlerOutput::Continue { event, allow_any } => {
15802                                    allow_any_element = allow_any_element || allow_any;
15803                                    event
15804                                }
15805                                ElementHandlerOutput::Break { event, allow_any } => {
15806                                    break (event, allow_any)
15807                                }
15808                            }
15809                        } else {
15810                            *self.state = S::Done__;
15811                            allow_any_element = true;
15812                            fallback.get_or_insert(S::Annotation(None));
15813                            event
15814                        }
15815                    }
15816                    (S::Done__, event) => {
15817                        fallback.get_or_insert(S::Done__);
15818                        break (DeserializerEvent::Continue(event), allow_any_element);
15819                    }
15820                    (S::Unknown__, _) => unreachable!(),
15821                    (state, event) => {
15822                        *self.state = state;
15823                        break (DeserializerEvent::Break(event), false);
15824                    }
15825                }
15826            };
15827            if let Some(fallback) = fallback {
15828                *self.state = fallback;
15829            }
15830            Ok(DeserializerOutput {
15831                artifact: DeserializerArtifact::Deserializer(self),
15832                event,
15833                allow_any,
15834            })
15835        }
15836        fn finish<R>(mut self, reader: &R) -> Result<super::AnyAttribute, Error>
15837        where
15838            R: DeserializeReader,
15839        {
15840            let state = replace(&mut *self.state, AnyAttributeDeserializerState::Unknown__);
15841            self.finish_state(reader, state)?;
15842            Ok(super::AnyAttribute {
15843                id: self.id,
15844                namespace: self.namespace,
15845                not_namespace: self.not_namespace,
15846                process_contents: self.process_contents,
15847                not_q_name: self.not_q_name,
15848                annotation: self.annotation,
15849            })
15850        }
15851    }
15852    #[derive(Debug)]
15853    pub struct AssertionTypeDeserializer {
15854        id: Option<String>,
15855        test: Option<String>,
15856        xpath_default_namespace: Option<super::XpathDefaultNamespaceType>,
15857        annotation: Option<super::Annotation>,
15858        state: Box<AssertionTypeDeserializerState>,
15859    }
15860    #[derive(Debug)]
15861    enum AssertionTypeDeserializerState {
15862        Init__,
15863        Annotation(Option<<super::Annotation as WithDeserializer>::Deserializer>),
15864        Done__,
15865        Unknown__,
15866    }
15867    impl AssertionTypeDeserializer {
15868        fn from_bytes_start<R>(reader: &R, bytes_start: &BytesStart<'_>) -> Result<Box<Self>, Error>
15869        where
15870            R: DeserializeReader,
15871        {
15872            let mut id: Option<String> = None;
15873            let mut test: Option<String> = None;
15874            let mut xpath_default_namespace: Option<super::XpathDefaultNamespaceType> = None;
15875            for attrib in filter_xmlns_attributes(bytes_start) {
15876                let attrib = attrib?;
15877                if matches!(
15878                    reader.resolve_local_name(attrib.key, &super::NS_XS),
15879                    Some(b"id")
15880                ) {
15881                    reader.read_attrib(&mut id, b"id", &attrib.value)?;
15882                } else if matches!(
15883                    reader.resolve_local_name(attrib.key, &super::NS_XS),
15884                    Some(b"test")
15885                ) {
15886                    reader.read_attrib(&mut test, b"test", &attrib.value)?;
15887                } else if matches!(
15888                    reader.resolve_local_name(attrib.key, &super::NS_XS),
15889                    Some(b"xpathDefaultNamespace")
15890                ) {
15891                    reader.read_attrib(
15892                        &mut xpath_default_namespace,
15893                        b"xpathDefaultNamespace",
15894                        &attrib.value,
15895                    )?;
15896                }
15897            }
15898            Ok(Box::new(Self {
15899                id: id,
15900                test: test,
15901                xpath_default_namespace: xpath_default_namespace,
15902                annotation: None,
15903                state: Box::new(AssertionTypeDeserializerState::Init__),
15904            }))
15905        }
15906        fn finish_state<R>(
15907            &mut self,
15908            reader: &R,
15909            state: AssertionTypeDeserializerState,
15910        ) -> Result<(), Error>
15911        where
15912            R: DeserializeReader,
15913        {
15914            use AssertionTypeDeserializerState as S;
15915            match state {
15916                S::Annotation(Some(deserializer)) => {
15917                    self.store_annotation(deserializer.finish(reader)?)?
15918                }
15919                _ => (),
15920            }
15921            Ok(())
15922        }
15923        fn store_annotation(&mut self, value: super::Annotation) -> Result<(), Error> {
15924            if self.annotation.is_some() {
15925                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
15926                    b"annotation",
15927                )))?;
15928            }
15929            self.annotation = Some(value);
15930            Ok(())
15931        }
15932        fn handle_annotation<'de, R>(
15933            &mut self,
15934            reader: &R,
15935            output: DeserializerOutput<'de, super::Annotation>,
15936            fallback: &mut Option<AssertionTypeDeserializerState>,
15937        ) -> Result<ElementHandlerOutput<'de>, Error>
15938        where
15939            R: DeserializeReader,
15940        {
15941            let DeserializerOutput {
15942                artifact,
15943                event,
15944                allow_any,
15945            } = output;
15946            if artifact.is_none() {
15947                fallback.get_or_insert(AssertionTypeDeserializerState::Annotation(None));
15948                *self.state = AssertionTypeDeserializerState::Done__;
15949                return Ok(ElementHandlerOutput::from_event(event, allow_any));
15950            }
15951            if let Some(fallback) = fallback.take() {
15952                self.finish_state(reader, fallback)?;
15953            }
15954            Ok(match artifact {
15955                DeserializerArtifact::None => unreachable!(),
15956                DeserializerArtifact::Data(data) => {
15957                    self.store_annotation(data)?;
15958                    *self.state = AssertionTypeDeserializerState::Done__;
15959                    ElementHandlerOutput::from_event(event, allow_any)
15960                }
15961                DeserializerArtifact::Deserializer(deserializer) => {
15962                    let ret = ElementHandlerOutput::from_event(event, allow_any);
15963                    match &ret {
15964                        ElementHandlerOutput::Continue { .. } => {
15965                            fallback.get_or_insert(AssertionTypeDeserializerState::Annotation(
15966                                Some(deserializer),
15967                            ));
15968                            *self.state = AssertionTypeDeserializerState::Done__;
15969                        }
15970                        ElementHandlerOutput::Break { .. } => {
15971                            *self.state =
15972                                AssertionTypeDeserializerState::Annotation(Some(deserializer));
15973                        }
15974                    }
15975                    ret
15976                }
15977            })
15978        }
15979    }
15980    impl<'de> Deserializer<'de, super::AssertionType> for Box<AssertionTypeDeserializer> {
15981        fn init<R>(reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::AssertionType>
15982        where
15983            R: DeserializeReader,
15984        {
15985            reader.init_deserializer_from_start_event(
15986                event,
15987                AssertionTypeDeserializer::from_bytes_start,
15988            )
15989        }
15990        fn next<R>(
15991            mut self,
15992            reader: &R,
15993            event: Event<'de>,
15994        ) -> DeserializerResult<'de, super::AssertionType>
15995        where
15996            R: DeserializeReader,
15997        {
15998            use AssertionTypeDeserializerState as S;
15999            let mut event = event;
16000            let mut fallback = None;
16001            let mut allow_any_element = false;
16002            let (event, allow_any) = loop {
16003                let state = replace(&mut *self.state, S::Unknown__);
16004                event = match (state, event) {
16005                    (S::Annotation(Some(deserializer)), event) => {
16006                        let output = deserializer.next(reader, event)?;
16007                        match self.handle_annotation(reader, output, &mut fallback)? {
16008                            ElementHandlerOutput::Continue { event, allow_any } => {
16009                                allow_any_element = allow_any_element || allow_any;
16010                                event
16011                            }
16012                            ElementHandlerOutput::Break { event, allow_any } => {
16013                                break (event, allow_any)
16014                            }
16015                        }
16016                    }
16017                    (_, Event::End(_)) => {
16018                        if let Some(fallback) = fallback.take() {
16019                            self.finish_state(reader, fallback)?;
16020                        }
16021                        return Ok(DeserializerOutput {
16022                            artifact: DeserializerArtifact::Data(self.finish(reader)?),
16023                            event: DeserializerEvent::None,
16024                            allow_any: false,
16025                        });
16026                    }
16027                    (S::Init__, event) => {
16028                        fallback.get_or_insert(S::Init__);
16029                        *self.state = AssertionTypeDeserializerState::Annotation(None);
16030                        event
16031                    }
16032                    (S::Annotation(None), event @ (Event::Start(_) | Event::Empty(_))) => {
16033                        if reader.check_start_tag_name(&event, Some(&super::NS_XS), b"annotation") {
16034                            let output =
16035                                <super::Annotation as WithDeserializer>::Deserializer::init(
16036                                    reader, event,
16037                                )?;
16038                            match self.handle_annotation(reader, output, &mut fallback)? {
16039                                ElementHandlerOutput::Continue { event, allow_any } => {
16040                                    allow_any_element = allow_any_element || allow_any;
16041                                    event
16042                                }
16043                                ElementHandlerOutput::Break { event, allow_any } => {
16044                                    break (event, allow_any)
16045                                }
16046                            }
16047                        } else {
16048                            *self.state = S::Done__;
16049                            allow_any_element = true;
16050                            fallback.get_or_insert(S::Annotation(None));
16051                            event
16052                        }
16053                    }
16054                    (S::Done__, event) => {
16055                        fallback.get_or_insert(S::Done__);
16056                        break (DeserializerEvent::Continue(event), allow_any_element);
16057                    }
16058                    (S::Unknown__, _) => unreachable!(),
16059                    (state, event) => {
16060                        *self.state = state;
16061                        break (DeserializerEvent::Break(event), false);
16062                    }
16063                }
16064            };
16065            if let Some(fallback) = fallback {
16066                *self.state = fallback;
16067            }
16068            Ok(DeserializerOutput {
16069                artifact: DeserializerArtifact::Deserializer(self),
16070                event,
16071                allow_any,
16072            })
16073        }
16074        fn finish<R>(mut self, reader: &R) -> Result<super::AssertionType, Error>
16075        where
16076            R: DeserializeReader,
16077        {
16078            let state = replace(&mut *self.state, AssertionTypeDeserializerState::Unknown__);
16079            self.finish_state(reader, state)?;
16080            Ok(super::AssertionType {
16081                id: self.id,
16082                test: self.test,
16083                xpath_default_namespace: self.xpath_default_namespace,
16084                annotation: self.annotation,
16085            })
16086        }
16087    }
16088    #[derive(Debug)]
16089    pub struct AnyDeserializer {
16090        id: Option<String>,
16091        namespace: Option<super::NamespaceListType>,
16092        not_namespace: Option<super::BasicNamespaceListType>,
16093        process_contents: super::ProcessContentsType,
16094        not_q_name: Option<super::QnameListType>,
16095        min_occurs: usize,
16096        max_occurs: super::MaxOccurs,
16097        annotation: Option<super::Annotation>,
16098        state: Box<AnyDeserializerState>,
16099    }
16100    #[derive(Debug)]
16101    enum AnyDeserializerState {
16102        Init__,
16103        Annotation(Option<<super::Annotation as WithDeserializer>::Deserializer>),
16104        Done__,
16105        Unknown__,
16106    }
16107    impl AnyDeserializer {
16108        fn from_bytes_start<R>(reader: &R, bytes_start: &BytesStart<'_>) -> Result<Box<Self>, Error>
16109        where
16110            R: DeserializeReader,
16111        {
16112            let mut id: Option<String> = None;
16113            let mut namespace: Option<super::NamespaceListType> = None;
16114            let mut not_namespace: Option<super::BasicNamespaceListType> = None;
16115            let mut process_contents: Option<super::ProcessContentsType> = None;
16116            let mut not_q_name: Option<super::QnameListType> = None;
16117            let mut min_occurs: Option<usize> = None;
16118            let mut max_occurs: Option<super::MaxOccurs> = None;
16119            for attrib in filter_xmlns_attributes(bytes_start) {
16120                let attrib = attrib?;
16121                if matches!(
16122                    reader.resolve_local_name(attrib.key, &super::NS_XS),
16123                    Some(b"id")
16124                ) {
16125                    reader.read_attrib(&mut id, b"id", &attrib.value)?;
16126                } else if matches!(
16127                    reader.resolve_local_name(attrib.key, &super::NS_XS),
16128                    Some(b"namespace")
16129                ) {
16130                    reader.read_attrib(&mut namespace, b"namespace", &attrib.value)?;
16131                } else if matches!(
16132                    reader.resolve_local_name(attrib.key, &super::NS_XS),
16133                    Some(b"notNamespace")
16134                ) {
16135                    reader.read_attrib(&mut not_namespace, b"notNamespace", &attrib.value)?;
16136                } else if matches!(
16137                    reader.resolve_local_name(attrib.key, &super::NS_XS),
16138                    Some(b"processContents")
16139                ) {
16140                    reader.read_attrib(&mut process_contents, b"processContents", &attrib.value)?;
16141                } else if matches!(
16142                    reader.resolve_local_name(attrib.key, &super::NS_XS),
16143                    Some(b"notQName")
16144                ) {
16145                    reader.read_attrib(&mut not_q_name, b"notQName", &attrib.value)?;
16146                } else if matches!(
16147                    reader.resolve_local_name(attrib.key, &super::NS_XS),
16148                    Some(b"minOccurs")
16149                ) {
16150                    reader.read_attrib(&mut min_occurs, b"minOccurs", &attrib.value)?;
16151                } else if matches!(
16152                    reader.resolve_local_name(attrib.key, &super::NS_XS),
16153                    Some(b"maxOccurs")
16154                ) {
16155                    reader.read_attrib(&mut max_occurs, b"maxOccurs", &attrib.value)?;
16156                }
16157            }
16158            Ok(Box::new(Self {
16159                id: id,
16160                namespace: namespace,
16161                not_namespace: not_namespace,
16162                process_contents: process_contents
16163                    .unwrap_or_else(super::Any::default_process_contents),
16164                not_q_name: not_q_name,
16165                min_occurs: min_occurs.unwrap_or_else(super::Any::default_min_occurs),
16166                max_occurs: max_occurs.unwrap_or_else(super::Any::default_max_occurs),
16167                annotation: None,
16168                state: Box::new(AnyDeserializerState::Init__),
16169            }))
16170        }
16171        fn finish_state<R>(&mut self, reader: &R, state: AnyDeserializerState) -> Result<(), Error>
16172        where
16173            R: DeserializeReader,
16174        {
16175            use AnyDeserializerState as S;
16176            match state {
16177                S::Annotation(Some(deserializer)) => {
16178                    self.store_annotation(deserializer.finish(reader)?)?
16179                }
16180                _ => (),
16181            }
16182            Ok(())
16183        }
16184        fn store_annotation(&mut self, value: super::Annotation) -> Result<(), Error> {
16185            if self.annotation.is_some() {
16186                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
16187                    b"annotation",
16188                )))?;
16189            }
16190            self.annotation = Some(value);
16191            Ok(())
16192        }
16193        fn handle_annotation<'de, R>(
16194            &mut self,
16195            reader: &R,
16196            output: DeserializerOutput<'de, super::Annotation>,
16197            fallback: &mut Option<AnyDeserializerState>,
16198        ) -> Result<ElementHandlerOutput<'de>, Error>
16199        where
16200            R: DeserializeReader,
16201        {
16202            let DeserializerOutput {
16203                artifact,
16204                event,
16205                allow_any,
16206            } = output;
16207            if artifact.is_none() {
16208                fallback.get_or_insert(AnyDeserializerState::Annotation(None));
16209                *self.state = AnyDeserializerState::Done__;
16210                return Ok(ElementHandlerOutput::from_event(event, allow_any));
16211            }
16212            if let Some(fallback) = fallback.take() {
16213                self.finish_state(reader, fallback)?;
16214            }
16215            Ok(match artifact {
16216                DeserializerArtifact::None => unreachable!(),
16217                DeserializerArtifact::Data(data) => {
16218                    self.store_annotation(data)?;
16219                    *self.state = AnyDeserializerState::Done__;
16220                    ElementHandlerOutput::from_event(event, allow_any)
16221                }
16222                DeserializerArtifact::Deserializer(deserializer) => {
16223                    let ret = ElementHandlerOutput::from_event(event, allow_any);
16224                    match &ret {
16225                        ElementHandlerOutput::Continue { .. } => {
16226                            fallback.get_or_insert(AnyDeserializerState::Annotation(Some(
16227                                deserializer,
16228                            )));
16229                            *self.state = AnyDeserializerState::Done__;
16230                        }
16231                        ElementHandlerOutput::Break { .. } => {
16232                            *self.state = AnyDeserializerState::Annotation(Some(deserializer));
16233                        }
16234                    }
16235                    ret
16236                }
16237            })
16238        }
16239    }
16240    impl<'de> Deserializer<'de, super::Any> for Box<AnyDeserializer> {
16241        fn init<R>(reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::Any>
16242        where
16243            R: DeserializeReader,
16244        {
16245            reader.init_deserializer_from_start_event(event, AnyDeserializer::from_bytes_start)
16246        }
16247        fn next<R>(mut self, reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::Any>
16248        where
16249            R: DeserializeReader,
16250        {
16251            use AnyDeserializerState as S;
16252            let mut event = event;
16253            let mut fallback = None;
16254            let mut allow_any_element = false;
16255            let (event, allow_any) = loop {
16256                let state = replace(&mut *self.state, S::Unknown__);
16257                event = match (state, event) {
16258                    (S::Annotation(Some(deserializer)), event) => {
16259                        let output = deserializer.next(reader, event)?;
16260                        match self.handle_annotation(reader, output, &mut fallback)? {
16261                            ElementHandlerOutput::Continue { event, allow_any } => {
16262                                allow_any_element = allow_any_element || allow_any;
16263                                event
16264                            }
16265                            ElementHandlerOutput::Break { event, allow_any } => {
16266                                break (event, allow_any)
16267                            }
16268                        }
16269                    }
16270                    (_, Event::End(_)) => {
16271                        if let Some(fallback) = fallback.take() {
16272                            self.finish_state(reader, fallback)?;
16273                        }
16274                        return Ok(DeserializerOutput {
16275                            artifact: DeserializerArtifact::Data(self.finish(reader)?),
16276                            event: DeserializerEvent::None,
16277                            allow_any: false,
16278                        });
16279                    }
16280                    (S::Init__, event) => {
16281                        fallback.get_or_insert(S::Init__);
16282                        *self.state = AnyDeserializerState::Annotation(None);
16283                        event
16284                    }
16285                    (S::Annotation(None), event @ (Event::Start(_) | Event::Empty(_))) => {
16286                        if reader.check_start_tag_name(&event, Some(&super::NS_XS), b"annotation") {
16287                            let output =
16288                                <super::Annotation as WithDeserializer>::Deserializer::init(
16289                                    reader, event,
16290                                )?;
16291                            match self.handle_annotation(reader, output, &mut fallback)? {
16292                                ElementHandlerOutput::Continue { event, allow_any } => {
16293                                    allow_any_element = allow_any_element || allow_any;
16294                                    event
16295                                }
16296                                ElementHandlerOutput::Break { event, allow_any } => {
16297                                    break (event, allow_any)
16298                                }
16299                            }
16300                        } else {
16301                            *self.state = S::Done__;
16302                            allow_any_element = true;
16303                            fallback.get_or_insert(S::Annotation(None));
16304                            event
16305                        }
16306                    }
16307                    (S::Done__, event) => {
16308                        fallback.get_or_insert(S::Done__);
16309                        break (DeserializerEvent::Continue(event), allow_any_element);
16310                    }
16311                    (S::Unknown__, _) => unreachable!(),
16312                    (state, event) => {
16313                        *self.state = state;
16314                        break (DeserializerEvent::Break(event), false);
16315                    }
16316                }
16317            };
16318            if let Some(fallback) = fallback {
16319                *self.state = fallback;
16320            }
16321            Ok(DeserializerOutput {
16322                artifact: DeserializerArtifact::Deserializer(self),
16323                event,
16324                allow_any,
16325            })
16326        }
16327        fn finish<R>(mut self, reader: &R) -> Result<super::Any, Error>
16328        where
16329            R: DeserializeReader,
16330        {
16331            let state = replace(&mut *self.state, AnyDeserializerState::Unknown__);
16332            self.finish_state(reader, state)?;
16333            Ok(super::Any {
16334                id: self.id,
16335                namespace: self.namespace,
16336                not_namespace: self.not_namespace,
16337                process_contents: self.process_contents,
16338                not_q_name: self.not_q_name,
16339                min_occurs: self.min_occurs,
16340                max_occurs: self.max_occurs,
16341                annotation: self.annotation,
16342            })
16343        }
16344    }
16345    #[derive(Debug)]
16346    pub struct AltTypeDeserializer {
16347        id: Option<String>,
16348        test: Option<String>,
16349        type_: Option<super::QName>,
16350        xpath_default_namespace: Option<super::XpathDefaultNamespaceType>,
16351        content: Vec<super::AltTypeContent>,
16352        state: Box<AltTypeDeserializerState>,
16353    }
16354    #[derive(Debug)]
16355    enum AltTypeDeserializerState {
16356        Init__,
16357        Next__,
16358        Content__(<super::AltTypeContent as WithDeserializer>::Deserializer),
16359        Unknown__,
16360    }
16361    impl AltTypeDeserializer {
16362        fn from_bytes_start<R>(reader: &R, bytes_start: &BytesStart<'_>) -> Result<Box<Self>, Error>
16363        where
16364            R: DeserializeReader,
16365        {
16366            let mut id: Option<String> = None;
16367            let mut test: Option<String> = None;
16368            let mut type_: Option<super::QName> = None;
16369            let mut xpath_default_namespace: Option<super::XpathDefaultNamespaceType> = None;
16370            for attrib in filter_xmlns_attributes(bytes_start) {
16371                let attrib = attrib?;
16372                if matches!(
16373                    reader.resolve_local_name(attrib.key, &super::NS_XS),
16374                    Some(b"id")
16375                ) {
16376                    reader.read_attrib(&mut id, b"id", &attrib.value)?;
16377                } else if matches!(
16378                    reader.resolve_local_name(attrib.key, &super::NS_XS),
16379                    Some(b"test")
16380                ) {
16381                    reader.read_attrib(&mut test, b"test", &attrib.value)?;
16382                } else if matches!(
16383                    reader.resolve_local_name(attrib.key, &super::NS_XS),
16384                    Some(b"type")
16385                ) {
16386                    reader.read_attrib(&mut type_, b"type", &attrib.value)?;
16387                } else if matches!(
16388                    reader.resolve_local_name(attrib.key, &super::NS_XS),
16389                    Some(b"xpathDefaultNamespace")
16390                ) {
16391                    reader.read_attrib(
16392                        &mut xpath_default_namespace,
16393                        b"xpathDefaultNamespace",
16394                        &attrib.value,
16395                    )?;
16396                }
16397            }
16398            Ok(Box::new(Self {
16399                id: id,
16400                test: test,
16401                type_: type_,
16402                xpath_default_namespace: xpath_default_namespace,
16403                content: Vec::new(),
16404                state: Box::new(AltTypeDeserializerState::Init__),
16405            }))
16406        }
16407        fn finish_state<R>(
16408            &mut self,
16409            reader: &R,
16410            state: AltTypeDeserializerState,
16411        ) -> Result<(), Error>
16412        where
16413            R: DeserializeReader,
16414        {
16415            if let AltTypeDeserializerState::Content__(deserializer) = state {
16416                self.store_content(deserializer.finish(reader)?)?;
16417            }
16418            Ok(())
16419        }
16420        fn store_content(&mut self, value: super::AltTypeContent) -> Result<(), Error> {
16421            self.content.push(value);
16422            Ok(())
16423        }
16424        fn handle_content<'de, R>(
16425            &mut self,
16426            reader: &R,
16427            output: DeserializerOutput<'de, super::AltTypeContent>,
16428            fallback: &mut Option<AltTypeDeserializerState>,
16429        ) -> Result<ElementHandlerOutput<'de>, Error>
16430        where
16431            R: DeserializeReader,
16432        {
16433            let DeserializerOutput {
16434                artifact,
16435                event,
16436                allow_any,
16437            } = output;
16438            if artifact.is_none() {
16439                *self.state = fallback.take().unwrap_or(AltTypeDeserializerState::Next__);
16440                return Ok(ElementHandlerOutput::break_(event, allow_any));
16441            }
16442            if let Some(fallback) = fallback.take() {
16443                self.finish_state(reader, fallback)?;
16444            }
16445            Ok(match artifact {
16446                DeserializerArtifact::None => unreachable!(),
16447                DeserializerArtifact::Data(data) => {
16448                    self.store_content(data)?;
16449                    *self.state = AltTypeDeserializerState::Next__;
16450                    ElementHandlerOutput::from_event(event, allow_any)
16451                }
16452                DeserializerArtifact::Deserializer(deserializer) => {
16453                    let can_have_more = self.content.len().saturating_add(1) < 3usize;
16454                    let ret = if can_have_more {
16455                        ElementHandlerOutput::from_event(event, allow_any)
16456                    } else {
16457                        ElementHandlerOutput::from_event_end(event, allow_any)
16458                    };
16459                    match (can_have_more, &ret) {
16460                        (true, ElementHandlerOutput::Continue { .. }) => {
16461                            fallback
16462                                .get_or_insert(AltTypeDeserializerState::Content__(deserializer));
16463                            *self.state = AltTypeDeserializerState::Next__;
16464                        }
16465                        (false, _) | (_, ElementHandlerOutput::Break { .. }) => {
16466                            *self.state = AltTypeDeserializerState::Content__(deserializer);
16467                        }
16468                    }
16469                    ret
16470                }
16471            })
16472        }
16473    }
16474    impl<'de> Deserializer<'de, super::AltType> for Box<AltTypeDeserializer> {
16475        fn init<R>(reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::AltType>
16476        where
16477            R: DeserializeReader,
16478        {
16479            reader.init_deserializer_from_start_event(event, AltTypeDeserializer::from_bytes_start)
16480        }
16481        fn next<R>(
16482            mut self,
16483            reader: &R,
16484            event: Event<'de>,
16485        ) -> DeserializerResult<'de, super::AltType>
16486        where
16487            R: DeserializeReader,
16488        {
16489            use AltTypeDeserializerState as S;
16490            let mut event = event;
16491            let mut fallback = None;
16492            let (event, allow_any) = loop {
16493                let state = replace(&mut *self.state, S::Unknown__);
16494                event = match (state, event) {
16495                    (S::Content__(deserializer), event) => {
16496                        let output = deserializer.next(reader, event)?;
16497                        match self.handle_content(reader, output, &mut fallback)? {
16498                            ElementHandlerOutput::Break { event, allow_any } => {
16499                                break (event, allow_any)
16500                            }
16501                            ElementHandlerOutput::Continue { event, .. } => event,
16502                        }
16503                    }
16504                    (_, Event::End(_)) => {
16505                        return Ok(DeserializerOutput {
16506                            artifact: DeserializerArtifact::Data(self.finish(reader)?),
16507                            event: DeserializerEvent::None,
16508                            allow_any: false,
16509                        });
16510                    }
16511                    (state @ (S::Init__ | S::Next__), event) => {
16512                        fallback.get_or_insert(state);
16513                        let output =
16514                            <super::AltTypeContent as WithDeserializer>::Deserializer::init(
16515                                reader, event,
16516                            )?;
16517                        match self.handle_content(reader, output, &mut fallback)? {
16518                            ElementHandlerOutput::Break { event, allow_any } => {
16519                                break (event, allow_any)
16520                            }
16521                            ElementHandlerOutput::Continue { event, .. } => event,
16522                        }
16523                    }
16524                    (S::Unknown__, _) => unreachable!(),
16525                }
16526            };
16527            let artifact = DeserializerArtifact::Deserializer(self);
16528            Ok(DeserializerOutput {
16529                artifact,
16530                event,
16531                allow_any,
16532            })
16533        }
16534        fn finish<R>(mut self, reader: &R) -> Result<super::AltType, Error>
16535        where
16536            R: DeserializeReader,
16537        {
16538            let state = replace(&mut *self.state, AltTypeDeserializerState::Unknown__);
16539            self.finish_state(reader, state)?;
16540            Ok(super::AltType {
16541                id: self.id,
16542                test: self.test,
16543                type_: self.type_,
16544                xpath_default_namespace: self.xpath_default_namespace,
16545                content: self.content,
16546            })
16547        }
16548    }
16549    #[derive(Debug)]
16550    pub struct AltTypeContentDeserializer {
16551        state: Box<AltTypeContentDeserializerState>,
16552    }
16553    #[derive(Debug)]
16554    pub enum AltTypeContentDeserializerState {
16555        Init__,
16556        Annotation(
16557            Option<super::Annotation>,
16558            Option<<super::Annotation as WithDeserializer>::Deserializer>,
16559        ),
16560        SimpleType(
16561            Option<super::SimpleBaseType>,
16562            Option<<super::SimpleBaseType as WithDeserializer>::Deserializer>,
16563        ),
16564        ComplexType(
16565            Option<super::ComplexBaseType>,
16566            Option<<super::ComplexBaseType as WithDeserializer>::Deserializer>,
16567        ),
16568        Done__(super::AltTypeContent),
16569        Unknown__,
16570    }
16571    impl AltTypeContentDeserializer {
16572        fn find_suitable<'de, R>(
16573            &mut self,
16574            reader: &R,
16575            event: Event<'de>,
16576            fallback: &mut Option<AltTypeContentDeserializerState>,
16577        ) -> Result<ElementHandlerOutput<'de>, Error>
16578        where
16579            R: DeserializeReader,
16580        {
16581            let (Event::Start(x) | Event::Empty(x)) = &event else {
16582                *self.state = fallback
16583                    .take()
16584                    .unwrap_or(AltTypeContentDeserializerState::Init__);
16585                return Ok(ElementHandlerOutput::return_to_parent(event, false));
16586            };
16587            if matches!(
16588                reader.resolve_local_name(x.name(), &super::NS_XS),
16589                Some(b"annotation")
16590            ) {
16591                let output =
16592                    <super::Annotation as WithDeserializer>::Deserializer::init(reader, event)?;
16593                return self.handle_annotation(reader, Default::default(), output, &mut *fallback);
16594            }
16595            if matches!(
16596                reader.resolve_local_name(x.name(), &super::NS_XS),
16597                Some(b"simpleType")
16598            ) {
16599                let output =
16600                    <super::SimpleBaseType as WithDeserializer>::Deserializer::init(reader, event)?;
16601                return self.handle_simple_type(reader, Default::default(), output, &mut *fallback);
16602            }
16603            if matches!(
16604                reader.resolve_local_name(x.name(), &super::NS_XS),
16605                Some(b"complexType")
16606            ) {
16607                let output = <super::ComplexBaseType as WithDeserializer>::Deserializer::init(
16608                    reader, event,
16609                )?;
16610                return self.handle_complex_type(
16611                    reader,
16612                    Default::default(),
16613                    output,
16614                    &mut *fallback,
16615                );
16616            }
16617            *self.state = fallback
16618                .take()
16619                .unwrap_or(AltTypeContentDeserializerState::Init__);
16620            Ok(ElementHandlerOutput::return_to_parent(event, false))
16621        }
16622        fn finish_state<R>(
16623            reader: &R,
16624            state: AltTypeContentDeserializerState,
16625        ) -> Result<super::AltTypeContent, Error>
16626        where
16627            R: DeserializeReader,
16628        {
16629            use AltTypeContentDeserializerState as S;
16630            match state {
16631                S::Init__ => Err(ErrorKind::MissingContent.into()),
16632                S::Annotation(mut values, deserializer) => {
16633                    if let Some(deserializer) = deserializer {
16634                        let value = deserializer.finish(reader)?;
16635                        AltTypeContentDeserializer::store_annotation(&mut values, value)?;
16636                    }
16637                    Ok(super::AltTypeContent::Annotation(values.ok_or_else(
16638                        || ErrorKind::MissingElement("annotation".into()),
16639                    )?))
16640                }
16641                S::SimpleType(mut values, deserializer) => {
16642                    if let Some(deserializer) = deserializer {
16643                        let value = deserializer.finish(reader)?;
16644                        AltTypeContentDeserializer::store_simple_type(&mut values, value)?;
16645                    }
16646                    Ok(super::AltTypeContent::SimpleType(values.ok_or_else(
16647                        || ErrorKind::MissingElement("simpleType".into()),
16648                    )?))
16649                }
16650                S::ComplexType(mut values, deserializer) => {
16651                    if let Some(deserializer) = deserializer {
16652                        let value = deserializer.finish(reader)?;
16653                        AltTypeContentDeserializer::store_complex_type(&mut values, value)?;
16654                    }
16655                    Ok(super::AltTypeContent::ComplexType(values.ok_or_else(
16656                        || ErrorKind::MissingElement("complexType".into()),
16657                    )?))
16658                }
16659                S::Done__(data) => Ok(data),
16660                S::Unknown__ => unreachable!(),
16661            }
16662        }
16663        fn store_annotation(
16664            values: &mut Option<super::Annotation>,
16665            value: super::Annotation,
16666        ) -> Result<(), Error> {
16667            if values.is_some() {
16668                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
16669                    b"annotation",
16670                )))?;
16671            }
16672            *values = Some(value);
16673            Ok(())
16674        }
16675        fn store_simple_type(
16676            values: &mut Option<super::SimpleBaseType>,
16677            value: super::SimpleBaseType,
16678        ) -> Result<(), Error> {
16679            if values.is_some() {
16680                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
16681                    b"simpleType",
16682                )))?;
16683            }
16684            *values = Some(value);
16685            Ok(())
16686        }
16687        fn store_complex_type(
16688            values: &mut Option<super::ComplexBaseType>,
16689            value: super::ComplexBaseType,
16690        ) -> Result<(), Error> {
16691            if values.is_some() {
16692                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
16693                    b"complexType",
16694                )))?;
16695            }
16696            *values = Some(value);
16697            Ok(())
16698        }
16699        fn handle_annotation<'de, R>(
16700            &mut self,
16701            reader: &R,
16702            mut values: Option<super::Annotation>,
16703            output: DeserializerOutput<'de, super::Annotation>,
16704            fallback: &mut Option<AltTypeContentDeserializerState>,
16705        ) -> Result<ElementHandlerOutput<'de>, Error>
16706        where
16707            R: DeserializeReader,
16708        {
16709            let DeserializerOutput {
16710                artifact,
16711                event,
16712                allow_any,
16713            } = output;
16714            if artifact.is_none() {
16715                *self.state = match fallback.take() {
16716                    None => AltTypeContentDeserializerState::Init__,
16717                    Some(AltTypeContentDeserializerState::Annotation(_, Some(deserializer))) => {
16718                        AltTypeContentDeserializerState::Annotation(values, Some(deserializer))
16719                    }
16720                    _ => unreachable!(),
16721                };
16722                return Ok(ElementHandlerOutput::break_(event, allow_any));
16723            }
16724            match fallback.take() {
16725                None => (),
16726                Some(AltTypeContentDeserializerState::Annotation(_, Some(deserializer))) => {
16727                    let data = deserializer.finish(reader)?;
16728                    AltTypeContentDeserializer::store_annotation(&mut values, data)?;
16729                }
16730                Some(_) => unreachable!(),
16731            }
16732            Ok(match artifact {
16733                DeserializerArtifact::None => unreachable!(),
16734                DeserializerArtifact::Data(data) => {
16735                    AltTypeContentDeserializer::store_annotation(&mut values, data)?;
16736                    let data = AltTypeContentDeserializer::finish_state(
16737                        reader,
16738                        AltTypeContentDeserializerState::Annotation(values, None),
16739                    )?;
16740                    *self.state = AltTypeContentDeserializerState::Done__(data);
16741                    ElementHandlerOutput::Break { event, allow_any }
16742                }
16743                DeserializerArtifact::Deserializer(deserializer) => {
16744                    *self.state =
16745                        AltTypeContentDeserializerState::Annotation(values, Some(deserializer));
16746                    ElementHandlerOutput::from_event_end(event, allow_any)
16747                }
16748            })
16749        }
16750        fn handle_simple_type<'de, R>(
16751            &mut self,
16752            reader: &R,
16753            mut values: Option<super::SimpleBaseType>,
16754            output: DeserializerOutput<'de, super::SimpleBaseType>,
16755            fallback: &mut Option<AltTypeContentDeserializerState>,
16756        ) -> Result<ElementHandlerOutput<'de>, Error>
16757        where
16758            R: DeserializeReader,
16759        {
16760            let DeserializerOutput {
16761                artifact,
16762                event,
16763                allow_any,
16764            } = output;
16765            if artifact.is_none() {
16766                *self.state = match fallback.take() {
16767                    None => AltTypeContentDeserializerState::Init__,
16768                    Some(AltTypeContentDeserializerState::SimpleType(_, Some(deserializer))) => {
16769                        AltTypeContentDeserializerState::SimpleType(values, Some(deserializer))
16770                    }
16771                    _ => unreachable!(),
16772                };
16773                return Ok(ElementHandlerOutput::break_(event, allow_any));
16774            }
16775            match fallback.take() {
16776                None => (),
16777                Some(AltTypeContentDeserializerState::SimpleType(_, Some(deserializer))) => {
16778                    let data = deserializer.finish(reader)?;
16779                    AltTypeContentDeserializer::store_simple_type(&mut values, data)?;
16780                }
16781                Some(_) => unreachable!(),
16782            }
16783            Ok(match artifact {
16784                DeserializerArtifact::None => unreachable!(),
16785                DeserializerArtifact::Data(data) => {
16786                    AltTypeContentDeserializer::store_simple_type(&mut values, data)?;
16787                    let data = AltTypeContentDeserializer::finish_state(
16788                        reader,
16789                        AltTypeContentDeserializerState::SimpleType(values, None),
16790                    )?;
16791                    *self.state = AltTypeContentDeserializerState::Done__(data);
16792                    ElementHandlerOutput::Break { event, allow_any }
16793                }
16794                DeserializerArtifact::Deserializer(deserializer) => {
16795                    *self.state =
16796                        AltTypeContentDeserializerState::SimpleType(values, Some(deserializer));
16797                    ElementHandlerOutput::from_event_end(event, allow_any)
16798                }
16799            })
16800        }
16801        fn handle_complex_type<'de, R>(
16802            &mut self,
16803            reader: &R,
16804            mut values: Option<super::ComplexBaseType>,
16805            output: DeserializerOutput<'de, super::ComplexBaseType>,
16806            fallback: &mut Option<AltTypeContentDeserializerState>,
16807        ) -> Result<ElementHandlerOutput<'de>, Error>
16808        where
16809            R: DeserializeReader,
16810        {
16811            let DeserializerOutput {
16812                artifact,
16813                event,
16814                allow_any,
16815            } = output;
16816            if artifact.is_none() {
16817                *self.state = match fallback.take() {
16818                    None => AltTypeContentDeserializerState::Init__,
16819                    Some(AltTypeContentDeserializerState::ComplexType(_, Some(deserializer))) => {
16820                        AltTypeContentDeserializerState::ComplexType(values, Some(deserializer))
16821                    }
16822                    _ => unreachable!(),
16823                };
16824                return Ok(ElementHandlerOutput::break_(event, allow_any));
16825            }
16826            match fallback.take() {
16827                None => (),
16828                Some(AltTypeContentDeserializerState::ComplexType(_, Some(deserializer))) => {
16829                    let data = deserializer.finish(reader)?;
16830                    AltTypeContentDeserializer::store_complex_type(&mut values, data)?;
16831                }
16832                Some(_) => unreachable!(),
16833            }
16834            Ok(match artifact {
16835                DeserializerArtifact::None => unreachable!(),
16836                DeserializerArtifact::Data(data) => {
16837                    AltTypeContentDeserializer::store_complex_type(&mut values, data)?;
16838                    let data = AltTypeContentDeserializer::finish_state(
16839                        reader,
16840                        AltTypeContentDeserializerState::ComplexType(values, None),
16841                    )?;
16842                    *self.state = AltTypeContentDeserializerState::Done__(data);
16843                    ElementHandlerOutput::Break { event, allow_any }
16844                }
16845                DeserializerArtifact::Deserializer(deserializer) => {
16846                    *self.state =
16847                        AltTypeContentDeserializerState::ComplexType(values, Some(deserializer));
16848                    ElementHandlerOutput::from_event_end(event, allow_any)
16849                }
16850            })
16851        }
16852    }
16853    impl<'de> Deserializer<'de, super::AltTypeContent> for Box<AltTypeContentDeserializer> {
16854        fn init<R>(reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::AltTypeContent>
16855        where
16856            R: DeserializeReader,
16857        {
16858            let deserializer = Box::new(AltTypeContentDeserializer {
16859                state: Box::new(AltTypeContentDeserializerState::Init__),
16860            });
16861            let mut output = deserializer.next(reader, event)?;
16862            output.artifact = match output.artifact {
16863                DeserializerArtifact::Deserializer(x)
16864                    if matches!(&*x.state, AltTypeContentDeserializerState::Init__) =>
16865                {
16866                    DeserializerArtifact::None
16867                }
16868                artifact => artifact,
16869            };
16870            Ok(output)
16871        }
16872        fn next<R>(
16873            mut self,
16874            reader: &R,
16875            event: Event<'de>,
16876        ) -> DeserializerResult<'de, super::AltTypeContent>
16877        where
16878            R: DeserializeReader,
16879        {
16880            use AltTypeContentDeserializerState as S;
16881            let mut event = event;
16882            let mut fallback = None;
16883            let (event, allow_any) = loop {
16884                let state = replace(&mut *self.state, S::Unknown__);
16885                event = match (state, event) {
16886                    (S::Annotation(values, Some(deserializer)), event) => {
16887                        let output = deserializer.next(reader, event)?;
16888                        match self.handle_annotation(reader, values, output, &mut fallback)? {
16889                            ElementHandlerOutput::Break { event, allow_any } => {
16890                                break (event, allow_any)
16891                            }
16892                            ElementHandlerOutput::Continue { event, .. } => event,
16893                        }
16894                    }
16895                    (S::SimpleType(values, Some(deserializer)), event) => {
16896                        let output = deserializer.next(reader, event)?;
16897                        match self.handle_simple_type(reader, values, output, &mut fallback)? {
16898                            ElementHandlerOutput::Break { event, allow_any } => {
16899                                break (event, allow_any)
16900                            }
16901                            ElementHandlerOutput::Continue { event, .. } => event,
16902                        }
16903                    }
16904                    (S::ComplexType(values, Some(deserializer)), event) => {
16905                        let output = deserializer.next(reader, event)?;
16906                        match self.handle_complex_type(reader, values, output, &mut fallback)? {
16907                            ElementHandlerOutput::Break { event, allow_any } => {
16908                                break (event, allow_any)
16909                            }
16910                            ElementHandlerOutput::Continue { event, .. } => event,
16911                        }
16912                    }
16913                    (state, event @ Event::End(_)) => {
16914                        return Ok(DeserializerOutput {
16915                            artifact: DeserializerArtifact::Data(
16916                                AltTypeContentDeserializer::finish_state(reader, state)?,
16917                            ),
16918                            event: DeserializerEvent::Continue(event),
16919                            allow_any: false,
16920                        });
16921                    }
16922                    (S::Init__, event) => match self.find_suitable(reader, event, &mut fallback)? {
16923                        ElementHandlerOutput::Break { event, allow_any } => {
16924                            break (event, allow_any)
16925                        }
16926                        ElementHandlerOutput::Continue { event, .. } => event,
16927                    },
16928                    (S::Annotation(values, None), event) => {
16929                        let output = <super::Annotation as WithDeserializer>::Deserializer::init(
16930                            reader, event,
16931                        )?;
16932                        match self.handle_annotation(reader, values, output, &mut fallback)? {
16933                            ElementHandlerOutput::Break { event, allow_any } => {
16934                                break (event, allow_any)
16935                            }
16936                            ElementHandlerOutput::Continue { event, .. } => event,
16937                        }
16938                    }
16939                    (S::SimpleType(values, None), event) => {
16940                        let output =
16941                            <super::SimpleBaseType as WithDeserializer>::Deserializer::init(
16942                                reader, event,
16943                            )?;
16944                        match self.handle_simple_type(reader, values, output, &mut fallback)? {
16945                            ElementHandlerOutput::Break { event, allow_any } => {
16946                                break (event, allow_any)
16947                            }
16948                            ElementHandlerOutput::Continue { event, .. } => event,
16949                        }
16950                    }
16951                    (S::ComplexType(values, None), event) => {
16952                        let output =
16953                            <super::ComplexBaseType as WithDeserializer>::Deserializer::init(
16954                                reader, event,
16955                            )?;
16956                        match self.handle_complex_type(reader, values, output, &mut fallback)? {
16957                            ElementHandlerOutput::Break { event, allow_any } => {
16958                                break (event, allow_any)
16959                            }
16960                            ElementHandlerOutput::Continue { event, .. } => event,
16961                        }
16962                    }
16963                    (s @ S::Done__(_), event) => {
16964                        *self.state = s;
16965                        break (DeserializerEvent::Continue(event), false);
16966                    }
16967                    (S::Unknown__, _) => unreachable!(),
16968                }
16969            };
16970            let artifact = if matches!(&*self.state, S::Done__(_)) {
16971                DeserializerArtifact::Data(self.finish(reader)?)
16972            } else {
16973                DeserializerArtifact::Deserializer(self)
16974            };
16975            Ok(DeserializerOutput {
16976                artifact,
16977                event,
16978                allow_any,
16979            })
16980        }
16981        fn finish<R>(self, reader: &R) -> Result<super::AltTypeContent, Error>
16982        where
16983            R: DeserializeReader,
16984        {
16985            AltTypeContentDeserializer::finish_state(reader, *self.state)
16986        }
16987    }
16988    #[derive(Debug)]
16989    pub struct KeybaseTypeDeserializer {
16990        id: Option<String>,
16991        name: Option<String>,
16992        ref_: Option<super::QName>,
16993        content: Option<super::KeybaseTypeContent>,
16994        state: Box<KeybaseTypeDeserializerState>,
16995    }
16996    #[derive(Debug)]
16997    enum KeybaseTypeDeserializerState {
16998        Init__,
16999        Next__,
17000        Content__(<super::KeybaseTypeContent as WithDeserializer>::Deserializer),
17001        Unknown__,
17002    }
17003    impl KeybaseTypeDeserializer {
17004        fn from_bytes_start<R>(reader: &R, bytes_start: &BytesStart<'_>) -> Result<Box<Self>, Error>
17005        where
17006            R: DeserializeReader,
17007        {
17008            let mut id: Option<String> = None;
17009            let mut name: Option<String> = None;
17010            let mut ref_: Option<super::QName> = None;
17011            for attrib in filter_xmlns_attributes(bytes_start) {
17012                let attrib = attrib?;
17013                if matches!(
17014                    reader.resolve_local_name(attrib.key, &super::NS_XS),
17015                    Some(b"id")
17016                ) {
17017                    reader.read_attrib(&mut id, b"id", &attrib.value)?;
17018                } else if matches!(
17019                    reader.resolve_local_name(attrib.key, &super::NS_XS),
17020                    Some(b"name")
17021                ) {
17022                    reader.read_attrib(&mut name, b"name", &attrib.value)?;
17023                } else if matches!(
17024                    reader.resolve_local_name(attrib.key, &super::NS_XS),
17025                    Some(b"ref")
17026                ) {
17027                    reader.read_attrib(&mut ref_, b"ref", &attrib.value)?;
17028                }
17029            }
17030            Ok(Box::new(Self {
17031                id: id,
17032                name: name,
17033                ref_: ref_,
17034                content: None,
17035                state: Box::new(KeybaseTypeDeserializerState::Init__),
17036            }))
17037        }
17038        fn finish_state<R>(
17039            &mut self,
17040            reader: &R,
17041            state: KeybaseTypeDeserializerState,
17042        ) -> Result<(), Error>
17043        where
17044            R: DeserializeReader,
17045        {
17046            if let KeybaseTypeDeserializerState::Content__(deserializer) = state {
17047                self.store_content(deserializer.finish(reader)?)?;
17048            }
17049            Ok(())
17050        }
17051        fn store_content(&mut self, value: super::KeybaseTypeContent) -> Result<(), Error> {
17052            if self.content.is_some() {
17053                Err(ErrorKind::DuplicateContent)?;
17054            }
17055            self.content = Some(value);
17056            Ok(())
17057        }
17058        fn handle_content<'de, R>(
17059            &mut self,
17060            reader: &R,
17061            output: DeserializerOutput<'de, super::KeybaseTypeContent>,
17062            fallback: &mut Option<KeybaseTypeDeserializerState>,
17063        ) -> Result<ElementHandlerOutput<'de>, Error>
17064        where
17065            R: DeserializeReader,
17066        {
17067            let DeserializerOutput {
17068                artifact,
17069                event,
17070                allow_any,
17071            } = output;
17072            if artifact.is_none() {
17073                *self.state = fallback
17074                    .take()
17075                    .unwrap_or(KeybaseTypeDeserializerState::Next__);
17076                return Ok(ElementHandlerOutput::break_(event, allow_any));
17077            }
17078            if let Some(fallback) = fallback.take() {
17079                self.finish_state(reader, fallback)?;
17080            }
17081            Ok(match artifact {
17082                DeserializerArtifact::None => unreachable!(),
17083                DeserializerArtifact::Data(data) => {
17084                    self.store_content(data)?;
17085                    *self.state = KeybaseTypeDeserializerState::Next__;
17086                    ElementHandlerOutput::from_event(event, allow_any)
17087                }
17088                DeserializerArtifact::Deserializer(deserializer) => {
17089                    *self.state = KeybaseTypeDeserializerState::Content__(deserializer);
17090                    ElementHandlerOutput::from_event_end(event, allow_any)
17091                }
17092            })
17093        }
17094    }
17095    impl<'de> Deserializer<'de, super::KeybaseType> for Box<KeybaseTypeDeserializer> {
17096        fn init<R>(reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::KeybaseType>
17097        where
17098            R: DeserializeReader,
17099        {
17100            reader.init_deserializer_from_start_event(
17101                event,
17102                KeybaseTypeDeserializer::from_bytes_start,
17103            )
17104        }
17105        fn next<R>(
17106            mut self,
17107            reader: &R,
17108            event: Event<'de>,
17109        ) -> DeserializerResult<'de, super::KeybaseType>
17110        where
17111            R: DeserializeReader,
17112        {
17113            use KeybaseTypeDeserializerState as S;
17114            let mut event = event;
17115            let mut fallback = None;
17116            let (event, allow_any) = loop {
17117                let state = replace(&mut *self.state, S::Unknown__);
17118                event = match (state, event) {
17119                    (S::Content__(deserializer), event) => {
17120                        let output = deserializer.next(reader, event)?;
17121                        match self.handle_content(reader, output, &mut fallback)? {
17122                            ElementHandlerOutput::Break { event, allow_any } => {
17123                                break (event, allow_any)
17124                            }
17125                            ElementHandlerOutput::Continue { event, .. } => event,
17126                        }
17127                    }
17128                    (_, Event::End(_)) => {
17129                        return Ok(DeserializerOutput {
17130                            artifact: DeserializerArtifact::Data(self.finish(reader)?),
17131                            event: DeserializerEvent::None,
17132                            allow_any: false,
17133                        });
17134                    }
17135                    (state @ (S::Init__ | S::Next__), event) => {
17136                        fallback.get_or_insert(state);
17137                        let output =
17138                            <super::KeybaseTypeContent as WithDeserializer>::Deserializer::init(
17139                                reader, event,
17140                            )?;
17141                        match self.handle_content(reader, output, &mut fallback)? {
17142                            ElementHandlerOutput::Break { event, allow_any } => {
17143                                break (event, allow_any)
17144                            }
17145                            ElementHandlerOutput::Continue { event, .. } => event,
17146                        }
17147                    }
17148                    (S::Unknown__, _) => unreachable!(),
17149                }
17150            };
17151            let artifact = DeserializerArtifact::Deserializer(self);
17152            Ok(DeserializerOutput {
17153                artifact,
17154                event,
17155                allow_any,
17156            })
17157        }
17158        fn finish<R>(mut self, reader: &R) -> Result<super::KeybaseType, Error>
17159        where
17160            R: DeserializeReader,
17161        {
17162            let state = replace(&mut *self.state, KeybaseTypeDeserializerState::Unknown__);
17163            self.finish_state(reader, state)?;
17164            Ok(super::KeybaseType {
17165                id: self.id,
17166                name: self.name,
17167                ref_: self.ref_,
17168                content: self.content,
17169            })
17170        }
17171    }
17172    #[derive(Debug)]
17173    pub struct KeybaseTypeContentDeserializer {
17174        annotation: Option<super::Annotation>,
17175        selector: Option<super::Field>,
17176        field: Vec<super::Field>,
17177        state: Box<KeybaseTypeContentDeserializerState>,
17178    }
17179    #[derive(Debug)]
17180    enum KeybaseTypeContentDeserializerState {
17181        Init__,
17182        Annotation(Option<<super::Annotation as WithDeserializer>::Deserializer>),
17183        Selector(Option<<super::Field as WithDeserializer>::Deserializer>),
17184        Field(Option<<super::Field as WithDeserializer>::Deserializer>),
17185        Done__,
17186        Unknown__,
17187    }
17188    impl KeybaseTypeContentDeserializer {
17189        fn finish_state<R>(
17190            &mut self,
17191            reader: &R,
17192            state: KeybaseTypeContentDeserializerState,
17193        ) -> Result<(), Error>
17194        where
17195            R: DeserializeReader,
17196        {
17197            use KeybaseTypeContentDeserializerState as S;
17198            match state {
17199                S::Annotation(Some(deserializer)) => {
17200                    self.store_annotation(deserializer.finish(reader)?)?
17201                }
17202                S::Selector(Some(deserializer)) => {
17203                    self.store_selector(deserializer.finish(reader)?)?
17204                }
17205                S::Field(Some(deserializer)) => self.store_field(deserializer.finish(reader)?)?,
17206                _ => (),
17207            }
17208            Ok(())
17209        }
17210        fn store_annotation(&mut self, value: super::Annotation) -> Result<(), Error> {
17211            if self.annotation.is_some() {
17212                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
17213                    b"annotation",
17214                )))?;
17215            }
17216            self.annotation = Some(value);
17217            Ok(())
17218        }
17219        fn store_selector(&mut self, value: super::Field) -> Result<(), Error> {
17220            if self.selector.is_some() {
17221                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
17222                    b"selector",
17223                )))?;
17224            }
17225            self.selector = Some(value);
17226            Ok(())
17227        }
17228        fn store_field(&mut self, value: super::Field) -> Result<(), Error> {
17229            self.field.push(value);
17230            Ok(())
17231        }
17232        fn handle_annotation<'de, R>(
17233            &mut self,
17234            reader: &R,
17235            output: DeserializerOutput<'de, super::Annotation>,
17236            fallback: &mut Option<KeybaseTypeContentDeserializerState>,
17237        ) -> Result<ElementHandlerOutput<'de>, Error>
17238        where
17239            R: DeserializeReader,
17240        {
17241            let DeserializerOutput {
17242                artifact,
17243                event,
17244                allow_any,
17245            } = output;
17246            if artifact.is_none() {
17247                fallback.get_or_insert(KeybaseTypeContentDeserializerState::Annotation(None));
17248                *self.state = KeybaseTypeContentDeserializerState::Selector(None);
17249                return Ok(ElementHandlerOutput::from_event(event, allow_any));
17250            }
17251            if let Some(fallback) = fallback.take() {
17252                self.finish_state(reader, fallback)?;
17253            }
17254            Ok(match artifact {
17255                DeserializerArtifact::None => unreachable!(),
17256                DeserializerArtifact::Data(data) => {
17257                    self.store_annotation(data)?;
17258                    *self.state = KeybaseTypeContentDeserializerState::Selector(None);
17259                    ElementHandlerOutput::from_event(event, allow_any)
17260                }
17261                DeserializerArtifact::Deserializer(deserializer) => {
17262                    let ret = ElementHandlerOutput::from_event(event, allow_any);
17263                    match &ret {
17264                        ElementHandlerOutput::Continue { .. } => {
17265                            fallback.get_or_insert(
17266                                KeybaseTypeContentDeserializerState::Annotation(Some(deserializer)),
17267                            );
17268                            *self.state = KeybaseTypeContentDeserializerState::Selector(None);
17269                        }
17270                        ElementHandlerOutput::Break { .. } => {
17271                            *self.state =
17272                                KeybaseTypeContentDeserializerState::Annotation(Some(deserializer));
17273                        }
17274                    }
17275                    ret
17276                }
17277            })
17278        }
17279        fn handle_selector<'de, R>(
17280            &mut self,
17281            reader: &R,
17282            output: DeserializerOutput<'de, super::Field>,
17283            fallback: &mut Option<KeybaseTypeContentDeserializerState>,
17284        ) -> Result<ElementHandlerOutput<'de>, Error>
17285        where
17286            R: DeserializeReader,
17287        {
17288            let DeserializerOutput {
17289                artifact,
17290                event,
17291                allow_any,
17292            } = output;
17293            if artifact.is_none() {
17294                if self.selector.is_some() {
17295                    fallback.get_or_insert(KeybaseTypeContentDeserializerState::Selector(None));
17296                    *self.state = KeybaseTypeContentDeserializerState::Field(None);
17297                    return Ok(ElementHandlerOutput::from_event(event, allow_any));
17298                } else {
17299                    *self.state = KeybaseTypeContentDeserializerState::Selector(None);
17300                    return Ok(ElementHandlerOutput::break_(event, allow_any));
17301                }
17302            }
17303            if let Some(fallback) = fallback.take() {
17304                self.finish_state(reader, fallback)?;
17305            }
17306            Ok(match artifact {
17307                DeserializerArtifact::None => unreachable!(),
17308                DeserializerArtifact::Data(data) => {
17309                    self.store_selector(data)?;
17310                    *self.state = KeybaseTypeContentDeserializerState::Field(None);
17311                    ElementHandlerOutput::from_event(event, allow_any)
17312                }
17313                DeserializerArtifact::Deserializer(deserializer) => {
17314                    let ret = ElementHandlerOutput::from_event(event, allow_any);
17315                    match &ret {
17316                        ElementHandlerOutput::Continue { .. } => {
17317                            fallback.get_or_insert(KeybaseTypeContentDeserializerState::Selector(
17318                                Some(deserializer),
17319                            ));
17320                            *self.state = KeybaseTypeContentDeserializerState::Field(None);
17321                        }
17322                        ElementHandlerOutput::Break { .. } => {
17323                            *self.state =
17324                                KeybaseTypeContentDeserializerState::Selector(Some(deserializer));
17325                        }
17326                    }
17327                    ret
17328                }
17329            })
17330        }
17331        fn handle_field<'de, R>(
17332            &mut self,
17333            reader: &R,
17334            output: DeserializerOutput<'de, super::Field>,
17335            fallback: &mut Option<KeybaseTypeContentDeserializerState>,
17336        ) -> Result<ElementHandlerOutput<'de>, Error>
17337        where
17338            R: DeserializeReader,
17339        {
17340            let DeserializerOutput {
17341                artifact,
17342                event,
17343                allow_any,
17344            } = output;
17345            if artifact.is_none() {
17346                if self.field.len() < 1usize {
17347                    *self.state = KeybaseTypeContentDeserializerState::Field(None);
17348                    return Ok(ElementHandlerOutput::break_(event, allow_any));
17349                } else {
17350                    fallback.get_or_insert(KeybaseTypeContentDeserializerState::Field(None));
17351                    *self.state = KeybaseTypeContentDeserializerState::Done__;
17352                    return Ok(ElementHandlerOutput::from_event(event, allow_any));
17353                }
17354            }
17355            if let Some(fallback) = fallback.take() {
17356                self.finish_state(reader, fallback)?;
17357            }
17358            Ok(match artifact {
17359                DeserializerArtifact::None => unreachable!(),
17360                DeserializerArtifact::Data(data) => {
17361                    self.store_field(data)?;
17362                    *self.state = KeybaseTypeContentDeserializerState::Field(None);
17363                    ElementHandlerOutput::from_event(event, allow_any)
17364                }
17365                DeserializerArtifact::Deserializer(deserializer) => {
17366                    let ret = ElementHandlerOutput::from_event(event, allow_any);
17367                    match &ret {
17368                        ElementHandlerOutput::Continue { .. } => {
17369                            fallback.get_or_insert(KeybaseTypeContentDeserializerState::Field(
17370                                Some(deserializer),
17371                            ));
17372                            if self.field.len().saturating_add(1) < 1usize {
17373                                *self.state = KeybaseTypeContentDeserializerState::Field(None);
17374                            } else {
17375                                *self.state = KeybaseTypeContentDeserializerState::Done__;
17376                            }
17377                        }
17378                        ElementHandlerOutput::Break { .. } => {
17379                            *self.state =
17380                                KeybaseTypeContentDeserializerState::Field(Some(deserializer));
17381                        }
17382                    }
17383                    ret
17384                }
17385            })
17386        }
17387    }
17388    impl<'de> Deserializer<'de, super::KeybaseTypeContent> for Box<KeybaseTypeContentDeserializer> {
17389        fn init<R>(
17390            reader: &R,
17391            event: Event<'de>,
17392        ) -> DeserializerResult<'de, super::KeybaseTypeContent>
17393        where
17394            R: DeserializeReader,
17395        {
17396            let deserializer = Box::new(KeybaseTypeContentDeserializer {
17397                annotation: None,
17398                selector: None,
17399                field: Vec::new(),
17400                state: Box::new(KeybaseTypeContentDeserializerState::Init__),
17401            });
17402            let mut output = deserializer.next(reader, event)?;
17403            output.artifact = match output.artifact {
17404                DeserializerArtifact::Deserializer(x)
17405                    if matches!(&*x.state, KeybaseTypeContentDeserializerState::Init__) =>
17406                {
17407                    DeserializerArtifact::None
17408                }
17409                artifact => artifact,
17410            };
17411            Ok(output)
17412        }
17413        fn next<R>(
17414            mut self,
17415            reader: &R,
17416            event: Event<'de>,
17417        ) -> DeserializerResult<'de, super::KeybaseTypeContent>
17418        where
17419            R: DeserializeReader,
17420        {
17421            use KeybaseTypeContentDeserializerState as S;
17422            let mut event = event;
17423            let mut fallback = None;
17424            let mut allow_any_element = false;
17425            let (event, allow_any) = loop {
17426                let state = replace(&mut *self.state, S::Unknown__);
17427                event = match (state, event) {
17428                    (S::Annotation(Some(deserializer)), event) => {
17429                        let output = deserializer.next(reader, event)?;
17430                        match self.handle_annotation(reader, output, &mut fallback)? {
17431                            ElementHandlerOutput::Continue { event, allow_any } => {
17432                                allow_any_element = allow_any_element || allow_any;
17433                                event
17434                            }
17435                            ElementHandlerOutput::Break { event, allow_any } => {
17436                                break (event, allow_any)
17437                            }
17438                        }
17439                    }
17440                    (S::Selector(Some(deserializer)), event) => {
17441                        let output = deserializer.next(reader, event)?;
17442                        match self.handle_selector(reader, output, &mut fallback)? {
17443                            ElementHandlerOutput::Continue { event, allow_any } => {
17444                                allow_any_element = allow_any_element || allow_any;
17445                                event
17446                            }
17447                            ElementHandlerOutput::Break { event, allow_any } => {
17448                                break (event, allow_any)
17449                            }
17450                        }
17451                    }
17452                    (S::Field(Some(deserializer)), event) => {
17453                        let output = deserializer.next(reader, event)?;
17454                        match self.handle_field(reader, output, &mut fallback)? {
17455                            ElementHandlerOutput::Continue { event, allow_any } => {
17456                                allow_any_element = allow_any_element || allow_any;
17457                                event
17458                            }
17459                            ElementHandlerOutput::Break { event, allow_any } => {
17460                                break (event, allow_any)
17461                            }
17462                        }
17463                    }
17464                    (_, event @ Event::End(_)) => {
17465                        if let Some(fallback) = fallback.take() {
17466                            self.finish_state(reader, fallback)?;
17467                        }
17468                        return Ok(DeserializerOutput {
17469                            artifact: DeserializerArtifact::Data(self.finish(reader)?),
17470                            event: DeserializerEvent::Continue(event),
17471                            allow_any: false,
17472                        });
17473                    }
17474                    (S::Init__, event) => {
17475                        fallback.get_or_insert(S::Init__);
17476                        *self.state = KeybaseTypeContentDeserializerState::Annotation(None);
17477                        event
17478                    }
17479                    (S::Annotation(None), event @ (Event::Start(_) | Event::Empty(_))) => {
17480                        if reader.check_start_tag_name(&event, Some(&super::NS_XS), b"annotation") {
17481                            let output =
17482                                <super::Annotation as WithDeserializer>::Deserializer::init(
17483                                    reader, event,
17484                                )?;
17485                            match self.handle_annotation(reader, output, &mut fallback)? {
17486                                ElementHandlerOutput::Continue { event, allow_any } => {
17487                                    allow_any_element = allow_any_element || allow_any;
17488                                    event
17489                                }
17490                                ElementHandlerOutput::Break { event, allow_any } => {
17491                                    break (event, allow_any)
17492                                }
17493                            }
17494                        } else {
17495                            *self.state = S::Selector(None);
17496                            allow_any_element = true;
17497                            fallback.get_or_insert(S::Annotation(None));
17498                            event
17499                        }
17500                    }
17501                    (S::Selector(None), event @ (Event::Start(_) | Event::Empty(_))) => {
17502                        if reader.check_start_tag_name(&event, Some(&super::NS_XS), b"selector") {
17503                            let output = <super::Field as WithDeserializer>::Deserializer::init(
17504                                reader, event,
17505                            )?;
17506                            match self.handle_selector(reader, output, &mut fallback)? {
17507                                ElementHandlerOutput::Continue { event, allow_any } => {
17508                                    allow_any_element = allow_any_element || allow_any;
17509                                    event
17510                                }
17511                                ElementHandlerOutput::Break { event, allow_any } => {
17512                                    break (event, allow_any)
17513                                }
17514                            }
17515                        } else {
17516                            *self.state = S::Field(None);
17517                            allow_any_element = true;
17518                            fallback.get_or_insert(S::Selector(None));
17519                            event
17520                        }
17521                    }
17522                    (S::Field(None), event @ (Event::Start(_) | Event::Empty(_))) => {
17523                        if reader.check_start_tag_name(&event, Some(&super::NS_XS), b"field") {
17524                            let output = <super::Field as WithDeserializer>::Deserializer::init(
17525                                reader, event,
17526                            )?;
17527                            match self.handle_field(reader, output, &mut fallback)? {
17528                                ElementHandlerOutput::Continue { event, allow_any } => {
17529                                    allow_any_element = allow_any_element || allow_any;
17530                                    event
17531                                }
17532                                ElementHandlerOutput::Break { event, allow_any } => {
17533                                    break (event, allow_any)
17534                                }
17535                            }
17536                        } else {
17537                            *self.state = S::Done__;
17538                            allow_any_element = true;
17539                            fallback.get_or_insert(S::Field(None));
17540                            event
17541                        }
17542                    }
17543                    (S::Done__, event) => {
17544                        fallback.get_or_insert(S::Done__);
17545                        break (DeserializerEvent::Continue(event), allow_any_element);
17546                    }
17547                    (S::Unknown__, _) => unreachable!(),
17548                    (state, event) => {
17549                        *self.state = state;
17550                        break (DeserializerEvent::Break(event), false);
17551                    }
17552                }
17553            };
17554            if let Some(fallback) = fallback {
17555                *self.state = fallback;
17556            }
17557            Ok(DeserializerOutput {
17558                artifact: DeserializerArtifact::Deserializer(self),
17559                event,
17560                allow_any,
17561            })
17562        }
17563        fn finish<R>(mut self, reader: &R) -> Result<super::KeybaseTypeContent, Error>
17564        where
17565            R: DeserializeReader,
17566        {
17567            let state = replace(
17568                &mut *self.state,
17569                KeybaseTypeContentDeserializerState::Unknown__,
17570            );
17571            self.finish_state(reader, state)?;
17572            Ok(super::KeybaseTypeContent {
17573                annotation: self.annotation,
17574                selector: self
17575                    .selector
17576                    .ok_or_else(|| ErrorKind::MissingElement("selector".into()))?,
17577                field: self.field,
17578            })
17579        }
17580    }
17581    #[derive(Debug)]
17582    pub struct KeyrefDeserializer {
17583        id: Option<String>,
17584        name: Option<String>,
17585        ref_: Option<super::QName>,
17586        refer: Option<super::QName>,
17587        content: Option<super::KeyrefContent>,
17588        state: Box<KeyrefDeserializerState>,
17589    }
17590    #[derive(Debug)]
17591    enum KeyrefDeserializerState {
17592        Init__,
17593        Next__,
17594        Content__(<super::KeyrefContent as WithDeserializer>::Deserializer),
17595        Unknown__,
17596    }
17597    impl KeyrefDeserializer {
17598        fn from_bytes_start<R>(reader: &R, bytes_start: &BytesStart<'_>) -> Result<Box<Self>, Error>
17599        where
17600            R: DeserializeReader,
17601        {
17602            let mut id: Option<String> = None;
17603            let mut name: Option<String> = None;
17604            let mut ref_: Option<super::QName> = None;
17605            let mut refer: Option<super::QName> = None;
17606            for attrib in filter_xmlns_attributes(bytes_start) {
17607                let attrib = attrib?;
17608                if matches!(
17609                    reader.resolve_local_name(attrib.key, &super::NS_XS),
17610                    Some(b"id")
17611                ) {
17612                    reader.read_attrib(&mut id, b"id", &attrib.value)?;
17613                } else if matches!(
17614                    reader.resolve_local_name(attrib.key, &super::NS_XS),
17615                    Some(b"name")
17616                ) {
17617                    reader.read_attrib(&mut name, b"name", &attrib.value)?;
17618                } else if matches!(
17619                    reader.resolve_local_name(attrib.key, &super::NS_XS),
17620                    Some(b"ref")
17621                ) {
17622                    reader.read_attrib(&mut ref_, b"ref", &attrib.value)?;
17623                } else if matches!(
17624                    reader.resolve_local_name(attrib.key, &super::NS_XS),
17625                    Some(b"refer")
17626                ) {
17627                    reader.read_attrib(&mut refer, b"refer", &attrib.value)?;
17628                }
17629            }
17630            Ok(Box::new(Self {
17631                id: id,
17632                name: name,
17633                ref_: ref_,
17634                refer: refer,
17635                content: None,
17636                state: Box::new(KeyrefDeserializerState::Init__),
17637            }))
17638        }
17639        fn finish_state<R>(
17640            &mut self,
17641            reader: &R,
17642            state: KeyrefDeserializerState,
17643        ) -> Result<(), Error>
17644        where
17645            R: DeserializeReader,
17646        {
17647            if let KeyrefDeserializerState::Content__(deserializer) = state {
17648                self.store_content(deserializer.finish(reader)?)?;
17649            }
17650            Ok(())
17651        }
17652        fn store_content(&mut self, value: super::KeyrefContent) -> Result<(), Error> {
17653            if self.content.is_some() {
17654                Err(ErrorKind::DuplicateContent)?;
17655            }
17656            self.content = Some(value);
17657            Ok(())
17658        }
17659        fn handle_content<'de, R>(
17660            &mut self,
17661            reader: &R,
17662            output: DeserializerOutput<'de, super::KeyrefContent>,
17663            fallback: &mut Option<KeyrefDeserializerState>,
17664        ) -> Result<ElementHandlerOutput<'de>, Error>
17665        where
17666            R: DeserializeReader,
17667        {
17668            let DeserializerOutput {
17669                artifact,
17670                event,
17671                allow_any,
17672            } = output;
17673            if artifact.is_none() {
17674                *self.state = fallback.take().unwrap_or(KeyrefDeserializerState::Next__);
17675                return Ok(ElementHandlerOutput::break_(event, allow_any));
17676            }
17677            if let Some(fallback) = fallback.take() {
17678                self.finish_state(reader, fallback)?;
17679            }
17680            Ok(match artifact {
17681                DeserializerArtifact::None => unreachable!(),
17682                DeserializerArtifact::Data(data) => {
17683                    self.store_content(data)?;
17684                    *self.state = KeyrefDeserializerState::Next__;
17685                    ElementHandlerOutput::from_event(event, allow_any)
17686                }
17687                DeserializerArtifact::Deserializer(deserializer) => {
17688                    *self.state = KeyrefDeserializerState::Content__(deserializer);
17689                    ElementHandlerOutput::from_event_end(event, allow_any)
17690                }
17691            })
17692        }
17693    }
17694    impl<'de> Deserializer<'de, super::Keyref> for Box<KeyrefDeserializer> {
17695        fn init<R>(reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::Keyref>
17696        where
17697            R: DeserializeReader,
17698        {
17699            reader.init_deserializer_from_start_event(event, KeyrefDeserializer::from_bytes_start)
17700        }
17701        fn next<R>(
17702            mut self,
17703            reader: &R,
17704            event: Event<'de>,
17705        ) -> DeserializerResult<'de, super::Keyref>
17706        where
17707            R: DeserializeReader,
17708        {
17709            use KeyrefDeserializerState as S;
17710            let mut event = event;
17711            let mut fallback = None;
17712            let (event, allow_any) = loop {
17713                let state = replace(&mut *self.state, S::Unknown__);
17714                event = match (state, event) {
17715                    (S::Content__(deserializer), event) => {
17716                        let output = deserializer.next(reader, event)?;
17717                        match self.handle_content(reader, output, &mut fallback)? {
17718                            ElementHandlerOutput::Break { event, allow_any } => {
17719                                break (event, allow_any)
17720                            }
17721                            ElementHandlerOutput::Continue { event, .. } => event,
17722                        }
17723                    }
17724                    (_, Event::End(_)) => {
17725                        return Ok(DeserializerOutput {
17726                            artifact: DeserializerArtifact::Data(self.finish(reader)?),
17727                            event: DeserializerEvent::None,
17728                            allow_any: false,
17729                        });
17730                    }
17731                    (state @ (S::Init__ | S::Next__), event) => {
17732                        fallback.get_or_insert(state);
17733                        let output =
17734                            <super::KeyrefContent as WithDeserializer>::Deserializer::init(
17735                                reader, event,
17736                            )?;
17737                        match self.handle_content(reader, output, &mut fallback)? {
17738                            ElementHandlerOutput::Break { event, allow_any } => {
17739                                break (event, allow_any)
17740                            }
17741                            ElementHandlerOutput::Continue { event, .. } => event,
17742                        }
17743                    }
17744                    (S::Unknown__, _) => unreachable!(),
17745                }
17746            };
17747            let artifact = DeserializerArtifact::Deserializer(self);
17748            Ok(DeserializerOutput {
17749                artifact,
17750                event,
17751                allow_any,
17752            })
17753        }
17754        fn finish<R>(mut self, reader: &R) -> Result<super::Keyref, Error>
17755        where
17756            R: DeserializeReader,
17757        {
17758            let state = replace(&mut *self.state, KeyrefDeserializerState::Unknown__);
17759            self.finish_state(reader, state)?;
17760            Ok(super::Keyref {
17761                id: self.id,
17762                name: self.name,
17763                ref_: self.ref_,
17764                refer: self.refer,
17765                content: self.content,
17766            })
17767        }
17768    }
17769    #[derive(Debug)]
17770    pub struct KeyrefContentDeserializer {
17771        annotation: Option<super::Annotation>,
17772        selector: Option<super::Field>,
17773        field: Vec<super::Field>,
17774        state: Box<KeyrefContentDeserializerState>,
17775    }
17776    #[derive(Debug)]
17777    enum KeyrefContentDeserializerState {
17778        Init__,
17779        Annotation(Option<<super::Annotation as WithDeserializer>::Deserializer>),
17780        Selector(Option<<super::Field as WithDeserializer>::Deserializer>),
17781        Field(Option<<super::Field as WithDeserializer>::Deserializer>),
17782        Done__,
17783        Unknown__,
17784    }
17785    impl KeyrefContentDeserializer {
17786        fn finish_state<R>(
17787            &mut self,
17788            reader: &R,
17789            state: KeyrefContentDeserializerState,
17790        ) -> Result<(), Error>
17791        where
17792            R: DeserializeReader,
17793        {
17794            use KeyrefContentDeserializerState as S;
17795            match state {
17796                S::Annotation(Some(deserializer)) => {
17797                    self.store_annotation(deserializer.finish(reader)?)?
17798                }
17799                S::Selector(Some(deserializer)) => {
17800                    self.store_selector(deserializer.finish(reader)?)?
17801                }
17802                S::Field(Some(deserializer)) => self.store_field(deserializer.finish(reader)?)?,
17803                _ => (),
17804            }
17805            Ok(())
17806        }
17807        fn store_annotation(&mut self, value: super::Annotation) -> Result<(), Error> {
17808            if self.annotation.is_some() {
17809                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
17810                    b"annotation",
17811                )))?;
17812            }
17813            self.annotation = Some(value);
17814            Ok(())
17815        }
17816        fn store_selector(&mut self, value: super::Field) -> Result<(), Error> {
17817            if self.selector.is_some() {
17818                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
17819                    b"selector",
17820                )))?;
17821            }
17822            self.selector = Some(value);
17823            Ok(())
17824        }
17825        fn store_field(&mut self, value: super::Field) -> Result<(), Error> {
17826            self.field.push(value);
17827            Ok(())
17828        }
17829        fn handle_annotation<'de, R>(
17830            &mut self,
17831            reader: &R,
17832            output: DeserializerOutput<'de, super::Annotation>,
17833            fallback: &mut Option<KeyrefContentDeserializerState>,
17834        ) -> Result<ElementHandlerOutput<'de>, Error>
17835        where
17836            R: DeserializeReader,
17837        {
17838            let DeserializerOutput {
17839                artifact,
17840                event,
17841                allow_any,
17842            } = output;
17843            if artifact.is_none() {
17844                fallback.get_or_insert(KeyrefContentDeserializerState::Annotation(None));
17845                *self.state = KeyrefContentDeserializerState::Selector(None);
17846                return Ok(ElementHandlerOutput::from_event(event, allow_any));
17847            }
17848            if let Some(fallback) = fallback.take() {
17849                self.finish_state(reader, fallback)?;
17850            }
17851            Ok(match artifact {
17852                DeserializerArtifact::None => unreachable!(),
17853                DeserializerArtifact::Data(data) => {
17854                    self.store_annotation(data)?;
17855                    *self.state = KeyrefContentDeserializerState::Selector(None);
17856                    ElementHandlerOutput::from_event(event, allow_any)
17857                }
17858                DeserializerArtifact::Deserializer(deserializer) => {
17859                    let ret = ElementHandlerOutput::from_event(event, allow_any);
17860                    match &ret {
17861                        ElementHandlerOutput::Continue { .. } => {
17862                            fallback.get_or_insert(KeyrefContentDeserializerState::Annotation(
17863                                Some(deserializer),
17864                            ));
17865                            *self.state = KeyrefContentDeserializerState::Selector(None);
17866                        }
17867                        ElementHandlerOutput::Break { .. } => {
17868                            *self.state =
17869                                KeyrefContentDeserializerState::Annotation(Some(deserializer));
17870                        }
17871                    }
17872                    ret
17873                }
17874            })
17875        }
17876        fn handle_selector<'de, R>(
17877            &mut self,
17878            reader: &R,
17879            output: DeserializerOutput<'de, super::Field>,
17880            fallback: &mut Option<KeyrefContentDeserializerState>,
17881        ) -> Result<ElementHandlerOutput<'de>, Error>
17882        where
17883            R: DeserializeReader,
17884        {
17885            let DeserializerOutput {
17886                artifact,
17887                event,
17888                allow_any,
17889            } = output;
17890            if artifact.is_none() {
17891                if self.selector.is_some() {
17892                    fallback.get_or_insert(KeyrefContentDeserializerState::Selector(None));
17893                    *self.state = KeyrefContentDeserializerState::Field(None);
17894                    return Ok(ElementHandlerOutput::from_event(event, allow_any));
17895                } else {
17896                    *self.state = KeyrefContentDeserializerState::Selector(None);
17897                    return Ok(ElementHandlerOutput::break_(event, allow_any));
17898                }
17899            }
17900            if let Some(fallback) = fallback.take() {
17901                self.finish_state(reader, fallback)?;
17902            }
17903            Ok(match artifact {
17904                DeserializerArtifact::None => unreachable!(),
17905                DeserializerArtifact::Data(data) => {
17906                    self.store_selector(data)?;
17907                    *self.state = KeyrefContentDeserializerState::Field(None);
17908                    ElementHandlerOutput::from_event(event, allow_any)
17909                }
17910                DeserializerArtifact::Deserializer(deserializer) => {
17911                    let ret = ElementHandlerOutput::from_event(event, allow_any);
17912                    match &ret {
17913                        ElementHandlerOutput::Continue { .. } => {
17914                            fallback.get_or_insert(KeyrefContentDeserializerState::Selector(Some(
17915                                deserializer,
17916                            )));
17917                            *self.state = KeyrefContentDeserializerState::Field(None);
17918                        }
17919                        ElementHandlerOutput::Break { .. } => {
17920                            *self.state =
17921                                KeyrefContentDeserializerState::Selector(Some(deserializer));
17922                        }
17923                    }
17924                    ret
17925                }
17926            })
17927        }
17928        fn handle_field<'de, R>(
17929            &mut self,
17930            reader: &R,
17931            output: DeserializerOutput<'de, super::Field>,
17932            fallback: &mut Option<KeyrefContentDeserializerState>,
17933        ) -> Result<ElementHandlerOutput<'de>, Error>
17934        where
17935            R: DeserializeReader,
17936        {
17937            let DeserializerOutput {
17938                artifact,
17939                event,
17940                allow_any,
17941            } = output;
17942            if artifact.is_none() {
17943                if self.field.len() < 1usize {
17944                    *self.state = KeyrefContentDeserializerState::Field(None);
17945                    return Ok(ElementHandlerOutput::break_(event, allow_any));
17946                } else {
17947                    fallback.get_or_insert(KeyrefContentDeserializerState::Field(None));
17948                    *self.state = KeyrefContentDeserializerState::Done__;
17949                    return Ok(ElementHandlerOutput::from_event(event, allow_any));
17950                }
17951            }
17952            if let Some(fallback) = fallback.take() {
17953                self.finish_state(reader, fallback)?;
17954            }
17955            Ok(match artifact {
17956                DeserializerArtifact::None => unreachable!(),
17957                DeserializerArtifact::Data(data) => {
17958                    self.store_field(data)?;
17959                    *self.state = KeyrefContentDeserializerState::Field(None);
17960                    ElementHandlerOutput::from_event(event, allow_any)
17961                }
17962                DeserializerArtifact::Deserializer(deserializer) => {
17963                    let ret = ElementHandlerOutput::from_event(event, allow_any);
17964                    match &ret {
17965                        ElementHandlerOutput::Continue { .. } => {
17966                            fallback.get_or_insert(KeyrefContentDeserializerState::Field(Some(
17967                                deserializer,
17968                            )));
17969                            if self.field.len().saturating_add(1) < 1usize {
17970                                *self.state = KeyrefContentDeserializerState::Field(None);
17971                            } else {
17972                                *self.state = KeyrefContentDeserializerState::Done__;
17973                            }
17974                        }
17975                        ElementHandlerOutput::Break { .. } => {
17976                            *self.state = KeyrefContentDeserializerState::Field(Some(deserializer));
17977                        }
17978                    }
17979                    ret
17980                }
17981            })
17982        }
17983    }
17984    impl<'de> Deserializer<'de, super::KeyrefContent> for Box<KeyrefContentDeserializer> {
17985        fn init<R>(reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::KeyrefContent>
17986        where
17987            R: DeserializeReader,
17988        {
17989            let deserializer = Box::new(KeyrefContentDeserializer {
17990                annotation: None,
17991                selector: None,
17992                field: Vec::new(),
17993                state: Box::new(KeyrefContentDeserializerState::Init__),
17994            });
17995            let mut output = deserializer.next(reader, event)?;
17996            output.artifact = match output.artifact {
17997                DeserializerArtifact::Deserializer(x)
17998                    if matches!(&*x.state, KeyrefContentDeserializerState::Init__) =>
17999                {
18000                    DeserializerArtifact::None
18001                }
18002                artifact => artifact,
18003            };
18004            Ok(output)
18005        }
18006        fn next<R>(
18007            mut self,
18008            reader: &R,
18009            event: Event<'de>,
18010        ) -> DeserializerResult<'de, super::KeyrefContent>
18011        where
18012            R: DeserializeReader,
18013        {
18014            use KeyrefContentDeserializerState as S;
18015            let mut event = event;
18016            let mut fallback = None;
18017            let mut allow_any_element = false;
18018            let (event, allow_any) = loop {
18019                let state = replace(&mut *self.state, S::Unknown__);
18020                event = match (state, event) {
18021                    (S::Annotation(Some(deserializer)), event) => {
18022                        let output = deserializer.next(reader, event)?;
18023                        match self.handle_annotation(reader, output, &mut fallback)? {
18024                            ElementHandlerOutput::Continue { event, allow_any } => {
18025                                allow_any_element = allow_any_element || allow_any;
18026                                event
18027                            }
18028                            ElementHandlerOutput::Break { event, allow_any } => {
18029                                break (event, allow_any)
18030                            }
18031                        }
18032                    }
18033                    (S::Selector(Some(deserializer)), event) => {
18034                        let output = deserializer.next(reader, event)?;
18035                        match self.handle_selector(reader, output, &mut fallback)? {
18036                            ElementHandlerOutput::Continue { event, allow_any } => {
18037                                allow_any_element = allow_any_element || allow_any;
18038                                event
18039                            }
18040                            ElementHandlerOutput::Break { event, allow_any } => {
18041                                break (event, allow_any)
18042                            }
18043                        }
18044                    }
18045                    (S::Field(Some(deserializer)), event) => {
18046                        let output = deserializer.next(reader, event)?;
18047                        match self.handle_field(reader, output, &mut fallback)? {
18048                            ElementHandlerOutput::Continue { event, allow_any } => {
18049                                allow_any_element = allow_any_element || allow_any;
18050                                event
18051                            }
18052                            ElementHandlerOutput::Break { event, allow_any } => {
18053                                break (event, allow_any)
18054                            }
18055                        }
18056                    }
18057                    (_, event @ Event::End(_)) => {
18058                        if let Some(fallback) = fallback.take() {
18059                            self.finish_state(reader, fallback)?;
18060                        }
18061                        return Ok(DeserializerOutput {
18062                            artifact: DeserializerArtifact::Data(self.finish(reader)?),
18063                            event: DeserializerEvent::Continue(event),
18064                            allow_any: false,
18065                        });
18066                    }
18067                    (S::Init__, event) => {
18068                        fallback.get_or_insert(S::Init__);
18069                        *self.state = KeyrefContentDeserializerState::Annotation(None);
18070                        event
18071                    }
18072                    (S::Annotation(None), event @ (Event::Start(_) | Event::Empty(_))) => {
18073                        if reader.check_start_tag_name(&event, Some(&super::NS_XS), b"annotation") {
18074                            let output =
18075                                <super::Annotation as WithDeserializer>::Deserializer::init(
18076                                    reader, event,
18077                                )?;
18078                            match self.handle_annotation(reader, output, &mut fallback)? {
18079                                ElementHandlerOutput::Continue { event, allow_any } => {
18080                                    allow_any_element = allow_any_element || allow_any;
18081                                    event
18082                                }
18083                                ElementHandlerOutput::Break { event, allow_any } => {
18084                                    break (event, allow_any)
18085                                }
18086                            }
18087                        } else {
18088                            *self.state = S::Selector(None);
18089                            allow_any_element = true;
18090                            fallback.get_or_insert(S::Annotation(None));
18091                            event
18092                        }
18093                    }
18094                    (S::Selector(None), event @ (Event::Start(_) | Event::Empty(_))) => {
18095                        if reader.check_start_tag_name(&event, Some(&super::NS_XS), b"selector") {
18096                            let output = <super::Field as WithDeserializer>::Deserializer::init(
18097                                reader, event,
18098                            )?;
18099                            match self.handle_selector(reader, output, &mut fallback)? {
18100                                ElementHandlerOutput::Continue { event, allow_any } => {
18101                                    allow_any_element = allow_any_element || allow_any;
18102                                    event
18103                                }
18104                                ElementHandlerOutput::Break { event, allow_any } => {
18105                                    break (event, allow_any)
18106                                }
18107                            }
18108                        } else {
18109                            *self.state = S::Field(None);
18110                            allow_any_element = true;
18111                            fallback.get_or_insert(S::Selector(None));
18112                            event
18113                        }
18114                    }
18115                    (S::Field(None), event @ (Event::Start(_) | Event::Empty(_))) => {
18116                        if reader.check_start_tag_name(&event, Some(&super::NS_XS), b"field") {
18117                            let output = <super::Field as WithDeserializer>::Deserializer::init(
18118                                reader, event,
18119                            )?;
18120                            match self.handle_field(reader, output, &mut fallback)? {
18121                                ElementHandlerOutput::Continue { event, allow_any } => {
18122                                    allow_any_element = allow_any_element || allow_any;
18123                                    event
18124                                }
18125                                ElementHandlerOutput::Break { event, allow_any } => {
18126                                    break (event, allow_any)
18127                                }
18128                            }
18129                        } else {
18130                            *self.state = S::Done__;
18131                            allow_any_element = true;
18132                            fallback.get_or_insert(S::Field(None));
18133                            event
18134                        }
18135                    }
18136                    (S::Done__, event) => {
18137                        fallback.get_or_insert(S::Done__);
18138                        break (DeserializerEvent::Continue(event), allow_any_element);
18139                    }
18140                    (S::Unknown__, _) => unreachable!(),
18141                    (state, event) => {
18142                        *self.state = state;
18143                        break (DeserializerEvent::Break(event), false);
18144                    }
18145                }
18146            };
18147            if let Some(fallback) = fallback {
18148                *self.state = fallback;
18149            }
18150            Ok(DeserializerOutput {
18151                artifact: DeserializerArtifact::Deserializer(self),
18152                event,
18153                allow_any,
18154            })
18155        }
18156        fn finish<R>(mut self, reader: &R) -> Result<super::KeyrefContent, Error>
18157        where
18158            R: DeserializeReader,
18159        {
18160            let state = replace(&mut *self.state, KeyrefContentDeserializerState::Unknown__);
18161            self.finish_state(reader, state)?;
18162            Ok(super::KeyrefContent {
18163                annotation: self.annotation,
18164                selector: self
18165                    .selector
18166                    .ok_or_else(|| ErrorKind::MissingElement("selector".into()))?,
18167                field: self.field,
18168            })
18169        }
18170    }
18171    #[derive(Debug)]
18172    pub struct FacetDeserializer {
18173        state: Box<FacetDeserializerState>,
18174    }
18175    #[derive(Debug)]
18176    pub enum FacetDeserializerState {
18177        Init__,
18178        MinExclusive(
18179            Option<super::FacetType>,
18180            Option<<super::FacetType as WithDeserializer>::Deserializer>,
18181        ),
18182        MinInclusive(
18183            Option<super::FacetType>,
18184            Option<<super::FacetType as WithDeserializer>::Deserializer>,
18185        ),
18186        MaxExclusive(
18187            Option<super::FacetType>,
18188            Option<<super::FacetType as WithDeserializer>::Deserializer>,
18189        ),
18190        MaxInclusive(
18191            Option<super::FacetType>,
18192            Option<<super::FacetType as WithDeserializer>::Deserializer>,
18193        ),
18194        TotalDigits(
18195            Option<super::FacetType>,
18196            Option<<super::FacetType as WithDeserializer>::Deserializer>,
18197        ),
18198        FractionDigits(
18199            Option<super::FacetType>,
18200            Option<<super::FacetType as WithDeserializer>::Deserializer>,
18201        ),
18202        Length(
18203            Option<super::FacetType>,
18204            Option<<super::FacetType as WithDeserializer>::Deserializer>,
18205        ),
18206        MinLength(
18207            Option<super::FacetType>,
18208            Option<<super::FacetType as WithDeserializer>::Deserializer>,
18209        ),
18210        MaxLength(
18211            Option<super::FacetType>,
18212            Option<<super::FacetType as WithDeserializer>::Deserializer>,
18213        ),
18214        Enumeration(
18215            Option<super::FacetType>,
18216            Option<<super::FacetType as WithDeserializer>::Deserializer>,
18217        ),
18218        WhiteSpace(
18219            Option<super::FacetType>,
18220            Option<<super::FacetType as WithDeserializer>::Deserializer>,
18221        ),
18222        Pattern(
18223            Option<super::FacetType>,
18224            Option<<super::FacetType as WithDeserializer>::Deserializer>,
18225        ),
18226        Assertion(
18227            Option<super::AssertionType>,
18228            Option<<super::AssertionType as WithDeserializer>::Deserializer>,
18229        ),
18230        ExplicitTimezone(
18231            Option<super::FacetType>,
18232            Option<<super::FacetType as WithDeserializer>::Deserializer>,
18233        ),
18234        Done__(super::Facet),
18235        Unknown__,
18236    }
18237    impl FacetDeserializer {
18238        fn find_suitable<'de, R>(
18239            &mut self,
18240            reader: &R,
18241            event: Event<'de>,
18242            fallback: &mut Option<FacetDeserializerState>,
18243        ) -> Result<ElementHandlerOutput<'de>, Error>
18244        where
18245            R: DeserializeReader,
18246        {
18247            let (Event::Start(x) | Event::Empty(x)) = &event else {
18248                *self.state = fallback.take().unwrap_or(FacetDeserializerState::Init__);
18249                return Ok(ElementHandlerOutput::return_to_parent(event, false));
18250            };
18251            if matches!(
18252                reader.resolve_local_name(x.name(), &super::NS_XS),
18253                Some(b"minExclusive")
18254            ) {
18255                let output =
18256                    <super::FacetType as WithDeserializer>::Deserializer::init(reader, event)?;
18257                return self.handle_min_exclusive(
18258                    reader,
18259                    Default::default(),
18260                    output,
18261                    &mut *fallback,
18262                );
18263            }
18264            if matches!(
18265                reader.resolve_local_name(x.name(), &super::NS_XS),
18266                Some(b"minInclusive")
18267            ) {
18268                let output =
18269                    <super::FacetType as WithDeserializer>::Deserializer::init(reader, event)?;
18270                return self.handle_min_inclusive(
18271                    reader,
18272                    Default::default(),
18273                    output,
18274                    &mut *fallback,
18275                );
18276            }
18277            if matches!(
18278                reader.resolve_local_name(x.name(), &super::NS_XS),
18279                Some(b"maxExclusive")
18280            ) {
18281                let output =
18282                    <super::FacetType as WithDeserializer>::Deserializer::init(reader, event)?;
18283                return self.handle_max_exclusive(
18284                    reader,
18285                    Default::default(),
18286                    output,
18287                    &mut *fallback,
18288                );
18289            }
18290            if matches!(
18291                reader.resolve_local_name(x.name(), &super::NS_XS),
18292                Some(b"maxInclusive")
18293            ) {
18294                let output =
18295                    <super::FacetType as WithDeserializer>::Deserializer::init(reader, event)?;
18296                return self.handle_max_inclusive(
18297                    reader,
18298                    Default::default(),
18299                    output,
18300                    &mut *fallback,
18301                );
18302            }
18303            if matches!(
18304                reader.resolve_local_name(x.name(), &super::NS_XS),
18305                Some(b"totalDigits")
18306            ) {
18307                let output =
18308                    <super::FacetType as WithDeserializer>::Deserializer::init(reader, event)?;
18309                return self.handle_total_digits(
18310                    reader,
18311                    Default::default(),
18312                    output,
18313                    &mut *fallback,
18314                );
18315            }
18316            if matches!(
18317                reader.resolve_local_name(x.name(), &super::NS_XS),
18318                Some(b"fractionDigits")
18319            ) {
18320                let output =
18321                    <super::FacetType as WithDeserializer>::Deserializer::init(reader, event)?;
18322                return self.handle_fraction_digits(
18323                    reader,
18324                    Default::default(),
18325                    output,
18326                    &mut *fallback,
18327                );
18328            }
18329            if matches!(
18330                reader.resolve_local_name(x.name(), &super::NS_XS),
18331                Some(b"length")
18332            ) {
18333                let output =
18334                    <super::FacetType as WithDeserializer>::Deserializer::init(reader, event)?;
18335                return self.handle_length(reader, Default::default(), output, &mut *fallback);
18336            }
18337            if matches!(
18338                reader.resolve_local_name(x.name(), &super::NS_XS),
18339                Some(b"minLength")
18340            ) {
18341                let output =
18342                    <super::FacetType as WithDeserializer>::Deserializer::init(reader, event)?;
18343                return self.handle_min_length(reader, Default::default(), output, &mut *fallback);
18344            }
18345            if matches!(
18346                reader.resolve_local_name(x.name(), &super::NS_XS),
18347                Some(b"maxLength")
18348            ) {
18349                let output =
18350                    <super::FacetType as WithDeserializer>::Deserializer::init(reader, event)?;
18351                return self.handle_max_length(reader, Default::default(), output, &mut *fallback);
18352            }
18353            if matches!(
18354                reader.resolve_local_name(x.name(), &super::NS_XS),
18355                Some(b"enumeration")
18356            ) {
18357                let output =
18358                    <super::FacetType as WithDeserializer>::Deserializer::init(reader, event)?;
18359                return self.handle_enumeration(reader, Default::default(), output, &mut *fallback);
18360            }
18361            if matches!(
18362                reader.resolve_local_name(x.name(), &super::NS_XS),
18363                Some(b"whiteSpace")
18364            ) {
18365                let output =
18366                    <super::FacetType as WithDeserializer>::Deserializer::init(reader, event)?;
18367                return self.handle_white_space(reader, Default::default(), output, &mut *fallback);
18368            }
18369            if matches!(
18370                reader.resolve_local_name(x.name(), &super::NS_XS),
18371                Some(b"pattern")
18372            ) {
18373                let output =
18374                    <super::FacetType as WithDeserializer>::Deserializer::init(reader, event)?;
18375                return self.handle_pattern(reader, Default::default(), output, &mut *fallback);
18376            }
18377            if matches!(
18378                reader.resolve_local_name(x.name(), &super::NS_XS),
18379                Some(b"assertion")
18380            ) {
18381                let output =
18382                    <super::AssertionType as WithDeserializer>::Deserializer::init(reader, event)?;
18383                return self.handle_assertion(reader, Default::default(), output, &mut *fallback);
18384            }
18385            if matches!(
18386                reader.resolve_local_name(x.name(), &super::NS_XS),
18387                Some(b"explicitTimezone")
18388            ) {
18389                let output =
18390                    <super::FacetType as WithDeserializer>::Deserializer::init(reader, event)?;
18391                return self.handle_explicit_timezone(
18392                    reader,
18393                    Default::default(),
18394                    output,
18395                    &mut *fallback,
18396                );
18397            }
18398            *self.state = fallback.take().unwrap_or(FacetDeserializerState::Init__);
18399            Ok(ElementHandlerOutput::return_to_parent(event, false))
18400        }
18401        fn finish_state<R>(reader: &R, state: FacetDeserializerState) -> Result<super::Facet, Error>
18402        where
18403            R: DeserializeReader,
18404        {
18405            use FacetDeserializerState as S;
18406            match state {
18407                S::Init__ => Err(ErrorKind::MissingContent.into()),
18408                S::MinExclusive(mut values, deserializer) => {
18409                    if let Some(deserializer) = deserializer {
18410                        let value = deserializer.finish(reader)?;
18411                        FacetDeserializer::store_min_exclusive(&mut values, value)?;
18412                    }
18413                    Ok(super::Facet::MinExclusive(values.ok_or_else(|| {
18414                        ErrorKind::MissingElement("minExclusive".into())
18415                    })?))
18416                }
18417                S::MinInclusive(mut values, deserializer) => {
18418                    if let Some(deserializer) = deserializer {
18419                        let value = deserializer.finish(reader)?;
18420                        FacetDeserializer::store_min_inclusive(&mut values, value)?;
18421                    }
18422                    Ok(super::Facet::MinInclusive(values.ok_or_else(|| {
18423                        ErrorKind::MissingElement("minInclusive".into())
18424                    })?))
18425                }
18426                S::MaxExclusive(mut values, deserializer) => {
18427                    if let Some(deserializer) = deserializer {
18428                        let value = deserializer.finish(reader)?;
18429                        FacetDeserializer::store_max_exclusive(&mut values, value)?;
18430                    }
18431                    Ok(super::Facet::MaxExclusive(values.ok_or_else(|| {
18432                        ErrorKind::MissingElement("maxExclusive".into())
18433                    })?))
18434                }
18435                S::MaxInclusive(mut values, deserializer) => {
18436                    if let Some(deserializer) = deserializer {
18437                        let value = deserializer.finish(reader)?;
18438                        FacetDeserializer::store_max_inclusive(&mut values, value)?;
18439                    }
18440                    Ok(super::Facet::MaxInclusive(values.ok_or_else(|| {
18441                        ErrorKind::MissingElement("maxInclusive".into())
18442                    })?))
18443                }
18444                S::TotalDigits(mut values, deserializer) => {
18445                    if let Some(deserializer) = deserializer {
18446                        let value = deserializer.finish(reader)?;
18447                        FacetDeserializer::store_total_digits(&mut values, value)?;
18448                    }
18449                    Ok(super::Facet::TotalDigits(values.ok_or_else(|| {
18450                        ErrorKind::MissingElement("totalDigits".into())
18451                    })?))
18452                }
18453                S::FractionDigits(mut values, deserializer) => {
18454                    if let Some(deserializer) = deserializer {
18455                        let value = deserializer.finish(reader)?;
18456                        FacetDeserializer::store_fraction_digits(&mut values, value)?;
18457                    }
18458                    Ok(super::Facet::FractionDigits(values.ok_or_else(|| {
18459                        ErrorKind::MissingElement("fractionDigits".into())
18460                    })?))
18461                }
18462                S::Length(mut values, deserializer) => {
18463                    if let Some(deserializer) = deserializer {
18464                        let value = deserializer.finish(reader)?;
18465                        FacetDeserializer::store_length(&mut values, value)?;
18466                    }
18467                    Ok(super::Facet::Length(values.ok_or_else(|| {
18468                        ErrorKind::MissingElement("length".into())
18469                    })?))
18470                }
18471                S::MinLength(mut values, deserializer) => {
18472                    if let Some(deserializer) = deserializer {
18473                        let value = deserializer.finish(reader)?;
18474                        FacetDeserializer::store_min_length(&mut values, value)?;
18475                    }
18476                    Ok(super::Facet::MinLength(values.ok_or_else(|| {
18477                        ErrorKind::MissingElement("minLength".into())
18478                    })?))
18479                }
18480                S::MaxLength(mut values, deserializer) => {
18481                    if let Some(deserializer) = deserializer {
18482                        let value = deserializer.finish(reader)?;
18483                        FacetDeserializer::store_max_length(&mut values, value)?;
18484                    }
18485                    Ok(super::Facet::MaxLength(values.ok_or_else(|| {
18486                        ErrorKind::MissingElement("maxLength".into())
18487                    })?))
18488                }
18489                S::Enumeration(mut values, deserializer) => {
18490                    if let Some(deserializer) = deserializer {
18491                        let value = deserializer.finish(reader)?;
18492                        FacetDeserializer::store_enumeration(&mut values, value)?;
18493                    }
18494                    Ok(super::Facet::Enumeration(values.ok_or_else(|| {
18495                        ErrorKind::MissingElement("enumeration".into())
18496                    })?))
18497                }
18498                S::WhiteSpace(mut values, deserializer) => {
18499                    if let Some(deserializer) = deserializer {
18500                        let value = deserializer.finish(reader)?;
18501                        FacetDeserializer::store_white_space(&mut values, value)?;
18502                    }
18503                    Ok(super::Facet::WhiteSpace(values.ok_or_else(|| {
18504                        ErrorKind::MissingElement("whiteSpace".into())
18505                    })?))
18506                }
18507                S::Pattern(mut values, deserializer) => {
18508                    if let Some(deserializer) = deserializer {
18509                        let value = deserializer.finish(reader)?;
18510                        FacetDeserializer::store_pattern(&mut values, value)?;
18511                    }
18512                    Ok(super::Facet::Pattern(values.ok_or_else(|| {
18513                        ErrorKind::MissingElement("pattern".into())
18514                    })?))
18515                }
18516                S::Assertion(mut values, deserializer) => {
18517                    if let Some(deserializer) = deserializer {
18518                        let value = deserializer.finish(reader)?;
18519                        FacetDeserializer::store_assertion(&mut values, value)?;
18520                    }
18521                    Ok(super::Facet::Assertion(values.ok_or_else(|| {
18522                        ErrorKind::MissingElement("assertion".into())
18523                    })?))
18524                }
18525                S::ExplicitTimezone(mut values, deserializer) => {
18526                    if let Some(deserializer) = deserializer {
18527                        let value = deserializer.finish(reader)?;
18528                        FacetDeserializer::store_explicit_timezone(&mut values, value)?;
18529                    }
18530                    Ok(super::Facet::ExplicitTimezone(values.ok_or_else(|| {
18531                        ErrorKind::MissingElement("explicitTimezone".into())
18532                    })?))
18533                }
18534                S::Done__(data) => Ok(data),
18535                S::Unknown__ => unreachable!(),
18536            }
18537        }
18538        fn store_min_exclusive(
18539            values: &mut Option<super::FacetType>,
18540            value: super::FacetType,
18541        ) -> Result<(), Error> {
18542            if values.is_some() {
18543                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
18544                    b"minExclusive",
18545                )))?;
18546            }
18547            *values = Some(value);
18548            Ok(())
18549        }
18550        fn store_min_inclusive(
18551            values: &mut Option<super::FacetType>,
18552            value: super::FacetType,
18553        ) -> Result<(), Error> {
18554            if values.is_some() {
18555                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
18556                    b"minInclusive",
18557                )))?;
18558            }
18559            *values = Some(value);
18560            Ok(())
18561        }
18562        fn store_max_exclusive(
18563            values: &mut Option<super::FacetType>,
18564            value: super::FacetType,
18565        ) -> Result<(), Error> {
18566            if values.is_some() {
18567                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
18568                    b"maxExclusive",
18569                )))?;
18570            }
18571            *values = Some(value);
18572            Ok(())
18573        }
18574        fn store_max_inclusive(
18575            values: &mut Option<super::FacetType>,
18576            value: super::FacetType,
18577        ) -> Result<(), Error> {
18578            if values.is_some() {
18579                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
18580                    b"maxInclusive",
18581                )))?;
18582            }
18583            *values = Some(value);
18584            Ok(())
18585        }
18586        fn store_total_digits(
18587            values: &mut Option<super::FacetType>,
18588            value: super::FacetType,
18589        ) -> Result<(), Error> {
18590            if values.is_some() {
18591                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
18592                    b"totalDigits",
18593                )))?;
18594            }
18595            *values = Some(value);
18596            Ok(())
18597        }
18598        fn store_fraction_digits(
18599            values: &mut Option<super::FacetType>,
18600            value: super::FacetType,
18601        ) -> Result<(), Error> {
18602            if values.is_some() {
18603                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
18604                    b"fractionDigits",
18605                )))?;
18606            }
18607            *values = Some(value);
18608            Ok(())
18609        }
18610        fn store_length(
18611            values: &mut Option<super::FacetType>,
18612            value: super::FacetType,
18613        ) -> Result<(), Error> {
18614            if values.is_some() {
18615                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
18616                    b"length",
18617                )))?;
18618            }
18619            *values = Some(value);
18620            Ok(())
18621        }
18622        fn store_min_length(
18623            values: &mut Option<super::FacetType>,
18624            value: super::FacetType,
18625        ) -> Result<(), Error> {
18626            if values.is_some() {
18627                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
18628                    b"minLength",
18629                )))?;
18630            }
18631            *values = Some(value);
18632            Ok(())
18633        }
18634        fn store_max_length(
18635            values: &mut Option<super::FacetType>,
18636            value: super::FacetType,
18637        ) -> Result<(), Error> {
18638            if values.is_some() {
18639                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
18640                    b"maxLength",
18641                )))?;
18642            }
18643            *values = Some(value);
18644            Ok(())
18645        }
18646        fn store_enumeration(
18647            values: &mut Option<super::FacetType>,
18648            value: super::FacetType,
18649        ) -> Result<(), Error> {
18650            if values.is_some() {
18651                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
18652                    b"enumeration",
18653                )))?;
18654            }
18655            *values = Some(value);
18656            Ok(())
18657        }
18658        fn store_white_space(
18659            values: &mut Option<super::FacetType>,
18660            value: super::FacetType,
18661        ) -> Result<(), Error> {
18662            if values.is_some() {
18663                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
18664                    b"whiteSpace",
18665                )))?;
18666            }
18667            *values = Some(value);
18668            Ok(())
18669        }
18670        fn store_pattern(
18671            values: &mut Option<super::FacetType>,
18672            value: super::FacetType,
18673        ) -> Result<(), Error> {
18674            if values.is_some() {
18675                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
18676                    b"pattern",
18677                )))?;
18678            }
18679            *values = Some(value);
18680            Ok(())
18681        }
18682        fn store_assertion(
18683            values: &mut Option<super::AssertionType>,
18684            value: super::AssertionType,
18685        ) -> Result<(), Error> {
18686            if values.is_some() {
18687                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
18688                    b"assertion",
18689                )))?;
18690            }
18691            *values = Some(value);
18692            Ok(())
18693        }
18694        fn store_explicit_timezone(
18695            values: &mut Option<super::FacetType>,
18696            value: super::FacetType,
18697        ) -> Result<(), Error> {
18698            if values.is_some() {
18699                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
18700                    b"explicitTimezone",
18701                )))?;
18702            }
18703            *values = Some(value);
18704            Ok(())
18705        }
18706        fn handle_min_exclusive<'de, R>(
18707            &mut self,
18708            reader: &R,
18709            mut values: Option<super::FacetType>,
18710            output: DeserializerOutput<'de, super::FacetType>,
18711            fallback: &mut Option<FacetDeserializerState>,
18712        ) -> Result<ElementHandlerOutput<'de>, Error>
18713        where
18714            R: DeserializeReader,
18715        {
18716            let DeserializerOutput {
18717                artifact,
18718                event,
18719                allow_any,
18720            } = output;
18721            if artifact.is_none() {
18722                *self.state = match fallback.take() {
18723                    None => FacetDeserializerState::Init__,
18724                    Some(FacetDeserializerState::MinExclusive(_, Some(deserializer))) => {
18725                        FacetDeserializerState::MinExclusive(values, Some(deserializer))
18726                    }
18727                    _ => unreachable!(),
18728                };
18729                return Ok(ElementHandlerOutput::break_(event, allow_any));
18730            }
18731            match fallback.take() {
18732                None => (),
18733                Some(FacetDeserializerState::MinExclusive(_, Some(deserializer))) => {
18734                    let data = deserializer.finish(reader)?;
18735                    FacetDeserializer::store_min_exclusive(&mut values, data)?;
18736                }
18737                Some(_) => unreachable!(),
18738            }
18739            Ok(match artifact {
18740                DeserializerArtifact::None => unreachable!(),
18741                DeserializerArtifact::Data(data) => {
18742                    FacetDeserializer::store_min_exclusive(&mut values, data)?;
18743                    let data = FacetDeserializer::finish_state(
18744                        reader,
18745                        FacetDeserializerState::MinExclusive(values, None),
18746                    )?;
18747                    *self.state = FacetDeserializerState::Done__(data);
18748                    ElementHandlerOutput::Break { event, allow_any }
18749                }
18750                DeserializerArtifact::Deserializer(deserializer) => {
18751                    *self.state = FacetDeserializerState::MinExclusive(values, Some(deserializer));
18752                    ElementHandlerOutput::from_event_end(event, allow_any)
18753                }
18754            })
18755        }
18756        fn handle_min_inclusive<'de, R>(
18757            &mut self,
18758            reader: &R,
18759            mut values: Option<super::FacetType>,
18760            output: DeserializerOutput<'de, super::FacetType>,
18761            fallback: &mut Option<FacetDeserializerState>,
18762        ) -> Result<ElementHandlerOutput<'de>, Error>
18763        where
18764            R: DeserializeReader,
18765        {
18766            let DeserializerOutput {
18767                artifact,
18768                event,
18769                allow_any,
18770            } = output;
18771            if artifact.is_none() {
18772                *self.state = match fallback.take() {
18773                    None => FacetDeserializerState::Init__,
18774                    Some(FacetDeserializerState::MinInclusive(_, Some(deserializer))) => {
18775                        FacetDeserializerState::MinInclusive(values, Some(deserializer))
18776                    }
18777                    _ => unreachable!(),
18778                };
18779                return Ok(ElementHandlerOutput::break_(event, allow_any));
18780            }
18781            match fallback.take() {
18782                None => (),
18783                Some(FacetDeserializerState::MinInclusive(_, Some(deserializer))) => {
18784                    let data = deserializer.finish(reader)?;
18785                    FacetDeserializer::store_min_inclusive(&mut values, data)?;
18786                }
18787                Some(_) => unreachable!(),
18788            }
18789            Ok(match artifact {
18790                DeserializerArtifact::None => unreachable!(),
18791                DeserializerArtifact::Data(data) => {
18792                    FacetDeserializer::store_min_inclusive(&mut values, data)?;
18793                    let data = FacetDeserializer::finish_state(
18794                        reader,
18795                        FacetDeserializerState::MinInclusive(values, None),
18796                    )?;
18797                    *self.state = FacetDeserializerState::Done__(data);
18798                    ElementHandlerOutput::Break { event, allow_any }
18799                }
18800                DeserializerArtifact::Deserializer(deserializer) => {
18801                    *self.state = FacetDeserializerState::MinInclusive(values, Some(deserializer));
18802                    ElementHandlerOutput::from_event_end(event, allow_any)
18803                }
18804            })
18805        }
18806        fn handle_max_exclusive<'de, R>(
18807            &mut self,
18808            reader: &R,
18809            mut values: Option<super::FacetType>,
18810            output: DeserializerOutput<'de, super::FacetType>,
18811            fallback: &mut Option<FacetDeserializerState>,
18812        ) -> Result<ElementHandlerOutput<'de>, Error>
18813        where
18814            R: DeserializeReader,
18815        {
18816            let DeserializerOutput {
18817                artifact,
18818                event,
18819                allow_any,
18820            } = output;
18821            if artifact.is_none() {
18822                *self.state = match fallback.take() {
18823                    None => FacetDeserializerState::Init__,
18824                    Some(FacetDeserializerState::MaxExclusive(_, Some(deserializer))) => {
18825                        FacetDeserializerState::MaxExclusive(values, Some(deserializer))
18826                    }
18827                    _ => unreachable!(),
18828                };
18829                return Ok(ElementHandlerOutput::break_(event, allow_any));
18830            }
18831            match fallback.take() {
18832                None => (),
18833                Some(FacetDeserializerState::MaxExclusive(_, Some(deserializer))) => {
18834                    let data = deserializer.finish(reader)?;
18835                    FacetDeserializer::store_max_exclusive(&mut values, data)?;
18836                }
18837                Some(_) => unreachable!(),
18838            }
18839            Ok(match artifact {
18840                DeserializerArtifact::None => unreachable!(),
18841                DeserializerArtifact::Data(data) => {
18842                    FacetDeserializer::store_max_exclusive(&mut values, data)?;
18843                    let data = FacetDeserializer::finish_state(
18844                        reader,
18845                        FacetDeserializerState::MaxExclusive(values, None),
18846                    )?;
18847                    *self.state = FacetDeserializerState::Done__(data);
18848                    ElementHandlerOutput::Break { event, allow_any }
18849                }
18850                DeserializerArtifact::Deserializer(deserializer) => {
18851                    *self.state = FacetDeserializerState::MaxExclusive(values, Some(deserializer));
18852                    ElementHandlerOutput::from_event_end(event, allow_any)
18853                }
18854            })
18855        }
18856        fn handle_max_inclusive<'de, R>(
18857            &mut self,
18858            reader: &R,
18859            mut values: Option<super::FacetType>,
18860            output: DeserializerOutput<'de, super::FacetType>,
18861            fallback: &mut Option<FacetDeserializerState>,
18862        ) -> Result<ElementHandlerOutput<'de>, Error>
18863        where
18864            R: DeserializeReader,
18865        {
18866            let DeserializerOutput {
18867                artifact,
18868                event,
18869                allow_any,
18870            } = output;
18871            if artifact.is_none() {
18872                *self.state = match fallback.take() {
18873                    None => FacetDeserializerState::Init__,
18874                    Some(FacetDeserializerState::MaxInclusive(_, Some(deserializer))) => {
18875                        FacetDeserializerState::MaxInclusive(values, Some(deserializer))
18876                    }
18877                    _ => unreachable!(),
18878                };
18879                return Ok(ElementHandlerOutput::break_(event, allow_any));
18880            }
18881            match fallback.take() {
18882                None => (),
18883                Some(FacetDeserializerState::MaxInclusive(_, Some(deserializer))) => {
18884                    let data = deserializer.finish(reader)?;
18885                    FacetDeserializer::store_max_inclusive(&mut values, data)?;
18886                }
18887                Some(_) => unreachable!(),
18888            }
18889            Ok(match artifact {
18890                DeserializerArtifact::None => unreachable!(),
18891                DeserializerArtifact::Data(data) => {
18892                    FacetDeserializer::store_max_inclusive(&mut values, data)?;
18893                    let data = FacetDeserializer::finish_state(
18894                        reader,
18895                        FacetDeserializerState::MaxInclusive(values, None),
18896                    )?;
18897                    *self.state = FacetDeserializerState::Done__(data);
18898                    ElementHandlerOutput::Break { event, allow_any }
18899                }
18900                DeserializerArtifact::Deserializer(deserializer) => {
18901                    *self.state = FacetDeserializerState::MaxInclusive(values, Some(deserializer));
18902                    ElementHandlerOutput::from_event_end(event, allow_any)
18903                }
18904            })
18905        }
18906        fn handle_total_digits<'de, R>(
18907            &mut self,
18908            reader: &R,
18909            mut values: Option<super::FacetType>,
18910            output: DeserializerOutput<'de, super::FacetType>,
18911            fallback: &mut Option<FacetDeserializerState>,
18912        ) -> Result<ElementHandlerOutput<'de>, Error>
18913        where
18914            R: DeserializeReader,
18915        {
18916            let DeserializerOutput {
18917                artifact,
18918                event,
18919                allow_any,
18920            } = output;
18921            if artifact.is_none() {
18922                *self.state = match fallback.take() {
18923                    None => FacetDeserializerState::Init__,
18924                    Some(FacetDeserializerState::TotalDigits(_, Some(deserializer))) => {
18925                        FacetDeserializerState::TotalDigits(values, Some(deserializer))
18926                    }
18927                    _ => unreachable!(),
18928                };
18929                return Ok(ElementHandlerOutput::break_(event, allow_any));
18930            }
18931            match fallback.take() {
18932                None => (),
18933                Some(FacetDeserializerState::TotalDigits(_, Some(deserializer))) => {
18934                    let data = deserializer.finish(reader)?;
18935                    FacetDeserializer::store_total_digits(&mut values, data)?;
18936                }
18937                Some(_) => unreachable!(),
18938            }
18939            Ok(match artifact {
18940                DeserializerArtifact::None => unreachable!(),
18941                DeserializerArtifact::Data(data) => {
18942                    FacetDeserializer::store_total_digits(&mut values, data)?;
18943                    let data = FacetDeserializer::finish_state(
18944                        reader,
18945                        FacetDeserializerState::TotalDigits(values, None),
18946                    )?;
18947                    *self.state = FacetDeserializerState::Done__(data);
18948                    ElementHandlerOutput::Break { event, allow_any }
18949                }
18950                DeserializerArtifact::Deserializer(deserializer) => {
18951                    *self.state = FacetDeserializerState::TotalDigits(values, Some(deserializer));
18952                    ElementHandlerOutput::from_event_end(event, allow_any)
18953                }
18954            })
18955        }
18956        fn handle_fraction_digits<'de, R>(
18957            &mut self,
18958            reader: &R,
18959            mut values: Option<super::FacetType>,
18960            output: DeserializerOutput<'de, super::FacetType>,
18961            fallback: &mut Option<FacetDeserializerState>,
18962        ) -> Result<ElementHandlerOutput<'de>, Error>
18963        where
18964            R: DeserializeReader,
18965        {
18966            let DeserializerOutput {
18967                artifact,
18968                event,
18969                allow_any,
18970            } = output;
18971            if artifact.is_none() {
18972                *self.state = match fallback.take() {
18973                    None => FacetDeserializerState::Init__,
18974                    Some(FacetDeserializerState::FractionDigits(_, Some(deserializer))) => {
18975                        FacetDeserializerState::FractionDigits(values, Some(deserializer))
18976                    }
18977                    _ => unreachable!(),
18978                };
18979                return Ok(ElementHandlerOutput::break_(event, allow_any));
18980            }
18981            match fallback.take() {
18982                None => (),
18983                Some(FacetDeserializerState::FractionDigits(_, Some(deserializer))) => {
18984                    let data = deserializer.finish(reader)?;
18985                    FacetDeserializer::store_fraction_digits(&mut values, data)?;
18986                }
18987                Some(_) => unreachable!(),
18988            }
18989            Ok(match artifact {
18990                DeserializerArtifact::None => unreachable!(),
18991                DeserializerArtifact::Data(data) => {
18992                    FacetDeserializer::store_fraction_digits(&mut values, data)?;
18993                    let data = FacetDeserializer::finish_state(
18994                        reader,
18995                        FacetDeserializerState::FractionDigits(values, None),
18996                    )?;
18997                    *self.state = FacetDeserializerState::Done__(data);
18998                    ElementHandlerOutput::Break { event, allow_any }
18999                }
19000                DeserializerArtifact::Deserializer(deserializer) => {
19001                    *self.state =
19002                        FacetDeserializerState::FractionDigits(values, Some(deserializer));
19003                    ElementHandlerOutput::from_event_end(event, allow_any)
19004                }
19005            })
19006        }
19007        fn handle_length<'de, R>(
19008            &mut self,
19009            reader: &R,
19010            mut values: Option<super::FacetType>,
19011            output: DeserializerOutput<'de, super::FacetType>,
19012            fallback: &mut Option<FacetDeserializerState>,
19013        ) -> Result<ElementHandlerOutput<'de>, Error>
19014        where
19015            R: DeserializeReader,
19016        {
19017            let DeserializerOutput {
19018                artifact,
19019                event,
19020                allow_any,
19021            } = output;
19022            if artifact.is_none() {
19023                *self.state = match fallback.take() {
19024                    None => FacetDeserializerState::Init__,
19025                    Some(FacetDeserializerState::Length(_, Some(deserializer))) => {
19026                        FacetDeserializerState::Length(values, Some(deserializer))
19027                    }
19028                    _ => unreachable!(),
19029                };
19030                return Ok(ElementHandlerOutput::break_(event, allow_any));
19031            }
19032            match fallback.take() {
19033                None => (),
19034                Some(FacetDeserializerState::Length(_, Some(deserializer))) => {
19035                    let data = deserializer.finish(reader)?;
19036                    FacetDeserializer::store_length(&mut values, data)?;
19037                }
19038                Some(_) => unreachable!(),
19039            }
19040            Ok(match artifact {
19041                DeserializerArtifact::None => unreachable!(),
19042                DeserializerArtifact::Data(data) => {
19043                    FacetDeserializer::store_length(&mut values, data)?;
19044                    let data = FacetDeserializer::finish_state(
19045                        reader,
19046                        FacetDeserializerState::Length(values, None),
19047                    )?;
19048                    *self.state = FacetDeserializerState::Done__(data);
19049                    ElementHandlerOutput::Break { event, allow_any }
19050                }
19051                DeserializerArtifact::Deserializer(deserializer) => {
19052                    *self.state = FacetDeserializerState::Length(values, Some(deserializer));
19053                    ElementHandlerOutput::from_event_end(event, allow_any)
19054                }
19055            })
19056        }
19057        fn handle_min_length<'de, R>(
19058            &mut self,
19059            reader: &R,
19060            mut values: Option<super::FacetType>,
19061            output: DeserializerOutput<'de, super::FacetType>,
19062            fallback: &mut Option<FacetDeserializerState>,
19063        ) -> Result<ElementHandlerOutput<'de>, Error>
19064        where
19065            R: DeserializeReader,
19066        {
19067            let DeserializerOutput {
19068                artifact,
19069                event,
19070                allow_any,
19071            } = output;
19072            if artifact.is_none() {
19073                *self.state = match fallback.take() {
19074                    None => FacetDeserializerState::Init__,
19075                    Some(FacetDeserializerState::MinLength(_, Some(deserializer))) => {
19076                        FacetDeserializerState::MinLength(values, Some(deserializer))
19077                    }
19078                    _ => unreachable!(),
19079                };
19080                return Ok(ElementHandlerOutput::break_(event, allow_any));
19081            }
19082            match fallback.take() {
19083                None => (),
19084                Some(FacetDeserializerState::MinLength(_, Some(deserializer))) => {
19085                    let data = deserializer.finish(reader)?;
19086                    FacetDeserializer::store_min_length(&mut values, data)?;
19087                }
19088                Some(_) => unreachable!(),
19089            }
19090            Ok(match artifact {
19091                DeserializerArtifact::None => unreachable!(),
19092                DeserializerArtifact::Data(data) => {
19093                    FacetDeserializer::store_min_length(&mut values, data)?;
19094                    let data = FacetDeserializer::finish_state(
19095                        reader,
19096                        FacetDeserializerState::MinLength(values, None),
19097                    )?;
19098                    *self.state = FacetDeserializerState::Done__(data);
19099                    ElementHandlerOutput::Break { event, allow_any }
19100                }
19101                DeserializerArtifact::Deserializer(deserializer) => {
19102                    *self.state = FacetDeserializerState::MinLength(values, Some(deserializer));
19103                    ElementHandlerOutput::from_event_end(event, allow_any)
19104                }
19105            })
19106        }
19107        fn handle_max_length<'de, R>(
19108            &mut self,
19109            reader: &R,
19110            mut values: Option<super::FacetType>,
19111            output: DeserializerOutput<'de, super::FacetType>,
19112            fallback: &mut Option<FacetDeserializerState>,
19113        ) -> Result<ElementHandlerOutput<'de>, Error>
19114        where
19115            R: DeserializeReader,
19116        {
19117            let DeserializerOutput {
19118                artifact,
19119                event,
19120                allow_any,
19121            } = output;
19122            if artifact.is_none() {
19123                *self.state = match fallback.take() {
19124                    None => FacetDeserializerState::Init__,
19125                    Some(FacetDeserializerState::MaxLength(_, Some(deserializer))) => {
19126                        FacetDeserializerState::MaxLength(values, Some(deserializer))
19127                    }
19128                    _ => unreachable!(),
19129                };
19130                return Ok(ElementHandlerOutput::break_(event, allow_any));
19131            }
19132            match fallback.take() {
19133                None => (),
19134                Some(FacetDeserializerState::MaxLength(_, Some(deserializer))) => {
19135                    let data = deserializer.finish(reader)?;
19136                    FacetDeserializer::store_max_length(&mut values, data)?;
19137                }
19138                Some(_) => unreachable!(),
19139            }
19140            Ok(match artifact {
19141                DeserializerArtifact::None => unreachable!(),
19142                DeserializerArtifact::Data(data) => {
19143                    FacetDeserializer::store_max_length(&mut values, data)?;
19144                    let data = FacetDeserializer::finish_state(
19145                        reader,
19146                        FacetDeserializerState::MaxLength(values, None),
19147                    )?;
19148                    *self.state = FacetDeserializerState::Done__(data);
19149                    ElementHandlerOutput::Break { event, allow_any }
19150                }
19151                DeserializerArtifact::Deserializer(deserializer) => {
19152                    *self.state = FacetDeserializerState::MaxLength(values, Some(deserializer));
19153                    ElementHandlerOutput::from_event_end(event, allow_any)
19154                }
19155            })
19156        }
19157        fn handle_enumeration<'de, R>(
19158            &mut self,
19159            reader: &R,
19160            mut values: Option<super::FacetType>,
19161            output: DeserializerOutput<'de, super::FacetType>,
19162            fallback: &mut Option<FacetDeserializerState>,
19163        ) -> Result<ElementHandlerOutput<'de>, Error>
19164        where
19165            R: DeserializeReader,
19166        {
19167            let DeserializerOutput {
19168                artifact,
19169                event,
19170                allow_any,
19171            } = output;
19172            if artifact.is_none() {
19173                *self.state = match fallback.take() {
19174                    None => FacetDeserializerState::Init__,
19175                    Some(FacetDeserializerState::Enumeration(_, Some(deserializer))) => {
19176                        FacetDeserializerState::Enumeration(values, Some(deserializer))
19177                    }
19178                    _ => unreachable!(),
19179                };
19180                return Ok(ElementHandlerOutput::break_(event, allow_any));
19181            }
19182            match fallback.take() {
19183                None => (),
19184                Some(FacetDeserializerState::Enumeration(_, Some(deserializer))) => {
19185                    let data = deserializer.finish(reader)?;
19186                    FacetDeserializer::store_enumeration(&mut values, data)?;
19187                }
19188                Some(_) => unreachable!(),
19189            }
19190            Ok(match artifact {
19191                DeserializerArtifact::None => unreachable!(),
19192                DeserializerArtifact::Data(data) => {
19193                    FacetDeserializer::store_enumeration(&mut values, data)?;
19194                    let data = FacetDeserializer::finish_state(
19195                        reader,
19196                        FacetDeserializerState::Enumeration(values, None),
19197                    )?;
19198                    *self.state = FacetDeserializerState::Done__(data);
19199                    ElementHandlerOutput::Break { event, allow_any }
19200                }
19201                DeserializerArtifact::Deserializer(deserializer) => {
19202                    *self.state = FacetDeserializerState::Enumeration(values, Some(deserializer));
19203                    ElementHandlerOutput::from_event_end(event, allow_any)
19204                }
19205            })
19206        }
19207        fn handle_white_space<'de, R>(
19208            &mut self,
19209            reader: &R,
19210            mut values: Option<super::FacetType>,
19211            output: DeserializerOutput<'de, super::FacetType>,
19212            fallback: &mut Option<FacetDeserializerState>,
19213        ) -> Result<ElementHandlerOutput<'de>, Error>
19214        where
19215            R: DeserializeReader,
19216        {
19217            let DeserializerOutput {
19218                artifact,
19219                event,
19220                allow_any,
19221            } = output;
19222            if artifact.is_none() {
19223                *self.state = match fallback.take() {
19224                    None => FacetDeserializerState::Init__,
19225                    Some(FacetDeserializerState::WhiteSpace(_, Some(deserializer))) => {
19226                        FacetDeserializerState::WhiteSpace(values, Some(deserializer))
19227                    }
19228                    _ => unreachable!(),
19229                };
19230                return Ok(ElementHandlerOutput::break_(event, allow_any));
19231            }
19232            match fallback.take() {
19233                None => (),
19234                Some(FacetDeserializerState::WhiteSpace(_, Some(deserializer))) => {
19235                    let data = deserializer.finish(reader)?;
19236                    FacetDeserializer::store_white_space(&mut values, data)?;
19237                }
19238                Some(_) => unreachable!(),
19239            }
19240            Ok(match artifact {
19241                DeserializerArtifact::None => unreachable!(),
19242                DeserializerArtifact::Data(data) => {
19243                    FacetDeserializer::store_white_space(&mut values, data)?;
19244                    let data = FacetDeserializer::finish_state(
19245                        reader,
19246                        FacetDeserializerState::WhiteSpace(values, None),
19247                    )?;
19248                    *self.state = FacetDeserializerState::Done__(data);
19249                    ElementHandlerOutput::Break { event, allow_any }
19250                }
19251                DeserializerArtifact::Deserializer(deserializer) => {
19252                    *self.state = FacetDeserializerState::WhiteSpace(values, Some(deserializer));
19253                    ElementHandlerOutput::from_event_end(event, allow_any)
19254                }
19255            })
19256        }
19257        fn handle_pattern<'de, R>(
19258            &mut self,
19259            reader: &R,
19260            mut values: Option<super::FacetType>,
19261            output: DeserializerOutput<'de, super::FacetType>,
19262            fallback: &mut Option<FacetDeserializerState>,
19263        ) -> Result<ElementHandlerOutput<'de>, Error>
19264        where
19265            R: DeserializeReader,
19266        {
19267            let DeserializerOutput {
19268                artifact,
19269                event,
19270                allow_any,
19271            } = output;
19272            if artifact.is_none() {
19273                *self.state = match fallback.take() {
19274                    None => FacetDeserializerState::Init__,
19275                    Some(FacetDeserializerState::Pattern(_, Some(deserializer))) => {
19276                        FacetDeserializerState::Pattern(values, Some(deserializer))
19277                    }
19278                    _ => unreachable!(),
19279                };
19280                return Ok(ElementHandlerOutput::break_(event, allow_any));
19281            }
19282            match fallback.take() {
19283                None => (),
19284                Some(FacetDeserializerState::Pattern(_, Some(deserializer))) => {
19285                    let data = deserializer.finish(reader)?;
19286                    FacetDeserializer::store_pattern(&mut values, data)?;
19287                }
19288                Some(_) => unreachable!(),
19289            }
19290            Ok(match artifact {
19291                DeserializerArtifact::None => unreachable!(),
19292                DeserializerArtifact::Data(data) => {
19293                    FacetDeserializer::store_pattern(&mut values, data)?;
19294                    let data = FacetDeserializer::finish_state(
19295                        reader,
19296                        FacetDeserializerState::Pattern(values, None),
19297                    )?;
19298                    *self.state = FacetDeserializerState::Done__(data);
19299                    ElementHandlerOutput::Break { event, allow_any }
19300                }
19301                DeserializerArtifact::Deserializer(deserializer) => {
19302                    *self.state = FacetDeserializerState::Pattern(values, Some(deserializer));
19303                    ElementHandlerOutput::from_event_end(event, allow_any)
19304                }
19305            })
19306        }
19307        fn handle_assertion<'de, R>(
19308            &mut self,
19309            reader: &R,
19310            mut values: Option<super::AssertionType>,
19311            output: DeserializerOutput<'de, super::AssertionType>,
19312            fallback: &mut Option<FacetDeserializerState>,
19313        ) -> Result<ElementHandlerOutput<'de>, Error>
19314        where
19315            R: DeserializeReader,
19316        {
19317            let DeserializerOutput {
19318                artifact,
19319                event,
19320                allow_any,
19321            } = output;
19322            if artifact.is_none() {
19323                *self.state = match fallback.take() {
19324                    None => FacetDeserializerState::Init__,
19325                    Some(FacetDeserializerState::Assertion(_, Some(deserializer))) => {
19326                        FacetDeserializerState::Assertion(values, Some(deserializer))
19327                    }
19328                    _ => unreachable!(),
19329                };
19330                return Ok(ElementHandlerOutput::break_(event, allow_any));
19331            }
19332            match fallback.take() {
19333                None => (),
19334                Some(FacetDeserializerState::Assertion(_, Some(deserializer))) => {
19335                    let data = deserializer.finish(reader)?;
19336                    FacetDeserializer::store_assertion(&mut values, data)?;
19337                }
19338                Some(_) => unreachable!(),
19339            }
19340            Ok(match artifact {
19341                DeserializerArtifact::None => unreachable!(),
19342                DeserializerArtifact::Data(data) => {
19343                    FacetDeserializer::store_assertion(&mut values, data)?;
19344                    let data = FacetDeserializer::finish_state(
19345                        reader,
19346                        FacetDeserializerState::Assertion(values, None),
19347                    )?;
19348                    *self.state = FacetDeserializerState::Done__(data);
19349                    ElementHandlerOutput::Break { event, allow_any }
19350                }
19351                DeserializerArtifact::Deserializer(deserializer) => {
19352                    *self.state = FacetDeserializerState::Assertion(values, Some(deserializer));
19353                    ElementHandlerOutput::from_event_end(event, allow_any)
19354                }
19355            })
19356        }
19357        fn handle_explicit_timezone<'de, R>(
19358            &mut self,
19359            reader: &R,
19360            mut values: Option<super::FacetType>,
19361            output: DeserializerOutput<'de, super::FacetType>,
19362            fallback: &mut Option<FacetDeserializerState>,
19363        ) -> Result<ElementHandlerOutput<'de>, Error>
19364        where
19365            R: DeserializeReader,
19366        {
19367            let DeserializerOutput {
19368                artifact,
19369                event,
19370                allow_any,
19371            } = output;
19372            if artifact.is_none() {
19373                *self.state = match fallback.take() {
19374                    None => FacetDeserializerState::Init__,
19375                    Some(FacetDeserializerState::ExplicitTimezone(_, Some(deserializer))) => {
19376                        FacetDeserializerState::ExplicitTimezone(values, Some(deserializer))
19377                    }
19378                    _ => unreachable!(),
19379                };
19380                return Ok(ElementHandlerOutput::break_(event, allow_any));
19381            }
19382            match fallback.take() {
19383                None => (),
19384                Some(FacetDeserializerState::ExplicitTimezone(_, Some(deserializer))) => {
19385                    let data = deserializer.finish(reader)?;
19386                    FacetDeserializer::store_explicit_timezone(&mut values, data)?;
19387                }
19388                Some(_) => unreachable!(),
19389            }
19390            Ok(match artifact {
19391                DeserializerArtifact::None => unreachable!(),
19392                DeserializerArtifact::Data(data) => {
19393                    FacetDeserializer::store_explicit_timezone(&mut values, data)?;
19394                    let data = FacetDeserializer::finish_state(
19395                        reader,
19396                        FacetDeserializerState::ExplicitTimezone(values, None),
19397                    )?;
19398                    *self.state = FacetDeserializerState::Done__(data);
19399                    ElementHandlerOutput::Break { event, allow_any }
19400                }
19401                DeserializerArtifact::Deserializer(deserializer) => {
19402                    *self.state =
19403                        FacetDeserializerState::ExplicitTimezone(values, Some(deserializer));
19404                    ElementHandlerOutput::from_event_end(event, allow_any)
19405                }
19406            })
19407        }
19408    }
19409    impl<'de> Deserializer<'de, super::Facet> for Box<FacetDeserializer> {
19410        fn init<R>(reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::Facet>
19411        where
19412            R: DeserializeReader,
19413        {
19414            let deserializer = Box::new(FacetDeserializer {
19415                state: Box::new(FacetDeserializerState::Init__),
19416            });
19417            let mut output = deserializer.next(reader, event)?;
19418            output.artifact = match output.artifact {
19419                DeserializerArtifact::Deserializer(x)
19420                    if matches!(&*x.state, FacetDeserializerState::Init__) =>
19421                {
19422                    DeserializerArtifact::None
19423                }
19424                artifact => artifact,
19425            };
19426            Ok(output)
19427        }
19428        fn next<R>(mut self, reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::Facet>
19429        where
19430            R: DeserializeReader,
19431        {
19432            use FacetDeserializerState as S;
19433            let mut event = event;
19434            let mut fallback = None;
19435            let (event, allow_any) = loop {
19436                let state = replace(&mut *self.state, S::Unknown__);
19437                event = match (state, event) {
19438                    (S::MinExclusive(values, Some(deserializer)), event) => {
19439                        let output = deserializer.next(reader, event)?;
19440                        match self.handle_min_exclusive(reader, values, output, &mut fallback)? {
19441                            ElementHandlerOutput::Break { event, allow_any } => {
19442                                break (event, allow_any)
19443                            }
19444                            ElementHandlerOutput::Continue { event, .. } => event,
19445                        }
19446                    }
19447                    (S::MinInclusive(values, Some(deserializer)), event) => {
19448                        let output = deserializer.next(reader, event)?;
19449                        match self.handle_min_inclusive(reader, values, output, &mut fallback)? {
19450                            ElementHandlerOutput::Break { event, allow_any } => {
19451                                break (event, allow_any)
19452                            }
19453                            ElementHandlerOutput::Continue { event, .. } => event,
19454                        }
19455                    }
19456                    (S::MaxExclusive(values, Some(deserializer)), event) => {
19457                        let output = deserializer.next(reader, event)?;
19458                        match self.handle_max_exclusive(reader, values, output, &mut fallback)? {
19459                            ElementHandlerOutput::Break { event, allow_any } => {
19460                                break (event, allow_any)
19461                            }
19462                            ElementHandlerOutput::Continue { event, .. } => event,
19463                        }
19464                    }
19465                    (S::MaxInclusive(values, Some(deserializer)), event) => {
19466                        let output = deserializer.next(reader, event)?;
19467                        match self.handle_max_inclusive(reader, values, output, &mut fallback)? {
19468                            ElementHandlerOutput::Break { event, allow_any } => {
19469                                break (event, allow_any)
19470                            }
19471                            ElementHandlerOutput::Continue { event, .. } => event,
19472                        }
19473                    }
19474                    (S::TotalDigits(values, Some(deserializer)), event) => {
19475                        let output = deserializer.next(reader, event)?;
19476                        match self.handle_total_digits(reader, values, output, &mut fallback)? {
19477                            ElementHandlerOutput::Break { event, allow_any } => {
19478                                break (event, allow_any)
19479                            }
19480                            ElementHandlerOutput::Continue { event, .. } => event,
19481                        }
19482                    }
19483                    (S::FractionDigits(values, Some(deserializer)), event) => {
19484                        let output = deserializer.next(reader, event)?;
19485                        match self.handle_fraction_digits(reader, 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::Length(values, Some(deserializer)), event) => {
19493                        let output = deserializer.next(reader, event)?;
19494                        match self.handle_length(reader, values, output, &mut fallback)? {
19495                            ElementHandlerOutput::Break { event, allow_any } => {
19496                                break (event, allow_any)
19497                            }
19498                            ElementHandlerOutput::Continue { event, .. } => event,
19499                        }
19500                    }
19501                    (S::MinLength(values, Some(deserializer)), event) => {
19502                        let output = deserializer.next(reader, event)?;
19503                        match self.handle_min_length(reader, values, output, &mut fallback)? {
19504                            ElementHandlerOutput::Break { event, allow_any } => {
19505                                break (event, allow_any)
19506                            }
19507                            ElementHandlerOutput::Continue { event, .. } => event,
19508                        }
19509                    }
19510                    (S::MaxLength(values, Some(deserializer)), event) => {
19511                        let output = deserializer.next(reader, event)?;
19512                        match self.handle_max_length(reader, values, output, &mut fallback)? {
19513                            ElementHandlerOutput::Break { event, allow_any } => {
19514                                break (event, allow_any)
19515                            }
19516                            ElementHandlerOutput::Continue { event, .. } => event,
19517                        }
19518                    }
19519                    (S::Enumeration(values, Some(deserializer)), event) => {
19520                        let output = deserializer.next(reader, event)?;
19521                        match self.handle_enumeration(reader, values, output, &mut fallback)? {
19522                            ElementHandlerOutput::Break { event, allow_any } => {
19523                                break (event, allow_any)
19524                            }
19525                            ElementHandlerOutput::Continue { event, .. } => event,
19526                        }
19527                    }
19528                    (S::WhiteSpace(values, Some(deserializer)), event) => {
19529                        let output = deserializer.next(reader, event)?;
19530                        match self.handle_white_space(reader, values, output, &mut fallback)? {
19531                            ElementHandlerOutput::Break { event, allow_any } => {
19532                                break (event, allow_any)
19533                            }
19534                            ElementHandlerOutput::Continue { event, .. } => event,
19535                        }
19536                    }
19537                    (S::Pattern(values, Some(deserializer)), event) => {
19538                        let output = deserializer.next(reader, event)?;
19539                        match self.handle_pattern(reader, values, output, &mut fallback)? {
19540                            ElementHandlerOutput::Break { event, allow_any } => {
19541                                break (event, allow_any)
19542                            }
19543                            ElementHandlerOutput::Continue { event, .. } => event,
19544                        }
19545                    }
19546                    (S::Assertion(values, Some(deserializer)), event) => {
19547                        let output = deserializer.next(reader, event)?;
19548                        match self.handle_assertion(reader, values, output, &mut fallback)? {
19549                            ElementHandlerOutput::Break { event, allow_any } => {
19550                                break (event, allow_any)
19551                            }
19552                            ElementHandlerOutput::Continue { event, .. } => event,
19553                        }
19554                    }
19555                    (S::ExplicitTimezone(values, Some(deserializer)), event) => {
19556                        let output = deserializer.next(reader, event)?;
19557                        match self.handle_explicit_timezone(
19558                            reader,
19559                            values,
19560                            output,
19561                            &mut fallback,
19562                        )? {
19563                            ElementHandlerOutput::Break { event, allow_any } => {
19564                                break (event, allow_any)
19565                            }
19566                            ElementHandlerOutput::Continue { event, .. } => event,
19567                        }
19568                    }
19569                    (state, event @ Event::End(_)) => {
19570                        return Ok(DeserializerOutput {
19571                            artifact: DeserializerArtifact::Data(FacetDeserializer::finish_state(
19572                                reader, state,
19573                            )?),
19574                            event: DeserializerEvent::Continue(event),
19575                            allow_any: false,
19576                        });
19577                    }
19578                    (S::Init__, event) => match self.find_suitable(reader, event, &mut fallback)? {
19579                        ElementHandlerOutput::Break { event, allow_any } => {
19580                            break (event, allow_any)
19581                        }
19582                        ElementHandlerOutput::Continue { event, .. } => event,
19583                    },
19584                    (S::MinExclusive(values, None), event) => {
19585                        let output = <super::FacetType as WithDeserializer>::Deserializer::init(
19586                            reader, event,
19587                        )?;
19588                        match self.handle_min_exclusive(reader, values, output, &mut fallback)? {
19589                            ElementHandlerOutput::Break { event, allow_any } => {
19590                                break (event, allow_any)
19591                            }
19592                            ElementHandlerOutput::Continue { event, .. } => event,
19593                        }
19594                    }
19595                    (S::MinInclusive(values, None), event) => {
19596                        let output = <super::FacetType as WithDeserializer>::Deserializer::init(
19597                            reader, event,
19598                        )?;
19599                        match self.handle_min_inclusive(reader, values, output, &mut fallback)? {
19600                            ElementHandlerOutput::Break { event, allow_any } => {
19601                                break (event, allow_any)
19602                            }
19603                            ElementHandlerOutput::Continue { event, .. } => event,
19604                        }
19605                    }
19606                    (S::MaxExclusive(values, None), event) => {
19607                        let output = <super::FacetType as WithDeserializer>::Deserializer::init(
19608                            reader, event,
19609                        )?;
19610                        match self.handle_max_exclusive(reader, values, output, &mut fallback)? {
19611                            ElementHandlerOutput::Break { event, allow_any } => {
19612                                break (event, allow_any)
19613                            }
19614                            ElementHandlerOutput::Continue { event, .. } => event,
19615                        }
19616                    }
19617                    (S::MaxInclusive(values, None), event) => {
19618                        let output = <super::FacetType as WithDeserializer>::Deserializer::init(
19619                            reader, event,
19620                        )?;
19621                        match self.handle_max_inclusive(reader, values, output, &mut fallback)? {
19622                            ElementHandlerOutput::Break { event, allow_any } => {
19623                                break (event, allow_any)
19624                            }
19625                            ElementHandlerOutput::Continue { event, .. } => event,
19626                        }
19627                    }
19628                    (S::TotalDigits(values, None), event) => {
19629                        let output = <super::FacetType as WithDeserializer>::Deserializer::init(
19630                            reader, event,
19631                        )?;
19632                        match self.handle_total_digits(reader, values, output, &mut fallback)? {
19633                            ElementHandlerOutput::Break { event, allow_any } => {
19634                                break (event, allow_any)
19635                            }
19636                            ElementHandlerOutput::Continue { event, .. } => event,
19637                        }
19638                    }
19639                    (S::FractionDigits(values, None), event) => {
19640                        let output = <super::FacetType as WithDeserializer>::Deserializer::init(
19641                            reader, event,
19642                        )?;
19643                        match self.handle_fraction_digits(reader, values, output, &mut fallback)? {
19644                            ElementHandlerOutput::Break { event, allow_any } => {
19645                                break (event, allow_any)
19646                            }
19647                            ElementHandlerOutput::Continue { event, .. } => event,
19648                        }
19649                    }
19650                    (S::Length(values, None), event) => {
19651                        let output = <super::FacetType as WithDeserializer>::Deserializer::init(
19652                            reader, event,
19653                        )?;
19654                        match self.handle_length(reader, values, output, &mut fallback)? {
19655                            ElementHandlerOutput::Break { event, allow_any } => {
19656                                break (event, allow_any)
19657                            }
19658                            ElementHandlerOutput::Continue { event, .. } => event,
19659                        }
19660                    }
19661                    (S::MinLength(values, None), event) => {
19662                        let output = <super::FacetType as WithDeserializer>::Deserializer::init(
19663                            reader, event,
19664                        )?;
19665                        match self.handle_min_length(reader, values, output, &mut fallback)? {
19666                            ElementHandlerOutput::Break { event, allow_any } => {
19667                                break (event, allow_any)
19668                            }
19669                            ElementHandlerOutput::Continue { event, .. } => event,
19670                        }
19671                    }
19672                    (S::MaxLength(values, None), event) => {
19673                        let output = <super::FacetType as WithDeserializer>::Deserializer::init(
19674                            reader, event,
19675                        )?;
19676                        match self.handle_max_length(reader, values, output, &mut fallback)? {
19677                            ElementHandlerOutput::Break { event, allow_any } => {
19678                                break (event, allow_any)
19679                            }
19680                            ElementHandlerOutput::Continue { event, .. } => event,
19681                        }
19682                    }
19683                    (S::Enumeration(values, None), event) => {
19684                        let output = <super::FacetType as WithDeserializer>::Deserializer::init(
19685                            reader, event,
19686                        )?;
19687                        match self.handle_enumeration(reader, values, output, &mut fallback)? {
19688                            ElementHandlerOutput::Break { event, allow_any } => {
19689                                break (event, allow_any)
19690                            }
19691                            ElementHandlerOutput::Continue { event, .. } => event,
19692                        }
19693                    }
19694                    (S::WhiteSpace(values, None), event) => {
19695                        let output = <super::FacetType as WithDeserializer>::Deserializer::init(
19696                            reader, event,
19697                        )?;
19698                        match self.handle_white_space(reader, values, output, &mut fallback)? {
19699                            ElementHandlerOutput::Break { event, allow_any } => {
19700                                break (event, allow_any)
19701                            }
19702                            ElementHandlerOutput::Continue { event, .. } => event,
19703                        }
19704                    }
19705                    (S::Pattern(values, None), event) => {
19706                        let output = <super::FacetType as WithDeserializer>::Deserializer::init(
19707                            reader, event,
19708                        )?;
19709                        match self.handle_pattern(reader, values, output, &mut fallback)? {
19710                            ElementHandlerOutput::Break { event, allow_any } => {
19711                                break (event, allow_any)
19712                            }
19713                            ElementHandlerOutput::Continue { event, .. } => event,
19714                        }
19715                    }
19716                    (S::Assertion(values, None), event) => {
19717                        let output =
19718                            <super::AssertionType as WithDeserializer>::Deserializer::init(
19719                                reader, event,
19720                            )?;
19721                        match self.handle_assertion(reader, values, output, &mut fallback)? {
19722                            ElementHandlerOutput::Break { event, allow_any } => {
19723                                break (event, allow_any)
19724                            }
19725                            ElementHandlerOutput::Continue { event, .. } => event,
19726                        }
19727                    }
19728                    (S::ExplicitTimezone(values, None), event) => {
19729                        let output = <super::FacetType as WithDeserializer>::Deserializer::init(
19730                            reader, event,
19731                        )?;
19732                        match self.handle_explicit_timezone(
19733                            reader,
19734                            values,
19735                            output,
19736                            &mut fallback,
19737                        )? {
19738                            ElementHandlerOutput::Break { event, allow_any } => {
19739                                break (event, allow_any)
19740                            }
19741                            ElementHandlerOutput::Continue { event, .. } => event,
19742                        }
19743                    }
19744                    (s @ S::Done__(_), event) => {
19745                        *self.state = s;
19746                        break (DeserializerEvent::Continue(event), false);
19747                    }
19748                    (S::Unknown__, _) => unreachable!(),
19749                }
19750            };
19751            let artifact = if matches!(&*self.state, S::Done__(_)) {
19752                DeserializerArtifact::Data(self.finish(reader)?)
19753            } else {
19754                DeserializerArtifact::Deserializer(self)
19755            };
19756            Ok(DeserializerOutput {
19757                artifact,
19758                event,
19759                allow_any,
19760            })
19761        }
19762        fn finish<R>(self, reader: &R) -> Result<super::Facet, Error>
19763        where
19764            R: DeserializeReader,
19765        {
19766            FacetDeserializer::finish_state(reader, *self.state)
19767        }
19768    }
19769    #[derive(Debug)]
19770    pub struct RestrictionTypeDeserializer {
19771        id: Option<String>,
19772        base: super::QName,
19773        content: Vec<super::RestrictionTypeContent>,
19774        state: Box<RestrictionTypeDeserializerState>,
19775    }
19776    #[derive(Debug)]
19777    enum RestrictionTypeDeserializerState {
19778        Init__,
19779        Next__,
19780        Content__(<super::RestrictionTypeContent as WithDeserializer>::Deserializer),
19781        Unknown__,
19782    }
19783    impl RestrictionTypeDeserializer {
19784        fn from_bytes_start<R>(reader: &R, bytes_start: &BytesStart<'_>) -> Result<Box<Self>, Error>
19785        where
19786            R: DeserializeReader,
19787        {
19788            let mut id: Option<String> = None;
19789            let mut base: Option<super::QName> = None;
19790            for attrib in filter_xmlns_attributes(bytes_start) {
19791                let attrib = attrib?;
19792                if matches!(
19793                    reader.resolve_local_name(attrib.key, &super::NS_XS),
19794                    Some(b"id")
19795                ) {
19796                    reader.read_attrib(&mut id, b"id", &attrib.value)?;
19797                } else if matches!(
19798                    reader.resolve_local_name(attrib.key, &super::NS_XS),
19799                    Some(b"base")
19800                ) {
19801                    reader.read_attrib(&mut base, b"base", &attrib.value)?;
19802                }
19803            }
19804            Ok(Box::new(Self {
19805                id: id,
19806                base: base
19807                    .ok_or_else(|| reader.map_error(ErrorKind::MissingAttribute("base".into())))?,
19808                content: Vec::new(),
19809                state: Box::new(RestrictionTypeDeserializerState::Init__),
19810            }))
19811        }
19812        fn finish_state<R>(
19813            &mut self,
19814            reader: &R,
19815            state: RestrictionTypeDeserializerState,
19816        ) -> Result<(), Error>
19817        where
19818            R: DeserializeReader,
19819        {
19820            if let RestrictionTypeDeserializerState::Content__(deserializer) = state {
19821                self.store_content(deserializer.finish(reader)?)?;
19822            }
19823            Ok(())
19824        }
19825        fn store_content(&mut self, value: super::RestrictionTypeContent) -> Result<(), Error> {
19826            self.content.push(value);
19827            Ok(())
19828        }
19829        fn handle_content<'de, R>(
19830            &mut self,
19831            reader: &R,
19832            output: DeserializerOutput<'de, super::RestrictionTypeContent>,
19833            fallback: &mut Option<RestrictionTypeDeserializerState>,
19834        ) -> Result<ElementHandlerOutput<'de>, Error>
19835        where
19836            R: DeserializeReader,
19837        {
19838            let DeserializerOutput {
19839                artifact,
19840                event,
19841                allow_any,
19842            } = output;
19843            if artifact.is_none() {
19844                *self.state = fallback
19845                    .take()
19846                    .unwrap_or(RestrictionTypeDeserializerState::Next__);
19847                return Ok(ElementHandlerOutput::break_(event, allow_any));
19848            }
19849            if let Some(fallback) = fallback.take() {
19850                self.finish_state(reader, fallback)?;
19851            }
19852            Ok(match artifact {
19853                DeserializerArtifact::None => unreachable!(),
19854                DeserializerArtifact::Data(data) => {
19855                    self.store_content(data)?;
19856                    *self.state = RestrictionTypeDeserializerState::Next__;
19857                    ElementHandlerOutput::from_event(event, allow_any)
19858                }
19859                DeserializerArtifact::Deserializer(deserializer) => {
19860                    let ret = ElementHandlerOutput::from_event(event, allow_any);
19861                    match &ret {
19862                        ElementHandlerOutput::Break { .. } => {
19863                            *self.state = RestrictionTypeDeserializerState::Content__(deserializer);
19864                        }
19865                        ElementHandlerOutput::Continue { .. } => {
19866                            fallback.get_or_insert(RestrictionTypeDeserializerState::Content__(
19867                                deserializer,
19868                            ));
19869                            *self.state = RestrictionTypeDeserializerState::Next__;
19870                        }
19871                    }
19872                    ret
19873                }
19874            })
19875        }
19876    }
19877    impl<'de> Deserializer<'de, super::RestrictionType> for Box<RestrictionTypeDeserializer> {
19878        fn init<R>(reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::RestrictionType>
19879        where
19880            R: DeserializeReader,
19881        {
19882            reader.init_deserializer_from_start_event(
19883                event,
19884                RestrictionTypeDeserializer::from_bytes_start,
19885            )
19886        }
19887        fn next<R>(
19888            mut self,
19889            reader: &R,
19890            event: Event<'de>,
19891        ) -> DeserializerResult<'de, super::RestrictionType>
19892        where
19893            R: DeserializeReader,
19894        {
19895            use RestrictionTypeDeserializerState as S;
19896            let mut event = event;
19897            let mut fallback = None;
19898            let (event, allow_any) = loop {
19899                let state = replace(&mut *self.state, S::Unknown__);
19900                event = match (state, event) {
19901                    (S::Content__(deserializer), event) => {
19902                        let output = deserializer.next(reader, event)?;
19903                        match self.handle_content(reader, output, &mut fallback)? {
19904                            ElementHandlerOutput::Break { event, allow_any } => {
19905                                break (event, allow_any)
19906                            }
19907                            ElementHandlerOutput::Continue { event, .. } => event,
19908                        }
19909                    }
19910                    (_, Event::End(_)) => {
19911                        return Ok(DeserializerOutput {
19912                            artifact: DeserializerArtifact::Data(self.finish(reader)?),
19913                            event: DeserializerEvent::None,
19914                            allow_any: false,
19915                        });
19916                    }
19917                    (state @ (S::Init__ | S::Next__), event) => {
19918                        fallback.get_or_insert(state);
19919                        let output = < super :: RestrictionTypeContent as WithDeserializer > :: Deserializer :: init (reader , event) ? ;
19920                        match self.handle_content(reader, output, &mut fallback)? {
19921                            ElementHandlerOutput::Break { event, allow_any } => {
19922                                break (event, allow_any)
19923                            }
19924                            ElementHandlerOutput::Continue { event, .. } => event,
19925                        }
19926                    }
19927                    (S::Unknown__, _) => unreachable!(),
19928                }
19929            };
19930            let artifact = DeserializerArtifact::Deserializer(self);
19931            Ok(DeserializerOutput {
19932                artifact,
19933                event,
19934                allow_any,
19935            })
19936        }
19937        fn finish<R>(mut self, reader: &R) -> Result<super::RestrictionType, Error>
19938        where
19939            R: DeserializeReader,
19940        {
19941            let state = replace(
19942                &mut *self.state,
19943                RestrictionTypeDeserializerState::Unknown__,
19944            );
19945            self.finish_state(reader, state)?;
19946            Ok(super::RestrictionType {
19947                id: self.id,
19948                base: self.base,
19949                content: self.content,
19950            })
19951        }
19952    }
19953    #[derive(Debug)]
19954    pub struct RestrictionTypeContentDeserializer {
19955        state: Box<RestrictionTypeContentDeserializerState>,
19956    }
19957    #[derive(Debug)]
19958    pub enum RestrictionTypeContentDeserializerState {
19959        Init__,
19960        Annotation(
19961            Option<super::Annotation>,
19962            Option<<super::Annotation as WithDeserializer>::Deserializer>,
19963        ),
19964        OpenContent(
19965            Option<super::OpenContent>,
19966            Option<<super::OpenContent as WithDeserializer>::Deserializer>,
19967        ),
19968        Group(
19969            Option<super::GroupType>,
19970            Option<<super::GroupType as WithDeserializer>::Deserializer>,
19971        ),
19972        All(
19973            Option<super::GroupType>,
19974            Option<<super::GroupType as WithDeserializer>::Deserializer>,
19975        ),
19976        Choice(
19977            Option<super::GroupType>,
19978            Option<<super::GroupType as WithDeserializer>::Deserializer>,
19979        ),
19980        Sequence(
19981            Option<super::GroupType>,
19982            Option<<super::GroupType as WithDeserializer>::Deserializer>,
19983        ),
19984        SimpleType(
19985            Option<super::SimpleBaseType>,
19986            Option<<super::SimpleBaseType as WithDeserializer>::Deserializer>,
19987        ),
19988        Facet(
19989            Option<super::Facet>,
19990            Option<<super::Facet as WithDeserializer>::Deserializer>,
19991        ),
19992        Attribute(
19993            Option<super::AttributeType>,
19994            Option<<super::AttributeType as WithDeserializer>::Deserializer>,
19995        ),
19996        AttributeGroup(
19997            Option<super::AttributeGroupType>,
19998            Option<<super::AttributeGroupType as WithDeserializer>::Deserializer>,
19999        ),
20000        AnyAttribute(
20001            Option<super::AnyAttribute>,
20002            Option<<super::AnyAttribute as WithDeserializer>::Deserializer>,
20003        ),
20004        Assert(
20005            Option<super::AssertionType>,
20006            Option<<super::AssertionType as WithDeserializer>::Deserializer>,
20007        ),
20008        Done__(super::RestrictionTypeContent),
20009        Unknown__,
20010    }
20011    impl RestrictionTypeContentDeserializer {
20012        fn find_suitable<'de, R>(
20013            &mut self,
20014            reader: &R,
20015            event: Event<'de>,
20016            fallback: &mut Option<RestrictionTypeContentDeserializerState>,
20017        ) -> Result<ElementHandlerOutput<'de>, Error>
20018        where
20019            R: DeserializeReader,
20020        {
20021            let (Event::Start(x) | Event::Empty(x)) = &event else {
20022                *self.state = fallback
20023                    .take()
20024                    .unwrap_or(RestrictionTypeContentDeserializerState::Init__);
20025                return Ok(ElementHandlerOutput::return_to_parent(event, true));
20026            };
20027            if matches!(
20028                reader.resolve_local_name(x.name(), &super::NS_XS),
20029                Some(b"annotation")
20030            ) {
20031                let output =
20032                    <super::Annotation as WithDeserializer>::Deserializer::init(reader, event)?;
20033                return self.handle_annotation(reader, Default::default(), output, &mut *fallback);
20034            }
20035            if matches!(
20036                reader.resolve_local_name(x.name(), &super::NS_XS),
20037                Some(b"openContent")
20038            ) {
20039                let output =
20040                    <super::OpenContent as WithDeserializer>::Deserializer::init(reader, event)?;
20041                return self.handle_open_content(
20042                    reader,
20043                    Default::default(),
20044                    output,
20045                    &mut *fallback,
20046                );
20047            }
20048            if matches!(
20049                reader.resolve_local_name(x.name(), &super::NS_XS),
20050                Some(b"group")
20051            ) {
20052                let output =
20053                    <super::GroupType as WithDeserializer>::Deserializer::init(reader, event)?;
20054                return self.handle_group(reader, Default::default(), output, &mut *fallback);
20055            }
20056            if matches!(
20057                reader.resolve_local_name(x.name(), &super::NS_XS),
20058                Some(b"all")
20059            ) {
20060                let output =
20061                    <super::GroupType as WithDeserializer>::Deserializer::init(reader, event)?;
20062                return self.handle_all(reader, Default::default(), output, &mut *fallback);
20063            }
20064            if matches!(
20065                reader.resolve_local_name(x.name(), &super::NS_XS),
20066                Some(b"choice")
20067            ) {
20068                let output =
20069                    <super::GroupType as WithDeserializer>::Deserializer::init(reader, event)?;
20070                return self.handle_choice(reader, Default::default(), output, &mut *fallback);
20071            }
20072            if matches!(
20073                reader.resolve_local_name(x.name(), &super::NS_XS),
20074                Some(b"sequence")
20075            ) {
20076                let output =
20077                    <super::GroupType as WithDeserializer>::Deserializer::init(reader, event)?;
20078                return self.handle_sequence(reader, Default::default(), output, &mut *fallback);
20079            }
20080            if matches!(
20081                reader.resolve_local_name(x.name(), &super::NS_XS),
20082                Some(b"simpleType")
20083            ) {
20084                let output =
20085                    <super::SimpleBaseType as WithDeserializer>::Deserializer::init(reader, event)?;
20086                return self.handle_simple_type(reader, Default::default(), output, &mut *fallback);
20087            }
20088            if matches!(
20089                reader.resolve_local_name(x.name(), &super::NS_XS),
20090                Some(b"attribute")
20091            ) {
20092                let output =
20093                    <super::AttributeType as WithDeserializer>::Deserializer::init(reader, event)?;
20094                return self.handle_attribute(reader, Default::default(), output, &mut *fallback);
20095            }
20096            if matches!(
20097                reader.resolve_local_name(x.name(), &super::NS_XS),
20098                Some(b"attributeGroup")
20099            ) {
20100                let output = <super::AttributeGroupType as WithDeserializer>::Deserializer::init(
20101                    reader, event,
20102                )?;
20103                return self.handle_attribute_group(
20104                    reader,
20105                    Default::default(),
20106                    output,
20107                    &mut *fallback,
20108                );
20109            }
20110            if matches!(
20111                reader.resolve_local_name(x.name(), &super::NS_XS),
20112                Some(b"anyAttribute")
20113            ) {
20114                let output =
20115                    <super::AnyAttribute as WithDeserializer>::Deserializer::init(reader, event)?;
20116                return self.handle_any_attribute(
20117                    reader,
20118                    Default::default(),
20119                    output,
20120                    &mut *fallback,
20121                );
20122            }
20123            if matches!(
20124                reader.resolve_local_name(x.name(), &super::NS_XS),
20125                Some(b"assert")
20126            ) {
20127                let output =
20128                    <super::AssertionType as WithDeserializer>::Deserializer::init(reader, event)?;
20129                return self.handle_assert(reader, Default::default(), output, &mut *fallback);
20130            }
20131            let event = {
20132                let output = <super::Facet as WithDeserializer>::Deserializer::init(reader, event)?;
20133                match self.handle_facet(reader, Default::default(), output, &mut *fallback)? {
20134                    ElementHandlerOutput::Continue { event, .. } => event,
20135                    output => {
20136                        return Ok(output);
20137                    }
20138                }
20139            };
20140            *self.state = fallback
20141                .take()
20142                .unwrap_or(RestrictionTypeContentDeserializerState::Init__);
20143            Ok(ElementHandlerOutput::return_to_parent(event, true))
20144        }
20145        fn finish_state<R>(
20146            reader: &R,
20147            state: RestrictionTypeContentDeserializerState,
20148        ) -> Result<super::RestrictionTypeContent, Error>
20149        where
20150            R: DeserializeReader,
20151        {
20152            use RestrictionTypeContentDeserializerState as S;
20153            match state {
20154                S::Init__ => Err(ErrorKind::MissingContent.into()),
20155                S::Annotation(mut values, deserializer) => {
20156                    if let Some(deserializer) = deserializer {
20157                        let value = deserializer.finish(reader)?;
20158                        RestrictionTypeContentDeserializer::store_annotation(&mut values, value)?;
20159                    }
20160                    Ok(super::RestrictionTypeContent::Annotation(
20161                        values.ok_or_else(|| ErrorKind::MissingElement("annotation".into()))?,
20162                    ))
20163                }
20164                S::OpenContent(mut values, deserializer) => {
20165                    if let Some(deserializer) = deserializer {
20166                        let value = deserializer.finish(reader)?;
20167                        RestrictionTypeContentDeserializer::store_open_content(&mut values, value)?;
20168                    }
20169                    Ok(super::RestrictionTypeContent::OpenContent(
20170                        values.ok_or_else(|| ErrorKind::MissingElement("openContent".into()))?,
20171                    ))
20172                }
20173                S::Group(mut values, deserializer) => {
20174                    if let Some(deserializer) = deserializer {
20175                        let value = deserializer.finish(reader)?;
20176                        RestrictionTypeContentDeserializer::store_group(&mut values, value)?;
20177                    }
20178                    Ok(super::RestrictionTypeContent::Group(values.ok_or_else(
20179                        || ErrorKind::MissingElement("group".into()),
20180                    )?))
20181                }
20182                S::All(mut values, deserializer) => {
20183                    if let Some(deserializer) = deserializer {
20184                        let value = deserializer.finish(reader)?;
20185                        RestrictionTypeContentDeserializer::store_all(&mut values, value)?;
20186                    }
20187                    Ok(super::RestrictionTypeContent::All(
20188                        values.ok_or_else(|| ErrorKind::MissingElement("all".into()))?,
20189                    ))
20190                }
20191                S::Choice(mut values, deserializer) => {
20192                    if let Some(deserializer) = deserializer {
20193                        let value = deserializer.finish(reader)?;
20194                        RestrictionTypeContentDeserializer::store_choice(&mut values, value)?;
20195                    }
20196                    Ok(super::RestrictionTypeContent::Choice(values.ok_or_else(
20197                        || ErrorKind::MissingElement("choice".into()),
20198                    )?))
20199                }
20200                S::Sequence(mut values, deserializer) => {
20201                    if let Some(deserializer) = deserializer {
20202                        let value = deserializer.finish(reader)?;
20203                        RestrictionTypeContentDeserializer::store_sequence(&mut values, value)?;
20204                    }
20205                    Ok(super::RestrictionTypeContent::Sequence(values.ok_or_else(
20206                        || ErrorKind::MissingElement("sequence".into()),
20207                    )?))
20208                }
20209                S::SimpleType(mut values, deserializer) => {
20210                    if let Some(deserializer) = deserializer {
20211                        let value = deserializer.finish(reader)?;
20212                        RestrictionTypeContentDeserializer::store_simple_type(&mut values, value)?;
20213                    }
20214                    Ok(super::RestrictionTypeContent::SimpleType(
20215                        values.ok_or_else(|| ErrorKind::MissingElement("simpleType".into()))?,
20216                    ))
20217                }
20218                S::Facet(mut values, deserializer) => {
20219                    if let Some(deserializer) = deserializer {
20220                        let value = deserializer.finish(reader)?;
20221                        RestrictionTypeContentDeserializer::store_facet(&mut values, value)?;
20222                    }
20223                    Ok(super::RestrictionTypeContent::Facet(values.ok_or_else(
20224                        || ErrorKind::MissingElement("facet".into()),
20225                    )?))
20226                }
20227                S::Attribute(mut values, deserializer) => {
20228                    if let Some(deserializer) = deserializer {
20229                        let value = deserializer.finish(reader)?;
20230                        RestrictionTypeContentDeserializer::store_attribute(&mut values, value)?;
20231                    }
20232                    Ok(super::RestrictionTypeContent::Attribute(
20233                        values.ok_or_else(|| ErrorKind::MissingElement("attribute".into()))?,
20234                    ))
20235                }
20236                S::AttributeGroup(mut values, deserializer) => {
20237                    if let Some(deserializer) = deserializer {
20238                        let value = deserializer.finish(reader)?;
20239                        RestrictionTypeContentDeserializer::store_attribute_group(
20240                            &mut values,
20241                            value,
20242                        )?;
20243                    }
20244                    Ok(super::RestrictionTypeContent::AttributeGroup(
20245                        values.ok_or_else(|| ErrorKind::MissingElement("attributeGroup".into()))?,
20246                    ))
20247                }
20248                S::AnyAttribute(mut values, deserializer) => {
20249                    if let Some(deserializer) = deserializer {
20250                        let value = deserializer.finish(reader)?;
20251                        RestrictionTypeContentDeserializer::store_any_attribute(
20252                            &mut values,
20253                            value,
20254                        )?;
20255                    }
20256                    Ok(super::RestrictionTypeContent::AnyAttribute(
20257                        values.ok_or_else(|| ErrorKind::MissingElement("anyAttribute".into()))?,
20258                    ))
20259                }
20260                S::Assert(mut values, deserializer) => {
20261                    if let Some(deserializer) = deserializer {
20262                        let value = deserializer.finish(reader)?;
20263                        RestrictionTypeContentDeserializer::store_assert(&mut values, value)?;
20264                    }
20265                    Ok(super::RestrictionTypeContent::Assert(values.ok_or_else(
20266                        || ErrorKind::MissingElement("assert".into()),
20267                    )?))
20268                }
20269                S::Done__(data) => Ok(data),
20270                S::Unknown__ => unreachable!(),
20271            }
20272        }
20273        fn store_annotation(
20274            values: &mut Option<super::Annotation>,
20275            value: super::Annotation,
20276        ) -> Result<(), Error> {
20277            if values.is_some() {
20278                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
20279                    b"annotation",
20280                )))?;
20281            }
20282            *values = Some(value);
20283            Ok(())
20284        }
20285        fn store_open_content(
20286            values: &mut Option<super::OpenContent>,
20287            value: super::OpenContent,
20288        ) -> Result<(), Error> {
20289            if values.is_some() {
20290                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
20291                    b"openContent",
20292                )))?;
20293            }
20294            *values = Some(value);
20295            Ok(())
20296        }
20297        fn store_group(
20298            values: &mut Option<super::GroupType>,
20299            value: super::GroupType,
20300        ) -> Result<(), Error> {
20301            if values.is_some() {
20302                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
20303                    b"group",
20304                )))?;
20305            }
20306            *values = Some(value);
20307            Ok(())
20308        }
20309        fn store_all(
20310            values: &mut Option<super::GroupType>,
20311            value: super::GroupType,
20312        ) -> Result<(), Error> {
20313            if values.is_some() {
20314                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(b"all")))?;
20315            }
20316            *values = Some(value);
20317            Ok(())
20318        }
20319        fn store_choice(
20320            values: &mut Option<super::GroupType>,
20321            value: super::GroupType,
20322        ) -> Result<(), Error> {
20323            if values.is_some() {
20324                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
20325                    b"choice",
20326                )))?;
20327            }
20328            *values = Some(value);
20329            Ok(())
20330        }
20331        fn store_sequence(
20332            values: &mut Option<super::GroupType>,
20333            value: super::GroupType,
20334        ) -> Result<(), Error> {
20335            if values.is_some() {
20336                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
20337                    b"sequence",
20338                )))?;
20339            }
20340            *values = Some(value);
20341            Ok(())
20342        }
20343        fn store_simple_type(
20344            values: &mut Option<super::SimpleBaseType>,
20345            value: super::SimpleBaseType,
20346        ) -> Result<(), Error> {
20347            if values.is_some() {
20348                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
20349                    b"simpleType",
20350                )))?;
20351            }
20352            *values = Some(value);
20353            Ok(())
20354        }
20355        fn store_facet(
20356            values: &mut Option<super::Facet>,
20357            value: super::Facet,
20358        ) -> Result<(), Error> {
20359            if values.is_some() {
20360                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
20361                    b"facet",
20362                )))?;
20363            }
20364            *values = Some(value);
20365            Ok(())
20366        }
20367        fn store_attribute(
20368            values: &mut Option<super::AttributeType>,
20369            value: super::AttributeType,
20370        ) -> Result<(), Error> {
20371            if values.is_some() {
20372                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
20373                    b"attribute",
20374                )))?;
20375            }
20376            *values = Some(value);
20377            Ok(())
20378        }
20379        fn store_attribute_group(
20380            values: &mut Option<super::AttributeGroupType>,
20381            value: super::AttributeGroupType,
20382        ) -> Result<(), Error> {
20383            if values.is_some() {
20384                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
20385                    b"attributeGroup",
20386                )))?;
20387            }
20388            *values = Some(value);
20389            Ok(())
20390        }
20391        fn store_any_attribute(
20392            values: &mut Option<super::AnyAttribute>,
20393            value: super::AnyAttribute,
20394        ) -> Result<(), Error> {
20395            if values.is_some() {
20396                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
20397                    b"anyAttribute",
20398                )))?;
20399            }
20400            *values = Some(value);
20401            Ok(())
20402        }
20403        fn store_assert(
20404            values: &mut Option<super::AssertionType>,
20405            value: super::AssertionType,
20406        ) -> Result<(), Error> {
20407            if values.is_some() {
20408                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
20409                    b"assert",
20410                )))?;
20411            }
20412            *values = Some(value);
20413            Ok(())
20414        }
20415        fn handle_annotation<'de, R>(
20416            &mut self,
20417            reader: &R,
20418            mut values: Option<super::Annotation>,
20419            output: DeserializerOutput<'de, super::Annotation>,
20420            fallback: &mut Option<RestrictionTypeContentDeserializerState>,
20421        ) -> Result<ElementHandlerOutput<'de>, Error>
20422        where
20423            R: DeserializeReader,
20424        {
20425            let DeserializerOutput {
20426                artifact,
20427                event,
20428                allow_any,
20429            } = output;
20430            if artifact.is_none() {
20431                *self.state = match fallback.take() {
20432                    None => RestrictionTypeContentDeserializerState::Init__,
20433                    Some(RestrictionTypeContentDeserializerState::Annotation(
20434                        _,
20435                        Some(deserializer),
20436                    )) => RestrictionTypeContentDeserializerState::Annotation(
20437                        values,
20438                        Some(deserializer),
20439                    ),
20440                    _ => unreachable!(),
20441                };
20442                return Ok(ElementHandlerOutput::break_(event, allow_any));
20443            }
20444            match fallback.take() {
20445                None => (),
20446                Some(RestrictionTypeContentDeserializerState::Annotation(
20447                    _,
20448                    Some(deserializer),
20449                )) => {
20450                    let data = deserializer.finish(reader)?;
20451                    RestrictionTypeContentDeserializer::store_annotation(&mut values, data)?;
20452                }
20453                Some(_) => unreachable!(),
20454            }
20455            Ok(match artifact {
20456                DeserializerArtifact::None => unreachable!(),
20457                DeserializerArtifact::Data(data) => {
20458                    RestrictionTypeContentDeserializer::store_annotation(&mut values, data)?;
20459                    let data = RestrictionTypeContentDeserializer::finish_state(
20460                        reader,
20461                        RestrictionTypeContentDeserializerState::Annotation(values, None),
20462                    )?;
20463                    *self.state = RestrictionTypeContentDeserializerState::Done__(data);
20464                    ElementHandlerOutput::Break { event, allow_any }
20465                }
20466                DeserializerArtifact::Deserializer(deserializer) => {
20467                    *self.state = RestrictionTypeContentDeserializerState::Annotation(
20468                        values,
20469                        Some(deserializer),
20470                    );
20471                    ElementHandlerOutput::from_event_end(event, allow_any)
20472                }
20473            })
20474        }
20475        fn handle_open_content<'de, R>(
20476            &mut self,
20477            reader: &R,
20478            mut values: Option<super::OpenContent>,
20479            output: DeserializerOutput<'de, super::OpenContent>,
20480            fallback: &mut Option<RestrictionTypeContentDeserializerState>,
20481        ) -> Result<ElementHandlerOutput<'de>, Error>
20482        where
20483            R: DeserializeReader,
20484        {
20485            let DeserializerOutput {
20486                artifact,
20487                event,
20488                allow_any,
20489            } = output;
20490            if artifact.is_none() {
20491                *self.state = match fallback.take() {
20492                    None => RestrictionTypeContentDeserializerState::Init__,
20493                    Some(RestrictionTypeContentDeserializerState::OpenContent(
20494                        _,
20495                        Some(deserializer),
20496                    )) => RestrictionTypeContentDeserializerState::OpenContent(
20497                        values,
20498                        Some(deserializer),
20499                    ),
20500                    _ => unreachable!(),
20501                };
20502                return Ok(ElementHandlerOutput::break_(event, allow_any));
20503            }
20504            match fallback.take() {
20505                None => (),
20506                Some(RestrictionTypeContentDeserializerState::OpenContent(
20507                    _,
20508                    Some(deserializer),
20509                )) => {
20510                    let data = deserializer.finish(reader)?;
20511                    RestrictionTypeContentDeserializer::store_open_content(&mut values, data)?;
20512                }
20513                Some(_) => unreachable!(),
20514            }
20515            Ok(match artifact {
20516                DeserializerArtifact::None => unreachable!(),
20517                DeserializerArtifact::Data(data) => {
20518                    RestrictionTypeContentDeserializer::store_open_content(&mut values, data)?;
20519                    let data = RestrictionTypeContentDeserializer::finish_state(
20520                        reader,
20521                        RestrictionTypeContentDeserializerState::OpenContent(values, None),
20522                    )?;
20523                    *self.state = RestrictionTypeContentDeserializerState::Done__(data);
20524                    ElementHandlerOutput::Break { event, allow_any }
20525                }
20526                DeserializerArtifact::Deserializer(deserializer) => {
20527                    *self.state = RestrictionTypeContentDeserializerState::OpenContent(
20528                        values,
20529                        Some(deserializer),
20530                    );
20531                    ElementHandlerOutput::from_event_end(event, allow_any)
20532                }
20533            })
20534        }
20535        fn handle_group<'de, R>(
20536            &mut self,
20537            reader: &R,
20538            mut values: Option<super::GroupType>,
20539            output: DeserializerOutput<'de, super::GroupType>,
20540            fallback: &mut Option<RestrictionTypeContentDeserializerState>,
20541        ) -> Result<ElementHandlerOutput<'de>, Error>
20542        where
20543            R: DeserializeReader,
20544        {
20545            let DeserializerOutput {
20546                artifact,
20547                event,
20548                allow_any,
20549            } = output;
20550            if artifact.is_none() {
20551                *self.state = match fallback.take() {
20552                    None => RestrictionTypeContentDeserializerState::Init__,
20553                    Some(RestrictionTypeContentDeserializerState::Group(_, Some(deserializer))) => {
20554                        RestrictionTypeContentDeserializerState::Group(values, Some(deserializer))
20555                    }
20556                    _ => unreachable!(),
20557                };
20558                return Ok(ElementHandlerOutput::break_(event, allow_any));
20559            }
20560            match fallback.take() {
20561                None => (),
20562                Some(RestrictionTypeContentDeserializerState::Group(_, Some(deserializer))) => {
20563                    let data = deserializer.finish(reader)?;
20564                    RestrictionTypeContentDeserializer::store_group(&mut values, data)?;
20565                }
20566                Some(_) => unreachable!(),
20567            }
20568            Ok(match artifact {
20569                DeserializerArtifact::None => unreachable!(),
20570                DeserializerArtifact::Data(data) => {
20571                    RestrictionTypeContentDeserializer::store_group(&mut values, data)?;
20572                    let data = RestrictionTypeContentDeserializer::finish_state(
20573                        reader,
20574                        RestrictionTypeContentDeserializerState::Group(values, None),
20575                    )?;
20576                    *self.state = RestrictionTypeContentDeserializerState::Done__(data);
20577                    ElementHandlerOutput::Break { event, allow_any }
20578                }
20579                DeserializerArtifact::Deserializer(deserializer) => {
20580                    *self.state =
20581                        RestrictionTypeContentDeserializerState::Group(values, Some(deserializer));
20582                    ElementHandlerOutput::from_event_end(event, allow_any)
20583                }
20584            })
20585        }
20586        fn handle_all<'de, R>(
20587            &mut self,
20588            reader: &R,
20589            mut values: Option<super::GroupType>,
20590            output: DeserializerOutput<'de, super::GroupType>,
20591            fallback: &mut Option<RestrictionTypeContentDeserializerState>,
20592        ) -> Result<ElementHandlerOutput<'de>, Error>
20593        where
20594            R: DeserializeReader,
20595        {
20596            let DeserializerOutput {
20597                artifact,
20598                event,
20599                allow_any,
20600            } = output;
20601            if artifact.is_none() {
20602                *self.state = match fallback.take() {
20603                    None => RestrictionTypeContentDeserializerState::Init__,
20604                    Some(RestrictionTypeContentDeserializerState::All(_, Some(deserializer))) => {
20605                        RestrictionTypeContentDeserializerState::All(values, Some(deserializer))
20606                    }
20607                    _ => unreachable!(),
20608                };
20609                return Ok(ElementHandlerOutput::break_(event, allow_any));
20610            }
20611            match fallback.take() {
20612                None => (),
20613                Some(RestrictionTypeContentDeserializerState::All(_, Some(deserializer))) => {
20614                    let data = deserializer.finish(reader)?;
20615                    RestrictionTypeContentDeserializer::store_all(&mut values, data)?;
20616                }
20617                Some(_) => unreachable!(),
20618            }
20619            Ok(match artifact {
20620                DeserializerArtifact::None => unreachable!(),
20621                DeserializerArtifact::Data(data) => {
20622                    RestrictionTypeContentDeserializer::store_all(&mut values, data)?;
20623                    let data = RestrictionTypeContentDeserializer::finish_state(
20624                        reader,
20625                        RestrictionTypeContentDeserializerState::All(values, None),
20626                    )?;
20627                    *self.state = RestrictionTypeContentDeserializerState::Done__(data);
20628                    ElementHandlerOutput::Break { event, allow_any }
20629                }
20630                DeserializerArtifact::Deserializer(deserializer) => {
20631                    *self.state =
20632                        RestrictionTypeContentDeserializerState::All(values, Some(deserializer));
20633                    ElementHandlerOutput::from_event_end(event, allow_any)
20634                }
20635            })
20636        }
20637        fn handle_choice<'de, R>(
20638            &mut self,
20639            reader: &R,
20640            mut values: Option<super::GroupType>,
20641            output: DeserializerOutput<'de, super::GroupType>,
20642            fallback: &mut Option<RestrictionTypeContentDeserializerState>,
20643        ) -> Result<ElementHandlerOutput<'de>, Error>
20644        where
20645            R: DeserializeReader,
20646        {
20647            let DeserializerOutput {
20648                artifact,
20649                event,
20650                allow_any,
20651            } = output;
20652            if artifact.is_none() {
20653                *self.state = match fallback.take() {
20654                    None => RestrictionTypeContentDeserializerState::Init__,
20655                    Some(RestrictionTypeContentDeserializerState::Choice(
20656                        _,
20657                        Some(deserializer),
20658                    )) => {
20659                        RestrictionTypeContentDeserializerState::Choice(values, Some(deserializer))
20660                    }
20661                    _ => unreachable!(),
20662                };
20663                return Ok(ElementHandlerOutput::break_(event, allow_any));
20664            }
20665            match fallback.take() {
20666                None => (),
20667                Some(RestrictionTypeContentDeserializerState::Choice(_, Some(deserializer))) => {
20668                    let data = deserializer.finish(reader)?;
20669                    RestrictionTypeContentDeserializer::store_choice(&mut values, data)?;
20670                }
20671                Some(_) => unreachable!(),
20672            }
20673            Ok(match artifact {
20674                DeserializerArtifact::None => unreachable!(),
20675                DeserializerArtifact::Data(data) => {
20676                    RestrictionTypeContentDeserializer::store_choice(&mut values, data)?;
20677                    let data = RestrictionTypeContentDeserializer::finish_state(
20678                        reader,
20679                        RestrictionTypeContentDeserializerState::Choice(values, None),
20680                    )?;
20681                    *self.state = RestrictionTypeContentDeserializerState::Done__(data);
20682                    ElementHandlerOutput::Break { event, allow_any }
20683                }
20684                DeserializerArtifact::Deserializer(deserializer) => {
20685                    *self.state =
20686                        RestrictionTypeContentDeserializerState::Choice(values, Some(deserializer));
20687                    ElementHandlerOutput::from_event_end(event, allow_any)
20688                }
20689            })
20690        }
20691        fn handle_sequence<'de, R>(
20692            &mut self,
20693            reader: &R,
20694            mut values: Option<super::GroupType>,
20695            output: DeserializerOutput<'de, super::GroupType>,
20696            fallback: &mut Option<RestrictionTypeContentDeserializerState>,
20697        ) -> Result<ElementHandlerOutput<'de>, Error>
20698        where
20699            R: DeserializeReader,
20700        {
20701            let DeserializerOutput {
20702                artifact,
20703                event,
20704                allow_any,
20705            } = output;
20706            if artifact.is_none() {
20707                *self.state = match fallback.take() {
20708                    None => RestrictionTypeContentDeserializerState::Init__,
20709                    Some(RestrictionTypeContentDeserializerState::Sequence(
20710                        _,
20711                        Some(deserializer),
20712                    )) => RestrictionTypeContentDeserializerState::Sequence(
20713                        values,
20714                        Some(deserializer),
20715                    ),
20716                    _ => unreachable!(),
20717                };
20718                return Ok(ElementHandlerOutput::break_(event, allow_any));
20719            }
20720            match fallback.take() {
20721                None => (),
20722                Some(RestrictionTypeContentDeserializerState::Sequence(_, Some(deserializer))) => {
20723                    let data = deserializer.finish(reader)?;
20724                    RestrictionTypeContentDeserializer::store_sequence(&mut values, data)?;
20725                }
20726                Some(_) => unreachable!(),
20727            }
20728            Ok(match artifact {
20729                DeserializerArtifact::None => unreachable!(),
20730                DeserializerArtifact::Data(data) => {
20731                    RestrictionTypeContentDeserializer::store_sequence(&mut values, data)?;
20732                    let data = RestrictionTypeContentDeserializer::finish_state(
20733                        reader,
20734                        RestrictionTypeContentDeserializerState::Sequence(values, None),
20735                    )?;
20736                    *self.state = RestrictionTypeContentDeserializerState::Done__(data);
20737                    ElementHandlerOutput::Break { event, allow_any }
20738                }
20739                DeserializerArtifact::Deserializer(deserializer) => {
20740                    *self.state = RestrictionTypeContentDeserializerState::Sequence(
20741                        values,
20742                        Some(deserializer),
20743                    );
20744                    ElementHandlerOutput::from_event_end(event, allow_any)
20745                }
20746            })
20747        }
20748        fn handle_simple_type<'de, R>(
20749            &mut self,
20750            reader: &R,
20751            mut values: Option<super::SimpleBaseType>,
20752            output: DeserializerOutput<'de, super::SimpleBaseType>,
20753            fallback: &mut Option<RestrictionTypeContentDeserializerState>,
20754        ) -> Result<ElementHandlerOutput<'de>, Error>
20755        where
20756            R: DeserializeReader,
20757        {
20758            let DeserializerOutput {
20759                artifact,
20760                event,
20761                allow_any,
20762            } = output;
20763            if artifact.is_none() {
20764                *self.state = match fallback.take() {
20765                    None => RestrictionTypeContentDeserializerState::Init__,
20766                    Some(RestrictionTypeContentDeserializerState::SimpleType(
20767                        _,
20768                        Some(deserializer),
20769                    )) => RestrictionTypeContentDeserializerState::SimpleType(
20770                        values,
20771                        Some(deserializer),
20772                    ),
20773                    _ => unreachable!(),
20774                };
20775                return Ok(ElementHandlerOutput::break_(event, allow_any));
20776            }
20777            match fallback.take() {
20778                None => (),
20779                Some(RestrictionTypeContentDeserializerState::SimpleType(
20780                    _,
20781                    Some(deserializer),
20782                )) => {
20783                    let data = deserializer.finish(reader)?;
20784                    RestrictionTypeContentDeserializer::store_simple_type(&mut values, data)?;
20785                }
20786                Some(_) => unreachable!(),
20787            }
20788            Ok(match artifact {
20789                DeserializerArtifact::None => unreachable!(),
20790                DeserializerArtifact::Data(data) => {
20791                    RestrictionTypeContentDeserializer::store_simple_type(&mut values, data)?;
20792                    let data = RestrictionTypeContentDeserializer::finish_state(
20793                        reader,
20794                        RestrictionTypeContentDeserializerState::SimpleType(values, None),
20795                    )?;
20796                    *self.state = RestrictionTypeContentDeserializerState::Done__(data);
20797                    ElementHandlerOutput::Break { event, allow_any }
20798                }
20799                DeserializerArtifact::Deserializer(deserializer) => {
20800                    *self.state = RestrictionTypeContentDeserializerState::SimpleType(
20801                        values,
20802                        Some(deserializer),
20803                    );
20804                    ElementHandlerOutput::from_event_end(event, allow_any)
20805                }
20806            })
20807        }
20808        fn handle_facet<'de, R>(
20809            &mut self,
20810            reader: &R,
20811            mut values: Option<super::Facet>,
20812            output: DeserializerOutput<'de, super::Facet>,
20813            fallback: &mut Option<RestrictionTypeContentDeserializerState>,
20814        ) -> Result<ElementHandlerOutput<'de>, Error>
20815        where
20816            R: DeserializeReader,
20817        {
20818            let DeserializerOutput {
20819                artifact,
20820                event,
20821                allow_any,
20822            } = output;
20823            if artifact.is_none() {
20824                *self.state = match fallback.take() {
20825                    None => RestrictionTypeContentDeserializerState::Init__,
20826                    Some(RestrictionTypeContentDeserializerState::Facet(_, Some(deserializer))) => {
20827                        RestrictionTypeContentDeserializerState::Facet(values, Some(deserializer))
20828                    }
20829                    _ => unreachable!(),
20830                };
20831                return Ok(ElementHandlerOutput::break_(event, allow_any));
20832            }
20833            match fallback.take() {
20834                None => (),
20835                Some(RestrictionTypeContentDeserializerState::Facet(_, Some(deserializer))) => {
20836                    let data = deserializer.finish(reader)?;
20837                    RestrictionTypeContentDeserializer::store_facet(&mut values, data)?;
20838                }
20839                Some(_) => unreachable!(),
20840            }
20841            Ok(match artifact {
20842                DeserializerArtifact::None => unreachable!(),
20843                DeserializerArtifact::Data(data) => {
20844                    RestrictionTypeContentDeserializer::store_facet(&mut values, data)?;
20845                    let data = RestrictionTypeContentDeserializer::finish_state(
20846                        reader,
20847                        RestrictionTypeContentDeserializerState::Facet(values, None),
20848                    )?;
20849                    *self.state = RestrictionTypeContentDeserializerState::Done__(data);
20850                    ElementHandlerOutput::Break { event, allow_any }
20851                }
20852                DeserializerArtifact::Deserializer(deserializer) => {
20853                    *self.state =
20854                        RestrictionTypeContentDeserializerState::Facet(values, Some(deserializer));
20855                    ElementHandlerOutput::from_event_end(event, allow_any)
20856                }
20857            })
20858        }
20859        fn handle_attribute<'de, R>(
20860            &mut self,
20861            reader: &R,
20862            mut values: Option<super::AttributeType>,
20863            output: DeserializerOutput<'de, super::AttributeType>,
20864            fallback: &mut Option<RestrictionTypeContentDeserializerState>,
20865        ) -> Result<ElementHandlerOutput<'de>, Error>
20866        where
20867            R: DeserializeReader,
20868        {
20869            let DeserializerOutput {
20870                artifact,
20871                event,
20872                allow_any,
20873            } = output;
20874            if artifact.is_none() {
20875                *self.state = match fallback.take() {
20876                    None => RestrictionTypeContentDeserializerState::Init__,
20877                    Some(RestrictionTypeContentDeserializerState::Attribute(
20878                        _,
20879                        Some(deserializer),
20880                    )) => RestrictionTypeContentDeserializerState::Attribute(
20881                        values,
20882                        Some(deserializer),
20883                    ),
20884                    _ => unreachable!(),
20885                };
20886                return Ok(ElementHandlerOutput::break_(event, allow_any));
20887            }
20888            match fallback.take() {
20889                None => (),
20890                Some(RestrictionTypeContentDeserializerState::Attribute(_, Some(deserializer))) => {
20891                    let data = deserializer.finish(reader)?;
20892                    RestrictionTypeContentDeserializer::store_attribute(&mut values, data)?;
20893                }
20894                Some(_) => unreachable!(),
20895            }
20896            Ok(match artifact {
20897                DeserializerArtifact::None => unreachable!(),
20898                DeserializerArtifact::Data(data) => {
20899                    RestrictionTypeContentDeserializer::store_attribute(&mut values, data)?;
20900                    let data = RestrictionTypeContentDeserializer::finish_state(
20901                        reader,
20902                        RestrictionTypeContentDeserializerState::Attribute(values, None),
20903                    )?;
20904                    *self.state = RestrictionTypeContentDeserializerState::Done__(data);
20905                    ElementHandlerOutput::Break { event, allow_any }
20906                }
20907                DeserializerArtifact::Deserializer(deserializer) => {
20908                    *self.state = RestrictionTypeContentDeserializerState::Attribute(
20909                        values,
20910                        Some(deserializer),
20911                    );
20912                    ElementHandlerOutput::from_event_end(event, allow_any)
20913                }
20914            })
20915        }
20916        fn handle_attribute_group<'de, R>(
20917            &mut self,
20918            reader: &R,
20919            mut values: Option<super::AttributeGroupType>,
20920            output: DeserializerOutput<'de, super::AttributeGroupType>,
20921            fallback: &mut Option<RestrictionTypeContentDeserializerState>,
20922        ) -> Result<ElementHandlerOutput<'de>, Error>
20923        where
20924            R: DeserializeReader,
20925        {
20926            let DeserializerOutput {
20927                artifact,
20928                event,
20929                allow_any,
20930            } = output;
20931            if artifact.is_none() {
20932                *self.state = match fallback.take() {
20933                    None => RestrictionTypeContentDeserializerState::Init__,
20934                    Some(RestrictionTypeContentDeserializerState::AttributeGroup(
20935                        _,
20936                        Some(deserializer),
20937                    )) => RestrictionTypeContentDeserializerState::AttributeGroup(
20938                        values,
20939                        Some(deserializer),
20940                    ),
20941                    _ => unreachable!(),
20942                };
20943                return Ok(ElementHandlerOutput::break_(event, allow_any));
20944            }
20945            match fallback.take() {
20946                None => (),
20947                Some(RestrictionTypeContentDeserializerState::AttributeGroup(
20948                    _,
20949                    Some(deserializer),
20950                )) => {
20951                    let data = deserializer.finish(reader)?;
20952                    RestrictionTypeContentDeserializer::store_attribute_group(&mut values, data)?;
20953                }
20954                Some(_) => unreachable!(),
20955            }
20956            Ok(match artifact {
20957                DeserializerArtifact::None => unreachable!(),
20958                DeserializerArtifact::Data(data) => {
20959                    RestrictionTypeContentDeserializer::store_attribute_group(&mut values, data)?;
20960                    let data = RestrictionTypeContentDeserializer::finish_state(
20961                        reader,
20962                        RestrictionTypeContentDeserializerState::AttributeGroup(values, None),
20963                    )?;
20964                    *self.state = RestrictionTypeContentDeserializerState::Done__(data);
20965                    ElementHandlerOutput::Break { event, allow_any }
20966                }
20967                DeserializerArtifact::Deserializer(deserializer) => {
20968                    *self.state = RestrictionTypeContentDeserializerState::AttributeGroup(
20969                        values,
20970                        Some(deserializer),
20971                    );
20972                    ElementHandlerOutput::from_event_end(event, allow_any)
20973                }
20974            })
20975        }
20976        fn handle_any_attribute<'de, R>(
20977            &mut self,
20978            reader: &R,
20979            mut values: Option<super::AnyAttribute>,
20980            output: DeserializerOutput<'de, super::AnyAttribute>,
20981            fallback: &mut Option<RestrictionTypeContentDeserializerState>,
20982        ) -> Result<ElementHandlerOutput<'de>, Error>
20983        where
20984            R: DeserializeReader,
20985        {
20986            let DeserializerOutput {
20987                artifact,
20988                event,
20989                allow_any,
20990            } = output;
20991            if artifact.is_none() {
20992                *self.state = match fallback.take() {
20993                    None => RestrictionTypeContentDeserializerState::Init__,
20994                    Some(RestrictionTypeContentDeserializerState::AnyAttribute(
20995                        _,
20996                        Some(deserializer),
20997                    )) => RestrictionTypeContentDeserializerState::AnyAttribute(
20998                        values,
20999                        Some(deserializer),
21000                    ),
21001                    _ => unreachable!(),
21002                };
21003                return Ok(ElementHandlerOutput::break_(event, allow_any));
21004            }
21005            match fallback.take() {
21006                None => (),
21007                Some(RestrictionTypeContentDeserializerState::AnyAttribute(
21008                    _,
21009                    Some(deserializer),
21010                )) => {
21011                    let data = deserializer.finish(reader)?;
21012                    RestrictionTypeContentDeserializer::store_any_attribute(&mut values, data)?;
21013                }
21014                Some(_) => unreachable!(),
21015            }
21016            Ok(match artifact {
21017                DeserializerArtifact::None => unreachable!(),
21018                DeserializerArtifact::Data(data) => {
21019                    RestrictionTypeContentDeserializer::store_any_attribute(&mut values, data)?;
21020                    let data = RestrictionTypeContentDeserializer::finish_state(
21021                        reader,
21022                        RestrictionTypeContentDeserializerState::AnyAttribute(values, None),
21023                    )?;
21024                    *self.state = RestrictionTypeContentDeserializerState::Done__(data);
21025                    ElementHandlerOutput::Break { event, allow_any }
21026                }
21027                DeserializerArtifact::Deserializer(deserializer) => {
21028                    *self.state = RestrictionTypeContentDeserializerState::AnyAttribute(
21029                        values,
21030                        Some(deserializer),
21031                    );
21032                    ElementHandlerOutput::from_event_end(event, allow_any)
21033                }
21034            })
21035        }
21036        fn handle_assert<'de, R>(
21037            &mut self,
21038            reader: &R,
21039            mut values: Option<super::AssertionType>,
21040            output: DeserializerOutput<'de, super::AssertionType>,
21041            fallback: &mut Option<RestrictionTypeContentDeserializerState>,
21042        ) -> Result<ElementHandlerOutput<'de>, Error>
21043        where
21044            R: DeserializeReader,
21045        {
21046            let DeserializerOutput {
21047                artifact,
21048                event,
21049                allow_any,
21050            } = output;
21051            if artifact.is_none() {
21052                *self.state = match fallback.take() {
21053                    None => RestrictionTypeContentDeserializerState::Init__,
21054                    Some(RestrictionTypeContentDeserializerState::Assert(
21055                        _,
21056                        Some(deserializer),
21057                    )) => {
21058                        RestrictionTypeContentDeserializerState::Assert(values, Some(deserializer))
21059                    }
21060                    _ => unreachable!(),
21061                };
21062                return Ok(ElementHandlerOutput::break_(event, allow_any));
21063            }
21064            match fallback.take() {
21065                None => (),
21066                Some(RestrictionTypeContentDeserializerState::Assert(_, Some(deserializer))) => {
21067                    let data = deserializer.finish(reader)?;
21068                    RestrictionTypeContentDeserializer::store_assert(&mut values, data)?;
21069                }
21070                Some(_) => unreachable!(),
21071            }
21072            Ok(match artifact {
21073                DeserializerArtifact::None => unreachable!(),
21074                DeserializerArtifact::Data(data) => {
21075                    RestrictionTypeContentDeserializer::store_assert(&mut values, data)?;
21076                    let data = RestrictionTypeContentDeserializer::finish_state(
21077                        reader,
21078                        RestrictionTypeContentDeserializerState::Assert(values, None),
21079                    )?;
21080                    *self.state = RestrictionTypeContentDeserializerState::Done__(data);
21081                    ElementHandlerOutput::Break { event, allow_any }
21082                }
21083                DeserializerArtifact::Deserializer(deserializer) => {
21084                    *self.state =
21085                        RestrictionTypeContentDeserializerState::Assert(values, Some(deserializer));
21086                    ElementHandlerOutput::from_event_end(event, allow_any)
21087                }
21088            })
21089        }
21090    }
21091    impl<'de> Deserializer<'de, super::RestrictionTypeContent>
21092        for Box<RestrictionTypeContentDeserializer>
21093    {
21094        fn init<R>(
21095            reader: &R,
21096            event: Event<'de>,
21097        ) -> DeserializerResult<'de, super::RestrictionTypeContent>
21098        where
21099            R: DeserializeReader,
21100        {
21101            let deserializer = Box::new(RestrictionTypeContentDeserializer {
21102                state: Box::new(RestrictionTypeContentDeserializerState::Init__),
21103            });
21104            let mut output = deserializer.next(reader, event)?;
21105            output.artifact = match output.artifact {
21106                DeserializerArtifact::Deserializer(x)
21107                    if matches!(&*x.state, RestrictionTypeContentDeserializerState::Init__) =>
21108                {
21109                    DeserializerArtifact::None
21110                }
21111                artifact => artifact,
21112            };
21113            Ok(output)
21114        }
21115        fn next<R>(
21116            mut self,
21117            reader: &R,
21118            event: Event<'de>,
21119        ) -> DeserializerResult<'de, super::RestrictionTypeContent>
21120        where
21121            R: DeserializeReader,
21122        {
21123            use RestrictionTypeContentDeserializerState as S;
21124            let mut event = event;
21125            let mut fallback = None;
21126            let (event, allow_any) = loop {
21127                let state = replace(&mut *self.state, S::Unknown__);
21128                event = match (state, event) {
21129                    (S::Annotation(values, Some(deserializer)), event) => {
21130                        let output = deserializer.next(reader, event)?;
21131                        match self.handle_annotation(reader, values, output, &mut fallback)? {
21132                            ElementHandlerOutput::Break { event, allow_any } => {
21133                                break (event, allow_any)
21134                            }
21135                            ElementHandlerOutput::Continue { event, .. } => event,
21136                        }
21137                    }
21138                    (S::OpenContent(values, Some(deserializer)), event) => {
21139                        let output = deserializer.next(reader, event)?;
21140                        match self.handle_open_content(reader, values, output, &mut fallback)? {
21141                            ElementHandlerOutput::Break { event, allow_any } => {
21142                                break (event, allow_any)
21143                            }
21144                            ElementHandlerOutput::Continue { event, .. } => event,
21145                        }
21146                    }
21147                    (S::Group(values, Some(deserializer)), event) => {
21148                        let output = deserializer.next(reader, event)?;
21149                        match self.handle_group(reader, values, output, &mut fallback)? {
21150                            ElementHandlerOutput::Break { event, allow_any } => {
21151                                break (event, allow_any)
21152                            }
21153                            ElementHandlerOutput::Continue { event, .. } => event,
21154                        }
21155                    }
21156                    (S::All(values, Some(deserializer)), event) => {
21157                        let output = deserializer.next(reader, event)?;
21158                        match self.handle_all(reader, values, output, &mut fallback)? {
21159                            ElementHandlerOutput::Break { event, allow_any } => {
21160                                break (event, allow_any)
21161                            }
21162                            ElementHandlerOutput::Continue { event, .. } => event,
21163                        }
21164                    }
21165                    (S::Choice(values, Some(deserializer)), event) => {
21166                        let output = deserializer.next(reader, event)?;
21167                        match self.handle_choice(reader, 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::Sequence(values, Some(deserializer)), event) => {
21175                        let output = deserializer.next(reader, event)?;
21176                        match self.handle_sequence(reader, values, output, &mut fallback)? {
21177                            ElementHandlerOutput::Break { event, allow_any } => {
21178                                break (event, allow_any)
21179                            }
21180                            ElementHandlerOutput::Continue { event, .. } => event,
21181                        }
21182                    }
21183                    (S::SimpleType(values, Some(deserializer)), event) => {
21184                        let output = deserializer.next(reader, event)?;
21185                        match self.handle_simple_type(reader, values, output, &mut fallback)? {
21186                            ElementHandlerOutput::Break { event, allow_any } => {
21187                                break (event, allow_any)
21188                            }
21189                            ElementHandlerOutput::Continue { event, .. } => event,
21190                        }
21191                    }
21192                    (S::Facet(values, Some(deserializer)), event) => {
21193                        let output = deserializer.next(reader, event)?;
21194                        match self.handle_facet(reader, values, output, &mut fallback)? {
21195                            ElementHandlerOutput::Break { event, allow_any } => {
21196                                break (event, allow_any)
21197                            }
21198                            ElementHandlerOutput::Continue { event, .. } => event,
21199                        }
21200                    }
21201                    (S::Attribute(values, Some(deserializer)), event) => {
21202                        let output = deserializer.next(reader, event)?;
21203                        match self.handle_attribute(reader, values, output, &mut fallback)? {
21204                            ElementHandlerOutput::Break { event, allow_any } => {
21205                                break (event, allow_any)
21206                            }
21207                            ElementHandlerOutput::Continue { event, .. } => event,
21208                        }
21209                    }
21210                    (S::AttributeGroup(values, Some(deserializer)), event) => {
21211                        let output = deserializer.next(reader, event)?;
21212                        match self.handle_attribute_group(reader, values, output, &mut fallback)? {
21213                            ElementHandlerOutput::Break { event, allow_any } => {
21214                                break (event, allow_any)
21215                            }
21216                            ElementHandlerOutput::Continue { event, .. } => event,
21217                        }
21218                    }
21219                    (S::AnyAttribute(values, Some(deserializer)), event) => {
21220                        let output = deserializer.next(reader, event)?;
21221                        match self.handle_any_attribute(reader, values, output, &mut fallback)? {
21222                            ElementHandlerOutput::Break { event, allow_any } => {
21223                                break (event, allow_any)
21224                            }
21225                            ElementHandlerOutput::Continue { event, .. } => event,
21226                        }
21227                    }
21228                    (S::Assert(values, Some(deserializer)), event) => {
21229                        let output = deserializer.next(reader, event)?;
21230                        match self.handle_assert(reader, values, output, &mut fallback)? {
21231                            ElementHandlerOutput::Break { event, allow_any } => {
21232                                break (event, allow_any)
21233                            }
21234                            ElementHandlerOutput::Continue { event, .. } => event,
21235                        }
21236                    }
21237                    (state, event @ Event::End(_)) => {
21238                        return Ok(DeserializerOutput {
21239                            artifact: DeserializerArtifact::Data(
21240                                RestrictionTypeContentDeserializer::finish_state(reader, state)?,
21241                            ),
21242                            event: DeserializerEvent::Continue(event),
21243                            allow_any: false,
21244                        });
21245                    }
21246                    (S::Init__, event) => match self.find_suitable(reader, event, &mut fallback)? {
21247                        ElementHandlerOutput::Break { event, allow_any } => {
21248                            break (event, allow_any)
21249                        }
21250                        ElementHandlerOutput::Continue { event, .. } => event,
21251                    },
21252                    (S::Annotation(values, None), event) => {
21253                        let output = <super::Annotation as WithDeserializer>::Deserializer::init(
21254                            reader, event,
21255                        )?;
21256                        match self.handle_annotation(reader, values, output, &mut fallback)? {
21257                            ElementHandlerOutput::Break { event, allow_any } => {
21258                                break (event, allow_any)
21259                            }
21260                            ElementHandlerOutput::Continue { event, .. } => event,
21261                        }
21262                    }
21263                    (S::OpenContent(values, None), event) => {
21264                        let output = <super::OpenContent as WithDeserializer>::Deserializer::init(
21265                            reader, event,
21266                        )?;
21267                        match self.handle_open_content(reader, values, output, &mut fallback)? {
21268                            ElementHandlerOutput::Break { event, allow_any } => {
21269                                break (event, allow_any)
21270                            }
21271                            ElementHandlerOutput::Continue { event, .. } => event,
21272                        }
21273                    }
21274                    (S::Group(values, None), event) => {
21275                        let output = <super::GroupType as WithDeserializer>::Deserializer::init(
21276                            reader, event,
21277                        )?;
21278                        match self.handle_group(reader, values, output, &mut fallback)? {
21279                            ElementHandlerOutput::Break { event, allow_any } => {
21280                                break (event, allow_any)
21281                            }
21282                            ElementHandlerOutput::Continue { event, .. } => event,
21283                        }
21284                    }
21285                    (S::All(values, None), event) => {
21286                        let output = <super::GroupType as WithDeserializer>::Deserializer::init(
21287                            reader, event,
21288                        )?;
21289                        match self.handle_all(reader, values, output, &mut fallback)? {
21290                            ElementHandlerOutput::Break { event, allow_any } => {
21291                                break (event, allow_any)
21292                            }
21293                            ElementHandlerOutput::Continue { event, .. } => event,
21294                        }
21295                    }
21296                    (S::Choice(values, None), event) => {
21297                        let output = <super::GroupType as WithDeserializer>::Deserializer::init(
21298                            reader, event,
21299                        )?;
21300                        match self.handle_choice(reader, values, output, &mut fallback)? {
21301                            ElementHandlerOutput::Break { event, allow_any } => {
21302                                break (event, allow_any)
21303                            }
21304                            ElementHandlerOutput::Continue { event, .. } => event,
21305                        }
21306                    }
21307                    (S::Sequence(values, None), event) => {
21308                        let output = <super::GroupType as WithDeserializer>::Deserializer::init(
21309                            reader, event,
21310                        )?;
21311                        match self.handle_sequence(reader, values, output, &mut fallback)? {
21312                            ElementHandlerOutput::Break { event, allow_any } => {
21313                                break (event, allow_any)
21314                            }
21315                            ElementHandlerOutput::Continue { event, .. } => event,
21316                        }
21317                    }
21318                    (S::SimpleType(values, None), event) => {
21319                        let output =
21320                            <super::SimpleBaseType as WithDeserializer>::Deserializer::init(
21321                                reader, event,
21322                            )?;
21323                        match self.handle_simple_type(reader, values, output, &mut fallback)? {
21324                            ElementHandlerOutput::Break { event, allow_any } => {
21325                                break (event, allow_any)
21326                            }
21327                            ElementHandlerOutput::Continue { event, .. } => event,
21328                        }
21329                    }
21330                    (S::Facet(values, None), event) => {
21331                        let output =
21332                            <super::Facet as WithDeserializer>::Deserializer::init(reader, event)?;
21333                        match self.handle_facet(reader, values, output, &mut fallback)? {
21334                            ElementHandlerOutput::Break { event, allow_any } => {
21335                                break (event, allow_any)
21336                            }
21337                            ElementHandlerOutput::Continue { event, .. } => event,
21338                        }
21339                    }
21340                    (S::Attribute(values, None), event) => {
21341                        let output =
21342                            <super::AttributeType as WithDeserializer>::Deserializer::init(
21343                                reader, event,
21344                            )?;
21345                        match self.handle_attribute(reader, values, output, &mut fallback)? {
21346                            ElementHandlerOutput::Break { event, allow_any } => {
21347                                break (event, allow_any)
21348                            }
21349                            ElementHandlerOutput::Continue { event, .. } => event,
21350                        }
21351                    }
21352                    (S::AttributeGroup(values, None), event) => {
21353                        let output =
21354                            <super::AttributeGroupType as WithDeserializer>::Deserializer::init(
21355                                reader, event,
21356                            )?;
21357                        match self.handle_attribute_group(reader, values, output, &mut fallback)? {
21358                            ElementHandlerOutput::Break { event, allow_any } => {
21359                                break (event, allow_any)
21360                            }
21361                            ElementHandlerOutput::Continue { event, .. } => event,
21362                        }
21363                    }
21364                    (S::AnyAttribute(values, None), event) => {
21365                        let output = <super::AnyAttribute as WithDeserializer>::Deserializer::init(
21366                            reader, event,
21367                        )?;
21368                        match self.handle_any_attribute(reader, values, output, &mut fallback)? {
21369                            ElementHandlerOutput::Break { event, allow_any } => {
21370                                break (event, allow_any)
21371                            }
21372                            ElementHandlerOutput::Continue { event, .. } => event,
21373                        }
21374                    }
21375                    (S::Assert(values, None), event) => {
21376                        let output =
21377                            <super::AssertionType as WithDeserializer>::Deserializer::init(
21378                                reader, event,
21379                            )?;
21380                        match self.handle_assert(reader, values, output, &mut fallback)? {
21381                            ElementHandlerOutput::Break { event, allow_any } => {
21382                                break (event, allow_any)
21383                            }
21384                            ElementHandlerOutput::Continue { event, .. } => event,
21385                        }
21386                    }
21387                    (s @ S::Done__(_), event) => {
21388                        *self.state = s;
21389                        break (DeserializerEvent::Continue(event), false);
21390                    }
21391                    (S::Unknown__, _) => unreachable!(),
21392                }
21393            };
21394            let artifact = if matches!(&*self.state, S::Done__(_)) {
21395                DeserializerArtifact::Data(self.finish(reader)?)
21396            } else {
21397                DeserializerArtifact::Deserializer(self)
21398            };
21399            Ok(DeserializerOutput {
21400                artifact,
21401                event,
21402                allow_any,
21403            })
21404        }
21405        fn finish<R>(self, reader: &R) -> Result<super::RestrictionTypeContent, Error>
21406        where
21407            R: DeserializeReader,
21408        {
21409            RestrictionTypeContentDeserializer::finish_state(reader, *self.state)
21410        }
21411    }
21412    #[derive(Debug)]
21413    pub struct ExtensionTypeDeserializer {
21414        id: Option<String>,
21415        base: super::QName,
21416        content: Vec<super::ExtensionTypeContent>,
21417        state: Box<ExtensionTypeDeserializerState>,
21418    }
21419    #[derive(Debug)]
21420    enum ExtensionTypeDeserializerState {
21421        Init__,
21422        Next__,
21423        Content__(<super::ExtensionTypeContent as WithDeserializer>::Deserializer),
21424        Unknown__,
21425    }
21426    impl ExtensionTypeDeserializer {
21427        fn from_bytes_start<R>(reader: &R, bytes_start: &BytesStart<'_>) -> Result<Box<Self>, Error>
21428        where
21429            R: DeserializeReader,
21430        {
21431            let mut id: Option<String> = None;
21432            let mut base: Option<super::QName> = None;
21433            for attrib in filter_xmlns_attributes(bytes_start) {
21434                let attrib = attrib?;
21435                if matches!(
21436                    reader.resolve_local_name(attrib.key, &super::NS_XS),
21437                    Some(b"id")
21438                ) {
21439                    reader.read_attrib(&mut id, b"id", &attrib.value)?;
21440                } else if matches!(
21441                    reader.resolve_local_name(attrib.key, &super::NS_XS),
21442                    Some(b"base")
21443                ) {
21444                    reader.read_attrib(&mut base, b"base", &attrib.value)?;
21445                }
21446            }
21447            Ok(Box::new(Self {
21448                id: id,
21449                base: base
21450                    .ok_or_else(|| reader.map_error(ErrorKind::MissingAttribute("base".into())))?,
21451                content: Vec::new(),
21452                state: Box::new(ExtensionTypeDeserializerState::Init__),
21453            }))
21454        }
21455        fn finish_state<R>(
21456            &mut self,
21457            reader: &R,
21458            state: ExtensionTypeDeserializerState,
21459        ) -> Result<(), Error>
21460        where
21461            R: DeserializeReader,
21462        {
21463            if let ExtensionTypeDeserializerState::Content__(deserializer) = state {
21464                self.store_content(deserializer.finish(reader)?)?;
21465            }
21466            Ok(())
21467        }
21468        fn store_content(&mut self, value: super::ExtensionTypeContent) -> Result<(), Error> {
21469            self.content.push(value);
21470            Ok(())
21471        }
21472        fn handle_content<'de, R>(
21473            &mut self,
21474            reader: &R,
21475            output: DeserializerOutput<'de, super::ExtensionTypeContent>,
21476            fallback: &mut Option<ExtensionTypeDeserializerState>,
21477        ) -> Result<ElementHandlerOutput<'de>, Error>
21478        where
21479            R: DeserializeReader,
21480        {
21481            let DeserializerOutput {
21482                artifact,
21483                event,
21484                allow_any,
21485            } = output;
21486            if artifact.is_none() {
21487                *self.state = fallback
21488                    .take()
21489                    .unwrap_or(ExtensionTypeDeserializerState::Next__);
21490                return Ok(ElementHandlerOutput::break_(event, allow_any));
21491            }
21492            if let Some(fallback) = fallback.take() {
21493                self.finish_state(reader, fallback)?;
21494            }
21495            Ok(match artifact {
21496                DeserializerArtifact::None => unreachable!(),
21497                DeserializerArtifact::Data(data) => {
21498                    self.store_content(data)?;
21499                    *self.state = ExtensionTypeDeserializerState::Next__;
21500                    ElementHandlerOutput::from_event(event, allow_any)
21501                }
21502                DeserializerArtifact::Deserializer(deserializer) => {
21503                    let ret = ElementHandlerOutput::from_event(event, allow_any);
21504                    match &ret {
21505                        ElementHandlerOutput::Break { .. } => {
21506                            *self.state = ExtensionTypeDeserializerState::Content__(deserializer);
21507                        }
21508                        ElementHandlerOutput::Continue { .. } => {
21509                            fallback.get_or_insert(ExtensionTypeDeserializerState::Content__(
21510                                deserializer,
21511                            ));
21512                            *self.state = ExtensionTypeDeserializerState::Next__;
21513                        }
21514                    }
21515                    ret
21516                }
21517            })
21518        }
21519    }
21520    impl<'de> Deserializer<'de, super::ExtensionType> for Box<ExtensionTypeDeserializer> {
21521        fn init<R>(reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::ExtensionType>
21522        where
21523            R: DeserializeReader,
21524        {
21525            reader.init_deserializer_from_start_event(
21526                event,
21527                ExtensionTypeDeserializer::from_bytes_start,
21528            )
21529        }
21530        fn next<R>(
21531            mut self,
21532            reader: &R,
21533            event: Event<'de>,
21534        ) -> DeserializerResult<'de, super::ExtensionType>
21535        where
21536            R: DeserializeReader,
21537        {
21538            use ExtensionTypeDeserializerState as S;
21539            let mut event = event;
21540            let mut fallback = None;
21541            let (event, allow_any) = loop {
21542                let state = replace(&mut *self.state, S::Unknown__);
21543                event = match (state, event) {
21544                    (S::Content__(deserializer), event) => {
21545                        let output = deserializer.next(reader, event)?;
21546                        match self.handle_content(reader, output, &mut fallback)? {
21547                            ElementHandlerOutput::Break { event, allow_any } => {
21548                                break (event, allow_any)
21549                            }
21550                            ElementHandlerOutput::Continue { event, .. } => event,
21551                        }
21552                    }
21553                    (_, Event::End(_)) => {
21554                        return Ok(DeserializerOutput {
21555                            artifact: DeserializerArtifact::Data(self.finish(reader)?),
21556                            event: DeserializerEvent::None,
21557                            allow_any: false,
21558                        });
21559                    }
21560                    (state @ (S::Init__ | S::Next__), event) => {
21561                        fallback.get_or_insert(state);
21562                        let output =
21563                            <super::ExtensionTypeContent as WithDeserializer>::Deserializer::init(
21564                                reader, event,
21565                            )?;
21566                        match self.handle_content(reader, output, &mut fallback)? {
21567                            ElementHandlerOutput::Break { event, allow_any } => {
21568                                break (event, allow_any)
21569                            }
21570                            ElementHandlerOutput::Continue { event, .. } => event,
21571                        }
21572                    }
21573                    (S::Unknown__, _) => unreachable!(),
21574                }
21575            };
21576            let artifact = DeserializerArtifact::Deserializer(self);
21577            Ok(DeserializerOutput {
21578                artifact,
21579                event,
21580                allow_any,
21581            })
21582        }
21583        fn finish<R>(mut self, reader: &R) -> Result<super::ExtensionType, Error>
21584        where
21585            R: DeserializeReader,
21586        {
21587            let state = replace(&mut *self.state, ExtensionTypeDeserializerState::Unknown__);
21588            self.finish_state(reader, state)?;
21589            Ok(super::ExtensionType {
21590                id: self.id,
21591                base: self.base,
21592                content: self.content,
21593            })
21594        }
21595    }
21596    #[derive(Debug)]
21597    pub struct ExtensionTypeContentDeserializer {
21598        state: Box<ExtensionTypeContentDeserializerState>,
21599    }
21600    #[derive(Debug)]
21601    pub enum ExtensionTypeContentDeserializerState {
21602        Init__,
21603        Annotation(
21604            Option<super::Annotation>,
21605            Option<<super::Annotation as WithDeserializer>::Deserializer>,
21606        ),
21607        OpenContent(
21608            Option<super::OpenContent>,
21609            Option<<super::OpenContent as WithDeserializer>::Deserializer>,
21610        ),
21611        Group(
21612            Option<super::GroupType>,
21613            Option<<super::GroupType as WithDeserializer>::Deserializer>,
21614        ),
21615        All(
21616            Option<super::GroupType>,
21617            Option<<super::GroupType as WithDeserializer>::Deserializer>,
21618        ),
21619        Choice(
21620            Option<super::GroupType>,
21621            Option<<super::GroupType as WithDeserializer>::Deserializer>,
21622        ),
21623        Sequence(
21624            Option<super::GroupType>,
21625            Option<<super::GroupType as WithDeserializer>::Deserializer>,
21626        ),
21627        Attribute(
21628            Option<super::AttributeType>,
21629            Option<<super::AttributeType as WithDeserializer>::Deserializer>,
21630        ),
21631        AttributeGroup(
21632            Option<super::AttributeGroupType>,
21633            Option<<super::AttributeGroupType as WithDeserializer>::Deserializer>,
21634        ),
21635        AnyAttribute(
21636            Option<super::AnyAttribute>,
21637            Option<<super::AnyAttribute as WithDeserializer>::Deserializer>,
21638        ),
21639        Assert(
21640            Option<super::AssertionType>,
21641            Option<<super::AssertionType as WithDeserializer>::Deserializer>,
21642        ),
21643        Done__(super::ExtensionTypeContent),
21644        Unknown__,
21645    }
21646    impl ExtensionTypeContentDeserializer {
21647        fn find_suitable<'de, R>(
21648            &mut self,
21649            reader: &R,
21650            event: Event<'de>,
21651            fallback: &mut Option<ExtensionTypeContentDeserializerState>,
21652        ) -> Result<ElementHandlerOutput<'de>, Error>
21653        where
21654            R: DeserializeReader,
21655        {
21656            let (Event::Start(x) | Event::Empty(x)) = &event else {
21657                *self.state = fallback
21658                    .take()
21659                    .unwrap_or(ExtensionTypeContentDeserializerState::Init__);
21660                return Ok(ElementHandlerOutput::return_to_parent(event, false));
21661            };
21662            if matches!(
21663                reader.resolve_local_name(x.name(), &super::NS_XS),
21664                Some(b"annotation")
21665            ) {
21666                let output =
21667                    <super::Annotation as WithDeserializer>::Deserializer::init(reader, event)?;
21668                return self.handle_annotation(reader, Default::default(), output, &mut *fallback);
21669            }
21670            if matches!(
21671                reader.resolve_local_name(x.name(), &super::NS_XS),
21672                Some(b"openContent")
21673            ) {
21674                let output =
21675                    <super::OpenContent as WithDeserializer>::Deserializer::init(reader, event)?;
21676                return self.handle_open_content(
21677                    reader,
21678                    Default::default(),
21679                    output,
21680                    &mut *fallback,
21681                );
21682            }
21683            if matches!(
21684                reader.resolve_local_name(x.name(), &super::NS_XS),
21685                Some(b"group")
21686            ) {
21687                let output =
21688                    <super::GroupType as WithDeserializer>::Deserializer::init(reader, event)?;
21689                return self.handle_group(reader, Default::default(), output, &mut *fallback);
21690            }
21691            if matches!(
21692                reader.resolve_local_name(x.name(), &super::NS_XS),
21693                Some(b"all")
21694            ) {
21695                let output =
21696                    <super::GroupType as WithDeserializer>::Deserializer::init(reader, event)?;
21697                return self.handle_all(reader, Default::default(), output, &mut *fallback);
21698            }
21699            if matches!(
21700                reader.resolve_local_name(x.name(), &super::NS_XS),
21701                Some(b"choice")
21702            ) {
21703                let output =
21704                    <super::GroupType as WithDeserializer>::Deserializer::init(reader, event)?;
21705                return self.handle_choice(reader, Default::default(), output, &mut *fallback);
21706            }
21707            if matches!(
21708                reader.resolve_local_name(x.name(), &super::NS_XS),
21709                Some(b"sequence")
21710            ) {
21711                let output =
21712                    <super::GroupType as WithDeserializer>::Deserializer::init(reader, event)?;
21713                return self.handle_sequence(reader, Default::default(), output, &mut *fallback);
21714            }
21715            if matches!(
21716                reader.resolve_local_name(x.name(), &super::NS_XS),
21717                Some(b"attribute")
21718            ) {
21719                let output =
21720                    <super::AttributeType as WithDeserializer>::Deserializer::init(reader, event)?;
21721                return self.handle_attribute(reader, Default::default(), output, &mut *fallback);
21722            }
21723            if matches!(
21724                reader.resolve_local_name(x.name(), &super::NS_XS),
21725                Some(b"attributeGroup")
21726            ) {
21727                let output = <super::AttributeGroupType as WithDeserializer>::Deserializer::init(
21728                    reader, event,
21729                )?;
21730                return self.handle_attribute_group(
21731                    reader,
21732                    Default::default(),
21733                    output,
21734                    &mut *fallback,
21735                );
21736            }
21737            if matches!(
21738                reader.resolve_local_name(x.name(), &super::NS_XS),
21739                Some(b"anyAttribute")
21740            ) {
21741                let output =
21742                    <super::AnyAttribute as WithDeserializer>::Deserializer::init(reader, event)?;
21743                return self.handle_any_attribute(
21744                    reader,
21745                    Default::default(),
21746                    output,
21747                    &mut *fallback,
21748                );
21749            }
21750            if matches!(
21751                reader.resolve_local_name(x.name(), &super::NS_XS),
21752                Some(b"assert")
21753            ) {
21754                let output =
21755                    <super::AssertionType as WithDeserializer>::Deserializer::init(reader, event)?;
21756                return self.handle_assert(reader, Default::default(), output, &mut *fallback);
21757            }
21758            *self.state = fallback
21759                .take()
21760                .unwrap_or(ExtensionTypeContentDeserializerState::Init__);
21761            Ok(ElementHandlerOutput::return_to_parent(event, false))
21762        }
21763        fn finish_state<R>(
21764            reader: &R,
21765            state: ExtensionTypeContentDeserializerState,
21766        ) -> Result<super::ExtensionTypeContent, Error>
21767        where
21768            R: DeserializeReader,
21769        {
21770            use ExtensionTypeContentDeserializerState as S;
21771            match state {
21772                S::Init__ => Err(ErrorKind::MissingContent.into()),
21773                S::Annotation(mut values, deserializer) => {
21774                    if let Some(deserializer) = deserializer {
21775                        let value = deserializer.finish(reader)?;
21776                        ExtensionTypeContentDeserializer::store_annotation(&mut values, value)?;
21777                    }
21778                    Ok(super::ExtensionTypeContent::Annotation(values.ok_or_else(
21779                        || ErrorKind::MissingElement("annotation".into()),
21780                    )?))
21781                }
21782                S::OpenContent(mut values, deserializer) => {
21783                    if let Some(deserializer) = deserializer {
21784                        let value = deserializer.finish(reader)?;
21785                        ExtensionTypeContentDeserializer::store_open_content(&mut values, value)?;
21786                    }
21787                    Ok(super::ExtensionTypeContent::OpenContent(
21788                        values.ok_or_else(|| ErrorKind::MissingElement("openContent".into()))?,
21789                    ))
21790                }
21791                S::Group(mut values, deserializer) => {
21792                    if let Some(deserializer) = deserializer {
21793                        let value = deserializer.finish(reader)?;
21794                        ExtensionTypeContentDeserializer::store_group(&mut values, value)?;
21795                    }
21796                    Ok(super::ExtensionTypeContent::Group(values.ok_or_else(
21797                        || ErrorKind::MissingElement("group".into()),
21798                    )?))
21799                }
21800                S::All(mut values, deserializer) => {
21801                    if let Some(deserializer) = deserializer {
21802                        let value = deserializer.finish(reader)?;
21803                        ExtensionTypeContentDeserializer::store_all(&mut values, value)?;
21804                    }
21805                    Ok(super::ExtensionTypeContent::All(
21806                        values.ok_or_else(|| ErrorKind::MissingElement("all".into()))?,
21807                    ))
21808                }
21809                S::Choice(mut values, deserializer) => {
21810                    if let Some(deserializer) = deserializer {
21811                        let value = deserializer.finish(reader)?;
21812                        ExtensionTypeContentDeserializer::store_choice(&mut values, value)?;
21813                    }
21814                    Ok(super::ExtensionTypeContent::Choice(values.ok_or_else(
21815                        || ErrorKind::MissingElement("choice".into()),
21816                    )?))
21817                }
21818                S::Sequence(mut values, deserializer) => {
21819                    if let Some(deserializer) = deserializer {
21820                        let value = deserializer.finish(reader)?;
21821                        ExtensionTypeContentDeserializer::store_sequence(&mut values, value)?;
21822                    }
21823                    Ok(super::ExtensionTypeContent::Sequence(values.ok_or_else(
21824                        || ErrorKind::MissingElement("sequence".into()),
21825                    )?))
21826                }
21827                S::Attribute(mut values, deserializer) => {
21828                    if let Some(deserializer) = deserializer {
21829                        let value = deserializer.finish(reader)?;
21830                        ExtensionTypeContentDeserializer::store_attribute(&mut values, value)?;
21831                    }
21832                    Ok(super::ExtensionTypeContent::Attribute(values.ok_or_else(
21833                        || ErrorKind::MissingElement("attribute".into()),
21834                    )?))
21835                }
21836                S::AttributeGroup(mut values, deserializer) => {
21837                    if let Some(deserializer) = deserializer {
21838                        let value = deserializer.finish(reader)?;
21839                        ExtensionTypeContentDeserializer::store_attribute_group(
21840                            &mut values,
21841                            value,
21842                        )?;
21843                    }
21844                    Ok(super::ExtensionTypeContent::AttributeGroup(
21845                        values.ok_or_else(|| ErrorKind::MissingElement("attributeGroup".into()))?,
21846                    ))
21847                }
21848                S::AnyAttribute(mut values, deserializer) => {
21849                    if let Some(deserializer) = deserializer {
21850                        let value = deserializer.finish(reader)?;
21851                        ExtensionTypeContentDeserializer::store_any_attribute(&mut values, value)?;
21852                    }
21853                    Ok(super::ExtensionTypeContent::AnyAttribute(
21854                        values.ok_or_else(|| ErrorKind::MissingElement("anyAttribute".into()))?,
21855                    ))
21856                }
21857                S::Assert(mut values, deserializer) => {
21858                    if let Some(deserializer) = deserializer {
21859                        let value = deserializer.finish(reader)?;
21860                        ExtensionTypeContentDeserializer::store_assert(&mut values, value)?;
21861                    }
21862                    Ok(super::ExtensionTypeContent::Assert(values.ok_or_else(
21863                        || ErrorKind::MissingElement("assert".into()),
21864                    )?))
21865                }
21866                S::Done__(data) => Ok(data),
21867                S::Unknown__ => unreachable!(),
21868            }
21869        }
21870        fn store_annotation(
21871            values: &mut Option<super::Annotation>,
21872            value: super::Annotation,
21873        ) -> Result<(), Error> {
21874            if values.is_some() {
21875                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
21876                    b"annotation",
21877                )))?;
21878            }
21879            *values = Some(value);
21880            Ok(())
21881        }
21882        fn store_open_content(
21883            values: &mut Option<super::OpenContent>,
21884            value: super::OpenContent,
21885        ) -> Result<(), Error> {
21886            if values.is_some() {
21887                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
21888                    b"openContent",
21889                )))?;
21890            }
21891            *values = Some(value);
21892            Ok(())
21893        }
21894        fn store_group(
21895            values: &mut Option<super::GroupType>,
21896            value: super::GroupType,
21897        ) -> Result<(), Error> {
21898            if values.is_some() {
21899                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
21900                    b"group",
21901                )))?;
21902            }
21903            *values = Some(value);
21904            Ok(())
21905        }
21906        fn store_all(
21907            values: &mut Option<super::GroupType>,
21908            value: super::GroupType,
21909        ) -> Result<(), Error> {
21910            if values.is_some() {
21911                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(b"all")))?;
21912            }
21913            *values = Some(value);
21914            Ok(())
21915        }
21916        fn store_choice(
21917            values: &mut Option<super::GroupType>,
21918            value: super::GroupType,
21919        ) -> Result<(), Error> {
21920            if values.is_some() {
21921                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
21922                    b"choice",
21923                )))?;
21924            }
21925            *values = Some(value);
21926            Ok(())
21927        }
21928        fn store_sequence(
21929            values: &mut Option<super::GroupType>,
21930            value: super::GroupType,
21931        ) -> Result<(), Error> {
21932            if values.is_some() {
21933                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
21934                    b"sequence",
21935                )))?;
21936            }
21937            *values = Some(value);
21938            Ok(())
21939        }
21940        fn store_attribute(
21941            values: &mut Option<super::AttributeType>,
21942            value: super::AttributeType,
21943        ) -> Result<(), Error> {
21944            if values.is_some() {
21945                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
21946                    b"attribute",
21947                )))?;
21948            }
21949            *values = Some(value);
21950            Ok(())
21951        }
21952        fn store_attribute_group(
21953            values: &mut Option<super::AttributeGroupType>,
21954            value: super::AttributeGroupType,
21955        ) -> Result<(), Error> {
21956            if values.is_some() {
21957                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
21958                    b"attributeGroup",
21959                )))?;
21960            }
21961            *values = Some(value);
21962            Ok(())
21963        }
21964        fn store_any_attribute(
21965            values: &mut Option<super::AnyAttribute>,
21966            value: super::AnyAttribute,
21967        ) -> Result<(), Error> {
21968            if values.is_some() {
21969                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
21970                    b"anyAttribute",
21971                )))?;
21972            }
21973            *values = Some(value);
21974            Ok(())
21975        }
21976        fn store_assert(
21977            values: &mut Option<super::AssertionType>,
21978            value: super::AssertionType,
21979        ) -> Result<(), Error> {
21980            if values.is_some() {
21981                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
21982                    b"assert",
21983                )))?;
21984            }
21985            *values = Some(value);
21986            Ok(())
21987        }
21988        fn handle_annotation<'de, R>(
21989            &mut self,
21990            reader: &R,
21991            mut values: Option<super::Annotation>,
21992            output: DeserializerOutput<'de, super::Annotation>,
21993            fallback: &mut Option<ExtensionTypeContentDeserializerState>,
21994        ) -> Result<ElementHandlerOutput<'de>, Error>
21995        where
21996            R: DeserializeReader,
21997        {
21998            let DeserializerOutput {
21999                artifact,
22000                event,
22001                allow_any,
22002            } = output;
22003            if artifact.is_none() {
22004                *self.state = match fallback.take() {
22005                    None => ExtensionTypeContentDeserializerState::Init__,
22006                    Some(ExtensionTypeContentDeserializerState::Annotation(
22007                        _,
22008                        Some(deserializer),
22009                    )) => ExtensionTypeContentDeserializerState::Annotation(
22010                        values,
22011                        Some(deserializer),
22012                    ),
22013                    _ => unreachable!(),
22014                };
22015                return Ok(ElementHandlerOutput::break_(event, allow_any));
22016            }
22017            match fallback.take() {
22018                None => (),
22019                Some(ExtensionTypeContentDeserializerState::Annotation(_, Some(deserializer))) => {
22020                    let data = deserializer.finish(reader)?;
22021                    ExtensionTypeContentDeserializer::store_annotation(&mut values, data)?;
22022                }
22023                Some(_) => unreachable!(),
22024            }
22025            Ok(match artifact {
22026                DeserializerArtifact::None => unreachable!(),
22027                DeserializerArtifact::Data(data) => {
22028                    ExtensionTypeContentDeserializer::store_annotation(&mut values, data)?;
22029                    let data = ExtensionTypeContentDeserializer::finish_state(
22030                        reader,
22031                        ExtensionTypeContentDeserializerState::Annotation(values, None),
22032                    )?;
22033                    *self.state = ExtensionTypeContentDeserializerState::Done__(data);
22034                    ElementHandlerOutput::Break { event, allow_any }
22035                }
22036                DeserializerArtifact::Deserializer(deserializer) => {
22037                    *self.state = ExtensionTypeContentDeserializerState::Annotation(
22038                        values,
22039                        Some(deserializer),
22040                    );
22041                    ElementHandlerOutput::from_event_end(event, allow_any)
22042                }
22043            })
22044        }
22045        fn handle_open_content<'de, R>(
22046            &mut self,
22047            reader: &R,
22048            mut values: Option<super::OpenContent>,
22049            output: DeserializerOutput<'de, super::OpenContent>,
22050            fallback: &mut Option<ExtensionTypeContentDeserializerState>,
22051        ) -> Result<ElementHandlerOutput<'de>, Error>
22052        where
22053            R: DeserializeReader,
22054        {
22055            let DeserializerOutput {
22056                artifact,
22057                event,
22058                allow_any,
22059            } = output;
22060            if artifact.is_none() {
22061                *self.state = match fallback.take() {
22062                    None => ExtensionTypeContentDeserializerState::Init__,
22063                    Some(ExtensionTypeContentDeserializerState::OpenContent(
22064                        _,
22065                        Some(deserializer),
22066                    )) => ExtensionTypeContentDeserializerState::OpenContent(
22067                        values,
22068                        Some(deserializer),
22069                    ),
22070                    _ => unreachable!(),
22071                };
22072                return Ok(ElementHandlerOutput::break_(event, allow_any));
22073            }
22074            match fallback.take() {
22075                None => (),
22076                Some(ExtensionTypeContentDeserializerState::OpenContent(_, Some(deserializer))) => {
22077                    let data = deserializer.finish(reader)?;
22078                    ExtensionTypeContentDeserializer::store_open_content(&mut values, data)?;
22079                }
22080                Some(_) => unreachable!(),
22081            }
22082            Ok(match artifact {
22083                DeserializerArtifact::None => unreachable!(),
22084                DeserializerArtifact::Data(data) => {
22085                    ExtensionTypeContentDeserializer::store_open_content(&mut values, data)?;
22086                    let data = ExtensionTypeContentDeserializer::finish_state(
22087                        reader,
22088                        ExtensionTypeContentDeserializerState::OpenContent(values, None),
22089                    )?;
22090                    *self.state = ExtensionTypeContentDeserializerState::Done__(data);
22091                    ElementHandlerOutput::Break { event, allow_any }
22092                }
22093                DeserializerArtifact::Deserializer(deserializer) => {
22094                    *self.state = ExtensionTypeContentDeserializerState::OpenContent(
22095                        values,
22096                        Some(deserializer),
22097                    );
22098                    ElementHandlerOutput::from_event_end(event, allow_any)
22099                }
22100            })
22101        }
22102        fn handle_group<'de, R>(
22103            &mut self,
22104            reader: &R,
22105            mut values: Option<super::GroupType>,
22106            output: DeserializerOutput<'de, super::GroupType>,
22107            fallback: &mut Option<ExtensionTypeContentDeserializerState>,
22108        ) -> Result<ElementHandlerOutput<'de>, Error>
22109        where
22110            R: DeserializeReader,
22111        {
22112            let DeserializerOutput {
22113                artifact,
22114                event,
22115                allow_any,
22116            } = output;
22117            if artifact.is_none() {
22118                *self.state = match fallback.take() {
22119                    None => ExtensionTypeContentDeserializerState::Init__,
22120                    Some(ExtensionTypeContentDeserializerState::Group(_, Some(deserializer))) => {
22121                        ExtensionTypeContentDeserializerState::Group(values, Some(deserializer))
22122                    }
22123                    _ => unreachable!(),
22124                };
22125                return Ok(ElementHandlerOutput::break_(event, allow_any));
22126            }
22127            match fallback.take() {
22128                None => (),
22129                Some(ExtensionTypeContentDeserializerState::Group(_, Some(deserializer))) => {
22130                    let data = deserializer.finish(reader)?;
22131                    ExtensionTypeContentDeserializer::store_group(&mut values, data)?;
22132                }
22133                Some(_) => unreachable!(),
22134            }
22135            Ok(match artifact {
22136                DeserializerArtifact::None => unreachable!(),
22137                DeserializerArtifact::Data(data) => {
22138                    ExtensionTypeContentDeserializer::store_group(&mut values, data)?;
22139                    let data = ExtensionTypeContentDeserializer::finish_state(
22140                        reader,
22141                        ExtensionTypeContentDeserializerState::Group(values, None),
22142                    )?;
22143                    *self.state = ExtensionTypeContentDeserializerState::Done__(data);
22144                    ElementHandlerOutput::Break { event, allow_any }
22145                }
22146                DeserializerArtifact::Deserializer(deserializer) => {
22147                    *self.state =
22148                        ExtensionTypeContentDeserializerState::Group(values, Some(deserializer));
22149                    ElementHandlerOutput::from_event_end(event, allow_any)
22150                }
22151            })
22152        }
22153        fn handle_all<'de, R>(
22154            &mut self,
22155            reader: &R,
22156            mut values: Option<super::GroupType>,
22157            output: DeserializerOutput<'de, super::GroupType>,
22158            fallback: &mut Option<ExtensionTypeContentDeserializerState>,
22159        ) -> Result<ElementHandlerOutput<'de>, Error>
22160        where
22161            R: DeserializeReader,
22162        {
22163            let DeserializerOutput {
22164                artifact,
22165                event,
22166                allow_any,
22167            } = output;
22168            if artifact.is_none() {
22169                *self.state = match fallback.take() {
22170                    None => ExtensionTypeContentDeserializerState::Init__,
22171                    Some(ExtensionTypeContentDeserializerState::All(_, Some(deserializer))) => {
22172                        ExtensionTypeContentDeserializerState::All(values, Some(deserializer))
22173                    }
22174                    _ => unreachable!(),
22175                };
22176                return Ok(ElementHandlerOutput::break_(event, allow_any));
22177            }
22178            match fallback.take() {
22179                None => (),
22180                Some(ExtensionTypeContentDeserializerState::All(_, Some(deserializer))) => {
22181                    let data = deserializer.finish(reader)?;
22182                    ExtensionTypeContentDeserializer::store_all(&mut values, data)?;
22183                }
22184                Some(_) => unreachable!(),
22185            }
22186            Ok(match artifact {
22187                DeserializerArtifact::None => unreachable!(),
22188                DeserializerArtifact::Data(data) => {
22189                    ExtensionTypeContentDeserializer::store_all(&mut values, data)?;
22190                    let data = ExtensionTypeContentDeserializer::finish_state(
22191                        reader,
22192                        ExtensionTypeContentDeserializerState::All(values, None),
22193                    )?;
22194                    *self.state = ExtensionTypeContentDeserializerState::Done__(data);
22195                    ElementHandlerOutput::Break { event, allow_any }
22196                }
22197                DeserializerArtifact::Deserializer(deserializer) => {
22198                    *self.state =
22199                        ExtensionTypeContentDeserializerState::All(values, Some(deserializer));
22200                    ElementHandlerOutput::from_event_end(event, allow_any)
22201                }
22202            })
22203        }
22204        fn handle_choice<'de, R>(
22205            &mut self,
22206            reader: &R,
22207            mut values: Option<super::GroupType>,
22208            output: DeserializerOutput<'de, super::GroupType>,
22209            fallback: &mut Option<ExtensionTypeContentDeserializerState>,
22210        ) -> Result<ElementHandlerOutput<'de>, Error>
22211        where
22212            R: DeserializeReader,
22213        {
22214            let DeserializerOutput {
22215                artifact,
22216                event,
22217                allow_any,
22218            } = output;
22219            if artifact.is_none() {
22220                *self.state = match fallback.take() {
22221                    None => ExtensionTypeContentDeserializerState::Init__,
22222                    Some(ExtensionTypeContentDeserializerState::Choice(_, Some(deserializer))) => {
22223                        ExtensionTypeContentDeserializerState::Choice(values, Some(deserializer))
22224                    }
22225                    _ => unreachable!(),
22226                };
22227                return Ok(ElementHandlerOutput::break_(event, allow_any));
22228            }
22229            match fallback.take() {
22230                None => (),
22231                Some(ExtensionTypeContentDeserializerState::Choice(_, Some(deserializer))) => {
22232                    let data = deserializer.finish(reader)?;
22233                    ExtensionTypeContentDeserializer::store_choice(&mut values, data)?;
22234                }
22235                Some(_) => unreachable!(),
22236            }
22237            Ok(match artifact {
22238                DeserializerArtifact::None => unreachable!(),
22239                DeserializerArtifact::Data(data) => {
22240                    ExtensionTypeContentDeserializer::store_choice(&mut values, data)?;
22241                    let data = ExtensionTypeContentDeserializer::finish_state(
22242                        reader,
22243                        ExtensionTypeContentDeserializerState::Choice(values, None),
22244                    )?;
22245                    *self.state = ExtensionTypeContentDeserializerState::Done__(data);
22246                    ElementHandlerOutput::Break { event, allow_any }
22247                }
22248                DeserializerArtifact::Deserializer(deserializer) => {
22249                    *self.state =
22250                        ExtensionTypeContentDeserializerState::Choice(values, Some(deserializer));
22251                    ElementHandlerOutput::from_event_end(event, allow_any)
22252                }
22253            })
22254        }
22255        fn handle_sequence<'de, R>(
22256            &mut self,
22257            reader: &R,
22258            mut values: Option<super::GroupType>,
22259            output: DeserializerOutput<'de, super::GroupType>,
22260            fallback: &mut Option<ExtensionTypeContentDeserializerState>,
22261        ) -> Result<ElementHandlerOutput<'de>, Error>
22262        where
22263            R: DeserializeReader,
22264        {
22265            let DeserializerOutput {
22266                artifact,
22267                event,
22268                allow_any,
22269            } = output;
22270            if artifact.is_none() {
22271                *self.state = match fallback.take() {
22272                    None => ExtensionTypeContentDeserializerState::Init__,
22273                    Some(ExtensionTypeContentDeserializerState::Sequence(
22274                        _,
22275                        Some(deserializer),
22276                    )) => {
22277                        ExtensionTypeContentDeserializerState::Sequence(values, Some(deserializer))
22278                    }
22279                    _ => unreachable!(),
22280                };
22281                return Ok(ElementHandlerOutput::break_(event, allow_any));
22282            }
22283            match fallback.take() {
22284                None => (),
22285                Some(ExtensionTypeContentDeserializerState::Sequence(_, Some(deserializer))) => {
22286                    let data = deserializer.finish(reader)?;
22287                    ExtensionTypeContentDeserializer::store_sequence(&mut values, data)?;
22288                }
22289                Some(_) => unreachable!(),
22290            }
22291            Ok(match artifact {
22292                DeserializerArtifact::None => unreachable!(),
22293                DeserializerArtifact::Data(data) => {
22294                    ExtensionTypeContentDeserializer::store_sequence(&mut values, data)?;
22295                    let data = ExtensionTypeContentDeserializer::finish_state(
22296                        reader,
22297                        ExtensionTypeContentDeserializerState::Sequence(values, None),
22298                    )?;
22299                    *self.state = ExtensionTypeContentDeserializerState::Done__(data);
22300                    ElementHandlerOutput::Break { event, allow_any }
22301                }
22302                DeserializerArtifact::Deserializer(deserializer) => {
22303                    *self.state =
22304                        ExtensionTypeContentDeserializerState::Sequence(values, Some(deserializer));
22305                    ElementHandlerOutput::from_event_end(event, allow_any)
22306                }
22307            })
22308        }
22309        fn handle_attribute<'de, R>(
22310            &mut self,
22311            reader: &R,
22312            mut values: Option<super::AttributeType>,
22313            output: DeserializerOutput<'de, super::AttributeType>,
22314            fallback: &mut Option<ExtensionTypeContentDeserializerState>,
22315        ) -> Result<ElementHandlerOutput<'de>, Error>
22316        where
22317            R: DeserializeReader,
22318        {
22319            let DeserializerOutput {
22320                artifact,
22321                event,
22322                allow_any,
22323            } = output;
22324            if artifact.is_none() {
22325                *self.state = match fallback.take() {
22326                    None => ExtensionTypeContentDeserializerState::Init__,
22327                    Some(ExtensionTypeContentDeserializerState::Attribute(
22328                        _,
22329                        Some(deserializer),
22330                    )) => {
22331                        ExtensionTypeContentDeserializerState::Attribute(values, Some(deserializer))
22332                    }
22333                    _ => unreachable!(),
22334                };
22335                return Ok(ElementHandlerOutput::break_(event, allow_any));
22336            }
22337            match fallback.take() {
22338                None => (),
22339                Some(ExtensionTypeContentDeserializerState::Attribute(_, Some(deserializer))) => {
22340                    let data = deserializer.finish(reader)?;
22341                    ExtensionTypeContentDeserializer::store_attribute(&mut values, data)?;
22342                }
22343                Some(_) => unreachable!(),
22344            }
22345            Ok(match artifact {
22346                DeserializerArtifact::None => unreachable!(),
22347                DeserializerArtifact::Data(data) => {
22348                    ExtensionTypeContentDeserializer::store_attribute(&mut values, data)?;
22349                    let data = ExtensionTypeContentDeserializer::finish_state(
22350                        reader,
22351                        ExtensionTypeContentDeserializerState::Attribute(values, None),
22352                    )?;
22353                    *self.state = ExtensionTypeContentDeserializerState::Done__(data);
22354                    ElementHandlerOutput::Break { event, allow_any }
22355                }
22356                DeserializerArtifact::Deserializer(deserializer) => {
22357                    *self.state = ExtensionTypeContentDeserializerState::Attribute(
22358                        values,
22359                        Some(deserializer),
22360                    );
22361                    ElementHandlerOutput::from_event_end(event, allow_any)
22362                }
22363            })
22364        }
22365        fn handle_attribute_group<'de, R>(
22366            &mut self,
22367            reader: &R,
22368            mut values: Option<super::AttributeGroupType>,
22369            output: DeserializerOutput<'de, super::AttributeGroupType>,
22370            fallback: &mut Option<ExtensionTypeContentDeserializerState>,
22371        ) -> Result<ElementHandlerOutput<'de>, Error>
22372        where
22373            R: DeserializeReader,
22374        {
22375            let DeserializerOutput {
22376                artifact,
22377                event,
22378                allow_any,
22379            } = output;
22380            if artifact.is_none() {
22381                *self.state = match fallback.take() {
22382                    None => ExtensionTypeContentDeserializerState::Init__,
22383                    Some(ExtensionTypeContentDeserializerState::AttributeGroup(
22384                        _,
22385                        Some(deserializer),
22386                    )) => ExtensionTypeContentDeserializerState::AttributeGroup(
22387                        values,
22388                        Some(deserializer),
22389                    ),
22390                    _ => unreachable!(),
22391                };
22392                return Ok(ElementHandlerOutput::break_(event, allow_any));
22393            }
22394            match fallback.take() {
22395                None => (),
22396                Some(ExtensionTypeContentDeserializerState::AttributeGroup(
22397                    _,
22398                    Some(deserializer),
22399                )) => {
22400                    let data = deserializer.finish(reader)?;
22401                    ExtensionTypeContentDeserializer::store_attribute_group(&mut values, data)?;
22402                }
22403                Some(_) => unreachable!(),
22404            }
22405            Ok(match artifact {
22406                DeserializerArtifact::None => unreachable!(),
22407                DeserializerArtifact::Data(data) => {
22408                    ExtensionTypeContentDeserializer::store_attribute_group(&mut values, data)?;
22409                    let data = ExtensionTypeContentDeserializer::finish_state(
22410                        reader,
22411                        ExtensionTypeContentDeserializerState::AttributeGroup(values, None),
22412                    )?;
22413                    *self.state = ExtensionTypeContentDeserializerState::Done__(data);
22414                    ElementHandlerOutput::Break { event, allow_any }
22415                }
22416                DeserializerArtifact::Deserializer(deserializer) => {
22417                    *self.state = ExtensionTypeContentDeserializerState::AttributeGroup(
22418                        values,
22419                        Some(deserializer),
22420                    );
22421                    ElementHandlerOutput::from_event_end(event, allow_any)
22422                }
22423            })
22424        }
22425        fn handle_any_attribute<'de, R>(
22426            &mut self,
22427            reader: &R,
22428            mut values: Option<super::AnyAttribute>,
22429            output: DeserializerOutput<'de, super::AnyAttribute>,
22430            fallback: &mut Option<ExtensionTypeContentDeserializerState>,
22431        ) -> Result<ElementHandlerOutput<'de>, Error>
22432        where
22433            R: DeserializeReader,
22434        {
22435            let DeserializerOutput {
22436                artifact,
22437                event,
22438                allow_any,
22439            } = output;
22440            if artifact.is_none() {
22441                *self.state = match fallback.take() {
22442                    None => ExtensionTypeContentDeserializerState::Init__,
22443                    Some(ExtensionTypeContentDeserializerState::AnyAttribute(
22444                        _,
22445                        Some(deserializer),
22446                    )) => ExtensionTypeContentDeserializerState::AnyAttribute(
22447                        values,
22448                        Some(deserializer),
22449                    ),
22450                    _ => unreachable!(),
22451                };
22452                return Ok(ElementHandlerOutput::break_(event, allow_any));
22453            }
22454            match fallback.take() {
22455                None => (),
22456                Some(ExtensionTypeContentDeserializerState::AnyAttribute(
22457                    _,
22458                    Some(deserializer),
22459                )) => {
22460                    let data = deserializer.finish(reader)?;
22461                    ExtensionTypeContentDeserializer::store_any_attribute(&mut values, data)?;
22462                }
22463                Some(_) => unreachable!(),
22464            }
22465            Ok(match artifact {
22466                DeserializerArtifact::None => unreachable!(),
22467                DeserializerArtifact::Data(data) => {
22468                    ExtensionTypeContentDeserializer::store_any_attribute(&mut values, data)?;
22469                    let data = ExtensionTypeContentDeserializer::finish_state(
22470                        reader,
22471                        ExtensionTypeContentDeserializerState::AnyAttribute(values, None),
22472                    )?;
22473                    *self.state = ExtensionTypeContentDeserializerState::Done__(data);
22474                    ElementHandlerOutput::Break { event, allow_any }
22475                }
22476                DeserializerArtifact::Deserializer(deserializer) => {
22477                    *self.state = ExtensionTypeContentDeserializerState::AnyAttribute(
22478                        values,
22479                        Some(deserializer),
22480                    );
22481                    ElementHandlerOutput::from_event_end(event, allow_any)
22482                }
22483            })
22484        }
22485        fn handle_assert<'de, R>(
22486            &mut self,
22487            reader: &R,
22488            mut values: Option<super::AssertionType>,
22489            output: DeserializerOutput<'de, super::AssertionType>,
22490            fallback: &mut Option<ExtensionTypeContentDeserializerState>,
22491        ) -> Result<ElementHandlerOutput<'de>, Error>
22492        where
22493            R: DeserializeReader,
22494        {
22495            let DeserializerOutput {
22496                artifact,
22497                event,
22498                allow_any,
22499            } = output;
22500            if artifact.is_none() {
22501                *self.state = match fallback.take() {
22502                    None => ExtensionTypeContentDeserializerState::Init__,
22503                    Some(ExtensionTypeContentDeserializerState::Assert(_, Some(deserializer))) => {
22504                        ExtensionTypeContentDeserializerState::Assert(values, Some(deserializer))
22505                    }
22506                    _ => unreachable!(),
22507                };
22508                return Ok(ElementHandlerOutput::break_(event, allow_any));
22509            }
22510            match fallback.take() {
22511                None => (),
22512                Some(ExtensionTypeContentDeserializerState::Assert(_, Some(deserializer))) => {
22513                    let data = deserializer.finish(reader)?;
22514                    ExtensionTypeContentDeserializer::store_assert(&mut values, data)?;
22515                }
22516                Some(_) => unreachable!(),
22517            }
22518            Ok(match artifact {
22519                DeserializerArtifact::None => unreachable!(),
22520                DeserializerArtifact::Data(data) => {
22521                    ExtensionTypeContentDeserializer::store_assert(&mut values, data)?;
22522                    let data = ExtensionTypeContentDeserializer::finish_state(
22523                        reader,
22524                        ExtensionTypeContentDeserializerState::Assert(values, None),
22525                    )?;
22526                    *self.state = ExtensionTypeContentDeserializerState::Done__(data);
22527                    ElementHandlerOutput::Break { event, allow_any }
22528                }
22529                DeserializerArtifact::Deserializer(deserializer) => {
22530                    *self.state =
22531                        ExtensionTypeContentDeserializerState::Assert(values, Some(deserializer));
22532                    ElementHandlerOutput::from_event_end(event, allow_any)
22533                }
22534            })
22535        }
22536    }
22537    impl<'de> Deserializer<'de, super::ExtensionTypeContent> for Box<ExtensionTypeContentDeserializer> {
22538        fn init<R>(
22539            reader: &R,
22540            event: Event<'de>,
22541        ) -> DeserializerResult<'de, super::ExtensionTypeContent>
22542        where
22543            R: DeserializeReader,
22544        {
22545            let deserializer = Box::new(ExtensionTypeContentDeserializer {
22546                state: Box::new(ExtensionTypeContentDeserializerState::Init__),
22547            });
22548            let mut output = deserializer.next(reader, event)?;
22549            output.artifact = match output.artifact {
22550                DeserializerArtifact::Deserializer(x)
22551                    if matches!(&*x.state, ExtensionTypeContentDeserializerState::Init__) =>
22552                {
22553                    DeserializerArtifact::None
22554                }
22555                artifact => artifact,
22556            };
22557            Ok(output)
22558        }
22559        fn next<R>(
22560            mut self,
22561            reader: &R,
22562            event: Event<'de>,
22563        ) -> DeserializerResult<'de, super::ExtensionTypeContent>
22564        where
22565            R: DeserializeReader,
22566        {
22567            use ExtensionTypeContentDeserializerState as S;
22568            let mut event = event;
22569            let mut fallback = None;
22570            let (event, allow_any) = loop {
22571                let state = replace(&mut *self.state, S::Unknown__);
22572                event = match (state, event) {
22573                    (S::Annotation(values, Some(deserializer)), event) => {
22574                        let output = deserializer.next(reader, event)?;
22575                        match self.handle_annotation(reader, values, output, &mut fallback)? {
22576                            ElementHandlerOutput::Break { event, allow_any } => {
22577                                break (event, allow_any)
22578                            }
22579                            ElementHandlerOutput::Continue { event, .. } => event,
22580                        }
22581                    }
22582                    (S::OpenContent(values, Some(deserializer)), event) => {
22583                        let output = deserializer.next(reader, event)?;
22584                        match self.handle_open_content(reader, 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::Group(values, Some(deserializer)), event) => {
22592                        let output = deserializer.next(reader, event)?;
22593                        match self.handle_group(reader, values, output, &mut fallback)? {
22594                            ElementHandlerOutput::Break { event, allow_any } => {
22595                                break (event, allow_any)
22596                            }
22597                            ElementHandlerOutput::Continue { event, .. } => event,
22598                        }
22599                    }
22600                    (S::All(values, Some(deserializer)), event) => {
22601                        let output = deserializer.next(reader, event)?;
22602                        match self.handle_all(reader, values, output, &mut fallback)? {
22603                            ElementHandlerOutput::Break { event, allow_any } => {
22604                                break (event, allow_any)
22605                            }
22606                            ElementHandlerOutput::Continue { event, .. } => event,
22607                        }
22608                    }
22609                    (S::Choice(values, Some(deserializer)), event) => {
22610                        let output = deserializer.next(reader, event)?;
22611                        match self.handle_choice(reader, values, output, &mut fallback)? {
22612                            ElementHandlerOutput::Break { event, allow_any } => {
22613                                break (event, allow_any)
22614                            }
22615                            ElementHandlerOutput::Continue { event, .. } => event,
22616                        }
22617                    }
22618                    (S::Sequence(values, Some(deserializer)), event) => {
22619                        let output = deserializer.next(reader, event)?;
22620                        match self.handle_sequence(reader, values, output, &mut fallback)? {
22621                            ElementHandlerOutput::Break { event, allow_any } => {
22622                                break (event, allow_any)
22623                            }
22624                            ElementHandlerOutput::Continue { event, .. } => event,
22625                        }
22626                    }
22627                    (S::Attribute(values, Some(deserializer)), event) => {
22628                        let output = deserializer.next(reader, event)?;
22629                        match self.handle_attribute(reader, values, output, &mut fallback)? {
22630                            ElementHandlerOutput::Break { event, allow_any } => {
22631                                break (event, allow_any)
22632                            }
22633                            ElementHandlerOutput::Continue { event, .. } => event,
22634                        }
22635                    }
22636                    (S::AttributeGroup(values, Some(deserializer)), event) => {
22637                        let output = deserializer.next(reader, event)?;
22638                        match self.handle_attribute_group(reader, values, output, &mut fallback)? {
22639                            ElementHandlerOutput::Break { event, allow_any } => {
22640                                break (event, allow_any)
22641                            }
22642                            ElementHandlerOutput::Continue { event, .. } => event,
22643                        }
22644                    }
22645                    (S::AnyAttribute(values, Some(deserializer)), event) => {
22646                        let output = deserializer.next(reader, event)?;
22647                        match self.handle_any_attribute(reader, values, output, &mut fallback)? {
22648                            ElementHandlerOutput::Break { event, allow_any } => {
22649                                break (event, allow_any)
22650                            }
22651                            ElementHandlerOutput::Continue { event, .. } => event,
22652                        }
22653                    }
22654                    (S::Assert(values, Some(deserializer)), event) => {
22655                        let output = deserializer.next(reader, event)?;
22656                        match self.handle_assert(reader, values, output, &mut fallback)? {
22657                            ElementHandlerOutput::Break { event, allow_any } => {
22658                                break (event, allow_any)
22659                            }
22660                            ElementHandlerOutput::Continue { event, .. } => event,
22661                        }
22662                    }
22663                    (state, event @ Event::End(_)) => {
22664                        return Ok(DeserializerOutput {
22665                            artifact: DeserializerArtifact::Data(
22666                                ExtensionTypeContentDeserializer::finish_state(reader, state)?,
22667                            ),
22668                            event: DeserializerEvent::Continue(event),
22669                            allow_any: false,
22670                        });
22671                    }
22672                    (S::Init__, event) => match self.find_suitable(reader, event, &mut fallback)? {
22673                        ElementHandlerOutput::Break { event, allow_any } => {
22674                            break (event, allow_any)
22675                        }
22676                        ElementHandlerOutput::Continue { event, .. } => event,
22677                    },
22678                    (S::Annotation(values, None), event) => {
22679                        let output = <super::Annotation as WithDeserializer>::Deserializer::init(
22680                            reader, event,
22681                        )?;
22682                        match self.handle_annotation(reader, values, output, &mut fallback)? {
22683                            ElementHandlerOutput::Break { event, allow_any } => {
22684                                break (event, allow_any)
22685                            }
22686                            ElementHandlerOutput::Continue { event, .. } => event,
22687                        }
22688                    }
22689                    (S::OpenContent(values, None), event) => {
22690                        let output = <super::OpenContent as WithDeserializer>::Deserializer::init(
22691                            reader, event,
22692                        )?;
22693                        match self.handle_open_content(reader, values, output, &mut fallback)? {
22694                            ElementHandlerOutput::Break { event, allow_any } => {
22695                                break (event, allow_any)
22696                            }
22697                            ElementHandlerOutput::Continue { event, .. } => event,
22698                        }
22699                    }
22700                    (S::Group(values, None), event) => {
22701                        let output = <super::GroupType as WithDeserializer>::Deserializer::init(
22702                            reader, event,
22703                        )?;
22704                        match self.handle_group(reader, values, output, &mut fallback)? {
22705                            ElementHandlerOutput::Break { event, allow_any } => {
22706                                break (event, allow_any)
22707                            }
22708                            ElementHandlerOutput::Continue { event, .. } => event,
22709                        }
22710                    }
22711                    (S::All(values, None), event) => {
22712                        let output = <super::GroupType as WithDeserializer>::Deserializer::init(
22713                            reader, event,
22714                        )?;
22715                        match self.handle_all(reader, values, output, &mut fallback)? {
22716                            ElementHandlerOutput::Break { event, allow_any } => {
22717                                break (event, allow_any)
22718                            }
22719                            ElementHandlerOutput::Continue { event, .. } => event,
22720                        }
22721                    }
22722                    (S::Choice(values, None), event) => {
22723                        let output = <super::GroupType as WithDeserializer>::Deserializer::init(
22724                            reader, event,
22725                        )?;
22726                        match self.handle_choice(reader, values, output, &mut fallback)? {
22727                            ElementHandlerOutput::Break { event, allow_any } => {
22728                                break (event, allow_any)
22729                            }
22730                            ElementHandlerOutput::Continue { event, .. } => event,
22731                        }
22732                    }
22733                    (S::Sequence(values, None), event) => {
22734                        let output = <super::GroupType as WithDeserializer>::Deserializer::init(
22735                            reader, event,
22736                        )?;
22737                        match self.handle_sequence(reader, values, output, &mut fallback)? {
22738                            ElementHandlerOutput::Break { event, allow_any } => {
22739                                break (event, allow_any)
22740                            }
22741                            ElementHandlerOutput::Continue { event, .. } => event,
22742                        }
22743                    }
22744                    (S::Attribute(values, None), event) => {
22745                        let output =
22746                            <super::AttributeType as WithDeserializer>::Deserializer::init(
22747                                reader, event,
22748                            )?;
22749                        match self.handle_attribute(reader, values, output, &mut fallback)? {
22750                            ElementHandlerOutput::Break { event, allow_any } => {
22751                                break (event, allow_any)
22752                            }
22753                            ElementHandlerOutput::Continue { event, .. } => event,
22754                        }
22755                    }
22756                    (S::AttributeGroup(values, None), event) => {
22757                        let output =
22758                            <super::AttributeGroupType as WithDeserializer>::Deserializer::init(
22759                                reader, event,
22760                            )?;
22761                        match self.handle_attribute_group(reader, values, output, &mut fallback)? {
22762                            ElementHandlerOutput::Break { event, allow_any } => {
22763                                break (event, allow_any)
22764                            }
22765                            ElementHandlerOutput::Continue { event, .. } => event,
22766                        }
22767                    }
22768                    (S::AnyAttribute(values, None), event) => {
22769                        let output = <super::AnyAttribute as WithDeserializer>::Deserializer::init(
22770                            reader, event,
22771                        )?;
22772                        match self.handle_any_attribute(reader, values, output, &mut fallback)? {
22773                            ElementHandlerOutput::Break { event, allow_any } => {
22774                                break (event, allow_any)
22775                            }
22776                            ElementHandlerOutput::Continue { event, .. } => event,
22777                        }
22778                    }
22779                    (S::Assert(values, None), event) => {
22780                        let output =
22781                            <super::AssertionType as WithDeserializer>::Deserializer::init(
22782                                reader, event,
22783                            )?;
22784                        match self.handle_assert(reader, values, output, &mut fallback)? {
22785                            ElementHandlerOutput::Break { event, allow_any } => {
22786                                break (event, allow_any)
22787                            }
22788                            ElementHandlerOutput::Continue { event, .. } => event,
22789                        }
22790                    }
22791                    (s @ S::Done__(_), event) => {
22792                        *self.state = s;
22793                        break (DeserializerEvent::Continue(event), false);
22794                    }
22795                    (S::Unknown__, _) => unreachable!(),
22796                }
22797            };
22798            let artifact = if matches!(&*self.state, S::Done__(_)) {
22799                DeserializerArtifact::Data(self.finish(reader)?)
22800            } else {
22801                DeserializerArtifact::Deserializer(self)
22802            };
22803            Ok(DeserializerOutput {
22804                artifact,
22805                event,
22806                allow_any,
22807            })
22808        }
22809        fn finish<R>(self, reader: &R) -> Result<super::ExtensionTypeContent, Error>
22810        where
22811            R: DeserializeReader,
22812        {
22813            ExtensionTypeContentDeserializer::finish_state(reader, *self.state)
22814        }
22815    }
22816    #[derive(Debug)]
22817    pub struct FieldDeserializer {
22818        id: Option<String>,
22819        xpath: String,
22820        xpath_default_namespace: Option<super::XpathDefaultNamespaceType>,
22821        annotation: Option<super::Annotation>,
22822        state: Box<FieldDeserializerState>,
22823    }
22824    #[derive(Debug)]
22825    enum FieldDeserializerState {
22826        Init__,
22827        Annotation(Option<<super::Annotation as WithDeserializer>::Deserializer>),
22828        Done__,
22829        Unknown__,
22830    }
22831    impl FieldDeserializer {
22832        fn from_bytes_start<R>(reader: &R, bytes_start: &BytesStart<'_>) -> Result<Box<Self>, Error>
22833        where
22834            R: DeserializeReader,
22835        {
22836            let mut id: Option<String> = None;
22837            let mut xpath: Option<String> = None;
22838            let mut xpath_default_namespace: Option<super::XpathDefaultNamespaceType> = None;
22839            for attrib in filter_xmlns_attributes(bytes_start) {
22840                let attrib = attrib?;
22841                if matches!(
22842                    reader.resolve_local_name(attrib.key, &super::NS_XS),
22843                    Some(b"id")
22844                ) {
22845                    reader.read_attrib(&mut id, b"id", &attrib.value)?;
22846                } else if matches!(
22847                    reader.resolve_local_name(attrib.key, &super::NS_XS),
22848                    Some(b"xpath")
22849                ) {
22850                    reader.read_attrib(&mut xpath, b"xpath", &attrib.value)?;
22851                } else if matches!(
22852                    reader.resolve_local_name(attrib.key, &super::NS_XS),
22853                    Some(b"xpathDefaultNamespace")
22854                ) {
22855                    reader.read_attrib(
22856                        &mut xpath_default_namespace,
22857                        b"xpathDefaultNamespace",
22858                        &attrib.value,
22859                    )?;
22860                }
22861            }
22862            Ok(Box::new(Self {
22863                id: id,
22864                xpath: xpath
22865                    .ok_or_else(|| reader.map_error(ErrorKind::MissingAttribute("xpath".into())))?,
22866                xpath_default_namespace: xpath_default_namespace,
22867                annotation: None,
22868                state: Box::new(FieldDeserializerState::Init__),
22869            }))
22870        }
22871        fn finish_state<R>(
22872            &mut self,
22873            reader: &R,
22874            state: FieldDeserializerState,
22875        ) -> Result<(), Error>
22876        where
22877            R: DeserializeReader,
22878        {
22879            use FieldDeserializerState as S;
22880            match state {
22881                S::Annotation(Some(deserializer)) => {
22882                    self.store_annotation(deserializer.finish(reader)?)?
22883                }
22884                _ => (),
22885            }
22886            Ok(())
22887        }
22888        fn store_annotation(&mut self, value: super::Annotation) -> Result<(), Error> {
22889            if self.annotation.is_some() {
22890                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
22891                    b"annotation",
22892                )))?;
22893            }
22894            self.annotation = Some(value);
22895            Ok(())
22896        }
22897        fn handle_annotation<'de, R>(
22898            &mut self,
22899            reader: &R,
22900            output: DeserializerOutput<'de, super::Annotation>,
22901            fallback: &mut Option<FieldDeserializerState>,
22902        ) -> Result<ElementHandlerOutput<'de>, Error>
22903        where
22904            R: DeserializeReader,
22905        {
22906            let DeserializerOutput {
22907                artifact,
22908                event,
22909                allow_any,
22910            } = output;
22911            if artifact.is_none() {
22912                fallback.get_or_insert(FieldDeserializerState::Annotation(None));
22913                *self.state = FieldDeserializerState::Done__;
22914                return Ok(ElementHandlerOutput::from_event(event, allow_any));
22915            }
22916            if let Some(fallback) = fallback.take() {
22917                self.finish_state(reader, fallback)?;
22918            }
22919            Ok(match artifact {
22920                DeserializerArtifact::None => unreachable!(),
22921                DeserializerArtifact::Data(data) => {
22922                    self.store_annotation(data)?;
22923                    *self.state = FieldDeserializerState::Done__;
22924                    ElementHandlerOutput::from_event(event, allow_any)
22925                }
22926                DeserializerArtifact::Deserializer(deserializer) => {
22927                    let ret = ElementHandlerOutput::from_event(event, allow_any);
22928                    match &ret {
22929                        ElementHandlerOutput::Continue { .. } => {
22930                            fallback.get_or_insert(FieldDeserializerState::Annotation(Some(
22931                                deserializer,
22932                            )));
22933                            *self.state = FieldDeserializerState::Done__;
22934                        }
22935                        ElementHandlerOutput::Break { .. } => {
22936                            *self.state = FieldDeserializerState::Annotation(Some(deserializer));
22937                        }
22938                    }
22939                    ret
22940                }
22941            })
22942        }
22943    }
22944    impl<'de> Deserializer<'de, super::Field> for Box<FieldDeserializer> {
22945        fn init<R>(reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::Field>
22946        where
22947            R: DeserializeReader,
22948        {
22949            reader.init_deserializer_from_start_event(event, FieldDeserializer::from_bytes_start)
22950        }
22951        fn next<R>(mut self, reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::Field>
22952        where
22953            R: DeserializeReader,
22954        {
22955            use FieldDeserializerState as S;
22956            let mut event = event;
22957            let mut fallback = None;
22958            let mut allow_any_element = false;
22959            let (event, allow_any) = loop {
22960                let state = replace(&mut *self.state, S::Unknown__);
22961                event = match (state, event) {
22962                    (S::Annotation(Some(deserializer)), event) => {
22963                        let output = deserializer.next(reader, event)?;
22964                        match self.handle_annotation(reader, output, &mut fallback)? {
22965                            ElementHandlerOutput::Continue { event, allow_any } => {
22966                                allow_any_element = allow_any_element || allow_any;
22967                                event
22968                            }
22969                            ElementHandlerOutput::Break { event, allow_any } => {
22970                                break (event, allow_any)
22971                            }
22972                        }
22973                    }
22974                    (_, Event::End(_)) => {
22975                        if let Some(fallback) = fallback.take() {
22976                            self.finish_state(reader, fallback)?;
22977                        }
22978                        return Ok(DeserializerOutput {
22979                            artifact: DeserializerArtifact::Data(self.finish(reader)?),
22980                            event: DeserializerEvent::None,
22981                            allow_any: false,
22982                        });
22983                    }
22984                    (S::Init__, event) => {
22985                        fallback.get_or_insert(S::Init__);
22986                        *self.state = FieldDeserializerState::Annotation(None);
22987                        event
22988                    }
22989                    (S::Annotation(None), event @ (Event::Start(_) | Event::Empty(_))) => {
22990                        if reader.check_start_tag_name(&event, Some(&super::NS_XS), b"annotation") {
22991                            let output =
22992                                <super::Annotation as WithDeserializer>::Deserializer::init(
22993                                    reader, event,
22994                                )?;
22995                            match self.handle_annotation(reader, output, &mut fallback)? {
22996                                ElementHandlerOutput::Continue { event, allow_any } => {
22997                                    allow_any_element = allow_any_element || allow_any;
22998                                    event
22999                                }
23000                                ElementHandlerOutput::Break { event, allow_any } => {
23001                                    break (event, allow_any)
23002                                }
23003                            }
23004                        } else {
23005                            *self.state = S::Done__;
23006                            allow_any_element = true;
23007                            fallback.get_or_insert(S::Annotation(None));
23008                            event
23009                        }
23010                    }
23011                    (S::Done__, event) => {
23012                        fallback.get_or_insert(S::Done__);
23013                        break (DeserializerEvent::Continue(event), allow_any_element);
23014                    }
23015                    (S::Unknown__, _) => unreachable!(),
23016                    (state, event) => {
23017                        *self.state = state;
23018                        break (DeserializerEvent::Break(event), false);
23019                    }
23020                }
23021            };
23022            if let Some(fallback) = fallback {
23023                *self.state = fallback;
23024            }
23025            Ok(DeserializerOutput {
23026                artifact: DeserializerArtifact::Deserializer(self),
23027                event,
23028                allow_any,
23029            })
23030        }
23031        fn finish<R>(mut self, reader: &R) -> Result<super::Field, Error>
23032        where
23033            R: DeserializeReader,
23034        {
23035            let state = replace(&mut *self.state, FieldDeserializerState::Unknown__);
23036            self.finish_state(reader, state)?;
23037            Ok(super::Field {
23038                id: self.id,
23039                xpath: self.xpath,
23040                xpath_default_namespace: self.xpath_default_namespace,
23041                annotation: self.annotation,
23042            })
23043        }
23044    }
23045    #[derive(Debug)]
23046    pub struct FacetTypeDeserializer {
23047        id: Option<String>,
23048        value: String,
23049        fixed: bool,
23050        annotation: Option<super::Annotation>,
23051        state: Box<FacetTypeDeserializerState>,
23052    }
23053    #[derive(Debug)]
23054    enum FacetTypeDeserializerState {
23055        Init__,
23056        Annotation(Option<<super::Annotation as WithDeserializer>::Deserializer>),
23057        Done__,
23058        Unknown__,
23059    }
23060    impl FacetTypeDeserializer {
23061        fn from_bytes_start<R>(reader: &R, bytes_start: &BytesStart<'_>) -> Result<Box<Self>, Error>
23062        where
23063            R: DeserializeReader,
23064        {
23065            let mut id: Option<String> = None;
23066            let mut value: Option<String> = None;
23067            let mut fixed: Option<bool> = None;
23068            for attrib in filter_xmlns_attributes(bytes_start) {
23069                let attrib = attrib?;
23070                if matches!(
23071                    reader.resolve_local_name(attrib.key, &super::NS_XS),
23072                    Some(b"id")
23073                ) {
23074                    reader.read_attrib(&mut id, b"id", &attrib.value)?;
23075                } else if matches!(
23076                    reader.resolve_local_name(attrib.key, &super::NS_XS),
23077                    Some(b"value")
23078                ) {
23079                    reader.read_attrib(&mut value, b"value", &attrib.value)?;
23080                } else if matches!(
23081                    reader.resolve_local_name(attrib.key, &super::NS_XS),
23082                    Some(b"fixed")
23083                ) {
23084                    reader.read_attrib(&mut fixed, b"fixed", &attrib.value)?;
23085                }
23086            }
23087            Ok(Box::new(Self {
23088                id: id,
23089                value: value
23090                    .ok_or_else(|| reader.map_error(ErrorKind::MissingAttribute("value".into())))?,
23091                fixed: fixed.unwrap_or_else(super::FacetType::default_fixed),
23092                annotation: None,
23093                state: Box::new(FacetTypeDeserializerState::Init__),
23094            }))
23095        }
23096        fn finish_state<R>(
23097            &mut self,
23098            reader: &R,
23099            state: FacetTypeDeserializerState,
23100        ) -> Result<(), Error>
23101        where
23102            R: DeserializeReader,
23103        {
23104            use FacetTypeDeserializerState as S;
23105            match state {
23106                S::Annotation(Some(deserializer)) => {
23107                    self.store_annotation(deserializer.finish(reader)?)?
23108                }
23109                _ => (),
23110            }
23111            Ok(())
23112        }
23113        fn store_annotation(&mut self, value: super::Annotation) -> Result<(), Error> {
23114            if self.annotation.is_some() {
23115                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
23116                    b"annotation",
23117                )))?;
23118            }
23119            self.annotation = Some(value);
23120            Ok(())
23121        }
23122        fn handle_annotation<'de, R>(
23123            &mut self,
23124            reader: &R,
23125            output: DeserializerOutput<'de, super::Annotation>,
23126            fallback: &mut Option<FacetTypeDeserializerState>,
23127        ) -> Result<ElementHandlerOutput<'de>, Error>
23128        where
23129            R: DeserializeReader,
23130        {
23131            let DeserializerOutput {
23132                artifact,
23133                event,
23134                allow_any,
23135            } = output;
23136            if artifact.is_none() {
23137                fallback.get_or_insert(FacetTypeDeserializerState::Annotation(None));
23138                *self.state = FacetTypeDeserializerState::Done__;
23139                return Ok(ElementHandlerOutput::from_event(event, allow_any));
23140            }
23141            if let Some(fallback) = fallback.take() {
23142                self.finish_state(reader, fallback)?;
23143            }
23144            Ok(match artifact {
23145                DeserializerArtifact::None => unreachable!(),
23146                DeserializerArtifact::Data(data) => {
23147                    self.store_annotation(data)?;
23148                    *self.state = FacetTypeDeserializerState::Done__;
23149                    ElementHandlerOutput::from_event(event, allow_any)
23150                }
23151                DeserializerArtifact::Deserializer(deserializer) => {
23152                    let ret = ElementHandlerOutput::from_event(event, allow_any);
23153                    match &ret {
23154                        ElementHandlerOutput::Continue { .. } => {
23155                            fallback.get_or_insert(FacetTypeDeserializerState::Annotation(Some(
23156                                deserializer,
23157                            )));
23158                            *self.state = FacetTypeDeserializerState::Done__;
23159                        }
23160                        ElementHandlerOutput::Break { .. } => {
23161                            *self.state =
23162                                FacetTypeDeserializerState::Annotation(Some(deserializer));
23163                        }
23164                    }
23165                    ret
23166                }
23167            })
23168        }
23169    }
23170    impl<'de> Deserializer<'de, super::FacetType> for Box<FacetTypeDeserializer> {
23171        fn init<R>(reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::FacetType>
23172        where
23173            R: DeserializeReader,
23174        {
23175            reader
23176                .init_deserializer_from_start_event(event, FacetTypeDeserializer::from_bytes_start)
23177        }
23178        fn next<R>(
23179            mut self,
23180            reader: &R,
23181            event: Event<'de>,
23182        ) -> DeserializerResult<'de, super::FacetType>
23183        where
23184            R: DeserializeReader,
23185        {
23186            use FacetTypeDeserializerState as S;
23187            let mut event = event;
23188            let mut fallback = None;
23189            let mut allow_any_element = false;
23190            let (event, allow_any) = loop {
23191                let state = replace(&mut *self.state, S::Unknown__);
23192                event = match (state, event) {
23193                    (S::Annotation(Some(deserializer)), event) => {
23194                        let output = deserializer.next(reader, event)?;
23195                        match self.handle_annotation(reader, output, &mut fallback)? {
23196                            ElementHandlerOutput::Continue { event, allow_any } => {
23197                                allow_any_element = allow_any_element || allow_any;
23198                                event
23199                            }
23200                            ElementHandlerOutput::Break { event, allow_any } => {
23201                                break (event, allow_any)
23202                            }
23203                        }
23204                    }
23205                    (_, Event::End(_)) => {
23206                        if let Some(fallback) = fallback.take() {
23207                            self.finish_state(reader, fallback)?;
23208                        }
23209                        return Ok(DeserializerOutput {
23210                            artifact: DeserializerArtifact::Data(self.finish(reader)?),
23211                            event: DeserializerEvent::None,
23212                            allow_any: false,
23213                        });
23214                    }
23215                    (S::Init__, event) => {
23216                        fallback.get_or_insert(S::Init__);
23217                        *self.state = FacetTypeDeserializerState::Annotation(None);
23218                        event
23219                    }
23220                    (S::Annotation(None), event @ (Event::Start(_) | Event::Empty(_))) => {
23221                        if reader.check_start_tag_name(&event, Some(&super::NS_XS), b"annotation") {
23222                            let output =
23223                                <super::Annotation as WithDeserializer>::Deserializer::init(
23224                                    reader, event,
23225                                )?;
23226                            match self.handle_annotation(reader, output, &mut fallback)? {
23227                                ElementHandlerOutput::Continue { event, allow_any } => {
23228                                    allow_any_element = allow_any_element || allow_any;
23229                                    event
23230                                }
23231                                ElementHandlerOutput::Break { event, allow_any } => {
23232                                    break (event, allow_any)
23233                                }
23234                            }
23235                        } else {
23236                            *self.state = S::Done__;
23237                            allow_any_element = true;
23238                            fallback.get_or_insert(S::Annotation(None));
23239                            event
23240                        }
23241                    }
23242                    (S::Done__, event) => {
23243                        fallback.get_or_insert(S::Done__);
23244                        break (DeserializerEvent::Continue(event), allow_any_element);
23245                    }
23246                    (S::Unknown__, _) => unreachable!(),
23247                    (state, event) => {
23248                        *self.state = state;
23249                        break (DeserializerEvent::Break(event), false);
23250                    }
23251                }
23252            };
23253            if let Some(fallback) = fallback {
23254                *self.state = fallback;
23255            }
23256            Ok(DeserializerOutput {
23257                artifact: DeserializerArtifact::Deserializer(self),
23258                event,
23259                allow_any,
23260            })
23261        }
23262        fn finish<R>(mut self, reader: &R) -> Result<super::FacetType, Error>
23263        where
23264            R: DeserializeReader,
23265        {
23266            let state = replace(&mut *self.state, FacetTypeDeserializerState::Unknown__);
23267            self.finish_state(reader, state)?;
23268            Ok(super::FacetType {
23269                id: self.id,
23270                value: self.value,
23271                fixed: self.fixed,
23272                annotation: self.annotation,
23273            })
23274        }
23275    }
23276}