xsd_parser/schema/
xs_generated.rs

1pub const NS_XS: Namespace = Namespace::new_const(b"http://www.w3.org/2001/XMLSchema");
2pub const NS_XML: Namespace = Namespace::new_const(b"http://www.w3.org/XML/1998/namespace");
3use crate::{
4    quick_xml::{
5        DeserializeBytes, DeserializeReader, Error, ErrorKind, RawByteStr, WithDeserializer,
6    },
7    schema::Namespace,
8};
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 = quick_xml_deserialize::SchemaDeserializer;
63}
64impl WithDeserializer for SchemaContent {
65    type Deserializer = 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 = 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 = 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 = quick_xml_deserialize::RedefineDeserializer;
205}
206impl WithDeserializer for RedefineContent {
207    type Deserializer = 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 = quick_xml_deserialize::OverrideDeserializer;
228}
229impl WithDeserializer for OverrideContent {
230    type Deserializer = 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 = quick_xml_deserialize::AnnotationDeserializer;
244}
245impl WithDeserializer for AnnotationContent {
246    type Deserializer = 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 = 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 = quick_xml_deserialize::SimpleBaseTypeDeserializer;
285}
286impl WithDeserializer for SimpleBaseTypeContent {
287    type Deserializer = 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 = quick_xml_deserialize::ComplexBaseTypeDeserializer;
327}
328impl WithDeserializer for ComplexBaseTypeContent {
329    type Deserializer = 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 = quick_xml_deserialize::GroupTypeDeserializer;
362}
363impl WithDeserializer for GroupTypeContent {
364    type Deserializer = 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 = quick_xml_deserialize::AttributeGroupTypeDeserializer;
382}
383impl WithDeserializer for AttributeGroupTypeContent {
384    type Deserializer = 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<ElementSubstitutionGroupType>,
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 = quick_xml_deserialize::ElementTypeDeserializer;
431}
432impl WithDeserializer for ElementTypeContent {
433    type Deserializer = 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 = 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 = 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 = 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 = 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 = 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 = quick_xml_deserialize::RestrictionDeserializer;
591}
592impl WithDeserializer for RestrictionContent {
593    type Deserializer = 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 = quick_xml_deserialize::ListDeserializer;
604}
605#[derive(Debug, Clone, Eq, PartialEq)]
606pub struct Union {
607    pub id: Option<String>,
608    pub member_types: Option<ElementSubstitutionGroupType>,
609    pub annotation: Option<Annotation>,
610    pub simple_type: Vec<SimpleBaseType>,
611}
612impl WithDeserializer for Union {
613    type Deserializer = 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 = quick_xml_deserialize::SimpleContentDeserializer;
646}
647impl WithDeserializer for SimpleContentContent {
648    type Deserializer = 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 = quick_xml_deserialize::ComplexContentDeserializer;
664}
665impl WithDeserializer for ComplexContentContent {
666    type Deserializer = 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 = 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 = 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 = 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 = quick_xml_deserialize::AnyDeserializer;
739}
740#[derive(Debug, Clone, Eq, PartialEq, Default)]
741pub struct ElementSubstitutionGroupType(pub Vec<QName>);
742impl DeserializeBytes for ElementSubstitutionGroupType {
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 = quick_xml_deserialize::AltTypeDeserializer;
771}
772impl WithDeserializer for AltTypeContent {
773    type Deserializer = 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 = quick_xml_deserialize::KeybaseTypeDeserializer;
790}
791impl WithDeserializer for KeybaseTypeContent {
792    type Deserializer = 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 = quick_xml_deserialize::KeyrefDeserializer;
810}
811impl WithDeserializer for KeyrefContent {
812    type Deserializer = 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 = 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 = quick_xml_deserialize::RestrictionTypeDeserializer;
960}
961impl WithDeserializer for RestrictionTypeContent {
962    type Deserializer = 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 = quick_xml_deserialize::ExtensionTypeDeserializer;
985}
986impl WithDeserializer for ExtensionTypeContent {
987    type Deserializer = 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 = 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 = 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<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(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 ret = ElementHandlerOutput::from_event(event, allow_any);
1333                    match &ret {
1334                        ElementHandlerOutput::Continue { .. } => {
1335                            fallback
1336                                .get_or_insert(SchemaDeserializerState::Content__(deserializer));
1337                            *self.state = SchemaDeserializerState::Next__;
1338                        }
1339                        ElementHandlerOutput::Break { .. } => {
1340                            *self.state = SchemaDeserializerState::Content__(deserializer);
1341                        }
1342                    }
1343                    ret
1344                }
1345            })
1346        }
1347    }
1348    impl<'de> Deserializer<'de, super::Schema> for SchemaDeserializer {
1349        fn init<R>(reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::Schema>
1350        where
1351            R: DeserializeReader,
1352        {
1353            reader.init_deserializer_from_start_event(event, Self::from_bytes_start)
1354        }
1355        fn next<R>(
1356            mut self,
1357            reader: &R,
1358            event: Event<'de>,
1359        ) -> DeserializerResult<'de, super::Schema>
1360        where
1361            R: DeserializeReader,
1362        {
1363            use SchemaDeserializerState as S;
1364            let mut event = event;
1365            let mut fallback = None;
1366            let (event, allow_any) = loop {
1367                let state = replace(&mut *self.state, S::Unknown__);
1368                event = match (state, event) {
1369                    (S::Content__(deserializer), event) => {
1370                        let output = deserializer.next(reader, event)?;
1371                        match self.handle_content(reader, output, &mut fallback)? {
1372                            ElementHandlerOutput::Break { event, allow_any } => {
1373                                break (event, allow_any)
1374                            }
1375                            ElementHandlerOutput::Continue { event, .. } => event,
1376                        }
1377                    }
1378                    (_, Event::End(_)) => {
1379                        return Ok(DeserializerOutput {
1380                            artifact: DeserializerArtifact::Data(self.finish(reader)?),
1381                            event: DeserializerEvent::None,
1382                            allow_any: false,
1383                        });
1384                    }
1385                    (old_state @ (S::Init__ | S::Next__), event) => {
1386                        let output =
1387                            <super::SchemaContent as WithDeserializer>::Deserializer::init(
1388                                reader, event,
1389                            )?;
1390                        match self.handle_content(reader, output, &mut fallback)? {
1391                            ElementHandlerOutput::Break { event, allow_any } => {
1392                                if matches!(&*self.state, S::Unknown__) {
1393                                    *self.state = old_state;
1394                                }
1395                                break (event, allow_any);
1396                            }
1397                            ElementHandlerOutput::Continue { event, .. } => event,
1398                        }
1399                    }
1400                    (S::Unknown__, _) => unreachable!(),
1401                }
1402            };
1403            Ok(DeserializerOutput {
1404                artifact: DeserializerArtifact::Deserializer(self),
1405                event,
1406                allow_any,
1407            })
1408        }
1409        fn finish<R>(mut self, reader: &R) -> Result<super::Schema, Error>
1410        where
1411            R: DeserializeReader,
1412        {
1413            let state = replace(&mut *self.state, SchemaDeserializerState::Unknown__);
1414            self.finish_state(reader, state)?;
1415            Ok(super::Schema {
1416                target_namespace: self.target_namespace,
1417                version: self.version,
1418                final_default: self.final_default,
1419                block_default: self.block_default,
1420                attribute_form_default: self.attribute_form_default,
1421                element_form_default: self.element_form_default,
1422                default_attributes: self.default_attributes,
1423                xpath_default_namespace: self.xpath_default_namespace,
1424                id: self.id,
1425                lang: self.lang,
1426                content: self.content,
1427            })
1428        }
1429    }
1430    #[derive(Debug)]
1431    pub enum SchemaContentDeserializer {
1432        Init__,
1433        Include(
1434            Option<super::Include>,
1435            Option<<super::Include as WithDeserializer>::Deserializer>,
1436        ),
1437        Import(
1438            Option<super::Import>,
1439            Option<<super::Import as WithDeserializer>::Deserializer>,
1440        ),
1441        Redefine(
1442            Option<super::Redefine>,
1443            Option<<super::Redefine as WithDeserializer>::Deserializer>,
1444        ),
1445        Override(
1446            Option<super::Override>,
1447            Option<<super::Override as WithDeserializer>::Deserializer>,
1448        ),
1449        Annotation(
1450            Option<super::Annotation>,
1451            Option<<super::Annotation as WithDeserializer>::Deserializer>,
1452        ),
1453        DefaultOpenContent(
1454            Option<super::DefaultOpenContent>,
1455            Option<<super::DefaultOpenContent as WithDeserializer>::Deserializer>,
1456        ),
1457        SimpleType(
1458            Option<super::SimpleBaseType>,
1459            Option<<super::SimpleBaseType as WithDeserializer>::Deserializer>,
1460        ),
1461        ComplexType(
1462            Option<super::ComplexBaseType>,
1463            Option<<super::ComplexBaseType as WithDeserializer>::Deserializer>,
1464        ),
1465        Group(
1466            Option<super::GroupType>,
1467            Option<<super::GroupType as WithDeserializer>::Deserializer>,
1468        ),
1469        AttributeGroup(
1470            Option<super::AttributeGroupType>,
1471            Option<<super::AttributeGroupType as WithDeserializer>::Deserializer>,
1472        ),
1473        Element(
1474            Option<super::ElementType>,
1475            Option<<super::ElementType as WithDeserializer>::Deserializer>,
1476        ),
1477        Attribute(
1478            Option<super::AttributeType>,
1479            Option<<super::AttributeType as WithDeserializer>::Deserializer>,
1480        ),
1481        Notation(
1482            Option<super::Notation>,
1483            Option<<super::Notation as WithDeserializer>::Deserializer>,
1484        ),
1485        Done__(super::SchemaContent),
1486        Unknown__,
1487    }
1488    impl SchemaContentDeserializer {
1489        fn find_suitable<'de, R>(
1490            &mut self,
1491            reader: &R,
1492            event: Event<'de>,
1493            fallback: &mut Option<SchemaContentDeserializer>,
1494        ) -> Result<ElementHandlerOutput<'de>, Error>
1495        where
1496            R: DeserializeReader,
1497        {
1498            let (Event::Start(x) | Event::Empty(x)) = &event else {
1499                *self = Self::Init__;
1500                return Ok(ElementHandlerOutput::return_to_parent(event, false));
1501            };
1502            if matches!(
1503                reader.resolve_local_name(x.name(), &super::NS_XS),
1504                Some(b"include")
1505            ) {
1506                let output =
1507                    <super::Include as WithDeserializer>::Deserializer::init(reader, event)?;
1508                return self.handle_include(reader, Default::default(), output, &mut *fallback);
1509            }
1510            if matches!(
1511                reader.resolve_local_name(x.name(), &super::NS_XS),
1512                Some(b"import")
1513            ) {
1514                let output =
1515                    <super::Import as WithDeserializer>::Deserializer::init(reader, event)?;
1516                return self.handle_import(reader, Default::default(), output, &mut *fallback);
1517            }
1518            if matches!(
1519                reader.resolve_local_name(x.name(), &super::NS_XS),
1520                Some(b"redefine")
1521            ) {
1522                let output =
1523                    <super::Redefine as WithDeserializer>::Deserializer::init(reader, event)?;
1524                return self.handle_redefine(reader, Default::default(), output, &mut *fallback);
1525            }
1526            if matches!(
1527                reader.resolve_local_name(x.name(), &super::NS_XS),
1528                Some(b"override")
1529            ) {
1530                let output =
1531                    <super::Override as WithDeserializer>::Deserializer::init(reader, event)?;
1532                return self.handle_override_(reader, Default::default(), output, &mut *fallback);
1533            }
1534            if matches!(
1535                reader.resolve_local_name(x.name(), &super::NS_XS),
1536                Some(b"annotation")
1537            ) {
1538                let output =
1539                    <super::Annotation as WithDeserializer>::Deserializer::init(reader, event)?;
1540                return self.handle_annotation(reader, Default::default(), output, &mut *fallback);
1541            }
1542            if matches!(
1543                reader.resolve_local_name(x.name(), &super::NS_XS),
1544                Some(b"defaultOpenContent")
1545            ) {
1546                let output = <super::DefaultOpenContent as WithDeserializer>::Deserializer::init(
1547                    reader, event,
1548                )?;
1549                return self.handle_default_open_content(
1550                    reader,
1551                    Default::default(),
1552                    output,
1553                    &mut *fallback,
1554                );
1555            }
1556            if matches!(
1557                reader.resolve_local_name(x.name(), &super::NS_XS),
1558                Some(b"simpleType")
1559            ) {
1560                let output =
1561                    <super::SimpleBaseType as WithDeserializer>::Deserializer::init(reader, event)?;
1562                return self.handle_simple_type(reader, Default::default(), output, &mut *fallback);
1563            }
1564            if matches!(
1565                reader.resolve_local_name(x.name(), &super::NS_XS),
1566                Some(b"complexType")
1567            ) {
1568                let output = <super::ComplexBaseType as WithDeserializer>::Deserializer::init(
1569                    reader, event,
1570                )?;
1571                return self.handle_complex_type(
1572                    reader,
1573                    Default::default(),
1574                    output,
1575                    &mut *fallback,
1576                );
1577            }
1578            if matches!(
1579                reader.resolve_local_name(x.name(), &super::NS_XS),
1580                Some(b"group")
1581            ) {
1582                let output =
1583                    <super::GroupType as WithDeserializer>::Deserializer::init(reader, event)?;
1584                return self.handle_group(reader, Default::default(), output, &mut *fallback);
1585            }
1586            if matches!(
1587                reader.resolve_local_name(x.name(), &super::NS_XS),
1588                Some(b"attributeGroup")
1589            ) {
1590                let output = <super::AttributeGroupType as WithDeserializer>::Deserializer::init(
1591                    reader, event,
1592                )?;
1593                return self.handle_attribute_group(
1594                    reader,
1595                    Default::default(),
1596                    output,
1597                    &mut *fallback,
1598                );
1599            }
1600            if matches!(
1601                reader.resolve_local_name(x.name(), &super::NS_XS),
1602                Some(b"element")
1603            ) {
1604                let output =
1605                    <super::ElementType as WithDeserializer>::Deserializer::init(reader, event)?;
1606                return self.handle_element(reader, Default::default(), output, &mut *fallback);
1607            }
1608            if matches!(
1609                reader.resolve_local_name(x.name(), &super::NS_XS),
1610                Some(b"attribute")
1611            ) {
1612                let output =
1613                    <super::AttributeType as WithDeserializer>::Deserializer::init(reader, event)?;
1614                return self.handle_attribute(reader, Default::default(), output, &mut *fallback);
1615            }
1616            if matches!(
1617                reader.resolve_local_name(x.name(), &super::NS_XS),
1618                Some(b"notation")
1619            ) {
1620                let output =
1621                    <super::Notation as WithDeserializer>::Deserializer::init(reader, event)?;
1622                return self.handle_notation(reader, Default::default(), output, &mut *fallback);
1623            }
1624            *self = Self::Init__;
1625            Ok(ElementHandlerOutput::return_to_parent(event, false))
1626        }
1627        fn store_include(
1628            values: &mut Option<super::Include>,
1629            value: super::Include,
1630        ) -> Result<(), Error> {
1631            if values.is_some() {
1632                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
1633                    b"include",
1634                )))?;
1635            }
1636            *values = Some(value);
1637            Ok(())
1638        }
1639        fn store_import(
1640            values: &mut Option<super::Import>,
1641            value: super::Import,
1642        ) -> Result<(), Error> {
1643            if values.is_some() {
1644                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
1645                    b"import",
1646                )))?;
1647            }
1648            *values = Some(value);
1649            Ok(())
1650        }
1651        fn store_redefine(
1652            values: &mut Option<super::Redefine>,
1653            value: super::Redefine,
1654        ) -> Result<(), Error> {
1655            if values.is_some() {
1656                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
1657                    b"redefine",
1658                )))?;
1659            }
1660            *values = Some(value);
1661            Ok(())
1662        }
1663        fn store_override_(
1664            values: &mut Option<super::Override>,
1665            value: super::Override,
1666        ) -> Result<(), Error> {
1667            if values.is_some() {
1668                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
1669                    b"override",
1670                )))?;
1671            }
1672            *values = Some(value);
1673            Ok(())
1674        }
1675        fn store_annotation(
1676            values: &mut Option<super::Annotation>,
1677            value: super::Annotation,
1678        ) -> Result<(), Error> {
1679            if values.is_some() {
1680                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
1681                    b"annotation",
1682                )))?;
1683            }
1684            *values = Some(value);
1685            Ok(())
1686        }
1687        fn store_default_open_content(
1688            values: &mut Option<super::DefaultOpenContent>,
1689            value: super::DefaultOpenContent,
1690        ) -> Result<(), Error> {
1691            if values.is_some() {
1692                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
1693                    b"defaultOpenContent",
1694                )))?;
1695            }
1696            *values = Some(value);
1697            Ok(())
1698        }
1699        fn store_simple_type(
1700            values: &mut Option<super::SimpleBaseType>,
1701            value: super::SimpleBaseType,
1702        ) -> Result<(), Error> {
1703            if values.is_some() {
1704                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
1705                    b"simpleType",
1706                )))?;
1707            }
1708            *values = Some(value);
1709            Ok(())
1710        }
1711        fn store_complex_type(
1712            values: &mut Option<super::ComplexBaseType>,
1713            value: super::ComplexBaseType,
1714        ) -> Result<(), Error> {
1715            if values.is_some() {
1716                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
1717                    b"complexType",
1718                )))?;
1719            }
1720            *values = Some(value);
1721            Ok(())
1722        }
1723        fn store_group(
1724            values: &mut Option<super::GroupType>,
1725            value: super::GroupType,
1726        ) -> Result<(), Error> {
1727            if values.is_some() {
1728                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
1729                    b"group",
1730                )))?;
1731            }
1732            *values = Some(value);
1733            Ok(())
1734        }
1735        fn store_attribute_group(
1736            values: &mut Option<super::AttributeGroupType>,
1737            value: super::AttributeGroupType,
1738        ) -> Result<(), Error> {
1739            if values.is_some() {
1740                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
1741                    b"attributeGroup",
1742                )))?;
1743            }
1744            *values = Some(value);
1745            Ok(())
1746        }
1747        fn store_element(
1748            values: &mut Option<super::ElementType>,
1749            value: super::ElementType,
1750        ) -> Result<(), Error> {
1751            if values.is_some() {
1752                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
1753                    b"element",
1754                )))?;
1755            }
1756            *values = Some(value);
1757            Ok(())
1758        }
1759        fn store_attribute(
1760            values: &mut Option<super::AttributeType>,
1761            value: super::AttributeType,
1762        ) -> Result<(), Error> {
1763            if values.is_some() {
1764                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
1765                    b"attribute",
1766                )))?;
1767            }
1768            *values = Some(value);
1769            Ok(())
1770        }
1771        fn store_notation(
1772            values: &mut Option<super::Notation>,
1773            value: super::Notation,
1774        ) -> Result<(), Error> {
1775            if values.is_some() {
1776                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
1777                    b"notation",
1778                )))?;
1779            }
1780            *values = Some(value);
1781            Ok(())
1782        }
1783        fn handle_include<'de, R>(
1784            &mut self,
1785            reader: &R,
1786            mut values: Option<super::Include>,
1787            output: DeserializerOutput<'de, super::Include>,
1788            fallback: &mut Option<Self>,
1789        ) -> Result<ElementHandlerOutput<'de>, Error>
1790        where
1791            R: DeserializeReader,
1792        {
1793            let DeserializerOutput {
1794                artifact,
1795                event,
1796                allow_any,
1797            } = output;
1798            if artifact.is_none() {
1799                *self = match fallback.take() {
1800                    None => Self::Init__,
1801                    Some(Self::Include(_, Some(deserializer))) => {
1802                        Self::Include(values, Some(deserializer))
1803                    }
1804                    _ => unreachable!(),
1805                };
1806                return Ok(ElementHandlerOutput::break_(event, allow_any));
1807            }
1808            match fallback.take() {
1809                None => (),
1810                Some(Self::Include(_, Some(deserializer))) => {
1811                    let data = deserializer.finish(reader)?;
1812                    Self::store_include(&mut values, data)?;
1813                }
1814                Some(_) => unreachable!(),
1815            }
1816            Ok(match artifact {
1817                DeserializerArtifact::None => unreachable!(),
1818                DeserializerArtifact::Data(data) => {
1819                    Self::store_include(&mut values, data)?;
1820                    let data = Self::Include(values, None).finish(reader)?;
1821                    *self = Self::Done__(data);
1822                    ElementHandlerOutput::Break { event, allow_any }
1823                }
1824                DeserializerArtifact::Deserializer(deserializer) => {
1825                    *self = Self::Include(values, Some(deserializer));
1826                    ElementHandlerOutput::from_event_end(event, allow_any)
1827                }
1828            })
1829        }
1830        fn handle_import<'de, R>(
1831            &mut self,
1832            reader: &R,
1833            mut values: Option<super::Import>,
1834            output: DeserializerOutput<'de, super::Import>,
1835            fallback: &mut Option<Self>,
1836        ) -> Result<ElementHandlerOutput<'de>, Error>
1837        where
1838            R: DeserializeReader,
1839        {
1840            let DeserializerOutput {
1841                artifact,
1842                event,
1843                allow_any,
1844            } = output;
1845            if artifact.is_none() {
1846                *self = match fallback.take() {
1847                    None => Self::Init__,
1848                    Some(Self::Import(_, Some(deserializer))) => {
1849                        Self::Import(values, Some(deserializer))
1850                    }
1851                    _ => unreachable!(),
1852                };
1853                return Ok(ElementHandlerOutput::break_(event, allow_any));
1854            }
1855            match fallback.take() {
1856                None => (),
1857                Some(Self::Import(_, Some(deserializer))) => {
1858                    let data = deserializer.finish(reader)?;
1859                    Self::store_import(&mut values, data)?;
1860                }
1861                Some(_) => unreachable!(),
1862            }
1863            Ok(match artifact {
1864                DeserializerArtifact::None => unreachable!(),
1865                DeserializerArtifact::Data(data) => {
1866                    Self::store_import(&mut values, data)?;
1867                    let data = Self::Import(values, None).finish(reader)?;
1868                    *self = Self::Done__(data);
1869                    ElementHandlerOutput::Break { event, allow_any }
1870                }
1871                DeserializerArtifact::Deserializer(deserializer) => {
1872                    *self = Self::Import(values, Some(deserializer));
1873                    ElementHandlerOutput::from_event_end(event, allow_any)
1874                }
1875            })
1876        }
1877        fn handle_redefine<'de, R>(
1878            &mut self,
1879            reader: &R,
1880            mut values: Option<super::Redefine>,
1881            output: DeserializerOutput<'de, super::Redefine>,
1882            fallback: &mut Option<Self>,
1883        ) -> Result<ElementHandlerOutput<'de>, Error>
1884        where
1885            R: DeserializeReader,
1886        {
1887            let DeserializerOutput {
1888                artifact,
1889                event,
1890                allow_any,
1891            } = output;
1892            if artifact.is_none() {
1893                *self = match fallback.take() {
1894                    None => Self::Init__,
1895                    Some(Self::Redefine(_, Some(deserializer))) => {
1896                        Self::Redefine(values, Some(deserializer))
1897                    }
1898                    _ => unreachable!(),
1899                };
1900                return Ok(ElementHandlerOutput::break_(event, allow_any));
1901            }
1902            match fallback.take() {
1903                None => (),
1904                Some(Self::Redefine(_, Some(deserializer))) => {
1905                    let data = deserializer.finish(reader)?;
1906                    Self::store_redefine(&mut values, data)?;
1907                }
1908                Some(_) => unreachable!(),
1909            }
1910            Ok(match artifact {
1911                DeserializerArtifact::None => unreachable!(),
1912                DeserializerArtifact::Data(data) => {
1913                    Self::store_redefine(&mut values, data)?;
1914                    let data = Self::Redefine(values, None).finish(reader)?;
1915                    *self = Self::Done__(data);
1916                    ElementHandlerOutput::Break { event, allow_any }
1917                }
1918                DeserializerArtifact::Deserializer(deserializer) => {
1919                    *self = Self::Redefine(values, Some(deserializer));
1920                    ElementHandlerOutput::from_event_end(event, allow_any)
1921                }
1922            })
1923        }
1924        fn handle_override_<'de, R>(
1925            &mut self,
1926            reader: &R,
1927            mut values: Option<super::Override>,
1928            output: DeserializerOutput<'de, super::Override>,
1929            fallback: &mut Option<Self>,
1930        ) -> Result<ElementHandlerOutput<'de>, Error>
1931        where
1932            R: DeserializeReader,
1933        {
1934            let DeserializerOutput {
1935                artifact,
1936                event,
1937                allow_any,
1938            } = output;
1939            if artifact.is_none() {
1940                *self = match fallback.take() {
1941                    None => Self::Init__,
1942                    Some(Self::Override(_, Some(deserializer))) => {
1943                        Self::Override(values, Some(deserializer))
1944                    }
1945                    _ => unreachable!(),
1946                };
1947                return Ok(ElementHandlerOutput::break_(event, allow_any));
1948            }
1949            match fallback.take() {
1950                None => (),
1951                Some(Self::Override(_, Some(deserializer))) => {
1952                    let data = deserializer.finish(reader)?;
1953                    Self::store_override_(&mut values, data)?;
1954                }
1955                Some(_) => unreachable!(),
1956            }
1957            Ok(match artifact {
1958                DeserializerArtifact::None => unreachable!(),
1959                DeserializerArtifact::Data(data) => {
1960                    Self::store_override_(&mut values, data)?;
1961                    let data = Self::Override(values, None).finish(reader)?;
1962                    *self = Self::Done__(data);
1963                    ElementHandlerOutput::Break { event, allow_any }
1964                }
1965                DeserializerArtifact::Deserializer(deserializer) => {
1966                    *self = Self::Override(values, Some(deserializer));
1967                    ElementHandlerOutput::from_event_end(event, allow_any)
1968                }
1969            })
1970        }
1971        fn handle_annotation<'de, R>(
1972            &mut self,
1973            reader: &R,
1974            mut values: Option<super::Annotation>,
1975            output: DeserializerOutput<'de, super::Annotation>,
1976            fallback: &mut Option<Self>,
1977        ) -> Result<ElementHandlerOutput<'de>, Error>
1978        where
1979            R: DeserializeReader,
1980        {
1981            let DeserializerOutput {
1982                artifact,
1983                event,
1984                allow_any,
1985            } = output;
1986            if artifact.is_none() {
1987                *self = match fallback.take() {
1988                    None => Self::Init__,
1989                    Some(Self::Annotation(_, Some(deserializer))) => {
1990                        Self::Annotation(values, Some(deserializer))
1991                    }
1992                    _ => unreachable!(),
1993                };
1994                return Ok(ElementHandlerOutput::break_(event, allow_any));
1995            }
1996            match fallback.take() {
1997                None => (),
1998                Some(Self::Annotation(_, Some(deserializer))) => {
1999                    let data = deserializer.finish(reader)?;
2000                    Self::store_annotation(&mut values, data)?;
2001                }
2002                Some(_) => unreachable!(),
2003            }
2004            Ok(match artifact {
2005                DeserializerArtifact::None => unreachable!(),
2006                DeserializerArtifact::Data(data) => {
2007                    Self::store_annotation(&mut values, data)?;
2008                    let data = Self::Annotation(values, None).finish(reader)?;
2009                    *self = Self::Done__(data);
2010                    ElementHandlerOutput::Break { event, allow_any }
2011                }
2012                DeserializerArtifact::Deserializer(deserializer) => {
2013                    *self = Self::Annotation(values, Some(deserializer));
2014                    ElementHandlerOutput::from_event_end(event, allow_any)
2015                }
2016            })
2017        }
2018        fn handle_default_open_content<'de, R>(
2019            &mut self,
2020            reader: &R,
2021            mut values: Option<super::DefaultOpenContent>,
2022            output: DeserializerOutput<'de, super::DefaultOpenContent>,
2023            fallback: &mut Option<Self>,
2024        ) -> Result<ElementHandlerOutput<'de>, Error>
2025        where
2026            R: DeserializeReader,
2027        {
2028            let DeserializerOutput {
2029                artifact,
2030                event,
2031                allow_any,
2032            } = output;
2033            if artifact.is_none() {
2034                *self = match fallback.take() {
2035                    None => Self::Init__,
2036                    Some(Self::DefaultOpenContent(_, Some(deserializer))) => {
2037                        Self::DefaultOpenContent(values, Some(deserializer))
2038                    }
2039                    _ => unreachable!(),
2040                };
2041                return Ok(ElementHandlerOutput::break_(event, allow_any));
2042            }
2043            match fallback.take() {
2044                None => (),
2045                Some(Self::DefaultOpenContent(_, Some(deserializer))) => {
2046                    let data = deserializer.finish(reader)?;
2047                    Self::store_default_open_content(&mut values, data)?;
2048                }
2049                Some(_) => unreachable!(),
2050            }
2051            Ok(match artifact {
2052                DeserializerArtifact::None => unreachable!(),
2053                DeserializerArtifact::Data(data) => {
2054                    Self::store_default_open_content(&mut values, data)?;
2055                    let data = Self::DefaultOpenContent(values, None).finish(reader)?;
2056                    *self = Self::Done__(data);
2057                    ElementHandlerOutput::Break { event, allow_any }
2058                }
2059                DeserializerArtifact::Deserializer(deserializer) => {
2060                    *self = Self::DefaultOpenContent(values, Some(deserializer));
2061                    ElementHandlerOutput::from_event_end(event, allow_any)
2062                }
2063            })
2064        }
2065        fn handle_simple_type<'de, R>(
2066            &mut self,
2067            reader: &R,
2068            mut values: Option<super::SimpleBaseType>,
2069            output: DeserializerOutput<'de, super::SimpleBaseType>,
2070            fallback: &mut Option<Self>,
2071        ) -> Result<ElementHandlerOutput<'de>, Error>
2072        where
2073            R: DeserializeReader,
2074        {
2075            let DeserializerOutput {
2076                artifact,
2077                event,
2078                allow_any,
2079            } = output;
2080            if artifact.is_none() {
2081                *self = match fallback.take() {
2082                    None => Self::Init__,
2083                    Some(Self::SimpleType(_, Some(deserializer))) => {
2084                        Self::SimpleType(values, Some(deserializer))
2085                    }
2086                    _ => unreachable!(),
2087                };
2088                return Ok(ElementHandlerOutput::break_(event, allow_any));
2089            }
2090            match fallback.take() {
2091                None => (),
2092                Some(Self::SimpleType(_, Some(deserializer))) => {
2093                    let data = deserializer.finish(reader)?;
2094                    Self::store_simple_type(&mut values, data)?;
2095                }
2096                Some(_) => unreachable!(),
2097            }
2098            Ok(match artifact {
2099                DeserializerArtifact::None => unreachable!(),
2100                DeserializerArtifact::Data(data) => {
2101                    Self::store_simple_type(&mut values, data)?;
2102                    let data = Self::SimpleType(values, None).finish(reader)?;
2103                    *self = Self::Done__(data);
2104                    ElementHandlerOutput::Break { event, allow_any }
2105                }
2106                DeserializerArtifact::Deserializer(deserializer) => {
2107                    *self = Self::SimpleType(values, Some(deserializer));
2108                    ElementHandlerOutput::from_event_end(event, allow_any)
2109                }
2110            })
2111        }
2112        fn handle_complex_type<'de, R>(
2113            &mut self,
2114            reader: &R,
2115            mut values: Option<super::ComplexBaseType>,
2116            output: DeserializerOutput<'de, super::ComplexBaseType>,
2117            fallback: &mut Option<Self>,
2118        ) -> Result<ElementHandlerOutput<'de>, Error>
2119        where
2120            R: DeserializeReader,
2121        {
2122            let DeserializerOutput {
2123                artifact,
2124                event,
2125                allow_any,
2126            } = output;
2127            if artifact.is_none() {
2128                *self = match fallback.take() {
2129                    None => Self::Init__,
2130                    Some(Self::ComplexType(_, Some(deserializer))) => {
2131                        Self::ComplexType(values, Some(deserializer))
2132                    }
2133                    _ => unreachable!(),
2134                };
2135                return Ok(ElementHandlerOutput::break_(event, allow_any));
2136            }
2137            match fallback.take() {
2138                None => (),
2139                Some(Self::ComplexType(_, Some(deserializer))) => {
2140                    let data = deserializer.finish(reader)?;
2141                    Self::store_complex_type(&mut values, data)?;
2142                }
2143                Some(_) => unreachable!(),
2144            }
2145            Ok(match artifact {
2146                DeserializerArtifact::None => unreachable!(),
2147                DeserializerArtifact::Data(data) => {
2148                    Self::store_complex_type(&mut values, data)?;
2149                    let data = Self::ComplexType(values, None).finish(reader)?;
2150                    *self = Self::Done__(data);
2151                    ElementHandlerOutput::Break { event, allow_any }
2152                }
2153                DeserializerArtifact::Deserializer(deserializer) => {
2154                    *self = Self::ComplexType(values, Some(deserializer));
2155                    ElementHandlerOutput::from_event_end(event, allow_any)
2156                }
2157            })
2158        }
2159        fn handle_group<'de, R>(
2160            &mut self,
2161            reader: &R,
2162            mut values: Option<super::GroupType>,
2163            output: DeserializerOutput<'de, super::GroupType>,
2164            fallback: &mut Option<Self>,
2165        ) -> Result<ElementHandlerOutput<'de>, Error>
2166        where
2167            R: DeserializeReader,
2168        {
2169            let DeserializerOutput {
2170                artifact,
2171                event,
2172                allow_any,
2173            } = output;
2174            if artifact.is_none() {
2175                *self = match fallback.take() {
2176                    None => Self::Init__,
2177                    Some(Self::Group(_, Some(deserializer))) => {
2178                        Self::Group(values, Some(deserializer))
2179                    }
2180                    _ => unreachable!(),
2181                };
2182                return Ok(ElementHandlerOutput::break_(event, allow_any));
2183            }
2184            match fallback.take() {
2185                None => (),
2186                Some(Self::Group(_, Some(deserializer))) => {
2187                    let data = deserializer.finish(reader)?;
2188                    Self::store_group(&mut values, data)?;
2189                }
2190                Some(_) => unreachable!(),
2191            }
2192            Ok(match artifact {
2193                DeserializerArtifact::None => unreachable!(),
2194                DeserializerArtifact::Data(data) => {
2195                    Self::store_group(&mut values, data)?;
2196                    let data = Self::Group(values, None).finish(reader)?;
2197                    *self = Self::Done__(data);
2198                    ElementHandlerOutput::Break { event, allow_any }
2199                }
2200                DeserializerArtifact::Deserializer(deserializer) => {
2201                    *self = Self::Group(values, Some(deserializer));
2202                    ElementHandlerOutput::from_event_end(event, allow_any)
2203                }
2204            })
2205        }
2206        fn handle_attribute_group<'de, R>(
2207            &mut self,
2208            reader: &R,
2209            mut values: Option<super::AttributeGroupType>,
2210            output: DeserializerOutput<'de, super::AttributeGroupType>,
2211            fallback: &mut Option<Self>,
2212        ) -> Result<ElementHandlerOutput<'de>, Error>
2213        where
2214            R: DeserializeReader,
2215        {
2216            let DeserializerOutput {
2217                artifact,
2218                event,
2219                allow_any,
2220            } = output;
2221            if artifact.is_none() {
2222                *self = match fallback.take() {
2223                    None => Self::Init__,
2224                    Some(Self::AttributeGroup(_, Some(deserializer))) => {
2225                        Self::AttributeGroup(values, Some(deserializer))
2226                    }
2227                    _ => unreachable!(),
2228                };
2229                return Ok(ElementHandlerOutput::break_(event, allow_any));
2230            }
2231            match fallback.take() {
2232                None => (),
2233                Some(Self::AttributeGroup(_, Some(deserializer))) => {
2234                    let data = deserializer.finish(reader)?;
2235                    Self::store_attribute_group(&mut values, data)?;
2236                }
2237                Some(_) => unreachable!(),
2238            }
2239            Ok(match artifact {
2240                DeserializerArtifact::None => unreachable!(),
2241                DeserializerArtifact::Data(data) => {
2242                    Self::store_attribute_group(&mut values, data)?;
2243                    let data = Self::AttributeGroup(values, None).finish(reader)?;
2244                    *self = Self::Done__(data);
2245                    ElementHandlerOutput::Break { event, allow_any }
2246                }
2247                DeserializerArtifact::Deserializer(deserializer) => {
2248                    *self = Self::AttributeGroup(values, Some(deserializer));
2249                    ElementHandlerOutput::from_event_end(event, allow_any)
2250                }
2251            })
2252        }
2253        fn handle_element<'de, R>(
2254            &mut self,
2255            reader: &R,
2256            mut values: Option<super::ElementType>,
2257            output: DeserializerOutput<'de, super::ElementType>,
2258            fallback: &mut Option<Self>,
2259        ) -> Result<ElementHandlerOutput<'de>, Error>
2260        where
2261            R: DeserializeReader,
2262        {
2263            let DeserializerOutput {
2264                artifact,
2265                event,
2266                allow_any,
2267            } = output;
2268            if artifact.is_none() {
2269                *self = match fallback.take() {
2270                    None => Self::Init__,
2271                    Some(Self::Element(_, Some(deserializer))) => {
2272                        Self::Element(values, Some(deserializer))
2273                    }
2274                    _ => unreachable!(),
2275                };
2276                return Ok(ElementHandlerOutput::break_(event, allow_any));
2277            }
2278            match fallback.take() {
2279                None => (),
2280                Some(Self::Element(_, Some(deserializer))) => {
2281                    let data = deserializer.finish(reader)?;
2282                    Self::store_element(&mut values, data)?;
2283                }
2284                Some(_) => unreachable!(),
2285            }
2286            Ok(match artifact {
2287                DeserializerArtifact::None => unreachable!(),
2288                DeserializerArtifact::Data(data) => {
2289                    Self::store_element(&mut values, data)?;
2290                    let data = Self::Element(values, None).finish(reader)?;
2291                    *self = Self::Done__(data);
2292                    ElementHandlerOutput::Break { event, allow_any }
2293                }
2294                DeserializerArtifact::Deserializer(deserializer) => {
2295                    *self = Self::Element(values, Some(deserializer));
2296                    ElementHandlerOutput::from_event_end(event, allow_any)
2297                }
2298            })
2299        }
2300        fn handle_attribute<'de, R>(
2301            &mut self,
2302            reader: &R,
2303            mut values: Option<super::AttributeType>,
2304            output: DeserializerOutput<'de, super::AttributeType>,
2305            fallback: &mut Option<Self>,
2306        ) -> Result<ElementHandlerOutput<'de>, Error>
2307        where
2308            R: DeserializeReader,
2309        {
2310            let DeserializerOutput {
2311                artifact,
2312                event,
2313                allow_any,
2314            } = output;
2315            if artifact.is_none() {
2316                *self = match fallback.take() {
2317                    None => Self::Init__,
2318                    Some(Self::Attribute(_, Some(deserializer))) => {
2319                        Self::Attribute(values, Some(deserializer))
2320                    }
2321                    _ => unreachable!(),
2322                };
2323                return Ok(ElementHandlerOutput::break_(event, allow_any));
2324            }
2325            match fallback.take() {
2326                None => (),
2327                Some(Self::Attribute(_, Some(deserializer))) => {
2328                    let data = deserializer.finish(reader)?;
2329                    Self::store_attribute(&mut values, data)?;
2330                }
2331                Some(_) => unreachable!(),
2332            }
2333            Ok(match artifact {
2334                DeserializerArtifact::None => unreachable!(),
2335                DeserializerArtifact::Data(data) => {
2336                    Self::store_attribute(&mut values, data)?;
2337                    let data = Self::Attribute(values, None).finish(reader)?;
2338                    *self = Self::Done__(data);
2339                    ElementHandlerOutput::Break { event, allow_any }
2340                }
2341                DeserializerArtifact::Deserializer(deserializer) => {
2342                    *self = Self::Attribute(values, Some(deserializer));
2343                    ElementHandlerOutput::from_event_end(event, allow_any)
2344                }
2345            })
2346        }
2347        fn handle_notation<'de, R>(
2348            &mut self,
2349            reader: &R,
2350            mut values: Option<super::Notation>,
2351            output: DeserializerOutput<'de, super::Notation>,
2352            fallback: &mut Option<Self>,
2353        ) -> Result<ElementHandlerOutput<'de>, Error>
2354        where
2355            R: DeserializeReader,
2356        {
2357            let DeserializerOutput {
2358                artifact,
2359                event,
2360                allow_any,
2361            } = output;
2362            if artifact.is_none() {
2363                *self = match fallback.take() {
2364                    None => Self::Init__,
2365                    Some(Self::Notation(_, Some(deserializer))) => {
2366                        Self::Notation(values, Some(deserializer))
2367                    }
2368                    _ => unreachable!(),
2369                };
2370                return Ok(ElementHandlerOutput::break_(event, allow_any));
2371            }
2372            match fallback.take() {
2373                None => (),
2374                Some(Self::Notation(_, Some(deserializer))) => {
2375                    let data = deserializer.finish(reader)?;
2376                    Self::store_notation(&mut values, data)?;
2377                }
2378                Some(_) => unreachable!(),
2379            }
2380            Ok(match artifact {
2381                DeserializerArtifact::None => unreachable!(),
2382                DeserializerArtifact::Data(data) => {
2383                    Self::store_notation(&mut values, data)?;
2384                    let data = Self::Notation(values, None).finish(reader)?;
2385                    *self = Self::Done__(data);
2386                    ElementHandlerOutput::Break { event, allow_any }
2387                }
2388                DeserializerArtifact::Deserializer(deserializer) => {
2389                    *self = Self::Notation(values, Some(deserializer));
2390                    ElementHandlerOutput::from_event_end(event, allow_any)
2391                }
2392            })
2393        }
2394    }
2395    impl<'de> Deserializer<'de, super::SchemaContent> for SchemaContentDeserializer {
2396        fn init<R>(reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::SchemaContent>
2397        where
2398            R: DeserializeReader,
2399        {
2400            let deserializer = Self::Init__;
2401            let mut output = deserializer.next(reader, event)?;
2402            output.artifact = match output.artifact {
2403                DeserializerArtifact::Deserializer(Self::Init__) => DeserializerArtifact::None,
2404                artifact => artifact,
2405            };
2406            Ok(output)
2407        }
2408        fn next<R>(
2409            mut self,
2410            reader: &R,
2411            event: Event<'de>,
2412        ) -> DeserializerResult<'de, super::SchemaContent>
2413        where
2414            R: DeserializeReader,
2415        {
2416            let mut event = event;
2417            let mut fallback = None;
2418            let (event, allow_any) = loop {
2419                let state = replace(&mut self, Self::Unknown__);
2420                event = match (state, event) {
2421                    (Self::Include(values, Some(deserializer)), event) => {
2422                        let output = deserializer.next(reader, event)?;
2423                        match self.handle_include(reader, values, output, &mut fallback)? {
2424                            ElementHandlerOutput::Break { event, allow_any } => {
2425                                break (event, allow_any)
2426                            }
2427                            ElementHandlerOutput::Continue { event, .. } => event,
2428                        }
2429                    }
2430                    (Self::Import(values, Some(deserializer)), event) => {
2431                        let output = deserializer.next(reader, event)?;
2432                        match self.handle_import(reader, values, output, &mut fallback)? {
2433                            ElementHandlerOutput::Break { event, allow_any } => {
2434                                break (event, allow_any)
2435                            }
2436                            ElementHandlerOutput::Continue { event, .. } => event,
2437                        }
2438                    }
2439                    (Self::Redefine(values, Some(deserializer)), event) => {
2440                        let output = deserializer.next(reader, event)?;
2441                        match self.handle_redefine(reader, values, output, &mut fallback)? {
2442                            ElementHandlerOutput::Break { event, allow_any } => {
2443                                break (event, allow_any)
2444                            }
2445                            ElementHandlerOutput::Continue { event, .. } => event,
2446                        }
2447                    }
2448                    (Self::Override(values, Some(deserializer)), event) => {
2449                        let output = deserializer.next(reader, event)?;
2450                        match self.handle_override_(reader, values, output, &mut fallback)? {
2451                            ElementHandlerOutput::Break { event, allow_any } => {
2452                                break (event, allow_any)
2453                            }
2454                            ElementHandlerOutput::Continue { event, .. } => event,
2455                        }
2456                    }
2457                    (Self::Annotation(values, Some(deserializer)), event) => {
2458                        let output = deserializer.next(reader, event)?;
2459                        match self.handle_annotation(reader, values, output, &mut fallback)? {
2460                            ElementHandlerOutput::Break { event, allow_any } => {
2461                                break (event, allow_any)
2462                            }
2463                            ElementHandlerOutput::Continue { event, .. } => event,
2464                        }
2465                    }
2466                    (Self::DefaultOpenContent(values, Some(deserializer)), event) => {
2467                        let output = deserializer.next(reader, event)?;
2468                        match self.handle_default_open_content(
2469                            reader,
2470                            values,
2471                            output,
2472                            &mut fallback,
2473                        )? {
2474                            ElementHandlerOutput::Break { event, allow_any } => {
2475                                break (event, allow_any)
2476                            }
2477                            ElementHandlerOutput::Continue { event, .. } => event,
2478                        }
2479                    }
2480                    (Self::SimpleType(values, Some(deserializer)), event) => {
2481                        let output = deserializer.next(reader, event)?;
2482                        match self.handle_simple_type(reader, values, output, &mut fallback)? {
2483                            ElementHandlerOutput::Break { event, allow_any } => {
2484                                break (event, allow_any)
2485                            }
2486                            ElementHandlerOutput::Continue { event, .. } => event,
2487                        }
2488                    }
2489                    (Self::ComplexType(values, Some(deserializer)), event) => {
2490                        let output = deserializer.next(reader, event)?;
2491                        match self.handle_complex_type(reader, values, output, &mut fallback)? {
2492                            ElementHandlerOutput::Break { event, allow_any } => {
2493                                break (event, allow_any)
2494                            }
2495                            ElementHandlerOutput::Continue { event, .. } => event,
2496                        }
2497                    }
2498                    (Self::Group(values, Some(deserializer)), event) => {
2499                        let output = deserializer.next(reader, event)?;
2500                        match self.handle_group(reader, values, output, &mut fallback)? {
2501                            ElementHandlerOutput::Break { event, allow_any } => {
2502                                break (event, allow_any)
2503                            }
2504                            ElementHandlerOutput::Continue { event, .. } => event,
2505                        }
2506                    }
2507                    (Self::AttributeGroup(values, Some(deserializer)), event) => {
2508                        let output = deserializer.next(reader, event)?;
2509                        match self.handle_attribute_group(reader, values, output, &mut fallback)? {
2510                            ElementHandlerOutput::Break { event, allow_any } => {
2511                                break (event, allow_any)
2512                            }
2513                            ElementHandlerOutput::Continue { event, .. } => event,
2514                        }
2515                    }
2516                    (Self::Element(values, Some(deserializer)), event) => {
2517                        let output = deserializer.next(reader, event)?;
2518                        match self.handle_element(reader, values, output, &mut fallback)? {
2519                            ElementHandlerOutput::Break { event, allow_any } => {
2520                                break (event, allow_any)
2521                            }
2522                            ElementHandlerOutput::Continue { event, .. } => event,
2523                        }
2524                    }
2525                    (Self::Attribute(values, Some(deserializer)), event) => {
2526                        let output = deserializer.next(reader, event)?;
2527                        match self.handle_attribute(reader, values, output, &mut fallback)? {
2528                            ElementHandlerOutput::Break { event, allow_any } => {
2529                                break (event, allow_any)
2530                            }
2531                            ElementHandlerOutput::Continue { event, .. } => event,
2532                        }
2533                    }
2534                    (Self::Notation(values, Some(deserializer)), event) => {
2535                        let output = deserializer.next(reader, event)?;
2536                        match self.handle_notation(reader, values, output, &mut fallback)? {
2537                            ElementHandlerOutput::Break { event, allow_any } => {
2538                                break (event, allow_any)
2539                            }
2540                            ElementHandlerOutput::Continue { event, .. } => event,
2541                        }
2542                    }
2543                    (state, event @ Event::End(_)) => {
2544                        return Ok(DeserializerOutput {
2545                            artifact: DeserializerArtifact::Data(state.finish(reader)?),
2546                            event: DeserializerEvent::Continue(event),
2547                            allow_any: false,
2548                        });
2549                    }
2550                    (Self::Init__, event) => {
2551                        match self.find_suitable(reader, event, &mut fallback)? {
2552                            ElementHandlerOutput::Break { event, allow_any } => {
2553                                break (event, allow_any)
2554                            }
2555                            ElementHandlerOutput::Continue { event, .. } => event,
2556                        }
2557                    }
2558                    (Self::Include(values, None), event) => {
2559                        let output = <super::Include as WithDeserializer>::Deserializer::init(
2560                            reader, event,
2561                        )?;
2562                        match self.handle_include(reader, values, output, &mut fallback)? {
2563                            ElementHandlerOutput::Break { event, allow_any } => {
2564                                break (event, allow_any)
2565                            }
2566                            ElementHandlerOutput::Continue { event, .. } => event,
2567                        }
2568                    }
2569                    (Self::Import(values, None), event) => {
2570                        let output =
2571                            <super::Import as WithDeserializer>::Deserializer::init(reader, event)?;
2572                        match self.handle_import(reader, values, output, &mut fallback)? {
2573                            ElementHandlerOutput::Break { event, allow_any } => {
2574                                break (event, allow_any)
2575                            }
2576                            ElementHandlerOutput::Continue { event, .. } => event,
2577                        }
2578                    }
2579                    (Self::Redefine(values, None), event) => {
2580                        let output = <super::Redefine as WithDeserializer>::Deserializer::init(
2581                            reader, event,
2582                        )?;
2583                        match self.handle_redefine(reader, values, output, &mut fallback)? {
2584                            ElementHandlerOutput::Break { event, allow_any } => {
2585                                break (event, allow_any)
2586                            }
2587                            ElementHandlerOutput::Continue { event, .. } => event,
2588                        }
2589                    }
2590                    (Self::Override(values, None), event) => {
2591                        let output = <super::Override as WithDeserializer>::Deserializer::init(
2592                            reader, event,
2593                        )?;
2594                        match self.handle_override_(reader, values, output, &mut fallback)? {
2595                            ElementHandlerOutput::Break { event, allow_any } => {
2596                                break (event, allow_any)
2597                            }
2598                            ElementHandlerOutput::Continue { event, .. } => event,
2599                        }
2600                    }
2601                    (Self::Annotation(values, None), event) => {
2602                        let output = <super::Annotation as WithDeserializer>::Deserializer::init(
2603                            reader, event,
2604                        )?;
2605                        match self.handle_annotation(reader, values, output, &mut fallback)? {
2606                            ElementHandlerOutput::Break { event, allow_any } => {
2607                                break (event, allow_any)
2608                            }
2609                            ElementHandlerOutput::Continue { event, .. } => event,
2610                        }
2611                    }
2612                    (Self::DefaultOpenContent(values, None), event) => {
2613                        let output =
2614                            <super::DefaultOpenContent as WithDeserializer>::Deserializer::init(
2615                                reader, event,
2616                            )?;
2617                        match self.handle_default_open_content(
2618                            reader,
2619                            values,
2620                            output,
2621                            &mut fallback,
2622                        )? {
2623                            ElementHandlerOutput::Break { event, allow_any } => {
2624                                break (event, allow_any)
2625                            }
2626                            ElementHandlerOutput::Continue { event, .. } => event,
2627                        }
2628                    }
2629                    (Self::SimpleType(values, None), event) => {
2630                        let output =
2631                            <super::SimpleBaseType as WithDeserializer>::Deserializer::init(
2632                                reader, event,
2633                            )?;
2634                        match self.handle_simple_type(reader, values, output, &mut fallback)? {
2635                            ElementHandlerOutput::Break { event, allow_any } => {
2636                                break (event, allow_any)
2637                            }
2638                            ElementHandlerOutput::Continue { event, .. } => event,
2639                        }
2640                    }
2641                    (Self::ComplexType(values, None), event) => {
2642                        let output =
2643                            <super::ComplexBaseType as WithDeserializer>::Deserializer::init(
2644                                reader, event,
2645                            )?;
2646                        match self.handle_complex_type(reader, values, output, &mut fallback)? {
2647                            ElementHandlerOutput::Break { event, allow_any } => {
2648                                break (event, allow_any)
2649                            }
2650                            ElementHandlerOutput::Continue { event, .. } => event,
2651                        }
2652                    }
2653                    (Self::Group(values, None), event) => {
2654                        let output = <super::GroupType as WithDeserializer>::Deserializer::init(
2655                            reader, event,
2656                        )?;
2657                        match self.handle_group(reader, values, output, &mut fallback)? {
2658                            ElementHandlerOutput::Break { event, allow_any } => {
2659                                break (event, allow_any)
2660                            }
2661                            ElementHandlerOutput::Continue { event, .. } => event,
2662                        }
2663                    }
2664                    (Self::AttributeGroup(values, None), event) => {
2665                        let output =
2666                            <super::AttributeGroupType as WithDeserializer>::Deserializer::init(
2667                                reader, event,
2668                            )?;
2669                        match self.handle_attribute_group(reader, values, output, &mut fallback)? {
2670                            ElementHandlerOutput::Break { event, allow_any } => {
2671                                break (event, allow_any)
2672                            }
2673                            ElementHandlerOutput::Continue { event, .. } => event,
2674                        }
2675                    }
2676                    (Self::Element(values, None), event) => {
2677                        let output = <super::ElementType as WithDeserializer>::Deserializer::init(
2678                            reader, event,
2679                        )?;
2680                        match self.handle_element(reader, values, output, &mut fallback)? {
2681                            ElementHandlerOutput::Break { event, allow_any } => {
2682                                break (event, allow_any)
2683                            }
2684                            ElementHandlerOutput::Continue { event, .. } => event,
2685                        }
2686                    }
2687                    (Self::Attribute(values, None), event) => {
2688                        let output =
2689                            <super::AttributeType as WithDeserializer>::Deserializer::init(
2690                                reader, event,
2691                            )?;
2692                        match self.handle_attribute(reader, values, output, &mut fallback)? {
2693                            ElementHandlerOutput::Break { event, allow_any } => {
2694                                break (event, allow_any)
2695                            }
2696                            ElementHandlerOutput::Continue { event, .. } => event,
2697                        }
2698                    }
2699                    (Self::Notation(values, None), event) => {
2700                        let output = <super::Notation as WithDeserializer>::Deserializer::init(
2701                            reader, event,
2702                        )?;
2703                        match self.handle_notation(reader, values, output, &mut fallback)? {
2704                            ElementHandlerOutput::Break { event, allow_any } => {
2705                                break (event, allow_any)
2706                            }
2707                            ElementHandlerOutput::Continue { event, .. } => event,
2708                        }
2709                    }
2710                    (s @ Self::Done__(_), event) => {
2711                        self = s;
2712                        break (DeserializerEvent::Continue(event), false);
2713                    }
2714                    (Self::Unknown__, _) => unreachable!(),
2715                }
2716            };
2717            let artifact = match self {
2718                Self::Done__(data) => DeserializerArtifact::Data(data),
2719                deserializer => DeserializerArtifact::Deserializer(deserializer),
2720            };
2721            Ok(DeserializerOutput {
2722                artifact,
2723                event,
2724                allow_any,
2725            })
2726        }
2727        fn finish<R>(self, reader: &R) -> Result<super::SchemaContent, Error>
2728        where
2729            R: DeserializeReader,
2730        {
2731            match self {
2732                Self::Init__ => Err(ErrorKind::MissingContent.into()),
2733                Self::Include(mut values, deserializer) => {
2734                    if let Some(deserializer) = deserializer {
2735                        let value = deserializer.finish(reader)?;
2736                        Self::store_include(&mut values, value)?;
2737                    }
2738                    Ok(super::SchemaContent::Include(values.ok_or_else(|| {
2739                        ErrorKind::MissingElement("include".into())
2740                    })?))
2741                }
2742                Self::Import(mut values, deserializer) => {
2743                    if let Some(deserializer) = deserializer {
2744                        let value = deserializer.finish(reader)?;
2745                        Self::store_import(&mut values, value)?;
2746                    }
2747                    Ok(super::SchemaContent::Import(values.ok_or_else(|| {
2748                        ErrorKind::MissingElement("import".into())
2749                    })?))
2750                }
2751                Self::Redefine(mut values, deserializer) => {
2752                    if let Some(deserializer) = deserializer {
2753                        let value = deserializer.finish(reader)?;
2754                        Self::store_redefine(&mut values, value)?;
2755                    }
2756                    Ok(super::SchemaContent::Redefine(values.ok_or_else(|| {
2757                        ErrorKind::MissingElement("redefine".into())
2758                    })?))
2759                }
2760                Self::Override(mut values, deserializer) => {
2761                    if let Some(deserializer) = deserializer {
2762                        let value = deserializer.finish(reader)?;
2763                        Self::store_override_(&mut values, value)?;
2764                    }
2765                    Ok(super::SchemaContent::Override(values.ok_or_else(|| {
2766                        ErrorKind::MissingElement("override".into())
2767                    })?))
2768                }
2769                Self::Annotation(mut values, deserializer) => {
2770                    if let Some(deserializer) = deserializer {
2771                        let value = deserializer.finish(reader)?;
2772                        Self::store_annotation(&mut values, value)?;
2773                    }
2774                    Ok(super::SchemaContent::Annotation(values.ok_or_else(
2775                        || ErrorKind::MissingElement("annotation".into()),
2776                    )?))
2777                }
2778                Self::DefaultOpenContent(mut values, deserializer) => {
2779                    if let Some(deserializer) = deserializer {
2780                        let value = deserializer.finish(reader)?;
2781                        Self::store_default_open_content(&mut values, value)?;
2782                    }
2783                    Ok(super::SchemaContent::DefaultOpenContent(
2784                        values.ok_or_else(|| {
2785                            ErrorKind::MissingElement("defaultOpenContent".into())
2786                        })?,
2787                    ))
2788                }
2789                Self::SimpleType(mut values, deserializer) => {
2790                    if let Some(deserializer) = deserializer {
2791                        let value = deserializer.finish(reader)?;
2792                        Self::store_simple_type(&mut values, value)?;
2793                    }
2794                    Ok(super::SchemaContent::SimpleType(values.ok_or_else(
2795                        || ErrorKind::MissingElement("simpleType".into()),
2796                    )?))
2797                }
2798                Self::ComplexType(mut values, deserializer) => {
2799                    if let Some(deserializer) = deserializer {
2800                        let value = deserializer.finish(reader)?;
2801                        Self::store_complex_type(&mut values, value)?;
2802                    }
2803                    Ok(super::SchemaContent::ComplexType(values.ok_or_else(
2804                        || ErrorKind::MissingElement("complexType".into()),
2805                    )?))
2806                }
2807                Self::Group(mut values, deserializer) => {
2808                    if let Some(deserializer) = deserializer {
2809                        let value = deserializer.finish(reader)?;
2810                        Self::store_group(&mut values, value)?;
2811                    }
2812                    Ok(super::SchemaContent::Group(values.ok_or_else(|| {
2813                        ErrorKind::MissingElement("group".into())
2814                    })?))
2815                }
2816                Self::AttributeGroup(mut values, deserializer) => {
2817                    if let Some(deserializer) = deserializer {
2818                        let value = deserializer.finish(reader)?;
2819                        Self::store_attribute_group(&mut values, value)?;
2820                    }
2821                    Ok(super::SchemaContent::AttributeGroup(values.ok_or_else(
2822                        || ErrorKind::MissingElement("attributeGroup".into()),
2823                    )?))
2824                }
2825                Self::Element(mut values, deserializer) => {
2826                    if let Some(deserializer) = deserializer {
2827                        let value = deserializer.finish(reader)?;
2828                        Self::store_element(&mut values, value)?;
2829                    }
2830                    Ok(super::SchemaContent::Element(values.ok_or_else(|| {
2831                        ErrorKind::MissingElement("element".into())
2832                    })?))
2833                }
2834                Self::Attribute(mut values, deserializer) => {
2835                    if let Some(deserializer) = deserializer {
2836                        let value = deserializer.finish(reader)?;
2837                        Self::store_attribute(&mut values, value)?;
2838                    }
2839                    Ok(super::SchemaContent::Attribute(values.ok_or_else(
2840                        || ErrorKind::MissingElement("attribute".into()),
2841                    )?))
2842                }
2843                Self::Notation(mut values, deserializer) => {
2844                    if let Some(deserializer) = deserializer {
2845                        let value = deserializer.finish(reader)?;
2846                        Self::store_notation(&mut values, value)?;
2847                    }
2848                    Ok(super::SchemaContent::Notation(values.ok_or_else(|| {
2849                        ErrorKind::MissingElement("notation".into())
2850                    })?))
2851                }
2852                Self::Done__(data) => Ok(data),
2853                Self::Unknown__ => unreachable!(),
2854            }
2855        }
2856    }
2857    #[derive(Debug)]
2858    pub struct IncludeDeserializer {
2859        id: Option<String>,
2860        schema_location: String,
2861        annotation: Option<super::Annotation>,
2862        state: Box<IncludeDeserializerState>,
2863    }
2864    #[derive(Debug)]
2865    enum IncludeDeserializerState {
2866        Init__,
2867        Annotation(Option<<super::Annotation as WithDeserializer>::Deserializer>),
2868        Done__,
2869        Unknown__,
2870    }
2871    impl IncludeDeserializer {
2872        fn from_bytes_start<R>(reader: &R, bytes_start: &BytesStart<'_>) -> Result<Self, Error>
2873        where
2874            R: DeserializeReader,
2875        {
2876            let mut id: Option<String> = None;
2877            let mut schema_location: Option<String> = None;
2878            for attrib in filter_xmlns_attributes(bytes_start) {
2879                let attrib = attrib?;
2880                if matches!(
2881                    reader.resolve_local_name(attrib.key, &super::NS_XS),
2882                    Some(b"id")
2883                ) {
2884                    reader.read_attrib(&mut id, b"id", &attrib.value)?;
2885                } else if matches!(
2886                    reader.resolve_local_name(attrib.key, &super::NS_XS),
2887                    Some(b"schemaLocation")
2888                ) {
2889                    reader.read_attrib(&mut schema_location, b"schemaLocation", &attrib.value)?;
2890                }
2891            }
2892            Ok(Self {
2893                id: id,
2894                schema_location: schema_location.ok_or_else(|| {
2895                    reader.map_error(ErrorKind::MissingAttribute("schemaLocation".into()))
2896                })?,
2897                annotation: None,
2898                state: Box::new(IncludeDeserializerState::Init__),
2899            })
2900        }
2901        fn finish_state<R>(
2902            &mut self,
2903            reader: &R,
2904            state: IncludeDeserializerState,
2905        ) -> Result<(), Error>
2906        where
2907            R: DeserializeReader,
2908        {
2909            use IncludeDeserializerState as S;
2910            match state {
2911                S::Annotation(Some(deserializer)) => {
2912                    self.store_annotation(deserializer.finish(reader)?)?
2913                }
2914                _ => (),
2915            }
2916            Ok(())
2917        }
2918        fn store_annotation(&mut self, value: super::Annotation) -> Result<(), Error> {
2919            if self.annotation.is_some() {
2920                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
2921                    b"annotation",
2922                )))?;
2923            }
2924            self.annotation = Some(value);
2925            Ok(())
2926        }
2927        fn handle_annotation<'de, R>(
2928            &mut self,
2929            reader: &R,
2930            output: DeserializerOutput<'de, super::Annotation>,
2931            fallback: &mut Option<IncludeDeserializerState>,
2932        ) -> Result<ElementHandlerOutput<'de>, Error>
2933        where
2934            R: DeserializeReader,
2935        {
2936            let DeserializerOutput {
2937                artifact,
2938                event,
2939                allow_any,
2940            } = output;
2941            if artifact.is_none() {
2942                fallback.get_or_insert(IncludeDeserializerState::Annotation(None));
2943                *self.state = IncludeDeserializerState::Done__;
2944                return Ok(ElementHandlerOutput::from_event(event, allow_any));
2945            }
2946            if let Some(fallback) = fallback.take() {
2947                self.finish_state(reader, fallback)?;
2948            }
2949            Ok(match artifact {
2950                DeserializerArtifact::None => unreachable!(),
2951                DeserializerArtifact::Data(data) => {
2952                    self.store_annotation(data)?;
2953                    *self.state = IncludeDeserializerState::Done__;
2954                    ElementHandlerOutput::from_event(event, allow_any)
2955                }
2956                DeserializerArtifact::Deserializer(deserializer) => {
2957                    let ret = ElementHandlerOutput::from_event(event, allow_any);
2958                    match &ret {
2959                        ElementHandlerOutput::Continue { .. } => {
2960                            fallback.get_or_insert(IncludeDeserializerState::Annotation(Some(
2961                                deserializer,
2962                            )));
2963                            *self.state = IncludeDeserializerState::Done__;
2964                        }
2965                        ElementHandlerOutput::Break { .. } => {
2966                            *self.state = IncludeDeserializerState::Annotation(Some(deserializer));
2967                        }
2968                    }
2969                    ret
2970                }
2971            })
2972        }
2973    }
2974    impl<'de> Deserializer<'de, super::Include> for IncludeDeserializer {
2975        fn init<R>(reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::Include>
2976        where
2977            R: DeserializeReader,
2978        {
2979            reader.init_deserializer_from_start_event(event, Self::from_bytes_start)
2980        }
2981        fn next<R>(
2982            mut self,
2983            reader: &R,
2984            event: Event<'de>,
2985        ) -> DeserializerResult<'de, super::Include>
2986        where
2987            R: DeserializeReader,
2988        {
2989            use IncludeDeserializerState as S;
2990            let mut event = event;
2991            let mut fallback = None;
2992            let mut allow_any_element = false;
2993            let (event, allow_any) = loop {
2994                let state = replace(&mut *self.state, S::Unknown__);
2995                event = match (state, event) {
2996                    (S::Annotation(Some(deserializer)), event) => {
2997                        let output = deserializer.next(reader, event)?;
2998                        match self.handle_annotation(reader, output, &mut fallback)? {
2999                            ElementHandlerOutput::Continue { event, allow_any } => {
3000                                allow_any_element = allow_any_element || allow_any;
3001                                event
3002                            }
3003                            ElementHandlerOutput::Break { event, allow_any } => {
3004                                break (event, allow_any)
3005                            }
3006                        }
3007                    }
3008                    (_, Event::End(_)) => {
3009                        if let Some(fallback) = fallback.take() {
3010                            self.finish_state(reader, fallback)?;
3011                        }
3012                        return Ok(DeserializerOutput {
3013                            artifact: DeserializerArtifact::Data(self.finish(reader)?),
3014                            event: DeserializerEvent::None,
3015                            allow_any: false,
3016                        });
3017                    }
3018                    (S::Init__, event) => {
3019                        fallback.get_or_insert(S::Init__);
3020                        *self.state = IncludeDeserializerState::Annotation(None);
3021                        event
3022                    }
3023                    (S::Annotation(None), event @ (Event::Start(_) | Event::Empty(_))) => {
3024                        if reader.check_start_tag_name(&event, Some(&super::NS_XS), b"annotation") {
3025                            let output =
3026                                <super::Annotation as WithDeserializer>::Deserializer::init(
3027                                    reader, event,
3028                                )?;
3029                            match self.handle_annotation(reader, output, &mut fallback)? {
3030                                ElementHandlerOutput::Continue { event, allow_any } => {
3031                                    allow_any_element = allow_any_element || allow_any;
3032                                    event
3033                                }
3034                                ElementHandlerOutput::Break { event, allow_any } => {
3035                                    break (event, allow_any)
3036                                }
3037                            }
3038                        } else {
3039                            *self.state = S::Done__;
3040                            allow_any_element = true;
3041                            fallback.get_or_insert(S::Annotation(None));
3042                            event
3043                        }
3044                    }
3045                    (S::Done__, event) => {
3046                        fallback.get_or_insert(S::Done__);
3047                        break (DeserializerEvent::Continue(event), allow_any_element);
3048                    }
3049                    (S::Unknown__, _) => unreachable!(),
3050                    (state, event) => {
3051                        *self.state = state;
3052                        break (DeserializerEvent::Break(event), false);
3053                    }
3054                }
3055            };
3056            if let Some(fallback) = fallback {
3057                *self.state = fallback;
3058            }
3059            Ok(DeserializerOutput {
3060                artifact: DeserializerArtifact::Deserializer(self),
3061                event,
3062                allow_any,
3063            })
3064        }
3065        fn finish<R>(mut self, reader: &R) -> Result<super::Include, Error>
3066        where
3067            R: DeserializeReader,
3068        {
3069            let state = replace(&mut *self.state, IncludeDeserializerState::Unknown__);
3070            self.finish_state(reader, state)?;
3071            Ok(super::Include {
3072                id: self.id,
3073                schema_location: self.schema_location,
3074                annotation: self.annotation,
3075            })
3076        }
3077    }
3078    #[derive(Debug)]
3079    pub struct ImportDeserializer {
3080        id: Option<String>,
3081        namespace: Option<String>,
3082        schema_location: Option<String>,
3083        annotation: Option<super::Annotation>,
3084        state: Box<ImportDeserializerState>,
3085    }
3086    #[derive(Debug)]
3087    enum ImportDeserializerState {
3088        Init__,
3089        Annotation(Option<<super::Annotation as WithDeserializer>::Deserializer>),
3090        Done__,
3091        Unknown__,
3092    }
3093    impl ImportDeserializer {
3094        fn from_bytes_start<R>(reader: &R, bytes_start: &BytesStart<'_>) -> Result<Self, Error>
3095        where
3096            R: DeserializeReader,
3097        {
3098            let mut id: Option<String> = None;
3099            let mut namespace: Option<String> = None;
3100            let mut schema_location: Option<String> = None;
3101            for attrib in filter_xmlns_attributes(bytes_start) {
3102                let attrib = attrib?;
3103                if matches!(
3104                    reader.resolve_local_name(attrib.key, &super::NS_XS),
3105                    Some(b"id")
3106                ) {
3107                    reader.read_attrib(&mut id, b"id", &attrib.value)?;
3108                } else if matches!(
3109                    reader.resolve_local_name(attrib.key, &super::NS_XS),
3110                    Some(b"namespace")
3111                ) {
3112                    reader.read_attrib(&mut namespace, b"namespace", &attrib.value)?;
3113                } else if matches!(
3114                    reader.resolve_local_name(attrib.key, &super::NS_XS),
3115                    Some(b"schemaLocation")
3116                ) {
3117                    reader.read_attrib(&mut schema_location, b"schemaLocation", &attrib.value)?;
3118                }
3119            }
3120            Ok(Self {
3121                id: id,
3122                namespace: namespace,
3123                schema_location: schema_location,
3124                annotation: None,
3125                state: Box::new(ImportDeserializerState::Init__),
3126            })
3127        }
3128        fn finish_state<R>(
3129            &mut self,
3130            reader: &R,
3131            state: ImportDeserializerState,
3132        ) -> Result<(), Error>
3133        where
3134            R: DeserializeReader,
3135        {
3136            use ImportDeserializerState as S;
3137            match state {
3138                S::Annotation(Some(deserializer)) => {
3139                    self.store_annotation(deserializer.finish(reader)?)?
3140                }
3141                _ => (),
3142            }
3143            Ok(())
3144        }
3145        fn store_annotation(&mut self, value: super::Annotation) -> Result<(), Error> {
3146            if self.annotation.is_some() {
3147                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
3148                    b"annotation",
3149                )))?;
3150            }
3151            self.annotation = Some(value);
3152            Ok(())
3153        }
3154        fn handle_annotation<'de, R>(
3155            &mut self,
3156            reader: &R,
3157            output: DeserializerOutput<'de, super::Annotation>,
3158            fallback: &mut Option<ImportDeserializerState>,
3159        ) -> Result<ElementHandlerOutput<'de>, Error>
3160        where
3161            R: DeserializeReader,
3162        {
3163            let DeserializerOutput {
3164                artifact,
3165                event,
3166                allow_any,
3167            } = output;
3168            if artifact.is_none() {
3169                fallback.get_or_insert(ImportDeserializerState::Annotation(None));
3170                *self.state = ImportDeserializerState::Done__;
3171                return Ok(ElementHandlerOutput::from_event(event, allow_any));
3172            }
3173            if let Some(fallback) = fallback.take() {
3174                self.finish_state(reader, fallback)?;
3175            }
3176            Ok(match artifact {
3177                DeserializerArtifact::None => unreachable!(),
3178                DeserializerArtifact::Data(data) => {
3179                    self.store_annotation(data)?;
3180                    *self.state = ImportDeserializerState::Done__;
3181                    ElementHandlerOutput::from_event(event, allow_any)
3182                }
3183                DeserializerArtifact::Deserializer(deserializer) => {
3184                    let ret = ElementHandlerOutput::from_event(event, allow_any);
3185                    match &ret {
3186                        ElementHandlerOutput::Continue { .. } => {
3187                            fallback.get_or_insert(ImportDeserializerState::Annotation(Some(
3188                                deserializer,
3189                            )));
3190                            *self.state = ImportDeserializerState::Done__;
3191                        }
3192                        ElementHandlerOutput::Break { .. } => {
3193                            *self.state = ImportDeserializerState::Annotation(Some(deserializer));
3194                        }
3195                    }
3196                    ret
3197                }
3198            })
3199        }
3200    }
3201    impl<'de> Deserializer<'de, super::Import> for ImportDeserializer {
3202        fn init<R>(reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::Import>
3203        where
3204            R: DeserializeReader,
3205        {
3206            reader.init_deserializer_from_start_event(event, Self::from_bytes_start)
3207        }
3208        fn next<R>(
3209            mut self,
3210            reader: &R,
3211            event: Event<'de>,
3212        ) -> DeserializerResult<'de, super::Import>
3213        where
3214            R: DeserializeReader,
3215        {
3216            use ImportDeserializerState as S;
3217            let mut event = event;
3218            let mut fallback = None;
3219            let mut allow_any_element = false;
3220            let (event, allow_any) = loop {
3221                let state = replace(&mut *self.state, S::Unknown__);
3222                event = match (state, event) {
3223                    (S::Annotation(Some(deserializer)), event) => {
3224                        let output = deserializer.next(reader, event)?;
3225                        match self.handle_annotation(reader, output, &mut fallback)? {
3226                            ElementHandlerOutput::Continue { event, allow_any } => {
3227                                allow_any_element = allow_any_element || allow_any;
3228                                event
3229                            }
3230                            ElementHandlerOutput::Break { event, allow_any } => {
3231                                break (event, allow_any)
3232                            }
3233                        }
3234                    }
3235                    (_, Event::End(_)) => {
3236                        if let Some(fallback) = fallback.take() {
3237                            self.finish_state(reader, fallback)?;
3238                        }
3239                        return Ok(DeserializerOutput {
3240                            artifact: DeserializerArtifact::Data(self.finish(reader)?),
3241                            event: DeserializerEvent::None,
3242                            allow_any: false,
3243                        });
3244                    }
3245                    (S::Init__, event) => {
3246                        fallback.get_or_insert(S::Init__);
3247                        *self.state = ImportDeserializerState::Annotation(None);
3248                        event
3249                    }
3250                    (S::Annotation(None), event @ (Event::Start(_) | Event::Empty(_))) => {
3251                        if reader.check_start_tag_name(&event, Some(&super::NS_XS), b"annotation") {
3252                            let output =
3253                                <super::Annotation as WithDeserializer>::Deserializer::init(
3254                                    reader, event,
3255                                )?;
3256                            match self.handle_annotation(reader, output, &mut fallback)? {
3257                                ElementHandlerOutput::Continue { event, allow_any } => {
3258                                    allow_any_element = allow_any_element || allow_any;
3259                                    event
3260                                }
3261                                ElementHandlerOutput::Break { event, allow_any } => {
3262                                    break (event, allow_any)
3263                                }
3264                            }
3265                        } else {
3266                            *self.state = S::Done__;
3267                            allow_any_element = true;
3268                            fallback.get_or_insert(S::Annotation(None));
3269                            event
3270                        }
3271                    }
3272                    (S::Done__, event) => {
3273                        fallback.get_or_insert(S::Done__);
3274                        break (DeserializerEvent::Continue(event), allow_any_element);
3275                    }
3276                    (S::Unknown__, _) => unreachable!(),
3277                    (state, event) => {
3278                        *self.state = state;
3279                        break (DeserializerEvent::Break(event), false);
3280                    }
3281                }
3282            };
3283            if let Some(fallback) = fallback {
3284                *self.state = fallback;
3285            }
3286            Ok(DeserializerOutput {
3287                artifact: DeserializerArtifact::Deserializer(self),
3288                event,
3289                allow_any,
3290            })
3291        }
3292        fn finish<R>(mut self, reader: &R) -> Result<super::Import, Error>
3293        where
3294            R: DeserializeReader,
3295        {
3296            let state = replace(&mut *self.state, ImportDeserializerState::Unknown__);
3297            self.finish_state(reader, state)?;
3298            Ok(super::Import {
3299                id: self.id,
3300                namespace: self.namespace,
3301                schema_location: self.schema_location,
3302                annotation: self.annotation,
3303            })
3304        }
3305    }
3306    #[derive(Debug)]
3307    pub struct RedefineDeserializer {
3308        schema_location: String,
3309        id: Option<String>,
3310        content: Vec<super::RedefineContent>,
3311        state: Box<RedefineDeserializerState>,
3312    }
3313    #[derive(Debug)]
3314    enum RedefineDeserializerState {
3315        Init__,
3316        Next__,
3317        Content__(<super::RedefineContent as WithDeserializer>::Deserializer),
3318        Unknown__,
3319    }
3320    impl RedefineDeserializer {
3321        fn from_bytes_start<R>(reader: &R, bytes_start: &BytesStart<'_>) -> Result<Self, Error>
3322        where
3323            R: DeserializeReader,
3324        {
3325            let mut schema_location: Option<String> = None;
3326            let mut id: Option<String> = None;
3327            for attrib in filter_xmlns_attributes(bytes_start) {
3328                let attrib = attrib?;
3329                if matches!(
3330                    reader.resolve_local_name(attrib.key, &super::NS_XS),
3331                    Some(b"schemaLocation")
3332                ) {
3333                    reader.read_attrib(&mut schema_location, b"schemaLocation", &attrib.value)?;
3334                } else if matches!(
3335                    reader.resolve_local_name(attrib.key, &super::NS_XS),
3336                    Some(b"id")
3337                ) {
3338                    reader.read_attrib(&mut id, b"id", &attrib.value)?;
3339                }
3340            }
3341            Ok(Self {
3342                schema_location: schema_location.ok_or_else(|| {
3343                    reader.map_error(ErrorKind::MissingAttribute("schemaLocation".into()))
3344                })?,
3345                id: id,
3346                content: Vec::new(),
3347                state: Box::new(RedefineDeserializerState::Init__),
3348            })
3349        }
3350        fn finish_state<R>(
3351            &mut self,
3352            reader: &R,
3353            state: RedefineDeserializerState,
3354        ) -> Result<(), Error>
3355        where
3356            R: DeserializeReader,
3357        {
3358            if let RedefineDeserializerState::Content__(deserializer) = state {
3359                self.store_content(deserializer.finish(reader)?)?;
3360            }
3361            Ok(())
3362        }
3363        fn store_content(&mut self, value: super::RedefineContent) -> Result<(), Error> {
3364            self.content.push(value);
3365            Ok(())
3366        }
3367        fn handle_content<'de, R>(
3368            &mut self,
3369            reader: &R,
3370            output: DeserializerOutput<'de, super::RedefineContent>,
3371            fallback: &mut Option<RedefineDeserializerState>,
3372        ) -> Result<ElementHandlerOutput<'de>, Error>
3373        where
3374            R: DeserializeReader,
3375        {
3376            let DeserializerOutput {
3377                artifact,
3378                event,
3379                allow_any,
3380            } = output;
3381            if artifact.is_none() {
3382                *self.state = fallback.take().unwrap_or(RedefineDeserializerState::Next__);
3383                return Ok(ElementHandlerOutput::break_(event, allow_any));
3384            }
3385            if let Some(fallback) = fallback.take() {
3386                self.finish_state(reader, fallback)?;
3387            }
3388            Ok(match artifact {
3389                DeserializerArtifact::None => unreachable!(),
3390                DeserializerArtifact::Data(data) => {
3391                    self.store_content(data)?;
3392                    *self.state = RedefineDeserializerState::Next__;
3393                    ElementHandlerOutput::from_event(event, allow_any)
3394                }
3395                DeserializerArtifact::Deserializer(deserializer) => {
3396                    let ret = ElementHandlerOutput::from_event(event, allow_any);
3397                    match &ret {
3398                        ElementHandlerOutput::Continue { .. } => {
3399                            fallback
3400                                .get_or_insert(RedefineDeserializerState::Content__(deserializer));
3401                            *self.state = RedefineDeserializerState::Next__;
3402                        }
3403                        ElementHandlerOutput::Break { .. } => {
3404                            *self.state = RedefineDeserializerState::Content__(deserializer);
3405                        }
3406                    }
3407                    ret
3408                }
3409            })
3410        }
3411    }
3412    impl<'de> Deserializer<'de, super::Redefine> for RedefineDeserializer {
3413        fn init<R>(reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::Redefine>
3414        where
3415            R: DeserializeReader,
3416        {
3417            reader.init_deserializer_from_start_event(event, Self::from_bytes_start)
3418        }
3419        fn next<R>(
3420            mut self,
3421            reader: &R,
3422            event: Event<'de>,
3423        ) -> DeserializerResult<'de, super::Redefine>
3424        where
3425            R: DeserializeReader,
3426        {
3427            use RedefineDeserializerState as S;
3428            let mut event = event;
3429            let mut fallback = None;
3430            let (event, allow_any) = loop {
3431                let state = replace(&mut *self.state, S::Unknown__);
3432                event = match (state, event) {
3433                    (S::Content__(deserializer), event) => {
3434                        let output = deserializer.next(reader, event)?;
3435                        match self.handle_content(reader, output, &mut fallback)? {
3436                            ElementHandlerOutput::Break { event, allow_any } => {
3437                                break (event, allow_any)
3438                            }
3439                            ElementHandlerOutput::Continue { event, .. } => event,
3440                        }
3441                    }
3442                    (_, Event::End(_)) => {
3443                        return Ok(DeserializerOutput {
3444                            artifact: DeserializerArtifact::Data(self.finish(reader)?),
3445                            event: DeserializerEvent::None,
3446                            allow_any: false,
3447                        });
3448                    }
3449                    (old_state @ (S::Init__ | S::Next__), event) => {
3450                        let output =
3451                            <super::RedefineContent as WithDeserializer>::Deserializer::init(
3452                                reader, event,
3453                            )?;
3454                        match self.handle_content(reader, output, &mut fallback)? {
3455                            ElementHandlerOutput::Break { event, allow_any } => {
3456                                if matches!(&*self.state, S::Unknown__) {
3457                                    *self.state = old_state;
3458                                }
3459                                break (event, allow_any);
3460                            }
3461                            ElementHandlerOutput::Continue { event, .. } => event,
3462                        }
3463                    }
3464                    (S::Unknown__, _) => unreachable!(),
3465                }
3466            };
3467            Ok(DeserializerOutput {
3468                artifact: DeserializerArtifact::Deserializer(self),
3469                event,
3470                allow_any,
3471            })
3472        }
3473        fn finish<R>(mut self, reader: &R) -> Result<super::Redefine, Error>
3474        where
3475            R: DeserializeReader,
3476        {
3477            let state = replace(&mut *self.state, RedefineDeserializerState::Unknown__);
3478            self.finish_state(reader, state)?;
3479            Ok(super::Redefine {
3480                schema_location: self.schema_location,
3481                id: self.id,
3482                content: self.content,
3483            })
3484        }
3485    }
3486    #[derive(Debug)]
3487    pub enum RedefineContentDeserializer {
3488        Init__,
3489        Annotation(
3490            Option<super::Annotation>,
3491            Option<<super::Annotation as WithDeserializer>::Deserializer>,
3492        ),
3493        SimpleType(
3494            Option<super::SimpleBaseType>,
3495            Option<<super::SimpleBaseType as WithDeserializer>::Deserializer>,
3496        ),
3497        ComplexType(
3498            Option<super::ComplexBaseType>,
3499            Option<<super::ComplexBaseType as WithDeserializer>::Deserializer>,
3500        ),
3501        Group(
3502            Option<super::GroupType>,
3503            Option<<super::GroupType as WithDeserializer>::Deserializer>,
3504        ),
3505        AttributeGroup(
3506            Option<super::AttributeGroupType>,
3507            Option<<super::AttributeGroupType as WithDeserializer>::Deserializer>,
3508        ),
3509        Done__(super::RedefineContent),
3510        Unknown__,
3511    }
3512    impl RedefineContentDeserializer {
3513        fn find_suitable<'de, R>(
3514            &mut self,
3515            reader: &R,
3516            event: Event<'de>,
3517            fallback: &mut Option<RedefineContentDeserializer>,
3518        ) -> Result<ElementHandlerOutput<'de>, Error>
3519        where
3520            R: DeserializeReader,
3521        {
3522            let (Event::Start(x) | Event::Empty(x)) = &event else {
3523                *self = Self::Init__;
3524                return Ok(ElementHandlerOutput::return_to_parent(event, false));
3525            };
3526            if matches!(
3527                reader.resolve_local_name(x.name(), &super::NS_XS),
3528                Some(b"annotation")
3529            ) {
3530                let output =
3531                    <super::Annotation as WithDeserializer>::Deserializer::init(reader, event)?;
3532                return self.handle_annotation(reader, Default::default(), output, &mut *fallback);
3533            }
3534            if matches!(
3535                reader.resolve_local_name(x.name(), &super::NS_XS),
3536                Some(b"simpleType")
3537            ) {
3538                let output =
3539                    <super::SimpleBaseType as WithDeserializer>::Deserializer::init(reader, event)?;
3540                return self.handle_simple_type(reader, Default::default(), output, &mut *fallback);
3541            }
3542            if matches!(
3543                reader.resolve_local_name(x.name(), &super::NS_XS),
3544                Some(b"complexType")
3545            ) {
3546                let output = <super::ComplexBaseType as WithDeserializer>::Deserializer::init(
3547                    reader, event,
3548                )?;
3549                return self.handle_complex_type(
3550                    reader,
3551                    Default::default(),
3552                    output,
3553                    &mut *fallback,
3554                );
3555            }
3556            if matches!(
3557                reader.resolve_local_name(x.name(), &super::NS_XS),
3558                Some(b"group")
3559            ) {
3560                let output =
3561                    <super::GroupType as WithDeserializer>::Deserializer::init(reader, event)?;
3562                return self.handle_group(reader, Default::default(), output, &mut *fallback);
3563            }
3564            if matches!(
3565                reader.resolve_local_name(x.name(), &super::NS_XS),
3566                Some(b"attributeGroup")
3567            ) {
3568                let output = <super::AttributeGroupType as WithDeserializer>::Deserializer::init(
3569                    reader, event,
3570                )?;
3571                return self.handle_attribute_group(
3572                    reader,
3573                    Default::default(),
3574                    output,
3575                    &mut *fallback,
3576                );
3577            }
3578            *self = Self::Init__;
3579            Ok(ElementHandlerOutput::return_to_parent(event, false))
3580        }
3581        fn store_annotation(
3582            values: &mut Option<super::Annotation>,
3583            value: super::Annotation,
3584        ) -> Result<(), Error> {
3585            if values.is_some() {
3586                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
3587                    b"annotation",
3588                )))?;
3589            }
3590            *values = Some(value);
3591            Ok(())
3592        }
3593        fn store_simple_type(
3594            values: &mut Option<super::SimpleBaseType>,
3595            value: super::SimpleBaseType,
3596        ) -> Result<(), Error> {
3597            if values.is_some() {
3598                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
3599                    b"simpleType",
3600                )))?;
3601            }
3602            *values = Some(value);
3603            Ok(())
3604        }
3605        fn store_complex_type(
3606            values: &mut Option<super::ComplexBaseType>,
3607            value: super::ComplexBaseType,
3608        ) -> Result<(), Error> {
3609            if values.is_some() {
3610                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
3611                    b"complexType",
3612                )))?;
3613            }
3614            *values = Some(value);
3615            Ok(())
3616        }
3617        fn store_group(
3618            values: &mut Option<super::GroupType>,
3619            value: super::GroupType,
3620        ) -> Result<(), Error> {
3621            if values.is_some() {
3622                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
3623                    b"group",
3624                )))?;
3625            }
3626            *values = Some(value);
3627            Ok(())
3628        }
3629        fn store_attribute_group(
3630            values: &mut Option<super::AttributeGroupType>,
3631            value: super::AttributeGroupType,
3632        ) -> Result<(), Error> {
3633            if values.is_some() {
3634                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
3635                    b"attributeGroup",
3636                )))?;
3637            }
3638            *values = Some(value);
3639            Ok(())
3640        }
3641        fn handle_annotation<'de, R>(
3642            &mut self,
3643            reader: &R,
3644            mut values: Option<super::Annotation>,
3645            output: DeserializerOutput<'de, super::Annotation>,
3646            fallback: &mut Option<Self>,
3647        ) -> Result<ElementHandlerOutput<'de>, Error>
3648        where
3649            R: DeserializeReader,
3650        {
3651            let DeserializerOutput {
3652                artifact,
3653                event,
3654                allow_any,
3655            } = output;
3656            if artifact.is_none() {
3657                *self = match fallback.take() {
3658                    None => Self::Init__,
3659                    Some(Self::Annotation(_, Some(deserializer))) => {
3660                        Self::Annotation(values, Some(deserializer))
3661                    }
3662                    _ => unreachable!(),
3663                };
3664                return Ok(ElementHandlerOutput::break_(event, allow_any));
3665            }
3666            match fallback.take() {
3667                None => (),
3668                Some(Self::Annotation(_, Some(deserializer))) => {
3669                    let data = deserializer.finish(reader)?;
3670                    Self::store_annotation(&mut values, data)?;
3671                }
3672                Some(_) => unreachable!(),
3673            }
3674            Ok(match artifact {
3675                DeserializerArtifact::None => unreachable!(),
3676                DeserializerArtifact::Data(data) => {
3677                    Self::store_annotation(&mut values, data)?;
3678                    let data = Self::Annotation(values, None).finish(reader)?;
3679                    *self = Self::Done__(data);
3680                    ElementHandlerOutput::Break { event, allow_any }
3681                }
3682                DeserializerArtifact::Deserializer(deserializer) => {
3683                    *self = Self::Annotation(values, Some(deserializer));
3684                    ElementHandlerOutput::from_event_end(event, allow_any)
3685                }
3686            })
3687        }
3688        fn handle_simple_type<'de, R>(
3689            &mut self,
3690            reader: &R,
3691            mut values: Option<super::SimpleBaseType>,
3692            output: DeserializerOutput<'de, super::SimpleBaseType>,
3693            fallback: &mut Option<Self>,
3694        ) -> Result<ElementHandlerOutput<'de>, Error>
3695        where
3696            R: DeserializeReader,
3697        {
3698            let DeserializerOutput {
3699                artifact,
3700                event,
3701                allow_any,
3702            } = output;
3703            if artifact.is_none() {
3704                *self = match fallback.take() {
3705                    None => Self::Init__,
3706                    Some(Self::SimpleType(_, Some(deserializer))) => {
3707                        Self::SimpleType(values, Some(deserializer))
3708                    }
3709                    _ => unreachable!(),
3710                };
3711                return Ok(ElementHandlerOutput::break_(event, allow_any));
3712            }
3713            match fallback.take() {
3714                None => (),
3715                Some(Self::SimpleType(_, Some(deserializer))) => {
3716                    let data = deserializer.finish(reader)?;
3717                    Self::store_simple_type(&mut values, data)?;
3718                }
3719                Some(_) => unreachable!(),
3720            }
3721            Ok(match artifact {
3722                DeserializerArtifact::None => unreachable!(),
3723                DeserializerArtifact::Data(data) => {
3724                    Self::store_simple_type(&mut values, data)?;
3725                    let data = Self::SimpleType(values, None).finish(reader)?;
3726                    *self = Self::Done__(data);
3727                    ElementHandlerOutput::Break { event, allow_any }
3728                }
3729                DeserializerArtifact::Deserializer(deserializer) => {
3730                    *self = Self::SimpleType(values, Some(deserializer));
3731                    ElementHandlerOutput::from_event_end(event, allow_any)
3732                }
3733            })
3734        }
3735        fn handle_complex_type<'de, R>(
3736            &mut self,
3737            reader: &R,
3738            mut values: Option<super::ComplexBaseType>,
3739            output: DeserializerOutput<'de, super::ComplexBaseType>,
3740            fallback: &mut Option<Self>,
3741        ) -> Result<ElementHandlerOutput<'de>, Error>
3742        where
3743            R: DeserializeReader,
3744        {
3745            let DeserializerOutput {
3746                artifact,
3747                event,
3748                allow_any,
3749            } = output;
3750            if artifact.is_none() {
3751                *self = match fallback.take() {
3752                    None => Self::Init__,
3753                    Some(Self::ComplexType(_, Some(deserializer))) => {
3754                        Self::ComplexType(values, Some(deserializer))
3755                    }
3756                    _ => unreachable!(),
3757                };
3758                return Ok(ElementHandlerOutput::break_(event, allow_any));
3759            }
3760            match fallback.take() {
3761                None => (),
3762                Some(Self::ComplexType(_, Some(deserializer))) => {
3763                    let data = deserializer.finish(reader)?;
3764                    Self::store_complex_type(&mut values, data)?;
3765                }
3766                Some(_) => unreachable!(),
3767            }
3768            Ok(match artifact {
3769                DeserializerArtifact::None => unreachable!(),
3770                DeserializerArtifact::Data(data) => {
3771                    Self::store_complex_type(&mut values, data)?;
3772                    let data = Self::ComplexType(values, None).finish(reader)?;
3773                    *self = Self::Done__(data);
3774                    ElementHandlerOutput::Break { event, allow_any }
3775                }
3776                DeserializerArtifact::Deserializer(deserializer) => {
3777                    *self = Self::ComplexType(values, Some(deserializer));
3778                    ElementHandlerOutput::from_event_end(event, allow_any)
3779                }
3780            })
3781        }
3782        fn handle_group<'de, R>(
3783            &mut self,
3784            reader: &R,
3785            mut values: Option<super::GroupType>,
3786            output: DeserializerOutput<'de, super::GroupType>,
3787            fallback: &mut Option<Self>,
3788        ) -> Result<ElementHandlerOutput<'de>, Error>
3789        where
3790            R: DeserializeReader,
3791        {
3792            let DeserializerOutput {
3793                artifact,
3794                event,
3795                allow_any,
3796            } = output;
3797            if artifact.is_none() {
3798                *self = match fallback.take() {
3799                    None => Self::Init__,
3800                    Some(Self::Group(_, Some(deserializer))) => {
3801                        Self::Group(values, Some(deserializer))
3802                    }
3803                    _ => unreachable!(),
3804                };
3805                return Ok(ElementHandlerOutput::break_(event, allow_any));
3806            }
3807            match fallback.take() {
3808                None => (),
3809                Some(Self::Group(_, Some(deserializer))) => {
3810                    let data = deserializer.finish(reader)?;
3811                    Self::store_group(&mut values, data)?;
3812                }
3813                Some(_) => unreachable!(),
3814            }
3815            Ok(match artifact {
3816                DeserializerArtifact::None => unreachable!(),
3817                DeserializerArtifact::Data(data) => {
3818                    Self::store_group(&mut values, data)?;
3819                    let data = Self::Group(values, None).finish(reader)?;
3820                    *self = Self::Done__(data);
3821                    ElementHandlerOutput::Break { event, allow_any }
3822                }
3823                DeserializerArtifact::Deserializer(deserializer) => {
3824                    *self = Self::Group(values, Some(deserializer));
3825                    ElementHandlerOutput::from_event_end(event, allow_any)
3826                }
3827            })
3828        }
3829        fn handle_attribute_group<'de, R>(
3830            &mut self,
3831            reader: &R,
3832            mut values: Option<super::AttributeGroupType>,
3833            output: DeserializerOutput<'de, super::AttributeGroupType>,
3834            fallback: &mut Option<Self>,
3835        ) -> Result<ElementHandlerOutput<'de>, Error>
3836        where
3837            R: DeserializeReader,
3838        {
3839            let DeserializerOutput {
3840                artifact,
3841                event,
3842                allow_any,
3843            } = output;
3844            if artifact.is_none() {
3845                *self = match fallback.take() {
3846                    None => Self::Init__,
3847                    Some(Self::AttributeGroup(_, Some(deserializer))) => {
3848                        Self::AttributeGroup(values, Some(deserializer))
3849                    }
3850                    _ => unreachable!(),
3851                };
3852                return Ok(ElementHandlerOutput::break_(event, allow_any));
3853            }
3854            match fallback.take() {
3855                None => (),
3856                Some(Self::AttributeGroup(_, Some(deserializer))) => {
3857                    let data = deserializer.finish(reader)?;
3858                    Self::store_attribute_group(&mut values, data)?;
3859                }
3860                Some(_) => unreachable!(),
3861            }
3862            Ok(match artifact {
3863                DeserializerArtifact::None => unreachable!(),
3864                DeserializerArtifact::Data(data) => {
3865                    Self::store_attribute_group(&mut values, data)?;
3866                    let data = Self::AttributeGroup(values, None).finish(reader)?;
3867                    *self = Self::Done__(data);
3868                    ElementHandlerOutput::Break { event, allow_any }
3869                }
3870                DeserializerArtifact::Deserializer(deserializer) => {
3871                    *self = Self::AttributeGroup(values, Some(deserializer));
3872                    ElementHandlerOutput::from_event_end(event, allow_any)
3873                }
3874            })
3875        }
3876    }
3877    impl<'de> Deserializer<'de, super::RedefineContent> for RedefineContentDeserializer {
3878        fn init<R>(reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::RedefineContent>
3879        where
3880            R: DeserializeReader,
3881        {
3882            let deserializer = Self::Init__;
3883            let mut output = deserializer.next(reader, event)?;
3884            output.artifact = match output.artifact {
3885                DeserializerArtifact::Deserializer(Self::Init__) => DeserializerArtifact::None,
3886                artifact => artifact,
3887            };
3888            Ok(output)
3889        }
3890        fn next<R>(
3891            mut self,
3892            reader: &R,
3893            event: Event<'de>,
3894        ) -> DeserializerResult<'de, super::RedefineContent>
3895        where
3896            R: DeserializeReader,
3897        {
3898            let mut event = event;
3899            let mut fallback = None;
3900            let (event, allow_any) = loop {
3901                let state = replace(&mut self, Self::Unknown__);
3902                event = match (state, event) {
3903                    (Self::Annotation(values, Some(deserializer)), event) => {
3904                        let output = deserializer.next(reader, event)?;
3905                        match self.handle_annotation(reader, values, output, &mut fallback)? {
3906                            ElementHandlerOutput::Break { event, allow_any } => {
3907                                break (event, allow_any)
3908                            }
3909                            ElementHandlerOutput::Continue { event, .. } => event,
3910                        }
3911                    }
3912                    (Self::SimpleType(values, Some(deserializer)), event) => {
3913                        let output = deserializer.next(reader, event)?;
3914                        match self.handle_simple_type(reader, values, output, &mut fallback)? {
3915                            ElementHandlerOutput::Break { event, allow_any } => {
3916                                break (event, allow_any)
3917                            }
3918                            ElementHandlerOutput::Continue { event, .. } => event,
3919                        }
3920                    }
3921                    (Self::ComplexType(values, Some(deserializer)), event) => {
3922                        let output = deserializer.next(reader, event)?;
3923                        match self.handle_complex_type(reader, values, output, &mut fallback)? {
3924                            ElementHandlerOutput::Break { event, allow_any } => {
3925                                break (event, allow_any)
3926                            }
3927                            ElementHandlerOutput::Continue { event, .. } => event,
3928                        }
3929                    }
3930                    (Self::Group(values, Some(deserializer)), event) => {
3931                        let output = deserializer.next(reader, event)?;
3932                        match self.handle_group(reader, values, output, &mut fallback)? {
3933                            ElementHandlerOutput::Break { event, allow_any } => {
3934                                break (event, allow_any)
3935                            }
3936                            ElementHandlerOutput::Continue { event, .. } => event,
3937                        }
3938                    }
3939                    (Self::AttributeGroup(values, Some(deserializer)), event) => {
3940                        let output = deserializer.next(reader, event)?;
3941                        match self.handle_attribute_group(reader, values, output, &mut fallback)? {
3942                            ElementHandlerOutput::Break { event, allow_any } => {
3943                                break (event, allow_any)
3944                            }
3945                            ElementHandlerOutput::Continue { event, .. } => event,
3946                        }
3947                    }
3948                    (state, event @ Event::End(_)) => {
3949                        return Ok(DeserializerOutput {
3950                            artifact: DeserializerArtifact::Data(state.finish(reader)?),
3951                            event: DeserializerEvent::Continue(event),
3952                            allow_any: false,
3953                        });
3954                    }
3955                    (Self::Init__, event) => {
3956                        match self.find_suitable(reader, event, &mut fallback)? {
3957                            ElementHandlerOutput::Break { event, allow_any } => {
3958                                break (event, allow_any)
3959                            }
3960                            ElementHandlerOutput::Continue { event, .. } => event,
3961                        }
3962                    }
3963                    (Self::Annotation(values, None), event) => {
3964                        let output = <super::Annotation as WithDeserializer>::Deserializer::init(
3965                            reader, event,
3966                        )?;
3967                        match self.handle_annotation(reader, values, output, &mut fallback)? {
3968                            ElementHandlerOutput::Break { event, allow_any } => {
3969                                break (event, allow_any)
3970                            }
3971                            ElementHandlerOutput::Continue { event, .. } => event,
3972                        }
3973                    }
3974                    (Self::SimpleType(values, None), event) => {
3975                        let output =
3976                            <super::SimpleBaseType as WithDeserializer>::Deserializer::init(
3977                                reader, event,
3978                            )?;
3979                        match self.handle_simple_type(reader, values, output, &mut fallback)? {
3980                            ElementHandlerOutput::Break { event, allow_any } => {
3981                                break (event, allow_any)
3982                            }
3983                            ElementHandlerOutput::Continue { event, .. } => event,
3984                        }
3985                    }
3986                    (Self::ComplexType(values, None), event) => {
3987                        let output =
3988                            <super::ComplexBaseType as WithDeserializer>::Deserializer::init(
3989                                reader, event,
3990                            )?;
3991                        match self.handle_complex_type(reader, values, output, &mut fallback)? {
3992                            ElementHandlerOutput::Break { event, allow_any } => {
3993                                break (event, allow_any)
3994                            }
3995                            ElementHandlerOutput::Continue { event, .. } => event,
3996                        }
3997                    }
3998                    (Self::Group(values, None), event) => {
3999                        let output = <super::GroupType as WithDeserializer>::Deserializer::init(
4000                            reader, event,
4001                        )?;
4002                        match self.handle_group(reader, values, output, &mut fallback)? {
4003                            ElementHandlerOutput::Break { event, allow_any } => {
4004                                break (event, allow_any)
4005                            }
4006                            ElementHandlerOutput::Continue { event, .. } => event,
4007                        }
4008                    }
4009                    (Self::AttributeGroup(values, None), event) => {
4010                        let output =
4011                            <super::AttributeGroupType as WithDeserializer>::Deserializer::init(
4012                                reader, event,
4013                            )?;
4014                        match self.handle_attribute_group(reader, values, output, &mut fallback)? {
4015                            ElementHandlerOutput::Break { event, allow_any } => {
4016                                break (event, allow_any)
4017                            }
4018                            ElementHandlerOutput::Continue { event, .. } => event,
4019                        }
4020                    }
4021                    (s @ Self::Done__(_), event) => {
4022                        self = s;
4023                        break (DeserializerEvent::Continue(event), false);
4024                    }
4025                    (Self::Unknown__, _) => unreachable!(),
4026                }
4027            };
4028            let artifact = match self {
4029                Self::Done__(data) => DeserializerArtifact::Data(data),
4030                deserializer => DeserializerArtifact::Deserializer(deserializer),
4031            };
4032            Ok(DeserializerOutput {
4033                artifact,
4034                event,
4035                allow_any,
4036            })
4037        }
4038        fn finish<R>(self, reader: &R) -> Result<super::RedefineContent, Error>
4039        where
4040            R: DeserializeReader,
4041        {
4042            match self {
4043                Self::Init__ => Err(ErrorKind::MissingContent.into()),
4044                Self::Annotation(mut values, deserializer) => {
4045                    if let Some(deserializer) = deserializer {
4046                        let value = deserializer.finish(reader)?;
4047                        Self::store_annotation(&mut values, value)?;
4048                    }
4049                    Ok(super::RedefineContent::Annotation(values.ok_or_else(
4050                        || ErrorKind::MissingElement("annotation".into()),
4051                    )?))
4052                }
4053                Self::SimpleType(mut values, deserializer) => {
4054                    if let Some(deserializer) = deserializer {
4055                        let value = deserializer.finish(reader)?;
4056                        Self::store_simple_type(&mut values, value)?;
4057                    }
4058                    Ok(super::RedefineContent::SimpleType(values.ok_or_else(
4059                        || ErrorKind::MissingElement("simpleType".into()),
4060                    )?))
4061                }
4062                Self::ComplexType(mut values, deserializer) => {
4063                    if let Some(deserializer) = deserializer {
4064                        let value = deserializer.finish(reader)?;
4065                        Self::store_complex_type(&mut values, value)?;
4066                    }
4067                    Ok(super::RedefineContent::ComplexType(values.ok_or_else(
4068                        || ErrorKind::MissingElement("complexType".into()),
4069                    )?))
4070                }
4071                Self::Group(mut values, deserializer) => {
4072                    if let Some(deserializer) = deserializer {
4073                        let value = deserializer.finish(reader)?;
4074                        Self::store_group(&mut values, value)?;
4075                    }
4076                    Ok(super::RedefineContent::Group(values.ok_or_else(|| {
4077                        ErrorKind::MissingElement("group".into())
4078                    })?))
4079                }
4080                Self::AttributeGroup(mut values, deserializer) => {
4081                    if let Some(deserializer) = deserializer {
4082                        let value = deserializer.finish(reader)?;
4083                        Self::store_attribute_group(&mut values, value)?;
4084                    }
4085                    Ok(super::RedefineContent::AttributeGroup(values.ok_or_else(
4086                        || ErrorKind::MissingElement("attributeGroup".into()),
4087                    )?))
4088                }
4089                Self::Done__(data) => Ok(data),
4090                Self::Unknown__ => unreachable!(),
4091            }
4092        }
4093    }
4094    #[derive(Debug)]
4095    pub struct OverrideDeserializer {
4096        schema_location: String,
4097        id: Option<String>,
4098        content: Vec<super::OverrideContent>,
4099        state: Box<OverrideDeserializerState>,
4100    }
4101    #[derive(Debug)]
4102    enum OverrideDeserializerState {
4103        Init__,
4104        Next__,
4105        Content__(<super::OverrideContent as WithDeserializer>::Deserializer),
4106        Unknown__,
4107    }
4108    impl OverrideDeserializer {
4109        fn from_bytes_start<R>(reader: &R, bytes_start: &BytesStart<'_>) -> Result<Self, Error>
4110        where
4111            R: DeserializeReader,
4112        {
4113            let mut schema_location: Option<String> = None;
4114            let mut id: Option<String> = None;
4115            for attrib in filter_xmlns_attributes(bytes_start) {
4116                let attrib = attrib?;
4117                if matches!(
4118                    reader.resolve_local_name(attrib.key, &super::NS_XS),
4119                    Some(b"schemaLocation")
4120                ) {
4121                    reader.read_attrib(&mut schema_location, b"schemaLocation", &attrib.value)?;
4122                } else if matches!(
4123                    reader.resolve_local_name(attrib.key, &super::NS_XS),
4124                    Some(b"id")
4125                ) {
4126                    reader.read_attrib(&mut id, b"id", &attrib.value)?;
4127                }
4128            }
4129            Ok(Self {
4130                schema_location: schema_location.ok_or_else(|| {
4131                    reader.map_error(ErrorKind::MissingAttribute("schemaLocation".into()))
4132                })?,
4133                id: id,
4134                content: Vec::new(),
4135                state: Box::new(OverrideDeserializerState::Init__),
4136            })
4137        }
4138        fn finish_state<R>(
4139            &mut self,
4140            reader: &R,
4141            state: OverrideDeserializerState,
4142        ) -> Result<(), Error>
4143        where
4144            R: DeserializeReader,
4145        {
4146            if let OverrideDeserializerState::Content__(deserializer) = state {
4147                self.store_content(deserializer.finish(reader)?)?;
4148            }
4149            Ok(())
4150        }
4151        fn store_content(&mut self, value: super::OverrideContent) -> Result<(), Error> {
4152            self.content.push(value);
4153            Ok(())
4154        }
4155        fn handle_content<'de, R>(
4156            &mut self,
4157            reader: &R,
4158            output: DeserializerOutput<'de, super::OverrideContent>,
4159            fallback: &mut Option<OverrideDeserializerState>,
4160        ) -> Result<ElementHandlerOutput<'de>, Error>
4161        where
4162            R: DeserializeReader,
4163        {
4164            let DeserializerOutput {
4165                artifact,
4166                event,
4167                allow_any,
4168            } = output;
4169            if artifact.is_none() {
4170                *self.state = fallback.take().unwrap_or(OverrideDeserializerState::Next__);
4171                return Ok(ElementHandlerOutput::break_(event, allow_any));
4172            }
4173            if let Some(fallback) = fallback.take() {
4174                self.finish_state(reader, fallback)?;
4175            }
4176            Ok(match artifact {
4177                DeserializerArtifact::None => unreachable!(),
4178                DeserializerArtifact::Data(data) => {
4179                    self.store_content(data)?;
4180                    *self.state = OverrideDeserializerState::Next__;
4181                    ElementHandlerOutput::from_event(event, allow_any)
4182                }
4183                DeserializerArtifact::Deserializer(deserializer) => {
4184                    let ret = ElementHandlerOutput::from_event(event, allow_any);
4185                    match &ret {
4186                        ElementHandlerOutput::Continue { .. } => {
4187                            fallback
4188                                .get_or_insert(OverrideDeserializerState::Content__(deserializer));
4189                            *self.state = OverrideDeserializerState::Next__;
4190                        }
4191                        ElementHandlerOutput::Break { .. } => {
4192                            *self.state = OverrideDeserializerState::Content__(deserializer);
4193                        }
4194                    }
4195                    ret
4196                }
4197            })
4198        }
4199    }
4200    impl<'de> Deserializer<'de, super::Override> for OverrideDeserializer {
4201        fn init<R>(reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::Override>
4202        where
4203            R: DeserializeReader,
4204        {
4205            reader.init_deserializer_from_start_event(event, Self::from_bytes_start)
4206        }
4207        fn next<R>(
4208            mut self,
4209            reader: &R,
4210            event: Event<'de>,
4211        ) -> DeserializerResult<'de, super::Override>
4212        where
4213            R: DeserializeReader,
4214        {
4215            use OverrideDeserializerState as S;
4216            let mut event = event;
4217            let mut fallback = None;
4218            let (event, allow_any) = loop {
4219                let state = replace(&mut *self.state, S::Unknown__);
4220                event = match (state, event) {
4221                    (S::Content__(deserializer), event) => {
4222                        let output = deserializer.next(reader, event)?;
4223                        match self.handle_content(reader, output, &mut fallback)? {
4224                            ElementHandlerOutput::Break { event, allow_any } => {
4225                                break (event, allow_any)
4226                            }
4227                            ElementHandlerOutput::Continue { event, .. } => event,
4228                        }
4229                    }
4230                    (_, Event::End(_)) => {
4231                        return Ok(DeserializerOutput {
4232                            artifact: DeserializerArtifact::Data(self.finish(reader)?),
4233                            event: DeserializerEvent::None,
4234                            allow_any: false,
4235                        });
4236                    }
4237                    (old_state @ (S::Init__ | S::Next__), event) => {
4238                        let output =
4239                            <super::OverrideContent as WithDeserializer>::Deserializer::init(
4240                                reader, event,
4241                            )?;
4242                        match self.handle_content(reader, output, &mut fallback)? {
4243                            ElementHandlerOutput::Break { event, allow_any } => {
4244                                if matches!(&*self.state, S::Unknown__) {
4245                                    *self.state = old_state;
4246                                }
4247                                break (event, allow_any);
4248                            }
4249                            ElementHandlerOutput::Continue { event, .. } => event,
4250                        }
4251                    }
4252                    (S::Unknown__, _) => unreachable!(),
4253                }
4254            };
4255            Ok(DeserializerOutput {
4256                artifact: DeserializerArtifact::Deserializer(self),
4257                event,
4258                allow_any,
4259            })
4260        }
4261        fn finish<R>(mut self, reader: &R) -> Result<super::Override, Error>
4262        where
4263            R: DeserializeReader,
4264        {
4265            let state = replace(&mut *self.state, OverrideDeserializerState::Unknown__);
4266            self.finish_state(reader, state)?;
4267            Ok(super::Override {
4268                schema_location: self.schema_location,
4269                id: self.id,
4270                content: self.content,
4271            })
4272        }
4273    }
4274    #[derive(Debug)]
4275    pub enum OverrideContentDeserializer {
4276        Init__,
4277        Annotation(
4278            Option<super::Annotation>,
4279            Option<<super::Annotation as WithDeserializer>::Deserializer>,
4280        ),
4281        SimpleType(
4282            Option<super::SimpleBaseType>,
4283            Option<<super::SimpleBaseType as WithDeserializer>::Deserializer>,
4284        ),
4285        ComplexType(
4286            Option<super::ComplexBaseType>,
4287            Option<<super::ComplexBaseType as WithDeserializer>::Deserializer>,
4288        ),
4289        Group(
4290            Option<super::GroupType>,
4291            Option<<super::GroupType as WithDeserializer>::Deserializer>,
4292        ),
4293        AttributeGroup(
4294            Option<super::AttributeGroupType>,
4295            Option<<super::AttributeGroupType as WithDeserializer>::Deserializer>,
4296        ),
4297        Element(
4298            Option<super::ElementType>,
4299            Option<<super::ElementType as WithDeserializer>::Deserializer>,
4300        ),
4301        Attribute(
4302            Option<super::AttributeType>,
4303            Option<<super::AttributeType as WithDeserializer>::Deserializer>,
4304        ),
4305        Notation(
4306            Option<super::Notation>,
4307            Option<<super::Notation as WithDeserializer>::Deserializer>,
4308        ),
4309        Done__(super::OverrideContent),
4310        Unknown__,
4311    }
4312    impl OverrideContentDeserializer {
4313        fn find_suitable<'de, R>(
4314            &mut self,
4315            reader: &R,
4316            event: Event<'de>,
4317            fallback: &mut Option<OverrideContentDeserializer>,
4318        ) -> Result<ElementHandlerOutput<'de>, Error>
4319        where
4320            R: DeserializeReader,
4321        {
4322            let (Event::Start(x) | Event::Empty(x)) = &event else {
4323                *self = Self::Init__;
4324                return Ok(ElementHandlerOutput::return_to_parent(event, false));
4325            };
4326            if matches!(
4327                reader.resolve_local_name(x.name(), &super::NS_XS),
4328                Some(b"annotation")
4329            ) {
4330                let output =
4331                    <super::Annotation as WithDeserializer>::Deserializer::init(reader, event)?;
4332                return self.handle_annotation(reader, Default::default(), output, &mut *fallback);
4333            }
4334            if matches!(
4335                reader.resolve_local_name(x.name(), &super::NS_XS),
4336                Some(b"simpleType")
4337            ) {
4338                let output =
4339                    <super::SimpleBaseType as WithDeserializer>::Deserializer::init(reader, event)?;
4340                return self.handle_simple_type(reader, Default::default(), output, &mut *fallback);
4341            }
4342            if matches!(
4343                reader.resolve_local_name(x.name(), &super::NS_XS),
4344                Some(b"complexType")
4345            ) {
4346                let output = <super::ComplexBaseType as WithDeserializer>::Deserializer::init(
4347                    reader, event,
4348                )?;
4349                return self.handle_complex_type(
4350                    reader,
4351                    Default::default(),
4352                    output,
4353                    &mut *fallback,
4354                );
4355            }
4356            if matches!(
4357                reader.resolve_local_name(x.name(), &super::NS_XS),
4358                Some(b"group")
4359            ) {
4360                let output =
4361                    <super::GroupType as WithDeserializer>::Deserializer::init(reader, event)?;
4362                return self.handle_group(reader, Default::default(), output, &mut *fallback);
4363            }
4364            if matches!(
4365                reader.resolve_local_name(x.name(), &super::NS_XS),
4366                Some(b"attributeGroup")
4367            ) {
4368                let output = <super::AttributeGroupType as WithDeserializer>::Deserializer::init(
4369                    reader, event,
4370                )?;
4371                return self.handle_attribute_group(
4372                    reader,
4373                    Default::default(),
4374                    output,
4375                    &mut *fallback,
4376                );
4377            }
4378            if matches!(
4379                reader.resolve_local_name(x.name(), &super::NS_XS),
4380                Some(b"element")
4381            ) {
4382                let output =
4383                    <super::ElementType as WithDeserializer>::Deserializer::init(reader, event)?;
4384                return self.handle_element(reader, Default::default(), output, &mut *fallback);
4385            }
4386            if matches!(
4387                reader.resolve_local_name(x.name(), &super::NS_XS),
4388                Some(b"attribute")
4389            ) {
4390                let output =
4391                    <super::AttributeType as WithDeserializer>::Deserializer::init(reader, event)?;
4392                return self.handle_attribute(reader, Default::default(), output, &mut *fallback);
4393            }
4394            if matches!(
4395                reader.resolve_local_name(x.name(), &super::NS_XS),
4396                Some(b"notation")
4397            ) {
4398                let output =
4399                    <super::Notation as WithDeserializer>::Deserializer::init(reader, event)?;
4400                return self.handle_notation(reader, Default::default(), output, &mut *fallback);
4401            }
4402            *self = Self::Init__;
4403            Ok(ElementHandlerOutput::return_to_parent(event, false))
4404        }
4405        fn store_annotation(
4406            values: &mut Option<super::Annotation>,
4407            value: super::Annotation,
4408        ) -> Result<(), Error> {
4409            if values.is_some() {
4410                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
4411                    b"annotation",
4412                )))?;
4413            }
4414            *values = Some(value);
4415            Ok(())
4416        }
4417        fn store_simple_type(
4418            values: &mut Option<super::SimpleBaseType>,
4419            value: super::SimpleBaseType,
4420        ) -> Result<(), Error> {
4421            if values.is_some() {
4422                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
4423                    b"simpleType",
4424                )))?;
4425            }
4426            *values = Some(value);
4427            Ok(())
4428        }
4429        fn store_complex_type(
4430            values: &mut Option<super::ComplexBaseType>,
4431            value: super::ComplexBaseType,
4432        ) -> Result<(), Error> {
4433            if values.is_some() {
4434                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
4435                    b"complexType",
4436                )))?;
4437            }
4438            *values = Some(value);
4439            Ok(())
4440        }
4441        fn store_group(
4442            values: &mut Option<super::GroupType>,
4443            value: super::GroupType,
4444        ) -> Result<(), Error> {
4445            if values.is_some() {
4446                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
4447                    b"group",
4448                )))?;
4449            }
4450            *values = Some(value);
4451            Ok(())
4452        }
4453        fn store_attribute_group(
4454            values: &mut Option<super::AttributeGroupType>,
4455            value: super::AttributeGroupType,
4456        ) -> Result<(), Error> {
4457            if values.is_some() {
4458                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
4459                    b"attributeGroup",
4460                )))?;
4461            }
4462            *values = Some(value);
4463            Ok(())
4464        }
4465        fn store_element(
4466            values: &mut Option<super::ElementType>,
4467            value: super::ElementType,
4468        ) -> Result<(), Error> {
4469            if values.is_some() {
4470                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
4471                    b"element",
4472                )))?;
4473            }
4474            *values = Some(value);
4475            Ok(())
4476        }
4477        fn store_attribute(
4478            values: &mut Option<super::AttributeType>,
4479            value: super::AttributeType,
4480        ) -> Result<(), Error> {
4481            if values.is_some() {
4482                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
4483                    b"attribute",
4484                )))?;
4485            }
4486            *values = Some(value);
4487            Ok(())
4488        }
4489        fn store_notation(
4490            values: &mut Option<super::Notation>,
4491            value: super::Notation,
4492        ) -> Result<(), Error> {
4493            if values.is_some() {
4494                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
4495                    b"notation",
4496                )))?;
4497            }
4498            *values = Some(value);
4499            Ok(())
4500        }
4501        fn handle_annotation<'de, R>(
4502            &mut self,
4503            reader: &R,
4504            mut values: Option<super::Annotation>,
4505            output: DeserializerOutput<'de, super::Annotation>,
4506            fallback: &mut Option<Self>,
4507        ) -> Result<ElementHandlerOutput<'de>, Error>
4508        where
4509            R: DeserializeReader,
4510        {
4511            let DeserializerOutput {
4512                artifact,
4513                event,
4514                allow_any,
4515            } = output;
4516            if artifact.is_none() {
4517                *self = match fallback.take() {
4518                    None => Self::Init__,
4519                    Some(Self::Annotation(_, Some(deserializer))) => {
4520                        Self::Annotation(values, Some(deserializer))
4521                    }
4522                    _ => unreachable!(),
4523                };
4524                return Ok(ElementHandlerOutput::break_(event, allow_any));
4525            }
4526            match fallback.take() {
4527                None => (),
4528                Some(Self::Annotation(_, Some(deserializer))) => {
4529                    let data = deserializer.finish(reader)?;
4530                    Self::store_annotation(&mut values, data)?;
4531                }
4532                Some(_) => unreachable!(),
4533            }
4534            Ok(match artifact {
4535                DeserializerArtifact::None => unreachable!(),
4536                DeserializerArtifact::Data(data) => {
4537                    Self::store_annotation(&mut values, data)?;
4538                    let data = Self::Annotation(values, None).finish(reader)?;
4539                    *self = Self::Done__(data);
4540                    ElementHandlerOutput::Break { event, allow_any }
4541                }
4542                DeserializerArtifact::Deserializer(deserializer) => {
4543                    *self = Self::Annotation(values, Some(deserializer));
4544                    ElementHandlerOutput::from_event_end(event, allow_any)
4545                }
4546            })
4547        }
4548        fn handle_simple_type<'de, R>(
4549            &mut self,
4550            reader: &R,
4551            mut values: Option<super::SimpleBaseType>,
4552            output: DeserializerOutput<'de, super::SimpleBaseType>,
4553            fallback: &mut Option<Self>,
4554        ) -> Result<ElementHandlerOutput<'de>, Error>
4555        where
4556            R: DeserializeReader,
4557        {
4558            let DeserializerOutput {
4559                artifact,
4560                event,
4561                allow_any,
4562            } = output;
4563            if artifact.is_none() {
4564                *self = match fallback.take() {
4565                    None => Self::Init__,
4566                    Some(Self::SimpleType(_, Some(deserializer))) => {
4567                        Self::SimpleType(values, Some(deserializer))
4568                    }
4569                    _ => unreachable!(),
4570                };
4571                return Ok(ElementHandlerOutput::break_(event, allow_any));
4572            }
4573            match fallback.take() {
4574                None => (),
4575                Some(Self::SimpleType(_, Some(deserializer))) => {
4576                    let data = deserializer.finish(reader)?;
4577                    Self::store_simple_type(&mut values, data)?;
4578                }
4579                Some(_) => unreachable!(),
4580            }
4581            Ok(match artifact {
4582                DeserializerArtifact::None => unreachable!(),
4583                DeserializerArtifact::Data(data) => {
4584                    Self::store_simple_type(&mut values, data)?;
4585                    let data = Self::SimpleType(values, None).finish(reader)?;
4586                    *self = Self::Done__(data);
4587                    ElementHandlerOutput::Break { event, allow_any }
4588                }
4589                DeserializerArtifact::Deserializer(deserializer) => {
4590                    *self = Self::SimpleType(values, Some(deserializer));
4591                    ElementHandlerOutput::from_event_end(event, allow_any)
4592                }
4593            })
4594        }
4595        fn handle_complex_type<'de, R>(
4596            &mut self,
4597            reader: &R,
4598            mut values: Option<super::ComplexBaseType>,
4599            output: DeserializerOutput<'de, super::ComplexBaseType>,
4600            fallback: &mut Option<Self>,
4601        ) -> Result<ElementHandlerOutput<'de>, Error>
4602        where
4603            R: DeserializeReader,
4604        {
4605            let DeserializerOutput {
4606                artifact,
4607                event,
4608                allow_any,
4609            } = output;
4610            if artifact.is_none() {
4611                *self = match fallback.take() {
4612                    None => Self::Init__,
4613                    Some(Self::ComplexType(_, Some(deserializer))) => {
4614                        Self::ComplexType(values, Some(deserializer))
4615                    }
4616                    _ => unreachable!(),
4617                };
4618                return Ok(ElementHandlerOutput::break_(event, allow_any));
4619            }
4620            match fallback.take() {
4621                None => (),
4622                Some(Self::ComplexType(_, Some(deserializer))) => {
4623                    let data = deserializer.finish(reader)?;
4624                    Self::store_complex_type(&mut values, data)?;
4625                }
4626                Some(_) => unreachable!(),
4627            }
4628            Ok(match artifact {
4629                DeserializerArtifact::None => unreachable!(),
4630                DeserializerArtifact::Data(data) => {
4631                    Self::store_complex_type(&mut values, data)?;
4632                    let data = Self::ComplexType(values, None).finish(reader)?;
4633                    *self = Self::Done__(data);
4634                    ElementHandlerOutput::Break { event, allow_any }
4635                }
4636                DeserializerArtifact::Deserializer(deserializer) => {
4637                    *self = Self::ComplexType(values, Some(deserializer));
4638                    ElementHandlerOutput::from_event_end(event, allow_any)
4639                }
4640            })
4641        }
4642        fn handle_group<'de, R>(
4643            &mut self,
4644            reader: &R,
4645            mut values: Option<super::GroupType>,
4646            output: DeserializerOutput<'de, super::GroupType>,
4647            fallback: &mut Option<Self>,
4648        ) -> Result<ElementHandlerOutput<'de>, Error>
4649        where
4650            R: DeserializeReader,
4651        {
4652            let DeserializerOutput {
4653                artifact,
4654                event,
4655                allow_any,
4656            } = output;
4657            if artifact.is_none() {
4658                *self = match fallback.take() {
4659                    None => Self::Init__,
4660                    Some(Self::Group(_, Some(deserializer))) => {
4661                        Self::Group(values, Some(deserializer))
4662                    }
4663                    _ => unreachable!(),
4664                };
4665                return Ok(ElementHandlerOutput::break_(event, allow_any));
4666            }
4667            match fallback.take() {
4668                None => (),
4669                Some(Self::Group(_, Some(deserializer))) => {
4670                    let data = deserializer.finish(reader)?;
4671                    Self::store_group(&mut values, data)?;
4672                }
4673                Some(_) => unreachable!(),
4674            }
4675            Ok(match artifact {
4676                DeserializerArtifact::None => unreachable!(),
4677                DeserializerArtifact::Data(data) => {
4678                    Self::store_group(&mut values, data)?;
4679                    let data = Self::Group(values, None).finish(reader)?;
4680                    *self = Self::Done__(data);
4681                    ElementHandlerOutput::Break { event, allow_any }
4682                }
4683                DeserializerArtifact::Deserializer(deserializer) => {
4684                    *self = Self::Group(values, Some(deserializer));
4685                    ElementHandlerOutput::from_event_end(event, allow_any)
4686                }
4687            })
4688        }
4689        fn handle_attribute_group<'de, R>(
4690            &mut self,
4691            reader: &R,
4692            mut values: Option<super::AttributeGroupType>,
4693            output: DeserializerOutput<'de, super::AttributeGroupType>,
4694            fallback: &mut Option<Self>,
4695        ) -> Result<ElementHandlerOutput<'de>, Error>
4696        where
4697            R: DeserializeReader,
4698        {
4699            let DeserializerOutput {
4700                artifact,
4701                event,
4702                allow_any,
4703            } = output;
4704            if artifact.is_none() {
4705                *self = match fallback.take() {
4706                    None => Self::Init__,
4707                    Some(Self::AttributeGroup(_, Some(deserializer))) => {
4708                        Self::AttributeGroup(values, Some(deserializer))
4709                    }
4710                    _ => unreachable!(),
4711                };
4712                return Ok(ElementHandlerOutput::break_(event, allow_any));
4713            }
4714            match fallback.take() {
4715                None => (),
4716                Some(Self::AttributeGroup(_, Some(deserializer))) => {
4717                    let data = deserializer.finish(reader)?;
4718                    Self::store_attribute_group(&mut values, data)?;
4719                }
4720                Some(_) => unreachable!(),
4721            }
4722            Ok(match artifact {
4723                DeserializerArtifact::None => unreachable!(),
4724                DeserializerArtifact::Data(data) => {
4725                    Self::store_attribute_group(&mut values, data)?;
4726                    let data = Self::AttributeGroup(values, None).finish(reader)?;
4727                    *self = Self::Done__(data);
4728                    ElementHandlerOutput::Break { event, allow_any }
4729                }
4730                DeserializerArtifact::Deserializer(deserializer) => {
4731                    *self = Self::AttributeGroup(values, Some(deserializer));
4732                    ElementHandlerOutput::from_event_end(event, allow_any)
4733                }
4734            })
4735        }
4736        fn handle_element<'de, R>(
4737            &mut self,
4738            reader: &R,
4739            mut values: Option<super::ElementType>,
4740            output: DeserializerOutput<'de, super::ElementType>,
4741            fallback: &mut Option<Self>,
4742        ) -> Result<ElementHandlerOutput<'de>, Error>
4743        where
4744            R: DeserializeReader,
4745        {
4746            let DeserializerOutput {
4747                artifact,
4748                event,
4749                allow_any,
4750            } = output;
4751            if artifact.is_none() {
4752                *self = match fallback.take() {
4753                    None => Self::Init__,
4754                    Some(Self::Element(_, Some(deserializer))) => {
4755                        Self::Element(values, Some(deserializer))
4756                    }
4757                    _ => unreachable!(),
4758                };
4759                return Ok(ElementHandlerOutput::break_(event, allow_any));
4760            }
4761            match fallback.take() {
4762                None => (),
4763                Some(Self::Element(_, Some(deserializer))) => {
4764                    let data = deserializer.finish(reader)?;
4765                    Self::store_element(&mut values, data)?;
4766                }
4767                Some(_) => unreachable!(),
4768            }
4769            Ok(match artifact {
4770                DeserializerArtifact::None => unreachable!(),
4771                DeserializerArtifact::Data(data) => {
4772                    Self::store_element(&mut values, data)?;
4773                    let data = Self::Element(values, None).finish(reader)?;
4774                    *self = Self::Done__(data);
4775                    ElementHandlerOutput::Break { event, allow_any }
4776                }
4777                DeserializerArtifact::Deserializer(deserializer) => {
4778                    *self = Self::Element(values, Some(deserializer));
4779                    ElementHandlerOutput::from_event_end(event, allow_any)
4780                }
4781            })
4782        }
4783        fn handle_attribute<'de, R>(
4784            &mut self,
4785            reader: &R,
4786            mut values: Option<super::AttributeType>,
4787            output: DeserializerOutput<'de, super::AttributeType>,
4788            fallback: &mut Option<Self>,
4789        ) -> Result<ElementHandlerOutput<'de>, Error>
4790        where
4791            R: DeserializeReader,
4792        {
4793            let DeserializerOutput {
4794                artifact,
4795                event,
4796                allow_any,
4797            } = output;
4798            if artifact.is_none() {
4799                *self = match fallback.take() {
4800                    None => Self::Init__,
4801                    Some(Self::Attribute(_, Some(deserializer))) => {
4802                        Self::Attribute(values, Some(deserializer))
4803                    }
4804                    _ => unreachable!(),
4805                };
4806                return Ok(ElementHandlerOutput::break_(event, allow_any));
4807            }
4808            match fallback.take() {
4809                None => (),
4810                Some(Self::Attribute(_, Some(deserializer))) => {
4811                    let data = deserializer.finish(reader)?;
4812                    Self::store_attribute(&mut values, data)?;
4813                }
4814                Some(_) => unreachable!(),
4815            }
4816            Ok(match artifact {
4817                DeserializerArtifact::None => unreachable!(),
4818                DeserializerArtifact::Data(data) => {
4819                    Self::store_attribute(&mut values, data)?;
4820                    let data = Self::Attribute(values, None).finish(reader)?;
4821                    *self = Self::Done__(data);
4822                    ElementHandlerOutput::Break { event, allow_any }
4823                }
4824                DeserializerArtifact::Deserializer(deserializer) => {
4825                    *self = Self::Attribute(values, Some(deserializer));
4826                    ElementHandlerOutput::from_event_end(event, allow_any)
4827                }
4828            })
4829        }
4830        fn handle_notation<'de, R>(
4831            &mut self,
4832            reader: &R,
4833            mut values: Option<super::Notation>,
4834            output: DeserializerOutput<'de, super::Notation>,
4835            fallback: &mut Option<Self>,
4836        ) -> Result<ElementHandlerOutput<'de>, Error>
4837        where
4838            R: DeserializeReader,
4839        {
4840            let DeserializerOutput {
4841                artifact,
4842                event,
4843                allow_any,
4844            } = output;
4845            if artifact.is_none() {
4846                *self = match fallback.take() {
4847                    None => Self::Init__,
4848                    Some(Self::Notation(_, Some(deserializer))) => {
4849                        Self::Notation(values, Some(deserializer))
4850                    }
4851                    _ => unreachable!(),
4852                };
4853                return Ok(ElementHandlerOutput::break_(event, allow_any));
4854            }
4855            match fallback.take() {
4856                None => (),
4857                Some(Self::Notation(_, Some(deserializer))) => {
4858                    let data = deserializer.finish(reader)?;
4859                    Self::store_notation(&mut values, data)?;
4860                }
4861                Some(_) => unreachable!(),
4862            }
4863            Ok(match artifact {
4864                DeserializerArtifact::None => unreachable!(),
4865                DeserializerArtifact::Data(data) => {
4866                    Self::store_notation(&mut values, data)?;
4867                    let data = Self::Notation(values, None).finish(reader)?;
4868                    *self = Self::Done__(data);
4869                    ElementHandlerOutput::Break { event, allow_any }
4870                }
4871                DeserializerArtifact::Deserializer(deserializer) => {
4872                    *self = Self::Notation(values, Some(deserializer));
4873                    ElementHandlerOutput::from_event_end(event, allow_any)
4874                }
4875            })
4876        }
4877    }
4878    impl<'de> Deserializer<'de, super::OverrideContent> for OverrideContentDeserializer {
4879        fn init<R>(reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::OverrideContent>
4880        where
4881            R: DeserializeReader,
4882        {
4883            let deserializer = Self::Init__;
4884            let mut output = deserializer.next(reader, event)?;
4885            output.artifact = match output.artifact {
4886                DeserializerArtifact::Deserializer(Self::Init__) => DeserializerArtifact::None,
4887                artifact => artifact,
4888            };
4889            Ok(output)
4890        }
4891        fn next<R>(
4892            mut self,
4893            reader: &R,
4894            event: Event<'de>,
4895        ) -> DeserializerResult<'de, super::OverrideContent>
4896        where
4897            R: DeserializeReader,
4898        {
4899            let mut event = event;
4900            let mut fallback = None;
4901            let (event, allow_any) = loop {
4902                let state = replace(&mut self, Self::Unknown__);
4903                event = match (state, event) {
4904                    (Self::Annotation(values, Some(deserializer)), event) => {
4905                        let output = deserializer.next(reader, event)?;
4906                        match self.handle_annotation(reader, values, output, &mut fallback)? {
4907                            ElementHandlerOutput::Break { event, allow_any } => {
4908                                break (event, allow_any)
4909                            }
4910                            ElementHandlerOutput::Continue { event, .. } => event,
4911                        }
4912                    }
4913                    (Self::SimpleType(values, Some(deserializer)), event) => {
4914                        let output = deserializer.next(reader, event)?;
4915                        match self.handle_simple_type(reader, values, output, &mut fallback)? {
4916                            ElementHandlerOutput::Break { event, allow_any } => {
4917                                break (event, allow_any)
4918                            }
4919                            ElementHandlerOutput::Continue { event, .. } => event,
4920                        }
4921                    }
4922                    (Self::ComplexType(values, Some(deserializer)), event) => {
4923                        let output = deserializer.next(reader, event)?;
4924                        match self.handle_complex_type(reader, values, output, &mut fallback)? {
4925                            ElementHandlerOutput::Break { event, allow_any } => {
4926                                break (event, allow_any)
4927                            }
4928                            ElementHandlerOutput::Continue { event, .. } => event,
4929                        }
4930                    }
4931                    (Self::Group(values, Some(deserializer)), event) => {
4932                        let output = deserializer.next(reader, event)?;
4933                        match self.handle_group(reader, values, output, &mut fallback)? {
4934                            ElementHandlerOutput::Break { event, allow_any } => {
4935                                break (event, allow_any)
4936                            }
4937                            ElementHandlerOutput::Continue { event, .. } => event,
4938                        }
4939                    }
4940                    (Self::AttributeGroup(values, Some(deserializer)), event) => {
4941                        let output = deserializer.next(reader, event)?;
4942                        match self.handle_attribute_group(reader, values, output, &mut fallback)? {
4943                            ElementHandlerOutput::Break { event, allow_any } => {
4944                                break (event, allow_any)
4945                            }
4946                            ElementHandlerOutput::Continue { event, .. } => event,
4947                        }
4948                    }
4949                    (Self::Element(values, Some(deserializer)), event) => {
4950                        let output = deserializer.next(reader, event)?;
4951                        match self.handle_element(reader, values, output, &mut fallback)? {
4952                            ElementHandlerOutput::Break { event, allow_any } => {
4953                                break (event, allow_any)
4954                            }
4955                            ElementHandlerOutput::Continue { event, .. } => event,
4956                        }
4957                    }
4958                    (Self::Attribute(values, Some(deserializer)), event) => {
4959                        let output = deserializer.next(reader, event)?;
4960                        match self.handle_attribute(reader, values, output, &mut fallback)? {
4961                            ElementHandlerOutput::Break { event, allow_any } => {
4962                                break (event, allow_any)
4963                            }
4964                            ElementHandlerOutput::Continue { event, .. } => event,
4965                        }
4966                    }
4967                    (Self::Notation(values, Some(deserializer)), event) => {
4968                        let output = deserializer.next(reader, event)?;
4969                        match self.handle_notation(reader, values, output, &mut fallback)? {
4970                            ElementHandlerOutput::Break { event, allow_any } => {
4971                                break (event, allow_any)
4972                            }
4973                            ElementHandlerOutput::Continue { event, .. } => event,
4974                        }
4975                    }
4976                    (state, event @ Event::End(_)) => {
4977                        return Ok(DeserializerOutput {
4978                            artifact: DeserializerArtifact::Data(state.finish(reader)?),
4979                            event: DeserializerEvent::Continue(event),
4980                            allow_any: false,
4981                        });
4982                    }
4983                    (Self::Init__, event) => {
4984                        match self.find_suitable(reader, event, &mut fallback)? {
4985                            ElementHandlerOutput::Break { event, allow_any } => {
4986                                break (event, allow_any)
4987                            }
4988                            ElementHandlerOutput::Continue { event, .. } => event,
4989                        }
4990                    }
4991                    (Self::Annotation(values, None), event) => {
4992                        let output = <super::Annotation as WithDeserializer>::Deserializer::init(
4993                            reader, event,
4994                        )?;
4995                        match self.handle_annotation(reader, values, output, &mut fallback)? {
4996                            ElementHandlerOutput::Break { event, allow_any } => {
4997                                break (event, allow_any)
4998                            }
4999                            ElementHandlerOutput::Continue { event, .. } => event,
5000                        }
5001                    }
5002                    (Self::SimpleType(values, None), event) => {
5003                        let output =
5004                            <super::SimpleBaseType as WithDeserializer>::Deserializer::init(
5005                                reader, event,
5006                            )?;
5007                        match self.handle_simple_type(reader, values, output, &mut fallback)? {
5008                            ElementHandlerOutput::Break { event, allow_any } => {
5009                                break (event, allow_any)
5010                            }
5011                            ElementHandlerOutput::Continue { event, .. } => event,
5012                        }
5013                    }
5014                    (Self::ComplexType(values, None), event) => {
5015                        let output =
5016                            <super::ComplexBaseType as WithDeserializer>::Deserializer::init(
5017                                reader, event,
5018                            )?;
5019                        match self.handle_complex_type(reader, values, output, &mut fallback)? {
5020                            ElementHandlerOutput::Break { event, allow_any } => {
5021                                break (event, allow_any)
5022                            }
5023                            ElementHandlerOutput::Continue { event, .. } => event,
5024                        }
5025                    }
5026                    (Self::Group(values, None), event) => {
5027                        let output = <super::GroupType as WithDeserializer>::Deserializer::init(
5028                            reader, event,
5029                        )?;
5030                        match self.handle_group(reader, values, output, &mut fallback)? {
5031                            ElementHandlerOutput::Break { event, allow_any } => {
5032                                break (event, allow_any)
5033                            }
5034                            ElementHandlerOutput::Continue { event, .. } => event,
5035                        }
5036                    }
5037                    (Self::AttributeGroup(values, None), event) => {
5038                        let output =
5039                            <super::AttributeGroupType as WithDeserializer>::Deserializer::init(
5040                                reader, event,
5041                            )?;
5042                        match self.handle_attribute_group(reader, values, output, &mut fallback)? {
5043                            ElementHandlerOutput::Break { event, allow_any } => {
5044                                break (event, allow_any)
5045                            }
5046                            ElementHandlerOutput::Continue { event, .. } => event,
5047                        }
5048                    }
5049                    (Self::Element(values, None), event) => {
5050                        let output = <super::ElementType as WithDeserializer>::Deserializer::init(
5051                            reader, event,
5052                        )?;
5053                        match self.handle_element(reader, values, output, &mut fallback)? {
5054                            ElementHandlerOutput::Break { event, allow_any } => {
5055                                break (event, allow_any)
5056                            }
5057                            ElementHandlerOutput::Continue { event, .. } => event,
5058                        }
5059                    }
5060                    (Self::Attribute(values, None), event) => {
5061                        let output =
5062                            <super::AttributeType as WithDeserializer>::Deserializer::init(
5063                                reader, event,
5064                            )?;
5065                        match self.handle_attribute(reader, values, output, &mut fallback)? {
5066                            ElementHandlerOutput::Break { event, allow_any } => {
5067                                break (event, allow_any)
5068                            }
5069                            ElementHandlerOutput::Continue { event, .. } => event,
5070                        }
5071                    }
5072                    (Self::Notation(values, None), event) => {
5073                        let output = <super::Notation as WithDeserializer>::Deserializer::init(
5074                            reader, event,
5075                        )?;
5076                        match self.handle_notation(reader, values, output, &mut fallback)? {
5077                            ElementHandlerOutput::Break { event, allow_any } => {
5078                                break (event, allow_any)
5079                            }
5080                            ElementHandlerOutput::Continue { event, .. } => event,
5081                        }
5082                    }
5083                    (s @ Self::Done__(_), event) => {
5084                        self = s;
5085                        break (DeserializerEvent::Continue(event), false);
5086                    }
5087                    (Self::Unknown__, _) => unreachable!(),
5088                }
5089            };
5090            let artifact = match self {
5091                Self::Done__(data) => DeserializerArtifact::Data(data),
5092                deserializer => DeserializerArtifact::Deserializer(deserializer),
5093            };
5094            Ok(DeserializerOutput {
5095                artifact,
5096                event,
5097                allow_any,
5098            })
5099        }
5100        fn finish<R>(self, reader: &R) -> Result<super::OverrideContent, Error>
5101        where
5102            R: DeserializeReader,
5103        {
5104            match self {
5105                Self::Init__ => Err(ErrorKind::MissingContent.into()),
5106                Self::Annotation(mut values, deserializer) => {
5107                    if let Some(deserializer) = deserializer {
5108                        let value = deserializer.finish(reader)?;
5109                        Self::store_annotation(&mut values, value)?;
5110                    }
5111                    Ok(super::OverrideContent::Annotation(values.ok_or_else(
5112                        || ErrorKind::MissingElement("annotation".into()),
5113                    )?))
5114                }
5115                Self::SimpleType(mut values, deserializer) => {
5116                    if let Some(deserializer) = deserializer {
5117                        let value = deserializer.finish(reader)?;
5118                        Self::store_simple_type(&mut values, value)?;
5119                    }
5120                    Ok(super::OverrideContent::SimpleType(values.ok_or_else(
5121                        || ErrorKind::MissingElement("simpleType".into()),
5122                    )?))
5123                }
5124                Self::ComplexType(mut values, deserializer) => {
5125                    if let Some(deserializer) = deserializer {
5126                        let value = deserializer.finish(reader)?;
5127                        Self::store_complex_type(&mut values, value)?;
5128                    }
5129                    Ok(super::OverrideContent::ComplexType(values.ok_or_else(
5130                        || ErrorKind::MissingElement("complexType".into()),
5131                    )?))
5132                }
5133                Self::Group(mut values, deserializer) => {
5134                    if let Some(deserializer) = deserializer {
5135                        let value = deserializer.finish(reader)?;
5136                        Self::store_group(&mut values, value)?;
5137                    }
5138                    Ok(super::OverrideContent::Group(values.ok_or_else(|| {
5139                        ErrorKind::MissingElement("group".into())
5140                    })?))
5141                }
5142                Self::AttributeGroup(mut values, deserializer) => {
5143                    if let Some(deserializer) = deserializer {
5144                        let value = deserializer.finish(reader)?;
5145                        Self::store_attribute_group(&mut values, value)?;
5146                    }
5147                    Ok(super::OverrideContent::AttributeGroup(values.ok_or_else(
5148                        || ErrorKind::MissingElement("attributeGroup".into()),
5149                    )?))
5150                }
5151                Self::Element(mut values, deserializer) => {
5152                    if let Some(deserializer) = deserializer {
5153                        let value = deserializer.finish(reader)?;
5154                        Self::store_element(&mut values, value)?;
5155                    }
5156                    Ok(super::OverrideContent::Element(values.ok_or_else(
5157                        || ErrorKind::MissingElement("element".into()),
5158                    )?))
5159                }
5160                Self::Attribute(mut values, deserializer) => {
5161                    if let Some(deserializer) = deserializer {
5162                        let value = deserializer.finish(reader)?;
5163                        Self::store_attribute(&mut values, value)?;
5164                    }
5165                    Ok(super::OverrideContent::Attribute(values.ok_or_else(
5166                        || ErrorKind::MissingElement("attribute".into()),
5167                    )?))
5168                }
5169                Self::Notation(mut values, deserializer) => {
5170                    if let Some(deserializer) = deserializer {
5171                        let value = deserializer.finish(reader)?;
5172                        Self::store_notation(&mut values, value)?;
5173                    }
5174                    Ok(super::OverrideContent::Notation(values.ok_or_else(
5175                        || ErrorKind::MissingElement("notation".into()),
5176                    )?))
5177                }
5178                Self::Done__(data) => Ok(data),
5179                Self::Unknown__ => unreachable!(),
5180            }
5181        }
5182    }
5183    #[derive(Debug)]
5184    pub struct AnnotationDeserializer {
5185        id: Option<String>,
5186        content: Vec<super::AnnotationContent>,
5187        state: Box<AnnotationDeserializerState>,
5188    }
5189    #[derive(Debug)]
5190    enum AnnotationDeserializerState {
5191        Init__,
5192        Next__,
5193        Content__(<super::AnnotationContent as WithDeserializer>::Deserializer),
5194        Unknown__,
5195    }
5196    impl AnnotationDeserializer {
5197        fn from_bytes_start<R>(reader: &R, bytes_start: &BytesStart<'_>) -> Result<Self, Error>
5198        where
5199            R: DeserializeReader,
5200        {
5201            let mut id: Option<String> = None;
5202            for attrib in filter_xmlns_attributes(bytes_start) {
5203                let attrib = attrib?;
5204                if matches!(
5205                    reader.resolve_local_name(attrib.key, &super::NS_XS),
5206                    Some(b"id")
5207                ) {
5208                    reader.read_attrib(&mut id, b"id", &attrib.value)?;
5209                }
5210            }
5211            Ok(Self {
5212                id: id,
5213                content: Vec::new(),
5214                state: Box::new(AnnotationDeserializerState::Init__),
5215            })
5216        }
5217        fn finish_state<R>(
5218            &mut self,
5219            reader: &R,
5220            state: AnnotationDeserializerState,
5221        ) -> Result<(), Error>
5222        where
5223            R: DeserializeReader,
5224        {
5225            if let AnnotationDeserializerState::Content__(deserializer) = state {
5226                self.store_content(deserializer.finish(reader)?)?;
5227            }
5228            Ok(())
5229        }
5230        fn store_content(&mut self, value: super::AnnotationContent) -> Result<(), Error> {
5231            self.content.push(value);
5232            Ok(())
5233        }
5234        fn handle_content<'de, R>(
5235            &mut self,
5236            reader: &R,
5237            output: DeserializerOutput<'de, super::AnnotationContent>,
5238            fallback: &mut Option<AnnotationDeserializerState>,
5239        ) -> Result<ElementHandlerOutput<'de>, Error>
5240        where
5241            R: DeserializeReader,
5242        {
5243            let DeserializerOutput {
5244                artifact,
5245                event,
5246                allow_any,
5247            } = output;
5248            if artifact.is_none() {
5249                *self.state = fallback
5250                    .take()
5251                    .unwrap_or(AnnotationDeserializerState::Next__);
5252                return Ok(ElementHandlerOutput::break_(event, allow_any));
5253            }
5254            if let Some(fallback) = fallback.take() {
5255                self.finish_state(reader, fallback)?;
5256            }
5257            Ok(match artifact {
5258                DeserializerArtifact::None => unreachable!(),
5259                DeserializerArtifact::Data(data) => {
5260                    self.store_content(data)?;
5261                    *self.state = AnnotationDeserializerState::Next__;
5262                    ElementHandlerOutput::from_event(event, allow_any)
5263                }
5264                DeserializerArtifact::Deserializer(deserializer) => {
5265                    let ret = ElementHandlerOutput::from_event(event, allow_any);
5266                    match &ret {
5267                        ElementHandlerOutput::Continue { .. } => {
5268                            fallback.get_or_insert(AnnotationDeserializerState::Content__(
5269                                deserializer,
5270                            ));
5271                            *self.state = AnnotationDeserializerState::Next__;
5272                        }
5273                        ElementHandlerOutput::Break { .. } => {
5274                            *self.state = AnnotationDeserializerState::Content__(deserializer);
5275                        }
5276                    }
5277                    ret
5278                }
5279            })
5280        }
5281    }
5282    impl<'de> Deserializer<'de, super::Annotation> for AnnotationDeserializer {
5283        fn init<R>(reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::Annotation>
5284        where
5285            R: DeserializeReader,
5286        {
5287            reader.init_deserializer_from_start_event(event, Self::from_bytes_start)
5288        }
5289        fn next<R>(
5290            mut self,
5291            reader: &R,
5292            event: Event<'de>,
5293        ) -> DeserializerResult<'de, super::Annotation>
5294        where
5295            R: DeserializeReader,
5296        {
5297            use AnnotationDeserializerState as S;
5298            let mut event = event;
5299            let mut fallback = None;
5300            let (event, allow_any) = loop {
5301                let state = replace(&mut *self.state, S::Unknown__);
5302                event = match (state, event) {
5303                    (S::Content__(deserializer), event) => {
5304                        let output = deserializer.next(reader, event)?;
5305                        match self.handle_content(reader, output, &mut fallback)? {
5306                            ElementHandlerOutput::Break { event, allow_any } => {
5307                                break (event, allow_any)
5308                            }
5309                            ElementHandlerOutput::Continue { event, .. } => event,
5310                        }
5311                    }
5312                    (_, Event::End(_)) => {
5313                        return Ok(DeserializerOutput {
5314                            artifact: DeserializerArtifact::Data(self.finish(reader)?),
5315                            event: DeserializerEvent::None,
5316                            allow_any: false,
5317                        });
5318                    }
5319                    (old_state @ (S::Init__ | S::Next__), event) => {
5320                        let output =
5321                            <super::AnnotationContent as WithDeserializer>::Deserializer::init(
5322                                reader, event,
5323                            )?;
5324                        match self.handle_content(reader, output, &mut fallback)? {
5325                            ElementHandlerOutput::Break { event, allow_any } => {
5326                                if matches!(&*self.state, S::Unknown__) {
5327                                    *self.state = old_state;
5328                                }
5329                                break (event, allow_any);
5330                            }
5331                            ElementHandlerOutput::Continue { event, .. } => event,
5332                        }
5333                    }
5334                    (S::Unknown__, _) => unreachable!(),
5335                }
5336            };
5337            Ok(DeserializerOutput {
5338                artifact: DeserializerArtifact::Deserializer(self),
5339                event,
5340                allow_any,
5341            })
5342        }
5343        fn finish<R>(mut self, reader: &R) -> Result<super::Annotation, Error>
5344        where
5345            R: DeserializeReader,
5346        {
5347            let state = replace(&mut *self.state, AnnotationDeserializerState::Unknown__);
5348            self.finish_state(reader, state)?;
5349            Ok(super::Annotation {
5350                id: self.id,
5351                content: self.content,
5352            })
5353        }
5354    }
5355    #[derive(Debug)]
5356    pub enum AnnotationContentDeserializer {
5357        Init__,
5358        Appinfo(
5359            Option<super::Appinfo>,
5360            Option<<super::Appinfo as WithDeserializer>::Deserializer>,
5361        ),
5362        Documentation(
5363            Option<super::Documentation>,
5364            Option<<super::Documentation as WithDeserializer>::Deserializer>,
5365        ),
5366        Done__(super::AnnotationContent),
5367        Unknown__,
5368    }
5369    impl AnnotationContentDeserializer {
5370        fn find_suitable<'de, R>(
5371            &mut self,
5372            reader: &R,
5373            event: Event<'de>,
5374            fallback: &mut Option<AnnotationContentDeserializer>,
5375        ) -> Result<ElementHandlerOutput<'de>, Error>
5376        where
5377            R: DeserializeReader,
5378        {
5379            let (Event::Start(x) | Event::Empty(x)) = &event else {
5380                *self = Self::Init__;
5381                return Ok(ElementHandlerOutput::return_to_parent(event, false));
5382            };
5383            if matches!(
5384                reader.resolve_local_name(x.name(), &super::NS_XS),
5385                Some(b"appinfo")
5386            ) {
5387                let output =
5388                    <super::Appinfo as WithDeserializer>::Deserializer::init(reader, event)?;
5389                return self.handle_appinfo(reader, Default::default(), output, &mut *fallback);
5390            }
5391            if matches!(
5392                reader.resolve_local_name(x.name(), &super::NS_XS),
5393                Some(b"documentation")
5394            ) {
5395                let output =
5396                    <super::Documentation as WithDeserializer>::Deserializer::init(reader, event)?;
5397                return self.handle_documentation(
5398                    reader,
5399                    Default::default(),
5400                    output,
5401                    &mut *fallback,
5402                );
5403            }
5404            *self = Self::Init__;
5405            Ok(ElementHandlerOutput::return_to_parent(event, false))
5406        }
5407        fn store_appinfo(
5408            values: &mut Option<super::Appinfo>,
5409            value: super::Appinfo,
5410        ) -> Result<(), Error> {
5411            if values.is_some() {
5412                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
5413                    b"appinfo",
5414                )))?;
5415            }
5416            *values = Some(value);
5417            Ok(())
5418        }
5419        fn store_documentation(
5420            values: &mut Option<super::Documentation>,
5421            value: super::Documentation,
5422        ) -> Result<(), Error> {
5423            if values.is_some() {
5424                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
5425                    b"documentation",
5426                )))?;
5427            }
5428            *values = Some(value);
5429            Ok(())
5430        }
5431        fn handle_appinfo<'de, R>(
5432            &mut self,
5433            reader: &R,
5434            mut values: Option<super::Appinfo>,
5435            output: DeserializerOutput<'de, super::Appinfo>,
5436            fallback: &mut Option<Self>,
5437        ) -> Result<ElementHandlerOutput<'de>, Error>
5438        where
5439            R: DeserializeReader,
5440        {
5441            let DeserializerOutput {
5442                artifact,
5443                event,
5444                allow_any,
5445            } = output;
5446            if artifact.is_none() {
5447                *self = match fallback.take() {
5448                    None => Self::Init__,
5449                    Some(Self::Appinfo(_, Some(deserializer))) => {
5450                        Self::Appinfo(values, Some(deserializer))
5451                    }
5452                    _ => unreachable!(),
5453                };
5454                return Ok(ElementHandlerOutput::break_(event, allow_any));
5455            }
5456            match fallback.take() {
5457                None => (),
5458                Some(Self::Appinfo(_, Some(deserializer))) => {
5459                    let data = deserializer.finish(reader)?;
5460                    Self::store_appinfo(&mut values, data)?;
5461                }
5462                Some(_) => unreachable!(),
5463            }
5464            Ok(match artifact {
5465                DeserializerArtifact::None => unreachable!(),
5466                DeserializerArtifact::Data(data) => {
5467                    Self::store_appinfo(&mut values, data)?;
5468                    let data = Self::Appinfo(values, None).finish(reader)?;
5469                    *self = Self::Done__(data);
5470                    ElementHandlerOutput::Break { event, allow_any }
5471                }
5472                DeserializerArtifact::Deserializer(deserializer) => {
5473                    *self = Self::Appinfo(values, Some(deserializer));
5474                    ElementHandlerOutput::from_event_end(event, allow_any)
5475                }
5476            })
5477        }
5478        fn handle_documentation<'de, R>(
5479            &mut self,
5480            reader: &R,
5481            mut values: Option<super::Documentation>,
5482            output: DeserializerOutput<'de, super::Documentation>,
5483            fallback: &mut Option<Self>,
5484        ) -> Result<ElementHandlerOutput<'de>, Error>
5485        where
5486            R: DeserializeReader,
5487        {
5488            let DeserializerOutput {
5489                artifact,
5490                event,
5491                allow_any,
5492            } = output;
5493            if artifact.is_none() {
5494                *self = match fallback.take() {
5495                    None => Self::Init__,
5496                    Some(Self::Documentation(_, Some(deserializer))) => {
5497                        Self::Documentation(values, Some(deserializer))
5498                    }
5499                    _ => unreachable!(),
5500                };
5501                return Ok(ElementHandlerOutput::break_(event, allow_any));
5502            }
5503            match fallback.take() {
5504                None => (),
5505                Some(Self::Documentation(_, Some(deserializer))) => {
5506                    let data = deserializer.finish(reader)?;
5507                    Self::store_documentation(&mut values, data)?;
5508                }
5509                Some(_) => unreachable!(),
5510            }
5511            Ok(match artifact {
5512                DeserializerArtifact::None => unreachable!(),
5513                DeserializerArtifact::Data(data) => {
5514                    Self::store_documentation(&mut values, data)?;
5515                    let data = Self::Documentation(values, None).finish(reader)?;
5516                    *self = Self::Done__(data);
5517                    ElementHandlerOutput::Break { event, allow_any }
5518                }
5519                DeserializerArtifact::Deserializer(deserializer) => {
5520                    *self = Self::Documentation(values, Some(deserializer));
5521                    ElementHandlerOutput::from_event_end(event, allow_any)
5522                }
5523            })
5524        }
5525    }
5526    impl<'de> Deserializer<'de, super::AnnotationContent> for AnnotationContentDeserializer {
5527        fn init<R>(
5528            reader: &R,
5529            event: Event<'de>,
5530        ) -> DeserializerResult<'de, super::AnnotationContent>
5531        where
5532            R: DeserializeReader,
5533        {
5534            let deserializer = Self::Init__;
5535            let mut output = deserializer.next(reader, event)?;
5536            output.artifact = match output.artifact {
5537                DeserializerArtifact::Deserializer(Self::Init__) => DeserializerArtifact::None,
5538                artifact => artifact,
5539            };
5540            Ok(output)
5541        }
5542        fn next<R>(
5543            mut self,
5544            reader: &R,
5545            event: Event<'de>,
5546        ) -> DeserializerResult<'de, super::AnnotationContent>
5547        where
5548            R: DeserializeReader,
5549        {
5550            let mut event = event;
5551            let mut fallback = None;
5552            let (event, allow_any) = loop {
5553                let state = replace(&mut self, Self::Unknown__);
5554                event = match (state, event) {
5555                    (Self::Appinfo(values, Some(deserializer)), event) => {
5556                        let output = deserializer.next(reader, event)?;
5557                        match self.handle_appinfo(reader, values, output, &mut fallback)? {
5558                            ElementHandlerOutput::Break { event, allow_any } => {
5559                                break (event, allow_any)
5560                            }
5561                            ElementHandlerOutput::Continue { event, .. } => event,
5562                        }
5563                    }
5564                    (Self::Documentation(values, Some(deserializer)), event) => {
5565                        let output = deserializer.next(reader, event)?;
5566                        match self.handle_documentation(reader, values, output, &mut fallback)? {
5567                            ElementHandlerOutput::Break { event, allow_any } => {
5568                                break (event, allow_any)
5569                            }
5570                            ElementHandlerOutput::Continue { event, .. } => event,
5571                        }
5572                    }
5573                    (state, event @ Event::End(_)) => {
5574                        return Ok(DeserializerOutput {
5575                            artifact: DeserializerArtifact::Data(state.finish(reader)?),
5576                            event: DeserializerEvent::Continue(event),
5577                            allow_any: false,
5578                        });
5579                    }
5580                    (Self::Init__, event) => {
5581                        match self.find_suitable(reader, event, &mut fallback)? {
5582                            ElementHandlerOutput::Break { event, allow_any } => {
5583                                break (event, allow_any)
5584                            }
5585                            ElementHandlerOutput::Continue { event, .. } => event,
5586                        }
5587                    }
5588                    (Self::Appinfo(values, None), event) => {
5589                        let output = <super::Appinfo as WithDeserializer>::Deserializer::init(
5590                            reader, event,
5591                        )?;
5592                        match self.handle_appinfo(reader, values, output, &mut fallback)? {
5593                            ElementHandlerOutput::Break { event, allow_any } => {
5594                                break (event, allow_any)
5595                            }
5596                            ElementHandlerOutput::Continue { event, .. } => event,
5597                        }
5598                    }
5599                    (Self::Documentation(values, None), event) => {
5600                        let output =
5601                            <super::Documentation as WithDeserializer>::Deserializer::init(
5602                                reader, event,
5603                            )?;
5604                        match self.handle_documentation(reader, values, output, &mut fallback)? {
5605                            ElementHandlerOutput::Break { event, allow_any } => {
5606                                break (event, allow_any)
5607                            }
5608                            ElementHandlerOutput::Continue { event, .. } => event,
5609                        }
5610                    }
5611                    (s @ Self::Done__(_), event) => {
5612                        self = s;
5613                        break (DeserializerEvent::Continue(event), false);
5614                    }
5615                    (Self::Unknown__, _) => unreachable!(),
5616                }
5617            };
5618            let artifact = match self {
5619                Self::Done__(data) => DeserializerArtifact::Data(data),
5620                deserializer => DeserializerArtifact::Deserializer(deserializer),
5621            };
5622            Ok(DeserializerOutput {
5623                artifact,
5624                event,
5625                allow_any,
5626            })
5627        }
5628        fn finish<R>(self, reader: &R) -> Result<super::AnnotationContent, Error>
5629        where
5630            R: DeserializeReader,
5631        {
5632            match self {
5633                Self::Init__ => Err(ErrorKind::MissingContent.into()),
5634                Self::Appinfo(mut values, deserializer) => {
5635                    if let Some(deserializer) = deserializer {
5636                        let value = deserializer.finish(reader)?;
5637                        Self::store_appinfo(&mut values, value)?;
5638                    }
5639                    Ok(super::AnnotationContent::Appinfo(values.ok_or_else(
5640                        || ErrorKind::MissingElement("appinfo".into()),
5641                    )?))
5642                }
5643                Self::Documentation(mut values, deserializer) => {
5644                    if let Some(deserializer) = deserializer {
5645                        let value = deserializer.finish(reader)?;
5646                        Self::store_documentation(&mut values, value)?;
5647                    }
5648                    Ok(super::AnnotationContent::Documentation(values.ok_or_else(
5649                        || ErrorKind::MissingElement("documentation".into()),
5650                    )?))
5651                }
5652                Self::Done__(data) => Ok(data),
5653                Self::Unknown__ => unreachable!(),
5654            }
5655        }
5656    }
5657    #[derive(Debug)]
5658    pub struct DefaultOpenContentDeserializer {
5659        id: Option<String>,
5660        applies_to_empty: bool,
5661        mode: super::DefaultOpenContentModeType,
5662        annotation: Option<super::Annotation>,
5663        any: Option<super::WildcardType>,
5664        state: Box<DefaultOpenContentDeserializerState>,
5665    }
5666    #[derive(Debug)]
5667    enum DefaultOpenContentDeserializerState {
5668        Init__,
5669        Annotation(Option<<super::Annotation as WithDeserializer>::Deserializer>),
5670        Any(Option<<super::WildcardType as WithDeserializer>::Deserializer>),
5671        Done__,
5672        Unknown__,
5673    }
5674    impl DefaultOpenContentDeserializer {
5675        fn from_bytes_start<R>(reader: &R, bytes_start: &BytesStart<'_>) -> Result<Self, Error>
5676        where
5677            R: DeserializeReader,
5678        {
5679            let mut id: Option<String> = None;
5680            let mut applies_to_empty: Option<bool> = None;
5681            let mut mode: Option<super::DefaultOpenContentModeType> = None;
5682            for attrib in filter_xmlns_attributes(bytes_start) {
5683                let attrib = attrib?;
5684                if matches!(
5685                    reader.resolve_local_name(attrib.key, &super::NS_XS),
5686                    Some(b"id")
5687                ) {
5688                    reader.read_attrib(&mut id, b"id", &attrib.value)?;
5689                } else if matches!(
5690                    reader.resolve_local_name(attrib.key, &super::NS_XS),
5691                    Some(b"appliesToEmpty")
5692                ) {
5693                    reader.read_attrib(&mut applies_to_empty, b"appliesToEmpty", &attrib.value)?;
5694                } else if matches!(
5695                    reader.resolve_local_name(attrib.key, &super::NS_XS),
5696                    Some(b"mode")
5697                ) {
5698                    reader.read_attrib(&mut mode, b"mode", &attrib.value)?;
5699                }
5700            }
5701            Ok(Self {
5702                id: id,
5703                applies_to_empty: applies_to_empty
5704                    .unwrap_or_else(super::DefaultOpenContent::default_applies_to_empty),
5705                mode: mode.unwrap_or_else(super::DefaultOpenContent::default_mode),
5706                annotation: None,
5707                any: None,
5708                state: Box::new(DefaultOpenContentDeserializerState::Init__),
5709            })
5710        }
5711        fn finish_state<R>(
5712            &mut self,
5713            reader: &R,
5714            state: DefaultOpenContentDeserializerState,
5715        ) -> Result<(), Error>
5716        where
5717            R: DeserializeReader,
5718        {
5719            use DefaultOpenContentDeserializerState as S;
5720            match state {
5721                S::Annotation(Some(deserializer)) => {
5722                    self.store_annotation(deserializer.finish(reader)?)?
5723                }
5724                S::Any(Some(deserializer)) => self.store_any(deserializer.finish(reader)?)?,
5725                _ => (),
5726            }
5727            Ok(())
5728        }
5729        fn store_annotation(&mut self, value: super::Annotation) -> Result<(), Error> {
5730            if self.annotation.is_some() {
5731                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
5732                    b"annotation",
5733                )))?;
5734            }
5735            self.annotation = Some(value);
5736            Ok(())
5737        }
5738        fn store_any(&mut self, value: super::WildcardType) -> Result<(), Error> {
5739            if self.any.is_some() {
5740                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(b"any")))?;
5741            }
5742            self.any = Some(value);
5743            Ok(())
5744        }
5745        fn handle_annotation<'de, R>(
5746            &mut self,
5747            reader: &R,
5748            output: DeserializerOutput<'de, super::Annotation>,
5749            fallback: &mut Option<DefaultOpenContentDeserializerState>,
5750        ) -> Result<ElementHandlerOutput<'de>, Error>
5751        where
5752            R: DeserializeReader,
5753        {
5754            let DeserializerOutput {
5755                artifact,
5756                event,
5757                allow_any,
5758            } = output;
5759            if artifact.is_none() {
5760                fallback.get_or_insert(DefaultOpenContentDeserializerState::Annotation(None));
5761                *self.state = DefaultOpenContentDeserializerState::Any(None);
5762                return Ok(ElementHandlerOutput::from_event(event, allow_any));
5763            }
5764            if let Some(fallback) = fallback.take() {
5765                self.finish_state(reader, fallback)?;
5766            }
5767            Ok(match artifact {
5768                DeserializerArtifact::None => unreachable!(),
5769                DeserializerArtifact::Data(data) => {
5770                    self.store_annotation(data)?;
5771                    *self.state = DefaultOpenContentDeserializerState::Any(None);
5772                    ElementHandlerOutput::from_event(event, allow_any)
5773                }
5774                DeserializerArtifact::Deserializer(deserializer) => {
5775                    let ret = ElementHandlerOutput::from_event(event, allow_any);
5776                    match &ret {
5777                        ElementHandlerOutput::Continue { .. } => {
5778                            fallback.get_or_insert(
5779                                DefaultOpenContentDeserializerState::Annotation(Some(deserializer)),
5780                            );
5781                            *self.state = DefaultOpenContentDeserializerState::Any(None);
5782                        }
5783                        ElementHandlerOutput::Break { .. } => {
5784                            *self.state =
5785                                DefaultOpenContentDeserializerState::Annotation(Some(deserializer));
5786                        }
5787                    }
5788                    ret
5789                }
5790            })
5791        }
5792        fn handle_any<'de, R>(
5793            &mut self,
5794            reader: &R,
5795            output: DeserializerOutput<'de, super::WildcardType>,
5796            fallback: &mut Option<DefaultOpenContentDeserializerState>,
5797        ) -> Result<ElementHandlerOutput<'de>, Error>
5798        where
5799            R: DeserializeReader,
5800        {
5801            let DeserializerOutput {
5802                artifact,
5803                event,
5804                allow_any,
5805            } = output;
5806            if artifact.is_none() {
5807                if self.any.is_some() {
5808                    fallback.get_or_insert(DefaultOpenContentDeserializerState::Any(None));
5809                    *self.state = DefaultOpenContentDeserializerState::Done__;
5810                    return Ok(ElementHandlerOutput::from_event(event, allow_any));
5811                } else {
5812                    *self.state = DefaultOpenContentDeserializerState::Any(None);
5813                    return Ok(ElementHandlerOutput::break_(event, allow_any));
5814                }
5815            }
5816            if let Some(fallback) = fallback.take() {
5817                self.finish_state(reader, fallback)?;
5818            }
5819            Ok(match artifact {
5820                DeserializerArtifact::None => unreachable!(),
5821                DeserializerArtifact::Data(data) => {
5822                    self.store_any(data)?;
5823                    *self.state = DefaultOpenContentDeserializerState::Done__;
5824                    ElementHandlerOutput::from_event(event, allow_any)
5825                }
5826                DeserializerArtifact::Deserializer(deserializer) => {
5827                    let ret = ElementHandlerOutput::from_event(event, allow_any);
5828                    match &ret {
5829                        ElementHandlerOutput::Continue { .. } => {
5830                            fallback.get_or_insert(DefaultOpenContentDeserializerState::Any(Some(
5831                                deserializer,
5832                            )));
5833                            *self.state = DefaultOpenContentDeserializerState::Done__;
5834                        }
5835                        ElementHandlerOutput::Break { .. } => {
5836                            *self.state =
5837                                DefaultOpenContentDeserializerState::Any(Some(deserializer));
5838                        }
5839                    }
5840                    ret
5841                }
5842            })
5843        }
5844    }
5845    impl<'de> Deserializer<'de, super::DefaultOpenContent> for DefaultOpenContentDeserializer {
5846        fn init<R>(
5847            reader: &R,
5848            event: Event<'de>,
5849        ) -> DeserializerResult<'de, super::DefaultOpenContent>
5850        where
5851            R: DeserializeReader,
5852        {
5853            reader.init_deserializer_from_start_event(event, Self::from_bytes_start)
5854        }
5855        fn next<R>(
5856            mut self,
5857            reader: &R,
5858            event: Event<'de>,
5859        ) -> DeserializerResult<'de, super::DefaultOpenContent>
5860        where
5861            R: DeserializeReader,
5862        {
5863            use DefaultOpenContentDeserializerState as S;
5864            let mut event = event;
5865            let mut fallback = None;
5866            let mut allow_any_element = false;
5867            let (event, allow_any) = loop {
5868                let state = replace(&mut *self.state, S::Unknown__);
5869                event = match (state, event) {
5870                    (S::Annotation(Some(deserializer)), event) => {
5871                        let output = deserializer.next(reader, event)?;
5872                        match self.handle_annotation(reader, output, &mut fallback)? {
5873                            ElementHandlerOutput::Continue { event, allow_any } => {
5874                                allow_any_element = allow_any_element || allow_any;
5875                                event
5876                            }
5877                            ElementHandlerOutput::Break { event, allow_any } => {
5878                                break (event, allow_any)
5879                            }
5880                        }
5881                    }
5882                    (S::Any(Some(deserializer)), event) => {
5883                        let output = deserializer.next(reader, event)?;
5884                        match self.handle_any(reader, output, &mut fallback)? {
5885                            ElementHandlerOutput::Continue { event, allow_any } => {
5886                                allow_any_element = allow_any_element || allow_any;
5887                                event
5888                            }
5889                            ElementHandlerOutput::Break { event, allow_any } => {
5890                                break (event, allow_any)
5891                            }
5892                        }
5893                    }
5894                    (_, Event::End(_)) => {
5895                        if let Some(fallback) = fallback.take() {
5896                            self.finish_state(reader, fallback)?;
5897                        }
5898                        return Ok(DeserializerOutput {
5899                            artifact: DeserializerArtifact::Data(self.finish(reader)?),
5900                            event: DeserializerEvent::None,
5901                            allow_any: false,
5902                        });
5903                    }
5904                    (S::Init__, event) => {
5905                        fallback.get_or_insert(S::Init__);
5906                        *self.state = DefaultOpenContentDeserializerState::Annotation(None);
5907                        event
5908                    }
5909                    (S::Annotation(None), event @ (Event::Start(_) | Event::Empty(_))) => {
5910                        if reader.check_start_tag_name(&event, Some(&super::NS_XS), b"annotation") {
5911                            let output =
5912                                <super::Annotation as WithDeserializer>::Deserializer::init(
5913                                    reader, event,
5914                                )?;
5915                            match self.handle_annotation(reader, output, &mut fallback)? {
5916                                ElementHandlerOutput::Continue { event, allow_any } => {
5917                                    allow_any_element = allow_any_element || allow_any;
5918                                    event
5919                                }
5920                                ElementHandlerOutput::Break { event, allow_any } => {
5921                                    break (event, allow_any)
5922                                }
5923                            }
5924                        } else {
5925                            *self.state = S::Any(None);
5926                            allow_any_element = true;
5927                            fallback.get_or_insert(S::Annotation(None));
5928                            event
5929                        }
5930                    }
5931                    (S::Any(None), event @ (Event::Start(_) | Event::Empty(_))) => {
5932                        if reader.check_start_tag_name(&event, Some(&super::NS_XS), b"any") {
5933                            let output =
5934                                <super::WildcardType as WithDeserializer>::Deserializer::init(
5935                                    reader, event,
5936                                )?;
5937                            match self.handle_any(reader, output, &mut fallback)? {
5938                                ElementHandlerOutput::Continue { event, allow_any } => {
5939                                    allow_any_element = allow_any_element || allow_any;
5940                                    event
5941                                }
5942                                ElementHandlerOutput::Break { event, allow_any } => {
5943                                    break (event, allow_any)
5944                                }
5945                            }
5946                        } else {
5947                            *self.state = S::Done__;
5948                            allow_any_element = true;
5949                            fallback.get_or_insert(S::Any(None));
5950                            event
5951                        }
5952                    }
5953                    (S::Done__, event) => {
5954                        fallback.get_or_insert(S::Done__);
5955                        break (DeserializerEvent::Continue(event), allow_any_element);
5956                    }
5957                    (S::Unknown__, _) => unreachable!(),
5958                    (state, event) => {
5959                        *self.state = state;
5960                        break (DeserializerEvent::Break(event), false);
5961                    }
5962                }
5963            };
5964            if let Some(fallback) = fallback {
5965                *self.state = fallback;
5966            }
5967            Ok(DeserializerOutput {
5968                artifact: DeserializerArtifact::Deserializer(self),
5969                event,
5970                allow_any,
5971            })
5972        }
5973        fn finish<R>(mut self, reader: &R) -> Result<super::DefaultOpenContent, Error>
5974        where
5975            R: DeserializeReader,
5976        {
5977            let state = replace(
5978                &mut *self.state,
5979                DefaultOpenContentDeserializerState::Unknown__,
5980            );
5981            self.finish_state(reader, state)?;
5982            Ok(super::DefaultOpenContent {
5983                id: self.id,
5984                applies_to_empty: self.applies_to_empty,
5985                mode: self.mode,
5986                annotation: self.annotation,
5987                any: self
5988                    .any
5989                    .ok_or_else(|| ErrorKind::MissingElement("any".into()))?,
5990            })
5991        }
5992    }
5993    #[derive(Debug)]
5994    pub struct SimpleBaseTypeDeserializer {
5995        id: Option<String>,
5996        final_: Option<super::SimpleDerivationSetType>,
5997        name: Option<String>,
5998        content: Vec<super::SimpleBaseTypeContent>,
5999        state: Box<SimpleBaseTypeDeserializerState>,
6000    }
6001    #[derive(Debug)]
6002    enum SimpleBaseTypeDeserializerState {
6003        Init__,
6004        Next__,
6005        Content__(<super::SimpleBaseTypeContent as WithDeserializer>::Deserializer),
6006        Unknown__,
6007    }
6008    impl SimpleBaseTypeDeserializer {
6009        fn from_bytes_start<R>(reader: &R, bytes_start: &BytesStart<'_>) -> Result<Self, Error>
6010        where
6011            R: DeserializeReader,
6012        {
6013            let mut id: Option<String> = None;
6014            let mut final_: Option<super::SimpleDerivationSetType> = None;
6015            let mut name: Option<String> = None;
6016            for attrib in filter_xmlns_attributes(bytes_start) {
6017                let attrib = attrib?;
6018                if matches!(
6019                    reader.resolve_local_name(attrib.key, &super::NS_XS),
6020                    Some(b"id")
6021                ) {
6022                    reader.read_attrib(&mut id, b"id", &attrib.value)?;
6023                } else if matches!(
6024                    reader.resolve_local_name(attrib.key, &super::NS_XS),
6025                    Some(b"final")
6026                ) {
6027                    reader.read_attrib(&mut final_, b"final", &attrib.value)?;
6028                } else if matches!(
6029                    reader.resolve_local_name(attrib.key, &super::NS_XS),
6030                    Some(b"name")
6031                ) {
6032                    reader.read_attrib(&mut name, b"name", &attrib.value)?;
6033                }
6034            }
6035            Ok(Self {
6036                id: id,
6037                final_: final_,
6038                name: name,
6039                content: Vec::new(),
6040                state: Box::new(SimpleBaseTypeDeserializerState::Init__),
6041            })
6042        }
6043        fn finish_state<R>(
6044            &mut self,
6045            reader: &R,
6046            state: SimpleBaseTypeDeserializerState,
6047        ) -> Result<(), Error>
6048        where
6049            R: DeserializeReader,
6050        {
6051            if let SimpleBaseTypeDeserializerState::Content__(deserializer) = state {
6052                self.store_content(deserializer.finish(reader)?)?;
6053            }
6054            Ok(())
6055        }
6056        fn store_content(&mut self, value: super::SimpleBaseTypeContent) -> Result<(), Error> {
6057            self.content.push(value);
6058            Ok(())
6059        }
6060        fn handle_content<'de, R>(
6061            &mut self,
6062            reader: &R,
6063            output: DeserializerOutput<'de, super::SimpleBaseTypeContent>,
6064            fallback: &mut Option<SimpleBaseTypeDeserializerState>,
6065        ) -> Result<ElementHandlerOutput<'de>, Error>
6066        where
6067            R: DeserializeReader,
6068        {
6069            let DeserializerOutput {
6070                artifact,
6071                event,
6072                allow_any,
6073            } = output;
6074            if artifact.is_none() {
6075                *self.state = fallback
6076                    .take()
6077                    .unwrap_or(SimpleBaseTypeDeserializerState::Next__);
6078                return Ok(ElementHandlerOutput::break_(event, allow_any));
6079            }
6080            if let Some(fallback) = fallback.take() {
6081                self.finish_state(reader, fallback)?;
6082            }
6083            Ok(match artifact {
6084                DeserializerArtifact::None => unreachable!(),
6085                DeserializerArtifact::Data(data) => {
6086                    self.store_content(data)?;
6087                    *self.state = SimpleBaseTypeDeserializerState::Next__;
6088                    ElementHandlerOutput::from_event(event, allow_any)
6089                }
6090                DeserializerArtifact::Deserializer(deserializer) => {
6091                    let ret = ElementHandlerOutput::from_event(event, allow_any);
6092                    match &ret {
6093                        ElementHandlerOutput::Continue { .. } => {
6094                            fallback.get_or_insert(SimpleBaseTypeDeserializerState::Content__(
6095                                deserializer,
6096                            ));
6097                            *self.state = SimpleBaseTypeDeserializerState::Next__;
6098                        }
6099                        ElementHandlerOutput::Break { .. } => {
6100                            *self.state = SimpleBaseTypeDeserializerState::Content__(deserializer);
6101                        }
6102                    }
6103                    ret
6104                }
6105            })
6106        }
6107    }
6108    impl<'de> Deserializer<'de, super::SimpleBaseType> for SimpleBaseTypeDeserializer {
6109        fn init<R>(reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::SimpleBaseType>
6110        where
6111            R: DeserializeReader,
6112        {
6113            reader.init_deserializer_from_start_event(event, Self::from_bytes_start)
6114        }
6115        fn next<R>(
6116            mut self,
6117            reader: &R,
6118            event: Event<'de>,
6119        ) -> DeserializerResult<'de, super::SimpleBaseType>
6120        where
6121            R: DeserializeReader,
6122        {
6123            use SimpleBaseTypeDeserializerState as S;
6124            let mut event = event;
6125            let mut fallback = None;
6126            let (event, allow_any) = loop {
6127                let state = replace(&mut *self.state, S::Unknown__);
6128                event = match (state, event) {
6129                    (S::Content__(deserializer), event) => {
6130                        let output = deserializer.next(reader, event)?;
6131                        match self.handle_content(reader, output, &mut fallback)? {
6132                            ElementHandlerOutput::Break { event, allow_any } => {
6133                                break (event, allow_any)
6134                            }
6135                            ElementHandlerOutput::Continue { event, .. } => event,
6136                        }
6137                    }
6138                    (_, Event::End(_)) => {
6139                        return Ok(DeserializerOutput {
6140                            artifact: DeserializerArtifact::Data(self.finish(reader)?),
6141                            event: DeserializerEvent::None,
6142                            allow_any: false,
6143                        });
6144                    }
6145                    (old_state @ (S::Init__ | S::Next__), event) => {
6146                        let output =
6147                            <super::SimpleBaseTypeContent as WithDeserializer>::Deserializer::init(
6148                                reader, event,
6149                            )?;
6150                        match self.handle_content(reader, output, &mut fallback)? {
6151                            ElementHandlerOutput::Break { event, allow_any } => {
6152                                if matches!(&*self.state, S::Unknown__) {
6153                                    *self.state = old_state;
6154                                }
6155                                break (event, allow_any);
6156                            }
6157                            ElementHandlerOutput::Continue { event, .. } => event,
6158                        }
6159                    }
6160                    (S::Unknown__, _) => unreachable!(),
6161                }
6162            };
6163            Ok(DeserializerOutput {
6164                artifact: DeserializerArtifact::Deserializer(self),
6165                event,
6166                allow_any,
6167            })
6168        }
6169        fn finish<R>(mut self, reader: &R) -> Result<super::SimpleBaseType, Error>
6170        where
6171            R: DeserializeReader,
6172        {
6173            let state = replace(&mut *self.state, SimpleBaseTypeDeserializerState::Unknown__);
6174            self.finish_state(reader, state)?;
6175            Ok(super::SimpleBaseType {
6176                id: self.id,
6177                final_: self.final_,
6178                name: self.name,
6179                content: self.content,
6180            })
6181        }
6182    }
6183    #[derive(Debug)]
6184    pub enum SimpleBaseTypeContentDeserializer {
6185        Init__,
6186        Annotation(
6187            Option<super::Annotation>,
6188            Option<<super::Annotation as WithDeserializer>::Deserializer>,
6189        ),
6190        Restriction(
6191            Option<super::Restriction>,
6192            Option<<super::Restriction as WithDeserializer>::Deserializer>,
6193        ),
6194        List(
6195            Option<super::List>,
6196            Option<<super::List as WithDeserializer>::Deserializer>,
6197        ),
6198        Union(
6199            Option<super::Union>,
6200            Option<<super::Union as WithDeserializer>::Deserializer>,
6201        ),
6202        Done__(super::SimpleBaseTypeContent),
6203        Unknown__,
6204    }
6205    impl SimpleBaseTypeContentDeserializer {
6206        fn find_suitable<'de, R>(
6207            &mut self,
6208            reader: &R,
6209            event: Event<'de>,
6210            fallback: &mut Option<SimpleBaseTypeContentDeserializer>,
6211        ) -> Result<ElementHandlerOutput<'de>, Error>
6212        where
6213            R: DeserializeReader,
6214        {
6215            let (Event::Start(x) | Event::Empty(x)) = &event else {
6216                *self = Self::Init__;
6217                return Ok(ElementHandlerOutput::return_to_parent(event, false));
6218            };
6219            if matches!(
6220                reader.resolve_local_name(x.name(), &super::NS_XS),
6221                Some(b"annotation")
6222            ) {
6223                let output =
6224                    <super::Annotation as WithDeserializer>::Deserializer::init(reader, event)?;
6225                return self.handle_annotation(reader, Default::default(), output, &mut *fallback);
6226            }
6227            if matches!(
6228                reader.resolve_local_name(x.name(), &super::NS_XS),
6229                Some(b"restriction")
6230            ) {
6231                let output =
6232                    <super::Restriction as WithDeserializer>::Deserializer::init(reader, event)?;
6233                return self.handle_restriction(reader, Default::default(), output, &mut *fallback);
6234            }
6235            if matches!(
6236                reader.resolve_local_name(x.name(), &super::NS_XS),
6237                Some(b"list")
6238            ) {
6239                let output = <super::List as WithDeserializer>::Deserializer::init(reader, event)?;
6240                return self.handle_list(reader, Default::default(), output, &mut *fallback);
6241            }
6242            if matches!(
6243                reader.resolve_local_name(x.name(), &super::NS_XS),
6244                Some(b"union")
6245            ) {
6246                let output = <super::Union as WithDeserializer>::Deserializer::init(reader, event)?;
6247                return self.handle_union_(reader, Default::default(), output, &mut *fallback);
6248            }
6249            *self = Self::Init__;
6250            Ok(ElementHandlerOutput::return_to_parent(event, false))
6251        }
6252        fn store_annotation(
6253            values: &mut Option<super::Annotation>,
6254            value: super::Annotation,
6255        ) -> Result<(), Error> {
6256            if values.is_some() {
6257                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
6258                    b"annotation",
6259                )))?;
6260            }
6261            *values = Some(value);
6262            Ok(())
6263        }
6264        fn store_restriction(
6265            values: &mut Option<super::Restriction>,
6266            value: super::Restriction,
6267        ) -> Result<(), Error> {
6268            if values.is_some() {
6269                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
6270                    b"restriction",
6271                )))?;
6272            }
6273            *values = Some(value);
6274            Ok(())
6275        }
6276        fn store_list(values: &mut Option<super::List>, value: super::List) -> Result<(), Error> {
6277            if values.is_some() {
6278                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(b"list")))?;
6279            }
6280            *values = Some(value);
6281            Ok(())
6282        }
6283        fn store_union_(
6284            values: &mut Option<super::Union>,
6285            value: super::Union,
6286        ) -> Result<(), Error> {
6287            if values.is_some() {
6288                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
6289                    b"union",
6290                )))?;
6291            }
6292            *values = Some(value);
6293            Ok(())
6294        }
6295        fn handle_annotation<'de, R>(
6296            &mut self,
6297            reader: &R,
6298            mut values: Option<super::Annotation>,
6299            output: DeserializerOutput<'de, super::Annotation>,
6300            fallback: &mut Option<Self>,
6301        ) -> Result<ElementHandlerOutput<'de>, Error>
6302        where
6303            R: DeserializeReader,
6304        {
6305            let DeserializerOutput {
6306                artifact,
6307                event,
6308                allow_any,
6309            } = output;
6310            if artifact.is_none() {
6311                *self = match fallback.take() {
6312                    None => Self::Init__,
6313                    Some(Self::Annotation(_, Some(deserializer))) => {
6314                        Self::Annotation(values, Some(deserializer))
6315                    }
6316                    _ => unreachable!(),
6317                };
6318                return Ok(ElementHandlerOutput::break_(event, allow_any));
6319            }
6320            match fallback.take() {
6321                None => (),
6322                Some(Self::Annotation(_, Some(deserializer))) => {
6323                    let data = deserializer.finish(reader)?;
6324                    Self::store_annotation(&mut values, data)?;
6325                }
6326                Some(_) => unreachable!(),
6327            }
6328            Ok(match artifact {
6329                DeserializerArtifact::None => unreachable!(),
6330                DeserializerArtifact::Data(data) => {
6331                    Self::store_annotation(&mut values, data)?;
6332                    let data = Self::Annotation(values, None).finish(reader)?;
6333                    *self = Self::Done__(data);
6334                    ElementHandlerOutput::Break { event, allow_any }
6335                }
6336                DeserializerArtifact::Deserializer(deserializer) => {
6337                    *self = Self::Annotation(values, Some(deserializer));
6338                    ElementHandlerOutput::from_event_end(event, allow_any)
6339                }
6340            })
6341        }
6342        fn handle_restriction<'de, R>(
6343            &mut self,
6344            reader: &R,
6345            mut values: Option<super::Restriction>,
6346            output: DeserializerOutput<'de, super::Restriction>,
6347            fallback: &mut Option<Self>,
6348        ) -> Result<ElementHandlerOutput<'de>, Error>
6349        where
6350            R: DeserializeReader,
6351        {
6352            let DeserializerOutput {
6353                artifact,
6354                event,
6355                allow_any,
6356            } = output;
6357            if artifact.is_none() {
6358                *self = match fallback.take() {
6359                    None => Self::Init__,
6360                    Some(Self::Restriction(_, Some(deserializer))) => {
6361                        Self::Restriction(values, Some(deserializer))
6362                    }
6363                    _ => unreachable!(),
6364                };
6365                return Ok(ElementHandlerOutput::break_(event, allow_any));
6366            }
6367            match fallback.take() {
6368                None => (),
6369                Some(Self::Restriction(_, Some(deserializer))) => {
6370                    let data = deserializer.finish(reader)?;
6371                    Self::store_restriction(&mut values, data)?;
6372                }
6373                Some(_) => unreachable!(),
6374            }
6375            Ok(match artifact {
6376                DeserializerArtifact::None => unreachable!(),
6377                DeserializerArtifact::Data(data) => {
6378                    Self::store_restriction(&mut values, data)?;
6379                    let data = Self::Restriction(values, None).finish(reader)?;
6380                    *self = Self::Done__(data);
6381                    ElementHandlerOutput::Break { event, allow_any }
6382                }
6383                DeserializerArtifact::Deserializer(deserializer) => {
6384                    *self = Self::Restriction(values, Some(deserializer));
6385                    ElementHandlerOutput::from_event_end(event, allow_any)
6386                }
6387            })
6388        }
6389        fn handle_list<'de, R>(
6390            &mut self,
6391            reader: &R,
6392            mut values: Option<super::List>,
6393            output: DeserializerOutput<'de, super::List>,
6394            fallback: &mut Option<Self>,
6395        ) -> Result<ElementHandlerOutput<'de>, Error>
6396        where
6397            R: DeserializeReader,
6398        {
6399            let DeserializerOutput {
6400                artifact,
6401                event,
6402                allow_any,
6403            } = output;
6404            if artifact.is_none() {
6405                *self = match fallback.take() {
6406                    None => Self::Init__,
6407                    Some(Self::List(_, Some(deserializer))) => {
6408                        Self::List(values, Some(deserializer))
6409                    }
6410                    _ => unreachable!(),
6411                };
6412                return Ok(ElementHandlerOutput::break_(event, allow_any));
6413            }
6414            match fallback.take() {
6415                None => (),
6416                Some(Self::List(_, Some(deserializer))) => {
6417                    let data = deserializer.finish(reader)?;
6418                    Self::store_list(&mut values, data)?;
6419                }
6420                Some(_) => unreachable!(),
6421            }
6422            Ok(match artifact {
6423                DeserializerArtifact::None => unreachable!(),
6424                DeserializerArtifact::Data(data) => {
6425                    Self::store_list(&mut values, data)?;
6426                    let data = Self::List(values, None).finish(reader)?;
6427                    *self = Self::Done__(data);
6428                    ElementHandlerOutput::Break { event, allow_any }
6429                }
6430                DeserializerArtifact::Deserializer(deserializer) => {
6431                    *self = Self::List(values, Some(deserializer));
6432                    ElementHandlerOutput::from_event_end(event, allow_any)
6433                }
6434            })
6435        }
6436        fn handle_union_<'de, R>(
6437            &mut self,
6438            reader: &R,
6439            mut values: Option<super::Union>,
6440            output: DeserializerOutput<'de, super::Union>,
6441            fallback: &mut Option<Self>,
6442        ) -> Result<ElementHandlerOutput<'de>, Error>
6443        where
6444            R: DeserializeReader,
6445        {
6446            let DeserializerOutput {
6447                artifact,
6448                event,
6449                allow_any,
6450            } = output;
6451            if artifact.is_none() {
6452                *self = match fallback.take() {
6453                    None => Self::Init__,
6454                    Some(Self::Union(_, Some(deserializer))) => {
6455                        Self::Union(values, Some(deserializer))
6456                    }
6457                    _ => unreachable!(),
6458                };
6459                return Ok(ElementHandlerOutput::break_(event, allow_any));
6460            }
6461            match fallback.take() {
6462                None => (),
6463                Some(Self::Union(_, Some(deserializer))) => {
6464                    let data = deserializer.finish(reader)?;
6465                    Self::store_union_(&mut values, data)?;
6466                }
6467                Some(_) => unreachable!(),
6468            }
6469            Ok(match artifact {
6470                DeserializerArtifact::None => unreachable!(),
6471                DeserializerArtifact::Data(data) => {
6472                    Self::store_union_(&mut values, data)?;
6473                    let data = Self::Union(values, None).finish(reader)?;
6474                    *self = Self::Done__(data);
6475                    ElementHandlerOutput::Break { event, allow_any }
6476                }
6477                DeserializerArtifact::Deserializer(deserializer) => {
6478                    *self = Self::Union(values, Some(deserializer));
6479                    ElementHandlerOutput::from_event_end(event, allow_any)
6480                }
6481            })
6482        }
6483    }
6484    impl<'de> Deserializer<'de, super::SimpleBaseTypeContent> for SimpleBaseTypeContentDeserializer {
6485        fn init<R>(
6486            reader: &R,
6487            event: Event<'de>,
6488        ) -> DeserializerResult<'de, super::SimpleBaseTypeContent>
6489        where
6490            R: DeserializeReader,
6491        {
6492            let deserializer = Self::Init__;
6493            let mut output = deserializer.next(reader, event)?;
6494            output.artifact = match output.artifact {
6495                DeserializerArtifact::Deserializer(Self::Init__) => DeserializerArtifact::None,
6496                artifact => artifact,
6497            };
6498            Ok(output)
6499        }
6500        fn next<R>(
6501            mut self,
6502            reader: &R,
6503            event: Event<'de>,
6504        ) -> DeserializerResult<'de, super::SimpleBaseTypeContent>
6505        where
6506            R: DeserializeReader,
6507        {
6508            let mut event = event;
6509            let mut fallback = None;
6510            let (event, allow_any) = loop {
6511                let state = replace(&mut self, Self::Unknown__);
6512                event = match (state, event) {
6513                    (Self::Annotation(values, Some(deserializer)), event) => {
6514                        let output = deserializer.next(reader, event)?;
6515                        match self.handle_annotation(reader, values, output, &mut fallback)? {
6516                            ElementHandlerOutput::Break { event, allow_any } => {
6517                                break (event, allow_any)
6518                            }
6519                            ElementHandlerOutput::Continue { event, .. } => event,
6520                        }
6521                    }
6522                    (Self::Restriction(values, Some(deserializer)), event) => {
6523                        let output = deserializer.next(reader, event)?;
6524                        match self.handle_restriction(reader, values, output, &mut fallback)? {
6525                            ElementHandlerOutput::Break { event, allow_any } => {
6526                                break (event, allow_any)
6527                            }
6528                            ElementHandlerOutput::Continue { event, .. } => event,
6529                        }
6530                    }
6531                    (Self::List(values, Some(deserializer)), event) => {
6532                        let output = deserializer.next(reader, event)?;
6533                        match self.handle_list(reader, values, output, &mut fallback)? {
6534                            ElementHandlerOutput::Break { event, allow_any } => {
6535                                break (event, allow_any)
6536                            }
6537                            ElementHandlerOutput::Continue { event, .. } => event,
6538                        }
6539                    }
6540                    (Self::Union(values, Some(deserializer)), event) => {
6541                        let output = deserializer.next(reader, event)?;
6542                        match self.handle_union_(reader, values, output, &mut fallback)? {
6543                            ElementHandlerOutput::Break { event, allow_any } => {
6544                                break (event, allow_any)
6545                            }
6546                            ElementHandlerOutput::Continue { event, .. } => event,
6547                        }
6548                    }
6549                    (state, event @ Event::End(_)) => {
6550                        return Ok(DeserializerOutput {
6551                            artifact: DeserializerArtifact::Data(state.finish(reader)?),
6552                            event: DeserializerEvent::Continue(event),
6553                            allow_any: false,
6554                        });
6555                    }
6556                    (Self::Init__, event) => {
6557                        match self.find_suitable(reader, event, &mut fallback)? {
6558                            ElementHandlerOutput::Break { event, allow_any } => {
6559                                break (event, allow_any)
6560                            }
6561                            ElementHandlerOutput::Continue { event, .. } => event,
6562                        }
6563                    }
6564                    (Self::Annotation(values, None), event) => {
6565                        let output = <super::Annotation as WithDeserializer>::Deserializer::init(
6566                            reader, event,
6567                        )?;
6568                        match self.handle_annotation(reader, values, output, &mut fallback)? {
6569                            ElementHandlerOutput::Break { event, allow_any } => {
6570                                break (event, allow_any)
6571                            }
6572                            ElementHandlerOutput::Continue { event, .. } => event,
6573                        }
6574                    }
6575                    (Self::Restriction(values, None), event) => {
6576                        let output = <super::Restriction as WithDeserializer>::Deserializer::init(
6577                            reader, event,
6578                        )?;
6579                        match self.handle_restriction(reader, values, output, &mut fallback)? {
6580                            ElementHandlerOutput::Break { event, allow_any } => {
6581                                break (event, allow_any)
6582                            }
6583                            ElementHandlerOutput::Continue { event, .. } => event,
6584                        }
6585                    }
6586                    (Self::List(values, None), event) => {
6587                        let output =
6588                            <super::List as WithDeserializer>::Deserializer::init(reader, event)?;
6589                        match self.handle_list(reader, values, output, &mut fallback)? {
6590                            ElementHandlerOutput::Break { event, allow_any } => {
6591                                break (event, allow_any)
6592                            }
6593                            ElementHandlerOutput::Continue { event, .. } => event,
6594                        }
6595                    }
6596                    (Self::Union(values, None), event) => {
6597                        let output =
6598                            <super::Union as WithDeserializer>::Deserializer::init(reader, event)?;
6599                        match self.handle_union_(reader, values, output, &mut fallback)? {
6600                            ElementHandlerOutput::Break { event, allow_any } => {
6601                                break (event, allow_any)
6602                            }
6603                            ElementHandlerOutput::Continue { event, .. } => event,
6604                        }
6605                    }
6606                    (s @ Self::Done__(_), event) => {
6607                        self = s;
6608                        break (DeserializerEvent::Continue(event), false);
6609                    }
6610                    (Self::Unknown__, _) => unreachable!(),
6611                }
6612            };
6613            let artifact = match self {
6614                Self::Done__(data) => DeserializerArtifact::Data(data),
6615                deserializer => DeserializerArtifact::Deserializer(deserializer),
6616            };
6617            Ok(DeserializerOutput {
6618                artifact,
6619                event,
6620                allow_any,
6621            })
6622        }
6623        fn finish<R>(self, reader: &R) -> Result<super::SimpleBaseTypeContent, Error>
6624        where
6625            R: DeserializeReader,
6626        {
6627            match self {
6628                Self::Init__ => Err(ErrorKind::MissingContent.into()),
6629                Self::Annotation(mut values, deserializer) => {
6630                    if let Some(deserializer) = deserializer {
6631                        let value = deserializer.finish(reader)?;
6632                        Self::store_annotation(&mut values, value)?;
6633                    }
6634                    Ok(super::SimpleBaseTypeContent::Annotation(
6635                        values.ok_or_else(|| ErrorKind::MissingElement("annotation".into()))?,
6636                    ))
6637                }
6638                Self::Restriction(mut values, deserializer) => {
6639                    if let Some(deserializer) = deserializer {
6640                        let value = deserializer.finish(reader)?;
6641                        Self::store_restriction(&mut values, value)?;
6642                    }
6643                    Ok(super::SimpleBaseTypeContent::Restriction(
6644                        values.ok_or_else(|| ErrorKind::MissingElement("restriction".into()))?,
6645                    ))
6646                }
6647                Self::List(mut values, deserializer) => {
6648                    if let Some(deserializer) = deserializer {
6649                        let value = deserializer.finish(reader)?;
6650                        Self::store_list(&mut values, value)?;
6651                    }
6652                    Ok(super::SimpleBaseTypeContent::List(
6653                        values.ok_or_else(|| ErrorKind::MissingElement("list".into()))?,
6654                    ))
6655                }
6656                Self::Union(mut values, deserializer) => {
6657                    if let Some(deserializer) = deserializer {
6658                        let value = deserializer.finish(reader)?;
6659                        Self::store_union_(&mut values, value)?;
6660                    }
6661                    Ok(super::SimpleBaseTypeContent::Union(values.ok_or_else(
6662                        || ErrorKind::MissingElement("union".into()),
6663                    )?))
6664                }
6665                Self::Done__(data) => Ok(data),
6666                Self::Unknown__ => unreachable!(),
6667            }
6668        }
6669    }
6670    #[derive(Debug)]
6671    pub struct ComplexBaseTypeDeserializer {
6672        id: Option<String>,
6673        name: Option<String>,
6674        mixed: Option<bool>,
6675        abstract_: bool,
6676        final_: Option<super::DerivationSetType>,
6677        block: Option<super::DerivationSetType>,
6678        default_attributes_apply: bool,
6679        content: Vec<super::ComplexBaseTypeContent>,
6680        state: Box<ComplexBaseTypeDeserializerState>,
6681    }
6682    #[derive(Debug)]
6683    enum ComplexBaseTypeDeserializerState {
6684        Init__,
6685        Next__,
6686        Content__(<super::ComplexBaseTypeContent as WithDeserializer>::Deserializer),
6687        Unknown__,
6688    }
6689    impl ComplexBaseTypeDeserializer {
6690        fn from_bytes_start<R>(reader: &R, bytes_start: &BytesStart<'_>) -> Result<Self, Error>
6691        where
6692            R: DeserializeReader,
6693        {
6694            let mut id: Option<String> = None;
6695            let mut name: Option<String> = None;
6696            let mut mixed: Option<bool> = None;
6697            let mut abstract_: Option<bool> = None;
6698            let mut final_: Option<super::DerivationSetType> = None;
6699            let mut block: Option<super::DerivationSetType> = None;
6700            let mut default_attributes_apply: Option<bool> = None;
6701            for attrib in filter_xmlns_attributes(bytes_start) {
6702                let attrib = attrib?;
6703                if matches!(
6704                    reader.resolve_local_name(attrib.key, &super::NS_XS),
6705                    Some(b"id")
6706                ) {
6707                    reader.read_attrib(&mut id, b"id", &attrib.value)?;
6708                } else if matches!(
6709                    reader.resolve_local_name(attrib.key, &super::NS_XS),
6710                    Some(b"name")
6711                ) {
6712                    reader.read_attrib(&mut name, b"name", &attrib.value)?;
6713                } else if matches!(
6714                    reader.resolve_local_name(attrib.key, &super::NS_XS),
6715                    Some(b"mixed")
6716                ) {
6717                    reader.read_attrib(&mut mixed, b"mixed", &attrib.value)?;
6718                } else if matches!(
6719                    reader.resolve_local_name(attrib.key, &super::NS_XS),
6720                    Some(b"abstract")
6721                ) {
6722                    reader.read_attrib(&mut abstract_, b"abstract", &attrib.value)?;
6723                } else if matches!(
6724                    reader.resolve_local_name(attrib.key, &super::NS_XS),
6725                    Some(b"final")
6726                ) {
6727                    reader.read_attrib(&mut final_, b"final", &attrib.value)?;
6728                } else if matches!(
6729                    reader.resolve_local_name(attrib.key, &super::NS_XS),
6730                    Some(b"block")
6731                ) {
6732                    reader.read_attrib(&mut block, b"block", &attrib.value)?;
6733                } else if matches!(
6734                    reader.resolve_local_name(attrib.key, &super::NS_XS),
6735                    Some(b"defaultAttributesApply")
6736                ) {
6737                    reader.read_attrib(
6738                        &mut default_attributes_apply,
6739                        b"defaultAttributesApply",
6740                        &attrib.value,
6741                    )?;
6742                }
6743            }
6744            Ok(Self {
6745                id: id,
6746                name: name,
6747                mixed: mixed,
6748                abstract_: abstract_.unwrap_or_else(super::ComplexBaseType::default_abstract_),
6749                final_: final_,
6750                block: block,
6751                default_attributes_apply: default_attributes_apply
6752                    .unwrap_or_else(super::ComplexBaseType::default_default_attributes_apply),
6753                content: Vec::new(),
6754                state: Box::new(ComplexBaseTypeDeserializerState::Init__),
6755            })
6756        }
6757        fn finish_state<R>(
6758            &mut self,
6759            reader: &R,
6760            state: ComplexBaseTypeDeserializerState,
6761        ) -> Result<(), Error>
6762        where
6763            R: DeserializeReader,
6764        {
6765            if let ComplexBaseTypeDeserializerState::Content__(deserializer) = state {
6766                self.store_content(deserializer.finish(reader)?)?;
6767            }
6768            Ok(())
6769        }
6770        fn store_content(&mut self, value: super::ComplexBaseTypeContent) -> Result<(), Error> {
6771            self.content.push(value);
6772            Ok(())
6773        }
6774        fn handle_content<'de, R>(
6775            &mut self,
6776            reader: &R,
6777            output: DeserializerOutput<'de, super::ComplexBaseTypeContent>,
6778            fallback: &mut Option<ComplexBaseTypeDeserializerState>,
6779        ) -> Result<ElementHandlerOutput<'de>, Error>
6780        where
6781            R: DeserializeReader,
6782        {
6783            let DeserializerOutput {
6784                artifact,
6785                event,
6786                allow_any,
6787            } = output;
6788            if artifact.is_none() {
6789                *self.state = fallback
6790                    .take()
6791                    .unwrap_or(ComplexBaseTypeDeserializerState::Next__);
6792                return Ok(ElementHandlerOutput::break_(event, allow_any));
6793            }
6794            if let Some(fallback) = fallback.take() {
6795                self.finish_state(reader, fallback)?;
6796            }
6797            Ok(match artifact {
6798                DeserializerArtifact::None => unreachable!(),
6799                DeserializerArtifact::Data(data) => {
6800                    self.store_content(data)?;
6801                    *self.state = ComplexBaseTypeDeserializerState::Next__;
6802                    ElementHandlerOutput::from_event(event, allow_any)
6803                }
6804                DeserializerArtifact::Deserializer(deserializer) => {
6805                    let ret = ElementHandlerOutput::from_event(event, allow_any);
6806                    match &ret {
6807                        ElementHandlerOutput::Continue { .. } => {
6808                            fallback.get_or_insert(ComplexBaseTypeDeserializerState::Content__(
6809                                deserializer,
6810                            ));
6811                            *self.state = ComplexBaseTypeDeserializerState::Next__;
6812                        }
6813                        ElementHandlerOutput::Break { .. } => {
6814                            *self.state = ComplexBaseTypeDeserializerState::Content__(deserializer);
6815                        }
6816                    }
6817                    ret
6818                }
6819            })
6820        }
6821    }
6822    impl<'de> Deserializer<'de, super::ComplexBaseType> for ComplexBaseTypeDeserializer {
6823        fn init<R>(reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::ComplexBaseType>
6824        where
6825            R: DeserializeReader,
6826        {
6827            reader.init_deserializer_from_start_event(event, Self::from_bytes_start)
6828        }
6829        fn next<R>(
6830            mut self,
6831            reader: &R,
6832            event: Event<'de>,
6833        ) -> DeserializerResult<'de, super::ComplexBaseType>
6834        where
6835            R: DeserializeReader,
6836        {
6837            use ComplexBaseTypeDeserializerState as S;
6838            let mut event = event;
6839            let mut fallback = None;
6840            let (event, allow_any) = loop {
6841                let state = replace(&mut *self.state, S::Unknown__);
6842                event = match (state, event) {
6843                    (S::Content__(deserializer), event) => {
6844                        let output = deserializer.next(reader, event)?;
6845                        match self.handle_content(reader, output, &mut fallback)? {
6846                            ElementHandlerOutput::Break { event, allow_any } => {
6847                                break (event, allow_any)
6848                            }
6849                            ElementHandlerOutput::Continue { event, .. } => event,
6850                        }
6851                    }
6852                    (_, Event::End(_)) => {
6853                        return Ok(DeserializerOutput {
6854                            artifact: DeserializerArtifact::Data(self.finish(reader)?),
6855                            event: DeserializerEvent::None,
6856                            allow_any: false,
6857                        });
6858                    }
6859                    (old_state @ (S::Init__ | S::Next__), event) => {
6860                        let output = < super :: ComplexBaseTypeContent as WithDeserializer > :: Deserializer :: init (reader , event) ? ;
6861                        match self.handle_content(reader, output, &mut fallback)? {
6862                            ElementHandlerOutput::Break { event, allow_any } => {
6863                                if matches!(&*self.state, S::Unknown__) {
6864                                    *self.state = old_state;
6865                                }
6866                                break (event, allow_any);
6867                            }
6868                            ElementHandlerOutput::Continue { event, .. } => event,
6869                        }
6870                    }
6871                    (S::Unknown__, _) => unreachable!(),
6872                }
6873            };
6874            Ok(DeserializerOutput {
6875                artifact: DeserializerArtifact::Deserializer(self),
6876                event,
6877                allow_any,
6878            })
6879        }
6880        fn finish<R>(mut self, reader: &R) -> Result<super::ComplexBaseType, Error>
6881        where
6882            R: DeserializeReader,
6883        {
6884            let state = replace(
6885                &mut *self.state,
6886                ComplexBaseTypeDeserializerState::Unknown__,
6887            );
6888            self.finish_state(reader, state)?;
6889            Ok(super::ComplexBaseType {
6890                id: self.id,
6891                name: self.name,
6892                mixed: self.mixed,
6893                abstract_: self.abstract_,
6894                final_: self.final_,
6895                block: self.block,
6896                default_attributes_apply: self.default_attributes_apply,
6897                content: self.content,
6898            })
6899        }
6900    }
6901    #[derive(Debug)]
6902    pub enum ComplexBaseTypeContentDeserializer {
6903        Init__,
6904        Annotation(
6905            Option<super::Annotation>,
6906            Option<<super::Annotation as WithDeserializer>::Deserializer>,
6907        ),
6908        SimpleContent(
6909            Option<super::SimpleContent>,
6910            Option<<super::SimpleContent as WithDeserializer>::Deserializer>,
6911        ),
6912        ComplexContent(
6913            Option<super::ComplexContent>,
6914            Option<<super::ComplexContent as WithDeserializer>::Deserializer>,
6915        ),
6916        OpenContent(
6917            Option<super::OpenContent>,
6918            Option<<super::OpenContent as WithDeserializer>::Deserializer>,
6919        ),
6920        Group(
6921            Option<super::GroupType>,
6922            Option<<super::GroupType as WithDeserializer>::Deserializer>,
6923        ),
6924        All(
6925            Option<super::GroupType>,
6926            Option<<super::GroupType as WithDeserializer>::Deserializer>,
6927        ),
6928        Choice(
6929            Option<super::GroupType>,
6930            Option<<super::GroupType as WithDeserializer>::Deserializer>,
6931        ),
6932        Sequence(
6933            Option<super::GroupType>,
6934            Option<<super::GroupType as WithDeserializer>::Deserializer>,
6935        ),
6936        Attribute(
6937            Option<super::AttributeType>,
6938            Option<<super::AttributeType as WithDeserializer>::Deserializer>,
6939        ),
6940        AttributeGroup(
6941            Option<super::AttributeGroupType>,
6942            Option<<super::AttributeGroupType as WithDeserializer>::Deserializer>,
6943        ),
6944        AnyAttribute(
6945            Option<super::AnyAttribute>,
6946            Option<<super::AnyAttribute as WithDeserializer>::Deserializer>,
6947        ),
6948        Assert(
6949            Option<super::AssertionType>,
6950            Option<<super::AssertionType as WithDeserializer>::Deserializer>,
6951        ),
6952        Done__(super::ComplexBaseTypeContent),
6953        Unknown__,
6954    }
6955    impl ComplexBaseTypeContentDeserializer {
6956        fn find_suitable<'de, R>(
6957            &mut self,
6958            reader: &R,
6959            event: Event<'de>,
6960            fallback: &mut Option<ComplexBaseTypeContentDeserializer>,
6961        ) -> Result<ElementHandlerOutput<'de>, Error>
6962        where
6963            R: DeserializeReader,
6964        {
6965            let (Event::Start(x) | Event::Empty(x)) = &event else {
6966                *self = Self::Init__;
6967                return Ok(ElementHandlerOutput::return_to_parent(event, false));
6968            };
6969            if matches!(
6970                reader.resolve_local_name(x.name(), &super::NS_XS),
6971                Some(b"annotation")
6972            ) {
6973                let output =
6974                    <super::Annotation as WithDeserializer>::Deserializer::init(reader, event)?;
6975                return self.handle_annotation(reader, Default::default(), output, &mut *fallback);
6976            }
6977            if matches!(
6978                reader.resolve_local_name(x.name(), &super::NS_XS),
6979                Some(b"simpleContent")
6980            ) {
6981                let output =
6982                    <super::SimpleContent as WithDeserializer>::Deserializer::init(reader, event)?;
6983                return self.handle_simple_content(
6984                    reader,
6985                    Default::default(),
6986                    output,
6987                    &mut *fallback,
6988                );
6989            }
6990            if matches!(
6991                reader.resolve_local_name(x.name(), &super::NS_XS),
6992                Some(b"complexContent")
6993            ) {
6994                let output =
6995                    <super::ComplexContent as WithDeserializer>::Deserializer::init(reader, event)?;
6996                return self.handle_complex_content(
6997                    reader,
6998                    Default::default(),
6999                    output,
7000                    &mut *fallback,
7001                );
7002            }
7003            if matches!(
7004                reader.resolve_local_name(x.name(), &super::NS_XS),
7005                Some(b"openContent")
7006            ) {
7007                let output =
7008                    <super::OpenContent as WithDeserializer>::Deserializer::init(reader, event)?;
7009                return self.handle_open_content(
7010                    reader,
7011                    Default::default(),
7012                    output,
7013                    &mut *fallback,
7014                );
7015            }
7016            if matches!(
7017                reader.resolve_local_name(x.name(), &super::NS_XS),
7018                Some(b"group")
7019            ) {
7020                let output =
7021                    <super::GroupType as WithDeserializer>::Deserializer::init(reader, event)?;
7022                return self.handle_group(reader, Default::default(), output, &mut *fallback);
7023            }
7024            if matches!(
7025                reader.resolve_local_name(x.name(), &super::NS_XS),
7026                Some(b"all")
7027            ) {
7028                let output =
7029                    <super::GroupType as WithDeserializer>::Deserializer::init(reader, event)?;
7030                return self.handle_all(reader, Default::default(), output, &mut *fallback);
7031            }
7032            if matches!(
7033                reader.resolve_local_name(x.name(), &super::NS_XS),
7034                Some(b"choice")
7035            ) {
7036                let output =
7037                    <super::GroupType as WithDeserializer>::Deserializer::init(reader, event)?;
7038                return self.handle_choice(reader, Default::default(), output, &mut *fallback);
7039            }
7040            if matches!(
7041                reader.resolve_local_name(x.name(), &super::NS_XS),
7042                Some(b"sequence")
7043            ) {
7044                let output =
7045                    <super::GroupType as WithDeserializer>::Deserializer::init(reader, event)?;
7046                return self.handle_sequence(reader, Default::default(), output, &mut *fallback);
7047            }
7048            if matches!(
7049                reader.resolve_local_name(x.name(), &super::NS_XS),
7050                Some(b"attribute")
7051            ) {
7052                let output =
7053                    <super::AttributeType as WithDeserializer>::Deserializer::init(reader, event)?;
7054                return self.handle_attribute(reader, Default::default(), output, &mut *fallback);
7055            }
7056            if matches!(
7057                reader.resolve_local_name(x.name(), &super::NS_XS),
7058                Some(b"attributeGroup")
7059            ) {
7060                let output = <super::AttributeGroupType as WithDeserializer>::Deserializer::init(
7061                    reader, event,
7062                )?;
7063                return self.handle_attribute_group(
7064                    reader,
7065                    Default::default(),
7066                    output,
7067                    &mut *fallback,
7068                );
7069            }
7070            if matches!(
7071                reader.resolve_local_name(x.name(), &super::NS_XS),
7072                Some(b"anyAttribute")
7073            ) {
7074                let output =
7075                    <super::AnyAttribute as WithDeserializer>::Deserializer::init(reader, event)?;
7076                return self.handle_any_attribute(
7077                    reader,
7078                    Default::default(),
7079                    output,
7080                    &mut *fallback,
7081                );
7082            }
7083            if matches!(
7084                reader.resolve_local_name(x.name(), &super::NS_XS),
7085                Some(b"assert")
7086            ) {
7087                let output =
7088                    <super::AssertionType as WithDeserializer>::Deserializer::init(reader, event)?;
7089                return self.handle_assert(reader, Default::default(), output, &mut *fallback);
7090            }
7091            *self = Self::Init__;
7092            Ok(ElementHandlerOutput::return_to_parent(event, false))
7093        }
7094        fn store_annotation(
7095            values: &mut Option<super::Annotation>,
7096            value: super::Annotation,
7097        ) -> Result<(), Error> {
7098            if values.is_some() {
7099                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
7100                    b"annotation",
7101                )))?;
7102            }
7103            *values = Some(value);
7104            Ok(())
7105        }
7106        fn store_simple_content(
7107            values: &mut Option<super::SimpleContent>,
7108            value: super::SimpleContent,
7109        ) -> Result<(), Error> {
7110            if values.is_some() {
7111                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
7112                    b"simpleContent",
7113                )))?;
7114            }
7115            *values = Some(value);
7116            Ok(())
7117        }
7118        fn store_complex_content(
7119            values: &mut Option<super::ComplexContent>,
7120            value: super::ComplexContent,
7121        ) -> Result<(), Error> {
7122            if values.is_some() {
7123                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
7124                    b"complexContent",
7125                )))?;
7126            }
7127            *values = Some(value);
7128            Ok(())
7129        }
7130        fn store_open_content(
7131            values: &mut Option<super::OpenContent>,
7132            value: super::OpenContent,
7133        ) -> Result<(), Error> {
7134            if values.is_some() {
7135                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
7136                    b"openContent",
7137                )))?;
7138            }
7139            *values = Some(value);
7140            Ok(())
7141        }
7142        fn store_group(
7143            values: &mut Option<super::GroupType>,
7144            value: super::GroupType,
7145        ) -> Result<(), Error> {
7146            if values.is_some() {
7147                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
7148                    b"group",
7149                )))?;
7150            }
7151            *values = Some(value);
7152            Ok(())
7153        }
7154        fn store_all(
7155            values: &mut Option<super::GroupType>,
7156            value: super::GroupType,
7157        ) -> Result<(), Error> {
7158            if values.is_some() {
7159                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(b"all")))?;
7160            }
7161            *values = Some(value);
7162            Ok(())
7163        }
7164        fn store_choice(
7165            values: &mut Option<super::GroupType>,
7166            value: super::GroupType,
7167        ) -> Result<(), Error> {
7168            if values.is_some() {
7169                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
7170                    b"choice",
7171                )))?;
7172            }
7173            *values = Some(value);
7174            Ok(())
7175        }
7176        fn store_sequence(
7177            values: &mut Option<super::GroupType>,
7178            value: super::GroupType,
7179        ) -> Result<(), Error> {
7180            if values.is_some() {
7181                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
7182                    b"sequence",
7183                )))?;
7184            }
7185            *values = Some(value);
7186            Ok(())
7187        }
7188        fn store_attribute(
7189            values: &mut Option<super::AttributeType>,
7190            value: super::AttributeType,
7191        ) -> Result<(), Error> {
7192            if values.is_some() {
7193                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
7194                    b"attribute",
7195                )))?;
7196            }
7197            *values = Some(value);
7198            Ok(())
7199        }
7200        fn store_attribute_group(
7201            values: &mut Option<super::AttributeGroupType>,
7202            value: super::AttributeGroupType,
7203        ) -> Result<(), Error> {
7204            if values.is_some() {
7205                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
7206                    b"attributeGroup",
7207                )))?;
7208            }
7209            *values = Some(value);
7210            Ok(())
7211        }
7212        fn store_any_attribute(
7213            values: &mut Option<super::AnyAttribute>,
7214            value: super::AnyAttribute,
7215        ) -> Result<(), Error> {
7216            if values.is_some() {
7217                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
7218                    b"anyAttribute",
7219                )))?;
7220            }
7221            *values = Some(value);
7222            Ok(())
7223        }
7224        fn store_assert(
7225            values: &mut Option<super::AssertionType>,
7226            value: super::AssertionType,
7227        ) -> Result<(), Error> {
7228            if values.is_some() {
7229                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
7230                    b"assert",
7231                )))?;
7232            }
7233            *values = Some(value);
7234            Ok(())
7235        }
7236        fn handle_annotation<'de, R>(
7237            &mut self,
7238            reader: &R,
7239            mut values: Option<super::Annotation>,
7240            output: DeserializerOutput<'de, super::Annotation>,
7241            fallback: &mut Option<Self>,
7242        ) -> Result<ElementHandlerOutput<'de>, Error>
7243        where
7244            R: DeserializeReader,
7245        {
7246            let DeserializerOutput {
7247                artifact,
7248                event,
7249                allow_any,
7250            } = output;
7251            if artifact.is_none() {
7252                *self = match fallback.take() {
7253                    None => Self::Init__,
7254                    Some(Self::Annotation(_, Some(deserializer))) => {
7255                        Self::Annotation(values, Some(deserializer))
7256                    }
7257                    _ => unreachable!(),
7258                };
7259                return Ok(ElementHandlerOutput::break_(event, allow_any));
7260            }
7261            match fallback.take() {
7262                None => (),
7263                Some(Self::Annotation(_, Some(deserializer))) => {
7264                    let data = deserializer.finish(reader)?;
7265                    Self::store_annotation(&mut values, data)?;
7266                }
7267                Some(_) => unreachable!(),
7268            }
7269            Ok(match artifact {
7270                DeserializerArtifact::None => unreachable!(),
7271                DeserializerArtifact::Data(data) => {
7272                    Self::store_annotation(&mut values, data)?;
7273                    let data = Self::Annotation(values, None).finish(reader)?;
7274                    *self = Self::Done__(data);
7275                    ElementHandlerOutput::Break { event, allow_any }
7276                }
7277                DeserializerArtifact::Deserializer(deserializer) => {
7278                    *self = Self::Annotation(values, Some(deserializer));
7279                    ElementHandlerOutput::from_event_end(event, allow_any)
7280                }
7281            })
7282        }
7283        fn handle_simple_content<'de, R>(
7284            &mut self,
7285            reader: &R,
7286            mut values: Option<super::SimpleContent>,
7287            output: DeserializerOutput<'de, super::SimpleContent>,
7288            fallback: &mut Option<Self>,
7289        ) -> Result<ElementHandlerOutput<'de>, Error>
7290        where
7291            R: DeserializeReader,
7292        {
7293            let DeserializerOutput {
7294                artifact,
7295                event,
7296                allow_any,
7297            } = output;
7298            if artifact.is_none() {
7299                *self = match fallback.take() {
7300                    None => Self::Init__,
7301                    Some(Self::SimpleContent(_, Some(deserializer))) => {
7302                        Self::SimpleContent(values, Some(deserializer))
7303                    }
7304                    _ => unreachable!(),
7305                };
7306                return Ok(ElementHandlerOutput::break_(event, allow_any));
7307            }
7308            match fallback.take() {
7309                None => (),
7310                Some(Self::SimpleContent(_, Some(deserializer))) => {
7311                    let data = deserializer.finish(reader)?;
7312                    Self::store_simple_content(&mut values, data)?;
7313                }
7314                Some(_) => unreachable!(),
7315            }
7316            Ok(match artifact {
7317                DeserializerArtifact::None => unreachable!(),
7318                DeserializerArtifact::Data(data) => {
7319                    Self::store_simple_content(&mut values, data)?;
7320                    let data = Self::SimpleContent(values, None).finish(reader)?;
7321                    *self = Self::Done__(data);
7322                    ElementHandlerOutput::Break { event, allow_any }
7323                }
7324                DeserializerArtifact::Deserializer(deserializer) => {
7325                    *self = Self::SimpleContent(values, Some(deserializer));
7326                    ElementHandlerOutput::from_event_end(event, allow_any)
7327                }
7328            })
7329        }
7330        fn handle_complex_content<'de, R>(
7331            &mut self,
7332            reader: &R,
7333            mut values: Option<super::ComplexContent>,
7334            output: DeserializerOutput<'de, super::ComplexContent>,
7335            fallback: &mut Option<Self>,
7336        ) -> Result<ElementHandlerOutput<'de>, Error>
7337        where
7338            R: DeserializeReader,
7339        {
7340            let DeserializerOutput {
7341                artifact,
7342                event,
7343                allow_any,
7344            } = output;
7345            if artifact.is_none() {
7346                *self = match fallback.take() {
7347                    None => Self::Init__,
7348                    Some(Self::ComplexContent(_, Some(deserializer))) => {
7349                        Self::ComplexContent(values, Some(deserializer))
7350                    }
7351                    _ => unreachable!(),
7352                };
7353                return Ok(ElementHandlerOutput::break_(event, allow_any));
7354            }
7355            match fallback.take() {
7356                None => (),
7357                Some(Self::ComplexContent(_, Some(deserializer))) => {
7358                    let data = deserializer.finish(reader)?;
7359                    Self::store_complex_content(&mut values, data)?;
7360                }
7361                Some(_) => unreachable!(),
7362            }
7363            Ok(match artifact {
7364                DeserializerArtifact::None => unreachable!(),
7365                DeserializerArtifact::Data(data) => {
7366                    Self::store_complex_content(&mut values, data)?;
7367                    let data = Self::ComplexContent(values, None).finish(reader)?;
7368                    *self = Self::Done__(data);
7369                    ElementHandlerOutput::Break { event, allow_any }
7370                }
7371                DeserializerArtifact::Deserializer(deserializer) => {
7372                    *self = Self::ComplexContent(values, Some(deserializer));
7373                    ElementHandlerOutput::from_event_end(event, allow_any)
7374                }
7375            })
7376        }
7377        fn handle_open_content<'de, R>(
7378            &mut self,
7379            reader: &R,
7380            mut values: Option<super::OpenContent>,
7381            output: DeserializerOutput<'de, super::OpenContent>,
7382            fallback: &mut Option<Self>,
7383        ) -> Result<ElementHandlerOutput<'de>, Error>
7384        where
7385            R: DeserializeReader,
7386        {
7387            let DeserializerOutput {
7388                artifact,
7389                event,
7390                allow_any,
7391            } = output;
7392            if artifact.is_none() {
7393                *self = match fallback.take() {
7394                    None => Self::Init__,
7395                    Some(Self::OpenContent(_, Some(deserializer))) => {
7396                        Self::OpenContent(values, Some(deserializer))
7397                    }
7398                    _ => unreachable!(),
7399                };
7400                return Ok(ElementHandlerOutput::break_(event, allow_any));
7401            }
7402            match fallback.take() {
7403                None => (),
7404                Some(Self::OpenContent(_, Some(deserializer))) => {
7405                    let data = deserializer.finish(reader)?;
7406                    Self::store_open_content(&mut values, data)?;
7407                }
7408                Some(_) => unreachable!(),
7409            }
7410            Ok(match artifact {
7411                DeserializerArtifact::None => unreachable!(),
7412                DeserializerArtifact::Data(data) => {
7413                    Self::store_open_content(&mut values, data)?;
7414                    let data = Self::OpenContent(values, None).finish(reader)?;
7415                    *self = Self::Done__(data);
7416                    ElementHandlerOutput::Break { event, allow_any }
7417                }
7418                DeserializerArtifact::Deserializer(deserializer) => {
7419                    *self = Self::OpenContent(values, Some(deserializer));
7420                    ElementHandlerOutput::from_event_end(event, allow_any)
7421                }
7422            })
7423        }
7424        fn handle_group<'de, R>(
7425            &mut self,
7426            reader: &R,
7427            mut values: Option<super::GroupType>,
7428            output: DeserializerOutput<'de, super::GroupType>,
7429            fallback: &mut Option<Self>,
7430        ) -> Result<ElementHandlerOutput<'de>, Error>
7431        where
7432            R: DeserializeReader,
7433        {
7434            let DeserializerOutput {
7435                artifact,
7436                event,
7437                allow_any,
7438            } = output;
7439            if artifact.is_none() {
7440                *self = match fallback.take() {
7441                    None => Self::Init__,
7442                    Some(Self::Group(_, Some(deserializer))) => {
7443                        Self::Group(values, Some(deserializer))
7444                    }
7445                    _ => unreachable!(),
7446                };
7447                return Ok(ElementHandlerOutput::break_(event, allow_any));
7448            }
7449            match fallback.take() {
7450                None => (),
7451                Some(Self::Group(_, Some(deserializer))) => {
7452                    let data = deserializer.finish(reader)?;
7453                    Self::store_group(&mut values, data)?;
7454                }
7455                Some(_) => unreachable!(),
7456            }
7457            Ok(match artifact {
7458                DeserializerArtifact::None => unreachable!(),
7459                DeserializerArtifact::Data(data) => {
7460                    Self::store_group(&mut values, data)?;
7461                    let data = Self::Group(values, None).finish(reader)?;
7462                    *self = Self::Done__(data);
7463                    ElementHandlerOutput::Break { event, allow_any }
7464                }
7465                DeserializerArtifact::Deserializer(deserializer) => {
7466                    *self = Self::Group(values, Some(deserializer));
7467                    ElementHandlerOutput::from_event_end(event, allow_any)
7468                }
7469            })
7470        }
7471        fn handle_all<'de, R>(
7472            &mut self,
7473            reader: &R,
7474            mut values: Option<super::GroupType>,
7475            output: DeserializerOutput<'de, super::GroupType>,
7476            fallback: &mut Option<Self>,
7477        ) -> Result<ElementHandlerOutput<'de>, Error>
7478        where
7479            R: DeserializeReader,
7480        {
7481            let DeserializerOutput {
7482                artifact,
7483                event,
7484                allow_any,
7485            } = output;
7486            if artifact.is_none() {
7487                *self = match fallback.take() {
7488                    None => Self::Init__,
7489                    Some(Self::All(_, Some(deserializer))) => Self::All(values, Some(deserializer)),
7490                    _ => unreachable!(),
7491                };
7492                return Ok(ElementHandlerOutput::break_(event, allow_any));
7493            }
7494            match fallback.take() {
7495                None => (),
7496                Some(Self::All(_, Some(deserializer))) => {
7497                    let data = deserializer.finish(reader)?;
7498                    Self::store_all(&mut values, data)?;
7499                }
7500                Some(_) => unreachable!(),
7501            }
7502            Ok(match artifact {
7503                DeserializerArtifact::None => unreachable!(),
7504                DeserializerArtifact::Data(data) => {
7505                    Self::store_all(&mut values, data)?;
7506                    let data = Self::All(values, None).finish(reader)?;
7507                    *self = Self::Done__(data);
7508                    ElementHandlerOutput::Break { event, allow_any }
7509                }
7510                DeserializerArtifact::Deserializer(deserializer) => {
7511                    *self = Self::All(values, Some(deserializer));
7512                    ElementHandlerOutput::from_event_end(event, allow_any)
7513                }
7514            })
7515        }
7516        fn handle_choice<'de, R>(
7517            &mut self,
7518            reader: &R,
7519            mut values: Option<super::GroupType>,
7520            output: DeserializerOutput<'de, super::GroupType>,
7521            fallback: &mut Option<Self>,
7522        ) -> Result<ElementHandlerOutput<'de>, Error>
7523        where
7524            R: DeserializeReader,
7525        {
7526            let DeserializerOutput {
7527                artifact,
7528                event,
7529                allow_any,
7530            } = output;
7531            if artifact.is_none() {
7532                *self = match fallback.take() {
7533                    None => Self::Init__,
7534                    Some(Self::Choice(_, Some(deserializer))) => {
7535                        Self::Choice(values, Some(deserializer))
7536                    }
7537                    _ => unreachable!(),
7538                };
7539                return Ok(ElementHandlerOutput::break_(event, allow_any));
7540            }
7541            match fallback.take() {
7542                None => (),
7543                Some(Self::Choice(_, Some(deserializer))) => {
7544                    let data = deserializer.finish(reader)?;
7545                    Self::store_choice(&mut values, data)?;
7546                }
7547                Some(_) => unreachable!(),
7548            }
7549            Ok(match artifact {
7550                DeserializerArtifact::None => unreachable!(),
7551                DeserializerArtifact::Data(data) => {
7552                    Self::store_choice(&mut values, data)?;
7553                    let data = Self::Choice(values, None).finish(reader)?;
7554                    *self = Self::Done__(data);
7555                    ElementHandlerOutput::Break { event, allow_any }
7556                }
7557                DeserializerArtifact::Deserializer(deserializer) => {
7558                    *self = Self::Choice(values, Some(deserializer));
7559                    ElementHandlerOutput::from_event_end(event, allow_any)
7560                }
7561            })
7562        }
7563        fn handle_sequence<'de, R>(
7564            &mut self,
7565            reader: &R,
7566            mut values: Option<super::GroupType>,
7567            output: DeserializerOutput<'de, super::GroupType>,
7568            fallback: &mut Option<Self>,
7569        ) -> Result<ElementHandlerOutput<'de>, Error>
7570        where
7571            R: DeserializeReader,
7572        {
7573            let DeserializerOutput {
7574                artifact,
7575                event,
7576                allow_any,
7577            } = output;
7578            if artifact.is_none() {
7579                *self = match fallback.take() {
7580                    None => Self::Init__,
7581                    Some(Self::Sequence(_, Some(deserializer))) => {
7582                        Self::Sequence(values, Some(deserializer))
7583                    }
7584                    _ => unreachable!(),
7585                };
7586                return Ok(ElementHandlerOutput::break_(event, allow_any));
7587            }
7588            match fallback.take() {
7589                None => (),
7590                Some(Self::Sequence(_, Some(deserializer))) => {
7591                    let data = deserializer.finish(reader)?;
7592                    Self::store_sequence(&mut values, data)?;
7593                }
7594                Some(_) => unreachable!(),
7595            }
7596            Ok(match artifact {
7597                DeserializerArtifact::None => unreachable!(),
7598                DeserializerArtifact::Data(data) => {
7599                    Self::store_sequence(&mut values, data)?;
7600                    let data = Self::Sequence(values, None).finish(reader)?;
7601                    *self = Self::Done__(data);
7602                    ElementHandlerOutput::Break { event, allow_any }
7603                }
7604                DeserializerArtifact::Deserializer(deserializer) => {
7605                    *self = Self::Sequence(values, Some(deserializer));
7606                    ElementHandlerOutput::from_event_end(event, allow_any)
7607                }
7608            })
7609        }
7610        fn handle_attribute<'de, R>(
7611            &mut self,
7612            reader: &R,
7613            mut values: Option<super::AttributeType>,
7614            output: DeserializerOutput<'de, super::AttributeType>,
7615            fallback: &mut Option<Self>,
7616        ) -> Result<ElementHandlerOutput<'de>, Error>
7617        where
7618            R: DeserializeReader,
7619        {
7620            let DeserializerOutput {
7621                artifact,
7622                event,
7623                allow_any,
7624            } = output;
7625            if artifact.is_none() {
7626                *self = match fallback.take() {
7627                    None => Self::Init__,
7628                    Some(Self::Attribute(_, Some(deserializer))) => {
7629                        Self::Attribute(values, Some(deserializer))
7630                    }
7631                    _ => unreachable!(),
7632                };
7633                return Ok(ElementHandlerOutput::break_(event, allow_any));
7634            }
7635            match fallback.take() {
7636                None => (),
7637                Some(Self::Attribute(_, Some(deserializer))) => {
7638                    let data = deserializer.finish(reader)?;
7639                    Self::store_attribute(&mut values, data)?;
7640                }
7641                Some(_) => unreachable!(),
7642            }
7643            Ok(match artifact {
7644                DeserializerArtifact::None => unreachable!(),
7645                DeserializerArtifact::Data(data) => {
7646                    Self::store_attribute(&mut values, data)?;
7647                    let data = Self::Attribute(values, None).finish(reader)?;
7648                    *self = Self::Done__(data);
7649                    ElementHandlerOutput::Break { event, allow_any }
7650                }
7651                DeserializerArtifact::Deserializer(deserializer) => {
7652                    *self = Self::Attribute(values, Some(deserializer));
7653                    ElementHandlerOutput::from_event_end(event, allow_any)
7654                }
7655            })
7656        }
7657        fn handle_attribute_group<'de, R>(
7658            &mut self,
7659            reader: &R,
7660            mut values: Option<super::AttributeGroupType>,
7661            output: DeserializerOutput<'de, super::AttributeGroupType>,
7662            fallback: &mut Option<Self>,
7663        ) -> Result<ElementHandlerOutput<'de>, Error>
7664        where
7665            R: DeserializeReader,
7666        {
7667            let DeserializerOutput {
7668                artifact,
7669                event,
7670                allow_any,
7671            } = output;
7672            if artifact.is_none() {
7673                *self = match fallback.take() {
7674                    None => Self::Init__,
7675                    Some(Self::AttributeGroup(_, Some(deserializer))) => {
7676                        Self::AttributeGroup(values, Some(deserializer))
7677                    }
7678                    _ => unreachable!(),
7679                };
7680                return Ok(ElementHandlerOutput::break_(event, allow_any));
7681            }
7682            match fallback.take() {
7683                None => (),
7684                Some(Self::AttributeGroup(_, Some(deserializer))) => {
7685                    let data = deserializer.finish(reader)?;
7686                    Self::store_attribute_group(&mut values, data)?;
7687                }
7688                Some(_) => unreachable!(),
7689            }
7690            Ok(match artifact {
7691                DeserializerArtifact::None => unreachable!(),
7692                DeserializerArtifact::Data(data) => {
7693                    Self::store_attribute_group(&mut values, data)?;
7694                    let data = Self::AttributeGroup(values, None).finish(reader)?;
7695                    *self = Self::Done__(data);
7696                    ElementHandlerOutput::Break { event, allow_any }
7697                }
7698                DeserializerArtifact::Deserializer(deserializer) => {
7699                    *self = Self::AttributeGroup(values, Some(deserializer));
7700                    ElementHandlerOutput::from_event_end(event, allow_any)
7701                }
7702            })
7703        }
7704        fn handle_any_attribute<'de, R>(
7705            &mut self,
7706            reader: &R,
7707            mut values: Option<super::AnyAttribute>,
7708            output: DeserializerOutput<'de, super::AnyAttribute>,
7709            fallback: &mut Option<Self>,
7710        ) -> Result<ElementHandlerOutput<'de>, Error>
7711        where
7712            R: DeserializeReader,
7713        {
7714            let DeserializerOutput {
7715                artifact,
7716                event,
7717                allow_any,
7718            } = output;
7719            if artifact.is_none() {
7720                *self = match fallback.take() {
7721                    None => Self::Init__,
7722                    Some(Self::AnyAttribute(_, Some(deserializer))) => {
7723                        Self::AnyAttribute(values, Some(deserializer))
7724                    }
7725                    _ => unreachable!(),
7726                };
7727                return Ok(ElementHandlerOutput::break_(event, allow_any));
7728            }
7729            match fallback.take() {
7730                None => (),
7731                Some(Self::AnyAttribute(_, Some(deserializer))) => {
7732                    let data = deserializer.finish(reader)?;
7733                    Self::store_any_attribute(&mut values, data)?;
7734                }
7735                Some(_) => unreachable!(),
7736            }
7737            Ok(match artifact {
7738                DeserializerArtifact::None => unreachable!(),
7739                DeserializerArtifact::Data(data) => {
7740                    Self::store_any_attribute(&mut values, data)?;
7741                    let data = Self::AnyAttribute(values, None).finish(reader)?;
7742                    *self = Self::Done__(data);
7743                    ElementHandlerOutput::Break { event, allow_any }
7744                }
7745                DeserializerArtifact::Deserializer(deserializer) => {
7746                    *self = Self::AnyAttribute(values, Some(deserializer));
7747                    ElementHandlerOutput::from_event_end(event, allow_any)
7748                }
7749            })
7750        }
7751        fn handle_assert<'de, R>(
7752            &mut self,
7753            reader: &R,
7754            mut values: Option<super::AssertionType>,
7755            output: DeserializerOutput<'de, super::AssertionType>,
7756            fallback: &mut Option<Self>,
7757        ) -> Result<ElementHandlerOutput<'de>, Error>
7758        where
7759            R: DeserializeReader,
7760        {
7761            let DeserializerOutput {
7762                artifact,
7763                event,
7764                allow_any,
7765            } = output;
7766            if artifact.is_none() {
7767                *self = match fallback.take() {
7768                    None => Self::Init__,
7769                    Some(Self::Assert(_, Some(deserializer))) => {
7770                        Self::Assert(values, Some(deserializer))
7771                    }
7772                    _ => unreachable!(),
7773                };
7774                return Ok(ElementHandlerOutput::break_(event, allow_any));
7775            }
7776            match fallback.take() {
7777                None => (),
7778                Some(Self::Assert(_, Some(deserializer))) => {
7779                    let data = deserializer.finish(reader)?;
7780                    Self::store_assert(&mut values, data)?;
7781                }
7782                Some(_) => unreachable!(),
7783            }
7784            Ok(match artifact {
7785                DeserializerArtifact::None => unreachable!(),
7786                DeserializerArtifact::Data(data) => {
7787                    Self::store_assert(&mut values, data)?;
7788                    let data = Self::Assert(values, None).finish(reader)?;
7789                    *self = Self::Done__(data);
7790                    ElementHandlerOutput::Break { event, allow_any }
7791                }
7792                DeserializerArtifact::Deserializer(deserializer) => {
7793                    *self = Self::Assert(values, Some(deserializer));
7794                    ElementHandlerOutput::from_event_end(event, allow_any)
7795                }
7796            })
7797        }
7798    }
7799    impl<'de> Deserializer<'de, super::ComplexBaseTypeContent> for ComplexBaseTypeContentDeserializer {
7800        fn init<R>(
7801            reader: &R,
7802            event: Event<'de>,
7803        ) -> DeserializerResult<'de, super::ComplexBaseTypeContent>
7804        where
7805            R: DeserializeReader,
7806        {
7807            let deserializer = Self::Init__;
7808            let mut output = deserializer.next(reader, event)?;
7809            output.artifact = match output.artifact {
7810                DeserializerArtifact::Deserializer(Self::Init__) => DeserializerArtifact::None,
7811                artifact => artifact,
7812            };
7813            Ok(output)
7814        }
7815        fn next<R>(
7816            mut self,
7817            reader: &R,
7818            event: Event<'de>,
7819        ) -> DeserializerResult<'de, super::ComplexBaseTypeContent>
7820        where
7821            R: DeserializeReader,
7822        {
7823            let mut event = event;
7824            let mut fallback = None;
7825            let (event, allow_any) = loop {
7826                let state = replace(&mut self, Self::Unknown__);
7827                event = match (state, event) {
7828                    (Self::Annotation(values, Some(deserializer)), event) => {
7829                        let output = deserializer.next(reader, event)?;
7830                        match self.handle_annotation(reader, values, output, &mut fallback)? {
7831                            ElementHandlerOutput::Break { event, allow_any } => {
7832                                break (event, allow_any)
7833                            }
7834                            ElementHandlerOutput::Continue { event, .. } => event,
7835                        }
7836                    }
7837                    (Self::SimpleContent(values, Some(deserializer)), event) => {
7838                        let output = deserializer.next(reader, event)?;
7839                        match self.handle_simple_content(reader, values, output, &mut fallback)? {
7840                            ElementHandlerOutput::Break { event, allow_any } => {
7841                                break (event, allow_any)
7842                            }
7843                            ElementHandlerOutput::Continue { event, .. } => event,
7844                        }
7845                    }
7846                    (Self::ComplexContent(values, Some(deserializer)), event) => {
7847                        let output = deserializer.next(reader, event)?;
7848                        match self.handle_complex_content(reader, values, output, &mut fallback)? {
7849                            ElementHandlerOutput::Break { event, allow_any } => {
7850                                break (event, allow_any)
7851                            }
7852                            ElementHandlerOutput::Continue { event, .. } => event,
7853                        }
7854                    }
7855                    (Self::OpenContent(values, Some(deserializer)), event) => {
7856                        let output = deserializer.next(reader, event)?;
7857                        match self.handle_open_content(reader, values, output, &mut fallback)? {
7858                            ElementHandlerOutput::Break { event, allow_any } => {
7859                                break (event, allow_any)
7860                            }
7861                            ElementHandlerOutput::Continue { event, .. } => event,
7862                        }
7863                    }
7864                    (Self::Group(values, Some(deserializer)), event) => {
7865                        let output = deserializer.next(reader, event)?;
7866                        match self.handle_group(reader, values, output, &mut fallback)? {
7867                            ElementHandlerOutput::Break { event, allow_any } => {
7868                                break (event, allow_any)
7869                            }
7870                            ElementHandlerOutput::Continue { event, .. } => event,
7871                        }
7872                    }
7873                    (Self::All(values, Some(deserializer)), event) => {
7874                        let output = deserializer.next(reader, event)?;
7875                        match self.handle_all(reader, values, output, &mut fallback)? {
7876                            ElementHandlerOutput::Break { event, allow_any } => {
7877                                break (event, allow_any)
7878                            }
7879                            ElementHandlerOutput::Continue { event, .. } => event,
7880                        }
7881                    }
7882                    (Self::Choice(values, Some(deserializer)), event) => {
7883                        let output = deserializer.next(reader, event)?;
7884                        match self.handle_choice(reader, values, output, &mut fallback)? {
7885                            ElementHandlerOutput::Break { event, allow_any } => {
7886                                break (event, allow_any)
7887                            }
7888                            ElementHandlerOutput::Continue { event, .. } => event,
7889                        }
7890                    }
7891                    (Self::Sequence(values, Some(deserializer)), event) => {
7892                        let output = deserializer.next(reader, event)?;
7893                        match self.handle_sequence(reader, values, output, &mut fallback)? {
7894                            ElementHandlerOutput::Break { event, allow_any } => {
7895                                break (event, allow_any)
7896                            }
7897                            ElementHandlerOutput::Continue { event, .. } => event,
7898                        }
7899                    }
7900                    (Self::Attribute(values, Some(deserializer)), event) => {
7901                        let output = deserializer.next(reader, event)?;
7902                        match self.handle_attribute(reader, values, output, &mut fallback)? {
7903                            ElementHandlerOutput::Break { event, allow_any } => {
7904                                break (event, allow_any)
7905                            }
7906                            ElementHandlerOutput::Continue { event, .. } => event,
7907                        }
7908                    }
7909                    (Self::AttributeGroup(values, Some(deserializer)), event) => {
7910                        let output = deserializer.next(reader, event)?;
7911                        match self.handle_attribute_group(reader, values, output, &mut fallback)? {
7912                            ElementHandlerOutput::Break { event, allow_any } => {
7913                                break (event, allow_any)
7914                            }
7915                            ElementHandlerOutput::Continue { event, .. } => event,
7916                        }
7917                    }
7918                    (Self::AnyAttribute(values, Some(deserializer)), event) => {
7919                        let output = deserializer.next(reader, event)?;
7920                        match self.handle_any_attribute(reader, values, output, &mut fallback)? {
7921                            ElementHandlerOutput::Break { event, allow_any } => {
7922                                break (event, allow_any)
7923                            }
7924                            ElementHandlerOutput::Continue { event, .. } => event,
7925                        }
7926                    }
7927                    (Self::Assert(values, Some(deserializer)), event) => {
7928                        let output = deserializer.next(reader, event)?;
7929                        match self.handle_assert(reader, values, output, &mut fallback)? {
7930                            ElementHandlerOutput::Break { event, allow_any } => {
7931                                break (event, allow_any)
7932                            }
7933                            ElementHandlerOutput::Continue { event, .. } => event,
7934                        }
7935                    }
7936                    (state, event @ Event::End(_)) => {
7937                        return Ok(DeserializerOutput {
7938                            artifact: DeserializerArtifact::Data(state.finish(reader)?),
7939                            event: DeserializerEvent::Continue(event),
7940                            allow_any: false,
7941                        });
7942                    }
7943                    (Self::Init__, event) => {
7944                        match self.find_suitable(reader, event, &mut fallback)? {
7945                            ElementHandlerOutput::Break { event, allow_any } => {
7946                                break (event, allow_any)
7947                            }
7948                            ElementHandlerOutput::Continue { event, .. } => event,
7949                        }
7950                    }
7951                    (Self::Annotation(values, None), event) => {
7952                        let output = <super::Annotation as WithDeserializer>::Deserializer::init(
7953                            reader, event,
7954                        )?;
7955                        match self.handle_annotation(reader, values, output, &mut fallback)? {
7956                            ElementHandlerOutput::Break { event, allow_any } => {
7957                                break (event, allow_any)
7958                            }
7959                            ElementHandlerOutput::Continue { event, .. } => event,
7960                        }
7961                    }
7962                    (Self::SimpleContent(values, None), event) => {
7963                        let output =
7964                            <super::SimpleContent as WithDeserializer>::Deserializer::init(
7965                                reader, event,
7966                            )?;
7967                        match self.handle_simple_content(reader, values, output, &mut fallback)? {
7968                            ElementHandlerOutput::Break { event, allow_any } => {
7969                                break (event, allow_any)
7970                            }
7971                            ElementHandlerOutput::Continue { event, .. } => event,
7972                        }
7973                    }
7974                    (Self::ComplexContent(values, None), event) => {
7975                        let output =
7976                            <super::ComplexContent as WithDeserializer>::Deserializer::init(
7977                                reader, event,
7978                            )?;
7979                        match self.handle_complex_content(reader, values, output, &mut fallback)? {
7980                            ElementHandlerOutput::Break { event, allow_any } => {
7981                                break (event, allow_any)
7982                            }
7983                            ElementHandlerOutput::Continue { event, .. } => event,
7984                        }
7985                    }
7986                    (Self::OpenContent(values, None), event) => {
7987                        let output = <super::OpenContent as WithDeserializer>::Deserializer::init(
7988                            reader, event,
7989                        )?;
7990                        match self.handle_open_content(reader, values, output, &mut fallback)? {
7991                            ElementHandlerOutput::Break { event, allow_any } => {
7992                                break (event, allow_any)
7993                            }
7994                            ElementHandlerOutput::Continue { event, .. } => event,
7995                        }
7996                    }
7997                    (Self::Group(values, None), event) => {
7998                        let output = <super::GroupType as WithDeserializer>::Deserializer::init(
7999                            reader, event,
8000                        )?;
8001                        match self.handle_group(reader, values, output, &mut fallback)? {
8002                            ElementHandlerOutput::Break { event, allow_any } => {
8003                                break (event, allow_any)
8004                            }
8005                            ElementHandlerOutput::Continue { event, .. } => event,
8006                        }
8007                    }
8008                    (Self::All(values, None), event) => {
8009                        let output = <super::GroupType as WithDeserializer>::Deserializer::init(
8010                            reader, event,
8011                        )?;
8012                        match self.handle_all(reader, values, output, &mut fallback)? {
8013                            ElementHandlerOutput::Break { event, allow_any } => {
8014                                break (event, allow_any)
8015                            }
8016                            ElementHandlerOutput::Continue { event, .. } => event,
8017                        }
8018                    }
8019                    (Self::Choice(values, None), event) => {
8020                        let output = <super::GroupType as WithDeserializer>::Deserializer::init(
8021                            reader, event,
8022                        )?;
8023                        match self.handle_choice(reader, values, output, &mut fallback)? {
8024                            ElementHandlerOutput::Break { event, allow_any } => {
8025                                break (event, allow_any)
8026                            }
8027                            ElementHandlerOutput::Continue { event, .. } => event,
8028                        }
8029                    }
8030                    (Self::Sequence(values, None), event) => {
8031                        let output = <super::GroupType as WithDeserializer>::Deserializer::init(
8032                            reader, event,
8033                        )?;
8034                        match self.handle_sequence(reader, values, output, &mut fallback)? {
8035                            ElementHandlerOutput::Break { event, allow_any } => {
8036                                break (event, allow_any)
8037                            }
8038                            ElementHandlerOutput::Continue { event, .. } => event,
8039                        }
8040                    }
8041                    (Self::Attribute(values, None), event) => {
8042                        let output =
8043                            <super::AttributeType as WithDeserializer>::Deserializer::init(
8044                                reader, event,
8045                            )?;
8046                        match self.handle_attribute(reader, values, output, &mut fallback)? {
8047                            ElementHandlerOutput::Break { event, allow_any } => {
8048                                break (event, allow_any)
8049                            }
8050                            ElementHandlerOutput::Continue { event, .. } => event,
8051                        }
8052                    }
8053                    (Self::AttributeGroup(values, None), event) => {
8054                        let output =
8055                            <super::AttributeGroupType as WithDeserializer>::Deserializer::init(
8056                                reader, event,
8057                            )?;
8058                        match self.handle_attribute_group(reader, values, output, &mut fallback)? {
8059                            ElementHandlerOutput::Break { event, allow_any } => {
8060                                break (event, allow_any)
8061                            }
8062                            ElementHandlerOutput::Continue { event, .. } => event,
8063                        }
8064                    }
8065                    (Self::AnyAttribute(values, None), event) => {
8066                        let output = <super::AnyAttribute as WithDeserializer>::Deserializer::init(
8067                            reader, event,
8068                        )?;
8069                        match self.handle_any_attribute(reader, values, output, &mut fallback)? {
8070                            ElementHandlerOutput::Break { event, allow_any } => {
8071                                break (event, allow_any)
8072                            }
8073                            ElementHandlerOutput::Continue { event, .. } => event,
8074                        }
8075                    }
8076                    (Self::Assert(values, None), event) => {
8077                        let output =
8078                            <super::AssertionType as WithDeserializer>::Deserializer::init(
8079                                reader, event,
8080                            )?;
8081                        match self.handle_assert(reader, values, output, &mut fallback)? {
8082                            ElementHandlerOutput::Break { event, allow_any } => {
8083                                break (event, allow_any)
8084                            }
8085                            ElementHandlerOutput::Continue { event, .. } => event,
8086                        }
8087                    }
8088                    (s @ Self::Done__(_), event) => {
8089                        self = s;
8090                        break (DeserializerEvent::Continue(event), false);
8091                    }
8092                    (Self::Unknown__, _) => unreachable!(),
8093                }
8094            };
8095            let artifact = match self {
8096                Self::Done__(data) => DeserializerArtifact::Data(data),
8097                deserializer => DeserializerArtifact::Deserializer(deserializer),
8098            };
8099            Ok(DeserializerOutput {
8100                artifact,
8101                event,
8102                allow_any,
8103            })
8104        }
8105        fn finish<R>(self, reader: &R) -> Result<super::ComplexBaseTypeContent, Error>
8106        where
8107            R: DeserializeReader,
8108        {
8109            match self {
8110                Self::Init__ => Err(ErrorKind::MissingContent.into()),
8111                Self::Annotation(mut values, deserializer) => {
8112                    if let Some(deserializer) = deserializer {
8113                        let value = deserializer.finish(reader)?;
8114                        Self::store_annotation(&mut values, value)?;
8115                    }
8116                    Ok(super::ComplexBaseTypeContent::Annotation(
8117                        values.ok_or_else(|| ErrorKind::MissingElement("annotation".into()))?,
8118                    ))
8119                }
8120                Self::SimpleContent(mut values, deserializer) => {
8121                    if let Some(deserializer) = deserializer {
8122                        let value = deserializer.finish(reader)?;
8123                        Self::store_simple_content(&mut values, value)?;
8124                    }
8125                    Ok(super::ComplexBaseTypeContent::SimpleContent(
8126                        values.ok_or_else(|| ErrorKind::MissingElement("simpleContent".into()))?,
8127                    ))
8128                }
8129                Self::ComplexContent(mut values, deserializer) => {
8130                    if let Some(deserializer) = deserializer {
8131                        let value = deserializer.finish(reader)?;
8132                        Self::store_complex_content(&mut values, value)?;
8133                    }
8134                    Ok(super::ComplexBaseTypeContent::ComplexContent(
8135                        values.ok_or_else(|| ErrorKind::MissingElement("complexContent".into()))?,
8136                    ))
8137                }
8138                Self::OpenContent(mut values, deserializer) => {
8139                    if let Some(deserializer) = deserializer {
8140                        let value = deserializer.finish(reader)?;
8141                        Self::store_open_content(&mut values, value)?;
8142                    }
8143                    Ok(super::ComplexBaseTypeContent::OpenContent(
8144                        values.ok_or_else(|| ErrorKind::MissingElement("openContent".into()))?,
8145                    ))
8146                }
8147                Self::Group(mut values, deserializer) => {
8148                    if let Some(deserializer) = deserializer {
8149                        let value = deserializer.finish(reader)?;
8150                        Self::store_group(&mut values, value)?;
8151                    }
8152                    Ok(super::ComplexBaseTypeContent::Group(values.ok_or_else(
8153                        || ErrorKind::MissingElement("group".into()),
8154                    )?))
8155                }
8156                Self::All(mut values, deserializer) => {
8157                    if let Some(deserializer) = deserializer {
8158                        let value = deserializer.finish(reader)?;
8159                        Self::store_all(&mut values, value)?;
8160                    }
8161                    Ok(super::ComplexBaseTypeContent::All(
8162                        values.ok_or_else(|| ErrorKind::MissingElement("all".into()))?,
8163                    ))
8164                }
8165                Self::Choice(mut values, deserializer) => {
8166                    if let Some(deserializer) = deserializer {
8167                        let value = deserializer.finish(reader)?;
8168                        Self::store_choice(&mut values, value)?;
8169                    }
8170                    Ok(super::ComplexBaseTypeContent::Choice(values.ok_or_else(
8171                        || ErrorKind::MissingElement("choice".into()),
8172                    )?))
8173                }
8174                Self::Sequence(mut values, deserializer) => {
8175                    if let Some(deserializer) = deserializer {
8176                        let value = deserializer.finish(reader)?;
8177                        Self::store_sequence(&mut values, value)?;
8178                    }
8179                    Ok(super::ComplexBaseTypeContent::Sequence(values.ok_or_else(
8180                        || ErrorKind::MissingElement("sequence".into()),
8181                    )?))
8182                }
8183                Self::Attribute(mut values, deserializer) => {
8184                    if let Some(deserializer) = deserializer {
8185                        let value = deserializer.finish(reader)?;
8186                        Self::store_attribute(&mut values, value)?;
8187                    }
8188                    Ok(super::ComplexBaseTypeContent::Attribute(
8189                        values.ok_or_else(|| ErrorKind::MissingElement("attribute".into()))?,
8190                    ))
8191                }
8192                Self::AttributeGroup(mut values, deserializer) => {
8193                    if let Some(deserializer) = deserializer {
8194                        let value = deserializer.finish(reader)?;
8195                        Self::store_attribute_group(&mut values, value)?;
8196                    }
8197                    Ok(super::ComplexBaseTypeContent::AttributeGroup(
8198                        values.ok_or_else(|| ErrorKind::MissingElement("attributeGroup".into()))?,
8199                    ))
8200                }
8201                Self::AnyAttribute(mut values, deserializer) => {
8202                    if let Some(deserializer) = deserializer {
8203                        let value = deserializer.finish(reader)?;
8204                        Self::store_any_attribute(&mut values, value)?;
8205                    }
8206                    Ok(super::ComplexBaseTypeContent::AnyAttribute(
8207                        values.ok_or_else(|| ErrorKind::MissingElement("anyAttribute".into()))?,
8208                    ))
8209                }
8210                Self::Assert(mut values, deserializer) => {
8211                    if let Some(deserializer) = deserializer {
8212                        let value = deserializer.finish(reader)?;
8213                        Self::store_assert(&mut values, value)?;
8214                    }
8215                    Ok(super::ComplexBaseTypeContent::Assert(values.ok_or_else(
8216                        || ErrorKind::MissingElement("assert".into()),
8217                    )?))
8218                }
8219                Self::Done__(data) => Ok(data),
8220                Self::Unknown__ => unreachable!(),
8221            }
8222        }
8223    }
8224    #[derive(Debug)]
8225    pub struct GroupTypeDeserializer {
8226        id: Option<String>,
8227        name: Option<String>,
8228        ref_: Option<super::QName>,
8229        min_occurs: usize,
8230        max_occurs: super::MaxOccurs,
8231        content: Vec<super::GroupTypeContent>,
8232        state: Box<GroupTypeDeserializerState>,
8233    }
8234    #[derive(Debug)]
8235    enum GroupTypeDeserializerState {
8236        Init__,
8237        Next__,
8238        Content__(<super::GroupTypeContent as WithDeserializer>::Deserializer),
8239        Unknown__,
8240    }
8241    impl GroupTypeDeserializer {
8242        fn from_bytes_start<R>(reader: &R, bytes_start: &BytesStart<'_>) -> Result<Self, Error>
8243        where
8244            R: DeserializeReader,
8245        {
8246            let mut id: Option<String> = None;
8247            let mut name: Option<String> = None;
8248            let mut ref_: Option<super::QName> = None;
8249            let mut min_occurs: Option<usize> = None;
8250            let mut max_occurs: Option<super::MaxOccurs> = None;
8251            for attrib in filter_xmlns_attributes(bytes_start) {
8252                let attrib = attrib?;
8253                if matches!(
8254                    reader.resolve_local_name(attrib.key, &super::NS_XS),
8255                    Some(b"id")
8256                ) {
8257                    reader.read_attrib(&mut id, b"id", &attrib.value)?;
8258                } else if matches!(
8259                    reader.resolve_local_name(attrib.key, &super::NS_XS),
8260                    Some(b"name")
8261                ) {
8262                    reader.read_attrib(&mut name, b"name", &attrib.value)?;
8263                } else if matches!(
8264                    reader.resolve_local_name(attrib.key, &super::NS_XS),
8265                    Some(b"ref")
8266                ) {
8267                    reader.read_attrib(&mut ref_, b"ref", &attrib.value)?;
8268                } else if matches!(
8269                    reader.resolve_local_name(attrib.key, &super::NS_XS),
8270                    Some(b"minOccurs")
8271                ) {
8272                    reader.read_attrib(&mut min_occurs, b"minOccurs", &attrib.value)?;
8273                } else if matches!(
8274                    reader.resolve_local_name(attrib.key, &super::NS_XS),
8275                    Some(b"maxOccurs")
8276                ) {
8277                    reader.read_attrib(&mut max_occurs, b"maxOccurs", &attrib.value)?;
8278                }
8279            }
8280            Ok(Self {
8281                id: id,
8282                name: name,
8283                ref_: ref_,
8284                min_occurs: min_occurs.unwrap_or_else(super::GroupType::default_min_occurs),
8285                max_occurs: max_occurs.unwrap_or_else(super::GroupType::default_max_occurs),
8286                content: Vec::new(),
8287                state: Box::new(GroupTypeDeserializerState::Init__),
8288            })
8289        }
8290        fn finish_state<R>(
8291            &mut self,
8292            reader: &R,
8293            state: GroupTypeDeserializerState,
8294        ) -> Result<(), Error>
8295        where
8296            R: DeserializeReader,
8297        {
8298            if let GroupTypeDeserializerState::Content__(deserializer) = state {
8299                self.store_content(deserializer.finish(reader)?)?;
8300            }
8301            Ok(())
8302        }
8303        fn store_content(&mut self, value: super::GroupTypeContent) -> Result<(), Error> {
8304            self.content.push(value);
8305            Ok(())
8306        }
8307        fn handle_content<'de, R>(
8308            &mut self,
8309            reader: &R,
8310            output: DeserializerOutput<'de, super::GroupTypeContent>,
8311            fallback: &mut Option<GroupTypeDeserializerState>,
8312        ) -> Result<ElementHandlerOutput<'de>, Error>
8313        where
8314            R: DeserializeReader,
8315        {
8316            let DeserializerOutput {
8317                artifact,
8318                event,
8319                allow_any,
8320            } = output;
8321            if artifact.is_none() {
8322                *self.state = fallback
8323                    .take()
8324                    .unwrap_or(GroupTypeDeserializerState::Next__);
8325                return Ok(ElementHandlerOutput::break_(event, allow_any));
8326            }
8327            if let Some(fallback) = fallback.take() {
8328                self.finish_state(reader, fallback)?;
8329            }
8330            Ok(match artifact {
8331                DeserializerArtifact::None => unreachable!(),
8332                DeserializerArtifact::Data(data) => {
8333                    self.store_content(data)?;
8334                    *self.state = GroupTypeDeserializerState::Next__;
8335                    ElementHandlerOutput::from_event(event, allow_any)
8336                }
8337                DeserializerArtifact::Deserializer(deserializer) => {
8338                    let ret = ElementHandlerOutput::from_event(event, allow_any);
8339                    match &ret {
8340                        ElementHandlerOutput::Continue { .. } => {
8341                            fallback
8342                                .get_or_insert(GroupTypeDeserializerState::Content__(deserializer));
8343                            *self.state = GroupTypeDeserializerState::Next__;
8344                        }
8345                        ElementHandlerOutput::Break { .. } => {
8346                            *self.state = GroupTypeDeserializerState::Content__(deserializer);
8347                        }
8348                    }
8349                    ret
8350                }
8351            })
8352        }
8353    }
8354    impl<'de> Deserializer<'de, super::GroupType> for GroupTypeDeserializer {
8355        fn init<R>(reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::GroupType>
8356        where
8357            R: DeserializeReader,
8358        {
8359            reader.init_deserializer_from_start_event(event, Self::from_bytes_start)
8360        }
8361        fn next<R>(
8362            mut self,
8363            reader: &R,
8364            event: Event<'de>,
8365        ) -> DeserializerResult<'de, super::GroupType>
8366        where
8367            R: DeserializeReader,
8368        {
8369            use GroupTypeDeserializerState as S;
8370            let mut event = event;
8371            let mut fallback = None;
8372            let (event, allow_any) = loop {
8373                let state = replace(&mut *self.state, S::Unknown__);
8374                event = match (state, event) {
8375                    (S::Content__(deserializer), event) => {
8376                        let output = deserializer.next(reader, event)?;
8377                        match self.handle_content(reader, output, &mut fallback)? {
8378                            ElementHandlerOutput::Break { event, allow_any } => {
8379                                break (event, allow_any)
8380                            }
8381                            ElementHandlerOutput::Continue { event, .. } => event,
8382                        }
8383                    }
8384                    (_, Event::End(_)) => {
8385                        return Ok(DeserializerOutput {
8386                            artifact: DeserializerArtifact::Data(self.finish(reader)?),
8387                            event: DeserializerEvent::None,
8388                            allow_any: false,
8389                        });
8390                    }
8391                    (old_state @ (S::Init__ | S::Next__), event) => {
8392                        let output =
8393                            <super::GroupTypeContent as WithDeserializer>::Deserializer::init(
8394                                reader, event,
8395                            )?;
8396                        match self.handle_content(reader, output, &mut fallback)? {
8397                            ElementHandlerOutput::Break { event, allow_any } => {
8398                                if matches!(&*self.state, S::Unknown__) {
8399                                    *self.state = old_state;
8400                                }
8401                                break (event, allow_any);
8402                            }
8403                            ElementHandlerOutput::Continue { event, .. } => event,
8404                        }
8405                    }
8406                    (S::Unknown__, _) => unreachable!(),
8407                }
8408            };
8409            Ok(DeserializerOutput {
8410                artifact: DeserializerArtifact::Deserializer(self),
8411                event,
8412                allow_any,
8413            })
8414        }
8415        fn finish<R>(mut self, reader: &R) -> Result<super::GroupType, Error>
8416        where
8417            R: DeserializeReader,
8418        {
8419            let state = replace(&mut *self.state, GroupTypeDeserializerState::Unknown__);
8420            self.finish_state(reader, state)?;
8421            Ok(super::GroupType {
8422                id: self.id,
8423                name: self.name,
8424                ref_: self.ref_,
8425                min_occurs: self.min_occurs,
8426                max_occurs: self.max_occurs,
8427                content: self.content,
8428            })
8429        }
8430    }
8431    #[derive(Debug)]
8432    pub enum GroupTypeContentDeserializer {
8433        Init__,
8434        Annotation(
8435            Option<super::Annotation>,
8436            Option<<super::Annotation as WithDeserializer>::Deserializer>,
8437        ),
8438        Element(
8439            Option<super::ElementType>,
8440            Option<<super::ElementType as WithDeserializer>::Deserializer>,
8441        ),
8442        Group(
8443            Option<super::GroupType>,
8444            Option<<super::GroupType as WithDeserializer>::Deserializer>,
8445        ),
8446        All(
8447            Option<super::GroupType>,
8448            Option<<super::GroupType as WithDeserializer>::Deserializer>,
8449        ),
8450        Choice(
8451            Option<super::GroupType>,
8452            Option<<super::GroupType as WithDeserializer>::Deserializer>,
8453        ),
8454        Sequence(
8455            Option<super::GroupType>,
8456            Option<<super::GroupType as WithDeserializer>::Deserializer>,
8457        ),
8458        Any(
8459            Option<super::Any>,
8460            Option<<super::Any as WithDeserializer>::Deserializer>,
8461        ),
8462        Done__(super::GroupTypeContent),
8463        Unknown__,
8464    }
8465    impl GroupTypeContentDeserializer {
8466        fn find_suitable<'de, R>(
8467            &mut self,
8468            reader: &R,
8469            event: Event<'de>,
8470            fallback: &mut Option<GroupTypeContentDeserializer>,
8471        ) -> Result<ElementHandlerOutput<'de>, Error>
8472        where
8473            R: DeserializeReader,
8474        {
8475            let (Event::Start(x) | Event::Empty(x)) = &event else {
8476                *self = Self::Init__;
8477                return Ok(ElementHandlerOutput::return_to_parent(event, false));
8478            };
8479            if matches!(
8480                reader.resolve_local_name(x.name(), &super::NS_XS),
8481                Some(b"annotation")
8482            ) {
8483                let output =
8484                    <super::Annotation as WithDeserializer>::Deserializer::init(reader, event)?;
8485                return self.handle_annotation(reader, Default::default(), output, &mut *fallback);
8486            }
8487            if matches!(
8488                reader.resolve_local_name(x.name(), &super::NS_XS),
8489                Some(b"element")
8490            ) {
8491                let output =
8492                    <super::ElementType as WithDeserializer>::Deserializer::init(reader, event)?;
8493                return self.handle_element(reader, Default::default(), output, &mut *fallback);
8494            }
8495            if matches!(
8496                reader.resolve_local_name(x.name(), &super::NS_XS),
8497                Some(b"group")
8498            ) {
8499                let output =
8500                    <super::GroupType as WithDeserializer>::Deserializer::init(reader, event)?;
8501                return self.handle_group(reader, Default::default(), output, &mut *fallback);
8502            }
8503            if matches!(
8504                reader.resolve_local_name(x.name(), &super::NS_XS),
8505                Some(b"all")
8506            ) {
8507                let output =
8508                    <super::GroupType as WithDeserializer>::Deserializer::init(reader, event)?;
8509                return self.handle_all(reader, Default::default(), output, &mut *fallback);
8510            }
8511            if matches!(
8512                reader.resolve_local_name(x.name(), &super::NS_XS),
8513                Some(b"choice")
8514            ) {
8515                let output =
8516                    <super::GroupType as WithDeserializer>::Deserializer::init(reader, event)?;
8517                return self.handle_choice(reader, Default::default(), output, &mut *fallback);
8518            }
8519            if matches!(
8520                reader.resolve_local_name(x.name(), &super::NS_XS),
8521                Some(b"sequence")
8522            ) {
8523                let output =
8524                    <super::GroupType as WithDeserializer>::Deserializer::init(reader, event)?;
8525                return self.handle_sequence(reader, Default::default(), output, &mut *fallback);
8526            }
8527            if matches!(
8528                reader.resolve_local_name(x.name(), &super::NS_XS),
8529                Some(b"any")
8530            ) {
8531                let output = <super::Any as WithDeserializer>::Deserializer::init(reader, event)?;
8532                return self.handle_any(reader, Default::default(), output, &mut *fallback);
8533            }
8534            *self = Self::Init__;
8535            Ok(ElementHandlerOutput::return_to_parent(event, false))
8536        }
8537        fn store_annotation(
8538            values: &mut Option<super::Annotation>,
8539            value: super::Annotation,
8540        ) -> Result<(), Error> {
8541            if values.is_some() {
8542                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
8543                    b"annotation",
8544                )))?;
8545            }
8546            *values = Some(value);
8547            Ok(())
8548        }
8549        fn store_element(
8550            values: &mut Option<super::ElementType>,
8551            value: super::ElementType,
8552        ) -> Result<(), Error> {
8553            if values.is_some() {
8554                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
8555                    b"element",
8556                )))?;
8557            }
8558            *values = Some(value);
8559            Ok(())
8560        }
8561        fn store_group(
8562            values: &mut Option<super::GroupType>,
8563            value: super::GroupType,
8564        ) -> Result<(), Error> {
8565            if values.is_some() {
8566                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
8567                    b"group",
8568                )))?;
8569            }
8570            *values = Some(value);
8571            Ok(())
8572        }
8573        fn store_all(
8574            values: &mut Option<super::GroupType>,
8575            value: super::GroupType,
8576        ) -> Result<(), Error> {
8577            if values.is_some() {
8578                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(b"all")))?;
8579            }
8580            *values = Some(value);
8581            Ok(())
8582        }
8583        fn store_choice(
8584            values: &mut Option<super::GroupType>,
8585            value: super::GroupType,
8586        ) -> Result<(), Error> {
8587            if values.is_some() {
8588                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
8589                    b"choice",
8590                )))?;
8591            }
8592            *values = Some(value);
8593            Ok(())
8594        }
8595        fn store_sequence(
8596            values: &mut Option<super::GroupType>,
8597            value: super::GroupType,
8598        ) -> Result<(), Error> {
8599            if values.is_some() {
8600                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
8601                    b"sequence",
8602                )))?;
8603            }
8604            *values = Some(value);
8605            Ok(())
8606        }
8607        fn store_any(values: &mut Option<super::Any>, value: super::Any) -> Result<(), Error> {
8608            if values.is_some() {
8609                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(b"any")))?;
8610            }
8611            *values = Some(value);
8612            Ok(())
8613        }
8614        fn handle_annotation<'de, R>(
8615            &mut self,
8616            reader: &R,
8617            mut values: Option<super::Annotation>,
8618            output: DeserializerOutput<'de, super::Annotation>,
8619            fallback: &mut Option<Self>,
8620        ) -> Result<ElementHandlerOutput<'de>, Error>
8621        where
8622            R: DeserializeReader,
8623        {
8624            let DeserializerOutput {
8625                artifact,
8626                event,
8627                allow_any,
8628            } = output;
8629            if artifact.is_none() {
8630                *self = match fallback.take() {
8631                    None => Self::Init__,
8632                    Some(Self::Annotation(_, Some(deserializer))) => {
8633                        Self::Annotation(values, Some(deserializer))
8634                    }
8635                    _ => unreachable!(),
8636                };
8637                return Ok(ElementHandlerOutput::break_(event, allow_any));
8638            }
8639            match fallback.take() {
8640                None => (),
8641                Some(Self::Annotation(_, Some(deserializer))) => {
8642                    let data = deserializer.finish(reader)?;
8643                    Self::store_annotation(&mut values, data)?;
8644                }
8645                Some(_) => unreachable!(),
8646            }
8647            Ok(match artifact {
8648                DeserializerArtifact::None => unreachable!(),
8649                DeserializerArtifact::Data(data) => {
8650                    Self::store_annotation(&mut values, data)?;
8651                    let data = Self::Annotation(values, None).finish(reader)?;
8652                    *self = Self::Done__(data);
8653                    ElementHandlerOutput::Break { event, allow_any }
8654                }
8655                DeserializerArtifact::Deserializer(deserializer) => {
8656                    *self = Self::Annotation(values, Some(deserializer));
8657                    ElementHandlerOutput::from_event_end(event, allow_any)
8658                }
8659            })
8660        }
8661        fn handle_element<'de, R>(
8662            &mut self,
8663            reader: &R,
8664            mut values: Option<super::ElementType>,
8665            output: DeserializerOutput<'de, super::ElementType>,
8666            fallback: &mut Option<Self>,
8667        ) -> Result<ElementHandlerOutput<'de>, Error>
8668        where
8669            R: DeserializeReader,
8670        {
8671            let DeserializerOutput {
8672                artifact,
8673                event,
8674                allow_any,
8675            } = output;
8676            if artifact.is_none() {
8677                *self = match fallback.take() {
8678                    None => Self::Init__,
8679                    Some(Self::Element(_, Some(deserializer))) => {
8680                        Self::Element(values, Some(deserializer))
8681                    }
8682                    _ => unreachable!(),
8683                };
8684                return Ok(ElementHandlerOutput::break_(event, allow_any));
8685            }
8686            match fallback.take() {
8687                None => (),
8688                Some(Self::Element(_, Some(deserializer))) => {
8689                    let data = deserializer.finish(reader)?;
8690                    Self::store_element(&mut values, data)?;
8691                }
8692                Some(_) => unreachable!(),
8693            }
8694            Ok(match artifact {
8695                DeserializerArtifact::None => unreachable!(),
8696                DeserializerArtifact::Data(data) => {
8697                    Self::store_element(&mut values, data)?;
8698                    let data = Self::Element(values, None).finish(reader)?;
8699                    *self = Self::Done__(data);
8700                    ElementHandlerOutput::Break { event, allow_any }
8701                }
8702                DeserializerArtifact::Deserializer(deserializer) => {
8703                    *self = Self::Element(values, Some(deserializer));
8704                    ElementHandlerOutput::from_event_end(event, allow_any)
8705                }
8706            })
8707        }
8708        fn handle_group<'de, R>(
8709            &mut self,
8710            reader: &R,
8711            mut values: Option<super::GroupType>,
8712            output: DeserializerOutput<'de, super::GroupType>,
8713            fallback: &mut Option<Self>,
8714        ) -> Result<ElementHandlerOutput<'de>, Error>
8715        where
8716            R: DeserializeReader,
8717        {
8718            let DeserializerOutput {
8719                artifact,
8720                event,
8721                allow_any,
8722            } = output;
8723            if artifact.is_none() {
8724                *self = match fallback.take() {
8725                    None => Self::Init__,
8726                    Some(Self::Group(_, Some(deserializer))) => {
8727                        Self::Group(values, Some(deserializer))
8728                    }
8729                    _ => unreachable!(),
8730                };
8731                return Ok(ElementHandlerOutput::break_(event, allow_any));
8732            }
8733            match fallback.take() {
8734                None => (),
8735                Some(Self::Group(_, Some(deserializer))) => {
8736                    let data = deserializer.finish(reader)?;
8737                    Self::store_group(&mut values, data)?;
8738                }
8739                Some(_) => unreachable!(),
8740            }
8741            Ok(match artifact {
8742                DeserializerArtifact::None => unreachable!(),
8743                DeserializerArtifact::Data(data) => {
8744                    Self::store_group(&mut values, data)?;
8745                    let data = Self::Group(values, None).finish(reader)?;
8746                    *self = Self::Done__(data);
8747                    ElementHandlerOutput::Break { event, allow_any }
8748                }
8749                DeserializerArtifact::Deserializer(deserializer) => {
8750                    *self = Self::Group(values, Some(deserializer));
8751                    ElementHandlerOutput::from_event_end(event, allow_any)
8752                }
8753            })
8754        }
8755        fn handle_all<'de, R>(
8756            &mut self,
8757            reader: &R,
8758            mut values: Option<super::GroupType>,
8759            output: DeserializerOutput<'de, super::GroupType>,
8760            fallback: &mut Option<Self>,
8761        ) -> Result<ElementHandlerOutput<'de>, Error>
8762        where
8763            R: DeserializeReader,
8764        {
8765            let DeserializerOutput {
8766                artifact,
8767                event,
8768                allow_any,
8769            } = output;
8770            if artifact.is_none() {
8771                *self = match fallback.take() {
8772                    None => Self::Init__,
8773                    Some(Self::All(_, Some(deserializer))) => Self::All(values, Some(deserializer)),
8774                    _ => unreachable!(),
8775                };
8776                return Ok(ElementHandlerOutput::break_(event, allow_any));
8777            }
8778            match fallback.take() {
8779                None => (),
8780                Some(Self::All(_, Some(deserializer))) => {
8781                    let data = deserializer.finish(reader)?;
8782                    Self::store_all(&mut values, data)?;
8783                }
8784                Some(_) => unreachable!(),
8785            }
8786            Ok(match artifact {
8787                DeserializerArtifact::None => unreachable!(),
8788                DeserializerArtifact::Data(data) => {
8789                    Self::store_all(&mut values, data)?;
8790                    let data = Self::All(values, None).finish(reader)?;
8791                    *self = Self::Done__(data);
8792                    ElementHandlerOutput::Break { event, allow_any }
8793                }
8794                DeserializerArtifact::Deserializer(deserializer) => {
8795                    *self = Self::All(values, Some(deserializer));
8796                    ElementHandlerOutput::from_event_end(event, allow_any)
8797                }
8798            })
8799        }
8800        fn handle_choice<'de, R>(
8801            &mut self,
8802            reader: &R,
8803            mut values: Option<super::GroupType>,
8804            output: DeserializerOutput<'de, super::GroupType>,
8805            fallback: &mut Option<Self>,
8806        ) -> Result<ElementHandlerOutput<'de>, Error>
8807        where
8808            R: DeserializeReader,
8809        {
8810            let DeserializerOutput {
8811                artifact,
8812                event,
8813                allow_any,
8814            } = output;
8815            if artifact.is_none() {
8816                *self = match fallback.take() {
8817                    None => Self::Init__,
8818                    Some(Self::Choice(_, Some(deserializer))) => {
8819                        Self::Choice(values, Some(deserializer))
8820                    }
8821                    _ => unreachable!(),
8822                };
8823                return Ok(ElementHandlerOutput::break_(event, allow_any));
8824            }
8825            match fallback.take() {
8826                None => (),
8827                Some(Self::Choice(_, Some(deserializer))) => {
8828                    let data = deserializer.finish(reader)?;
8829                    Self::store_choice(&mut values, data)?;
8830                }
8831                Some(_) => unreachable!(),
8832            }
8833            Ok(match artifact {
8834                DeserializerArtifact::None => unreachable!(),
8835                DeserializerArtifact::Data(data) => {
8836                    Self::store_choice(&mut values, data)?;
8837                    let data = Self::Choice(values, None).finish(reader)?;
8838                    *self = Self::Done__(data);
8839                    ElementHandlerOutput::Break { event, allow_any }
8840                }
8841                DeserializerArtifact::Deserializer(deserializer) => {
8842                    *self = Self::Choice(values, Some(deserializer));
8843                    ElementHandlerOutput::from_event_end(event, allow_any)
8844                }
8845            })
8846        }
8847        fn handle_sequence<'de, R>(
8848            &mut self,
8849            reader: &R,
8850            mut values: Option<super::GroupType>,
8851            output: DeserializerOutput<'de, super::GroupType>,
8852            fallback: &mut Option<Self>,
8853        ) -> Result<ElementHandlerOutput<'de>, Error>
8854        where
8855            R: DeserializeReader,
8856        {
8857            let DeserializerOutput {
8858                artifact,
8859                event,
8860                allow_any,
8861            } = output;
8862            if artifact.is_none() {
8863                *self = match fallback.take() {
8864                    None => Self::Init__,
8865                    Some(Self::Sequence(_, Some(deserializer))) => {
8866                        Self::Sequence(values, Some(deserializer))
8867                    }
8868                    _ => unreachable!(),
8869                };
8870                return Ok(ElementHandlerOutput::break_(event, allow_any));
8871            }
8872            match fallback.take() {
8873                None => (),
8874                Some(Self::Sequence(_, Some(deserializer))) => {
8875                    let data = deserializer.finish(reader)?;
8876                    Self::store_sequence(&mut values, data)?;
8877                }
8878                Some(_) => unreachable!(),
8879            }
8880            Ok(match artifact {
8881                DeserializerArtifact::None => unreachable!(),
8882                DeserializerArtifact::Data(data) => {
8883                    Self::store_sequence(&mut values, data)?;
8884                    let data = Self::Sequence(values, None).finish(reader)?;
8885                    *self = Self::Done__(data);
8886                    ElementHandlerOutput::Break { event, allow_any }
8887                }
8888                DeserializerArtifact::Deserializer(deserializer) => {
8889                    *self = Self::Sequence(values, Some(deserializer));
8890                    ElementHandlerOutput::from_event_end(event, allow_any)
8891                }
8892            })
8893        }
8894        fn handle_any<'de, R>(
8895            &mut self,
8896            reader: &R,
8897            mut values: Option<super::Any>,
8898            output: DeserializerOutput<'de, super::Any>,
8899            fallback: &mut Option<Self>,
8900        ) -> Result<ElementHandlerOutput<'de>, Error>
8901        where
8902            R: DeserializeReader,
8903        {
8904            let DeserializerOutput {
8905                artifact,
8906                event,
8907                allow_any,
8908            } = output;
8909            if artifact.is_none() {
8910                *self = match fallback.take() {
8911                    None => Self::Init__,
8912                    Some(Self::Any(_, Some(deserializer))) => Self::Any(values, Some(deserializer)),
8913                    _ => unreachable!(),
8914                };
8915                return Ok(ElementHandlerOutput::break_(event, allow_any));
8916            }
8917            match fallback.take() {
8918                None => (),
8919                Some(Self::Any(_, Some(deserializer))) => {
8920                    let data = deserializer.finish(reader)?;
8921                    Self::store_any(&mut values, data)?;
8922                }
8923                Some(_) => unreachable!(),
8924            }
8925            Ok(match artifact {
8926                DeserializerArtifact::None => unreachable!(),
8927                DeserializerArtifact::Data(data) => {
8928                    Self::store_any(&mut values, data)?;
8929                    let data = Self::Any(values, None).finish(reader)?;
8930                    *self = Self::Done__(data);
8931                    ElementHandlerOutput::Break { event, allow_any }
8932                }
8933                DeserializerArtifact::Deserializer(deserializer) => {
8934                    *self = Self::Any(values, Some(deserializer));
8935                    ElementHandlerOutput::from_event_end(event, allow_any)
8936                }
8937            })
8938        }
8939    }
8940    impl<'de> Deserializer<'de, super::GroupTypeContent> for GroupTypeContentDeserializer {
8941        fn init<R>(
8942            reader: &R,
8943            event: Event<'de>,
8944        ) -> DeserializerResult<'de, super::GroupTypeContent>
8945        where
8946            R: DeserializeReader,
8947        {
8948            let deserializer = Self::Init__;
8949            let mut output = deserializer.next(reader, event)?;
8950            output.artifact = match output.artifact {
8951                DeserializerArtifact::Deserializer(Self::Init__) => DeserializerArtifact::None,
8952                artifact => artifact,
8953            };
8954            Ok(output)
8955        }
8956        fn next<R>(
8957            mut self,
8958            reader: &R,
8959            event: Event<'de>,
8960        ) -> DeserializerResult<'de, super::GroupTypeContent>
8961        where
8962            R: DeserializeReader,
8963        {
8964            let mut event = event;
8965            let mut fallback = None;
8966            let (event, allow_any) = loop {
8967                let state = replace(&mut self, Self::Unknown__);
8968                event = match (state, event) {
8969                    (Self::Annotation(values, Some(deserializer)), event) => {
8970                        let output = deserializer.next(reader, event)?;
8971                        match self.handle_annotation(reader, values, output, &mut fallback)? {
8972                            ElementHandlerOutput::Break { event, allow_any } => {
8973                                break (event, allow_any)
8974                            }
8975                            ElementHandlerOutput::Continue { event, .. } => event,
8976                        }
8977                    }
8978                    (Self::Element(values, Some(deserializer)), event) => {
8979                        let output = deserializer.next(reader, event)?;
8980                        match self.handle_element(reader, values, output, &mut fallback)? {
8981                            ElementHandlerOutput::Break { event, allow_any } => {
8982                                break (event, allow_any)
8983                            }
8984                            ElementHandlerOutput::Continue { event, .. } => event,
8985                        }
8986                    }
8987                    (Self::Group(values, Some(deserializer)), event) => {
8988                        let output = deserializer.next(reader, event)?;
8989                        match self.handle_group(reader, values, output, &mut fallback)? {
8990                            ElementHandlerOutput::Break { event, allow_any } => {
8991                                break (event, allow_any)
8992                            }
8993                            ElementHandlerOutput::Continue { event, .. } => event,
8994                        }
8995                    }
8996                    (Self::All(values, Some(deserializer)), event) => {
8997                        let output = deserializer.next(reader, event)?;
8998                        match self.handle_all(reader, values, output, &mut fallback)? {
8999                            ElementHandlerOutput::Break { event, allow_any } => {
9000                                break (event, allow_any)
9001                            }
9002                            ElementHandlerOutput::Continue { event, .. } => event,
9003                        }
9004                    }
9005                    (Self::Choice(values, Some(deserializer)), event) => {
9006                        let output = deserializer.next(reader, event)?;
9007                        match self.handle_choice(reader, values, output, &mut fallback)? {
9008                            ElementHandlerOutput::Break { event, allow_any } => {
9009                                break (event, allow_any)
9010                            }
9011                            ElementHandlerOutput::Continue { event, .. } => event,
9012                        }
9013                    }
9014                    (Self::Sequence(values, Some(deserializer)), event) => {
9015                        let output = deserializer.next(reader, event)?;
9016                        match self.handle_sequence(reader, values, output, &mut fallback)? {
9017                            ElementHandlerOutput::Break { event, allow_any } => {
9018                                break (event, allow_any)
9019                            }
9020                            ElementHandlerOutput::Continue { event, .. } => event,
9021                        }
9022                    }
9023                    (Self::Any(values, Some(deserializer)), event) => {
9024                        let output = deserializer.next(reader, event)?;
9025                        match self.handle_any(reader, values, output, &mut fallback)? {
9026                            ElementHandlerOutput::Break { event, allow_any } => {
9027                                break (event, allow_any)
9028                            }
9029                            ElementHandlerOutput::Continue { event, .. } => event,
9030                        }
9031                    }
9032                    (state, event @ Event::End(_)) => {
9033                        return Ok(DeserializerOutput {
9034                            artifact: DeserializerArtifact::Data(state.finish(reader)?),
9035                            event: DeserializerEvent::Continue(event),
9036                            allow_any: false,
9037                        });
9038                    }
9039                    (Self::Init__, event) => {
9040                        match self.find_suitable(reader, event, &mut fallback)? {
9041                            ElementHandlerOutput::Break { event, allow_any } => {
9042                                break (event, allow_any)
9043                            }
9044                            ElementHandlerOutput::Continue { event, .. } => event,
9045                        }
9046                    }
9047                    (Self::Annotation(values, None), event) => {
9048                        let output = <super::Annotation as WithDeserializer>::Deserializer::init(
9049                            reader, event,
9050                        )?;
9051                        match self.handle_annotation(reader, values, output, &mut fallback)? {
9052                            ElementHandlerOutput::Break { event, allow_any } => {
9053                                break (event, allow_any)
9054                            }
9055                            ElementHandlerOutput::Continue { event, .. } => event,
9056                        }
9057                    }
9058                    (Self::Element(values, None), event) => {
9059                        let output = <super::ElementType as WithDeserializer>::Deserializer::init(
9060                            reader, event,
9061                        )?;
9062                        match self.handle_element(reader, values, output, &mut fallback)? {
9063                            ElementHandlerOutput::Break { event, allow_any } => {
9064                                break (event, allow_any)
9065                            }
9066                            ElementHandlerOutput::Continue { event, .. } => event,
9067                        }
9068                    }
9069                    (Self::Group(values, None), event) => {
9070                        let output = <super::GroupType as WithDeserializer>::Deserializer::init(
9071                            reader, event,
9072                        )?;
9073                        match self.handle_group(reader, values, output, &mut fallback)? {
9074                            ElementHandlerOutput::Break { event, allow_any } => {
9075                                break (event, allow_any)
9076                            }
9077                            ElementHandlerOutput::Continue { event, .. } => event,
9078                        }
9079                    }
9080                    (Self::All(values, None), event) => {
9081                        let output = <super::GroupType as WithDeserializer>::Deserializer::init(
9082                            reader, event,
9083                        )?;
9084                        match self.handle_all(reader, values, output, &mut fallback)? {
9085                            ElementHandlerOutput::Break { event, allow_any } => {
9086                                break (event, allow_any)
9087                            }
9088                            ElementHandlerOutput::Continue { event, .. } => event,
9089                        }
9090                    }
9091                    (Self::Choice(values, None), event) => {
9092                        let output = <super::GroupType as WithDeserializer>::Deserializer::init(
9093                            reader, event,
9094                        )?;
9095                        match self.handle_choice(reader, values, output, &mut fallback)? {
9096                            ElementHandlerOutput::Break { event, allow_any } => {
9097                                break (event, allow_any)
9098                            }
9099                            ElementHandlerOutput::Continue { event, .. } => event,
9100                        }
9101                    }
9102                    (Self::Sequence(values, None), event) => {
9103                        let output = <super::GroupType as WithDeserializer>::Deserializer::init(
9104                            reader, event,
9105                        )?;
9106                        match self.handle_sequence(reader, values, output, &mut fallback)? {
9107                            ElementHandlerOutput::Break { event, allow_any } => {
9108                                break (event, allow_any)
9109                            }
9110                            ElementHandlerOutput::Continue { event, .. } => event,
9111                        }
9112                    }
9113                    (Self::Any(values, None), event) => {
9114                        let output =
9115                            <super::Any as WithDeserializer>::Deserializer::init(reader, event)?;
9116                        match self.handle_any(reader, values, output, &mut fallback)? {
9117                            ElementHandlerOutput::Break { event, allow_any } => {
9118                                break (event, allow_any)
9119                            }
9120                            ElementHandlerOutput::Continue { event, .. } => event,
9121                        }
9122                    }
9123                    (s @ Self::Done__(_), event) => {
9124                        self = s;
9125                        break (DeserializerEvent::Continue(event), false);
9126                    }
9127                    (Self::Unknown__, _) => unreachable!(),
9128                }
9129            };
9130            let artifact = match self {
9131                Self::Done__(data) => DeserializerArtifact::Data(data),
9132                deserializer => DeserializerArtifact::Deserializer(deserializer),
9133            };
9134            Ok(DeserializerOutput {
9135                artifact,
9136                event,
9137                allow_any,
9138            })
9139        }
9140        fn finish<R>(self, reader: &R) -> Result<super::GroupTypeContent, Error>
9141        where
9142            R: DeserializeReader,
9143        {
9144            match self {
9145                Self::Init__ => Err(ErrorKind::MissingContent.into()),
9146                Self::Annotation(mut values, deserializer) => {
9147                    if let Some(deserializer) = deserializer {
9148                        let value = deserializer.finish(reader)?;
9149                        Self::store_annotation(&mut values, value)?;
9150                    }
9151                    Ok(super::GroupTypeContent::Annotation(values.ok_or_else(
9152                        || ErrorKind::MissingElement("annotation".into()),
9153                    )?))
9154                }
9155                Self::Element(mut values, deserializer) => {
9156                    if let Some(deserializer) = deserializer {
9157                        let value = deserializer.finish(reader)?;
9158                        Self::store_element(&mut values, value)?;
9159                    }
9160                    Ok(super::GroupTypeContent::Element(values.ok_or_else(
9161                        || ErrorKind::MissingElement("element".into()),
9162                    )?))
9163                }
9164                Self::Group(mut values, deserializer) => {
9165                    if let Some(deserializer) = deserializer {
9166                        let value = deserializer.finish(reader)?;
9167                        Self::store_group(&mut values, value)?;
9168                    }
9169                    Ok(super::GroupTypeContent::Group(values.ok_or_else(|| {
9170                        ErrorKind::MissingElement("group".into())
9171                    })?))
9172                }
9173                Self::All(mut values, deserializer) => {
9174                    if let Some(deserializer) = deserializer {
9175                        let value = deserializer.finish(reader)?;
9176                        Self::store_all(&mut values, value)?;
9177                    }
9178                    Ok(super::GroupTypeContent::All(
9179                        values.ok_or_else(|| ErrorKind::MissingElement("all".into()))?,
9180                    ))
9181                }
9182                Self::Choice(mut values, deserializer) => {
9183                    if let Some(deserializer) = deserializer {
9184                        let value = deserializer.finish(reader)?;
9185                        Self::store_choice(&mut values, value)?;
9186                    }
9187                    Ok(super::GroupTypeContent::Choice(values.ok_or_else(
9188                        || ErrorKind::MissingElement("choice".into()),
9189                    )?))
9190                }
9191                Self::Sequence(mut values, deserializer) => {
9192                    if let Some(deserializer) = deserializer {
9193                        let value = deserializer.finish(reader)?;
9194                        Self::store_sequence(&mut values, value)?;
9195                    }
9196                    Ok(super::GroupTypeContent::Sequence(values.ok_or_else(
9197                        || ErrorKind::MissingElement("sequence".into()),
9198                    )?))
9199                }
9200                Self::Any(mut values, deserializer) => {
9201                    if let Some(deserializer) = deserializer {
9202                        let value = deserializer.finish(reader)?;
9203                        Self::store_any(&mut values, value)?;
9204                    }
9205                    Ok(super::GroupTypeContent::Any(
9206                        values.ok_or_else(|| ErrorKind::MissingElement("any".into()))?,
9207                    ))
9208                }
9209                Self::Done__(data) => Ok(data),
9210                Self::Unknown__ => unreachable!(),
9211            }
9212        }
9213    }
9214    #[derive(Debug)]
9215    pub struct AttributeGroupTypeDeserializer {
9216        id: Option<String>,
9217        name: Option<String>,
9218        ref_: Option<super::QName>,
9219        content: Vec<super::AttributeGroupTypeContent>,
9220        state: Box<AttributeGroupTypeDeserializerState>,
9221    }
9222    #[derive(Debug)]
9223    enum AttributeGroupTypeDeserializerState {
9224        Init__,
9225        Next__,
9226        Content__(<super::AttributeGroupTypeContent as WithDeserializer>::Deserializer),
9227        Unknown__,
9228    }
9229    impl AttributeGroupTypeDeserializer {
9230        fn from_bytes_start<R>(reader: &R, bytes_start: &BytesStart<'_>) -> Result<Self, Error>
9231        where
9232            R: DeserializeReader,
9233        {
9234            let mut id: Option<String> = None;
9235            let mut name: Option<String> = None;
9236            let mut ref_: Option<super::QName> = None;
9237            for attrib in filter_xmlns_attributes(bytes_start) {
9238                let attrib = attrib?;
9239                if matches!(
9240                    reader.resolve_local_name(attrib.key, &super::NS_XS),
9241                    Some(b"id")
9242                ) {
9243                    reader.read_attrib(&mut id, b"id", &attrib.value)?;
9244                } else if matches!(
9245                    reader.resolve_local_name(attrib.key, &super::NS_XS),
9246                    Some(b"name")
9247                ) {
9248                    reader.read_attrib(&mut name, b"name", &attrib.value)?;
9249                } else if matches!(
9250                    reader.resolve_local_name(attrib.key, &super::NS_XS),
9251                    Some(b"ref")
9252                ) {
9253                    reader.read_attrib(&mut ref_, b"ref", &attrib.value)?;
9254                }
9255            }
9256            Ok(Self {
9257                id: id,
9258                name: name,
9259                ref_: ref_,
9260                content: Vec::new(),
9261                state: Box::new(AttributeGroupTypeDeserializerState::Init__),
9262            })
9263        }
9264        fn finish_state<R>(
9265            &mut self,
9266            reader: &R,
9267            state: AttributeGroupTypeDeserializerState,
9268        ) -> Result<(), Error>
9269        where
9270            R: DeserializeReader,
9271        {
9272            if let AttributeGroupTypeDeserializerState::Content__(deserializer) = state {
9273                self.store_content(deserializer.finish(reader)?)?;
9274            }
9275            Ok(())
9276        }
9277        fn store_content(&mut self, value: super::AttributeGroupTypeContent) -> Result<(), Error> {
9278            self.content.push(value);
9279            Ok(())
9280        }
9281        fn handle_content<'de, R>(
9282            &mut self,
9283            reader: &R,
9284            output: DeserializerOutput<'de, super::AttributeGroupTypeContent>,
9285            fallback: &mut Option<AttributeGroupTypeDeserializerState>,
9286        ) -> Result<ElementHandlerOutput<'de>, Error>
9287        where
9288            R: DeserializeReader,
9289        {
9290            let DeserializerOutput {
9291                artifact,
9292                event,
9293                allow_any,
9294            } = output;
9295            if artifact.is_none() {
9296                *self.state = fallback
9297                    .take()
9298                    .unwrap_or(AttributeGroupTypeDeserializerState::Next__);
9299                return Ok(ElementHandlerOutput::break_(event, allow_any));
9300            }
9301            if let Some(fallback) = fallback.take() {
9302                self.finish_state(reader, fallback)?;
9303            }
9304            Ok(match artifact {
9305                DeserializerArtifact::None => unreachable!(),
9306                DeserializerArtifact::Data(data) => {
9307                    self.store_content(data)?;
9308                    *self.state = AttributeGroupTypeDeserializerState::Next__;
9309                    ElementHandlerOutput::from_event(event, allow_any)
9310                }
9311                DeserializerArtifact::Deserializer(deserializer) => {
9312                    let ret = ElementHandlerOutput::from_event(event, allow_any);
9313                    match &ret {
9314                        ElementHandlerOutput::Continue { .. } => {
9315                            fallback.get_or_insert(AttributeGroupTypeDeserializerState::Content__(
9316                                deserializer,
9317                            ));
9318                            *self.state = AttributeGroupTypeDeserializerState::Next__;
9319                        }
9320                        ElementHandlerOutput::Break { .. } => {
9321                            *self.state =
9322                                AttributeGroupTypeDeserializerState::Content__(deserializer);
9323                        }
9324                    }
9325                    ret
9326                }
9327            })
9328        }
9329    }
9330    impl<'de> Deserializer<'de, super::AttributeGroupType> for AttributeGroupTypeDeserializer {
9331        fn init<R>(
9332            reader: &R,
9333            event: Event<'de>,
9334        ) -> DeserializerResult<'de, super::AttributeGroupType>
9335        where
9336            R: DeserializeReader,
9337        {
9338            reader.init_deserializer_from_start_event(event, Self::from_bytes_start)
9339        }
9340        fn next<R>(
9341            mut self,
9342            reader: &R,
9343            event: Event<'de>,
9344        ) -> DeserializerResult<'de, super::AttributeGroupType>
9345        where
9346            R: DeserializeReader,
9347        {
9348            use AttributeGroupTypeDeserializerState as S;
9349            let mut event = event;
9350            let mut fallback = None;
9351            let (event, allow_any) = loop {
9352                let state = replace(&mut *self.state, S::Unknown__);
9353                event = match (state, event) {
9354                    (S::Content__(deserializer), event) => {
9355                        let output = deserializer.next(reader, event)?;
9356                        match self.handle_content(reader, output, &mut fallback)? {
9357                            ElementHandlerOutput::Break { event, allow_any } => {
9358                                break (event, allow_any)
9359                            }
9360                            ElementHandlerOutput::Continue { event, .. } => event,
9361                        }
9362                    }
9363                    (_, Event::End(_)) => {
9364                        return Ok(DeserializerOutput {
9365                            artifact: DeserializerArtifact::Data(self.finish(reader)?),
9366                            event: DeserializerEvent::None,
9367                            allow_any: false,
9368                        });
9369                    }
9370                    (old_state @ (S::Init__ | S::Next__), event) => {
9371                        let output = < super :: AttributeGroupTypeContent as WithDeserializer > :: Deserializer :: init (reader , event) ? ;
9372                        match self.handle_content(reader, output, &mut fallback)? {
9373                            ElementHandlerOutput::Break { event, allow_any } => {
9374                                if matches!(&*self.state, S::Unknown__) {
9375                                    *self.state = old_state;
9376                                }
9377                                break (event, allow_any);
9378                            }
9379                            ElementHandlerOutput::Continue { event, .. } => event,
9380                        }
9381                    }
9382                    (S::Unknown__, _) => unreachable!(),
9383                }
9384            };
9385            Ok(DeserializerOutput {
9386                artifact: DeserializerArtifact::Deserializer(self),
9387                event,
9388                allow_any,
9389            })
9390        }
9391        fn finish<R>(mut self, reader: &R) -> Result<super::AttributeGroupType, Error>
9392        where
9393            R: DeserializeReader,
9394        {
9395            let state = replace(
9396                &mut *self.state,
9397                AttributeGroupTypeDeserializerState::Unknown__,
9398            );
9399            self.finish_state(reader, state)?;
9400            Ok(super::AttributeGroupType {
9401                id: self.id,
9402                name: self.name,
9403                ref_: self.ref_,
9404                content: self.content,
9405            })
9406        }
9407    }
9408    #[derive(Debug)]
9409    pub enum AttributeGroupTypeContentDeserializer {
9410        Init__,
9411        Annotation(
9412            Option<super::Annotation>,
9413            Option<<super::Annotation as WithDeserializer>::Deserializer>,
9414        ),
9415        Attribute(
9416            Option<super::AttributeType>,
9417            Option<<super::AttributeType as WithDeserializer>::Deserializer>,
9418        ),
9419        AttributeGroup(
9420            Option<super::AttributeGroupType>,
9421            Option<<super::AttributeGroupType as WithDeserializer>::Deserializer>,
9422        ),
9423        AnyAttribute(
9424            Option<super::AnyAttribute>,
9425            Option<<super::AnyAttribute as WithDeserializer>::Deserializer>,
9426        ),
9427        Done__(super::AttributeGroupTypeContent),
9428        Unknown__,
9429    }
9430    impl AttributeGroupTypeContentDeserializer {
9431        fn find_suitable<'de, R>(
9432            &mut self,
9433            reader: &R,
9434            event: Event<'de>,
9435            fallback: &mut Option<AttributeGroupTypeContentDeserializer>,
9436        ) -> Result<ElementHandlerOutput<'de>, Error>
9437        where
9438            R: DeserializeReader,
9439        {
9440            let (Event::Start(x) | Event::Empty(x)) = &event else {
9441                *self = Self::Init__;
9442                return Ok(ElementHandlerOutput::return_to_parent(event, false));
9443            };
9444            if matches!(
9445                reader.resolve_local_name(x.name(), &super::NS_XS),
9446                Some(b"annotation")
9447            ) {
9448                let output =
9449                    <super::Annotation as WithDeserializer>::Deserializer::init(reader, event)?;
9450                return self.handle_annotation(reader, Default::default(), output, &mut *fallback);
9451            }
9452            if matches!(
9453                reader.resolve_local_name(x.name(), &super::NS_XS),
9454                Some(b"attribute")
9455            ) {
9456                let output =
9457                    <super::AttributeType as WithDeserializer>::Deserializer::init(reader, event)?;
9458                return self.handle_attribute(reader, Default::default(), output, &mut *fallback);
9459            }
9460            if matches!(
9461                reader.resolve_local_name(x.name(), &super::NS_XS),
9462                Some(b"attributeGroup")
9463            ) {
9464                let output = <super::AttributeGroupType as WithDeserializer>::Deserializer::init(
9465                    reader, event,
9466                )?;
9467                return self.handle_attribute_group(
9468                    reader,
9469                    Default::default(),
9470                    output,
9471                    &mut *fallback,
9472                );
9473            }
9474            if matches!(
9475                reader.resolve_local_name(x.name(), &super::NS_XS),
9476                Some(b"anyAttribute")
9477            ) {
9478                let output =
9479                    <super::AnyAttribute as WithDeserializer>::Deserializer::init(reader, event)?;
9480                return self.handle_any_attribute(
9481                    reader,
9482                    Default::default(),
9483                    output,
9484                    &mut *fallback,
9485                );
9486            }
9487            *self = Self::Init__;
9488            Ok(ElementHandlerOutput::return_to_parent(event, false))
9489        }
9490        fn store_annotation(
9491            values: &mut Option<super::Annotation>,
9492            value: super::Annotation,
9493        ) -> Result<(), Error> {
9494            if values.is_some() {
9495                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
9496                    b"annotation",
9497                )))?;
9498            }
9499            *values = Some(value);
9500            Ok(())
9501        }
9502        fn store_attribute(
9503            values: &mut Option<super::AttributeType>,
9504            value: super::AttributeType,
9505        ) -> Result<(), Error> {
9506            if values.is_some() {
9507                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
9508                    b"attribute",
9509                )))?;
9510            }
9511            *values = Some(value);
9512            Ok(())
9513        }
9514        fn store_attribute_group(
9515            values: &mut Option<super::AttributeGroupType>,
9516            value: super::AttributeGroupType,
9517        ) -> Result<(), Error> {
9518            if values.is_some() {
9519                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
9520                    b"attributeGroup",
9521                )))?;
9522            }
9523            *values = Some(value);
9524            Ok(())
9525        }
9526        fn store_any_attribute(
9527            values: &mut Option<super::AnyAttribute>,
9528            value: super::AnyAttribute,
9529        ) -> Result<(), Error> {
9530            if values.is_some() {
9531                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
9532                    b"anyAttribute",
9533                )))?;
9534            }
9535            *values = Some(value);
9536            Ok(())
9537        }
9538        fn handle_annotation<'de, R>(
9539            &mut self,
9540            reader: &R,
9541            mut values: Option<super::Annotation>,
9542            output: DeserializerOutput<'de, super::Annotation>,
9543            fallback: &mut Option<Self>,
9544        ) -> Result<ElementHandlerOutput<'de>, Error>
9545        where
9546            R: DeserializeReader,
9547        {
9548            let DeserializerOutput {
9549                artifact,
9550                event,
9551                allow_any,
9552            } = output;
9553            if artifact.is_none() {
9554                *self = match fallback.take() {
9555                    None => Self::Init__,
9556                    Some(Self::Annotation(_, Some(deserializer))) => {
9557                        Self::Annotation(values, Some(deserializer))
9558                    }
9559                    _ => unreachable!(),
9560                };
9561                return Ok(ElementHandlerOutput::break_(event, allow_any));
9562            }
9563            match fallback.take() {
9564                None => (),
9565                Some(Self::Annotation(_, Some(deserializer))) => {
9566                    let data = deserializer.finish(reader)?;
9567                    Self::store_annotation(&mut values, data)?;
9568                }
9569                Some(_) => unreachable!(),
9570            }
9571            Ok(match artifact {
9572                DeserializerArtifact::None => unreachable!(),
9573                DeserializerArtifact::Data(data) => {
9574                    Self::store_annotation(&mut values, data)?;
9575                    let data = Self::Annotation(values, None).finish(reader)?;
9576                    *self = Self::Done__(data);
9577                    ElementHandlerOutput::Break { event, allow_any }
9578                }
9579                DeserializerArtifact::Deserializer(deserializer) => {
9580                    *self = Self::Annotation(values, Some(deserializer));
9581                    ElementHandlerOutput::from_event_end(event, allow_any)
9582                }
9583            })
9584        }
9585        fn handle_attribute<'de, R>(
9586            &mut self,
9587            reader: &R,
9588            mut values: Option<super::AttributeType>,
9589            output: DeserializerOutput<'de, super::AttributeType>,
9590            fallback: &mut Option<Self>,
9591        ) -> Result<ElementHandlerOutput<'de>, Error>
9592        where
9593            R: DeserializeReader,
9594        {
9595            let DeserializerOutput {
9596                artifact,
9597                event,
9598                allow_any,
9599            } = output;
9600            if artifact.is_none() {
9601                *self = match fallback.take() {
9602                    None => Self::Init__,
9603                    Some(Self::Attribute(_, Some(deserializer))) => {
9604                        Self::Attribute(values, Some(deserializer))
9605                    }
9606                    _ => unreachable!(),
9607                };
9608                return Ok(ElementHandlerOutput::break_(event, allow_any));
9609            }
9610            match fallback.take() {
9611                None => (),
9612                Some(Self::Attribute(_, Some(deserializer))) => {
9613                    let data = deserializer.finish(reader)?;
9614                    Self::store_attribute(&mut values, data)?;
9615                }
9616                Some(_) => unreachable!(),
9617            }
9618            Ok(match artifact {
9619                DeserializerArtifact::None => unreachable!(),
9620                DeserializerArtifact::Data(data) => {
9621                    Self::store_attribute(&mut values, data)?;
9622                    let data = Self::Attribute(values, None).finish(reader)?;
9623                    *self = Self::Done__(data);
9624                    ElementHandlerOutput::Break { event, allow_any }
9625                }
9626                DeserializerArtifact::Deserializer(deserializer) => {
9627                    *self = Self::Attribute(values, Some(deserializer));
9628                    ElementHandlerOutput::from_event_end(event, allow_any)
9629                }
9630            })
9631        }
9632        fn handle_attribute_group<'de, R>(
9633            &mut self,
9634            reader: &R,
9635            mut values: Option<super::AttributeGroupType>,
9636            output: DeserializerOutput<'de, super::AttributeGroupType>,
9637            fallback: &mut Option<Self>,
9638        ) -> Result<ElementHandlerOutput<'de>, Error>
9639        where
9640            R: DeserializeReader,
9641        {
9642            let DeserializerOutput {
9643                artifact,
9644                event,
9645                allow_any,
9646            } = output;
9647            if artifact.is_none() {
9648                *self = match fallback.take() {
9649                    None => Self::Init__,
9650                    Some(Self::AttributeGroup(_, Some(deserializer))) => {
9651                        Self::AttributeGroup(values, Some(deserializer))
9652                    }
9653                    _ => unreachable!(),
9654                };
9655                return Ok(ElementHandlerOutput::break_(event, allow_any));
9656            }
9657            match fallback.take() {
9658                None => (),
9659                Some(Self::AttributeGroup(_, Some(deserializer))) => {
9660                    let data = deserializer.finish(reader)?;
9661                    Self::store_attribute_group(&mut values, data)?;
9662                }
9663                Some(_) => unreachable!(),
9664            }
9665            Ok(match artifact {
9666                DeserializerArtifact::None => unreachable!(),
9667                DeserializerArtifact::Data(data) => {
9668                    Self::store_attribute_group(&mut values, data)?;
9669                    let data = Self::AttributeGroup(values, None).finish(reader)?;
9670                    *self = Self::Done__(data);
9671                    ElementHandlerOutput::Break { event, allow_any }
9672                }
9673                DeserializerArtifact::Deserializer(deserializer) => {
9674                    *self = Self::AttributeGroup(values, Some(deserializer));
9675                    ElementHandlerOutput::from_event_end(event, allow_any)
9676                }
9677            })
9678        }
9679        fn handle_any_attribute<'de, R>(
9680            &mut self,
9681            reader: &R,
9682            mut values: Option<super::AnyAttribute>,
9683            output: DeserializerOutput<'de, super::AnyAttribute>,
9684            fallback: &mut Option<Self>,
9685        ) -> Result<ElementHandlerOutput<'de>, Error>
9686        where
9687            R: DeserializeReader,
9688        {
9689            let DeserializerOutput {
9690                artifact,
9691                event,
9692                allow_any,
9693            } = output;
9694            if artifact.is_none() {
9695                *self = match fallback.take() {
9696                    None => Self::Init__,
9697                    Some(Self::AnyAttribute(_, Some(deserializer))) => {
9698                        Self::AnyAttribute(values, Some(deserializer))
9699                    }
9700                    _ => unreachable!(),
9701                };
9702                return Ok(ElementHandlerOutput::break_(event, allow_any));
9703            }
9704            match fallback.take() {
9705                None => (),
9706                Some(Self::AnyAttribute(_, Some(deserializer))) => {
9707                    let data = deserializer.finish(reader)?;
9708                    Self::store_any_attribute(&mut values, data)?;
9709                }
9710                Some(_) => unreachable!(),
9711            }
9712            Ok(match artifact {
9713                DeserializerArtifact::None => unreachable!(),
9714                DeserializerArtifact::Data(data) => {
9715                    Self::store_any_attribute(&mut values, data)?;
9716                    let data = Self::AnyAttribute(values, None).finish(reader)?;
9717                    *self = Self::Done__(data);
9718                    ElementHandlerOutput::Break { event, allow_any }
9719                }
9720                DeserializerArtifact::Deserializer(deserializer) => {
9721                    *self = Self::AnyAttribute(values, Some(deserializer));
9722                    ElementHandlerOutput::from_event_end(event, allow_any)
9723                }
9724            })
9725        }
9726    }
9727    impl<'de> Deserializer<'de, super::AttributeGroupTypeContent>
9728        for AttributeGroupTypeContentDeserializer
9729    {
9730        fn init<R>(
9731            reader: &R,
9732            event: Event<'de>,
9733        ) -> DeserializerResult<'de, super::AttributeGroupTypeContent>
9734        where
9735            R: DeserializeReader,
9736        {
9737            let deserializer = Self::Init__;
9738            let mut output = deserializer.next(reader, event)?;
9739            output.artifact = match output.artifact {
9740                DeserializerArtifact::Deserializer(Self::Init__) => DeserializerArtifact::None,
9741                artifact => artifact,
9742            };
9743            Ok(output)
9744        }
9745        fn next<R>(
9746            mut self,
9747            reader: &R,
9748            event: Event<'de>,
9749        ) -> DeserializerResult<'de, super::AttributeGroupTypeContent>
9750        where
9751            R: DeserializeReader,
9752        {
9753            let mut event = event;
9754            let mut fallback = None;
9755            let (event, allow_any) = loop {
9756                let state = replace(&mut self, Self::Unknown__);
9757                event = match (state, event) {
9758                    (Self::Annotation(values, Some(deserializer)), event) => {
9759                        let output = deserializer.next(reader, event)?;
9760                        match self.handle_annotation(reader, values, output, &mut fallback)? {
9761                            ElementHandlerOutput::Break { event, allow_any } => {
9762                                break (event, allow_any)
9763                            }
9764                            ElementHandlerOutput::Continue { event, .. } => event,
9765                        }
9766                    }
9767                    (Self::Attribute(values, Some(deserializer)), event) => {
9768                        let output = deserializer.next(reader, event)?;
9769                        match self.handle_attribute(reader, values, output, &mut fallback)? {
9770                            ElementHandlerOutput::Break { event, allow_any } => {
9771                                break (event, allow_any)
9772                            }
9773                            ElementHandlerOutput::Continue { event, .. } => event,
9774                        }
9775                    }
9776                    (Self::AttributeGroup(values, Some(deserializer)), event) => {
9777                        let output = deserializer.next(reader, event)?;
9778                        match self.handle_attribute_group(reader, values, output, &mut fallback)? {
9779                            ElementHandlerOutput::Break { event, allow_any } => {
9780                                break (event, allow_any)
9781                            }
9782                            ElementHandlerOutput::Continue { event, .. } => event,
9783                        }
9784                    }
9785                    (Self::AnyAttribute(values, Some(deserializer)), event) => {
9786                        let output = deserializer.next(reader, event)?;
9787                        match self.handle_any_attribute(reader, values, output, &mut fallback)? {
9788                            ElementHandlerOutput::Break { event, allow_any } => {
9789                                break (event, allow_any)
9790                            }
9791                            ElementHandlerOutput::Continue { event, .. } => event,
9792                        }
9793                    }
9794                    (state, event @ Event::End(_)) => {
9795                        return Ok(DeserializerOutput {
9796                            artifact: DeserializerArtifact::Data(state.finish(reader)?),
9797                            event: DeserializerEvent::Continue(event),
9798                            allow_any: false,
9799                        });
9800                    }
9801                    (Self::Init__, event) => {
9802                        match self.find_suitable(reader, event, &mut fallback)? {
9803                            ElementHandlerOutput::Break { event, allow_any } => {
9804                                break (event, allow_any)
9805                            }
9806                            ElementHandlerOutput::Continue { event, .. } => event,
9807                        }
9808                    }
9809                    (Self::Annotation(values, None), event) => {
9810                        let output = <super::Annotation as WithDeserializer>::Deserializer::init(
9811                            reader, event,
9812                        )?;
9813                        match self.handle_annotation(reader, values, output, &mut fallback)? {
9814                            ElementHandlerOutput::Break { event, allow_any } => {
9815                                break (event, allow_any)
9816                            }
9817                            ElementHandlerOutput::Continue { event, .. } => event,
9818                        }
9819                    }
9820                    (Self::Attribute(values, None), event) => {
9821                        let output =
9822                            <super::AttributeType as WithDeserializer>::Deserializer::init(
9823                                reader, event,
9824                            )?;
9825                        match self.handle_attribute(reader, values, output, &mut fallback)? {
9826                            ElementHandlerOutput::Break { event, allow_any } => {
9827                                break (event, allow_any)
9828                            }
9829                            ElementHandlerOutput::Continue { event, .. } => event,
9830                        }
9831                    }
9832                    (Self::AttributeGroup(values, None), event) => {
9833                        let output =
9834                            <super::AttributeGroupType as WithDeserializer>::Deserializer::init(
9835                                reader, event,
9836                            )?;
9837                        match self.handle_attribute_group(reader, values, output, &mut fallback)? {
9838                            ElementHandlerOutput::Break { event, allow_any } => {
9839                                break (event, allow_any)
9840                            }
9841                            ElementHandlerOutput::Continue { event, .. } => event,
9842                        }
9843                    }
9844                    (Self::AnyAttribute(values, None), event) => {
9845                        let output = <super::AnyAttribute as WithDeserializer>::Deserializer::init(
9846                            reader, event,
9847                        )?;
9848                        match self.handle_any_attribute(reader, values, output, &mut fallback)? {
9849                            ElementHandlerOutput::Break { event, allow_any } => {
9850                                break (event, allow_any)
9851                            }
9852                            ElementHandlerOutput::Continue { event, .. } => event,
9853                        }
9854                    }
9855                    (s @ Self::Done__(_), event) => {
9856                        self = s;
9857                        break (DeserializerEvent::Continue(event), false);
9858                    }
9859                    (Self::Unknown__, _) => unreachable!(),
9860                }
9861            };
9862            let artifact = match self {
9863                Self::Done__(data) => DeserializerArtifact::Data(data),
9864                deserializer => DeserializerArtifact::Deserializer(deserializer),
9865            };
9866            Ok(DeserializerOutput {
9867                artifact,
9868                event,
9869                allow_any,
9870            })
9871        }
9872        fn finish<R>(self, reader: &R) -> Result<super::AttributeGroupTypeContent, Error>
9873        where
9874            R: DeserializeReader,
9875        {
9876            match self {
9877                Self::Init__ => Err(ErrorKind::MissingContent.into()),
9878                Self::Annotation(mut values, deserializer) => {
9879                    if let Some(deserializer) = deserializer {
9880                        let value = deserializer.finish(reader)?;
9881                        Self::store_annotation(&mut values, value)?;
9882                    }
9883                    Ok(super::AttributeGroupTypeContent::Annotation(
9884                        values.ok_or_else(|| ErrorKind::MissingElement("annotation".into()))?,
9885                    ))
9886                }
9887                Self::Attribute(mut values, deserializer) => {
9888                    if let Some(deserializer) = deserializer {
9889                        let value = deserializer.finish(reader)?;
9890                        Self::store_attribute(&mut values, value)?;
9891                    }
9892                    Ok(super::AttributeGroupTypeContent::Attribute(
9893                        values.ok_or_else(|| ErrorKind::MissingElement("attribute".into()))?,
9894                    ))
9895                }
9896                Self::AttributeGroup(mut values, deserializer) => {
9897                    if let Some(deserializer) = deserializer {
9898                        let value = deserializer.finish(reader)?;
9899                        Self::store_attribute_group(&mut values, value)?;
9900                    }
9901                    Ok(super::AttributeGroupTypeContent::AttributeGroup(
9902                        values.ok_or_else(|| ErrorKind::MissingElement("attributeGroup".into()))?,
9903                    ))
9904                }
9905                Self::AnyAttribute(mut values, deserializer) => {
9906                    if let Some(deserializer) = deserializer {
9907                        let value = deserializer.finish(reader)?;
9908                        Self::store_any_attribute(&mut values, value)?;
9909                    }
9910                    Ok(super::AttributeGroupTypeContent::AnyAttribute(
9911                        values.ok_or_else(|| ErrorKind::MissingElement("anyAttribute".into()))?,
9912                    ))
9913                }
9914                Self::Done__(data) => Ok(data),
9915                Self::Unknown__ => unreachable!(),
9916            }
9917        }
9918    }
9919    #[derive(Debug)]
9920    pub struct ElementTypeDeserializer {
9921        id: Option<String>,
9922        name: Option<String>,
9923        ref_: Option<super::QName>,
9924        type_: Option<super::QName>,
9925        substitution_group: Option<super::ElementSubstitutionGroupType>,
9926        min_occurs: usize,
9927        max_occurs: super::MaxOccurs,
9928        default: Option<String>,
9929        fixed: Option<String>,
9930        nillable: Option<bool>,
9931        abstract_: bool,
9932        final_: Option<super::DerivationSetType>,
9933        block: Option<super::BlockSetType>,
9934        form: Option<super::FormChoiceType>,
9935        target_namespace: Option<String>,
9936        content: Vec<super::ElementTypeContent>,
9937        state: Box<ElementTypeDeserializerState>,
9938    }
9939    #[derive(Debug)]
9940    enum ElementTypeDeserializerState {
9941        Init__,
9942        Next__,
9943        Content__(<super::ElementTypeContent as WithDeserializer>::Deserializer),
9944        Unknown__,
9945    }
9946    impl ElementTypeDeserializer {
9947        fn from_bytes_start<R>(reader: &R, bytes_start: &BytesStart<'_>) -> Result<Self, Error>
9948        where
9949            R: DeserializeReader,
9950        {
9951            let mut id: Option<String> = None;
9952            let mut name: Option<String> = None;
9953            let mut ref_: Option<super::QName> = None;
9954            let mut type_: Option<super::QName> = None;
9955            let mut substitution_group: Option<super::ElementSubstitutionGroupType> = None;
9956            let mut min_occurs: Option<usize> = None;
9957            let mut max_occurs: Option<super::MaxOccurs> = None;
9958            let mut default: Option<String> = None;
9959            let mut fixed: Option<String> = None;
9960            let mut nillable: Option<bool> = None;
9961            let mut abstract_: Option<bool> = None;
9962            let mut final_: Option<super::DerivationSetType> = None;
9963            let mut block: Option<super::BlockSetType> = None;
9964            let mut form: Option<super::FormChoiceType> = None;
9965            let mut target_namespace: Option<String> = None;
9966            for attrib in filter_xmlns_attributes(bytes_start) {
9967                let attrib = attrib?;
9968                if matches!(
9969                    reader.resolve_local_name(attrib.key, &super::NS_XS),
9970                    Some(b"id")
9971                ) {
9972                    reader.read_attrib(&mut id, b"id", &attrib.value)?;
9973                } else if matches!(
9974                    reader.resolve_local_name(attrib.key, &super::NS_XS),
9975                    Some(b"name")
9976                ) {
9977                    reader.read_attrib(&mut name, b"name", &attrib.value)?;
9978                } else if matches!(
9979                    reader.resolve_local_name(attrib.key, &super::NS_XS),
9980                    Some(b"ref")
9981                ) {
9982                    reader.read_attrib(&mut ref_, b"ref", &attrib.value)?;
9983                } else if matches!(
9984                    reader.resolve_local_name(attrib.key, &super::NS_XS),
9985                    Some(b"type")
9986                ) {
9987                    reader.read_attrib(&mut type_, b"type", &attrib.value)?;
9988                } else if matches!(
9989                    reader.resolve_local_name(attrib.key, &super::NS_XS),
9990                    Some(b"substitutionGroup")
9991                ) {
9992                    reader.read_attrib(
9993                        &mut substitution_group,
9994                        b"substitutionGroup",
9995                        &attrib.value,
9996                    )?;
9997                } else if matches!(
9998                    reader.resolve_local_name(attrib.key, &super::NS_XS),
9999                    Some(b"minOccurs")
10000                ) {
10001                    reader.read_attrib(&mut min_occurs, b"minOccurs", &attrib.value)?;
10002                } else if matches!(
10003                    reader.resolve_local_name(attrib.key, &super::NS_XS),
10004                    Some(b"maxOccurs")
10005                ) {
10006                    reader.read_attrib(&mut max_occurs, b"maxOccurs", &attrib.value)?;
10007                } else if matches!(
10008                    reader.resolve_local_name(attrib.key, &super::NS_XS),
10009                    Some(b"default")
10010                ) {
10011                    reader.read_attrib(&mut default, b"default", &attrib.value)?;
10012                } else if matches!(
10013                    reader.resolve_local_name(attrib.key, &super::NS_XS),
10014                    Some(b"fixed")
10015                ) {
10016                    reader.read_attrib(&mut fixed, b"fixed", &attrib.value)?;
10017                } else if matches!(
10018                    reader.resolve_local_name(attrib.key, &super::NS_XS),
10019                    Some(b"nillable")
10020                ) {
10021                    reader.read_attrib(&mut nillable, b"nillable", &attrib.value)?;
10022                } else if matches!(
10023                    reader.resolve_local_name(attrib.key, &super::NS_XS),
10024                    Some(b"abstract")
10025                ) {
10026                    reader.read_attrib(&mut abstract_, b"abstract", &attrib.value)?;
10027                } else if matches!(
10028                    reader.resolve_local_name(attrib.key, &super::NS_XS),
10029                    Some(b"final")
10030                ) {
10031                    reader.read_attrib(&mut final_, b"final", &attrib.value)?;
10032                } else if matches!(
10033                    reader.resolve_local_name(attrib.key, &super::NS_XS),
10034                    Some(b"block")
10035                ) {
10036                    reader.read_attrib(&mut block, b"block", &attrib.value)?;
10037                } else if matches!(
10038                    reader.resolve_local_name(attrib.key, &super::NS_XS),
10039                    Some(b"form")
10040                ) {
10041                    reader.read_attrib(&mut form, b"form", &attrib.value)?;
10042                } else if matches!(
10043                    reader.resolve_local_name(attrib.key, &super::NS_XS),
10044                    Some(b"targetNamespace")
10045                ) {
10046                    reader.read_attrib(&mut target_namespace, b"targetNamespace", &attrib.value)?;
10047                }
10048            }
10049            Ok(Self {
10050                id: id,
10051                name: name,
10052                ref_: ref_,
10053                type_: type_,
10054                substitution_group: substitution_group,
10055                min_occurs: min_occurs.unwrap_or_else(super::ElementType::default_min_occurs),
10056                max_occurs: max_occurs.unwrap_or_else(super::ElementType::default_max_occurs),
10057                default: default,
10058                fixed: fixed,
10059                nillable: nillable,
10060                abstract_: abstract_.unwrap_or_else(super::ElementType::default_abstract_),
10061                final_: final_,
10062                block: block,
10063                form: form,
10064                target_namespace: target_namespace,
10065                content: Vec::new(),
10066                state: Box::new(ElementTypeDeserializerState::Init__),
10067            })
10068        }
10069        fn finish_state<R>(
10070            &mut self,
10071            reader: &R,
10072            state: ElementTypeDeserializerState,
10073        ) -> Result<(), Error>
10074        where
10075            R: DeserializeReader,
10076        {
10077            if let ElementTypeDeserializerState::Content__(deserializer) = state {
10078                self.store_content(deserializer.finish(reader)?)?;
10079            }
10080            Ok(())
10081        }
10082        fn store_content(&mut self, value: super::ElementTypeContent) -> Result<(), Error> {
10083            self.content.push(value);
10084            Ok(())
10085        }
10086        fn handle_content<'de, R>(
10087            &mut self,
10088            reader: &R,
10089            output: DeserializerOutput<'de, super::ElementTypeContent>,
10090            fallback: &mut Option<ElementTypeDeserializerState>,
10091        ) -> Result<ElementHandlerOutput<'de>, Error>
10092        where
10093            R: DeserializeReader,
10094        {
10095            let DeserializerOutput {
10096                artifact,
10097                event,
10098                allow_any,
10099            } = output;
10100            if artifact.is_none() {
10101                *self.state = fallback
10102                    .take()
10103                    .unwrap_or(ElementTypeDeserializerState::Next__);
10104                return Ok(ElementHandlerOutput::break_(event, allow_any));
10105            }
10106            if let Some(fallback) = fallback.take() {
10107                self.finish_state(reader, fallback)?;
10108            }
10109            Ok(match artifact {
10110                DeserializerArtifact::None => unreachable!(),
10111                DeserializerArtifact::Data(data) => {
10112                    self.store_content(data)?;
10113                    *self.state = ElementTypeDeserializerState::Next__;
10114                    ElementHandlerOutput::from_event(event, allow_any)
10115                }
10116                DeserializerArtifact::Deserializer(deserializer) => {
10117                    let ret = ElementHandlerOutput::from_event(event, allow_any);
10118                    match &ret {
10119                        ElementHandlerOutput::Continue { .. } => {
10120                            fallback.get_or_insert(ElementTypeDeserializerState::Content__(
10121                                deserializer,
10122                            ));
10123                            *self.state = ElementTypeDeserializerState::Next__;
10124                        }
10125                        ElementHandlerOutput::Break { .. } => {
10126                            *self.state = ElementTypeDeserializerState::Content__(deserializer);
10127                        }
10128                    }
10129                    ret
10130                }
10131            })
10132        }
10133    }
10134    impl<'de> Deserializer<'de, super::ElementType> for ElementTypeDeserializer {
10135        fn init<R>(reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::ElementType>
10136        where
10137            R: DeserializeReader,
10138        {
10139            reader.init_deserializer_from_start_event(event, Self::from_bytes_start)
10140        }
10141        fn next<R>(
10142            mut self,
10143            reader: &R,
10144            event: Event<'de>,
10145        ) -> DeserializerResult<'de, super::ElementType>
10146        where
10147            R: DeserializeReader,
10148        {
10149            use ElementTypeDeserializerState as S;
10150            let mut event = event;
10151            let mut fallback = None;
10152            let (event, allow_any) = loop {
10153                let state = replace(&mut *self.state, S::Unknown__);
10154                event = match (state, event) {
10155                    (S::Content__(deserializer), event) => {
10156                        let output = deserializer.next(reader, event)?;
10157                        match self.handle_content(reader, output, &mut fallback)? {
10158                            ElementHandlerOutput::Break { event, allow_any } => {
10159                                break (event, allow_any)
10160                            }
10161                            ElementHandlerOutput::Continue { event, .. } => event,
10162                        }
10163                    }
10164                    (_, Event::End(_)) => {
10165                        return Ok(DeserializerOutput {
10166                            artifact: DeserializerArtifact::Data(self.finish(reader)?),
10167                            event: DeserializerEvent::None,
10168                            allow_any: false,
10169                        });
10170                    }
10171                    (old_state @ (S::Init__ | S::Next__), event) => {
10172                        let output =
10173                            <super::ElementTypeContent as WithDeserializer>::Deserializer::init(
10174                                reader, event,
10175                            )?;
10176                        match self.handle_content(reader, output, &mut fallback)? {
10177                            ElementHandlerOutput::Break { event, allow_any } => {
10178                                if matches!(&*self.state, S::Unknown__) {
10179                                    *self.state = old_state;
10180                                }
10181                                break (event, allow_any);
10182                            }
10183                            ElementHandlerOutput::Continue { event, .. } => event,
10184                        }
10185                    }
10186                    (S::Unknown__, _) => unreachable!(),
10187                }
10188            };
10189            Ok(DeserializerOutput {
10190                artifact: DeserializerArtifact::Deserializer(self),
10191                event,
10192                allow_any,
10193            })
10194        }
10195        fn finish<R>(mut self, reader: &R) -> Result<super::ElementType, Error>
10196        where
10197            R: DeserializeReader,
10198        {
10199            let state = replace(&mut *self.state, ElementTypeDeserializerState::Unknown__);
10200            self.finish_state(reader, state)?;
10201            Ok(super::ElementType {
10202                id: self.id,
10203                name: self.name,
10204                ref_: self.ref_,
10205                type_: self.type_,
10206                substitution_group: self.substitution_group,
10207                min_occurs: self.min_occurs,
10208                max_occurs: self.max_occurs,
10209                default: self.default,
10210                fixed: self.fixed,
10211                nillable: self.nillable,
10212                abstract_: self.abstract_,
10213                final_: self.final_,
10214                block: self.block,
10215                form: self.form,
10216                target_namespace: self.target_namespace,
10217                content: self.content,
10218            })
10219        }
10220    }
10221    #[derive(Debug)]
10222    pub enum ElementTypeContentDeserializer {
10223        Init__,
10224        Annotation(
10225            Option<super::Annotation>,
10226            Option<<super::Annotation as WithDeserializer>::Deserializer>,
10227        ),
10228        SimpleType(
10229            Option<super::SimpleBaseType>,
10230            Option<<super::SimpleBaseType as WithDeserializer>::Deserializer>,
10231        ),
10232        ComplexType(
10233            Option<super::ComplexBaseType>,
10234            Option<<super::ComplexBaseType as WithDeserializer>::Deserializer>,
10235        ),
10236        Alternative(
10237            Option<super::AltType>,
10238            Option<<super::AltType as WithDeserializer>::Deserializer>,
10239        ),
10240        Unique(
10241            Option<super::KeybaseType>,
10242            Option<<super::KeybaseType as WithDeserializer>::Deserializer>,
10243        ),
10244        Key(
10245            Option<super::KeybaseType>,
10246            Option<<super::KeybaseType as WithDeserializer>::Deserializer>,
10247        ),
10248        Keyref(
10249            Option<super::Keyref>,
10250            Option<<super::Keyref as WithDeserializer>::Deserializer>,
10251        ),
10252        Done__(super::ElementTypeContent),
10253        Unknown__,
10254    }
10255    impl ElementTypeContentDeserializer {
10256        fn find_suitable<'de, R>(
10257            &mut self,
10258            reader: &R,
10259            event: Event<'de>,
10260            fallback: &mut Option<ElementTypeContentDeserializer>,
10261        ) -> Result<ElementHandlerOutput<'de>, Error>
10262        where
10263            R: DeserializeReader,
10264        {
10265            let (Event::Start(x) | Event::Empty(x)) = &event else {
10266                *self = Self::Init__;
10267                return Ok(ElementHandlerOutput::return_to_parent(event, false));
10268            };
10269            if matches!(
10270                reader.resolve_local_name(x.name(), &super::NS_XS),
10271                Some(b"annotation")
10272            ) {
10273                let output =
10274                    <super::Annotation as WithDeserializer>::Deserializer::init(reader, event)?;
10275                return self.handle_annotation(reader, Default::default(), output, &mut *fallback);
10276            }
10277            if matches!(
10278                reader.resolve_local_name(x.name(), &super::NS_XS),
10279                Some(b"simpleType")
10280            ) {
10281                let output =
10282                    <super::SimpleBaseType as WithDeserializer>::Deserializer::init(reader, event)?;
10283                return self.handle_simple_type(reader, Default::default(), output, &mut *fallback);
10284            }
10285            if matches!(
10286                reader.resolve_local_name(x.name(), &super::NS_XS),
10287                Some(b"complexType")
10288            ) {
10289                let output = <super::ComplexBaseType as WithDeserializer>::Deserializer::init(
10290                    reader, event,
10291                )?;
10292                return self.handle_complex_type(
10293                    reader,
10294                    Default::default(),
10295                    output,
10296                    &mut *fallback,
10297                );
10298            }
10299            if matches!(
10300                reader.resolve_local_name(x.name(), &super::NS_XS),
10301                Some(b"alternative")
10302            ) {
10303                let output =
10304                    <super::AltType as WithDeserializer>::Deserializer::init(reader, event)?;
10305                return self.handle_alternative(reader, Default::default(), output, &mut *fallback);
10306            }
10307            if matches!(
10308                reader.resolve_local_name(x.name(), &super::NS_XS),
10309                Some(b"unique")
10310            ) {
10311                let output =
10312                    <super::KeybaseType as WithDeserializer>::Deserializer::init(reader, event)?;
10313                return self.handle_unique(reader, Default::default(), output, &mut *fallback);
10314            }
10315            if matches!(
10316                reader.resolve_local_name(x.name(), &super::NS_XS),
10317                Some(b"key")
10318            ) {
10319                let output =
10320                    <super::KeybaseType as WithDeserializer>::Deserializer::init(reader, event)?;
10321                return self.handle_key(reader, Default::default(), output, &mut *fallback);
10322            }
10323            if matches!(
10324                reader.resolve_local_name(x.name(), &super::NS_XS),
10325                Some(b"keyref")
10326            ) {
10327                let output =
10328                    <super::Keyref as WithDeserializer>::Deserializer::init(reader, event)?;
10329                return self.handle_keyref(reader, Default::default(), output, &mut *fallback);
10330            }
10331            *self = Self::Init__;
10332            Ok(ElementHandlerOutput::return_to_parent(event, false))
10333        }
10334        fn store_annotation(
10335            values: &mut Option<super::Annotation>,
10336            value: super::Annotation,
10337        ) -> Result<(), Error> {
10338            if values.is_some() {
10339                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
10340                    b"annotation",
10341                )))?;
10342            }
10343            *values = Some(value);
10344            Ok(())
10345        }
10346        fn store_simple_type(
10347            values: &mut Option<super::SimpleBaseType>,
10348            value: super::SimpleBaseType,
10349        ) -> Result<(), Error> {
10350            if values.is_some() {
10351                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
10352                    b"simpleType",
10353                )))?;
10354            }
10355            *values = Some(value);
10356            Ok(())
10357        }
10358        fn store_complex_type(
10359            values: &mut Option<super::ComplexBaseType>,
10360            value: super::ComplexBaseType,
10361        ) -> Result<(), Error> {
10362            if values.is_some() {
10363                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
10364                    b"complexType",
10365                )))?;
10366            }
10367            *values = Some(value);
10368            Ok(())
10369        }
10370        fn store_alternative(
10371            values: &mut Option<super::AltType>,
10372            value: super::AltType,
10373        ) -> Result<(), Error> {
10374            if values.is_some() {
10375                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
10376                    b"alternative",
10377                )))?;
10378            }
10379            *values = Some(value);
10380            Ok(())
10381        }
10382        fn store_unique(
10383            values: &mut Option<super::KeybaseType>,
10384            value: super::KeybaseType,
10385        ) -> Result<(), Error> {
10386            if values.is_some() {
10387                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
10388                    b"unique",
10389                )))?;
10390            }
10391            *values = Some(value);
10392            Ok(())
10393        }
10394        fn store_key(
10395            values: &mut Option<super::KeybaseType>,
10396            value: super::KeybaseType,
10397        ) -> Result<(), Error> {
10398            if values.is_some() {
10399                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(b"key")))?;
10400            }
10401            *values = Some(value);
10402            Ok(())
10403        }
10404        fn store_keyref(
10405            values: &mut Option<super::Keyref>,
10406            value: super::Keyref,
10407        ) -> Result<(), Error> {
10408            if values.is_some() {
10409                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
10410                    b"keyref",
10411                )))?;
10412            }
10413            *values = Some(value);
10414            Ok(())
10415        }
10416        fn handle_annotation<'de, R>(
10417            &mut self,
10418            reader: &R,
10419            mut values: Option<super::Annotation>,
10420            output: DeserializerOutput<'de, super::Annotation>,
10421            fallback: &mut Option<Self>,
10422        ) -> Result<ElementHandlerOutput<'de>, Error>
10423        where
10424            R: DeserializeReader,
10425        {
10426            let DeserializerOutput {
10427                artifact,
10428                event,
10429                allow_any,
10430            } = output;
10431            if artifact.is_none() {
10432                *self = match fallback.take() {
10433                    None => Self::Init__,
10434                    Some(Self::Annotation(_, Some(deserializer))) => {
10435                        Self::Annotation(values, Some(deserializer))
10436                    }
10437                    _ => unreachable!(),
10438                };
10439                return Ok(ElementHandlerOutput::break_(event, allow_any));
10440            }
10441            match fallback.take() {
10442                None => (),
10443                Some(Self::Annotation(_, Some(deserializer))) => {
10444                    let data = deserializer.finish(reader)?;
10445                    Self::store_annotation(&mut values, data)?;
10446                }
10447                Some(_) => unreachable!(),
10448            }
10449            Ok(match artifact {
10450                DeserializerArtifact::None => unreachable!(),
10451                DeserializerArtifact::Data(data) => {
10452                    Self::store_annotation(&mut values, data)?;
10453                    let data = Self::Annotation(values, None).finish(reader)?;
10454                    *self = Self::Done__(data);
10455                    ElementHandlerOutput::Break { event, allow_any }
10456                }
10457                DeserializerArtifact::Deserializer(deserializer) => {
10458                    *self = Self::Annotation(values, Some(deserializer));
10459                    ElementHandlerOutput::from_event_end(event, allow_any)
10460                }
10461            })
10462        }
10463        fn handle_simple_type<'de, R>(
10464            &mut self,
10465            reader: &R,
10466            mut values: Option<super::SimpleBaseType>,
10467            output: DeserializerOutput<'de, super::SimpleBaseType>,
10468            fallback: &mut Option<Self>,
10469        ) -> Result<ElementHandlerOutput<'de>, Error>
10470        where
10471            R: DeserializeReader,
10472        {
10473            let DeserializerOutput {
10474                artifact,
10475                event,
10476                allow_any,
10477            } = output;
10478            if artifact.is_none() {
10479                *self = match fallback.take() {
10480                    None => Self::Init__,
10481                    Some(Self::SimpleType(_, Some(deserializer))) => {
10482                        Self::SimpleType(values, Some(deserializer))
10483                    }
10484                    _ => unreachable!(),
10485                };
10486                return Ok(ElementHandlerOutput::break_(event, allow_any));
10487            }
10488            match fallback.take() {
10489                None => (),
10490                Some(Self::SimpleType(_, Some(deserializer))) => {
10491                    let data = deserializer.finish(reader)?;
10492                    Self::store_simple_type(&mut values, data)?;
10493                }
10494                Some(_) => unreachable!(),
10495            }
10496            Ok(match artifact {
10497                DeserializerArtifact::None => unreachable!(),
10498                DeserializerArtifact::Data(data) => {
10499                    Self::store_simple_type(&mut values, data)?;
10500                    let data = Self::SimpleType(values, None).finish(reader)?;
10501                    *self = Self::Done__(data);
10502                    ElementHandlerOutput::Break { event, allow_any }
10503                }
10504                DeserializerArtifact::Deserializer(deserializer) => {
10505                    *self = Self::SimpleType(values, Some(deserializer));
10506                    ElementHandlerOutput::from_event_end(event, allow_any)
10507                }
10508            })
10509        }
10510        fn handle_complex_type<'de, R>(
10511            &mut self,
10512            reader: &R,
10513            mut values: Option<super::ComplexBaseType>,
10514            output: DeserializerOutput<'de, super::ComplexBaseType>,
10515            fallback: &mut Option<Self>,
10516        ) -> Result<ElementHandlerOutput<'de>, Error>
10517        where
10518            R: DeserializeReader,
10519        {
10520            let DeserializerOutput {
10521                artifact,
10522                event,
10523                allow_any,
10524            } = output;
10525            if artifact.is_none() {
10526                *self = match fallback.take() {
10527                    None => Self::Init__,
10528                    Some(Self::ComplexType(_, Some(deserializer))) => {
10529                        Self::ComplexType(values, Some(deserializer))
10530                    }
10531                    _ => unreachable!(),
10532                };
10533                return Ok(ElementHandlerOutput::break_(event, allow_any));
10534            }
10535            match fallback.take() {
10536                None => (),
10537                Some(Self::ComplexType(_, Some(deserializer))) => {
10538                    let data = deserializer.finish(reader)?;
10539                    Self::store_complex_type(&mut values, data)?;
10540                }
10541                Some(_) => unreachable!(),
10542            }
10543            Ok(match artifact {
10544                DeserializerArtifact::None => unreachable!(),
10545                DeserializerArtifact::Data(data) => {
10546                    Self::store_complex_type(&mut values, data)?;
10547                    let data = Self::ComplexType(values, None).finish(reader)?;
10548                    *self = Self::Done__(data);
10549                    ElementHandlerOutput::Break { event, allow_any }
10550                }
10551                DeserializerArtifact::Deserializer(deserializer) => {
10552                    *self = Self::ComplexType(values, Some(deserializer));
10553                    ElementHandlerOutput::from_event_end(event, allow_any)
10554                }
10555            })
10556        }
10557        fn handle_alternative<'de, R>(
10558            &mut self,
10559            reader: &R,
10560            mut values: Option<super::AltType>,
10561            output: DeserializerOutput<'de, super::AltType>,
10562            fallback: &mut Option<Self>,
10563        ) -> Result<ElementHandlerOutput<'de>, Error>
10564        where
10565            R: DeserializeReader,
10566        {
10567            let DeserializerOutput {
10568                artifact,
10569                event,
10570                allow_any,
10571            } = output;
10572            if artifact.is_none() {
10573                *self = match fallback.take() {
10574                    None => Self::Init__,
10575                    Some(Self::Alternative(_, Some(deserializer))) => {
10576                        Self::Alternative(values, Some(deserializer))
10577                    }
10578                    _ => unreachable!(),
10579                };
10580                return Ok(ElementHandlerOutput::break_(event, allow_any));
10581            }
10582            match fallback.take() {
10583                None => (),
10584                Some(Self::Alternative(_, Some(deserializer))) => {
10585                    let data = deserializer.finish(reader)?;
10586                    Self::store_alternative(&mut values, data)?;
10587                }
10588                Some(_) => unreachable!(),
10589            }
10590            Ok(match artifact {
10591                DeserializerArtifact::None => unreachable!(),
10592                DeserializerArtifact::Data(data) => {
10593                    Self::store_alternative(&mut values, data)?;
10594                    let data = Self::Alternative(values, None).finish(reader)?;
10595                    *self = Self::Done__(data);
10596                    ElementHandlerOutput::Break { event, allow_any }
10597                }
10598                DeserializerArtifact::Deserializer(deserializer) => {
10599                    *self = Self::Alternative(values, Some(deserializer));
10600                    ElementHandlerOutput::from_event_end(event, allow_any)
10601                }
10602            })
10603        }
10604        fn handle_unique<'de, R>(
10605            &mut self,
10606            reader: &R,
10607            mut values: Option<super::KeybaseType>,
10608            output: DeserializerOutput<'de, super::KeybaseType>,
10609            fallback: &mut Option<Self>,
10610        ) -> Result<ElementHandlerOutput<'de>, Error>
10611        where
10612            R: DeserializeReader,
10613        {
10614            let DeserializerOutput {
10615                artifact,
10616                event,
10617                allow_any,
10618            } = output;
10619            if artifact.is_none() {
10620                *self = match fallback.take() {
10621                    None => Self::Init__,
10622                    Some(Self::Unique(_, Some(deserializer))) => {
10623                        Self::Unique(values, Some(deserializer))
10624                    }
10625                    _ => unreachable!(),
10626                };
10627                return Ok(ElementHandlerOutput::break_(event, allow_any));
10628            }
10629            match fallback.take() {
10630                None => (),
10631                Some(Self::Unique(_, Some(deserializer))) => {
10632                    let data = deserializer.finish(reader)?;
10633                    Self::store_unique(&mut values, data)?;
10634                }
10635                Some(_) => unreachable!(),
10636            }
10637            Ok(match artifact {
10638                DeserializerArtifact::None => unreachable!(),
10639                DeserializerArtifact::Data(data) => {
10640                    Self::store_unique(&mut values, data)?;
10641                    let data = Self::Unique(values, None).finish(reader)?;
10642                    *self = Self::Done__(data);
10643                    ElementHandlerOutput::Break { event, allow_any }
10644                }
10645                DeserializerArtifact::Deserializer(deserializer) => {
10646                    *self = Self::Unique(values, Some(deserializer));
10647                    ElementHandlerOutput::from_event_end(event, allow_any)
10648                }
10649            })
10650        }
10651        fn handle_key<'de, R>(
10652            &mut self,
10653            reader: &R,
10654            mut values: Option<super::KeybaseType>,
10655            output: DeserializerOutput<'de, super::KeybaseType>,
10656            fallback: &mut Option<Self>,
10657        ) -> Result<ElementHandlerOutput<'de>, Error>
10658        where
10659            R: DeserializeReader,
10660        {
10661            let DeserializerOutput {
10662                artifact,
10663                event,
10664                allow_any,
10665            } = output;
10666            if artifact.is_none() {
10667                *self = match fallback.take() {
10668                    None => Self::Init__,
10669                    Some(Self::Key(_, Some(deserializer))) => Self::Key(values, Some(deserializer)),
10670                    _ => unreachable!(),
10671                };
10672                return Ok(ElementHandlerOutput::break_(event, allow_any));
10673            }
10674            match fallback.take() {
10675                None => (),
10676                Some(Self::Key(_, Some(deserializer))) => {
10677                    let data = deserializer.finish(reader)?;
10678                    Self::store_key(&mut values, data)?;
10679                }
10680                Some(_) => unreachable!(),
10681            }
10682            Ok(match artifact {
10683                DeserializerArtifact::None => unreachable!(),
10684                DeserializerArtifact::Data(data) => {
10685                    Self::store_key(&mut values, data)?;
10686                    let data = Self::Key(values, None).finish(reader)?;
10687                    *self = Self::Done__(data);
10688                    ElementHandlerOutput::Break { event, allow_any }
10689                }
10690                DeserializerArtifact::Deserializer(deserializer) => {
10691                    *self = Self::Key(values, Some(deserializer));
10692                    ElementHandlerOutput::from_event_end(event, allow_any)
10693                }
10694            })
10695        }
10696        fn handle_keyref<'de, R>(
10697            &mut self,
10698            reader: &R,
10699            mut values: Option<super::Keyref>,
10700            output: DeserializerOutput<'de, super::Keyref>,
10701            fallback: &mut Option<Self>,
10702        ) -> Result<ElementHandlerOutput<'de>, Error>
10703        where
10704            R: DeserializeReader,
10705        {
10706            let DeserializerOutput {
10707                artifact,
10708                event,
10709                allow_any,
10710            } = output;
10711            if artifact.is_none() {
10712                *self = match fallback.take() {
10713                    None => Self::Init__,
10714                    Some(Self::Keyref(_, Some(deserializer))) => {
10715                        Self::Keyref(values, Some(deserializer))
10716                    }
10717                    _ => unreachable!(),
10718                };
10719                return Ok(ElementHandlerOutput::break_(event, allow_any));
10720            }
10721            match fallback.take() {
10722                None => (),
10723                Some(Self::Keyref(_, Some(deserializer))) => {
10724                    let data = deserializer.finish(reader)?;
10725                    Self::store_keyref(&mut values, data)?;
10726                }
10727                Some(_) => unreachable!(),
10728            }
10729            Ok(match artifact {
10730                DeserializerArtifact::None => unreachable!(),
10731                DeserializerArtifact::Data(data) => {
10732                    Self::store_keyref(&mut values, data)?;
10733                    let data = Self::Keyref(values, None).finish(reader)?;
10734                    *self = Self::Done__(data);
10735                    ElementHandlerOutput::Break { event, allow_any }
10736                }
10737                DeserializerArtifact::Deserializer(deserializer) => {
10738                    *self = Self::Keyref(values, Some(deserializer));
10739                    ElementHandlerOutput::from_event_end(event, allow_any)
10740                }
10741            })
10742        }
10743    }
10744    impl<'de> Deserializer<'de, super::ElementTypeContent> for ElementTypeContentDeserializer {
10745        fn init<R>(
10746            reader: &R,
10747            event: Event<'de>,
10748        ) -> DeserializerResult<'de, super::ElementTypeContent>
10749        where
10750            R: DeserializeReader,
10751        {
10752            let deserializer = Self::Init__;
10753            let mut output = deserializer.next(reader, event)?;
10754            output.artifact = match output.artifact {
10755                DeserializerArtifact::Deserializer(Self::Init__) => DeserializerArtifact::None,
10756                artifact => artifact,
10757            };
10758            Ok(output)
10759        }
10760        fn next<R>(
10761            mut self,
10762            reader: &R,
10763            event: Event<'de>,
10764        ) -> DeserializerResult<'de, super::ElementTypeContent>
10765        where
10766            R: DeserializeReader,
10767        {
10768            let mut event = event;
10769            let mut fallback = None;
10770            let (event, allow_any) = loop {
10771                let state = replace(&mut self, Self::Unknown__);
10772                event = match (state, event) {
10773                    (Self::Annotation(values, Some(deserializer)), event) => {
10774                        let output = deserializer.next(reader, event)?;
10775                        match self.handle_annotation(reader, values, output, &mut fallback)? {
10776                            ElementHandlerOutput::Break { event, allow_any } => {
10777                                break (event, allow_any)
10778                            }
10779                            ElementHandlerOutput::Continue { event, .. } => event,
10780                        }
10781                    }
10782                    (Self::SimpleType(values, Some(deserializer)), event) => {
10783                        let output = deserializer.next(reader, event)?;
10784                        match self.handle_simple_type(reader, values, output, &mut fallback)? {
10785                            ElementHandlerOutput::Break { event, allow_any } => {
10786                                break (event, allow_any)
10787                            }
10788                            ElementHandlerOutput::Continue { event, .. } => event,
10789                        }
10790                    }
10791                    (Self::ComplexType(values, Some(deserializer)), event) => {
10792                        let output = deserializer.next(reader, event)?;
10793                        match self.handle_complex_type(reader, values, output, &mut fallback)? {
10794                            ElementHandlerOutput::Break { event, allow_any } => {
10795                                break (event, allow_any)
10796                            }
10797                            ElementHandlerOutput::Continue { event, .. } => event,
10798                        }
10799                    }
10800                    (Self::Alternative(values, Some(deserializer)), event) => {
10801                        let output = deserializer.next(reader, event)?;
10802                        match self.handle_alternative(reader, values, output, &mut fallback)? {
10803                            ElementHandlerOutput::Break { event, allow_any } => {
10804                                break (event, allow_any)
10805                            }
10806                            ElementHandlerOutput::Continue { event, .. } => event,
10807                        }
10808                    }
10809                    (Self::Unique(values, Some(deserializer)), event) => {
10810                        let output = deserializer.next(reader, event)?;
10811                        match self.handle_unique(reader, values, output, &mut fallback)? {
10812                            ElementHandlerOutput::Break { event, allow_any } => {
10813                                break (event, allow_any)
10814                            }
10815                            ElementHandlerOutput::Continue { event, .. } => event,
10816                        }
10817                    }
10818                    (Self::Key(values, Some(deserializer)), event) => {
10819                        let output = deserializer.next(reader, event)?;
10820                        match self.handle_key(reader, values, output, &mut fallback)? {
10821                            ElementHandlerOutput::Break { event, allow_any } => {
10822                                break (event, allow_any)
10823                            }
10824                            ElementHandlerOutput::Continue { event, .. } => event,
10825                        }
10826                    }
10827                    (Self::Keyref(values, Some(deserializer)), event) => {
10828                        let output = deserializer.next(reader, event)?;
10829                        match self.handle_keyref(reader, values, output, &mut fallback)? {
10830                            ElementHandlerOutput::Break { event, allow_any } => {
10831                                break (event, allow_any)
10832                            }
10833                            ElementHandlerOutput::Continue { event, .. } => event,
10834                        }
10835                    }
10836                    (state, event @ Event::End(_)) => {
10837                        return Ok(DeserializerOutput {
10838                            artifact: DeserializerArtifact::Data(state.finish(reader)?),
10839                            event: DeserializerEvent::Continue(event),
10840                            allow_any: false,
10841                        });
10842                    }
10843                    (Self::Init__, event) => {
10844                        match self.find_suitable(reader, event, &mut fallback)? {
10845                            ElementHandlerOutput::Break { event, allow_any } => {
10846                                break (event, allow_any)
10847                            }
10848                            ElementHandlerOutput::Continue { event, .. } => event,
10849                        }
10850                    }
10851                    (Self::Annotation(values, None), event) => {
10852                        let output = <super::Annotation as WithDeserializer>::Deserializer::init(
10853                            reader, event,
10854                        )?;
10855                        match self.handle_annotation(reader, values, output, &mut fallback)? {
10856                            ElementHandlerOutput::Break { event, allow_any } => {
10857                                break (event, allow_any)
10858                            }
10859                            ElementHandlerOutput::Continue { event, .. } => event,
10860                        }
10861                    }
10862                    (Self::SimpleType(values, None), event) => {
10863                        let output =
10864                            <super::SimpleBaseType as WithDeserializer>::Deserializer::init(
10865                                reader, event,
10866                            )?;
10867                        match self.handle_simple_type(reader, values, output, &mut fallback)? {
10868                            ElementHandlerOutput::Break { event, allow_any } => {
10869                                break (event, allow_any)
10870                            }
10871                            ElementHandlerOutput::Continue { event, .. } => event,
10872                        }
10873                    }
10874                    (Self::ComplexType(values, None), event) => {
10875                        let output =
10876                            <super::ComplexBaseType as WithDeserializer>::Deserializer::init(
10877                                reader, event,
10878                            )?;
10879                        match self.handle_complex_type(reader, values, output, &mut fallback)? {
10880                            ElementHandlerOutput::Break { event, allow_any } => {
10881                                break (event, allow_any)
10882                            }
10883                            ElementHandlerOutput::Continue { event, .. } => event,
10884                        }
10885                    }
10886                    (Self::Alternative(values, None), event) => {
10887                        let output = <super::AltType as WithDeserializer>::Deserializer::init(
10888                            reader, event,
10889                        )?;
10890                        match self.handle_alternative(reader, values, output, &mut fallback)? {
10891                            ElementHandlerOutput::Break { event, allow_any } => {
10892                                break (event, allow_any)
10893                            }
10894                            ElementHandlerOutput::Continue { event, .. } => event,
10895                        }
10896                    }
10897                    (Self::Unique(values, None), event) => {
10898                        let output = <super::KeybaseType as WithDeserializer>::Deserializer::init(
10899                            reader, event,
10900                        )?;
10901                        match self.handle_unique(reader, values, output, &mut fallback)? {
10902                            ElementHandlerOutput::Break { event, allow_any } => {
10903                                break (event, allow_any)
10904                            }
10905                            ElementHandlerOutput::Continue { event, .. } => event,
10906                        }
10907                    }
10908                    (Self::Key(values, None), event) => {
10909                        let output = <super::KeybaseType as WithDeserializer>::Deserializer::init(
10910                            reader, event,
10911                        )?;
10912                        match self.handle_key(reader, values, output, &mut fallback)? {
10913                            ElementHandlerOutput::Break { event, allow_any } => {
10914                                break (event, allow_any)
10915                            }
10916                            ElementHandlerOutput::Continue { event, .. } => event,
10917                        }
10918                    }
10919                    (Self::Keyref(values, None), event) => {
10920                        let output =
10921                            <super::Keyref as WithDeserializer>::Deserializer::init(reader, event)?;
10922                        match self.handle_keyref(reader, values, output, &mut fallback)? {
10923                            ElementHandlerOutput::Break { event, allow_any } => {
10924                                break (event, allow_any)
10925                            }
10926                            ElementHandlerOutput::Continue { event, .. } => event,
10927                        }
10928                    }
10929                    (s @ Self::Done__(_), event) => {
10930                        self = s;
10931                        break (DeserializerEvent::Continue(event), false);
10932                    }
10933                    (Self::Unknown__, _) => unreachable!(),
10934                }
10935            };
10936            let artifact = match self {
10937                Self::Done__(data) => DeserializerArtifact::Data(data),
10938                deserializer => DeserializerArtifact::Deserializer(deserializer),
10939            };
10940            Ok(DeserializerOutput {
10941                artifact,
10942                event,
10943                allow_any,
10944            })
10945        }
10946        fn finish<R>(self, reader: &R) -> Result<super::ElementTypeContent, Error>
10947        where
10948            R: DeserializeReader,
10949        {
10950            match self {
10951                Self::Init__ => Err(ErrorKind::MissingContent.into()),
10952                Self::Annotation(mut values, deserializer) => {
10953                    if let Some(deserializer) = deserializer {
10954                        let value = deserializer.finish(reader)?;
10955                        Self::store_annotation(&mut values, value)?;
10956                    }
10957                    Ok(super::ElementTypeContent::Annotation(values.ok_or_else(
10958                        || ErrorKind::MissingElement("annotation".into()),
10959                    )?))
10960                }
10961                Self::SimpleType(mut values, deserializer) => {
10962                    if let Some(deserializer) = deserializer {
10963                        let value = deserializer.finish(reader)?;
10964                        Self::store_simple_type(&mut values, value)?;
10965                    }
10966                    Ok(super::ElementTypeContent::SimpleType(values.ok_or_else(
10967                        || ErrorKind::MissingElement("simpleType".into()),
10968                    )?))
10969                }
10970                Self::ComplexType(mut values, deserializer) => {
10971                    if let Some(deserializer) = deserializer {
10972                        let value = deserializer.finish(reader)?;
10973                        Self::store_complex_type(&mut values, value)?;
10974                    }
10975                    Ok(super::ElementTypeContent::ComplexType(values.ok_or_else(
10976                        || ErrorKind::MissingElement("complexType".into()),
10977                    )?))
10978                }
10979                Self::Alternative(mut values, deserializer) => {
10980                    if let Some(deserializer) = deserializer {
10981                        let value = deserializer.finish(reader)?;
10982                        Self::store_alternative(&mut values, value)?;
10983                    }
10984                    Ok(super::ElementTypeContent::Alternative(values.ok_or_else(
10985                        || ErrorKind::MissingElement("alternative".into()),
10986                    )?))
10987                }
10988                Self::Unique(mut values, deserializer) => {
10989                    if let Some(deserializer) = deserializer {
10990                        let value = deserializer.finish(reader)?;
10991                        Self::store_unique(&mut values, value)?;
10992                    }
10993                    Ok(super::ElementTypeContent::Unique(values.ok_or_else(
10994                        || ErrorKind::MissingElement("unique".into()),
10995                    )?))
10996                }
10997                Self::Key(mut values, deserializer) => {
10998                    if let Some(deserializer) = deserializer {
10999                        let value = deserializer.finish(reader)?;
11000                        Self::store_key(&mut values, value)?;
11001                    }
11002                    Ok(super::ElementTypeContent::Key(
11003                        values.ok_or_else(|| ErrorKind::MissingElement("key".into()))?,
11004                    ))
11005                }
11006                Self::Keyref(mut values, deserializer) => {
11007                    if let Some(deserializer) = deserializer {
11008                        let value = deserializer.finish(reader)?;
11009                        Self::store_keyref(&mut values, value)?;
11010                    }
11011                    Ok(super::ElementTypeContent::Keyref(values.ok_or_else(
11012                        || ErrorKind::MissingElement("keyref".into()),
11013                    )?))
11014                }
11015                Self::Done__(data) => Ok(data),
11016                Self::Unknown__ => unreachable!(),
11017            }
11018        }
11019    }
11020    #[derive(Debug)]
11021    pub struct AttributeTypeDeserializer {
11022        id: Option<String>,
11023        name: Option<String>,
11024        ref_: Option<super::QName>,
11025        type_: Option<super::QName>,
11026        use_: super::AttributeUseType,
11027        default: Option<String>,
11028        fixed: Option<String>,
11029        form: Option<super::FormChoiceType>,
11030        target_namespace: Option<String>,
11031        inheritable: Option<bool>,
11032        annotation: Option<super::Annotation>,
11033        simple_type: Option<super::SimpleBaseType>,
11034        state: Box<AttributeTypeDeserializerState>,
11035    }
11036    #[derive(Debug)]
11037    enum AttributeTypeDeserializerState {
11038        Init__,
11039        Annotation(Option<<super::Annotation as WithDeserializer>::Deserializer>),
11040        SimpleType(Option<<super::SimpleBaseType as WithDeserializer>::Deserializer>),
11041        Done__,
11042        Unknown__,
11043    }
11044    impl AttributeTypeDeserializer {
11045        fn from_bytes_start<R>(reader: &R, bytes_start: &BytesStart<'_>) -> Result<Self, Error>
11046        where
11047            R: DeserializeReader,
11048        {
11049            let mut id: Option<String> = None;
11050            let mut name: Option<String> = None;
11051            let mut ref_: Option<super::QName> = None;
11052            let mut type_: Option<super::QName> = None;
11053            let mut use_: Option<super::AttributeUseType> = None;
11054            let mut default: Option<String> = None;
11055            let mut fixed: Option<String> = None;
11056            let mut form: Option<super::FormChoiceType> = None;
11057            let mut target_namespace: Option<String> = None;
11058            let mut inheritable: Option<bool> = None;
11059            for attrib in filter_xmlns_attributes(bytes_start) {
11060                let attrib = attrib?;
11061                if matches!(
11062                    reader.resolve_local_name(attrib.key, &super::NS_XS),
11063                    Some(b"id")
11064                ) {
11065                    reader.read_attrib(&mut id, b"id", &attrib.value)?;
11066                } else if matches!(
11067                    reader.resolve_local_name(attrib.key, &super::NS_XS),
11068                    Some(b"name")
11069                ) {
11070                    reader.read_attrib(&mut name, b"name", &attrib.value)?;
11071                } else if matches!(
11072                    reader.resolve_local_name(attrib.key, &super::NS_XS),
11073                    Some(b"ref")
11074                ) {
11075                    reader.read_attrib(&mut ref_, b"ref", &attrib.value)?;
11076                } else if matches!(
11077                    reader.resolve_local_name(attrib.key, &super::NS_XS),
11078                    Some(b"type")
11079                ) {
11080                    reader.read_attrib(&mut type_, b"type", &attrib.value)?;
11081                } else if matches!(
11082                    reader.resolve_local_name(attrib.key, &super::NS_XS),
11083                    Some(b"use")
11084                ) {
11085                    reader.read_attrib(&mut use_, b"use", &attrib.value)?;
11086                } else if matches!(
11087                    reader.resolve_local_name(attrib.key, &super::NS_XS),
11088                    Some(b"default")
11089                ) {
11090                    reader.read_attrib(&mut default, b"default", &attrib.value)?;
11091                } else if matches!(
11092                    reader.resolve_local_name(attrib.key, &super::NS_XS),
11093                    Some(b"fixed")
11094                ) {
11095                    reader.read_attrib(&mut fixed, b"fixed", &attrib.value)?;
11096                } else if matches!(
11097                    reader.resolve_local_name(attrib.key, &super::NS_XS),
11098                    Some(b"form")
11099                ) {
11100                    reader.read_attrib(&mut form, b"form", &attrib.value)?;
11101                } else if matches!(
11102                    reader.resolve_local_name(attrib.key, &super::NS_XS),
11103                    Some(b"targetNamespace")
11104                ) {
11105                    reader.read_attrib(&mut target_namespace, b"targetNamespace", &attrib.value)?;
11106                } else if matches!(
11107                    reader.resolve_local_name(attrib.key, &super::NS_XS),
11108                    Some(b"inheritable")
11109                ) {
11110                    reader.read_attrib(&mut inheritable, b"inheritable", &attrib.value)?;
11111                }
11112            }
11113            Ok(Self {
11114                id: id,
11115                name: name,
11116                ref_: ref_,
11117                type_: type_,
11118                use_: use_.unwrap_or_else(super::AttributeType::default_use_),
11119                default: default,
11120                fixed: fixed,
11121                form: form,
11122                target_namespace: target_namespace,
11123                inheritable: inheritable,
11124                annotation: None,
11125                simple_type: None,
11126                state: Box::new(AttributeTypeDeserializerState::Init__),
11127            })
11128        }
11129        fn finish_state<R>(
11130            &mut self,
11131            reader: &R,
11132            state: AttributeTypeDeserializerState,
11133        ) -> Result<(), Error>
11134        where
11135            R: DeserializeReader,
11136        {
11137            use AttributeTypeDeserializerState as S;
11138            match state {
11139                S::Annotation(Some(deserializer)) => {
11140                    self.store_annotation(deserializer.finish(reader)?)?
11141                }
11142                S::SimpleType(Some(deserializer)) => {
11143                    self.store_simple_type(deserializer.finish(reader)?)?
11144                }
11145                _ => (),
11146            }
11147            Ok(())
11148        }
11149        fn store_annotation(&mut self, value: super::Annotation) -> Result<(), Error> {
11150            if self.annotation.is_some() {
11151                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
11152                    b"annotation",
11153                )))?;
11154            }
11155            self.annotation = Some(value);
11156            Ok(())
11157        }
11158        fn store_simple_type(&mut self, value: super::SimpleBaseType) -> Result<(), Error> {
11159            if self.simple_type.is_some() {
11160                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
11161                    b"simpleType",
11162                )))?;
11163            }
11164            self.simple_type = Some(value);
11165            Ok(())
11166        }
11167        fn handle_annotation<'de, R>(
11168            &mut self,
11169            reader: &R,
11170            output: DeserializerOutput<'de, super::Annotation>,
11171            fallback: &mut Option<AttributeTypeDeserializerState>,
11172        ) -> Result<ElementHandlerOutput<'de>, Error>
11173        where
11174            R: DeserializeReader,
11175        {
11176            let DeserializerOutput {
11177                artifact,
11178                event,
11179                allow_any,
11180            } = output;
11181            if artifact.is_none() {
11182                fallback.get_or_insert(AttributeTypeDeserializerState::Annotation(None));
11183                *self.state = AttributeTypeDeserializerState::SimpleType(None);
11184                return Ok(ElementHandlerOutput::from_event(event, allow_any));
11185            }
11186            if let Some(fallback) = fallback.take() {
11187                self.finish_state(reader, fallback)?;
11188            }
11189            Ok(match artifact {
11190                DeserializerArtifact::None => unreachable!(),
11191                DeserializerArtifact::Data(data) => {
11192                    self.store_annotation(data)?;
11193                    *self.state = AttributeTypeDeserializerState::SimpleType(None);
11194                    ElementHandlerOutput::from_event(event, allow_any)
11195                }
11196                DeserializerArtifact::Deserializer(deserializer) => {
11197                    let ret = ElementHandlerOutput::from_event(event, allow_any);
11198                    match &ret {
11199                        ElementHandlerOutput::Continue { .. } => {
11200                            fallback.get_or_insert(AttributeTypeDeserializerState::Annotation(
11201                                Some(deserializer),
11202                            ));
11203                            *self.state = AttributeTypeDeserializerState::SimpleType(None);
11204                        }
11205                        ElementHandlerOutput::Break { .. } => {
11206                            *self.state =
11207                                AttributeTypeDeserializerState::Annotation(Some(deserializer));
11208                        }
11209                    }
11210                    ret
11211                }
11212            })
11213        }
11214        fn handle_simple_type<'de, R>(
11215            &mut self,
11216            reader: &R,
11217            output: DeserializerOutput<'de, super::SimpleBaseType>,
11218            fallback: &mut Option<AttributeTypeDeserializerState>,
11219        ) -> Result<ElementHandlerOutput<'de>, Error>
11220        where
11221            R: DeserializeReader,
11222        {
11223            let DeserializerOutput {
11224                artifact,
11225                event,
11226                allow_any,
11227            } = output;
11228            if artifact.is_none() {
11229                fallback.get_or_insert(AttributeTypeDeserializerState::SimpleType(None));
11230                *self.state = AttributeTypeDeserializerState::Done__;
11231                return Ok(ElementHandlerOutput::from_event(event, allow_any));
11232            }
11233            if let Some(fallback) = fallback.take() {
11234                self.finish_state(reader, fallback)?;
11235            }
11236            Ok(match artifact {
11237                DeserializerArtifact::None => unreachable!(),
11238                DeserializerArtifact::Data(data) => {
11239                    self.store_simple_type(data)?;
11240                    *self.state = AttributeTypeDeserializerState::Done__;
11241                    ElementHandlerOutput::from_event(event, allow_any)
11242                }
11243                DeserializerArtifact::Deserializer(deserializer) => {
11244                    let ret = ElementHandlerOutput::from_event(event, allow_any);
11245                    match &ret {
11246                        ElementHandlerOutput::Continue { .. } => {
11247                            fallback.get_or_insert(AttributeTypeDeserializerState::SimpleType(
11248                                Some(deserializer),
11249                            ));
11250                            *self.state = AttributeTypeDeserializerState::Done__;
11251                        }
11252                        ElementHandlerOutput::Break { .. } => {
11253                            *self.state =
11254                                AttributeTypeDeserializerState::SimpleType(Some(deserializer));
11255                        }
11256                    }
11257                    ret
11258                }
11259            })
11260        }
11261    }
11262    impl<'de> Deserializer<'de, super::AttributeType> for AttributeTypeDeserializer {
11263        fn init<R>(reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::AttributeType>
11264        where
11265            R: DeserializeReader,
11266        {
11267            reader.init_deserializer_from_start_event(event, Self::from_bytes_start)
11268        }
11269        fn next<R>(
11270            mut self,
11271            reader: &R,
11272            event: Event<'de>,
11273        ) -> DeserializerResult<'de, super::AttributeType>
11274        where
11275            R: DeserializeReader,
11276        {
11277            use AttributeTypeDeserializerState as S;
11278            let mut event = event;
11279            let mut fallback = None;
11280            let mut allow_any_element = false;
11281            let (event, allow_any) = loop {
11282                let state = replace(&mut *self.state, S::Unknown__);
11283                event = match (state, event) {
11284                    (S::Annotation(Some(deserializer)), event) => {
11285                        let output = deserializer.next(reader, event)?;
11286                        match self.handle_annotation(reader, output, &mut fallback)? {
11287                            ElementHandlerOutput::Continue { event, allow_any } => {
11288                                allow_any_element = allow_any_element || allow_any;
11289                                event
11290                            }
11291                            ElementHandlerOutput::Break { event, allow_any } => {
11292                                break (event, allow_any)
11293                            }
11294                        }
11295                    }
11296                    (S::SimpleType(Some(deserializer)), event) => {
11297                        let output = deserializer.next(reader, event)?;
11298                        match self.handle_simple_type(reader, output, &mut fallback)? {
11299                            ElementHandlerOutput::Continue { event, allow_any } => {
11300                                allow_any_element = allow_any_element || allow_any;
11301                                event
11302                            }
11303                            ElementHandlerOutput::Break { event, allow_any } => {
11304                                break (event, allow_any)
11305                            }
11306                        }
11307                    }
11308                    (_, Event::End(_)) => {
11309                        if let Some(fallback) = fallback.take() {
11310                            self.finish_state(reader, fallback)?;
11311                        }
11312                        return Ok(DeserializerOutput {
11313                            artifact: DeserializerArtifact::Data(self.finish(reader)?),
11314                            event: DeserializerEvent::None,
11315                            allow_any: false,
11316                        });
11317                    }
11318                    (S::Init__, event) => {
11319                        fallback.get_or_insert(S::Init__);
11320                        *self.state = AttributeTypeDeserializerState::Annotation(None);
11321                        event
11322                    }
11323                    (S::Annotation(None), event @ (Event::Start(_) | Event::Empty(_))) => {
11324                        if reader.check_start_tag_name(&event, Some(&super::NS_XS), b"annotation") {
11325                            let output =
11326                                <super::Annotation as WithDeserializer>::Deserializer::init(
11327                                    reader, event,
11328                                )?;
11329                            match self.handle_annotation(reader, output, &mut fallback)? {
11330                                ElementHandlerOutput::Continue { event, allow_any } => {
11331                                    allow_any_element = allow_any_element || allow_any;
11332                                    event
11333                                }
11334                                ElementHandlerOutput::Break { event, allow_any } => {
11335                                    break (event, allow_any)
11336                                }
11337                            }
11338                        } else {
11339                            *self.state = S::SimpleType(None);
11340                            allow_any_element = true;
11341                            fallback.get_or_insert(S::Annotation(None));
11342                            event
11343                        }
11344                    }
11345                    (S::SimpleType(None), event @ (Event::Start(_) | Event::Empty(_))) => {
11346                        if reader.check_start_tag_name(&event, Some(&super::NS_XS), b"simpleType") {
11347                            let output =
11348                                <super::SimpleBaseType as WithDeserializer>::Deserializer::init(
11349                                    reader, event,
11350                                )?;
11351                            match self.handle_simple_type(reader, output, &mut fallback)? {
11352                                ElementHandlerOutput::Continue { event, allow_any } => {
11353                                    allow_any_element = allow_any_element || allow_any;
11354                                    event
11355                                }
11356                                ElementHandlerOutput::Break { event, allow_any } => {
11357                                    break (event, allow_any)
11358                                }
11359                            }
11360                        } else {
11361                            *self.state = S::Done__;
11362                            allow_any_element = true;
11363                            fallback.get_or_insert(S::SimpleType(None));
11364                            event
11365                        }
11366                    }
11367                    (S::Done__, event) => {
11368                        fallback.get_or_insert(S::Done__);
11369                        break (DeserializerEvent::Continue(event), allow_any_element);
11370                    }
11371                    (S::Unknown__, _) => unreachable!(),
11372                    (state, event) => {
11373                        *self.state = state;
11374                        break (DeserializerEvent::Break(event), false);
11375                    }
11376                }
11377            };
11378            if let Some(fallback) = fallback {
11379                *self.state = fallback;
11380            }
11381            Ok(DeserializerOutput {
11382                artifact: DeserializerArtifact::Deserializer(self),
11383                event,
11384                allow_any,
11385            })
11386        }
11387        fn finish<R>(mut self, reader: &R) -> Result<super::AttributeType, Error>
11388        where
11389            R: DeserializeReader,
11390        {
11391            let state = replace(&mut *self.state, AttributeTypeDeserializerState::Unknown__);
11392            self.finish_state(reader, state)?;
11393            Ok(super::AttributeType {
11394                id: self.id,
11395                name: self.name,
11396                ref_: self.ref_,
11397                type_: self.type_,
11398                use_: self.use_,
11399                default: self.default,
11400                fixed: self.fixed,
11401                form: self.form,
11402                target_namespace: self.target_namespace,
11403                inheritable: self.inheritable,
11404                annotation: self.annotation,
11405                simple_type: self.simple_type,
11406            })
11407        }
11408    }
11409    #[derive(Debug)]
11410    pub struct NotationDeserializer {
11411        id: Option<String>,
11412        name: String,
11413        public: Option<String>,
11414        system: Option<String>,
11415        annotation: Option<super::Annotation>,
11416        state: Box<NotationDeserializerState>,
11417    }
11418    #[derive(Debug)]
11419    enum NotationDeserializerState {
11420        Init__,
11421        Annotation(Option<<super::Annotation as WithDeserializer>::Deserializer>),
11422        Done__,
11423        Unknown__,
11424    }
11425    impl NotationDeserializer {
11426        fn from_bytes_start<R>(reader: &R, bytes_start: &BytesStart<'_>) -> Result<Self, Error>
11427        where
11428            R: DeserializeReader,
11429        {
11430            let mut id: Option<String> = None;
11431            let mut name: Option<String> = None;
11432            let mut public: Option<String> = None;
11433            let mut system: Option<String> = None;
11434            for attrib in filter_xmlns_attributes(bytes_start) {
11435                let attrib = attrib?;
11436                if matches!(
11437                    reader.resolve_local_name(attrib.key, &super::NS_XS),
11438                    Some(b"id")
11439                ) {
11440                    reader.read_attrib(&mut id, b"id", &attrib.value)?;
11441                } else if matches!(
11442                    reader.resolve_local_name(attrib.key, &super::NS_XS),
11443                    Some(b"name")
11444                ) {
11445                    reader.read_attrib(&mut name, b"name", &attrib.value)?;
11446                } else if matches!(
11447                    reader.resolve_local_name(attrib.key, &super::NS_XS),
11448                    Some(b"public")
11449                ) {
11450                    reader.read_attrib(&mut public, b"public", &attrib.value)?;
11451                } else if matches!(
11452                    reader.resolve_local_name(attrib.key, &super::NS_XS),
11453                    Some(b"system")
11454                ) {
11455                    reader.read_attrib(&mut system, b"system", &attrib.value)?;
11456                }
11457            }
11458            Ok(Self {
11459                id: id,
11460                name: name
11461                    .ok_or_else(|| reader.map_error(ErrorKind::MissingAttribute("name".into())))?,
11462                public: public,
11463                system: system,
11464                annotation: None,
11465                state: Box::new(NotationDeserializerState::Init__),
11466            })
11467        }
11468        fn finish_state<R>(
11469            &mut self,
11470            reader: &R,
11471            state: NotationDeserializerState,
11472        ) -> Result<(), Error>
11473        where
11474            R: DeserializeReader,
11475        {
11476            use NotationDeserializerState as S;
11477            match state {
11478                S::Annotation(Some(deserializer)) => {
11479                    self.store_annotation(deserializer.finish(reader)?)?
11480                }
11481                _ => (),
11482            }
11483            Ok(())
11484        }
11485        fn store_annotation(&mut self, value: super::Annotation) -> Result<(), Error> {
11486            if self.annotation.is_some() {
11487                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
11488                    b"annotation",
11489                )))?;
11490            }
11491            self.annotation = Some(value);
11492            Ok(())
11493        }
11494        fn handle_annotation<'de, R>(
11495            &mut self,
11496            reader: &R,
11497            output: DeserializerOutput<'de, super::Annotation>,
11498            fallback: &mut Option<NotationDeserializerState>,
11499        ) -> Result<ElementHandlerOutput<'de>, Error>
11500        where
11501            R: DeserializeReader,
11502        {
11503            let DeserializerOutput {
11504                artifact,
11505                event,
11506                allow_any,
11507            } = output;
11508            if artifact.is_none() {
11509                fallback.get_or_insert(NotationDeserializerState::Annotation(None));
11510                *self.state = NotationDeserializerState::Done__;
11511                return Ok(ElementHandlerOutput::from_event(event, allow_any));
11512            }
11513            if let Some(fallback) = fallback.take() {
11514                self.finish_state(reader, fallback)?;
11515            }
11516            Ok(match artifact {
11517                DeserializerArtifact::None => unreachable!(),
11518                DeserializerArtifact::Data(data) => {
11519                    self.store_annotation(data)?;
11520                    *self.state = NotationDeserializerState::Done__;
11521                    ElementHandlerOutput::from_event(event, allow_any)
11522                }
11523                DeserializerArtifact::Deserializer(deserializer) => {
11524                    let ret = ElementHandlerOutput::from_event(event, allow_any);
11525                    match &ret {
11526                        ElementHandlerOutput::Continue { .. } => {
11527                            fallback.get_or_insert(NotationDeserializerState::Annotation(Some(
11528                                deserializer,
11529                            )));
11530                            *self.state = NotationDeserializerState::Done__;
11531                        }
11532                        ElementHandlerOutput::Break { .. } => {
11533                            *self.state = NotationDeserializerState::Annotation(Some(deserializer));
11534                        }
11535                    }
11536                    ret
11537                }
11538            })
11539        }
11540    }
11541    impl<'de> Deserializer<'de, super::Notation> for NotationDeserializer {
11542        fn init<R>(reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::Notation>
11543        where
11544            R: DeserializeReader,
11545        {
11546            reader.init_deserializer_from_start_event(event, Self::from_bytes_start)
11547        }
11548        fn next<R>(
11549            mut self,
11550            reader: &R,
11551            event: Event<'de>,
11552        ) -> DeserializerResult<'de, super::Notation>
11553        where
11554            R: DeserializeReader,
11555        {
11556            use NotationDeserializerState as S;
11557            let mut event = event;
11558            let mut fallback = None;
11559            let mut allow_any_element = false;
11560            let (event, allow_any) = loop {
11561                let state = replace(&mut *self.state, S::Unknown__);
11562                event = match (state, event) {
11563                    (S::Annotation(Some(deserializer)), event) => {
11564                        let output = deserializer.next(reader, event)?;
11565                        match self.handle_annotation(reader, output, &mut fallback)? {
11566                            ElementHandlerOutput::Continue { event, allow_any } => {
11567                                allow_any_element = allow_any_element || allow_any;
11568                                event
11569                            }
11570                            ElementHandlerOutput::Break { event, allow_any } => {
11571                                break (event, allow_any)
11572                            }
11573                        }
11574                    }
11575                    (_, Event::End(_)) => {
11576                        if let Some(fallback) = fallback.take() {
11577                            self.finish_state(reader, fallback)?;
11578                        }
11579                        return Ok(DeserializerOutput {
11580                            artifact: DeserializerArtifact::Data(self.finish(reader)?),
11581                            event: DeserializerEvent::None,
11582                            allow_any: false,
11583                        });
11584                    }
11585                    (S::Init__, event) => {
11586                        fallback.get_or_insert(S::Init__);
11587                        *self.state = NotationDeserializerState::Annotation(None);
11588                        event
11589                    }
11590                    (S::Annotation(None), event @ (Event::Start(_) | Event::Empty(_))) => {
11591                        if reader.check_start_tag_name(&event, Some(&super::NS_XS), b"annotation") {
11592                            let output =
11593                                <super::Annotation as WithDeserializer>::Deserializer::init(
11594                                    reader, event,
11595                                )?;
11596                            match self.handle_annotation(reader, output, &mut fallback)? {
11597                                ElementHandlerOutput::Continue { event, allow_any } => {
11598                                    allow_any_element = allow_any_element || allow_any;
11599                                    event
11600                                }
11601                                ElementHandlerOutput::Break { event, allow_any } => {
11602                                    break (event, allow_any)
11603                                }
11604                            }
11605                        } else {
11606                            *self.state = S::Done__;
11607                            allow_any_element = true;
11608                            fallback.get_or_insert(S::Annotation(None));
11609                            event
11610                        }
11611                    }
11612                    (S::Done__, event) => {
11613                        fallback.get_or_insert(S::Done__);
11614                        break (DeserializerEvent::Continue(event), allow_any_element);
11615                    }
11616                    (S::Unknown__, _) => unreachable!(),
11617                    (state, event) => {
11618                        *self.state = state;
11619                        break (DeserializerEvent::Break(event), false);
11620                    }
11621                }
11622            };
11623            if let Some(fallback) = fallback {
11624                *self.state = fallback;
11625            }
11626            Ok(DeserializerOutput {
11627                artifact: DeserializerArtifact::Deserializer(self),
11628                event,
11629                allow_any,
11630            })
11631        }
11632        fn finish<R>(mut self, reader: &R) -> Result<super::Notation, Error>
11633        where
11634            R: DeserializeReader,
11635        {
11636            let state = replace(&mut *self.state, NotationDeserializerState::Unknown__);
11637            self.finish_state(reader, state)?;
11638            Ok(super::Notation {
11639                id: self.id,
11640                name: self.name,
11641                public: self.public,
11642                system: self.system,
11643                annotation: self.annotation,
11644            })
11645        }
11646    }
11647    #[derive(Debug)]
11648    pub struct AppinfoDeserializer {
11649        source: Option<String>,
11650        state: Box<AppinfoDeserializerState>,
11651    }
11652    #[derive(Debug)]
11653    enum AppinfoDeserializerState {
11654        Init__,
11655        Unknown__,
11656    }
11657    impl AppinfoDeserializer {
11658        fn from_bytes_start<R>(reader: &R, bytes_start: &BytesStart<'_>) -> Result<Self, Error>
11659        where
11660            R: DeserializeReader,
11661        {
11662            let mut source: Option<String> = None;
11663            for attrib in filter_xmlns_attributes(bytes_start) {
11664                let attrib = attrib?;
11665                if matches!(
11666                    reader.resolve_local_name(attrib.key, &super::NS_XS),
11667                    Some(b"source")
11668                ) {
11669                    reader.read_attrib(&mut source, b"source", &attrib.value)?;
11670                }
11671            }
11672            Ok(Self {
11673                source: source,
11674                state: Box::new(AppinfoDeserializerState::Init__),
11675            })
11676        }
11677        fn finish_state<R>(
11678            &mut self,
11679            reader: &R,
11680            state: AppinfoDeserializerState,
11681        ) -> Result<(), Error>
11682        where
11683            R: DeserializeReader,
11684        {
11685            Ok(())
11686        }
11687    }
11688    impl<'de> Deserializer<'de, super::Appinfo> for AppinfoDeserializer {
11689        fn init<R>(reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::Appinfo>
11690        where
11691            R: DeserializeReader,
11692        {
11693            reader.init_deserializer_from_start_event(event, Self::from_bytes_start)
11694        }
11695        fn next<R>(
11696            mut self,
11697            reader: &R,
11698            event: Event<'de>,
11699        ) -> DeserializerResult<'de, super::Appinfo>
11700        where
11701            R: DeserializeReader,
11702        {
11703            if let Event::End(_) = &event {
11704                Ok(DeserializerOutput {
11705                    artifact: DeserializerArtifact::Data(self.finish(reader)?),
11706                    event: DeserializerEvent::None,
11707                    allow_any: false,
11708                })
11709            } else {
11710                Ok(DeserializerOutput {
11711                    artifact: DeserializerArtifact::Deserializer(self),
11712                    event: DeserializerEvent::Break(event),
11713                    allow_any: true,
11714                })
11715            }
11716        }
11717        fn finish<R>(mut self, reader: &R) -> Result<super::Appinfo, Error>
11718        where
11719            R: DeserializeReader,
11720        {
11721            let state = replace(&mut *self.state, AppinfoDeserializerState::Unknown__);
11722            self.finish_state(reader, state)?;
11723            Ok(super::Appinfo {
11724                source: self.source,
11725            })
11726        }
11727    }
11728    #[derive(Debug)]
11729    pub struct DocumentationDeserializer {
11730        source: Option<String>,
11731        lang: Option<String>,
11732        state: Box<DocumentationDeserializerState>,
11733    }
11734    #[derive(Debug)]
11735    enum DocumentationDeserializerState {
11736        Init__,
11737        Unknown__,
11738    }
11739    impl DocumentationDeserializer {
11740        fn from_bytes_start<R>(reader: &R, bytes_start: &BytesStart<'_>) -> Result<Self, Error>
11741        where
11742            R: DeserializeReader,
11743        {
11744            let mut source: Option<String> = None;
11745            let mut lang: Option<String> = None;
11746            for attrib in filter_xmlns_attributes(bytes_start) {
11747                let attrib = attrib?;
11748                if matches!(
11749                    reader.resolve_local_name(attrib.key, &super::NS_XS),
11750                    Some(b"source")
11751                ) {
11752                    reader.read_attrib(&mut source, b"source", &attrib.value)?;
11753                } else if matches!(
11754                    reader.resolve_local_name(attrib.key, &super::NS_XML),
11755                    Some(b"lang")
11756                ) {
11757                    reader.read_attrib(&mut lang, b"lang", &attrib.value)?;
11758                }
11759            }
11760            Ok(Self {
11761                source: source,
11762                lang: lang,
11763                state: Box::new(DocumentationDeserializerState::Init__),
11764            })
11765        }
11766        fn finish_state<R>(
11767            &mut self,
11768            reader: &R,
11769            state: DocumentationDeserializerState,
11770        ) -> Result<(), Error>
11771        where
11772            R: DeserializeReader,
11773        {
11774            Ok(())
11775        }
11776    }
11777    impl<'de> Deserializer<'de, super::Documentation> for DocumentationDeserializer {
11778        fn init<R>(reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::Documentation>
11779        where
11780            R: DeserializeReader,
11781        {
11782            reader.init_deserializer_from_start_event(event, Self::from_bytes_start)
11783        }
11784        fn next<R>(
11785            mut self,
11786            reader: &R,
11787            event: Event<'de>,
11788        ) -> DeserializerResult<'de, super::Documentation>
11789        where
11790            R: DeserializeReader,
11791        {
11792            if let Event::End(_) = &event {
11793                Ok(DeserializerOutput {
11794                    artifact: DeserializerArtifact::Data(self.finish(reader)?),
11795                    event: DeserializerEvent::None,
11796                    allow_any: false,
11797                })
11798            } else {
11799                Ok(DeserializerOutput {
11800                    artifact: DeserializerArtifact::Deserializer(self),
11801                    event: DeserializerEvent::Break(event),
11802                    allow_any: true,
11803                })
11804            }
11805        }
11806        fn finish<R>(mut self, reader: &R) -> Result<super::Documentation, Error>
11807        where
11808            R: DeserializeReader,
11809        {
11810            let state = replace(&mut *self.state, DocumentationDeserializerState::Unknown__);
11811            self.finish_state(reader, state)?;
11812            Ok(super::Documentation {
11813                source: self.source,
11814                lang: self.lang,
11815            })
11816        }
11817    }
11818    #[derive(Debug)]
11819    pub struct WildcardTypeDeserializer {
11820        id: Option<String>,
11821        namespace: Option<super::NamespaceListType>,
11822        not_namespace: Option<super::BasicNamespaceListType>,
11823        process_contents: super::ProcessContentsType,
11824        annotation: Option<super::Annotation>,
11825        state: Box<WildcardTypeDeserializerState>,
11826    }
11827    #[derive(Debug)]
11828    enum WildcardTypeDeserializerState {
11829        Init__,
11830        Annotation(Option<<super::Annotation as WithDeserializer>::Deserializer>),
11831        Done__,
11832        Unknown__,
11833    }
11834    impl WildcardTypeDeserializer {
11835        fn from_bytes_start<R>(reader: &R, bytes_start: &BytesStart<'_>) -> Result<Self, Error>
11836        where
11837            R: DeserializeReader,
11838        {
11839            let mut id: Option<String> = None;
11840            let mut namespace: Option<super::NamespaceListType> = None;
11841            let mut not_namespace: Option<super::BasicNamespaceListType> = None;
11842            let mut process_contents: Option<super::ProcessContentsType> = None;
11843            for attrib in filter_xmlns_attributes(bytes_start) {
11844                let attrib = attrib?;
11845                if matches!(
11846                    reader.resolve_local_name(attrib.key, &super::NS_XS),
11847                    Some(b"id")
11848                ) {
11849                    reader.read_attrib(&mut id, b"id", &attrib.value)?;
11850                } else if matches!(
11851                    reader.resolve_local_name(attrib.key, &super::NS_XS),
11852                    Some(b"namespace")
11853                ) {
11854                    reader.read_attrib(&mut namespace, b"namespace", &attrib.value)?;
11855                } else if matches!(
11856                    reader.resolve_local_name(attrib.key, &super::NS_XS),
11857                    Some(b"notNamespace")
11858                ) {
11859                    reader.read_attrib(&mut not_namespace, b"notNamespace", &attrib.value)?;
11860                } else if matches!(
11861                    reader.resolve_local_name(attrib.key, &super::NS_XS),
11862                    Some(b"processContents")
11863                ) {
11864                    reader.read_attrib(&mut process_contents, b"processContents", &attrib.value)?;
11865                }
11866            }
11867            Ok(Self {
11868                id: id,
11869                namespace: namespace,
11870                not_namespace: not_namespace,
11871                process_contents: process_contents
11872                    .unwrap_or_else(super::WildcardType::default_process_contents),
11873                annotation: None,
11874                state: Box::new(WildcardTypeDeserializerState::Init__),
11875            })
11876        }
11877        fn finish_state<R>(
11878            &mut self,
11879            reader: &R,
11880            state: WildcardTypeDeserializerState,
11881        ) -> Result<(), Error>
11882        where
11883            R: DeserializeReader,
11884        {
11885            use WildcardTypeDeserializerState as S;
11886            match state {
11887                S::Annotation(Some(deserializer)) => {
11888                    self.store_annotation(deserializer.finish(reader)?)?
11889                }
11890                _ => (),
11891            }
11892            Ok(())
11893        }
11894        fn store_annotation(&mut self, value: super::Annotation) -> Result<(), Error> {
11895            if self.annotation.is_some() {
11896                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
11897                    b"annotation",
11898                )))?;
11899            }
11900            self.annotation = Some(value);
11901            Ok(())
11902        }
11903        fn handle_annotation<'de, R>(
11904            &mut self,
11905            reader: &R,
11906            output: DeserializerOutput<'de, super::Annotation>,
11907            fallback: &mut Option<WildcardTypeDeserializerState>,
11908        ) -> Result<ElementHandlerOutput<'de>, Error>
11909        where
11910            R: DeserializeReader,
11911        {
11912            let DeserializerOutput {
11913                artifact,
11914                event,
11915                allow_any,
11916            } = output;
11917            if artifact.is_none() {
11918                fallback.get_or_insert(WildcardTypeDeserializerState::Annotation(None));
11919                *self.state = WildcardTypeDeserializerState::Done__;
11920                return Ok(ElementHandlerOutput::from_event(event, allow_any));
11921            }
11922            if let Some(fallback) = fallback.take() {
11923                self.finish_state(reader, fallback)?;
11924            }
11925            Ok(match artifact {
11926                DeserializerArtifact::None => unreachable!(),
11927                DeserializerArtifact::Data(data) => {
11928                    self.store_annotation(data)?;
11929                    *self.state = WildcardTypeDeserializerState::Done__;
11930                    ElementHandlerOutput::from_event(event, allow_any)
11931                }
11932                DeserializerArtifact::Deserializer(deserializer) => {
11933                    let ret = ElementHandlerOutput::from_event(event, allow_any);
11934                    match &ret {
11935                        ElementHandlerOutput::Continue { .. } => {
11936                            fallback.get_or_insert(WildcardTypeDeserializerState::Annotation(
11937                                Some(deserializer),
11938                            ));
11939                            *self.state = WildcardTypeDeserializerState::Done__;
11940                        }
11941                        ElementHandlerOutput::Break { .. } => {
11942                            *self.state =
11943                                WildcardTypeDeserializerState::Annotation(Some(deserializer));
11944                        }
11945                    }
11946                    ret
11947                }
11948            })
11949        }
11950    }
11951    impl<'de> Deserializer<'de, super::WildcardType> for WildcardTypeDeserializer {
11952        fn init<R>(reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::WildcardType>
11953        where
11954            R: DeserializeReader,
11955        {
11956            reader.init_deserializer_from_start_event(event, Self::from_bytes_start)
11957        }
11958        fn next<R>(
11959            mut self,
11960            reader: &R,
11961            event: Event<'de>,
11962        ) -> DeserializerResult<'de, super::WildcardType>
11963        where
11964            R: DeserializeReader,
11965        {
11966            use WildcardTypeDeserializerState as S;
11967            let mut event = event;
11968            let mut fallback = None;
11969            let mut allow_any_element = false;
11970            let (event, allow_any) = loop {
11971                let state = replace(&mut *self.state, S::Unknown__);
11972                event = match (state, event) {
11973                    (S::Annotation(Some(deserializer)), event) => {
11974                        let output = deserializer.next(reader, event)?;
11975                        match self.handle_annotation(reader, output, &mut fallback)? {
11976                            ElementHandlerOutput::Continue { event, allow_any } => {
11977                                allow_any_element = allow_any_element || allow_any;
11978                                event
11979                            }
11980                            ElementHandlerOutput::Break { event, allow_any } => {
11981                                break (event, allow_any)
11982                            }
11983                        }
11984                    }
11985                    (_, Event::End(_)) => {
11986                        if let Some(fallback) = fallback.take() {
11987                            self.finish_state(reader, fallback)?;
11988                        }
11989                        return Ok(DeserializerOutput {
11990                            artifact: DeserializerArtifact::Data(self.finish(reader)?),
11991                            event: DeserializerEvent::None,
11992                            allow_any: false,
11993                        });
11994                    }
11995                    (S::Init__, event) => {
11996                        fallback.get_or_insert(S::Init__);
11997                        *self.state = WildcardTypeDeserializerState::Annotation(None);
11998                        event
11999                    }
12000                    (S::Annotation(None), event @ (Event::Start(_) | Event::Empty(_))) => {
12001                        if reader.check_start_tag_name(&event, Some(&super::NS_XS), b"annotation") {
12002                            let output =
12003                                <super::Annotation as WithDeserializer>::Deserializer::init(
12004                                    reader, event,
12005                                )?;
12006                            match self.handle_annotation(reader, output, &mut fallback)? {
12007                                ElementHandlerOutput::Continue { event, allow_any } => {
12008                                    allow_any_element = allow_any_element || allow_any;
12009                                    event
12010                                }
12011                                ElementHandlerOutput::Break { event, allow_any } => {
12012                                    break (event, allow_any)
12013                                }
12014                            }
12015                        } else {
12016                            *self.state = S::Done__;
12017                            allow_any_element = true;
12018                            fallback.get_or_insert(S::Annotation(None));
12019                            event
12020                        }
12021                    }
12022                    (S::Done__, event) => {
12023                        fallback.get_or_insert(S::Done__);
12024                        break (DeserializerEvent::Continue(event), allow_any_element);
12025                    }
12026                    (S::Unknown__, _) => unreachable!(),
12027                    (state, event) => {
12028                        *self.state = state;
12029                        break (DeserializerEvent::Break(event), false);
12030                    }
12031                }
12032            };
12033            if let Some(fallback) = fallback {
12034                *self.state = fallback;
12035            }
12036            Ok(DeserializerOutput {
12037                artifact: DeserializerArtifact::Deserializer(self),
12038                event,
12039                allow_any,
12040            })
12041        }
12042        fn finish<R>(mut self, reader: &R) -> Result<super::WildcardType, Error>
12043        where
12044            R: DeserializeReader,
12045        {
12046            let state = replace(&mut *self.state, WildcardTypeDeserializerState::Unknown__);
12047            self.finish_state(reader, state)?;
12048            Ok(super::WildcardType {
12049                id: self.id,
12050                namespace: self.namespace,
12051                not_namespace: self.not_namespace,
12052                process_contents: self.process_contents,
12053                annotation: self.annotation,
12054            })
12055        }
12056    }
12057    #[derive(Debug)]
12058    pub struct RestrictionDeserializer {
12059        id: Option<String>,
12060        base: Option<super::QName>,
12061        content: Vec<super::RestrictionContent>,
12062        state: Box<RestrictionDeserializerState>,
12063    }
12064    #[derive(Debug)]
12065    enum RestrictionDeserializerState {
12066        Init__,
12067        Next__,
12068        Content__(<super::RestrictionContent as WithDeserializer>::Deserializer),
12069        Unknown__,
12070    }
12071    impl RestrictionDeserializer {
12072        fn from_bytes_start<R>(reader: &R, bytes_start: &BytesStart<'_>) -> Result<Self, Error>
12073        where
12074            R: DeserializeReader,
12075        {
12076            let mut id: Option<String> = None;
12077            let mut base: Option<super::QName> = None;
12078            for attrib in filter_xmlns_attributes(bytes_start) {
12079                let attrib = attrib?;
12080                if matches!(
12081                    reader.resolve_local_name(attrib.key, &super::NS_XS),
12082                    Some(b"id")
12083                ) {
12084                    reader.read_attrib(&mut id, b"id", &attrib.value)?;
12085                } else if matches!(
12086                    reader.resolve_local_name(attrib.key, &super::NS_XS),
12087                    Some(b"base")
12088                ) {
12089                    reader.read_attrib(&mut base, b"base", &attrib.value)?;
12090                }
12091            }
12092            Ok(Self {
12093                id: id,
12094                base: base,
12095                content: Vec::new(),
12096                state: Box::new(RestrictionDeserializerState::Init__),
12097            })
12098        }
12099        fn finish_state<R>(
12100            &mut self,
12101            reader: &R,
12102            state: RestrictionDeserializerState,
12103        ) -> Result<(), Error>
12104        where
12105            R: DeserializeReader,
12106        {
12107            if let RestrictionDeserializerState::Content__(deserializer) = state {
12108                self.store_content(deserializer.finish(reader)?)?;
12109            }
12110            Ok(())
12111        }
12112        fn store_content(&mut self, value: super::RestrictionContent) -> Result<(), Error> {
12113            self.content.push(value);
12114            Ok(())
12115        }
12116        fn handle_content<'de, R>(
12117            &mut self,
12118            reader: &R,
12119            output: DeserializerOutput<'de, super::RestrictionContent>,
12120            fallback: &mut Option<RestrictionDeserializerState>,
12121        ) -> Result<ElementHandlerOutput<'de>, Error>
12122        where
12123            R: DeserializeReader,
12124        {
12125            let DeserializerOutput {
12126                artifact,
12127                event,
12128                allow_any,
12129            } = output;
12130            if artifact.is_none() {
12131                *self.state = fallback
12132                    .take()
12133                    .unwrap_or(RestrictionDeserializerState::Next__);
12134                return Ok(ElementHandlerOutput::break_(event, allow_any));
12135            }
12136            if let Some(fallback) = fallback.take() {
12137                self.finish_state(reader, fallback)?;
12138            }
12139            Ok(match artifact {
12140                DeserializerArtifact::None => unreachable!(),
12141                DeserializerArtifact::Data(data) => {
12142                    self.store_content(data)?;
12143                    *self.state = RestrictionDeserializerState::Next__;
12144                    ElementHandlerOutput::from_event(event, allow_any)
12145                }
12146                DeserializerArtifact::Deserializer(deserializer) => {
12147                    let ret = ElementHandlerOutput::from_event(event, allow_any);
12148                    match &ret {
12149                        ElementHandlerOutput::Continue { .. } => {
12150                            fallback.get_or_insert(RestrictionDeserializerState::Content__(
12151                                deserializer,
12152                            ));
12153                            *self.state = RestrictionDeserializerState::Next__;
12154                        }
12155                        ElementHandlerOutput::Break { .. } => {
12156                            *self.state = RestrictionDeserializerState::Content__(deserializer);
12157                        }
12158                    }
12159                    ret
12160                }
12161            })
12162        }
12163    }
12164    impl<'de> Deserializer<'de, super::Restriction> for RestrictionDeserializer {
12165        fn init<R>(reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::Restriction>
12166        where
12167            R: DeserializeReader,
12168        {
12169            reader.init_deserializer_from_start_event(event, Self::from_bytes_start)
12170        }
12171        fn next<R>(
12172            mut self,
12173            reader: &R,
12174            event: Event<'de>,
12175        ) -> DeserializerResult<'de, super::Restriction>
12176        where
12177            R: DeserializeReader,
12178        {
12179            use RestrictionDeserializerState as S;
12180            let mut event = event;
12181            let mut fallback = None;
12182            let (event, allow_any) = loop {
12183                let state = replace(&mut *self.state, S::Unknown__);
12184                event = match (state, event) {
12185                    (S::Content__(deserializer), event) => {
12186                        let output = deserializer.next(reader, event)?;
12187                        match self.handle_content(reader, output, &mut fallback)? {
12188                            ElementHandlerOutput::Break { event, allow_any } => {
12189                                break (event, allow_any)
12190                            }
12191                            ElementHandlerOutput::Continue { event, .. } => event,
12192                        }
12193                    }
12194                    (_, Event::End(_)) => {
12195                        return Ok(DeserializerOutput {
12196                            artifact: DeserializerArtifact::Data(self.finish(reader)?),
12197                            event: DeserializerEvent::None,
12198                            allow_any: false,
12199                        });
12200                    }
12201                    (old_state @ (S::Init__ | S::Next__), event) => {
12202                        let output =
12203                            <super::RestrictionContent as WithDeserializer>::Deserializer::init(
12204                                reader, event,
12205                            )?;
12206                        match self.handle_content(reader, output, &mut fallback)? {
12207                            ElementHandlerOutput::Break { event, allow_any } => {
12208                                if matches!(&*self.state, S::Unknown__) {
12209                                    *self.state = old_state;
12210                                }
12211                                break (event, allow_any);
12212                            }
12213                            ElementHandlerOutput::Continue { event, .. } => event,
12214                        }
12215                    }
12216                    (S::Unknown__, _) => unreachable!(),
12217                }
12218            };
12219            Ok(DeserializerOutput {
12220                artifact: DeserializerArtifact::Deserializer(self),
12221                event,
12222                allow_any,
12223            })
12224        }
12225        fn finish<R>(mut self, reader: &R) -> Result<super::Restriction, Error>
12226        where
12227            R: DeserializeReader,
12228        {
12229            let state = replace(&mut *self.state, RestrictionDeserializerState::Unknown__);
12230            self.finish_state(reader, state)?;
12231            Ok(super::Restriction {
12232                id: self.id,
12233                base: self.base,
12234                content: self.content,
12235            })
12236        }
12237    }
12238    #[derive(Debug)]
12239    pub enum RestrictionContentDeserializer {
12240        Init__,
12241        Annotation(
12242            Option<super::Annotation>,
12243            Option<<super::Annotation as WithDeserializer>::Deserializer>,
12244        ),
12245        SimpleType(
12246            Option<super::SimpleBaseType>,
12247            Option<<super::SimpleBaseType as WithDeserializer>::Deserializer>,
12248        ),
12249        Facet(
12250            Option<super::Facet>,
12251            Option<<super::Facet as WithDeserializer>::Deserializer>,
12252        ),
12253        Done__(super::RestrictionContent),
12254        Unknown__,
12255    }
12256    impl RestrictionContentDeserializer {
12257        fn find_suitable<'de, R>(
12258            &mut self,
12259            reader: &R,
12260            event: Event<'de>,
12261            fallback: &mut Option<RestrictionContentDeserializer>,
12262        ) -> Result<ElementHandlerOutput<'de>, Error>
12263        where
12264            R: DeserializeReader,
12265        {
12266            let (Event::Start(x) | Event::Empty(x)) = &event else {
12267                *self = Self::Init__;
12268                return Ok(ElementHandlerOutput::return_to_parent(event, true));
12269            };
12270            if matches!(
12271                reader.resolve_local_name(x.name(), &super::NS_XS),
12272                Some(b"annotation")
12273            ) {
12274                let output =
12275                    <super::Annotation as WithDeserializer>::Deserializer::init(reader, event)?;
12276                return self.handle_annotation(reader, Default::default(), output, &mut *fallback);
12277            }
12278            if matches!(
12279                reader.resolve_local_name(x.name(), &super::NS_XS),
12280                Some(b"simpleType")
12281            ) {
12282                let output =
12283                    <super::SimpleBaseType as WithDeserializer>::Deserializer::init(reader, event)?;
12284                return self.handle_simple_type(reader, Default::default(), output, &mut *fallback);
12285            }
12286            let event = {
12287                let output = <super::Facet as WithDeserializer>::Deserializer::init(reader, event)?;
12288                match self.handle_facet(reader, Default::default(), output, &mut *fallback)? {
12289                    ElementHandlerOutput::Continue { event, .. } => event,
12290                    output => {
12291                        return Ok(output);
12292                    }
12293                }
12294            };
12295            *self = Self::Init__;
12296            Ok(ElementHandlerOutput::return_to_parent(event, true))
12297        }
12298        fn store_annotation(
12299            values: &mut Option<super::Annotation>,
12300            value: super::Annotation,
12301        ) -> Result<(), Error> {
12302            if values.is_some() {
12303                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
12304                    b"annotation",
12305                )))?;
12306            }
12307            *values = Some(value);
12308            Ok(())
12309        }
12310        fn store_simple_type(
12311            values: &mut Option<super::SimpleBaseType>,
12312            value: super::SimpleBaseType,
12313        ) -> Result<(), Error> {
12314            if values.is_some() {
12315                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
12316                    b"simpleType",
12317                )))?;
12318            }
12319            *values = Some(value);
12320            Ok(())
12321        }
12322        fn store_facet(
12323            values: &mut Option<super::Facet>,
12324            value: super::Facet,
12325        ) -> Result<(), Error> {
12326            if values.is_some() {
12327                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
12328                    b"facet",
12329                )))?;
12330            }
12331            *values = Some(value);
12332            Ok(())
12333        }
12334        fn handle_annotation<'de, R>(
12335            &mut self,
12336            reader: &R,
12337            mut values: Option<super::Annotation>,
12338            output: DeserializerOutput<'de, super::Annotation>,
12339            fallback: &mut Option<Self>,
12340        ) -> Result<ElementHandlerOutput<'de>, Error>
12341        where
12342            R: DeserializeReader,
12343        {
12344            let DeserializerOutput {
12345                artifact,
12346                event,
12347                allow_any,
12348            } = output;
12349            if artifact.is_none() {
12350                *self = match fallback.take() {
12351                    None => Self::Init__,
12352                    Some(Self::Annotation(_, Some(deserializer))) => {
12353                        Self::Annotation(values, Some(deserializer))
12354                    }
12355                    _ => unreachable!(),
12356                };
12357                return Ok(ElementHandlerOutput::break_(event, allow_any));
12358            }
12359            match fallback.take() {
12360                None => (),
12361                Some(Self::Annotation(_, Some(deserializer))) => {
12362                    let data = deserializer.finish(reader)?;
12363                    Self::store_annotation(&mut values, data)?;
12364                }
12365                Some(_) => unreachable!(),
12366            }
12367            Ok(match artifact {
12368                DeserializerArtifact::None => unreachable!(),
12369                DeserializerArtifact::Data(data) => {
12370                    Self::store_annotation(&mut values, data)?;
12371                    let data = Self::Annotation(values, None).finish(reader)?;
12372                    *self = Self::Done__(data);
12373                    ElementHandlerOutput::Break { event, allow_any }
12374                }
12375                DeserializerArtifact::Deserializer(deserializer) => {
12376                    *self = Self::Annotation(values, Some(deserializer));
12377                    ElementHandlerOutput::from_event_end(event, allow_any)
12378                }
12379            })
12380        }
12381        fn handle_simple_type<'de, R>(
12382            &mut self,
12383            reader: &R,
12384            mut values: Option<super::SimpleBaseType>,
12385            output: DeserializerOutput<'de, super::SimpleBaseType>,
12386            fallback: &mut Option<Self>,
12387        ) -> Result<ElementHandlerOutput<'de>, Error>
12388        where
12389            R: DeserializeReader,
12390        {
12391            let DeserializerOutput {
12392                artifact,
12393                event,
12394                allow_any,
12395            } = output;
12396            if artifact.is_none() {
12397                *self = match fallback.take() {
12398                    None => Self::Init__,
12399                    Some(Self::SimpleType(_, Some(deserializer))) => {
12400                        Self::SimpleType(values, Some(deserializer))
12401                    }
12402                    _ => unreachable!(),
12403                };
12404                return Ok(ElementHandlerOutput::break_(event, allow_any));
12405            }
12406            match fallback.take() {
12407                None => (),
12408                Some(Self::SimpleType(_, Some(deserializer))) => {
12409                    let data = deserializer.finish(reader)?;
12410                    Self::store_simple_type(&mut values, data)?;
12411                }
12412                Some(_) => unreachable!(),
12413            }
12414            Ok(match artifact {
12415                DeserializerArtifact::None => unreachable!(),
12416                DeserializerArtifact::Data(data) => {
12417                    Self::store_simple_type(&mut values, data)?;
12418                    let data = Self::SimpleType(values, None).finish(reader)?;
12419                    *self = Self::Done__(data);
12420                    ElementHandlerOutput::Break { event, allow_any }
12421                }
12422                DeserializerArtifact::Deserializer(deserializer) => {
12423                    *self = Self::SimpleType(values, Some(deserializer));
12424                    ElementHandlerOutput::from_event_end(event, allow_any)
12425                }
12426            })
12427        }
12428        fn handle_facet<'de, R>(
12429            &mut self,
12430            reader: &R,
12431            mut values: Option<super::Facet>,
12432            output: DeserializerOutput<'de, super::Facet>,
12433            fallback: &mut Option<Self>,
12434        ) -> Result<ElementHandlerOutput<'de>, Error>
12435        where
12436            R: DeserializeReader,
12437        {
12438            let DeserializerOutput {
12439                artifact,
12440                event,
12441                allow_any,
12442            } = output;
12443            if artifact.is_none() {
12444                *self = match fallback.take() {
12445                    None => Self::Init__,
12446                    Some(Self::Facet(_, Some(deserializer))) => {
12447                        Self::Facet(values, Some(deserializer))
12448                    }
12449                    _ => unreachable!(),
12450                };
12451                return Ok(ElementHandlerOutput::break_(event, allow_any));
12452            }
12453            match fallback.take() {
12454                None => (),
12455                Some(Self::Facet(_, Some(deserializer))) => {
12456                    let data = deserializer.finish(reader)?;
12457                    Self::store_facet(&mut values, data)?;
12458                }
12459                Some(_) => unreachable!(),
12460            }
12461            Ok(match artifact {
12462                DeserializerArtifact::None => unreachable!(),
12463                DeserializerArtifact::Data(data) => {
12464                    Self::store_facet(&mut values, data)?;
12465                    let data = Self::Facet(values, None).finish(reader)?;
12466                    *self = Self::Done__(data);
12467                    ElementHandlerOutput::Break { event, allow_any }
12468                }
12469                DeserializerArtifact::Deserializer(deserializer) => {
12470                    *self = Self::Facet(values, Some(deserializer));
12471                    ElementHandlerOutput::from_event_end(event, allow_any)
12472                }
12473            })
12474        }
12475    }
12476    impl<'de> Deserializer<'de, super::RestrictionContent> for RestrictionContentDeserializer {
12477        fn init<R>(
12478            reader: &R,
12479            event: Event<'de>,
12480        ) -> DeserializerResult<'de, super::RestrictionContent>
12481        where
12482            R: DeserializeReader,
12483        {
12484            let deserializer = Self::Init__;
12485            let mut output = deserializer.next(reader, event)?;
12486            output.artifact = match output.artifact {
12487                DeserializerArtifact::Deserializer(Self::Init__) => DeserializerArtifact::None,
12488                artifact => artifact,
12489            };
12490            Ok(output)
12491        }
12492        fn next<R>(
12493            mut self,
12494            reader: &R,
12495            event: Event<'de>,
12496        ) -> DeserializerResult<'de, super::RestrictionContent>
12497        where
12498            R: DeserializeReader,
12499        {
12500            let mut event = event;
12501            let mut fallback = None;
12502            let (event, allow_any) = loop {
12503                let state = replace(&mut self, Self::Unknown__);
12504                event = match (state, event) {
12505                    (Self::Annotation(values, Some(deserializer)), event) => {
12506                        let output = deserializer.next(reader, event)?;
12507                        match self.handle_annotation(reader, values, output, &mut fallback)? {
12508                            ElementHandlerOutput::Break { event, allow_any } => {
12509                                break (event, allow_any)
12510                            }
12511                            ElementHandlerOutput::Continue { event, .. } => event,
12512                        }
12513                    }
12514                    (Self::SimpleType(values, Some(deserializer)), event) => {
12515                        let output = deserializer.next(reader, event)?;
12516                        match self.handle_simple_type(reader, values, output, &mut fallback)? {
12517                            ElementHandlerOutput::Break { event, allow_any } => {
12518                                break (event, allow_any)
12519                            }
12520                            ElementHandlerOutput::Continue { event, .. } => event,
12521                        }
12522                    }
12523                    (Self::Facet(values, Some(deserializer)), event) => {
12524                        let output = deserializer.next(reader, event)?;
12525                        match self.handle_facet(reader, values, output, &mut fallback)? {
12526                            ElementHandlerOutput::Break { event, allow_any } => {
12527                                break (event, allow_any)
12528                            }
12529                            ElementHandlerOutput::Continue { event, .. } => event,
12530                        }
12531                    }
12532                    (state, event @ Event::End(_)) => {
12533                        return Ok(DeserializerOutput {
12534                            artifact: DeserializerArtifact::Data(state.finish(reader)?),
12535                            event: DeserializerEvent::Continue(event),
12536                            allow_any: false,
12537                        });
12538                    }
12539                    (Self::Init__, event) => {
12540                        match self.find_suitable(reader, event, &mut fallback)? {
12541                            ElementHandlerOutput::Break { event, allow_any } => {
12542                                break (event, allow_any)
12543                            }
12544                            ElementHandlerOutput::Continue { event, .. } => event,
12545                        }
12546                    }
12547                    (Self::Annotation(values, None), event) => {
12548                        let output = <super::Annotation as WithDeserializer>::Deserializer::init(
12549                            reader, event,
12550                        )?;
12551                        match self.handle_annotation(reader, values, output, &mut fallback)? {
12552                            ElementHandlerOutput::Break { event, allow_any } => {
12553                                break (event, allow_any)
12554                            }
12555                            ElementHandlerOutput::Continue { event, .. } => event,
12556                        }
12557                    }
12558                    (Self::SimpleType(values, None), event) => {
12559                        let output =
12560                            <super::SimpleBaseType as WithDeserializer>::Deserializer::init(
12561                                reader, event,
12562                            )?;
12563                        match self.handle_simple_type(reader, values, output, &mut fallback)? {
12564                            ElementHandlerOutput::Break { event, allow_any } => {
12565                                break (event, allow_any)
12566                            }
12567                            ElementHandlerOutput::Continue { event, .. } => event,
12568                        }
12569                    }
12570                    (Self::Facet(values, None), event) => {
12571                        let output =
12572                            <super::Facet as WithDeserializer>::Deserializer::init(reader, event)?;
12573                        match self.handle_facet(reader, values, output, &mut fallback)? {
12574                            ElementHandlerOutput::Break { event, allow_any } => {
12575                                break (event, allow_any)
12576                            }
12577                            ElementHandlerOutput::Continue { event, .. } => event,
12578                        }
12579                    }
12580                    (s @ Self::Done__(_), event) => {
12581                        self = s;
12582                        break (DeserializerEvent::Continue(event), false);
12583                    }
12584                    (Self::Unknown__, _) => unreachable!(),
12585                }
12586            };
12587            let artifact = match self {
12588                Self::Done__(data) => DeserializerArtifact::Data(data),
12589                deserializer => DeserializerArtifact::Deserializer(deserializer),
12590            };
12591            Ok(DeserializerOutput {
12592                artifact,
12593                event,
12594                allow_any,
12595            })
12596        }
12597        fn finish<R>(self, reader: &R) -> Result<super::RestrictionContent, Error>
12598        where
12599            R: DeserializeReader,
12600        {
12601            match self {
12602                Self::Init__ => Err(ErrorKind::MissingContent.into()),
12603                Self::Annotation(mut values, deserializer) => {
12604                    if let Some(deserializer) = deserializer {
12605                        let value = deserializer.finish(reader)?;
12606                        Self::store_annotation(&mut values, value)?;
12607                    }
12608                    Ok(super::RestrictionContent::Annotation(values.ok_or_else(
12609                        || ErrorKind::MissingElement("annotation".into()),
12610                    )?))
12611                }
12612                Self::SimpleType(mut values, deserializer) => {
12613                    if let Some(deserializer) = deserializer {
12614                        let value = deserializer.finish(reader)?;
12615                        Self::store_simple_type(&mut values, value)?;
12616                    }
12617                    Ok(super::RestrictionContent::SimpleType(values.ok_or_else(
12618                        || ErrorKind::MissingElement("simpleType".into()),
12619                    )?))
12620                }
12621                Self::Facet(mut values, deserializer) => {
12622                    if let Some(deserializer) = deserializer {
12623                        let value = deserializer.finish(reader)?;
12624                        Self::store_facet(&mut values, value)?;
12625                    }
12626                    Ok(super::RestrictionContent::Facet(values.ok_or_else(
12627                        || ErrorKind::MissingElement("facet".into()),
12628                    )?))
12629                }
12630                Self::Done__(data) => Ok(data),
12631                Self::Unknown__ => unreachable!(),
12632            }
12633        }
12634    }
12635    #[derive(Debug)]
12636    pub struct ListDeserializer {
12637        id: Option<String>,
12638        item_type: Option<super::QName>,
12639        annotation: Option<super::Annotation>,
12640        simple_type: Option<super::SimpleBaseType>,
12641        state: Box<ListDeserializerState>,
12642    }
12643    #[derive(Debug)]
12644    enum ListDeserializerState {
12645        Init__,
12646        Annotation(Option<<super::Annotation as WithDeserializer>::Deserializer>),
12647        SimpleType(Option<<super::SimpleBaseType as WithDeserializer>::Deserializer>),
12648        Done__,
12649        Unknown__,
12650    }
12651    impl ListDeserializer {
12652        fn from_bytes_start<R>(reader: &R, bytes_start: &BytesStart<'_>) -> Result<Self, Error>
12653        where
12654            R: DeserializeReader,
12655        {
12656            let mut id: Option<String> = None;
12657            let mut item_type: Option<super::QName> = None;
12658            for attrib in filter_xmlns_attributes(bytes_start) {
12659                let attrib = attrib?;
12660                if matches!(
12661                    reader.resolve_local_name(attrib.key, &super::NS_XS),
12662                    Some(b"id")
12663                ) {
12664                    reader.read_attrib(&mut id, b"id", &attrib.value)?;
12665                } else if matches!(
12666                    reader.resolve_local_name(attrib.key, &super::NS_XS),
12667                    Some(b"itemType")
12668                ) {
12669                    reader.read_attrib(&mut item_type, b"itemType", &attrib.value)?;
12670                }
12671            }
12672            Ok(Self {
12673                id: id,
12674                item_type: item_type,
12675                annotation: None,
12676                simple_type: None,
12677                state: Box::new(ListDeserializerState::Init__),
12678            })
12679        }
12680        fn finish_state<R>(&mut self, reader: &R, state: ListDeserializerState) -> Result<(), Error>
12681        where
12682            R: DeserializeReader,
12683        {
12684            use ListDeserializerState as S;
12685            match state {
12686                S::Annotation(Some(deserializer)) => {
12687                    self.store_annotation(deserializer.finish(reader)?)?
12688                }
12689                S::SimpleType(Some(deserializer)) => {
12690                    self.store_simple_type(deserializer.finish(reader)?)?
12691                }
12692                _ => (),
12693            }
12694            Ok(())
12695        }
12696        fn store_annotation(&mut self, value: super::Annotation) -> Result<(), Error> {
12697            if self.annotation.is_some() {
12698                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
12699                    b"annotation",
12700                )))?;
12701            }
12702            self.annotation = Some(value);
12703            Ok(())
12704        }
12705        fn store_simple_type(&mut self, value: super::SimpleBaseType) -> Result<(), Error> {
12706            if self.simple_type.is_some() {
12707                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
12708                    b"simpleType",
12709                )))?;
12710            }
12711            self.simple_type = Some(value);
12712            Ok(())
12713        }
12714        fn handle_annotation<'de, R>(
12715            &mut self,
12716            reader: &R,
12717            output: DeserializerOutput<'de, super::Annotation>,
12718            fallback: &mut Option<ListDeserializerState>,
12719        ) -> Result<ElementHandlerOutput<'de>, Error>
12720        where
12721            R: DeserializeReader,
12722        {
12723            let DeserializerOutput {
12724                artifact,
12725                event,
12726                allow_any,
12727            } = output;
12728            if artifact.is_none() {
12729                fallback.get_or_insert(ListDeserializerState::Annotation(None));
12730                *self.state = ListDeserializerState::SimpleType(None);
12731                return Ok(ElementHandlerOutput::from_event(event, allow_any));
12732            }
12733            if let Some(fallback) = fallback.take() {
12734                self.finish_state(reader, fallback)?;
12735            }
12736            Ok(match artifact {
12737                DeserializerArtifact::None => unreachable!(),
12738                DeserializerArtifact::Data(data) => {
12739                    self.store_annotation(data)?;
12740                    *self.state = ListDeserializerState::SimpleType(None);
12741                    ElementHandlerOutput::from_event(event, allow_any)
12742                }
12743                DeserializerArtifact::Deserializer(deserializer) => {
12744                    let ret = ElementHandlerOutput::from_event(event, allow_any);
12745                    match &ret {
12746                        ElementHandlerOutput::Continue { .. } => {
12747                            fallback.get_or_insert(ListDeserializerState::Annotation(Some(
12748                                deserializer,
12749                            )));
12750                            *self.state = ListDeserializerState::SimpleType(None);
12751                        }
12752                        ElementHandlerOutput::Break { .. } => {
12753                            *self.state = ListDeserializerState::Annotation(Some(deserializer));
12754                        }
12755                    }
12756                    ret
12757                }
12758            })
12759        }
12760        fn handle_simple_type<'de, R>(
12761            &mut self,
12762            reader: &R,
12763            output: DeserializerOutput<'de, super::SimpleBaseType>,
12764            fallback: &mut Option<ListDeserializerState>,
12765        ) -> Result<ElementHandlerOutput<'de>, Error>
12766        where
12767            R: DeserializeReader,
12768        {
12769            let DeserializerOutput {
12770                artifact,
12771                event,
12772                allow_any,
12773            } = output;
12774            if artifact.is_none() {
12775                fallback.get_or_insert(ListDeserializerState::SimpleType(None));
12776                *self.state = ListDeserializerState::Done__;
12777                return Ok(ElementHandlerOutput::from_event(event, allow_any));
12778            }
12779            if let Some(fallback) = fallback.take() {
12780                self.finish_state(reader, fallback)?;
12781            }
12782            Ok(match artifact {
12783                DeserializerArtifact::None => unreachable!(),
12784                DeserializerArtifact::Data(data) => {
12785                    self.store_simple_type(data)?;
12786                    *self.state = ListDeserializerState::Done__;
12787                    ElementHandlerOutput::from_event(event, allow_any)
12788                }
12789                DeserializerArtifact::Deserializer(deserializer) => {
12790                    let ret = ElementHandlerOutput::from_event(event, allow_any);
12791                    match &ret {
12792                        ElementHandlerOutput::Continue { .. } => {
12793                            fallback.get_or_insert(ListDeserializerState::SimpleType(Some(
12794                                deserializer,
12795                            )));
12796                            *self.state = ListDeserializerState::Done__;
12797                        }
12798                        ElementHandlerOutput::Break { .. } => {
12799                            *self.state = ListDeserializerState::SimpleType(Some(deserializer));
12800                        }
12801                    }
12802                    ret
12803                }
12804            })
12805        }
12806    }
12807    impl<'de> Deserializer<'de, super::List> for ListDeserializer {
12808        fn init<R>(reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::List>
12809        where
12810            R: DeserializeReader,
12811        {
12812            reader.init_deserializer_from_start_event(event, Self::from_bytes_start)
12813        }
12814        fn next<R>(mut self, reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::List>
12815        where
12816            R: DeserializeReader,
12817        {
12818            use ListDeserializerState as S;
12819            let mut event = event;
12820            let mut fallback = None;
12821            let mut allow_any_element = false;
12822            let (event, allow_any) = loop {
12823                let state = replace(&mut *self.state, S::Unknown__);
12824                event = match (state, event) {
12825                    (S::Annotation(Some(deserializer)), event) => {
12826                        let output = deserializer.next(reader, event)?;
12827                        match self.handle_annotation(reader, output, &mut fallback)? {
12828                            ElementHandlerOutput::Continue { event, allow_any } => {
12829                                allow_any_element = allow_any_element || allow_any;
12830                                event
12831                            }
12832                            ElementHandlerOutput::Break { event, allow_any } => {
12833                                break (event, allow_any)
12834                            }
12835                        }
12836                    }
12837                    (S::SimpleType(Some(deserializer)), event) => {
12838                        let output = deserializer.next(reader, event)?;
12839                        match self.handle_simple_type(reader, output, &mut fallback)? {
12840                            ElementHandlerOutput::Continue { event, allow_any } => {
12841                                allow_any_element = allow_any_element || allow_any;
12842                                event
12843                            }
12844                            ElementHandlerOutput::Break { event, allow_any } => {
12845                                break (event, allow_any)
12846                            }
12847                        }
12848                    }
12849                    (_, Event::End(_)) => {
12850                        if let Some(fallback) = fallback.take() {
12851                            self.finish_state(reader, fallback)?;
12852                        }
12853                        return Ok(DeserializerOutput {
12854                            artifact: DeserializerArtifact::Data(self.finish(reader)?),
12855                            event: DeserializerEvent::None,
12856                            allow_any: false,
12857                        });
12858                    }
12859                    (S::Init__, event) => {
12860                        fallback.get_or_insert(S::Init__);
12861                        *self.state = ListDeserializerState::Annotation(None);
12862                        event
12863                    }
12864                    (S::Annotation(None), event @ (Event::Start(_) | Event::Empty(_))) => {
12865                        if reader.check_start_tag_name(&event, Some(&super::NS_XS), b"annotation") {
12866                            let output =
12867                                <super::Annotation as WithDeserializer>::Deserializer::init(
12868                                    reader, event,
12869                                )?;
12870                            match self.handle_annotation(reader, output, &mut fallback)? {
12871                                ElementHandlerOutput::Continue { event, allow_any } => {
12872                                    allow_any_element = allow_any_element || allow_any;
12873                                    event
12874                                }
12875                                ElementHandlerOutput::Break { event, allow_any } => {
12876                                    break (event, allow_any)
12877                                }
12878                            }
12879                        } else {
12880                            *self.state = S::SimpleType(None);
12881                            allow_any_element = true;
12882                            fallback.get_or_insert(S::Annotation(None));
12883                            event
12884                        }
12885                    }
12886                    (S::SimpleType(None), event @ (Event::Start(_) | Event::Empty(_))) => {
12887                        if reader.check_start_tag_name(&event, Some(&super::NS_XS), b"simpleType") {
12888                            let output =
12889                                <super::SimpleBaseType as WithDeserializer>::Deserializer::init(
12890                                    reader, event,
12891                                )?;
12892                            match self.handle_simple_type(reader, output, &mut fallback)? {
12893                                ElementHandlerOutput::Continue { event, allow_any } => {
12894                                    allow_any_element = allow_any_element || allow_any;
12895                                    event
12896                                }
12897                                ElementHandlerOutput::Break { event, allow_any } => {
12898                                    break (event, allow_any)
12899                                }
12900                            }
12901                        } else {
12902                            *self.state = S::Done__;
12903                            allow_any_element = true;
12904                            fallback.get_or_insert(S::SimpleType(None));
12905                            event
12906                        }
12907                    }
12908                    (S::Done__, event) => {
12909                        fallback.get_or_insert(S::Done__);
12910                        break (DeserializerEvent::Continue(event), allow_any_element);
12911                    }
12912                    (S::Unknown__, _) => unreachable!(),
12913                    (state, event) => {
12914                        *self.state = state;
12915                        break (DeserializerEvent::Break(event), false);
12916                    }
12917                }
12918            };
12919            if let Some(fallback) = fallback {
12920                *self.state = fallback;
12921            }
12922            Ok(DeserializerOutput {
12923                artifact: DeserializerArtifact::Deserializer(self),
12924                event,
12925                allow_any,
12926            })
12927        }
12928        fn finish<R>(mut self, reader: &R) -> Result<super::List, Error>
12929        where
12930            R: DeserializeReader,
12931        {
12932            let state = replace(&mut *self.state, ListDeserializerState::Unknown__);
12933            self.finish_state(reader, state)?;
12934            Ok(super::List {
12935                id: self.id,
12936                item_type: self.item_type,
12937                annotation: self.annotation,
12938                simple_type: self.simple_type,
12939            })
12940        }
12941    }
12942    #[derive(Debug)]
12943    pub struct UnionDeserializer {
12944        id: Option<String>,
12945        member_types: Option<super::ElementSubstitutionGroupType>,
12946        annotation: Option<super::Annotation>,
12947        simple_type: Vec<super::SimpleBaseType>,
12948        state: Box<UnionDeserializerState>,
12949    }
12950    #[derive(Debug)]
12951    enum UnionDeserializerState {
12952        Init__,
12953        Annotation(Option<<super::Annotation as WithDeserializer>::Deserializer>),
12954        SimpleType(Option<<super::SimpleBaseType as WithDeserializer>::Deserializer>),
12955        Done__,
12956        Unknown__,
12957    }
12958    impl UnionDeserializer {
12959        fn from_bytes_start<R>(reader: &R, bytes_start: &BytesStart<'_>) -> Result<Self, Error>
12960        where
12961            R: DeserializeReader,
12962        {
12963            let mut id: Option<String> = None;
12964            let mut member_types: Option<super::ElementSubstitutionGroupType> = None;
12965            for attrib in filter_xmlns_attributes(bytes_start) {
12966                let attrib = attrib?;
12967                if matches!(
12968                    reader.resolve_local_name(attrib.key, &super::NS_XS),
12969                    Some(b"id")
12970                ) {
12971                    reader.read_attrib(&mut id, b"id", &attrib.value)?;
12972                } else if matches!(
12973                    reader.resolve_local_name(attrib.key, &super::NS_XS),
12974                    Some(b"memberTypes")
12975                ) {
12976                    reader.read_attrib(&mut member_types, b"memberTypes", &attrib.value)?;
12977                }
12978            }
12979            Ok(Self {
12980                id: id,
12981                member_types: member_types,
12982                annotation: None,
12983                simple_type: Vec::new(),
12984                state: Box::new(UnionDeserializerState::Init__),
12985            })
12986        }
12987        fn finish_state<R>(
12988            &mut self,
12989            reader: &R,
12990            state: UnionDeserializerState,
12991        ) -> Result<(), Error>
12992        where
12993            R: DeserializeReader,
12994        {
12995            use UnionDeserializerState as S;
12996            match state {
12997                S::Annotation(Some(deserializer)) => {
12998                    self.store_annotation(deserializer.finish(reader)?)?
12999                }
13000                S::SimpleType(Some(deserializer)) => {
13001                    self.store_simple_type(deserializer.finish(reader)?)?
13002                }
13003                _ => (),
13004            }
13005            Ok(())
13006        }
13007        fn store_annotation(&mut self, value: super::Annotation) -> Result<(), Error> {
13008            if self.annotation.is_some() {
13009                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
13010                    b"annotation",
13011                )))?;
13012            }
13013            self.annotation = Some(value);
13014            Ok(())
13015        }
13016        fn store_simple_type(&mut self, value: super::SimpleBaseType) -> Result<(), Error> {
13017            self.simple_type.push(value);
13018            Ok(())
13019        }
13020        fn handle_annotation<'de, R>(
13021            &mut self,
13022            reader: &R,
13023            output: DeserializerOutput<'de, super::Annotation>,
13024            fallback: &mut Option<UnionDeserializerState>,
13025        ) -> Result<ElementHandlerOutput<'de>, Error>
13026        where
13027            R: DeserializeReader,
13028        {
13029            let DeserializerOutput {
13030                artifact,
13031                event,
13032                allow_any,
13033            } = output;
13034            if artifact.is_none() {
13035                fallback.get_or_insert(UnionDeserializerState::Annotation(None));
13036                *self.state = UnionDeserializerState::SimpleType(None);
13037                return Ok(ElementHandlerOutput::from_event(event, allow_any));
13038            }
13039            if let Some(fallback) = fallback.take() {
13040                self.finish_state(reader, fallback)?;
13041            }
13042            Ok(match artifact {
13043                DeserializerArtifact::None => unreachable!(),
13044                DeserializerArtifact::Data(data) => {
13045                    self.store_annotation(data)?;
13046                    *self.state = UnionDeserializerState::SimpleType(None);
13047                    ElementHandlerOutput::from_event(event, allow_any)
13048                }
13049                DeserializerArtifact::Deserializer(deserializer) => {
13050                    let ret = ElementHandlerOutput::from_event(event, allow_any);
13051                    match &ret {
13052                        ElementHandlerOutput::Continue { .. } => {
13053                            fallback.get_or_insert(UnionDeserializerState::Annotation(Some(
13054                                deserializer,
13055                            )));
13056                            *self.state = UnionDeserializerState::SimpleType(None);
13057                        }
13058                        ElementHandlerOutput::Break { .. } => {
13059                            *self.state = UnionDeserializerState::Annotation(Some(deserializer));
13060                        }
13061                    }
13062                    ret
13063                }
13064            })
13065        }
13066        fn handle_simple_type<'de, R>(
13067            &mut self,
13068            reader: &R,
13069            output: DeserializerOutput<'de, super::SimpleBaseType>,
13070            fallback: &mut Option<UnionDeserializerState>,
13071        ) -> Result<ElementHandlerOutput<'de>, Error>
13072        where
13073            R: DeserializeReader,
13074        {
13075            let DeserializerOutput {
13076                artifact,
13077                event,
13078                allow_any,
13079            } = output;
13080            if artifact.is_none() {
13081                fallback.get_or_insert(UnionDeserializerState::SimpleType(None));
13082                *self.state = UnionDeserializerState::Done__;
13083                return Ok(ElementHandlerOutput::from_event(event, allow_any));
13084            }
13085            if let Some(fallback) = fallback.take() {
13086                self.finish_state(reader, fallback)?;
13087            }
13088            Ok(match artifact {
13089                DeserializerArtifact::None => unreachable!(),
13090                DeserializerArtifact::Data(data) => {
13091                    self.store_simple_type(data)?;
13092                    *self.state = UnionDeserializerState::SimpleType(None);
13093                    ElementHandlerOutput::from_event(event, allow_any)
13094                }
13095                DeserializerArtifact::Deserializer(deserializer) => {
13096                    let ret = ElementHandlerOutput::from_event(event, allow_any);
13097                    match &ret {
13098                        ElementHandlerOutput::Continue { .. } => {
13099                            fallback.get_or_insert(UnionDeserializerState::SimpleType(Some(
13100                                deserializer,
13101                            )));
13102                            *self.state = UnionDeserializerState::SimpleType(None);
13103                        }
13104                        ElementHandlerOutput::Break { .. } => {
13105                            *self.state = UnionDeserializerState::SimpleType(Some(deserializer));
13106                        }
13107                    }
13108                    ret
13109                }
13110            })
13111        }
13112    }
13113    impl<'de> Deserializer<'de, super::Union> for UnionDeserializer {
13114        fn init<R>(reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::Union>
13115        where
13116            R: DeserializeReader,
13117        {
13118            reader.init_deserializer_from_start_event(event, Self::from_bytes_start)
13119        }
13120        fn next<R>(mut self, reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::Union>
13121        where
13122            R: DeserializeReader,
13123        {
13124            use UnionDeserializerState as S;
13125            let mut event = event;
13126            let mut fallback = None;
13127            let mut allow_any_element = false;
13128            let (event, allow_any) = loop {
13129                let state = replace(&mut *self.state, S::Unknown__);
13130                event = match (state, event) {
13131                    (S::Annotation(Some(deserializer)), event) => {
13132                        let output = deserializer.next(reader, event)?;
13133                        match self.handle_annotation(reader, output, &mut fallback)? {
13134                            ElementHandlerOutput::Continue { event, allow_any } => {
13135                                allow_any_element = allow_any_element || allow_any;
13136                                event
13137                            }
13138                            ElementHandlerOutput::Break { event, allow_any } => {
13139                                break (event, allow_any)
13140                            }
13141                        }
13142                    }
13143                    (S::SimpleType(Some(deserializer)), event) => {
13144                        let output = deserializer.next(reader, event)?;
13145                        match self.handle_simple_type(reader, output, &mut fallback)? {
13146                            ElementHandlerOutput::Continue { event, allow_any } => {
13147                                allow_any_element = allow_any_element || allow_any;
13148                                event
13149                            }
13150                            ElementHandlerOutput::Break { event, allow_any } => {
13151                                break (event, allow_any)
13152                            }
13153                        }
13154                    }
13155                    (_, Event::End(_)) => {
13156                        if let Some(fallback) = fallback.take() {
13157                            self.finish_state(reader, fallback)?;
13158                        }
13159                        return Ok(DeserializerOutput {
13160                            artifact: DeserializerArtifact::Data(self.finish(reader)?),
13161                            event: DeserializerEvent::None,
13162                            allow_any: false,
13163                        });
13164                    }
13165                    (S::Init__, event) => {
13166                        fallback.get_or_insert(S::Init__);
13167                        *self.state = UnionDeserializerState::Annotation(None);
13168                        event
13169                    }
13170                    (S::Annotation(None), event @ (Event::Start(_) | Event::Empty(_))) => {
13171                        if reader.check_start_tag_name(&event, Some(&super::NS_XS), b"annotation") {
13172                            let output =
13173                                <super::Annotation as WithDeserializer>::Deserializer::init(
13174                                    reader, event,
13175                                )?;
13176                            match self.handle_annotation(reader, output, &mut fallback)? {
13177                                ElementHandlerOutput::Continue { event, allow_any } => {
13178                                    allow_any_element = allow_any_element || allow_any;
13179                                    event
13180                                }
13181                                ElementHandlerOutput::Break { event, allow_any } => {
13182                                    break (event, allow_any)
13183                                }
13184                            }
13185                        } else {
13186                            *self.state = S::SimpleType(None);
13187                            allow_any_element = true;
13188                            fallback.get_or_insert(S::Annotation(None));
13189                            event
13190                        }
13191                    }
13192                    (S::SimpleType(None), event @ (Event::Start(_) | Event::Empty(_))) => {
13193                        if reader.check_start_tag_name(&event, Some(&super::NS_XS), b"simpleType") {
13194                            let output =
13195                                <super::SimpleBaseType as WithDeserializer>::Deserializer::init(
13196                                    reader, event,
13197                                )?;
13198                            match self.handle_simple_type(reader, output, &mut fallback)? {
13199                                ElementHandlerOutput::Continue { event, allow_any } => {
13200                                    allow_any_element = allow_any_element || allow_any;
13201                                    event
13202                                }
13203                                ElementHandlerOutput::Break { event, allow_any } => {
13204                                    break (event, allow_any)
13205                                }
13206                            }
13207                        } else {
13208                            *self.state = S::Done__;
13209                            allow_any_element = true;
13210                            fallback.get_or_insert(S::SimpleType(None));
13211                            event
13212                        }
13213                    }
13214                    (S::Done__, event) => {
13215                        fallback.get_or_insert(S::Done__);
13216                        break (DeserializerEvent::Continue(event), allow_any_element);
13217                    }
13218                    (S::Unknown__, _) => unreachable!(),
13219                    (state, event) => {
13220                        *self.state = state;
13221                        break (DeserializerEvent::Break(event), false);
13222                    }
13223                }
13224            };
13225            if let Some(fallback) = fallback {
13226                *self.state = fallback;
13227            }
13228            Ok(DeserializerOutput {
13229                artifact: DeserializerArtifact::Deserializer(self),
13230                event,
13231                allow_any,
13232            })
13233        }
13234        fn finish<R>(mut self, reader: &R) -> Result<super::Union, Error>
13235        where
13236            R: DeserializeReader,
13237        {
13238            let state = replace(&mut *self.state, UnionDeserializerState::Unknown__);
13239            self.finish_state(reader, state)?;
13240            Ok(super::Union {
13241                id: self.id,
13242                member_types: self.member_types,
13243                annotation: self.annotation,
13244                simple_type: self.simple_type,
13245            })
13246        }
13247    }
13248    #[derive(Debug)]
13249    pub struct SimpleContentDeserializer {
13250        id: Option<String>,
13251        content: Vec<super::SimpleContentContent>,
13252        state: Box<SimpleContentDeserializerState>,
13253    }
13254    #[derive(Debug)]
13255    enum SimpleContentDeserializerState {
13256        Init__,
13257        Next__,
13258        Content__(<super::SimpleContentContent as WithDeserializer>::Deserializer),
13259        Unknown__,
13260    }
13261    impl SimpleContentDeserializer {
13262        fn from_bytes_start<R>(reader: &R, bytes_start: &BytesStart<'_>) -> Result<Self, Error>
13263        where
13264            R: DeserializeReader,
13265        {
13266            let mut id: Option<String> = None;
13267            for attrib in filter_xmlns_attributes(bytes_start) {
13268                let attrib = attrib?;
13269                if matches!(
13270                    reader.resolve_local_name(attrib.key, &super::NS_XS),
13271                    Some(b"id")
13272                ) {
13273                    reader.read_attrib(&mut id, b"id", &attrib.value)?;
13274                }
13275            }
13276            Ok(Self {
13277                id: id,
13278                content: Vec::new(),
13279                state: Box::new(SimpleContentDeserializerState::Init__),
13280            })
13281        }
13282        fn finish_state<R>(
13283            &mut self,
13284            reader: &R,
13285            state: SimpleContentDeserializerState,
13286        ) -> Result<(), Error>
13287        where
13288            R: DeserializeReader,
13289        {
13290            if let SimpleContentDeserializerState::Content__(deserializer) = state {
13291                self.store_content(deserializer.finish(reader)?)?;
13292            }
13293            Ok(())
13294        }
13295        fn store_content(&mut self, value: super::SimpleContentContent) -> Result<(), Error> {
13296            self.content.push(value);
13297            Ok(())
13298        }
13299        fn handle_content<'de, R>(
13300            &mut self,
13301            reader: &R,
13302            output: DeserializerOutput<'de, super::SimpleContentContent>,
13303            fallback: &mut Option<SimpleContentDeserializerState>,
13304        ) -> Result<ElementHandlerOutput<'de>, Error>
13305        where
13306            R: DeserializeReader,
13307        {
13308            let DeserializerOutput {
13309                artifact,
13310                event,
13311                allow_any,
13312            } = output;
13313            if artifact.is_none() {
13314                *self.state = fallback
13315                    .take()
13316                    .unwrap_or(SimpleContentDeserializerState::Next__);
13317                return Ok(ElementHandlerOutput::break_(event, allow_any));
13318            }
13319            if let Some(fallback) = fallback.take() {
13320                self.finish_state(reader, fallback)?;
13321            }
13322            Ok(match artifact {
13323                DeserializerArtifact::None => unreachable!(),
13324                DeserializerArtifact::Data(data) => {
13325                    self.store_content(data)?;
13326                    *self.state = SimpleContentDeserializerState::Next__;
13327                    ElementHandlerOutput::from_event(event, allow_any)
13328                }
13329                DeserializerArtifact::Deserializer(deserializer) => {
13330                    let ret = ElementHandlerOutput::from_event(event, allow_any);
13331                    match &ret {
13332                        ElementHandlerOutput::Continue { .. } => {
13333                            fallback.get_or_insert(SimpleContentDeserializerState::Content__(
13334                                deserializer,
13335                            ));
13336                            *self.state = SimpleContentDeserializerState::Next__;
13337                        }
13338                        ElementHandlerOutput::Break { .. } => {
13339                            *self.state = SimpleContentDeserializerState::Content__(deserializer);
13340                        }
13341                    }
13342                    ret
13343                }
13344            })
13345        }
13346    }
13347    impl<'de> Deserializer<'de, super::SimpleContent> for SimpleContentDeserializer {
13348        fn init<R>(reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::SimpleContent>
13349        where
13350            R: DeserializeReader,
13351        {
13352            reader.init_deserializer_from_start_event(event, Self::from_bytes_start)
13353        }
13354        fn next<R>(
13355            mut self,
13356            reader: &R,
13357            event: Event<'de>,
13358        ) -> DeserializerResult<'de, super::SimpleContent>
13359        where
13360            R: DeserializeReader,
13361        {
13362            use SimpleContentDeserializerState as S;
13363            let mut event = event;
13364            let mut fallback = None;
13365            let (event, allow_any) = loop {
13366                let state = replace(&mut *self.state, S::Unknown__);
13367                event = match (state, event) {
13368                    (S::Content__(deserializer), event) => {
13369                        let output = deserializer.next(reader, event)?;
13370                        match self.handle_content(reader, output, &mut fallback)? {
13371                            ElementHandlerOutput::Break { event, allow_any } => {
13372                                break (event, allow_any)
13373                            }
13374                            ElementHandlerOutput::Continue { event, .. } => event,
13375                        }
13376                    }
13377                    (_, Event::End(_)) => {
13378                        return Ok(DeserializerOutput {
13379                            artifact: DeserializerArtifact::Data(self.finish(reader)?),
13380                            event: DeserializerEvent::None,
13381                            allow_any: false,
13382                        });
13383                    }
13384                    (old_state @ (S::Init__ | S::Next__), event) => {
13385                        let output =
13386                            <super::SimpleContentContent as WithDeserializer>::Deserializer::init(
13387                                reader, event,
13388                            )?;
13389                        match self.handle_content(reader, output, &mut fallback)? {
13390                            ElementHandlerOutput::Break { event, allow_any } => {
13391                                if matches!(&*self.state, S::Unknown__) {
13392                                    *self.state = old_state;
13393                                }
13394                                break (event, allow_any);
13395                            }
13396                            ElementHandlerOutput::Continue { event, .. } => event,
13397                        }
13398                    }
13399                    (S::Unknown__, _) => unreachable!(),
13400                }
13401            };
13402            Ok(DeserializerOutput {
13403                artifact: DeserializerArtifact::Deserializer(self),
13404                event,
13405                allow_any,
13406            })
13407        }
13408        fn finish<R>(mut self, reader: &R) -> Result<super::SimpleContent, Error>
13409        where
13410            R: DeserializeReader,
13411        {
13412            let state = replace(&mut *self.state, SimpleContentDeserializerState::Unknown__);
13413            self.finish_state(reader, state)?;
13414            Ok(super::SimpleContent {
13415                id: self.id,
13416                content: self.content,
13417            })
13418        }
13419    }
13420    #[derive(Debug)]
13421    pub enum SimpleContentContentDeserializer {
13422        Init__,
13423        Annotation(
13424            Option<super::Annotation>,
13425            Option<<super::Annotation as WithDeserializer>::Deserializer>,
13426        ),
13427        Restriction(
13428            Option<super::RestrictionType>,
13429            Option<<super::RestrictionType as WithDeserializer>::Deserializer>,
13430        ),
13431        Extension(
13432            Option<super::ExtensionType>,
13433            Option<<super::ExtensionType as WithDeserializer>::Deserializer>,
13434        ),
13435        Done__(super::SimpleContentContent),
13436        Unknown__,
13437    }
13438    impl SimpleContentContentDeserializer {
13439        fn find_suitable<'de, R>(
13440            &mut self,
13441            reader: &R,
13442            event: Event<'de>,
13443            fallback: &mut Option<SimpleContentContentDeserializer>,
13444        ) -> Result<ElementHandlerOutput<'de>, Error>
13445        where
13446            R: DeserializeReader,
13447        {
13448            let (Event::Start(x) | Event::Empty(x)) = &event else {
13449                *self = Self::Init__;
13450                return Ok(ElementHandlerOutput::return_to_parent(event, false));
13451            };
13452            if matches!(
13453                reader.resolve_local_name(x.name(), &super::NS_XS),
13454                Some(b"annotation")
13455            ) {
13456                let output =
13457                    <super::Annotation as WithDeserializer>::Deserializer::init(reader, event)?;
13458                return self.handle_annotation(reader, Default::default(), output, &mut *fallback);
13459            }
13460            if matches!(
13461                reader.resolve_local_name(x.name(), &super::NS_XS),
13462                Some(b"restriction")
13463            ) {
13464                let output = <super::RestrictionType as WithDeserializer>::Deserializer::init(
13465                    reader, event,
13466                )?;
13467                return self.handle_restriction(reader, Default::default(), output, &mut *fallback);
13468            }
13469            if matches!(
13470                reader.resolve_local_name(x.name(), &super::NS_XS),
13471                Some(b"extension")
13472            ) {
13473                let output =
13474                    <super::ExtensionType as WithDeserializer>::Deserializer::init(reader, event)?;
13475                return self.handle_extension(reader, Default::default(), output, &mut *fallback);
13476            }
13477            *self = Self::Init__;
13478            Ok(ElementHandlerOutput::return_to_parent(event, false))
13479        }
13480        fn store_annotation(
13481            values: &mut Option<super::Annotation>,
13482            value: super::Annotation,
13483        ) -> Result<(), Error> {
13484            if values.is_some() {
13485                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
13486                    b"annotation",
13487                )))?;
13488            }
13489            *values = Some(value);
13490            Ok(())
13491        }
13492        fn store_restriction(
13493            values: &mut Option<super::RestrictionType>,
13494            value: super::RestrictionType,
13495        ) -> Result<(), Error> {
13496            if values.is_some() {
13497                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
13498                    b"restriction",
13499                )))?;
13500            }
13501            *values = Some(value);
13502            Ok(())
13503        }
13504        fn store_extension(
13505            values: &mut Option<super::ExtensionType>,
13506            value: super::ExtensionType,
13507        ) -> Result<(), Error> {
13508            if values.is_some() {
13509                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
13510                    b"extension",
13511                )))?;
13512            }
13513            *values = Some(value);
13514            Ok(())
13515        }
13516        fn handle_annotation<'de, R>(
13517            &mut self,
13518            reader: &R,
13519            mut values: Option<super::Annotation>,
13520            output: DeserializerOutput<'de, super::Annotation>,
13521            fallback: &mut Option<Self>,
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                *self = match fallback.take() {
13533                    None => Self::Init__,
13534                    Some(Self::Annotation(_, Some(deserializer))) => {
13535                        Self::Annotation(values, Some(deserializer))
13536                    }
13537                    _ => unreachable!(),
13538                };
13539                return Ok(ElementHandlerOutput::break_(event, allow_any));
13540            }
13541            match fallback.take() {
13542                None => (),
13543                Some(Self::Annotation(_, Some(deserializer))) => {
13544                    let data = deserializer.finish(reader)?;
13545                    Self::store_annotation(&mut values, data)?;
13546                }
13547                Some(_) => unreachable!(),
13548            }
13549            Ok(match artifact {
13550                DeserializerArtifact::None => unreachable!(),
13551                DeserializerArtifact::Data(data) => {
13552                    Self::store_annotation(&mut values, data)?;
13553                    let data = Self::Annotation(values, None).finish(reader)?;
13554                    *self = Self::Done__(data);
13555                    ElementHandlerOutput::Break { event, allow_any }
13556                }
13557                DeserializerArtifact::Deserializer(deserializer) => {
13558                    *self = Self::Annotation(values, Some(deserializer));
13559                    ElementHandlerOutput::from_event_end(event, allow_any)
13560                }
13561            })
13562        }
13563        fn handle_restriction<'de, R>(
13564            &mut self,
13565            reader: &R,
13566            mut values: Option<super::RestrictionType>,
13567            output: DeserializerOutput<'de, super::RestrictionType>,
13568            fallback: &mut Option<Self>,
13569        ) -> Result<ElementHandlerOutput<'de>, Error>
13570        where
13571            R: DeserializeReader,
13572        {
13573            let DeserializerOutput {
13574                artifact,
13575                event,
13576                allow_any,
13577            } = output;
13578            if artifact.is_none() {
13579                *self = match fallback.take() {
13580                    None => Self::Init__,
13581                    Some(Self::Restriction(_, Some(deserializer))) => {
13582                        Self::Restriction(values, Some(deserializer))
13583                    }
13584                    _ => unreachable!(),
13585                };
13586                return Ok(ElementHandlerOutput::break_(event, allow_any));
13587            }
13588            match fallback.take() {
13589                None => (),
13590                Some(Self::Restriction(_, Some(deserializer))) => {
13591                    let data = deserializer.finish(reader)?;
13592                    Self::store_restriction(&mut values, data)?;
13593                }
13594                Some(_) => unreachable!(),
13595            }
13596            Ok(match artifact {
13597                DeserializerArtifact::None => unreachable!(),
13598                DeserializerArtifact::Data(data) => {
13599                    Self::store_restriction(&mut values, data)?;
13600                    let data = Self::Restriction(values, None).finish(reader)?;
13601                    *self = Self::Done__(data);
13602                    ElementHandlerOutput::Break { event, allow_any }
13603                }
13604                DeserializerArtifact::Deserializer(deserializer) => {
13605                    *self = Self::Restriction(values, Some(deserializer));
13606                    ElementHandlerOutput::from_event_end(event, allow_any)
13607                }
13608            })
13609        }
13610        fn handle_extension<'de, R>(
13611            &mut self,
13612            reader: &R,
13613            mut values: Option<super::ExtensionType>,
13614            output: DeserializerOutput<'de, super::ExtensionType>,
13615            fallback: &mut Option<Self>,
13616        ) -> Result<ElementHandlerOutput<'de>, Error>
13617        where
13618            R: DeserializeReader,
13619        {
13620            let DeserializerOutput {
13621                artifact,
13622                event,
13623                allow_any,
13624            } = output;
13625            if artifact.is_none() {
13626                *self = match fallback.take() {
13627                    None => Self::Init__,
13628                    Some(Self::Extension(_, Some(deserializer))) => {
13629                        Self::Extension(values, Some(deserializer))
13630                    }
13631                    _ => unreachable!(),
13632                };
13633                return Ok(ElementHandlerOutput::break_(event, allow_any));
13634            }
13635            match fallback.take() {
13636                None => (),
13637                Some(Self::Extension(_, Some(deserializer))) => {
13638                    let data = deserializer.finish(reader)?;
13639                    Self::store_extension(&mut values, data)?;
13640                }
13641                Some(_) => unreachable!(),
13642            }
13643            Ok(match artifact {
13644                DeserializerArtifact::None => unreachable!(),
13645                DeserializerArtifact::Data(data) => {
13646                    Self::store_extension(&mut values, data)?;
13647                    let data = Self::Extension(values, None).finish(reader)?;
13648                    *self = Self::Done__(data);
13649                    ElementHandlerOutput::Break { event, allow_any }
13650                }
13651                DeserializerArtifact::Deserializer(deserializer) => {
13652                    *self = Self::Extension(values, Some(deserializer));
13653                    ElementHandlerOutput::from_event_end(event, allow_any)
13654                }
13655            })
13656        }
13657    }
13658    impl<'de> Deserializer<'de, super::SimpleContentContent> for SimpleContentContentDeserializer {
13659        fn init<R>(
13660            reader: &R,
13661            event: Event<'de>,
13662        ) -> DeserializerResult<'de, super::SimpleContentContent>
13663        where
13664            R: DeserializeReader,
13665        {
13666            let deserializer = Self::Init__;
13667            let mut output = deserializer.next(reader, event)?;
13668            output.artifact = match output.artifact {
13669                DeserializerArtifact::Deserializer(Self::Init__) => DeserializerArtifact::None,
13670                artifact => artifact,
13671            };
13672            Ok(output)
13673        }
13674        fn next<R>(
13675            mut self,
13676            reader: &R,
13677            event: Event<'de>,
13678        ) -> DeserializerResult<'de, super::SimpleContentContent>
13679        where
13680            R: DeserializeReader,
13681        {
13682            let mut event = event;
13683            let mut fallback = None;
13684            let (event, allow_any) = loop {
13685                let state = replace(&mut self, Self::Unknown__);
13686                event = match (state, event) {
13687                    (Self::Annotation(values, Some(deserializer)), event) => {
13688                        let output = deserializer.next(reader, event)?;
13689                        match self.handle_annotation(reader, values, output, &mut fallback)? {
13690                            ElementHandlerOutput::Break { event, allow_any } => {
13691                                break (event, allow_any)
13692                            }
13693                            ElementHandlerOutput::Continue { event, .. } => event,
13694                        }
13695                    }
13696                    (Self::Restriction(values, Some(deserializer)), event) => {
13697                        let output = deserializer.next(reader, event)?;
13698                        match self.handle_restriction(reader, values, output, &mut fallback)? {
13699                            ElementHandlerOutput::Break { event, allow_any } => {
13700                                break (event, allow_any)
13701                            }
13702                            ElementHandlerOutput::Continue { event, .. } => event,
13703                        }
13704                    }
13705                    (Self::Extension(values, Some(deserializer)), event) => {
13706                        let output = deserializer.next(reader, event)?;
13707                        match self.handle_extension(reader, values, output, &mut fallback)? {
13708                            ElementHandlerOutput::Break { event, allow_any } => {
13709                                break (event, allow_any)
13710                            }
13711                            ElementHandlerOutput::Continue { event, .. } => event,
13712                        }
13713                    }
13714                    (state, event @ Event::End(_)) => {
13715                        return Ok(DeserializerOutput {
13716                            artifact: DeserializerArtifact::Data(state.finish(reader)?),
13717                            event: DeserializerEvent::Continue(event),
13718                            allow_any: false,
13719                        });
13720                    }
13721                    (Self::Init__, event) => {
13722                        match self.find_suitable(reader, event, &mut fallback)? {
13723                            ElementHandlerOutput::Break { event, allow_any } => {
13724                                break (event, allow_any)
13725                            }
13726                            ElementHandlerOutput::Continue { event, .. } => event,
13727                        }
13728                    }
13729                    (Self::Annotation(values, None), event) => {
13730                        let output = <super::Annotation as WithDeserializer>::Deserializer::init(
13731                            reader, event,
13732                        )?;
13733                        match self.handle_annotation(reader, values, output, &mut fallback)? {
13734                            ElementHandlerOutput::Break { event, allow_any } => {
13735                                break (event, allow_any)
13736                            }
13737                            ElementHandlerOutput::Continue { event, .. } => event,
13738                        }
13739                    }
13740                    (Self::Restriction(values, None), event) => {
13741                        let output =
13742                            <super::RestrictionType as WithDeserializer>::Deserializer::init(
13743                                reader, event,
13744                            )?;
13745                        match self.handle_restriction(reader, values, output, &mut fallback)? {
13746                            ElementHandlerOutput::Break { event, allow_any } => {
13747                                break (event, allow_any)
13748                            }
13749                            ElementHandlerOutput::Continue { event, .. } => event,
13750                        }
13751                    }
13752                    (Self::Extension(values, None), event) => {
13753                        let output =
13754                            <super::ExtensionType as WithDeserializer>::Deserializer::init(
13755                                reader, event,
13756                            )?;
13757                        match self.handle_extension(reader, values, output, &mut fallback)? {
13758                            ElementHandlerOutput::Break { event, allow_any } => {
13759                                break (event, allow_any)
13760                            }
13761                            ElementHandlerOutput::Continue { event, .. } => event,
13762                        }
13763                    }
13764                    (s @ Self::Done__(_), event) => {
13765                        self = s;
13766                        break (DeserializerEvent::Continue(event), false);
13767                    }
13768                    (Self::Unknown__, _) => unreachable!(),
13769                }
13770            };
13771            let artifact = match self {
13772                Self::Done__(data) => DeserializerArtifact::Data(data),
13773                deserializer => DeserializerArtifact::Deserializer(deserializer),
13774            };
13775            Ok(DeserializerOutput {
13776                artifact,
13777                event,
13778                allow_any,
13779            })
13780        }
13781        fn finish<R>(self, reader: &R) -> Result<super::SimpleContentContent, Error>
13782        where
13783            R: DeserializeReader,
13784        {
13785            match self {
13786                Self::Init__ => Err(ErrorKind::MissingContent.into()),
13787                Self::Annotation(mut values, deserializer) => {
13788                    if let Some(deserializer) = deserializer {
13789                        let value = deserializer.finish(reader)?;
13790                        Self::store_annotation(&mut values, value)?;
13791                    }
13792                    Ok(super::SimpleContentContent::Annotation(values.ok_or_else(
13793                        || ErrorKind::MissingElement("annotation".into()),
13794                    )?))
13795                }
13796                Self::Restriction(mut values, deserializer) => {
13797                    if let Some(deserializer) = deserializer {
13798                        let value = deserializer.finish(reader)?;
13799                        Self::store_restriction(&mut values, value)?;
13800                    }
13801                    Ok(super::SimpleContentContent::Restriction(
13802                        values.ok_or_else(|| ErrorKind::MissingElement("restriction".into()))?,
13803                    ))
13804                }
13805                Self::Extension(mut values, deserializer) => {
13806                    if let Some(deserializer) = deserializer {
13807                        let value = deserializer.finish(reader)?;
13808                        Self::store_extension(&mut values, value)?;
13809                    }
13810                    Ok(super::SimpleContentContent::Extension(values.ok_or_else(
13811                        || ErrorKind::MissingElement("extension".into()),
13812                    )?))
13813                }
13814                Self::Done__(data) => Ok(data),
13815                Self::Unknown__ => unreachable!(),
13816            }
13817        }
13818    }
13819    #[derive(Debug)]
13820    pub struct ComplexContentDeserializer {
13821        id: Option<String>,
13822        mixed: Option<bool>,
13823        content: Vec<super::ComplexContentContent>,
13824        state: Box<ComplexContentDeserializerState>,
13825    }
13826    #[derive(Debug)]
13827    enum ComplexContentDeserializerState {
13828        Init__,
13829        Next__,
13830        Content__(<super::ComplexContentContent as WithDeserializer>::Deserializer),
13831        Unknown__,
13832    }
13833    impl ComplexContentDeserializer {
13834        fn from_bytes_start<R>(reader: &R, bytes_start: &BytesStart<'_>) -> Result<Self, Error>
13835        where
13836            R: DeserializeReader,
13837        {
13838            let mut id: Option<String> = None;
13839            let mut mixed: Option<bool> = None;
13840            for attrib in filter_xmlns_attributes(bytes_start) {
13841                let attrib = attrib?;
13842                if matches!(
13843                    reader.resolve_local_name(attrib.key, &super::NS_XS),
13844                    Some(b"id")
13845                ) {
13846                    reader.read_attrib(&mut id, b"id", &attrib.value)?;
13847                } else if matches!(
13848                    reader.resolve_local_name(attrib.key, &super::NS_XS),
13849                    Some(b"mixed")
13850                ) {
13851                    reader.read_attrib(&mut mixed, b"mixed", &attrib.value)?;
13852                }
13853            }
13854            Ok(Self {
13855                id: id,
13856                mixed: mixed,
13857                content: Vec::new(),
13858                state: Box::new(ComplexContentDeserializerState::Init__),
13859            })
13860        }
13861        fn finish_state<R>(
13862            &mut self,
13863            reader: &R,
13864            state: ComplexContentDeserializerState,
13865        ) -> Result<(), Error>
13866        where
13867            R: DeserializeReader,
13868        {
13869            if let ComplexContentDeserializerState::Content__(deserializer) = state {
13870                self.store_content(deserializer.finish(reader)?)?;
13871            }
13872            Ok(())
13873        }
13874        fn store_content(&mut self, value: super::ComplexContentContent) -> Result<(), Error> {
13875            self.content.push(value);
13876            Ok(())
13877        }
13878        fn handle_content<'de, R>(
13879            &mut self,
13880            reader: &R,
13881            output: DeserializerOutput<'de, super::ComplexContentContent>,
13882            fallback: &mut Option<ComplexContentDeserializerState>,
13883        ) -> Result<ElementHandlerOutput<'de>, Error>
13884        where
13885            R: DeserializeReader,
13886        {
13887            let DeserializerOutput {
13888                artifact,
13889                event,
13890                allow_any,
13891            } = output;
13892            if artifact.is_none() {
13893                *self.state = fallback
13894                    .take()
13895                    .unwrap_or(ComplexContentDeserializerState::Next__);
13896                return Ok(ElementHandlerOutput::break_(event, allow_any));
13897            }
13898            if let Some(fallback) = fallback.take() {
13899                self.finish_state(reader, fallback)?;
13900            }
13901            Ok(match artifact {
13902                DeserializerArtifact::None => unreachable!(),
13903                DeserializerArtifact::Data(data) => {
13904                    self.store_content(data)?;
13905                    *self.state = ComplexContentDeserializerState::Next__;
13906                    ElementHandlerOutput::from_event(event, allow_any)
13907                }
13908                DeserializerArtifact::Deserializer(deserializer) => {
13909                    let ret = ElementHandlerOutput::from_event(event, allow_any);
13910                    match &ret {
13911                        ElementHandlerOutput::Continue { .. } => {
13912                            fallback.get_or_insert(ComplexContentDeserializerState::Content__(
13913                                deserializer,
13914                            ));
13915                            *self.state = ComplexContentDeserializerState::Next__;
13916                        }
13917                        ElementHandlerOutput::Break { .. } => {
13918                            *self.state = ComplexContentDeserializerState::Content__(deserializer);
13919                        }
13920                    }
13921                    ret
13922                }
13923            })
13924        }
13925    }
13926    impl<'de> Deserializer<'de, super::ComplexContent> for ComplexContentDeserializer {
13927        fn init<R>(reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::ComplexContent>
13928        where
13929            R: DeserializeReader,
13930        {
13931            reader.init_deserializer_from_start_event(event, Self::from_bytes_start)
13932        }
13933        fn next<R>(
13934            mut self,
13935            reader: &R,
13936            event: Event<'de>,
13937        ) -> DeserializerResult<'de, super::ComplexContent>
13938        where
13939            R: DeserializeReader,
13940        {
13941            use ComplexContentDeserializerState as S;
13942            let mut event = event;
13943            let mut fallback = None;
13944            let (event, allow_any) = loop {
13945                let state = replace(&mut *self.state, S::Unknown__);
13946                event = match (state, event) {
13947                    (S::Content__(deserializer), event) => {
13948                        let output = deserializer.next(reader, event)?;
13949                        match self.handle_content(reader, output, &mut fallback)? {
13950                            ElementHandlerOutput::Break { event, allow_any } => {
13951                                break (event, allow_any)
13952                            }
13953                            ElementHandlerOutput::Continue { event, .. } => event,
13954                        }
13955                    }
13956                    (_, Event::End(_)) => {
13957                        return Ok(DeserializerOutput {
13958                            artifact: DeserializerArtifact::Data(self.finish(reader)?),
13959                            event: DeserializerEvent::None,
13960                            allow_any: false,
13961                        });
13962                    }
13963                    (old_state @ (S::Init__ | S::Next__), event) => {
13964                        let output =
13965                            <super::ComplexContentContent as WithDeserializer>::Deserializer::init(
13966                                reader, event,
13967                            )?;
13968                        match self.handle_content(reader, output, &mut fallback)? {
13969                            ElementHandlerOutput::Break { event, allow_any } => {
13970                                if matches!(&*self.state, S::Unknown__) {
13971                                    *self.state = old_state;
13972                                }
13973                                break (event, allow_any);
13974                            }
13975                            ElementHandlerOutput::Continue { event, .. } => event,
13976                        }
13977                    }
13978                    (S::Unknown__, _) => unreachable!(),
13979                }
13980            };
13981            Ok(DeserializerOutput {
13982                artifact: DeserializerArtifact::Deserializer(self),
13983                event,
13984                allow_any,
13985            })
13986        }
13987        fn finish<R>(mut self, reader: &R) -> Result<super::ComplexContent, Error>
13988        where
13989            R: DeserializeReader,
13990        {
13991            let state = replace(&mut *self.state, ComplexContentDeserializerState::Unknown__);
13992            self.finish_state(reader, state)?;
13993            Ok(super::ComplexContent {
13994                id: self.id,
13995                mixed: self.mixed,
13996                content: self.content,
13997            })
13998        }
13999    }
14000    #[derive(Debug)]
14001    pub enum ComplexContentContentDeserializer {
14002        Init__,
14003        Annotation(
14004            Option<super::Annotation>,
14005            Option<<super::Annotation as WithDeserializer>::Deserializer>,
14006        ),
14007        Restriction(
14008            Option<super::RestrictionType>,
14009            Option<<super::RestrictionType as WithDeserializer>::Deserializer>,
14010        ),
14011        Extension(
14012            Option<super::ExtensionType>,
14013            Option<<super::ExtensionType as WithDeserializer>::Deserializer>,
14014        ),
14015        Done__(super::ComplexContentContent),
14016        Unknown__,
14017    }
14018    impl ComplexContentContentDeserializer {
14019        fn find_suitable<'de, R>(
14020            &mut self,
14021            reader: &R,
14022            event: Event<'de>,
14023            fallback: &mut Option<ComplexContentContentDeserializer>,
14024        ) -> Result<ElementHandlerOutput<'de>, Error>
14025        where
14026            R: DeserializeReader,
14027        {
14028            let (Event::Start(x) | Event::Empty(x)) = &event else {
14029                *self = Self::Init__;
14030                return Ok(ElementHandlerOutput::return_to_parent(event, false));
14031            };
14032            if matches!(
14033                reader.resolve_local_name(x.name(), &super::NS_XS),
14034                Some(b"annotation")
14035            ) {
14036                let output =
14037                    <super::Annotation as WithDeserializer>::Deserializer::init(reader, event)?;
14038                return self.handle_annotation(reader, Default::default(), output, &mut *fallback);
14039            }
14040            if matches!(
14041                reader.resolve_local_name(x.name(), &super::NS_XS),
14042                Some(b"restriction")
14043            ) {
14044                let output = <super::RestrictionType as WithDeserializer>::Deserializer::init(
14045                    reader, event,
14046                )?;
14047                return self.handle_restriction(reader, Default::default(), output, &mut *fallback);
14048            }
14049            if matches!(
14050                reader.resolve_local_name(x.name(), &super::NS_XS),
14051                Some(b"extension")
14052            ) {
14053                let output =
14054                    <super::ExtensionType as WithDeserializer>::Deserializer::init(reader, event)?;
14055                return self.handle_extension(reader, Default::default(), output, &mut *fallback);
14056            }
14057            *self = Self::Init__;
14058            Ok(ElementHandlerOutput::return_to_parent(event, false))
14059        }
14060        fn store_annotation(
14061            values: &mut Option<super::Annotation>,
14062            value: super::Annotation,
14063        ) -> Result<(), Error> {
14064            if values.is_some() {
14065                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
14066                    b"annotation",
14067                )))?;
14068            }
14069            *values = Some(value);
14070            Ok(())
14071        }
14072        fn store_restriction(
14073            values: &mut Option<super::RestrictionType>,
14074            value: super::RestrictionType,
14075        ) -> Result<(), Error> {
14076            if values.is_some() {
14077                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
14078                    b"restriction",
14079                )))?;
14080            }
14081            *values = Some(value);
14082            Ok(())
14083        }
14084        fn store_extension(
14085            values: &mut Option<super::ExtensionType>,
14086            value: super::ExtensionType,
14087        ) -> Result<(), Error> {
14088            if values.is_some() {
14089                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
14090                    b"extension",
14091                )))?;
14092            }
14093            *values = Some(value);
14094            Ok(())
14095        }
14096        fn handle_annotation<'de, R>(
14097            &mut self,
14098            reader: &R,
14099            mut values: Option<super::Annotation>,
14100            output: DeserializerOutput<'de, super::Annotation>,
14101            fallback: &mut Option<Self>,
14102        ) -> Result<ElementHandlerOutput<'de>, Error>
14103        where
14104            R: DeserializeReader,
14105        {
14106            let DeserializerOutput {
14107                artifact,
14108                event,
14109                allow_any,
14110            } = output;
14111            if artifact.is_none() {
14112                *self = match fallback.take() {
14113                    None => Self::Init__,
14114                    Some(Self::Annotation(_, Some(deserializer))) => {
14115                        Self::Annotation(values, Some(deserializer))
14116                    }
14117                    _ => unreachable!(),
14118                };
14119                return Ok(ElementHandlerOutput::break_(event, allow_any));
14120            }
14121            match fallback.take() {
14122                None => (),
14123                Some(Self::Annotation(_, Some(deserializer))) => {
14124                    let data = deserializer.finish(reader)?;
14125                    Self::store_annotation(&mut values, data)?;
14126                }
14127                Some(_) => unreachable!(),
14128            }
14129            Ok(match artifact {
14130                DeserializerArtifact::None => unreachable!(),
14131                DeserializerArtifact::Data(data) => {
14132                    Self::store_annotation(&mut values, data)?;
14133                    let data = Self::Annotation(values, None).finish(reader)?;
14134                    *self = Self::Done__(data);
14135                    ElementHandlerOutput::Break { event, allow_any }
14136                }
14137                DeserializerArtifact::Deserializer(deserializer) => {
14138                    *self = Self::Annotation(values, Some(deserializer));
14139                    ElementHandlerOutput::from_event_end(event, allow_any)
14140                }
14141            })
14142        }
14143        fn handle_restriction<'de, R>(
14144            &mut self,
14145            reader: &R,
14146            mut values: Option<super::RestrictionType>,
14147            output: DeserializerOutput<'de, super::RestrictionType>,
14148            fallback: &mut Option<Self>,
14149        ) -> Result<ElementHandlerOutput<'de>, Error>
14150        where
14151            R: DeserializeReader,
14152        {
14153            let DeserializerOutput {
14154                artifact,
14155                event,
14156                allow_any,
14157            } = output;
14158            if artifact.is_none() {
14159                *self = match fallback.take() {
14160                    None => Self::Init__,
14161                    Some(Self::Restriction(_, Some(deserializer))) => {
14162                        Self::Restriction(values, Some(deserializer))
14163                    }
14164                    _ => unreachable!(),
14165                };
14166                return Ok(ElementHandlerOutput::break_(event, allow_any));
14167            }
14168            match fallback.take() {
14169                None => (),
14170                Some(Self::Restriction(_, Some(deserializer))) => {
14171                    let data = deserializer.finish(reader)?;
14172                    Self::store_restriction(&mut values, data)?;
14173                }
14174                Some(_) => unreachable!(),
14175            }
14176            Ok(match artifact {
14177                DeserializerArtifact::None => unreachable!(),
14178                DeserializerArtifact::Data(data) => {
14179                    Self::store_restriction(&mut values, data)?;
14180                    let data = Self::Restriction(values, None).finish(reader)?;
14181                    *self = Self::Done__(data);
14182                    ElementHandlerOutput::Break { event, allow_any }
14183                }
14184                DeserializerArtifact::Deserializer(deserializer) => {
14185                    *self = Self::Restriction(values, Some(deserializer));
14186                    ElementHandlerOutput::from_event_end(event, allow_any)
14187                }
14188            })
14189        }
14190        fn handle_extension<'de, R>(
14191            &mut self,
14192            reader: &R,
14193            mut values: Option<super::ExtensionType>,
14194            output: DeserializerOutput<'de, super::ExtensionType>,
14195            fallback: &mut Option<Self>,
14196        ) -> Result<ElementHandlerOutput<'de>, Error>
14197        where
14198            R: DeserializeReader,
14199        {
14200            let DeserializerOutput {
14201                artifact,
14202                event,
14203                allow_any,
14204            } = output;
14205            if artifact.is_none() {
14206                *self = match fallback.take() {
14207                    None => Self::Init__,
14208                    Some(Self::Extension(_, Some(deserializer))) => {
14209                        Self::Extension(values, Some(deserializer))
14210                    }
14211                    _ => unreachable!(),
14212                };
14213                return Ok(ElementHandlerOutput::break_(event, allow_any));
14214            }
14215            match fallback.take() {
14216                None => (),
14217                Some(Self::Extension(_, Some(deserializer))) => {
14218                    let data = deserializer.finish(reader)?;
14219                    Self::store_extension(&mut values, data)?;
14220                }
14221                Some(_) => unreachable!(),
14222            }
14223            Ok(match artifact {
14224                DeserializerArtifact::None => unreachable!(),
14225                DeserializerArtifact::Data(data) => {
14226                    Self::store_extension(&mut values, data)?;
14227                    let data = Self::Extension(values, None).finish(reader)?;
14228                    *self = Self::Done__(data);
14229                    ElementHandlerOutput::Break { event, allow_any }
14230                }
14231                DeserializerArtifact::Deserializer(deserializer) => {
14232                    *self = Self::Extension(values, Some(deserializer));
14233                    ElementHandlerOutput::from_event_end(event, allow_any)
14234                }
14235            })
14236        }
14237    }
14238    impl<'de> Deserializer<'de, super::ComplexContentContent> for ComplexContentContentDeserializer {
14239        fn init<R>(
14240            reader: &R,
14241            event: Event<'de>,
14242        ) -> DeserializerResult<'de, super::ComplexContentContent>
14243        where
14244            R: DeserializeReader,
14245        {
14246            let deserializer = Self::Init__;
14247            let mut output = deserializer.next(reader, event)?;
14248            output.artifact = match output.artifact {
14249                DeserializerArtifact::Deserializer(Self::Init__) => DeserializerArtifact::None,
14250                artifact => artifact,
14251            };
14252            Ok(output)
14253        }
14254        fn next<R>(
14255            mut self,
14256            reader: &R,
14257            event: Event<'de>,
14258        ) -> DeserializerResult<'de, super::ComplexContentContent>
14259        where
14260            R: DeserializeReader,
14261        {
14262            let mut event = event;
14263            let mut fallback = None;
14264            let (event, allow_any) = loop {
14265                let state = replace(&mut self, Self::Unknown__);
14266                event = match (state, event) {
14267                    (Self::Annotation(values, Some(deserializer)), event) => {
14268                        let output = deserializer.next(reader, event)?;
14269                        match self.handle_annotation(reader, values, output, &mut fallback)? {
14270                            ElementHandlerOutput::Break { event, allow_any } => {
14271                                break (event, allow_any)
14272                            }
14273                            ElementHandlerOutput::Continue { event, .. } => event,
14274                        }
14275                    }
14276                    (Self::Restriction(values, Some(deserializer)), event) => {
14277                        let output = deserializer.next(reader, event)?;
14278                        match self.handle_restriction(reader, values, output, &mut fallback)? {
14279                            ElementHandlerOutput::Break { event, allow_any } => {
14280                                break (event, allow_any)
14281                            }
14282                            ElementHandlerOutput::Continue { event, .. } => event,
14283                        }
14284                    }
14285                    (Self::Extension(values, Some(deserializer)), event) => {
14286                        let output = deserializer.next(reader, event)?;
14287                        match self.handle_extension(reader, values, output, &mut fallback)? {
14288                            ElementHandlerOutput::Break { event, allow_any } => {
14289                                break (event, allow_any)
14290                            }
14291                            ElementHandlerOutput::Continue { event, .. } => event,
14292                        }
14293                    }
14294                    (state, event @ Event::End(_)) => {
14295                        return Ok(DeserializerOutput {
14296                            artifact: DeserializerArtifact::Data(state.finish(reader)?),
14297                            event: DeserializerEvent::Continue(event),
14298                            allow_any: false,
14299                        });
14300                    }
14301                    (Self::Init__, event) => {
14302                        match self.find_suitable(reader, event, &mut fallback)? {
14303                            ElementHandlerOutput::Break { event, allow_any } => {
14304                                break (event, allow_any)
14305                            }
14306                            ElementHandlerOutput::Continue { event, .. } => event,
14307                        }
14308                    }
14309                    (Self::Annotation(values, None), event) => {
14310                        let output = <super::Annotation as WithDeserializer>::Deserializer::init(
14311                            reader, event,
14312                        )?;
14313                        match self.handle_annotation(reader, values, output, &mut fallback)? {
14314                            ElementHandlerOutput::Break { event, allow_any } => {
14315                                break (event, allow_any)
14316                            }
14317                            ElementHandlerOutput::Continue { event, .. } => event,
14318                        }
14319                    }
14320                    (Self::Restriction(values, None), event) => {
14321                        let output =
14322                            <super::RestrictionType as WithDeserializer>::Deserializer::init(
14323                                reader, event,
14324                            )?;
14325                        match self.handle_restriction(reader, values, output, &mut fallback)? {
14326                            ElementHandlerOutput::Break { event, allow_any } => {
14327                                break (event, allow_any)
14328                            }
14329                            ElementHandlerOutput::Continue { event, .. } => event,
14330                        }
14331                    }
14332                    (Self::Extension(values, None), event) => {
14333                        let output =
14334                            <super::ExtensionType as WithDeserializer>::Deserializer::init(
14335                                reader, event,
14336                            )?;
14337                        match self.handle_extension(reader, values, output, &mut fallback)? {
14338                            ElementHandlerOutput::Break { event, allow_any } => {
14339                                break (event, allow_any)
14340                            }
14341                            ElementHandlerOutput::Continue { event, .. } => event,
14342                        }
14343                    }
14344                    (s @ Self::Done__(_), event) => {
14345                        self = s;
14346                        break (DeserializerEvent::Continue(event), false);
14347                    }
14348                    (Self::Unknown__, _) => unreachable!(),
14349                }
14350            };
14351            let artifact = match self {
14352                Self::Done__(data) => DeserializerArtifact::Data(data),
14353                deserializer => DeserializerArtifact::Deserializer(deserializer),
14354            };
14355            Ok(DeserializerOutput {
14356                artifact,
14357                event,
14358                allow_any,
14359            })
14360        }
14361        fn finish<R>(self, reader: &R) -> Result<super::ComplexContentContent, Error>
14362        where
14363            R: DeserializeReader,
14364        {
14365            match self {
14366                Self::Init__ => Err(ErrorKind::MissingContent.into()),
14367                Self::Annotation(mut values, deserializer) => {
14368                    if let Some(deserializer) = deserializer {
14369                        let value = deserializer.finish(reader)?;
14370                        Self::store_annotation(&mut values, value)?;
14371                    }
14372                    Ok(super::ComplexContentContent::Annotation(
14373                        values.ok_or_else(|| ErrorKind::MissingElement("annotation".into()))?,
14374                    ))
14375                }
14376                Self::Restriction(mut values, deserializer) => {
14377                    if let Some(deserializer) = deserializer {
14378                        let value = deserializer.finish(reader)?;
14379                        Self::store_restriction(&mut values, value)?;
14380                    }
14381                    Ok(super::ComplexContentContent::Restriction(
14382                        values.ok_or_else(|| ErrorKind::MissingElement("restriction".into()))?,
14383                    ))
14384                }
14385                Self::Extension(mut values, deserializer) => {
14386                    if let Some(deserializer) = deserializer {
14387                        let value = deserializer.finish(reader)?;
14388                        Self::store_extension(&mut values, value)?;
14389                    }
14390                    Ok(super::ComplexContentContent::Extension(values.ok_or_else(
14391                        || ErrorKind::MissingElement("extension".into()),
14392                    )?))
14393                }
14394                Self::Done__(data) => Ok(data),
14395                Self::Unknown__ => unreachable!(),
14396            }
14397        }
14398    }
14399    #[derive(Debug)]
14400    pub struct OpenContentDeserializer {
14401        id: Option<String>,
14402        mode: super::OpenContentModeType,
14403        annotation: Option<super::Annotation>,
14404        any: Option<super::WildcardType>,
14405        state: Box<OpenContentDeserializerState>,
14406    }
14407    #[derive(Debug)]
14408    enum OpenContentDeserializerState {
14409        Init__,
14410        Annotation(Option<<super::Annotation as WithDeserializer>::Deserializer>),
14411        Any(Option<<super::WildcardType as WithDeserializer>::Deserializer>),
14412        Done__,
14413        Unknown__,
14414    }
14415    impl OpenContentDeserializer {
14416        fn from_bytes_start<R>(reader: &R, bytes_start: &BytesStart<'_>) -> Result<Self, Error>
14417        where
14418            R: DeserializeReader,
14419        {
14420            let mut id: Option<String> = None;
14421            let mut mode: Option<super::OpenContentModeType> = None;
14422            for attrib in filter_xmlns_attributes(bytes_start) {
14423                let attrib = attrib?;
14424                if matches!(
14425                    reader.resolve_local_name(attrib.key, &super::NS_XS),
14426                    Some(b"id")
14427                ) {
14428                    reader.read_attrib(&mut id, b"id", &attrib.value)?;
14429                } else if matches!(
14430                    reader.resolve_local_name(attrib.key, &super::NS_XS),
14431                    Some(b"mode")
14432                ) {
14433                    reader.read_attrib(&mut mode, b"mode", &attrib.value)?;
14434                }
14435            }
14436            Ok(Self {
14437                id: id,
14438                mode: mode.unwrap_or_else(super::OpenContent::default_mode),
14439                annotation: None,
14440                any: None,
14441                state: Box::new(OpenContentDeserializerState::Init__),
14442            })
14443        }
14444        fn finish_state<R>(
14445            &mut self,
14446            reader: &R,
14447            state: OpenContentDeserializerState,
14448        ) -> Result<(), Error>
14449        where
14450            R: DeserializeReader,
14451        {
14452            use OpenContentDeserializerState as S;
14453            match state {
14454                S::Annotation(Some(deserializer)) => {
14455                    self.store_annotation(deserializer.finish(reader)?)?
14456                }
14457                S::Any(Some(deserializer)) => self.store_any(deserializer.finish(reader)?)?,
14458                _ => (),
14459            }
14460            Ok(())
14461        }
14462        fn store_annotation(&mut self, value: super::Annotation) -> Result<(), Error> {
14463            if self.annotation.is_some() {
14464                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
14465                    b"annotation",
14466                )))?;
14467            }
14468            self.annotation = Some(value);
14469            Ok(())
14470        }
14471        fn store_any(&mut self, value: super::WildcardType) -> Result<(), Error> {
14472            if self.any.is_some() {
14473                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(b"any")))?;
14474            }
14475            self.any = Some(value);
14476            Ok(())
14477        }
14478        fn handle_annotation<'de, R>(
14479            &mut self,
14480            reader: &R,
14481            output: DeserializerOutput<'de, super::Annotation>,
14482            fallback: &mut Option<OpenContentDeserializerState>,
14483        ) -> Result<ElementHandlerOutput<'de>, Error>
14484        where
14485            R: DeserializeReader,
14486        {
14487            let DeserializerOutput {
14488                artifact,
14489                event,
14490                allow_any,
14491            } = output;
14492            if artifact.is_none() {
14493                fallback.get_or_insert(OpenContentDeserializerState::Annotation(None));
14494                *self.state = OpenContentDeserializerState::Any(None);
14495                return Ok(ElementHandlerOutput::from_event(event, allow_any));
14496            }
14497            if let Some(fallback) = fallback.take() {
14498                self.finish_state(reader, fallback)?;
14499            }
14500            Ok(match artifact {
14501                DeserializerArtifact::None => unreachable!(),
14502                DeserializerArtifact::Data(data) => {
14503                    self.store_annotation(data)?;
14504                    *self.state = OpenContentDeserializerState::Any(None);
14505                    ElementHandlerOutput::from_event(event, allow_any)
14506                }
14507                DeserializerArtifact::Deserializer(deserializer) => {
14508                    let ret = ElementHandlerOutput::from_event(event, allow_any);
14509                    match &ret {
14510                        ElementHandlerOutput::Continue { .. } => {
14511                            fallback.get_or_insert(OpenContentDeserializerState::Annotation(Some(
14512                                deserializer,
14513                            )));
14514                            *self.state = OpenContentDeserializerState::Any(None);
14515                        }
14516                        ElementHandlerOutput::Break { .. } => {
14517                            *self.state =
14518                                OpenContentDeserializerState::Annotation(Some(deserializer));
14519                        }
14520                    }
14521                    ret
14522                }
14523            })
14524        }
14525        fn handle_any<'de, R>(
14526            &mut self,
14527            reader: &R,
14528            output: DeserializerOutput<'de, super::WildcardType>,
14529            fallback: &mut Option<OpenContentDeserializerState>,
14530        ) -> Result<ElementHandlerOutput<'de>, Error>
14531        where
14532            R: DeserializeReader,
14533        {
14534            let DeserializerOutput {
14535                artifact,
14536                event,
14537                allow_any,
14538            } = output;
14539            if artifact.is_none() {
14540                fallback.get_or_insert(OpenContentDeserializerState::Any(None));
14541                *self.state = OpenContentDeserializerState::Done__;
14542                return Ok(ElementHandlerOutput::from_event(event, allow_any));
14543            }
14544            if let Some(fallback) = fallback.take() {
14545                self.finish_state(reader, fallback)?;
14546            }
14547            Ok(match artifact {
14548                DeserializerArtifact::None => unreachable!(),
14549                DeserializerArtifact::Data(data) => {
14550                    self.store_any(data)?;
14551                    *self.state = OpenContentDeserializerState::Done__;
14552                    ElementHandlerOutput::from_event(event, allow_any)
14553                }
14554                DeserializerArtifact::Deserializer(deserializer) => {
14555                    let ret = ElementHandlerOutput::from_event(event, allow_any);
14556                    match &ret {
14557                        ElementHandlerOutput::Continue { .. } => {
14558                            fallback.get_or_insert(OpenContentDeserializerState::Any(Some(
14559                                deserializer,
14560                            )));
14561                            *self.state = OpenContentDeserializerState::Done__;
14562                        }
14563                        ElementHandlerOutput::Break { .. } => {
14564                            *self.state = OpenContentDeserializerState::Any(Some(deserializer));
14565                        }
14566                    }
14567                    ret
14568                }
14569            })
14570        }
14571    }
14572    impl<'de> Deserializer<'de, super::OpenContent> for OpenContentDeserializer {
14573        fn init<R>(reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::OpenContent>
14574        where
14575            R: DeserializeReader,
14576        {
14577            reader.init_deserializer_from_start_event(event, Self::from_bytes_start)
14578        }
14579        fn next<R>(
14580            mut self,
14581            reader: &R,
14582            event: Event<'de>,
14583        ) -> DeserializerResult<'de, super::OpenContent>
14584        where
14585            R: DeserializeReader,
14586        {
14587            use OpenContentDeserializerState as S;
14588            let mut event = event;
14589            let mut fallback = None;
14590            let mut allow_any_element = false;
14591            let (event, allow_any) = loop {
14592                let state = replace(&mut *self.state, S::Unknown__);
14593                event = match (state, event) {
14594                    (S::Annotation(Some(deserializer)), event) => {
14595                        let output = deserializer.next(reader, event)?;
14596                        match self.handle_annotation(reader, output, &mut fallback)? {
14597                            ElementHandlerOutput::Continue { event, allow_any } => {
14598                                allow_any_element = allow_any_element || allow_any;
14599                                event
14600                            }
14601                            ElementHandlerOutput::Break { event, allow_any } => {
14602                                break (event, allow_any)
14603                            }
14604                        }
14605                    }
14606                    (S::Any(Some(deserializer)), event) => {
14607                        let output = deserializer.next(reader, event)?;
14608                        match self.handle_any(reader, output, &mut fallback)? {
14609                            ElementHandlerOutput::Continue { event, allow_any } => {
14610                                allow_any_element = allow_any_element || allow_any;
14611                                event
14612                            }
14613                            ElementHandlerOutput::Break { event, allow_any } => {
14614                                break (event, allow_any)
14615                            }
14616                        }
14617                    }
14618                    (_, Event::End(_)) => {
14619                        if let Some(fallback) = fallback.take() {
14620                            self.finish_state(reader, fallback)?;
14621                        }
14622                        return Ok(DeserializerOutput {
14623                            artifact: DeserializerArtifact::Data(self.finish(reader)?),
14624                            event: DeserializerEvent::None,
14625                            allow_any: false,
14626                        });
14627                    }
14628                    (S::Init__, event) => {
14629                        fallback.get_or_insert(S::Init__);
14630                        *self.state = OpenContentDeserializerState::Annotation(None);
14631                        event
14632                    }
14633                    (S::Annotation(None), event @ (Event::Start(_) | Event::Empty(_))) => {
14634                        if reader.check_start_tag_name(&event, Some(&super::NS_XS), b"annotation") {
14635                            let output =
14636                                <super::Annotation as WithDeserializer>::Deserializer::init(
14637                                    reader, event,
14638                                )?;
14639                            match self.handle_annotation(reader, output, &mut fallback)? {
14640                                ElementHandlerOutput::Continue { event, allow_any } => {
14641                                    allow_any_element = allow_any_element || allow_any;
14642                                    event
14643                                }
14644                                ElementHandlerOutput::Break { event, allow_any } => {
14645                                    break (event, allow_any)
14646                                }
14647                            }
14648                        } else {
14649                            *self.state = S::Any(None);
14650                            allow_any_element = true;
14651                            fallback.get_or_insert(S::Annotation(None));
14652                            event
14653                        }
14654                    }
14655                    (S::Any(None), event @ (Event::Start(_) | Event::Empty(_))) => {
14656                        if reader.check_start_tag_name(&event, Some(&super::NS_XS), b"any") {
14657                            let output =
14658                                <super::WildcardType as WithDeserializer>::Deserializer::init(
14659                                    reader, event,
14660                                )?;
14661                            match self.handle_any(reader, output, &mut fallback)? {
14662                                ElementHandlerOutput::Continue { event, allow_any } => {
14663                                    allow_any_element = allow_any_element || allow_any;
14664                                    event
14665                                }
14666                                ElementHandlerOutput::Break { event, allow_any } => {
14667                                    break (event, allow_any)
14668                                }
14669                            }
14670                        } else {
14671                            *self.state = S::Done__;
14672                            allow_any_element = true;
14673                            fallback.get_or_insert(S::Any(None));
14674                            event
14675                        }
14676                    }
14677                    (S::Done__, event) => {
14678                        fallback.get_or_insert(S::Done__);
14679                        break (DeserializerEvent::Continue(event), allow_any_element);
14680                    }
14681                    (S::Unknown__, _) => unreachable!(),
14682                    (state, event) => {
14683                        *self.state = state;
14684                        break (DeserializerEvent::Break(event), false);
14685                    }
14686                }
14687            };
14688            if let Some(fallback) = fallback {
14689                *self.state = fallback;
14690            }
14691            Ok(DeserializerOutput {
14692                artifact: DeserializerArtifact::Deserializer(self),
14693                event,
14694                allow_any,
14695            })
14696        }
14697        fn finish<R>(mut self, reader: &R) -> Result<super::OpenContent, Error>
14698        where
14699            R: DeserializeReader,
14700        {
14701            let state = replace(&mut *self.state, OpenContentDeserializerState::Unknown__);
14702            self.finish_state(reader, state)?;
14703            Ok(super::OpenContent {
14704                id: self.id,
14705                mode: self.mode,
14706                annotation: self.annotation,
14707                any: self.any,
14708            })
14709        }
14710    }
14711    #[derive(Debug)]
14712    pub struct AnyAttributeDeserializer {
14713        id: Option<String>,
14714        namespace: Option<super::NamespaceListType>,
14715        not_namespace: Option<super::BasicNamespaceListType>,
14716        process_contents: super::ProcessContentsType,
14717        not_q_name: Option<super::QnameListAType>,
14718        annotation: Option<super::Annotation>,
14719        state: Box<AnyAttributeDeserializerState>,
14720    }
14721    #[derive(Debug)]
14722    enum AnyAttributeDeserializerState {
14723        Init__,
14724        Annotation(Option<<super::Annotation as WithDeserializer>::Deserializer>),
14725        Done__,
14726        Unknown__,
14727    }
14728    impl AnyAttributeDeserializer {
14729        fn from_bytes_start<R>(reader: &R, bytes_start: &BytesStart<'_>) -> Result<Self, Error>
14730        where
14731            R: DeserializeReader,
14732        {
14733            let mut id: Option<String> = None;
14734            let mut namespace: Option<super::NamespaceListType> = None;
14735            let mut not_namespace: Option<super::BasicNamespaceListType> = None;
14736            let mut process_contents: Option<super::ProcessContentsType> = None;
14737            let mut not_q_name: Option<super::QnameListAType> = None;
14738            for attrib in filter_xmlns_attributes(bytes_start) {
14739                let attrib = attrib?;
14740                if matches!(
14741                    reader.resolve_local_name(attrib.key, &super::NS_XS),
14742                    Some(b"id")
14743                ) {
14744                    reader.read_attrib(&mut id, b"id", &attrib.value)?;
14745                } else if matches!(
14746                    reader.resolve_local_name(attrib.key, &super::NS_XS),
14747                    Some(b"namespace")
14748                ) {
14749                    reader.read_attrib(&mut namespace, b"namespace", &attrib.value)?;
14750                } else if matches!(
14751                    reader.resolve_local_name(attrib.key, &super::NS_XS),
14752                    Some(b"notNamespace")
14753                ) {
14754                    reader.read_attrib(&mut not_namespace, b"notNamespace", &attrib.value)?;
14755                } else if matches!(
14756                    reader.resolve_local_name(attrib.key, &super::NS_XS),
14757                    Some(b"processContents")
14758                ) {
14759                    reader.read_attrib(&mut process_contents, b"processContents", &attrib.value)?;
14760                } else if matches!(
14761                    reader.resolve_local_name(attrib.key, &super::NS_XS),
14762                    Some(b"notQName")
14763                ) {
14764                    reader.read_attrib(&mut not_q_name, b"notQName", &attrib.value)?;
14765                }
14766            }
14767            Ok(Self {
14768                id: id,
14769                namespace: namespace,
14770                not_namespace: not_namespace,
14771                process_contents: process_contents
14772                    .unwrap_or_else(super::AnyAttribute::default_process_contents),
14773                not_q_name: not_q_name,
14774                annotation: None,
14775                state: Box::new(AnyAttributeDeserializerState::Init__),
14776            })
14777        }
14778        fn finish_state<R>(
14779            &mut self,
14780            reader: &R,
14781            state: AnyAttributeDeserializerState,
14782        ) -> Result<(), Error>
14783        where
14784            R: DeserializeReader,
14785        {
14786            use AnyAttributeDeserializerState as S;
14787            match state {
14788                S::Annotation(Some(deserializer)) => {
14789                    self.store_annotation(deserializer.finish(reader)?)?
14790                }
14791                _ => (),
14792            }
14793            Ok(())
14794        }
14795        fn store_annotation(&mut self, value: super::Annotation) -> Result<(), Error> {
14796            if self.annotation.is_some() {
14797                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
14798                    b"annotation",
14799                )))?;
14800            }
14801            self.annotation = Some(value);
14802            Ok(())
14803        }
14804        fn handle_annotation<'de, R>(
14805            &mut self,
14806            reader: &R,
14807            output: DeserializerOutput<'de, super::Annotation>,
14808            fallback: &mut Option<AnyAttributeDeserializerState>,
14809        ) -> Result<ElementHandlerOutput<'de>, Error>
14810        where
14811            R: DeserializeReader,
14812        {
14813            let DeserializerOutput {
14814                artifact,
14815                event,
14816                allow_any,
14817            } = output;
14818            if artifact.is_none() {
14819                fallback.get_or_insert(AnyAttributeDeserializerState::Annotation(None));
14820                *self.state = AnyAttributeDeserializerState::Done__;
14821                return Ok(ElementHandlerOutput::from_event(event, allow_any));
14822            }
14823            if let Some(fallback) = fallback.take() {
14824                self.finish_state(reader, fallback)?;
14825            }
14826            Ok(match artifact {
14827                DeserializerArtifact::None => unreachable!(),
14828                DeserializerArtifact::Data(data) => {
14829                    self.store_annotation(data)?;
14830                    *self.state = AnyAttributeDeserializerState::Done__;
14831                    ElementHandlerOutput::from_event(event, allow_any)
14832                }
14833                DeserializerArtifact::Deserializer(deserializer) => {
14834                    let ret = ElementHandlerOutput::from_event(event, allow_any);
14835                    match &ret {
14836                        ElementHandlerOutput::Continue { .. } => {
14837                            fallback.get_or_insert(AnyAttributeDeserializerState::Annotation(
14838                                Some(deserializer),
14839                            ));
14840                            *self.state = AnyAttributeDeserializerState::Done__;
14841                        }
14842                        ElementHandlerOutput::Break { .. } => {
14843                            *self.state =
14844                                AnyAttributeDeserializerState::Annotation(Some(deserializer));
14845                        }
14846                    }
14847                    ret
14848                }
14849            })
14850        }
14851    }
14852    impl<'de> Deserializer<'de, super::AnyAttribute> for AnyAttributeDeserializer {
14853        fn init<R>(reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::AnyAttribute>
14854        where
14855            R: DeserializeReader,
14856        {
14857            reader.init_deserializer_from_start_event(event, Self::from_bytes_start)
14858        }
14859        fn next<R>(
14860            mut self,
14861            reader: &R,
14862            event: Event<'de>,
14863        ) -> DeserializerResult<'de, super::AnyAttribute>
14864        where
14865            R: DeserializeReader,
14866        {
14867            use AnyAttributeDeserializerState as S;
14868            let mut event = event;
14869            let mut fallback = None;
14870            let mut allow_any_element = false;
14871            let (event, allow_any) = loop {
14872                let state = replace(&mut *self.state, S::Unknown__);
14873                event = match (state, event) {
14874                    (S::Annotation(Some(deserializer)), event) => {
14875                        let output = deserializer.next(reader, event)?;
14876                        match self.handle_annotation(reader, output, &mut fallback)? {
14877                            ElementHandlerOutput::Continue { event, allow_any } => {
14878                                allow_any_element = allow_any_element || allow_any;
14879                                event
14880                            }
14881                            ElementHandlerOutput::Break { event, allow_any } => {
14882                                break (event, allow_any)
14883                            }
14884                        }
14885                    }
14886                    (_, Event::End(_)) => {
14887                        if let Some(fallback) = fallback.take() {
14888                            self.finish_state(reader, fallback)?;
14889                        }
14890                        return Ok(DeserializerOutput {
14891                            artifact: DeserializerArtifact::Data(self.finish(reader)?),
14892                            event: DeserializerEvent::None,
14893                            allow_any: false,
14894                        });
14895                    }
14896                    (S::Init__, event) => {
14897                        fallback.get_or_insert(S::Init__);
14898                        *self.state = AnyAttributeDeserializerState::Annotation(None);
14899                        event
14900                    }
14901                    (S::Annotation(None), event @ (Event::Start(_) | Event::Empty(_))) => {
14902                        if reader.check_start_tag_name(&event, Some(&super::NS_XS), b"annotation") {
14903                            let output =
14904                                <super::Annotation as WithDeserializer>::Deserializer::init(
14905                                    reader, event,
14906                                )?;
14907                            match self.handle_annotation(reader, output, &mut fallback)? {
14908                                ElementHandlerOutput::Continue { event, allow_any } => {
14909                                    allow_any_element = allow_any_element || allow_any;
14910                                    event
14911                                }
14912                                ElementHandlerOutput::Break { event, allow_any } => {
14913                                    break (event, allow_any)
14914                                }
14915                            }
14916                        } else {
14917                            *self.state = S::Done__;
14918                            allow_any_element = true;
14919                            fallback.get_or_insert(S::Annotation(None));
14920                            event
14921                        }
14922                    }
14923                    (S::Done__, event) => {
14924                        fallback.get_or_insert(S::Done__);
14925                        break (DeserializerEvent::Continue(event), allow_any_element);
14926                    }
14927                    (S::Unknown__, _) => unreachable!(),
14928                    (state, event) => {
14929                        *self.state = state;
14930                        break (DeserializerEvent::Break(event), false);
14931                    }
14932                }
14933            };
14934            if let Some(fallback) = fallback {
14935                *self.state = fallback;
14936            }
14937            Ok(DeserializerOutput {
14938                artifact: DeserializerArtifact::Deserializer(self),
14939                event,
14940                allow_any,
14941            })
14942        }
14943        fn finish<R>(mut self, reader: &R) -> Result<super::AnyAttribute, Error>
14944        where
14945            R: DeserializeReader,
14946        {
14947            let state = replace(&mut *self.state, AnyAttributeDeserializerState::Unknown__);
14948            self.finish_state(reader, state)?;
14949            Ok(super::AnyAttribute {
14950                id: self.id,
14951                namespace: self.namespace,
14952                not_namespace: self.not_namespace,
14953                process_contents: self.process_contents,
14954                not_q_name: self.not_q_name,
14955                annotation: self.annotation,
14956            })
14957        }
14958    }
14959    #[derive(Debug)]
14960    pub struct AssertionTypeDeserializer {
14961        id: Option<String>,
14962        test: Option<String>,
14963        xpath_default_namespace: Option<super::XpathDefaultNamespaceType>,
14964        annotation: Option<super::Annotation>,
14965        state: Box<AssertionTypeDeserializerState>,
14966    }
14967    #[derive(Debug)]
14968    enum AssertionTypeDeserializerState {
14969        Init__,
14970        Annotation(Option<<super::Annotation as WithDeserializer>::Deserializer>),
14971        Done__,
14972        Unknown__,
14973    }
14974    impl AssertionTypeDeserializer {
14975        fn from_bytes_start<R>(reader: &R, bytes_start: &BytesStart<'_>) -> Result<Self, Error>
14976        where
14977            R: DeserializeReader,
14978        {
14979            let mut id: Option<String> = None;
14980            let mut test: Option<String> = None;
14981            let mut xpath_default_namespace: Option<super::XpathDefaultNamespaceType> = None;
14982            for attrib in filter_xmlns_attributes(bytes_start) {
14983                let attrib = attrib?;
14984                if matches!(
14985                    reader.resolve_local_name(attrib.key, &super::NS_XS),
14986                    Some(b"id")
14987                ) {
14988                    reader.read_attrib(&mut id, b"id", &attrib.value)?;
14989                } else if matches!(
14990                    reader.resolve_local_name(attrib.key, &super::NS_XS),
14991                    Some(b"test")
14992                ) {
14993                    reader.read_attrib(&mut test, b"test", &attrib.value)?;
14994                } else if matches!(
14995                    reader.resolve_local_name(attrib.key, &super::NS_XS),
14996                    Some(b"xpathDefaultNamespace")
14997                ) {
14998                    reader.read_attrib(
14999                        &mut xpath_default_namespace,
15000                        b"xpathDefaultNamespace",
15001                        &attrib.value,
15002                    )?;
15003                }
15004            }
15005            Ok(Self {
15006                id: id,
15007                test: test,
15008                xpath_default_namespace: xpath_default_namespace,
15009                annotation: None,
15010                state: Box::new(AssertionTypeDeserializerState::Init__),
15011            })
15012        }
15013        fn finish_state<R>(
15014            &mut self,
15015            reader: &R,
15016            state: AssertionTypeDeserializerState,
15017        ) -> Result<(), Error>
15018        where
15019            R: DeserializeReader,
15020        {
15021            use AssertionTypeDeserializerState as S;
15022            match state {
15023                S::Annotation(Some(deserializer)) => {
15024                    self.store_annotation(deserializer.finish(reader)?)?
15025                }
15026                _ => (),
15027            }
15028            Ok(())
15029        }
15030        fn store_annotation(&mut self, value: super::Annotation) -> Result<(), Error> {
15031            if self.annotation.is_some() {
15032                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
15033                    b"annotation",
15034                )))?;
15035            }
15036            self.annotation = Some(value);
15037            Ok(())
15038        }
15039        fn handle_annotation<'de, R>(
15040            &mut self,
15041            reader: &R,
15042            output: DeserializerOutput<'de, super::Annotation>,
15043            fallback: &mut Option<AssertionTypeDeserializerState>,
15044        ) -> Result<ElementHandlerOutput<'de>, Error>
15045        where
15046            R: DeserializeReader,
15047        {
15048            let DeserializerOutput {
15049                artifact,
15050                event,
15051                allow_any,
15052            } = output;
15053            if artifact.is_none() {
15054                fallback.get_or_insert(AssertionTypeDeserializerState::Annotation(None));
15055                *self.state = AssertionTypeDeserializerState::Done__;
15056                return Ok(ElementHandlerOutput::from_event(event, allow_any));
15057            }
15058            if let Some(fallback) = fallback.take() {
15059                self.finish_state(reader, fallback)?;
15060            }
15061            Ok(match artifact {
15062                DeserializerArtifact::None => unreachable!(),
15063                DeserializerArtifact::Data(data) => {
15064                    self.store_annotation(data)?;
15065                    *self.state = AssertionTypeDeserializerState::Done__;
15066                    ElementHandlerOutput::from_event(event, allow_any)
15067                }
15068                DeserializerArtifact::Deserializer(deserializer) => {
15069                    let ret = ElementHandlerOutput::from_event(event, allow_any);
15070                    match &ret {
15071                        ElementHandlerOutput::Continue { .. } => {
15072                            fallback.get_or_insert(AssertionTypeDeserializerState::Annotation(
15073                                Some(deserializer),
15074                            ));
15075                            *self.state = AssertionTypeDeserializerState::Done__;
15076                        }
15077                        ElementHandlerOutput::Break { .. } => {
15078                            *self.state =
15079                                AssertionTypeDeserializerState::Annotation(Some(deserializer));
15080                        }
15081                    }
15082                    ret
15083                }
15084            })
15085        }
15086    }
15087    impl<'de> Deserializer<'de, super::AssertionType> for AssertionTypeDeserializer {
15088        fn init<R>(reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::AssertionType>
15089        where
15090            R: DeserializeReader,
15091        {
15092            reader.init_deserializer_from_start_event(event, Self::from_bytes_start)
15093        }
15094        fn next<R>(
15095            mut self,
15096            reader: &R,
15097            event: Event<'de>,
15098        ) -> DeserializerResult<'de, super::AssertionType>
15099        where
15100            R: DeserializeReader,
15101        {
15102            use AssertionTypeDeserializerState as S;
15103            let mut event = event;
15104            let mut fallback = None;
15105            let mut allow_any_element = false;
15106            let (event, allow_any) = loop {
15107                let state = replace(&mut *self.state, S::Unknown__);
15108                event = match (state, event) {
15109                    (S::Annotation(Some(deserializer)), event) => {
15110                        let output = deserializer.next(reader, event)?;
15111                        match self.handle_annotation(reader, output, &mut fallback)? {
15112                            ElementHandlerOutput::Continue { event, allow_any } => {
15113                                allow_any_element = allow_any_element || allow_any;
15114                                event
15115                            }
15116                            ElementHandlerOutput::Break { event, allow_any } => {
15117                                break (event, allow_any)
15118                            }
15119                        }
15120                    }
15121                    (_, Event::End(_)) => {
15122                        if let Some(fallback) = fallback.take() {
15123                            self.finish_state(reader, fallback)?;
15124                        }
15125                        return Ok(DeserializerOutput {
15126                            artifact: DeserializerArtifact::Data(self.finish(reader)?),
15127                            event: DeserializerEvent::None,
15128                            allow_any: false,
15129                        });
15130                    }
15131                    (S::Init__, event) => {
15132                        fallback.get_or_insert(S::Init__);
15133                        *self.state = AssertionTypeDeserializerState::Annotation(None);
15134                        event
15135                    }
15136                    (S::Annotation(None), event @ (Event::Start(_) | Event::Empty(_))) => {
15137                        if reader.check_start_tag_name(&event, Some(&super::NS_XS), b"annotation") {
15138                            let output =
15139                                <super::Annotation as WithDeserializer>::Deserializer::init(
15140                                    reader, event,
15141                                )?;
15142                            match self.handle_annotation(reader, output, &mut fallback)? {
15143                                ElementHandlerOutput::Continue { event, allow_any } => {
15144                                    allow_any_element = allow_any_element || allow_any;
15145                                    event
15146                                }
15147                                ElementHandlerOutput::Break { event, allow_any } => {
15148                                    break (event, allow_any)
15149                                }
15150                            }
15151                        } else {
15152                            *self.state = S::Done__;
15153                            allow_any_element = true;
15154                            fallback.get_or_insert(S::Annotation(None));
15155                            event
15156                        }
15157                    }
15158                    (S::Done__, event) => {
15159                        fallback.get_or_insert(S::Done__);
15160                        break (DeserializerEvent::Continue(event), allow_any_element);
15161                    }
15162                    (S::Unknown__, _) => unreachable!(),
15163                    (state, event) => {
15164                        *self.state = state;
15165                        break (DeserializerEvent::Break(event), false);
15166                    }
15167                }
15168            };
15169            if let Some(fallback) = fallback {
15170                *self.state = fallback;
15171            }
15172            Ok(DeserializerOutput {
15173                artifact: DeserializerArtifact::Deserializer(self),
15174                event,
15175                allow_any,
15176            })
15177        }
15178        fn finish<R>(mut self, reader: &R) -> Result<super::AssertionType, Error>
15179        where
15180            R: DeserializeReader,
15181        {
15182            let state = replace(&mut *self.state, AssertionTypeDeserializerState::Unknown__);
15183            self.finish_state(reader, state)?;
15184            Ok(super::AssertionType {
15185                id: self.id,
15186                test: self.test,
15187                xpath_default_namespace: self.xpath_default_namespace,
15188                annotation: self.annotation,
15189            })
15190        }
15191    }
15192    #[derive(Debug)]
15193    pub struct AnyDeserializer {
15194        id: Option<String>,
15195        namespace: Option<super::NamespaceListType>,
15196        not_namespace: Option<super::BasicNamespaceListType>,
15197        process_contents: super::ProcessContentsType,
15198        not_q_name: Option<super::QnameListType>,
15199        min_occurs: usize,
15200        max_occurs: super::MaxOccurs,
15201        annotation: Option<super::Annotation>,
15202        state: Box<AnyDeserializerState>,
15203    }
15204    #[derive(Debug)]
15205    enum AnyDeserializerState {
15206        Init__,
15207        Annotation(Option<<super::Annotation as WithDeserializer>::Deserializer>),
15208        Done__,
15209        Unknown__,
15210    }
15211    impl AnyDeserializer {
15212        fn from_bytes_start<R>(reader: &R, bytes_start: &BytesStart<'_>) -> Result<Self, Error>
15213        where
15214            R: DeserializeReader,
15215        {
15216            let mut id: Option<String> = None;
15217            let mut namespace: Option<super::NamespaceListType> = None;
15218            let mut not_namespace: Option<super::BasicNamespaceListType> = None;
15219            let mut process_contents: Option<super::ProcessContentsType> = None;
15220            let mut not_q_name: Option<super::QnameListType> = None;
15221            let mut min_occurs: Option<usize> = None;
15222            let mut max_occurs: Option<super::MaxOccurs> = None;
15223            for attrib in filter_xmlns_attributes(bytes_start) {
15224                let attrib = attrib?;
15225                if matches!(
15226                    reader.resolve_local_name(attrib.key, &super::NS_XS),
15227                    Some(b"id")
15228                ) {
15229                    reader.read_attrib(&mut id, b"id", &attrib.value)?;
15230                } else if matches!(
15231                    reader.resolve_local_name(attrib.key, &super::NS_XS),
15232                    Some(b"namespace")
15233                ) {
15234                    reader.read_attrib(&mut namespace, b"namespace", &attrib.value)?;
15235                } else if matches!(
15236                    reader.resolve_local_name(attrib.key, &super::NS_XS),
15237                    Some(b"notNamespace")
15238                ) {
15239                    reader.read_attrib(&mut not_namespace, b"notNamespace", &attrib.value)?;
15240                } else if matches!(
15241                    reader.resolve_local_name(attrib.key, &super::NS_XS),
15242                    Some(b"processContents")
15243                ) {
15244                    reader.read_attrib(&mut process_contents, b"processContents", &attrib.value)?;
15245                } else if matches!(
15246                    reader.resolve_local_name(attrib.key, &super::NS_XS),
15247                    Some(b"notQName")
15248                ) {
15249                    reader.read_attrib(&mut not_q_name, b"notQName", &attrib.value)?;
15250                } else if matches!(
15251                    reader.resolve_local_name(attrib.key, &super::NS_XS),
15252                    Some(b"minOccurs")
15253                ) {
15254                    reader.read_attrib(&mut min_occurs, b"minOccurs", &attrib.value)?;
15255                } else if matches!(
15256                    reader.resolve_local_name(attrib.key, &super::NS_XS),
15257                    Some(b"maxOccurs")
15258                ) {
15259                    reader.read_attrib(&mut max_occurs, b"maxOccurs", &attrib.value)?;
15260                }
15261            }
15262            Ok(Self {
15263                id: id,
15264                namespace: namespace,
15265                not_namespace: not_namespace,
15266                process_contents: process_contents
15267                    .unwrap_or_else(super::Any::default_process_contents),
15268                not_q_name: not_q_name,
15269                min_occurs: min_occurs.unwrap_or_else(super::Any::default_min_occurs),
15270                max_occurs: max_occurs.unwrap_or_else(super::Any::default_max_occurs),
15271                annotation: None,
15272                state: Box::new(AnyDeserializerState::Init__),
15273            })
15274        }
15275        fn finish_state<R>(&mut self, reader: &R, state: AnyDeserializerState) -> Result<(), Error>
15276        where
15277            R: DeserializeReader,
15278        {
15279            use AnyDeserializerState as S;
15280            match state {
15281                S::Annotation(Some(deserializer)) => {
15282                    self.store_annotation(deserializer.finish(reader)?)?
15283                }
15284                _ => (),
15285            }
15286            Ok(())
15287        }
15288        fn store_annotation(&mut self, value: super::Annotation) -> Result<(), Error> {
15289            if self.annotation.is_some() {
15290                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
15291                    b"annotation",
15292                )))?;
15293            }
15294            self.annotation = Some(value);
15295            Ok(())
15296        }
15297        fn handle_annotation<'de, R>(
15298            &mut self,
15299            reader: &R,
15300            output: DeserializerOutput<'de, super::Annotation>,
15301            fallback: &mut Option<AnyDeserializerState>,
15302        ) -> Result<ElementHandlerOutput<'de>, Error>
15303        where
15304            R: DeserializeReader,
15305        {
15306            let DeserializerOutput {
15307                artifact,
15308                event,
15309                allow_any,
15310            } = output;
15311            if artifact.is_none() {
15312                fallback.get_or_insert(AnyDeserializerState::Annotation(None));
15313                *self.state = AnyDeserializerState::Done__;
15314                return Ok(ElementHandlerOutput::from_event(event, allow_any));
15315            }
15316            if let Some(fallback) = fallback.take() {
15317                self.finish_state(reader, fallback)?;
15318            }
15319            Ok(match artifact {
15320                DeserializerArtifact::None => unreachable!(),
15321                DeserializerArtifact::Data(data) => {
15322                    self.store_annotation(data)?;
15323                    *self.state = AnyDeserializerState::Done__;
15324                    ElementHandlerOutput::from_event(event, allow_any)
15325                }
15326                DeserializerArtifact::Deserializer(deserializer) => {
15327                    let ret = ElementHandlerOutput::from_event(event, allow_any);
15328                    match &ret {
15329                        ElementHandlerOutput::Continue { .. } => {
15330                            fallback.get_or_insert(AnyDeserializerState::Annotation(Some(
15331                                deserializer,
15332                            )));
15333                            *self.state = AnyDeserializerState::Done__;
15334                        }
15335                        ElementHandlerOutput::Break { .. } => {
15336                            *self.state = AnyDeserializerState::Annotation(Some(deserializer));
15337                        }
15338                    }
15339                    ret
15340                }
15341            })
15342        }
15343    }
15344    impl<'de> Deserializer<'de, super::Any> for AnyDeserializer {
15345        fn init<R>(reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::Any>
15346        where
15347            R: DeserializeReader,
15348        {
15349            reader.init_deserializer_from_start_event(event, Self::from_bytes_start)
15350        }
15351        fn next<R>(mut self, reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::Any>
15352        where
15353            R: DeserializeReader,
15354        {
15355            use AnyDeserializerState as S;
15356            let mut event = event;
15357            let mut fallback = None;
15358            let mut allow_any_element = false;
15359            let (event, allow_any) = loop {
15360                let state = replace(&mut *self.state, S::Unknown__);
15361                event = match (state, event) {
15362                    (S::Annotation(Some(deserializer)), event) => {
15363                        let output = deserializer.next(reader, event)?;
15364                        match self.handle_annotation(reader, output, &mut fallback)? {
15365                            ElementHandlerOutput::Continue { event, allow_any } => {
15366                                allow_any_element = allow_any_element || allow_any;
15367                                event
15368                            }
15369                            ElementHandlerOutput::Break { event, allow_any } => {
15370                                break (event, allow_any)
15371                            }
15372                        }
15373                    }
15374                    (_, Event::End(_)) => {
15375                        if let Some(fallback) = fallback.take() {
15376                            self.finish_state(reader, fallback)?;
15377                        }
15378                        return Ok(DeserializerOutput {
15379                            artifact: DeserializerArtifact::Data(self.finish(reader)?),
15380                            event: DeserializerEvent::None,
15381                            allow_any: false,
15382                        });
15383                    }
15384                    (S::Init__, event) => {
15385                        fallback.get_or_insert(S::Init__);
15386                        *self.state = AnyDeserializerState::Annotation(None);
15387                        event
15388                    }
15389                    (S::Annotation(None), event @ (Event::Start(_) | Event::Empty(_))) => {
15390                        if reader.check_start_tag_name(&event, Some(&super::NS_XS), b"annotation") {
15391                            let output =
15392                                <super::Annotation as WithDeserializer>::Deserializer::init(
15393                                    reader, event,
15394                                )?;
15395                            match self.handle_annotation(reader, output, &mut fallback)? {
15396                                ElementHandlerOutput::Continue { event, allow_any } => {
15397                                    allow_any_element = allow_any_element || allow_any;
15398                                    event
15399                                }
15400                                ElementHandlerOutput::Break { event, allow_any } => {
15401                                    break (event, allow_any)
15402                                }
15403                            }
15404                        } else {
15405                            *self.state = S::Done__;
15406                            allow_any_element = true;
15407                            fallback.get_or_insert(S::Annotation(None));
15408                            event
15409                        }
15410                    }
15411                    (S::Done__, event) => {
15412                        fallback.get_or_insert(S::Done__);
15413                        break (DeserializerEvent::Continue(event), allow_any_element);
15414                    }
15415                    (S::Unknown__, _) => unreachable!(),
15416                    (state, event) => {
15417                        *self.state = state;
15418                        break (DeserializerEvent::Break(event), false);
15419                    }
15420                }
15421            };
15422            if let Some(fallback) = fallback {
15423                *self.state = fallback;
15424            }
15425            Ok(DeserializerOutput {
15426                artifact: DeserializerArtifact::Deserializer(self),
15427                event,
15428                allow_any,
15429            })
15430        }
15431        fn finish<R>(mut self, reader: &R) -> Result<super::Any, Error>
15432        where
15433            R: DeserializeReader,
15434        {
15435            let state = replace(&mut *self.state, AnyDeserializerState::Unknown__);
15436            self.finish_state(reader, state)?;
15437            Ok(super::Any {
15438                id: self.id,
15439                namespace: self.namespace,
15440                not_namespace: self.not_namespace,
15441                process_contents: self.process_contents,
15442                not_q_name: self.not_q_name,
15443                min_occurs: self.min_occurs,
15444                max_occurs: self.max_occurs,
15445                annotation: self.annotation,
15446            })
15447        }
15448    }
15449    #[derive(Debug)]
15450    pub struct AltTypeDeserializer {
15451        id: Option<String>,
15452        test: Option<String>,
15453        type_: Option<super::QName>,
15454        xpath_default_namespace: Option<super::XpathDefaultNamespaceType>,
15455        content: Vec<super::AltTypeContent>,
15456        state: Box<AltTypeDeserializerState>,
15457    }
15458    #[derive(Debug)]
15459    enum AltTypeDeserializerState {
15460        Init__,
15461        Next__,
15462        Content__(<super::AltTypeContent as WithDeserializer>::Deserializer),
15463        Unknown__,
15464    }
15465    impl AltTypeDeserializer {
15466        fn from_bytes_start<R>(reader: &R, bytes_start: &BytesStart<'_>) -> Result<Self, Error>
15467        where
15468            R: DeserializeReader,
15469        {
15470            let mut id: Option<String> = None;
15471            let mut test: Option<String> = None;
15472            let mut type_: Option<super::QName> = None;
15473            let mut xpath_default_namespace: Option<super::XpathDefaultNamespaceType> = None;
15474            for attrib in filter_xmlns_attributes(bytes_start) {
15475                let attrib = attrib?;
15476                if matches!(
15477                    reader.resolve_local_name(attrib.key, &super::NS_XS),
15478                    Some(b"id")
15479                ) {
15480                    reader.read_attrib(&mut id, b"id", &attrib.value)?;
15481                } else if matches!(
15482                    reader.resolve_local_name(attrib.key, &super::NS_XS),
15483                    Some(b"test")
15484                ) {
15485                    reader.read_attrib(&mut test, b"test", &attrib.value)?;
15486                } else if matches!(
15487                    reader.resolve_local_name(attrib.key, &super::NS_XS),
15488                    Some(b"type")
15489                ) {
15490                    reader.read_attrib(&mut type_, b"type", &attrib.value)?;
15491                } else if matches!(
15492                    reader.resolve_local_name(attrib.key, &super::NS_XS),
15493                    Some(b"xpathDefaultNamespace")
15494                ) {
15495                    reader.read_attrib(
15496                        &mut xpath_default_namespace,
15497                        b"xpathDefaultNamespace",
15498                        &attrib.value,
15499                    )?;
15500                }
15501            }
15502            Ok(Self {
15503                id: id,
15504                test: test,
15505                type_: type_,
15506                xpath_default_namespace: xpath_default_namespace,
15507                content: Vec::new(),
15508                state: Box::new(AltTypeDeserializerState::Init__),
15509            })
15510        }
15511        fn finish_state<R>(
15512            &mut self,
15513            reader: &R,
15514            state: AltTypeDeserializerState,
15515        ) -> Result<(), Error>
15516        where
15517            R: DeserializeReader,
15518        {
15519            if let AltTypeDeserializerState::Content__(deserializer) = state {
15520                self.store_content(deserializer.finish(reader)?)?;
15521            }
15522            Ok(())
15523        }
15524        fn store_content(&mut self, value: super::AltTypeContent) -> Result<(), Error> {
15525            self.content.push(value);
15526            Ok(())
15527        }
15528        fn handle_content<'de, R>(
15529            &mut self,
15530            reader: &R,
15531            output: DeserializerOutput<'de, super::AltTypeContent>,
15532            fallback: &mut Option<AltTypeDeserializerState>,
15533        ) -> Result<ElementHandlerOutput<'de>, Error>
15534        where
15535            R: DeserializeReader,
15536        {
15537            let DeserializerOutput {
15538                artifact,
15539                event,
15540                allow_any,
15541            } = output;
15542            if artifact.is_none() {
15543                *self.state = fallback.take().unwrap_or(AltTypeDeserializerState::Next__);
15544                return Ok(ElementHandlerOutput::break_(event, allow_any));
15545            }
15546            if let Some(fallback) = fallback.take() {
15547                self.finish_state(reader, fallback)?;
15548            }
15549            Ok(match artifact {
15550                DeserializerArtifact::None => unreachable!(),
15551                DeserializerArtifact::Data(data) => {
15552                    self.store_content(data)?;
15553                    *self.state = AltTypeDeserializerState::Next__;
15554                    ElementHandlerOutput::from_event(event, allow_any)
15555                }
15556                DeserializerArtifact::Deserializer(deserializer) => {
15557                    let ret = ElementHandlerOutput::from_event(event, allow_any);
15558                    match &ret {
15559                        ElementHandlerOutput::Continue { .. } => {
15560                            fallback
15561                                .get_or_insert(AltTypeDeserializerState::Content__(deserializer));
15562                            *self.state = AltTypeDeserializerState::Next__;
15563                        }
15564                        ElementHandlerOutput::Break { .. } => {
15565                            *self.state = AltTypeDeserializerState::Content__(deserializer);
15566                        }
15567                    }
15568                    ret
15569                }
15570            })
15571        }
15572    }
15573    impl<'de> Deserializer<'de, super::AltType> for AltTypeDeserializer {
15574        fn init<R>(reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::AltType>
15575        where
15576            R: DeserializeReader,
15577        {
15578            reader.init_deserializer_from_start_event(event, Self::from_bytes_start)
15579        }
15580        fn next<R>(
15581            mut self,
15582            reader: &R,
15583            event: Event<'de>,
15584        ) -> DeserializerResult<'de, super::AltType>
15585        where
15586            R: DeserializeReader,
15587        {
15588            use AltTypeDeserializerState as S;
15589            let mut event = event;
15590            let mut fallback = None;
15591            let (event, allow_any) = loop {
15592                let state = replace(&mut *self.state, S::Unknown__);
15593                event = match (state, event) {
15594                    (S::Content__(deserializer), event) => {
15595                        let output = deserializer.next(reader, event)?;
15596                        match self.handle_content(reader, output, &mut fallback)? {
15597                            ElementHandlerOutput::Break { event, allow_any } => {
15598                                break (event, allow_any)
15599                            }
15600                            ElementHandlerOutput::Continue { event, .. } => event,
15601                        }
15602                    }
15603                    (_, Event::End(_)) => {
15604                        return Ok(DeserializerOutput {
15605                            artifact: DeserializerArtifact::Data(self.finish(reader)?),
15606                            event: DeserializerEvent::None,
15607                            allow_any: false,
15608                        });
15609                    }
15610                    (old_state @ (S::Init__ | S::Next__), event) => {
15611                        let output =
15612                            <super::AltTypeContent as WithDeserializer>::Deserializer::init(
15613                                reader, event,
15614                            )?;
15615                        match self.handle_content(reader, output, &mut fallback)? {
15616                            ElementHandlerOutput::Break { event, allow_any } => {
15617                                if matches!(&*self.state, S::Unknown__) {
15618                                    *self.state = old_state;
15619                                }
15620                                break (event, allow_any);
15621                            }
15622                            ElementHandlerOutput::Continue { event, .. } => event,
15623                        }
15624                    }
15625                    (S::Unknown__, _) => unreachable!(),
15626                }
15627            };
15628            Ok(DeserializerOutput {
15629                artifact: DeserializerArtifact::Deserializer(self),
15630                event,
15631                allow_any,
15632            })
15633        }
15634        fn finish<R>(mut self, reader: &R) -> Result<super::AltType, Error>
15635        where
15636            R: DeserializeReader,
15637        {
15638            let state = replace(&mut *self.state, AltTypeDeserializerState::Unknown__);
15639            self.finish_state(reader, state)?;
15640            Ok(super::AltType {
15641                id: self.id,
15642                test: self.test,
15643                type_: self.type_,
15644                xpath_default_namespace: self.xpath_default_namespace,
15645                content: self.content,
15646            })
15647        }
15648    }
15649    #[derive(Debug)]
15650    pub enum AltTypeContentDeserializer {
15651        Init__,
15652        Annotation(
15653            Option<super::Annotation>,
15654            Option<<super::Annotation as WithDeserializer>::Deserializer>,
15655        ),
15656        SimpleType(
15657            Option<super::SimpleBaseType>,
15658            Option<<super::SimpleBaseType as WithDeserializer>::Deserializer>,
15659        ),
15660        ComplexType(
15661            Option<super::ComplexBaseType>,
15662            Option<<super::ComplexBaseType as WithDeserializer>::Deserializer>,
15663        ),
15664        Done__(super::AltTypeContent),
15665        Unknown__,
15666    }
15667    impl AltTypeContentDeserializer {
15668        fn find_suitable<'de, R>(
15669            &mut self,
15670            reader: &R,
15671            event: Event<'de>,
15672            fallback: &mut Option<AltTypeContentDeserializer>,
15673        ) -> Result<ElementHandlerOutput<'de>, Error>
15674        where
15675            R: DeserializeReader,
15676        {
15677            let (Event::Start(x) | Event::Empty(x)) = &event else {
15678                *self = Self::Init__;
15679                return Ok(ElementHandlerOutput::return_to_parent(event, false));
15680            };
15681            if matches!(
15682                reader.resolve_local_name(x.name(), &super::NS_XS),
15683                Some(b"annotation")
15684            ) {
15685                let output =
15686                    <super::Annotation as WithDeserializer>::Deserializer::init(reader, event)?;
15687                return self.handle_annotation(reader, Default::default(), output, &mut *fallback);
15688            }
15689            if matches!(
15690                reader.resolve_local_name(x.name(), &super::NS_XS),
15691                Some(b"simpleType")
15692            ) {
15693                let output =
15694                    <super::SimpleBaseType as WithDeserializer>::Deserializer::init(reader, event)?;
15695                return self.handle_simple_type(reader, Default::default(), output, &mut *fallback);
15696            }
15697            if matches!(
15698                reader.resolve_local_name(x.name(), &super::NS_XS),
15699                Some(b"complexType")
15700            ) {
15701                let output = <super::ComplexBaseType as WithDeserializer>::Deserializer::init(
15702                    reader, event,
15703                )?;
15704                return self.handle_complex_type(
15705                    reader,
15706                    Default::default(),
15707                    output,
15708                    &mut *fallback,
15709                );
15710            }
15711            *self = Self::Init__;
15712            Ok(ElementHandlerOutput::return_to_parent(event, false))
15713        }
15714        fn store_annotation(
15715            values: &mut Option<super::Annotation>,
15716            value: super::Annotation,
15717        ) -> Result<(), Error> {
15718            if values.is_some() {
15719                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
15720                    b"annotation",
15721                )))?;
15722            }
15723            *values = Some(value);
15724            Ok(())
15725        }
15726        fn store_simple_type(
15727            values: &mut Option<super::SimpleBaseType>,
15728            value: super::SimpleBaseType,
15729        ) -> Result<(), Error> {
15730            if values.is_some() {
15731                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
15732                    b"simpleType",
15733                )))?;
15734            }
15735            *values = Some(value);
15736            Ok(())
15737        }
15738        fn store_complex_type(
15739            values: &mut Option<super::ComplexBaseType>,
15740            value: super::ComplexBaseType,
15741        ) -> Result<(), Error> {
15742            if values.is_some() {
15743                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
15744                    b"complexType",
15745                )))?;
15746            }
15747            *values = Some(value);
15748            Ok(())
15749        }
15750        fn handle_annotation<'de, R>(
15751            &mut self,
15752            reader: &R,
15753            mut values: Option<super::Annotation>,
15754            output: DeserializerOutput<'de, super::Annotation>,
15755            fallback: &mut Option<Self>,
15756        ) -> Result<ElementHandlerOutput<'de>, Error>
15757        where
15758            R: DeserializeReader,
15759        {
15760            let DeserializerOutput {
15761                artifact,
15762                event,
15763                allow_any,
15764            } = output;
15765            if artifact.is_none() {
15766                *self = match fallback.take() {
15767                    None => Self::Init__,
15768                    Some(Self::Annotation(_, Some(deserializer))) => {
15769                        Self::Annotation(values, Some(deserializer))
15770                    }
15771                    _ => unreachable!(),
15772                };
15773                return Ok(ElementHandlerOutput::break_(event, allow_any));
15774            }
15775            match fallback.take() {
15776                None => (),
15777                Some(Self::Annotation(_, Some(deserializer))) => {
15778                    let data = deserializer.finish(reader)?;
15779                    Self::store_annotation(&mut values, data)?;
15780                }
15781                Some(_) => unreachable!(),
15782            }
15783            Ok(match artifact {
15784                DeserializerArtifact::None => unreachable!(),
15785                DeserializerArtifact::Data(data) => {
15786                    Self::store_annotation(&mut values, data)?;
15787                    let data = Self::Annotation(values, None).finish(reader)?;
15788                    *self = Self::Done__(data);
15789                    ElementHandlerOutput::Break { event, allow_any }
15790                }
15791                DeserializerArtifact::Deserializer(deserializer) => {
15792                    *self = Self::Annotation(values, Some(deserializer));
15793                    ElementHandlerOutput::from_event_end(event, allow_any)
15794                }
15795            })
15796        }
15797        fn handle_simple_type<'de, R>(
15798            &mut self,
15799            reader: &R,
15800            mut values: Option<super::SimpleBaseType>,
15801            output: DeserializerOutput<'de, super::SimpleBaseType>,
15802            fallback: &mut Option<Self>,
15803        ) -> Result<ElementHandlerOutput<'de>, Error>
15804        where
15805            R: DeserializeReader,
15806        {
15807            let DeserializerOutput {
15808                artifact,
15809                event,
15810                allow_any,
15811            } = output;
15812            if artifact.is_none() {
15813                *self = match fallback.take() {
15814                    None => Self::Init__,
15815                    Some(Self::SimpleType(_, Some(deserializer))) => {
15816                        Self::SimpleType(values, Some(deserializer))
15817                    }
15818                    _ => unreachable!(),
15819                };
15820                return Ok(ElementHandlerOutput::break_(event, allow_any));
15821            }
15822            match fallback.take() {
15823                None => (),
15824                Some(Self::SimpleType(_, Some(deserializer))) => {
15825                    let data = deserializer.finish(reader)?;
15826                    Self::store_simple_type(&mut values, data)?;
15827                }
15828                Some(_) => unreachable!(),
15829            }
15830            Ok(match artifact {
15831                DeserializerArtifact::None => unreachable!(),
15832                DeserializerArtifact::Data(data) => {
15833                    Self::store_simple_type(&mut values, data)?;
15834                    let data = Self::SimpleType(values, None).finish(reader)?;
15835                    *self = Self::Done__(data);
15836                    ElementHandlerOutput::Break { event, allow_any }
15837                }
15838                DeserializerArtifact::Deserializer(deserializer) => {
15839                    *self = Self::SimpleType(values, Some(deserializer));
15840                    ElementHandlerOutput::from_event_end(event, allow_any)
15841                }
15842            })
15843        }
15844        fn handle_complex_type<'de, R>(
15845            &mut self,
15846            reader: &R,
15847            mut values: Option<super::ComplexBaseType>,
15848            output: DeserializerOutput<'de, super::ComplexBaseType>,
15849            fallback: &mut Option<Self>,
15850        ) -> Result<ElementHandlerOutput<'de>, Error>
15851        where
15852            R: DeserializeReader,
15853        {
15854            let DeserializerOutput {
15855                artifact,
15856                event,
15857                allow_any,
15858            } = output;
15859            if artifact.is_none() {
15860                *self = match fallback.take() {
15861                    None => Self::Init__,
15862                    Some(Self::ComplexType(_, Some(deserializer))) => {
15863                        Self::ComplexType(values, Some(deserializer))
15864                    }
15865                    _ => unreachable!(),
15866                };
15867                return Ok(ElementHandlerOutput::break_(event, allow_any));
15868            }
15869            match fallback.take() {
15870                None => (),
15871                Some(Self::ComplexType(_, Some(deserializer))) => {
15872                    let data = deserializer.finish(reader)?;
15873                    Self::store_complex_type(&mut values, data)?;
15874                }
15875                Some(_) => unreachable!(),
15876            }
15877            Ok(match artifact {
15878                DeserializerArtifact::None => unreachable!(),
15879                DeserializerArtifact::Data(data) => {
15880                    Self::store_complex_type(&mut values, data)?;
15881                    let data = Self::ComplexType(values, None).finish(reader)?;
15882                    *self = Self::Done__(data);
15883                    ElementHandlerOutput::Break { event, allow_any }
15884                }
15885                DeserializerArtifact::Deserializer(deserializer) => {
15886                    *self = Self::ComplexType(values, Some(deserializer));
15887                    ElementHandlerOutput::from_event_end(event, allow_any)
15888                }
15889            })
15890        }
15891    }
15892    impl<'de> Deserializer<'de, super::AltTypeContent> for AltTypeContentDeserializer {
15893        fn init<R>(reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::AltTypeContent>
15894        where
15895            R: DeserializeReader,
15896        {
15897            let deserializer = Self::Init__;
15898            let mut output = deserializer.next(reader, event)?;
15899            output.artifact = match output.artifact {
15900                DeserializerArtifact::Deserializer(Self::Init__) => DeserializerArtifact::None,
15901                artifact => artifact,
15902            };
15903            Ok(output)
15904        }
15905        fn next<R>(
15906            mut self,
15907            reader: &R,
15908            event: Event<'de>,
15909        ) -> DeserializerResult<'de, super::AltTypeContent>
15910        where
15911            R: DeserializeReader,
15912        {
15913            let mut event = event;
15914            let mut fallback = None;
15915            let (event, allow_any) = loop {
15916                let state = replace(&mut self, Self::Unknown__);
15917                event = match (state, event) {
15918                    (Self::Annotation(values, Some(deserializer)), event) => {
15919                        let output = deserializer.next(reader, event)?;
15920                        match self.handle_annotation(reader, values, output, &mut fallback)? {
15921                            ElementHandlerOutput::Break { event, allow_any } => {
15922                                break (event, allow_any)
15923                            }
15924                            ElementHandlerOutput::Continue { event, .. } => event,
15925                        }
15926                    }
15927                    (Self::SimpleType(values, Some(deserializer)), event) => {
15928                        let output = deserializer.next(reader, event)?;
15929                        match self.handle_simple_type(reader, values, output, &mut fallback)? {
15930                            ElementHandlerOutput::Break { event, allow_any } => {
15931                                break (event, allow_any)
15932                            }
15933                            ElementHandlerOutput::Continue { event, .. } => event,
15934                        }
15935                    }
15936                    (Self::ComplexType(values, Some(deserializer)), event) => {
15937                        let output = deserializer.next(reader, event)?;
15938                        match self.handle_complex_type(reader, values, output, &mut fallback)? {
15939                            ElementHandlerOutput::Break { event, allow_any } => {
15940                                break (event, allow_any)
15941                            }
15942                            ElementHandlerOutput::Continue { event, .. } => event,
15943                        }
15944                    }
15945                    (state, event @ Event::End(_)) => {
15946                        return Ok(DeserializerOutput {
15947                            artifact: DeserializerArtifact::Data(state.finish(reader)?),
15948                            event: DeserializerEvent::Continue(event),
15949                            allow_any: false,
15950                        });
15951                    }
15952                    (Self::Init__, event) => {
15953                        match self.find_suitable(reader, event, &mut fallback)? {
15954                            ElementHandlerOutput::Break { event, allow_any } => {
15955                                break (event, allow_any)
15956                            }
15957                            ElementHandlerOutput::Continue { event, .. } => event,
15958                        }
15959                    }
15960                    (Self::Annotation(values, None), event) => {
15961                        let output = <super::Annotation as WithDeserializer>::Deserializer::init(
15962                            reader, event,
15963                        )?;
15964                        match self.handle_annotation(reader, values, output, &mut fallback)? {
15965                            ElementHandlerOutput::Break { event, allow_any } => {
15966                                break (event, allow_any)
15967                            }
15968                            ElementHandlerOutput::Continue { event, .. } => event,
15969                        }
15970                    }
15971                    (Self::SimpleType(values, None), event) => {
15972                        let output =
15973                            <super::SimpleBaseType as WithDeserializer>::Deserializer::init(
15974                                reader, event,
15975                            )?;
15976                        match self.handle_simple_type(reader, values, output, &mut fallback)? {
15977                            ElementHandlerOutput::Break { event, allow_any } => {
15978                                break (event, allow_any)
15979                            }
15980                            ElementHandlerOutput::Continue { event, .. } => event,
15981                        }
15982                    }
15983                    (Self::ComplexType(values, None), event) => {
15984                        let output =
15985                            <super::ComplexBaseType as WithDeserializer>::Deserializer::init(
15986                                reader, event,
15987                            )?;
15988                        match self.handle_complex_type(reader, values, output, &mut fallback)? {
15989                            ElementHandlerOutput::Break { event, allow_any } => {
15990                                break (event, allow_any)
15991                            }
15992                            ElementHandlerOutput::Continue { event, .. } => event,
15993                        }
15994                    }
15995                    (s @ Self::Done__(_), event) => {
15996                        self = s;
15997                        break (DeserializerEvent::Continue(event), false);
15998                    }
15999                    (Self::Unknown__, _) => unreachable!(),
16000                }
16001            };
16002            let artifact = match self {
16003                Self::Done__(data) => DeserializerArtifact::Data(data),
16004                deserializer => DeserializerArtifact::Deserializer(deserializer),
16005            };
16006            Ok(DeserializerOutput {
16007                artifact,
16008                event,
16009                allow_any,
16010            })
16011        }
16012        fn finish<R>(self, reader: &R) -> Result<super::AltTypeContent, Error>
16013        where
16014            R: DeserializeReader,
16015        {
16016            match self {
16017                Self::Init__ => Err(ErrorKind::MissingContent.into()),
16018                Self::Annotation(mut values, deserializer) => {
16019                    if let Some(deserializer) = deserializer {
16020                        let value = deserializer.finish(reader)?;
16021                        Self::store_annotation(&mut values, value)?;
16022                    }
16023                    Ok(super::AltTypeContent::Annotation(values.ok_or_else(
16024                        || ErrorKind::MissingElement("annotation".into()),
16025                    )?))
16026                }
16027                Self::SimpleType(mut values, deserializer) => {
16028                    if let Some(deserializer) = deserializer {
16029                        let value = deserializer.finish(reader)?;
16030                        Self::store_simple_type(&mut values, value)?;
16031                    }
16032                    Ok(super::AltTypeContent::SimpleType(values.ok_or_else(
16033                        || ErrorKind::MissingElement("simpleType".into()),
16034                    )?))
16035                }
16036                Self::ComplexType(mut values, deserializer) => {
16037                    if let Some(deserializer) = deserializer {
16038                        let value = deserializer.finish(reader)?;
16039                        Self::store_complex_type(&mut values, value)?;
16040                    }
16041                    Ok(super::AltTypeContent::ComplexType(values.ok_or_else(
16042                        || ErrorKind::MissingElement("complexType".into()),
16043                    )?))
16044                }
16045                Self::Done__(data) => Ok(data),
16046                Self::Unknown__ => unreachable!(),
16047            }
16048        }
16049    }
16050    #[derive(Debug)]
16051    pub struct KeybaseTypeDeserializer {
16052        id: Option<String>,
16053        name: Option<String>,
16054        ref_: Option<super::QName>,
16055        content: Option<super::KeybaseTypeContent>,
16056        state: Box<KeybaseTypeDeserializerState>,
16057    }
16058    #[derive(Debug)]
16059    enum KeybaseTypeDeserializerState {
16060        Init__,
16061        Next__,
16062        Content__(<super::KeybaseTypeContent as WithDeserializer>::Deserializer),
16063        Unknown__,
16064    }
16065    impl KeybaseTypeDeserializer {
16066        fn from_bytes_start<R>(reader: &R, bytes_start: &BytesStart<'_>) -> Result<Self, Error>
16067        where
16068            R: DeserializeReader,
16069        {
16070            let mut id: Option<String> = None;
16071            let mut name: Option<String> = None;
16072            let mut ref_: Option<super::QName> = None;
16073            for attrib in filter_xmlns_attributes(bytes_start) {
16074                let attrib = attrib?;
16075                if matches!(
16076                    reader.resolve_local_name(attrib.key, &super::NS_XS),
16077                    Some(b"id")
16078                ) {
16079                    reader.read_attrib(&mut id, b"id", &attrib.value)?;
16080                } else if matches!(
16081                    reader.resolve_local_name(attrib.key, &super::NS_XS),
16082                    Some(b"name")
16083                ) {
16084                    reader.read_attrib(&mut name, b"name", &attrib.value)?;
16085                } else if matches!(
16086                    reader.resolve_local_name(attrib.key, &super::NS_XS),
16087                    Some(b"ref")
16088                ) {
16089                    reader.read_attrib(&mut ref_, b"ref", &attrib.value)?;
16090                }
16091            }
16092            Ok(Self {
16093                id: id,
16094                name: name,
16095                ref_: ref_,
16096                content: None,
16097                state: Box::new(KeybaseTypeDeserializerState::Init__),
16098            })
16099        }
16100        fn finish_state<R>(
16101            &mut self,
16102            reader: &R,
16103            state: KeybaseTypeDeserializerState,
16104        ) -> Result<(), Error>
16105        where
16106            R: DeserializeReader,
16107        {
16108            if let KeybaseTypeDeserializerState::Content__(deserializer) = state {
16109                self.store_content(deserializer.finish(reader)?)?;
16110            }
16111            Ok(())
16112        }
16113        fn store_content(&mut self, value: super::KeybaseTypeContent) -> Result<(), Error> {
16114            if self.content.is_some() {
16115                Err(ErrorKind::DuplicateContent)?;
16116            }
16117            self.content = Some(value);
16118            Ok(())
16119        }
16120        fn handle_content<'de, R>(
16121            &mut self,
16122            reader: &R,
16123            output: DeserializerOutput<'de, super::KeybaseTypeContent>,
16124            fallback: &mut Option<KeybaseTypeDeserializerState>,
16125        ) -> Result<ElementHandlerOutput<'de>, Error>
16126        where
16127            R: DeserializeReader,
16128        {
16129            let DeserializerOutput {
16130                artifact,
16131                event,
16132                allow_any,
16133            } = output;
16134            if artifact.is_none() {
16135                *self.state = fallback
16136                    .take()
16137                    .unwrap_or(KeybaseTypeDeserializerState::Next__);
16138                return Ok(ElementHandlerOutput::break_(event, allow_any));
16139            }
16140            if let Some(fallback) = fallback.take() {
16141                self.finish_state(reader, fallback)?;
16142            }
16143            Ok(match artifact {
16144                DeserializerArtifact::None => unreachable!(),
16145                DeserializerArtifact::Data(data) => {
16146                    self.store_content(data)?;
16147                    *self.state = KeybaseTypeDeserializerState::Next__;
16148                    ElementHandlerOutput::from_event(event, allow_any)
16149                }
16150                DeserializerArtifact::Deserializer(deserializer) => {
16151                    let ret = ElementHandlerOutput::from_event(event, allow_any);
16152                    match &ret {
16153                        ElementHandlerOutput::Continue { .. } => {
16154                            fallback.get_or_insert(KeybaseTypeDeserializerState::Content__(
16155                                deserializer,
16156                            ));
16157                            *self.state = KeybaseTypeDeserializerState::Next__;
16158                        }
16159                        ElementHandlerOutput::Break { .. } => {
16160                            *self.state = KeybaseTypeDeserializerState::Content__(deserializer);
16161                        }
16162                    }
16163                    ret
16164                }
16165            })
16166        }
16167    }
16168    impl<'de> Deserializer<'de, super::KeybaseType> for KeybaseTypeDeserializer {
16169        fn init<R>(reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::KeybaseType>
16170        where
16171            R: DeserializeReader,
16172        {
16173            reader.init_deserializer_from_start_event(event, Self::from_bytes_start)
16174        }
16175        fn next<R>(
16176            mut self,
16177            reader: &R,
16178            event: Event<'de>,
16179        ) -> DeserializerResult<'de, super::KeybaseType>
16180        where
16181            R: DeserializeReader,
16182        {
16183            use KeybaseTypeDeserializerState as S;
16184            let mut event = event;
16185            let mut fallback = None;
16186            let (event, allow_any) = loop {
16187                let state = replace(&mut *self.state, S::Unknown__);
16188                event = match (state, event) {
16189                    (S::Content__(deserializer), event) => {
16190                        let output = deserializer.next(reader, event)?;
16191                        match self.handle_content(reader, output, &mut fallback)? {
16192                            ElementHandlerOutput::Break { event, allow_any } => {
16193                                break (event, allow_any)
16194                            }
16195                            ElementHandlerOutput::Continue { event, .. } => event,
16196                        }
16197                    }
16198                    (_, Event::End(_)) => {
16199                        return Ok(DeserializerOutput {
16200                            artifact: DeserializerArtifact::Data(self.finish(reader)?),
16201                            event: DeserializerEvent::None,
16202                            allow_any: false,
16203                        });
16204                    }
16205                    (old_state @ (S::Init__ | S::Next__), event) => {
16206                        let output =
16207                            <super::KeybaseTypeContent as WithDeserializer>::Deserializer::init(
16208                                reader, event,
16209                            )?;
16210                        match self.handle_content(reader, output, &mut fallback)? {
16211                            ElementHandlerOutput::Break { event, allow_any } => {
16212                                if matches!(&*self.state, S::Unknown__) {
16213                                    *self.state = old_state;
16214                                }
16215                                break (event, allow_any);
16216                            }
16217                            ElementHandlerOutput::Continue { event, .. } => event,
16218                        }
16219                    }
16220                    (S::Unknown__, _) => unreachable!(),
16221                }
16222            };
16223            Ok(DeserializerOutput {
16224                artifact: DeserializerArtifact::Deserializer(self),
16225                event,
16226                allow_any,
16227            })
16228        }
16229        fn finish<R>(mut self, reader: &R) -> Result<super::KeybaseType, Error>
16230        where
16231            R: DeserializeReader,
16232        {
16233            let state = replace(&mut *self.state, KeybaseTypeDeserializerState::Unknown__);
16234            self.finish_state(reader, state)?;
16235            Ok(super::KeybaseType {
16236                id: self.id,
16237                name: self.name,
16238                ref_: self.ref_,
16239                content: self.content,
16240            })
16241        }
16242    }
16243    #[derive(Debug)]
16244    pub struct KeybaseTypeContentDeserializer {
16245        annotation: Option<super::Annotation>,
16246        selector: Option<super::Field>,
16247        field: Vec<super::Field>,
16248        state: Box<KeybaseTypeContentDeserializerState>,
16249    }
16250    #[derive(Debug)]
16251    enum KeybaseTypeContentDeserializerState {
16252        Init__,
16253        Annotation(Option<<super::Annotation as WithDeserializer>::Deserializer>),
16254        Selector(Option<<super::Field as WithDeserializer>::Deserializer>),
16255        Field(Option<<super::Field as WithDeserializer>::Deserializer>),
16256        Done__,
16257        Unknown__,
16258    }
16259    impl KeybaseTypeContentDeserializer {
16260        fn finish_state<R>(
16261            &mut self,
16262            reader: &R,
16263            state: KeybaseTypeContentDeserializerState,
16264        ) -> Result<(), Error>
16265        where
16266            R: DeserializeReader,
16267        {
16268            use KeybaseTypeContentDeserializerState as S;
16269            match state {
16270                S::Annotation(Some(deserializer)) => {
16271                    self.store_annotation(deserializer.finish(reader)?)?
16272                }
16273                S::Selector(Some(deserializer)) => {
16274                    self.store_selector(deserializer.finish(reader)?)?
16275                }
16276                S::Field(Some(deserializer)) => self.store_field(deserializer.finish(reader)?)?,
16277                _ => (),
16278            }
16279            Ok(())
16280        }
16281        fn store_annotation(&mut self, value: super::Annotation) -> Result<(), Error> {
16282            if self.annotation.is_some() {
16283                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
16284                    b"annotation",
16285                )))?;
16286            }
16287            self.annotation = Some(value);
16288            Ok(())
16289        }
16290        fn store_selector(&mut self, value: super::Field) -> Result<(), Error> {
16291            if self.selector.is_some() {
16292                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
16293                    b"selector",
16294                )))?;
16295            }
16296            self.selector = Some(value);
16297            Ok(())
16298        }
16299        fn store_field(&mut self, value: super::Field) -> Result<(), Error> {
16300            self.field.push(value);
16301            Ok(())
16302        }
16303        fn handle_annotation<'de, R>(
16304            &mut self,
16305            reader: &R,
16306            output: DeserializerOutput<'de, super::Annotation>,
16307            fallback: &mut Option<KeybaseTypeContentDeserializerState>,
16308        ) -> Result<ElementHandlerOutput<'de>, Error>
16309        where
16310            R: DeserializeReader,
16311        {
16312            let DeserializerOutput {
16313                artifact,
16314                event,
16315                allow_any,
16316            } = output;
16317            if artifact.is_none() {
16318                fallback.get_or_insert(KeybaseTypeContentDeserializerState::Annotation(None));
16319                *self.state = KeybaseTypeContentDeserializerState::Selector(None);
16320                return Ok(ElementHandlerOutput::from_event(event, allow_any));
16321            }
16322            if let Some(fallback) = fallback.take() {
16323                self.finish_state(reader, fallback)?;
16324            }
16325            Ok(match artifact {
16326                DeserializerArtifact::None => unreachable!(),
16327                DeserializerArtifact::Data(data) => {
16328                    self.store_annotation(data)?;
16329                    *self.state = KeybaseTypeContentDeserializerState::Selector(None);
16330                    ElementHandlerOutput::from_event(event, allow_any)
16331                }
16332                DeserializerArtifact::Deserializer(deserializer) => {
16333                    let ret = ElementHandlerOutput::from_event(event, allow_any);
16334                    match &ret {
16335                        ElementHandlerOutput::Continue { .. } => {
16336                            fallback.get_or_insert(
16337                                KeybaseTypeContentDeserializerState::Annotation(Some(deserializer)),
16338                            );
16339                            *self.state = KeybaseTypeContentDeserializerState::Selector(None);
16340                        }
16341                        ElementHandlerOutput::Break { .. } => {
16342                            *self.state =
16343                                KeybaseTypeContentDeserializerState::Annotation(Some(deserializer));
16344                        }
16345                    }
16346                    ret
16347                }
16348            })
16349        }
16350        fn handle_selector<'de, R>(
16351            &mut self,
16352            reader: &R,
16353            output: DeserializerOutput<'de, super::Field>,
16354            fallback: &mut Option<KeybaseTypeContentDeserializerState>,
16355        ) -> Result<ElementHandlerOutput<'de>, Error>
16356        where
16357            R: DeserializeReader,
16358        {
16359            let DeserializerOutput {
16360                artifact,
16361                event,
16362                allow_any,
16363            } = output;
16364            if artifact.is_none() {
16365                if self.selector.is_some() {
16366                    fallback.get_or_insert(KeybaseTypeContentDeserializerState::Selector(None));
16367                    *self.state = KeybaseTypeContentDeserializerState::Field(None);
16368                    return Ok(ElementHandlerOutput::from_event(event, allow_any));
16369                } else {
16370                    *self.state = KeybaseTypeContentDeserializerState::Selector(None);
16371                    return Ok(ElementHandlerOutput::break_(event, allow_any));
16372                }
16373            }
16374            if let Some(fallback) = fallback.take() {
16375                self.finish_state(reader, fallback)?;
16376            }
16377            Ok(match artifact {
16378                DeserializerArtifact::None => unreachable!(),
16379                DeserializerArtifact::Data(data) => {
16380                    self.store_selector(data)?;
16381                    *self.state = KeybaseTypeContentDeserializerState::Field(None);
16382                    ElementHandlerOutput::from_event(event, allow_any)
16383                }
16384                DeserializerArtifact::Deserializer(deserializer) => {
16385                    let ret = ElementHandlerOutput::from_event(event, allow_any);
16386                    match &ret {
16387                        ElementHandlerOutput::Continue { .. } => {
16388                            fallback.get_or_insert(KeybaseTypeContentDeserializerState::Selector(
16389                                Some(deserializer),
16390                            ));
16391                            *self.state = KeybaseTypeContentDeserializerState::Field(None);
16392                        }
16393                        ElementHandlerOutput::Break { .. } => {
16394                            *self.state =
16395                                KeybaseTypeContentDeserializerState::Selector(Some(deserializer));
16396                        }
16397                    }
16398                    ret
16399                }
16400            })
16401        }
16402        fn handle_field<'de, R>(
16403            &mut self,
16404            reader: &R,
16405            output: DeserializerOutput<'de, super::Field>,
16406            fallback: &mut Option<KeybaseTypeContentDeserializerState>,
16407        ) -> Result<ElementHandlerOutput<'de>, Error>
16408        where
16409            R: DeserializeReader,
16410        {
16411            let DeserializerOutput {
16412                artifact,
16413                event,
16414                allow_any,
16415            } = output;
16416            if artifact.is_none() {
16417                if self.field.len() < 1usize {
16418                    *self.state = KeybaseTypeContentDeserializerState::Field(None);
16419                    return Ok(ElementHandlerOutput::break_(event, allow_any));
16420                } else {
16421                    fallback.get_or_insert(KeybaseTypeContentDeserializerState::Field(None));
16422                    *self.state = KeybaseTypeContentDeserializerState::Done__;
16423                    return Ok(ElementHandlerOutput::from_event(event, allow_any));
16424                }
16425            }
16426            if let Some(fallback) = fallback.take() {
16427                self.finish_state(reader, fallback)?;
16428            }
16429            Ok(match artifact {
16430                DeserializerArtifact::None => unreachable!(),
16431                DeserializerArtifact::Data(data) => {
16432                    self.store_field(data)?;
16433                    *self.state = KeybaseTypeContentDeserializerState::Field(None);
16434                    ElementHandlerOutput::from_event(event, allow_any)
16435                }
16436                DeserializerArtifact::Deserializer(deserializer) => {
16437                    let ret = ElementHandlerOutput::from_event(event, allow_any);
16438                    match &ret {
16439                        ElementHandlerOutput::Continue { .. } => {
16440                            fallback.get_or_insert(KeybaseTypeContentDeserializerState::Field(
16441                                Some(deserializer),
16442                            ));
16443                            if self.field.len().saturating_add(1) < 1usize {
16444                                *self.state = KeybaseTypeContentDeserializerState::Field(None);
16445                            } else {
16446                                *self.state = KeybaseTypeContentDeserializerState::Done__;
16447                            }
16448                        }
16449                        ElementHandlerOutput::Break { .. } => {
16450                            *self.state =
16451                                KeybaseTypeContentDeserializerState::Field(Some(deserializer));
16452                        }
16453                    }
16454                    ret
16455                }
16456            })
16457        }
16458    }
16459    impl<'de> Deserializer<'de, super::KeybaseTypeContent> for KeybaseTypeContentDeserializer {
16460        fn init<R>(
16461            reader: &R,
16462            event: Event<'de>,
16463        ) -> DeserializerResult<'de, super::KeybaseTypeContent>
16464        where
16465            R: DeserializeReader,
16466        {
16467            let deserializer = Self {
16468                annotation: None,
16469                selector: None,
16470                field: Vec::new(),
16471                state: Box::new(KeybaseTypeContentDeserializerState::Init__),
16472            };
16473            let mut output = deserializer.next(reader, event)?;
16474            output.artifact = match output.artifact {
16475                DeserializerArtifact::Deserializer(x)
16476                    if matches!(&*x.state, KeybaseTypeContentDeserializerState::Init__) =>
16477                {
16478                    DeserializerArtifact::None
16479                }
16480                artifact => artifact,
16481            };
16482            Ok(output)
16483        }
16484        fn next<R>(
16485            mut self,
16486            reader: &R,
16487            event: Event<'de>,
16488        ) -> DeserializerResult<'de, super::KeybaseTypeContent>
16489        where
16490            R: DeserializeReader,
16491        {
16492            use KeybaseTypeContentDeserializerState as S;
16493            let mut event = event;
16494            let mut fallback = None;
16495            let mut allow_any_element = false;
16496            let (event, allow_any) = loop {
16497                let state = replace(&mut *self.state, S::Unknown__);
16498                event = match (state, event) {
16499                    (S::Annotation(Some(deserializer)), event) => {
16500                        let output = deserializer.next(reader, event)?;
16501                        match self.handle_annotation(reader, output, &mut fallback)? {
16502                            ElementHandlerOutput::Continue { event, allow_any } => {
16503                                allow_any_element = allow_any_element || allow_any;
16504                                event
16505                            }
16506                            ElementHandlerOutput::Break { event, allow_any } => {
16507                                break (event, allow_any)
16508                            }
16509                        }
16510                    }
16511                    (S::Selector(Some(deserializer)), event) => {
16512                        let output = deserializer.next(reader, event)?;
16513                        match self.handle_selector(reader, output, &mut fallback)? {
16514                            ElementHandlerOutput::Continue { event, allow_any } => {
16515                                allow_any_element = allow_any_element || allow_any;
16516                                event
16517                            }
16518                            ElementHandlerOutput::Break { event, allow_any } => {
16519                                break (event, allow_any)
16520                            }
16521                        }
16522                    }
16523                    (S::Field(Some(deserializer)), event) => {
16524                        let output = deserializer.next(reader, event)?;
16525                        match self.handle_field(reader, output, &mut fallback)? {
16526                            ElementHandlerOutput::Continue { event, allow_any } => {
16527                                allow_any_element = allow_any_element || allow_any;
16528                                event
16529                            }
16530                            ElementHandlerOutput::Break { event, allow_any } => {
16531                                break (event, allow_any)
16532                            }
16533                        }
16534                    }
16535                    (_, event @ Event::End(_)) => {
16536                        if let Some(fallback) = fallback.take() {
16537                            self.finish_state(reader, fallback)?;
16538                        }
16539                        return Ok(DeserializerOutput {
16540                            artifact: DeserializerArtifact::Data(self.finish(reader)?),
16541                            event: DeserializerEvent::Continue(event),
16542                            allow_any: false,
16543                        });
16544                    }
16545                    (S::Init__, event) => {
16546                        fallback.get_or_insert(S::Init__);
16547                        *self.state = KeybaseTypeContentDeserializerState::Annotation(None);
16548                        event
16549                    }
16550                    (S::Annotation(None), event @ (Event::Start(_) | Event::Empty(_))) => {
16551                        if reader.check_start_tag_name(&event, Some(&super::NS_XS), b"annotation") {
16552                            let output =
16553                                <super::Annotation as WithDeserializer>::Deserializer::init(
16554                                    reader, event,
16555                                )?;
16556                            match self.handle_annotation(reader, output, &mut fallback)? {
16557                                ElementHandlerOutput::Continue { event, allow_any } => {
16558                                    allow_any_element = allow_any_element || allow_any;
16559                                    event
16560                                }
16561                                ElementHandlerOutput::Break { event, allow_any } => {
16562                                    break (event, allow_any)
16563                                }
16564                            }
16565                        } else {
16566                            *self.state = S::Selector(None);
16567                            allow_any_element = true;
16568                            fallback.get_or_insert(S::Annotation(None));
16569                            event
16570                        }
16571                    }
16572                    (S::Selector(None), event @ (Event::Start(_) | Event::Empty(_))) => {
16573                        if reader.check_start_tag_name(&event, Some(&super::NS_XS), b"selector") {
16574                            let output = <super::Field as WithDeserializer>::Deserializer::init(
16575                                reader, event,
16576                            )?;
16577                            match self.handle_selector(reader, output, &mut fallback)? {
16578                                ElementHandlerOutput::Continue { event, allow_any } => {
16579                                    allow_any_element = allow_any_element || allow_any;
16580                                    event
16581                                }
16582                                ElementHandlerOutput::Break { event, allow_any } => {
16583                                    break (event, allow_any)
16584                                }
16585                            }
16586                        } else {
16587                            *self.state = S::Field(None);
16588                            allow_any_element = true;
16589                            fallback.get_or_insert(S::Selector(None));
16590                            event
16591                        }
16592                    }
16593                    (S::Field(None), event @ (Event::Start(_) | Event::Empty(_))) => {
16594                        if reader.check_start_tag_name(&event, Some(&super::NS_XS), b"field") {
16595                            let output = <super::Field as WithDeserializer>::Deserializer::init(
16596                                reader, event,
16597                            )?;
16598                            match self.handle_field(reader, output, &mut fallback)? {
16599                                ElementHandlerOutput::Continue { event, allow_any } => {
16600                                    allow_any_element = allow_any_element || allow_any;
16601                                    event
16602                                }
16603                                ElementHandlerOutput::Break { event, allow_any } => {
16604                                    break (event, allow_any)
16605                                }
16606                            }
16607                        } else {
16608                            *self.state = S::Done__;
16609                            allow_any_element = true;
16610                            fallback.get_or_insert(S::Field(None));
16611                            event
16612                        }
16613                    }
16614                    (S::Done__, event) => {
16615                        fallback.get_or_insert(S::Done__);
16616                        break (DeserializerEvent::Continue(event), allow_any_element);
16617                    }
16618                    (S::Unknown__, _) => unreachable!(),
16619                    (state, event) => {
16620                        *self.state = state;
16621                        break (DeserializerEvent::Break(event), false);
16622                    }
16623                }
16624            };
16625            if let Some(fallback) = fallback {
16626                *self.state = fallback;
16627            }
16628            Ok(DeserializerOutput {
16629                artifact: DeserializerArtifact::Deserializer(self),
16630                event,
16631                allow_any,
16632            })
16633        }
16634        fn finish<R>(mut self, reader: &R) -> Result<super::KeybaseTypeContent, Error>
16635        where
16636            R: DeserializeReader,
16637        {
16638            let state = replace(
16639                &mut *self.state,
16640                KeybaseTypeContentDeserializerState::Unknown__,
16641            );
16642            self.finish_state(reader, state)?;
16643            Ok(super::KeybaseTypeContent {
16644                annotation: self.annotation,
16645                selector: self
16646                    .selector
16647                    .ok_or_else(|| ErrorKind::MissingElement("selector".into()))?,
16648                field: self.field,
16649            })
16650        }
16651    }
16652    #[derive(Debug)]
16653    pub struct KeyrefDeserializer {
16654        id: Option<String>,
16655        name: Option<String>,
16656        ref_: Option<super::QName>,
16657        refer: Option<super::QName>,
16658        content: Option<super::KeyrefContent>,
16659        state: Box<KeyrefDeserializerState>,
16660    }
16661    #[derive(Debug)]
16662    enum KeyrefDeserializerState {
16663        Init__,
16664        Next__,
16665        Content__(<super::KeyrefContent as WithDeserializer>::Deserializer),
16666        Unknown__,
16667    }
16668    impl KeyrefDeserializer {
16669        fn from_bytes_start<R>(reader: &R, bytes_start: &BytesStart<'_>) -> Result<Self, Error>
16670        where
16671            R: DeserializeReader,
16672        {
16673            let mut id: Option<String> = None;
16674            let mut name: Option<String> = None;
16675            let mut ref_: Option<super::QName> = None;
16676            let mut refer: Option<super::QName> = None;
16677            for attrib in filter_xmlns_attributes(bytes_start) {
16678                let attrib = attrib?;
16679                if matches!(
16680                    reader.resolve_local_name(attrib.key, &super::NS_XS),
16681                    Some(b"id")
16682                ) {
16683                    reader.read_attrib(&mut id, b"id", &attrib.value)?;
16684                } else if matches!(
16685                    reader.resolve_local_name(attrib.key, &super::NS_XS),
16686                    Some(b"name")
16687                ) {
16688                    reader.read_attrib(&mut name, b"name", &attrib.value)?;
16689                } else if matches!(
16690                    reader.resolve_local_name(attrib.key, &super::NS_XS),
16691                    Some(b"ref")
16692                ) {
16693                    reader.read_attrib(&mut ref_, b"ref", &attrib.value)?;
16694                } else if matches!(
16695                    reader.resolve_local_name(attrib.key, &super::NS_XS),
16696                    Some(b"refer")
16697                ) {
16698                    reader.read_attrib(&mut refer, b"refer", &attrib.value)?;
16699                }
16700            }
16701            Ok(Self {
16702                id: id,
16703                name: name,
16704                ref_: ref_,
16705                refer: refer,
16706                content: None,
16707                state: Box::new(KeyrefDeserializerState::Init__),
16708            })
16709        }
16710        fn finish_state<R>(
16711            &mut self,
16712            reader: &R,
16713            state: KeyrefDeserializerState,
16714        ) -> Result<(), Error>
16715        where
16716            R: DeserializeReader,
16717        {
16718            if let KeyrefDeserializerState::Content__(deserializer) = state {
16719                self.store_content(deserializer.finish(reader)?)?;
16720            }
16721            Ok(())
16722        }
16723        fn store_content(&mut self, value: super::KeyrefContent) -> Result<(), Error> {
16724            if self.content.is_some() {
16725                Err(ErrorKind::DuplicateContent)?;
16726            }
16727            self.content = Some(value);
16728            Ok(())
16729        }
16730        fn handle_content<'de, R>(
16731            &mut self,
16732            reader: &R,
16733            output: DeserializerOutput<'de, super::KeyrefContent>,
16734            fallback: &mut Option<KeyrefDeserializerState>,
16735        ) -> Result<ElementHandlerOutput<'de>, Error>
16736        where
16737            R: DeserializeReader,
16738        {
16739            let DeserializerOutput {
16740                artifact,
16741                event,
16742                allow_any,
16743            } = output;
16744            if artifact.is_none() {
16745                *self.state = fallback.take().unwrap_or(KeyrefDeserializerState::Next__);
16746                return Ok(ElementHandlerOutput::break_(event, allow_any));
16747            }
16748            if let Some(fallback) = fallback.take() {
16749                self.finish_state(reader, fallback)?;
16750            }
16751            Ok(match artifact {
16752                DeserializerArtifact::None => unreachable!(),
16753                DeserializerArtifact::Data(data) => {
16754                    self.store_content(data)?;
16755                    *self.state = KeyrefDeserializerState::Next__;
16756                    ElementHandlerOutput::from_event(event, allow_any)
16757                }
16758                DeserializerArtifact::Deserializer(deserializer) => {
16759                    let ret = ElementHandlerOutput::from_event(event, allow_any);
16760                    match &ret {
16761                        ElementHandlerOutput::Continue { .. } => {
16762                            fallback
16763                                .get_or_insert(KeyrefDeserializerState::Content__(deserializer));
16764                            *self.state = KeyrefDeserializerState::Next__;
16765                        }
16766                        ElementHandlerOutput::Break { .. } => {
16767                            *self.state = KeyrefDeserializerState::Content__(deserializer);
16768                        }
16769                    }
16770                    ret
16771                }
16772            })
16773        }
16774    }
16775    impl<'de> Deserializer<'de, super::Keyref> for KeyrefDeserializer {
16776        fn init<R>(reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::Keyref>
16777        where
16778            R: DeserializeReader,
16779        {
16780            reader.init_deserializer_from_start_event(event, Self::from_bytes_start)
16781        }
16782        fn next<R>(
16783            mut self,
16784            reader: &R,
16785            event: Event<'de>,
16786        ) -> DeserializerResult<'de, super::Keyref>
16787        where
16788            R: DeserializeReader,
16789        {
16790            use KeyrefDeserializerState as S;
16791            let mut event = event;
16792            let mut fallback = None;
16793            let (event, allow_any) = loop {
16794                let state = replace(&mut *self.state, S::Unknown__);
16795                event = match (state, event) {
16796                    (S::Content__(deserializer), event) => {
16797                        let output = deserializer.next(reader, event)?;
16798                        match self.handle_content(reader, output, &mut fallback)? {
16799                            ElementHandlerOutput::Break { event, allow_any } => {
16800                                break (event, allow_any)
16801                            }
16802                            ElementHandlerOutput::Continue { event, .. } => event,
16803                        }
16804                    }
16805                    (_, Event::End(_)) => {
16806                        return Ok(DeserializerOutput {
16807                            artifact: DeserializerArtifact::Data(self.finish(reader)?),
16808                            event: DeserializerEvent::None,
16809                            allow_any: false,
16810                        });
16811                    }
16812                    (old_state @ (S::Init__ | S::Next__), event) => {
16813                        let output =
16814                            <super::KeyrefContent as WithDeserializer>::Deserializer::init(
16815                                reader, event,
16816                            )?;
16817                        match self.handle_content(reader, output, &mut fallback)? {
16818                            ElementHandlerOutput::Break { event, allow_any } => {
16819                                if matches!(&*self.state, S::Unknown__) {
16820                                    *self.state = old_state;
16821                                }
16822                                break (event, allow_any);
16823                            }
16824                            ElementHandlerOutput::Continue { event, .. } => event,
16825                        }
16826                    }
16827                    (S::Unknown__, _) => unreachable!(),
16828                }
16829            };
16830            Ok(DeserializerOutput {
16831                artifact: DeserializerArtifact::Deserializer(self),
16832                event,
16833                allow_any,
16834            })
16835        }
16836        fn finish<R>(mut self, reader: &R) -> Result<super::Keyref, Error>
16837        where
16838            R: DeserializeReader,
16839        {
16840            let state = replace(&mut *self.state, KeyrefDeserializerState::Unknown__);
16841            self.finish_state(reader, state)?;
16842            Ok(super::Keyref {
16843                id: self.id,
16844                name: self.name,
16845                ref_: self.ref_,
16846                refer: self.refer,
16847                content: self.content,
16848            })
16849        }
16850    }
16851    #[derive(Debug)]
16852    pub struct KeyrefContentDeserializer {
16853        annotation: Option<super::Annotation>,
16854        selector: Option<super::Field>,
16855        field: Vec<super::Field>,
16856        state: Box<KeyrefContentDeserializerState>,
16857    }
16858    #[derive(Debug)]
16859    enum KeyrefContentDeserializerState {
16860        Init__,
16861        Annotation(Option<<super::Annotation as WithDeserializer>::Deserializer>),
16862        Selector(Option<<super::Field as WithDeserializer>::Deserializer>),
16863        Field(Option<<super::Field as WithDeserializer>::Deserializer>),
16864        Done__,
16865        Unknown__,
16866    }
16867    impl KeyrefContentDeserializer {
16868        fn finish_state<R>(
16869            &mut self,
16870            reader: &R,
16871            state: KeyrefContentDeserializerState,
16872        ) -> Result<(), Error>
16873        where
16874            R: DeserializeReader,
16875        {
16876            use KeyrefContentDeserializerState as S;
16877            match state {
16878                S::Annotation(Some(deserializer)) => {
16879                    self.store_annotation(deserializer.finish(reader)?)?
16880                }
16881                S::Selector(Some(deserializer)) => {
16882                    self.store_selector(deserializer.finish(reader)?)?
16883                }
16884                S::Field(Some(deserializer)) => self.store_field(deserializer.finish(reader)?)?,
16885                _ => (),
16886            }
16887            Ok(())
16888        }
16889        fn store_annotation(&mut self, value: super::Annotation) -> Result<(), Error> {
16890            if self.annotation.is_some() {
16891                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
16892                    b"annotation",
16893                )))?;
16894            }
16895            self.annotation = Some(value);
16896            Ok(())
16897        }
16898        fn store_selector(&mut self, value: super::Field) -> Result<(), Error> {
16899            if self.selector.is_some() {
16900                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
16901                    b"selector",
16902                )))?;
16903            }
16904            self.selector = Some(value);
16905            Ok(())
16906        }
16907        fn store_field(&mut self, value: super::Field) -> Result<(), Error> {
16908            self.field.push(value);
16909            Ok(())
16910        }
16911        fn handle_annotation<'de, R>(
16912            &mut self,
16913            reader: &R,
16914            output: DeserializerOutput<'de, super::Annotation>,
16915            fallback: &mut Option<KeyrefContentDeserializerState>,
16916        ) -> Result<ElementHandlerOutput<'de>, Error>
16917        where
16918            R: DeserializeReader,
16919        {
16920            let DeserializerOutput {
16921                artifact,
16922                event,
16923                allow_any,
16924            } = output;
16925            if artifact.is_none() {
16926                fallback.get_or_insert(KeyrefContentDeserializerState::Annotation(None));
16927                *self.state = KeyrefContentDeserializerState::Selector(None);
16928                return Ok(ElementHandlerOutput::from_event(event, allow_any));
16929            }
16930            if let Some(fallback) = fallback.take() {
16931                self.finish_state(reader, fallback)?;
16932            }
16933            Ok(match artifact {
16934                DeserializerArtifact::None => unreachable!(),
16935                DeserializerArtifact::Data(data) => {
16936                    self.store_annotation(data)?;
16937                    *self.state = KeyrefContentDeserializerState::Selector(None);
16938                    ElementHandlerOutput::from_event(event, allow_any)
16939                }
16940                DeserializerArtifact::Deserializer(deserializer) => {
16941                    let ret = ElementHandlerOutput::from_event(event, allow_any);
16942                    match &ret {
16943                        ElementHandlerOutput::Continue { .. } => {
16944                            fallback.get_or_insert(KeyrefContentDeserializerState::Annotation(
16945                                Some(deserializer),
16946                            ));
16947                            *self.state = KeyrefContentDeserializerState::Selector(None);
16948                        }
16949                        ElementHandlerOutput::Break { .. } => {
16950                            *self.state =
16951                                KeyrefContentDeserializerState::Annotation(Some(deserializer));
16952                        }
16953                    }
16954                    ret
16955                }
16956            })
16957        }
16958        fn handle_selector<'de, R>(
16959            &mut self,
16960            reader: &R,
16961            output: DeserializerOutput<'de, super::Field>,
16962            fallback: &mut Option<KeyrefContentDeserializerState>,
16963        ) -> Result<ElementHandlerOutput<'de>, Error>
16964        where
16965            R: DeserializeReader,
16966        {
16967            let DeserializerOutput {
16968                artifact,
16969                event,
16970                allow_any,
16971            } = output;
16972            if artifact.is_none() {
16973                if self.selector.is_some() {
16974                    fallback.get_or_insert(KeyrefContentDeserializerState::Selector(None));
16975                    *self.state = KeyrefContentDeserializerState::Field(None);
16976                    return Ok(ElementHandlerOutput::from_event(event, allow_any));
16977                } else {
16978                    *self.state = KeyrefContentDeserializerState::Selector(None);
16979                    return Ok(ElementHandlerOutput::break_(event, allow_any));
16980                }
16981            }
16982            if let Some(fallback) = fallback.take() {
16983                self.finish_state(reader, fallback)?;
16984            }
16985            Ok(match artifact {
16986                DeserializerArtifact::None => unreachable!(),
16987                DeserializerArtifact::Data(data) => {
16988                    self.store_selector(data)?;
16989                    *self.state = KeyrefContentDeserializerState::Field(None);
16990                    ElementHandlerOutput::from_event(event, allow_any)
16991                }
16992                DeserializerArtifact::Deserializer(deserializer) => {
16993                    let ret = ElementHandlerOutput::from_event(event, allow_any);
16994                    match &ret {
16995                        ElementHandlerOutput::Continue { .. } => {
16996                            fallback.get_or_insert(KeyrefContentDeserializerState::Selector(Some(
16997                                deserializer,
16998                            )));
16999                            *self.state = KeyrefContentDeserializerState::Field(None);
17000                        }
17001                        ElementHandlerOutput::Break { .. } => {
17002                            *self.state =
17003                                KeyrefContentDeserializerState::Selector(Some(deserializer));
17004                        }
17005                    }
17006                    ret
17007                }
17008            })
17009        }
17010        fn handle_field<'de, R>(
17011            &mut self,
17012            reader: &R,
17013            output: DeserializerOutput<'de, super::Field>,
17014            fallback: &mut Option<KeyrefContentDeserializerState>,
17015        ) -> Result<ElementHandlerOutput<'de>, Error>
17016        where
17017            R: DeserializeReader,
17018        {
17019            let DeserializerOutput {
17020                artifact,
17021                event,
17022                allow_any,
17023            } = output;
17024            if artifact.is_none() {
17025                if self.field.len() < 1usize {
17026                    *self.state = KeyrefContentDeserializerState::Field(None);
17027                    return Ok(ElementHandlerOutput::break_(event, allow_any));
17028                } else {
17029                    fallback.get_or_insert(KeyrefContentDeserializerState::Field(None));
17030                    *self.state = KeyrefContentDeserializerState::Done__;
17031                    return Ok(ElementHandlerOutput::from_event(event, allow_any));
17032                }
17033            }
17034            if let Some(fallback) = fallback.take() {
17035                self.finish_state(reader, fallback)?;
17036            }
17037            Ok(match artifact {
17038                DeserializerArtifact::None => unreachable!(),
17039                DeserializerArtifact::Data(data) => {
17040                    self.store_field(data)?;
17041                    *self.state = KeyrefContentDeserializerState::Field(None);
17042                    ElementHandlerOutput::from_event(event, allow_any)
17043                }
17044                DeserializerArtifact::Deserializer(deserializer) => {
17045                    let ret = ElementHandlerOutput::from_event(event, allow_any);
17046                    match &ret {
17047                        ElementHandlerOutput::Continue { .. } => {
17048                            fallback.get_or_insert(KeyrefContentDeserializerState::Field(Some(
17049                                deserializer,
17050                            )));
17051                            if self.field.len().saturating_add(1) < 1usize {
17052                                *self.state = KeyrefContentDeserializerState::Field(None);
17053                            } else {
17054                                *self.state = KeyrefContentDeserializerState::Done__;
17055                            }
17056                        }
17057                        ElementHandlerOutput::Break { .. } => {
17058                            *self.state = KeyrefContentDeserializerState::Field(Some(deserializer));
17059                        }
17060                    }
17061                    ret
17062                }
17063            })
17064        }
17065    }
17066    impl<'de> Deserializer<'de, super::KeyrefContent> for KeyrefContentDeserializer {
17067        fn init<R>(reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::KeyrefContent>
17068        where
17069            R: DeserializeReader,
17070        {
17071            let deserializer = Self {
17072                annotation: None,
17073                selector: None,
17074                field: Vec::new(),
17075                state: Box::new(KeyrefContentDeserializerState::Init__),
17076            };
17077            let mut output = deserializer.next(reader, event)?;
17078            output.artifact = match output.artifact {
17079                DeserializerArtifact::Deserializer(x)
17080                    if matches!(&*x.state, KeyrefContentDeserializerState::Init__) =>
17081                {
17082                    DeserializerArtifact::None
17083                }
17084                artifact => artifact,
17085            };
17086            Ok(output)
17087        }
17088        fn next<R>(
17089            mut self,
17090            reader: &R,
17091            event: Event<'de>,
17092        ) -> DeserializerResult<'de, super::KeyrefContent>
17093        where
17094            R: DeserializeReader,
17095        {
17096            use KeyrefContentDeserializerState as S;
17097            let mut event = event;
17098            let mut fallback = None;
17099            let mut allow_any_element = false;
17100            let (event, allow_any) = loop {
17101                let state = replace(&mut *self.state, S::Unknown__);
17102                event = match (state, event) {
17103                    (S::Annotation(Some(deserializer)), event) => {
17104                        let output = deserializer.next(reader, event)?;
17105                        match self.handle_annotation(reader, output, &mut fallback)? {
17106                            ElementHandlerOutput::Continue { event, allow_any } => {
17107                                allow_any_element = allow_any_element || allow_any;
17108                                event
17109                            }
17110                            ElementHandlerOutput::Break { event, allow_any } => {
17111                                break (event, allow_any)
17112                            }
17113                        }
17114                    }
17115                    (S::Selector(Some(deserializer)), event) => {
17116                        let output = deserializer.next(reader, event)?;
17117                        match self.handle_selector(reader, output, &mut fallback)? {
17118                            ElementHandlerOutput::Continue { event, allow_any } => {
17119                                allow_any_element = allow_any_element || allow_any;
17120                                event
17121                            }
17122                            ElementHandlerOutput::Break { event, allow_any } => {
17123                                break (event, allow_any)
17124                            }
17125                        }
17126                    }
17127                    (S::Field(Some(deserializer)), event) => {
17128                        let output = deserializer.next(reader, event)?;
17129                        match self.handle_field(reader, output, &mut fallback)? {
17130                            ElementHandlerOutput::Continue { event, allow_any } => {
17131                                allow_any_element = allow_any_element || allow_any;
17132                                event
17133                            }
17134                            ElementHandlerOutput::Break { event, allow_any } => {
17135                                break (event, allow_any)
17136                            }
17137                        }
17138                    }
17139                    (_, event @ Event::End(_)) => {
17140                        if let Some(fallback) = fallback.take() {
17141                            self.finish_state(reader, fallback)?;
17142                        }
17143                        return Ok(DeserializerOutput {
17144                            artifact: DeserializerArtifact::Data(self.finish(reader)?),
17145                            event: DeserializerEvent::Continue(event),
17146                            allow_any: false,
17147                        });
17148                    }
17149                    (S::Init__, event) => {
17150                        fallback.get_or_insert(S::Init__);
17151                        *self.state = KeyrefContentDeserializerState::Annotation(None);
17152                        event
17153                    }
17154                    (S::Annotation(None), event @ (Event::Start(_) | Event::Empty(_))) => {
17155                        if reader.check_start_tag_name(&event, Some(&super::NS_XS), b"annotation") {
17156                            let output =
17157                                <super::Annotation as WithDeserializer>::Deserializer::init(
17158                                    reader, event,
17159                                )?;
17160                            match self.handle_annotation(reader, output, &mut fallback)? {
17161                                ElementHandlerOutput::Continue { event, allow_any } => {
17162                                    allow_any_element = allow_any_element || allow_any;
17163                                    event
17164                                }
17165                                ElementHandlerOutput::Break { event, allow_any } => {
17166                                    break (event, allow_any)
17167                                }
17168                            }
17169                        } else {
17170                            *self.state = S::Selector(None);
17171                            allow_any_element = true;
17172                            fallback.get_or_insert(S::Annotation(None));
17173                            event
17174                        }
17175                    }
17176                    (S::Selector(None), event @ (Event::Start(_) | Event::Empty(_))) => {
17177                        if reader.check_start_tag_name(&event, Some(&super::NS_XS), b"selector") {
17178                            let output = <super::Field as WithDeserializer>::Deserializer::init(
17179                                reader, event,
17180                            )?;
17181                            match self.handle_selector(reader, output, &mut fallback)? {
17182                                ElementHandlerOutput::Continue { event, allow_any } => {
17183                                    allow_any_element = allow_any_element || allow_any;
17184                                    event
17185                                }
17186                                ElementHandlerOutput::Break { event, allow_any } => {
17187                                    break (event, allow_any)
17188                                }
17189                            }
17190                        } else {
17191                            *self.state = S::Field(None);
17192                            allow_any_element = true;
17193                            fallback.get_or_insert(S::Selector(None));
17194                            event
17195                        }
17196                    }
17197                    (S::Field(None), event @ (Event::Start(_) | Event::Empty(_))) => {
17198                        if reader.check_start_tag_name(&event, Some(&super::NS_XS), b"field") {
17199                            let output = <super::Field as WithDeserializer>::Deserializer::init(
17200                                reader, event,
17201                            )?;
17202                            match self.handle_field(reader, output, &mut fallback)? {
17203                                ElementHandlerOutput::Continue { event, allow_any } => {
17204                                    allow_any_element = allow_any_element || allow_any;
17205                                    event
17206                                }
17207                                ElementHandlerOutput::Break { event, allow_any } => {
17208                                    break (event, allow_any)
17209                                }
17210                            }
17211                        } else {
17212                            *self.state = S::Done__;
17213                            allow_any_element = true;
17214                            fallback.get_or_insert(S::Field(None));
17215                            event
17216                        }
17217                    }
17218                    (S::Done__, event) => {
17219                        fallback.get_or_insert(S::Done__);
17220                        break (DeserializerEvent::Continue(event), allow_any_element);
17221                    }
17222                    (S::Unknown__, _) => unreachable!(),
17223                    (state, event) => {
17224                        *self.state = state;
17225                        break (DeserializerEvent::Break(event), false);
17226                    }
17227                }
17228            };
17229            if let Some(fallback) = fallback {
17230                *self.state = fallback;
17231            }
17232            Ok(DeserializerOutput {
17233                artifact: DeserializerArtifact::Deserializer(self),
17234                event,
17235                allow_any,
17236            })
17237        }
17238        fn finish<R>(mut self, reader: &R) -> Result<super::KeyrefContent, Error>
17239        where
17240            R: DeserializeReader,
17241        {
17242            let state = replace(&mut *self.state, KeyrefContentDeserializerState::Unknown__);
17243            self.finish_state(reader, state)?;
17244            Ok(super::KeyrefContent {
17245                annotation: self.annotation,
17246                selector: self
17247                    .selector
17248                    .ok_or_else(|| ErrorKind::MissingElement("selector".into()))?,
17249                field: self.field,
17250            })
17251        }
17252    }
17253    #[derive(Debug)]
17254    pub enum FacetDeserializer {
17255        Init__,
17256        MinExclusive(
17257            Option<super::FacetType>,
17258            Option<<super::FacetType as WithDeserializer>::Deserializer>,
17259        ),
17260        MinInclusive(
17261            Option<super::FacetType>,
17262            Option<<super::FacetType as WithDeserializer>::Deserializer>,
17263        ),
17264        MaxExclusive(
17265            Option<super::FacetType>,
17266            Option<<super::FacetType as WithDeserializer>::Deserializer>,
17267        ),
17268        MaxInclusive(
17269            Option<super::FacetType>,
17270            Option<<super::FacetType as WithDeserializer>::Deserializer>,
17271        ),
17272        TotalDigits(
17273            Option<super::FacetType>,
17274            Option<<super::FacetType as WithDeserializer>::Deserializer>,
17275        ),
17276        FractionDigits(
17277            Option<super::FacetType>,
17278            Option<<super::FacetType as WithDeserializer>::Deserializer>,
17279        ),
17280        Length(
17281            Option<super::FacetType>,
17282            Option<<super::FacetType as WithDeserializer>::Deserializer>,
17283        ),
17284        MinLength(
17285            Option<super::FacetType>,
17286            Option<<super::FacetType as WithDeserializer>::Deserializer>,
17287        ),
17288        MaxLength(
17289            Option<super::FacetType>,
17290            Option<<super::FacetType as WithDeserializer>::Deserializer>,
17291        ),
17292        Enumeration(
17293            Option<super::FacetType>,
17294            Option<<super::FacetType as WithDeserializer>::Deserializer>,
17295        ),
17296        WhiteSpace(
17297            Option<super::FacetType>,
17298            Option<<super::FacetType as WithDeserializer>::Deserializer>,
17299        ),
17300        Pattern(
17301            Option<super::FacetType>,
17302            Option<<super::FacetType as WithDeserializer>::Deserializer>,
17303        ),
17304        Assertion(
17305            Option<super::AssertionType>,
17306            Option<<super::AssertionType as WithDeserializer>::Deserializer>,
17307        ),
17308        ExplicitTimezone(
17309            Option<super::FacetType>,
17310            Option<<super::FacetType as WithDeserializer>::Deserializer>,
17311        ),
17312        Done__(super::Facet),
17313        Unknown__,
17314    }
17315    impl FacetDeserializer {
17316        fn find_suitable<'de, R>(
17317            &mut self,
17318            reader: &R,
17319            event: Event<'de>,
17320            fallback: &mut Option<FacetDeserializer>,
17321        ) -> Result<ElementHandlerOutput<'de>, Error>
17322        where
17323            R: DeserializeReader,
17324        {
17325            let (Event::Start(x) | Event::Empty(x)) = &event else {
17326                *self = Self::Init__;
17327                return Ok(ElementHandlerOutput::return_to_parent(event, false));
17328            };
17329            if matches!(
17330                reader.resolve_local_name(x.name(), &super::NS_XS),
17331                Some(b"minExclusive")
17332            ) {
17333                let output =
17334                    <super::FacetType as WithDeserializer>::Deserializer::init(reader, event)?;
17335                return self.handle_min_exclusive(
17336                    reader,
17337                    Default::default(),
17338                    output,
17339                    &mut *fallback,
17340                );
17341            }
17342            if matches!(
17343                reader.resolve_local_name(x.name(), &super::NS_XS),
17344                Some(b"minInclusive")
17345            ) {
17346                let output =
17347                    <super::FacetType as WithDeserializer>::Deserializer::init(reader, event)?;
17348                return self.handle_min_inclusive(
17349                    reader,
17350                    Default::default(),
17351                    output,
17352                    &mut *fallback,
17353                );
17354            }
17355            if matches!(
17356                reader.resolve_local_name(x.name(), &super::NS_XS),
17357                Some(b"maxExclusive")
17358            ) {
17359                let output =
17360                    <super::FacetType as WithDeserializer>::Deserializer::init(reader, event)?;
17361                return self.handle_max_exclusive(
17362                    reader,
17363                    Default::default(),
17364                    output,
17365                    &mut *fallback,
17366                );
17367            }
17368            if matches!(
17369                reader.resolve_local_name(x.name(), &super::NS_XS),
17370                Some(b"maxInclusive")
17371            ) {
17372                let output =
17373                    <super::FacetType as WithDeserializer>::Deserializer::init(reader, event)?;
17374                return self.handle_max_inclusive(
17375                    reader,
17376                    Default::default(),
17377                    output,
17378                    &mut *fallback,
17379                );
17380            }
17381            if matches!(
17382                reader.resolve_local_name(x.name(), &super::NS_XS),
17383                Some(b"totalDigits")
17384            ) {
17385                let output =
17386                    <super::FacetType as WithDeserializer>::Deserializer::init(reader, event)?;
17387                return self.handle_total_digits(
17388                    reader,
17389                    Default::default(),
17390                    output,
17391                    &mut *fallback,
17392                );
17393            }
17394            if matches!(
17395                reader.resolve_local_name(x.name(), &super::NS_XS),
17396                Some(b"fractionDigits")
17397            ) {
17398                let output =
17399                    <super::FacetType as WithDeserializer>::Deserializer::init(reader, event)?;
17400                return self.handle_fraction_digits(
17401                    reader,
17402                    Default::default(),
17403                    output,
17404                    &mut *fallback,
17405                );
17406            }
17407            if matches!(
17408                reader.resolve_local_name(x.name(), &super::NS_XS),
17409                Some(b"length")
17410            ) {
17411                let output =
17412                    <super::FacetType as WithDeserializer>::Deserializer::init(reader, event)?;
17413                return self.handle_length(reader, Default::default(), output, &mut *fallback);
17414            }
17415            if matches!(
17416                reader.resolve_local_name(x.name(), &super::NS_XS),
17417                Some(b"minLength")
17418            ) {
17419                let output =
17420                    <super::FacetType as WithDeserializer>::Deserializer::init(reader, event)?;
17421                return self.handle_min_length(reader, Default::default(), output, &mut *fallback);
17422            }
17423            if matches!(
17424                reader.resolve_local_name(x.name(), &super::NS_XS),
17425                Some(b"maxLength")
17426            ) {
17427                let output =
17428                    <super::FacetType as WithDeserializer>::Deserializer::init(reader, event)?;
17429                return self.handle_max_length(reader, Default::default(), output, &mut *fallback);
17430            }
17431            if matches!(
17432                reader.resolve_local_name(x.name(), &super::NS_XS),
17433                Some(b"enumeration")
17434            ) {
17435                let output =
17436                    <super::FacetType as WithDeserializer>::Deserializer::init(reader, event)?;
17437                return self.handle_enumeration(reader, Default::default(), output, &mut *fallback);
17438            }
17439            if matches!(
17440                reader.resolve_local_name(x.name(), &super::NS_XS),
17441                Some(b"whiteSpace")
17442            ) {
17443                let output =
17444                    <super::FacetType as WithDeserializer>::Deserializer::init(reader, event)?;
17445                return self.handle_white_space(reader, Default::default(), output, &mut *fallback);
17446            }
17447            if matches!(
17448                reader.resolve_local_name(x.name(), &super::NS_XS),
17449                Some(b"pattern")
17450            ) {
17451                let output =
17452                    <super::FacetType as WithDeserializer>::Deserializer::init(reader, event)?;
17453                return self.handle_pattern(reader, Default::default(), output, &mut *fallback);
17454            }
17455            if matches!(
17456                reader.resolve_local_name(x.name(), &super::NS_XS),
17457                Some(b"assertion")
17458            ) {
17459                let output =
17460                    <super::AssertionType as WithDeserializer>::Deserializer::init(reader, event)?;
17461                return self.handle_assertion(reader, Default::default(), output, &mut *fallback);
17462            }
17463            if matches!(
17464                reader.resolve_local_name(x.name(), &super::NS_XS),
17465                Some(b"explicitTimezone")
17466            ) {
17467                let output =
17468                    <super::FacetType as WithDeserializer>::Deserializer::init(reader, event)?;
17469                return self.handle_explicit_timezone(
17470                    reader,
17471                    Default::default(),
17472                    output,
17473                    &mut *fallback,
17474                );
17475            }
17476            *self = Self::Init__;
17477            Ok(ElementHandlerOutput::return_to_parent(event, false))
17478        }
17479        fn store_min_exclusive(
17480            values: &mut Option<super::FacetType>,
17481            value: super::FacetType,
17482        ) -> Result<(), Error> {
17483            if values.is_some() {
17484                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
17485                    b"minExclusive",
17486                )))?;
17487            }
17488            *values = Some(value);
17489            Ok(())
17490        }
17491        fn store_min_inclusive(
17492            values: &mut Option<super::FacetType>,
17493            value: super::FacetType,
17494        ) -> Result<(), Error> {
17495            if values.is_some() {
17496                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
17497                    b"minInclusive",
17498                )))?;
17499            }
17500            *values = Some(value);
17501            Ok(())
17502        }
17503        fn store_max_exclusive(
17504            values: &mut Option<super::FacetType>,
17505            value: super::FacetType,
17506        ) -> Result<(), Error> {
17507            if values.is_some() {
17508                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
17509                    b"maxExclusive",
17510                )))?;
17511            }
17512            *values = Some(value);
17513            Ok(())
17514        }
17515        fn store_max_inclusive(
17516            values: &mut Option<super::FacetType>,
17517            value: super::FacetType,
17518        ) -> Result<(), Error> {
17519            if values.is_some() {
17520                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
17521                    b"maxInclusive",
17522                )))?;
17523            }
17524            *values = Some(value);
17525            Ok(())
17526        }
17527        fn store_total_digits(
17528            values: &mut Option<super::FacetType>,
17529            value: super::FacetType,
17530        ) -> Result<(), Error> {
17531            if values.is_some() {
17532                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
17533                    b"totalDigits",
17534                )))?;
17535            }
17536            *values = Some(value);
17537            Ok(())
17538        }
17539        fn store_fraction_digits(
17540            values: &mut Option<super::FacetType>,
17541            value: super::FacetType,
17542        ) -> Result<(), Error> {
17543            if values.is_some() {
17544                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
17545                    b"fractionDigits",
17546                )))?;
17547            }
17548            *values = Some(value);
17549            Ok(())
17550        }
17551        fn store_length(
17552            values: &mut Option<super::FacetType>,
17553            value: super::FacetType,
17554        ) -> Result<(), Error> {
17555            if values.is_some() {
17556                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
17557                    b"length",
17558                )))?;
17559            }
17560            *values = Some(value);
17561            Ok(())
17562        }
17563        fn store_min_length(
17564            values: &mut Option<super::FacetType>,
17565            value: super::FacetType,
17566        ) -> Result<(), Error> {
17567            if values.is_some() {
17568                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
17569                    b"minLength",
17570                )))?;
17571            }
17572            *values = Some(value);
17573            Ok(())
17574        }
17575        fn store_max_length(
17576            values: &mut Option<super::FacetType>,
17577            value: super::FacetType,
17578        ) -> Result<(), Error> {
17579            if values.is_some() {
17580                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
17581                    b"maxLength",
17582                )))?;
17583            }
17584            *values = Some(value);
17585            Ok(())
17586        }
17587        fn store_enumeration(
17588            values: &mut Option<super::FacetType>,
17589            value: super::FacetType,
17590        ) -> Result<(), Error> {
17591            if values.is_some() {
17592                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
17593                    b"enumeration",
17594                )))?;
17595            }
17596            *values = Some(value);
17597            Ok(())
17598        }
17599        fn store_white_space(
17600            values: &mut Option<super::FacetType>,
17601            value: super::FacetType,
17602        ) -> Result<(), Error> {
17603            if values.is_some() {
17604                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
17605                    b"whiteSpace",
17606                )))?;
17607            }
17608            *values = Some(value);
17609            Ok(())
17610        }
17611        fn store_pattern(
17612            values: &mut Option<super::FacetType>,
17613            value: super::FacetType,
17614        ) -> Result<(), Error> {
17615            if values.is_some() {
17616                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
17617                    b"pattern",
17618                )))?;
17619            }
17620            *values = Some(value);
17621            Ok(())
17622        }
17623        fn store_assertion(
17624            values: &mut Option<super::AssertionType>,
17625            value: super::AssertionType,
17626        ) -> Result<(), Error> {
17627            if values.is_some() {
17628                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
17629                    b"assertion",
17630                )))?;
17631            }
17632            *values = Some(value);
17633            Ok(())
17634        }
17635        fn store_explicit_timezone(
17636            values: &mut Option<super::FacetType>,
17637            value: super::FacetType,
17638        ) -> Result<(), Error> {
17639            if values.is_some() {
17640                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
17641                    b"explicitTimezone",
17642                )))?;
17643            }
17644            *values = Some(value);
17645            Ok(())
17646        }
17647        fn handle_min_exclusive<'de, R>(
17648            &mut self,
17649            reader: &R,
17650            mut values: Option<super::FacetType>,
17651            output: DeserializerOutput<'de, super::FacetType>,
17652            fallback: &mut Option<Self>,
17653        ) -> Result<ElementHandlerOutput<'de>, Error>
17654        where
17655            R: DeserializeReader,
17656        {
17657            let DeserializerOutput {
17658                artifact,
17659                event,
17660                allow_any,
17661            } = output;
17662            if artifact.is_none() {
17663                *self = match fallback.take() {
17664                    None => Self::Init__,
17665                    Some(Self::MinExclusive(_, Some(deserializer))) => {
17666                        Self::MinExclusive(values, Some(deserializer))
17667                    }
17668                    _ => unreachable!(),
17669                };
17670                return Ok(ElementHandlerOutput::break_(event, allow_any));
17671            }
17672            match fallback.take() {
17673                None => (),
17674                Some(Self::MinExclusive(_, Some(deserializer))) => {
17675                    let data = deserializer.finish(reader)?;
17676                    Self::store_min_exclusive(&mut values, data)?;
17677                }
17678                Some(_) => unreachable!(),
17679            }
17680            Ok(match artifact {
17681                DeserializerArtifact::None => unreachable!(),
17682                DeserializerArtifact::Data(data) => {
17683                    Self::store_min_exclusive(&mut values, data)?;
17684                    let data = Self::MinExclusive(values, None).finish(reader)?;
17685                    *self = Self::Done__(data);
17686                    ElementHandlerOutput::Break { event, allow_any }
17687                }
17688                DeserializerArtifact::Deserializer(deserializer) => {
17689                    *self = Self::MinExclusive(values, Some(deserializer));
17690                    ElementHandlerOutput::from_event_end(event, allow_any)
17691                }
17692            })
17693        }
17694        fn handle_min_inclusive<'de, R>(
17695            &mut self,
17696            reader: &R,
17697            mut values: Option<super::FacetType>,
17698            output: DeserializerOutput<'de, super::FacetType>,
17699            fallback: &mut Option<Self>,
17700        ) -> Result<ElementHandlerOutput<'de>, Error>
17701        where
17702            R: DeserializeReader,
17703        {
17704            let DeserializerOutput {
17705                artifact,
17706                event,
17707                allow_any,
17708            } = output;
17709            if artifact.is_none() {
17710                *self = match fallback.take() {
17711                    None => Self::Init__,
17712                    Some(Self::MinInclusive(_, Some(deserializer))) => {
17713                        Self::MinInclusive(values, Some(deserializer))
17714                    }
17715                    _ => unreachable!(),
17716                };
17717                return Ok(ElementHandlerOutput::break_(event, allow_any));
17718            }
17719            match fallback.take() {
17720                None => (),
17721                Some(Self::MinInclusive(_, Some(deserializer))) => {
17722                    let data = deserializer.finish(reader)?;
17723                    Self::store_min_inclusive(&mut values, data)?;
17724                }
17725                Some(_) => unreachable!(),
17726            }
17727            Ok(match artifact {
17728                DeserializerArtifact::None => unreachable!(),
17729                DeserializerArtifact::Data(data) => {
17730                    Self::store_min_inclusive(&mut values, data)?;
17731                    let data = Self::MinInclusive(values, None).finish(reader)?;
17732                    *self = Self::Done__(data);
17733                    ElementHandlerOutput::Break { event, allow_any }
17734                }
17735                DeserializerArtifact::Deserializer(deserializer) => {
17736                    *self = Self::MinInclusive(values, Some(deserializer));
17737                    ElementHandlerOutput::from_event_end(event, allow_any)
17738                }
17739            })
17740        }
17741        fn handle_max_exclusive<'de, R>(
17742            &mut self,
17743            reader: &R,
17744            mut values: Option<super::FacetType>,
17745            output: DeserializerOutput<'de, super::FacetType>,
17746            fallback: &mut Option<Self>,
17747        ) -> Result<ElementHandlerOutput<'de>, Error>
17748        where
17749            R: DeserializeReader,
17750        {
17751            let DeserializerOutput {
17752                artifact,
17753                event,
17754                allow_any,
17755            } = output;
17756            if artifact.is_none() {
17757                *self = match fallback.take() {
17758                    None => Self::Init__,
17759                    Some(Self::MaxExclusive(_, Some(deserializer))) => {
17760                        Self::MaxExclusive(values, Some(deserializer))
17761                    }
17762                    _ => unreachable!(),
17763                };
17764                return Ok(ElementHandlerOutput::break_(event, allow_any));
17765            }
17766            match fallback.take() {
17767                None => (),
17768                Some(Self::MaxExclusive(_, Some(deserializer))) => {
17769                    let data = deserializer.finish(reader)?;
17770                    Self::store_max_exclusive(&mut values, data)?;
17771                }
17772                Some(_) => unreachable!(),
17773            }
17774            Ok(match artifact {
17775                DeserializerArtifact::None => unreachable!(),
17776                DeserializerArtifact::Data(data) => {
17777                    Self::store_max_exclusive(&mut values, data)?;
17778                    let data = Self::MaxExclusive(values, None).finish(reader)?;
17779                    *self = Self::Done__(data);
17780                    ElementHandlerOutput::Break { event, allow_any }
17781                }
17782                DeserializerArtifact::Deserializer(deserializer) => {
17783                    *self = Self::MaxExclusive(values, Some(deserializer));
17784                    ElementHandlerOutput::from_event_end(event, allow_any)
17785                }
17786            })
17787        }
17788        fn handle_max_inclusive<'de, R>(
17789            &mut self,
17790            reader: &R,
17791            mut values: Option<super::FacetType>,
17792            output: DeserializerOutput<'de, super::FacetType>,
17793            fallback: &mut Option<Self>,
17794        ) -> Result<ElementHandlerOutput<'de>, Error>
17795        where
17796            R: DeserializeReader,
17797        {
17798            let DeserializerOutput {
17799                artifact,
17800                event,
17801                allow_any,
17802            } = output;
17803            if artifact.is_none() {
17804                *self = match fallback.take() {
17805                    None => Self::Init__,
17806                    Some(Self::MaxInclusive(_, Some(deserializer))) => {
17807                        Self::MaxInclusive(values, Some(deserializer))
17808                    }
17809                    _ => unreachable!(),
17810                };
17811                return Ok(ElementHandlerOutput::break_(event, allow_any));
17812            }
17813            match fallback.take() {
17814                None => (),
17815                Some(Self::MaxInclusive(_, Some(deserializer))) => {
17816                    let data = deserializer.finish(reader)?;
17817                    Self::store_max_inclusive(&mut values, data)?;
17818                }
17819                Some(_) => unreachable!(),
17820            }
17821            Ok(match artifact {
17822                DeserializerArtifact::None => unreachable!(),
17823                DeserializerArtifact::Data(data) => {
17824                    Self::store_max_inclusive(&mut values, data)?;
17825                    let data = Self::MaxInclusive(values, None).finish(reader)?;
17826                    *self = Self::Done__(data);
17827                    ElementHandlerOutput::Break { event, allow_any }
17828                }
17829                DeserializerArtifact::Deserializer(deserializer) => {
17830                    *self = Self::MaxInclusive(values, Some(deserializer));
17831                    ElementHandlerOutput::from_event_end(event, allow_any)
17832                }
17833            })
17834        }
17835        fn handle_total_digits<'de, R>(
17836            &mut self,
17837            reader: &R,
17838            mut values: Option<super::FacetType>,
17839            output: DeserializerOutput<'de, super::FacetType>,
17840            fallback: &mut Option<Self>,
17841        ) -> Result<ElementHandlerOutput<'de>, Error>
17842        where
17843            R: DeserializeReader,
17844        {
17845            let DeserializerOutput {
17846                artifact,
17847                event,
17848                allow_any,
17849            } = output;
17850            if artifact.is_none() {
17851                *self = match fallback.take() {
17852                    None => Self::Init__,
17853                    Some(Self::TotalDigits(_, Some(deserializer))) => {
17854                        Self::TotalDigits(values, Some(deserializer))
17855                    }
17856                    _ => unreachable!(),
17857                };
17858                return Ok(ElementHandlerOutput::break_(event, allow_any));
17859            }
17860            match fallback.take() {
17861                None => (),
17862                Some(Self::TotalDigits(_, Some(deserializer))) => {
17863                    let data = deserializer.finish(reader)?;
17864                    Self::store_total_digits(&mut values, data)?;
17865                }
17866                Some(_) => unreachable!(),
17867            }
17868            Ok(match artifact {
17869                DeserializerArtifact::None => unreachable!(),
17870                DeserializerArtifact::Data(data) => {
17871                    Self::store_total_digits(&mut values, data)?;
17872                    let data = Self::TotalDigits(values, None).finish(reader)?;
17873                    *self = Self::Done__(data);
17874                    ElementHandlerOutput::Break { event, allow_any }
17875                }
17876                DeserializerArtifact::Deserializer(deserializer) => {
17877                    *self = Self::TotalDigits(values, Some(deserializer));
17878                    ElementHandlerOutput::from_event_end(event, allow_any)
17879                }
17880            })
17881        }
17882        fn handle_fraction_digits<'de, R>(
17883            &mut self,
17884            reader: &R,
17885            mut values: Option<super::FacetType>,
17886            output: DeserializerOutput<'de, super::FacetType>,
17887            fallback: &mut Option<Self>,
17888        ) -> Result<ElementHandlerOutput<'de>, Error>
17889        where
17890            R: DeserializeReader,
17891        {
17892            let DeserializerOutput {
17893                artifact,
17894                event,
17895                allow_any,
17896            } = output;
17897            if artifact.is_none() {
17898                *self = match fallback.take() {
17899                    None => Self::Init__,
17900                    Some(Self::FractionDigits(_, Some(deserializer))) => {
17901                        Self::FractionDigits(values, Some(deserializer))
17902                    }
17903                    _ => unreachable!(),
17904                };
17905                return Ok(ElementHandlerOutput::break_(event, allow_any));
17906            }
17907            match fallback.take() {
17908                None => (),
17909                Some(Self::FractionDigits(_, Some(deserializer))) => {
17910                    let data = deserializer.finish(reader)?;
17911                    Self::store_fraction_digits(&mut values, data)?;
17912                }
17913                Some(_) => unreachable!(),
17914            }
17915            Ok(match artifact {
17916                DeserializerArtifact::None => unreachable!(),
17917                DeserializerArtifact::Data(data) => {
17918                    Self::store_fraction_digits(&mut values, data)?;
17919                    let data = Self::FractionDigits(values, None).finish(reader)?;
17920                    *self = Self::Done__(data);
17921                    ElementHandlerOutput::Break { event, allow_any }
17922                }
17923                DeserializerArtifact::Deserializer(deserializer) => {
17924                    *self = Self::FractionDigits(values, Some(deserializer));
17925                    ElementHandlerOutput::from_event_end(event, allow_any)
17926                }
17927            })
17928        }
17929        fn handle_length<'de, R>(
17930            &mut self,
17931            reader: &R,
17932            mut values: Option<super::FacetType>,
17933            output: DeserializerOutput<'de, super::FacetType>,
17934            fallback: &mut Option<Self>,
17935        ) -> Result<ElementHandlerOutput<'de>, Error>
17936        where
17937            R: DeserializeReader,
17938        {
17939            let DeserializerOutput {
17940                artifact,
17941                event,
17942                allow_any,
17943            } = output;
17944            if artifact.is_none() {
17945                *self = match fallback.take() {
17946                    None => Self::Init__,
17947                    Some(Self::Length(_, Some(deserializer))) => {
17948                        Self::Length(values, Some(deserializer))
17949                    }
17950                    _ => unreachable!(),
17951                };
17952                return Ok(ElementHandlerOutput::break_(event, allow_any));
17953            }
17954            match fallback.take() {
17955                None => (),
17956                Some(Self::Length(_, Some(deserializer))) => {
17957                    let data = deserializer.finish(reader)?;
17958                    Self::store_length(&mut values, data)?;
17959                }
17960                Some(_) => unreachable!(),
17961            }
17962            Ok(match artifact {
17963                DeserializerArtifact::None => unreachable!(),
17964                DeserializerArtifact::Data(data) => {
17965                    Self::store_length(&mut values, data)?;
17966                    let data = Self::Length(values, None).finish(reader)?;
17967                    *self = Self::Done__(data);
17968                    ElementHandlerOutput::Break { event, allow_any }
17969                }
17970                DeserializerArtifact::Deserializer(deserializer) => {
17971                    *self = Self::Length(values, Some(deserializer));
17972                    ElementHandlerOutput::from_event_end(event, allow_any)
17973                }
17974            })
17975        }
17976        fn handle_min_length<'de, R>(
17977            &mut self,
17978            reader: &R,
17979            mut values: Option<super::FacetType>,
17980            output: DeserializerOutput<'de, super::FacetType>,
17981            fallback: &mut Option<Self>,
17982        ) -> Result<ElementHandlerOutput<'de>, Error>
17983        where
17984            R: DeserializeReader,
17985        {
17986            let DeserializerOutput {
17987                artifact,
17988                event,
17989                allow_any,
17990            } = output;
17991            if artifact.is_none() {
17992                *self = match fallback.take() {
17993                    None => Self::Init__,
17994                    Some(Self::MinLength(_, Some(deserializer))) => {
17995                        Self::MinLength(values, Some(deserializer))
17996                    }
17997                    _ => unreachable!(),
17998                };
17999                return Ok(ElementHandlerOutput::break_(event, allow_any));
18000            }
18001            match fallback.take() {
18002                None => (),
18003                Some(Self::MinLength(_, Some(deserializer))) => {
18004                    let data = deserializer.finish(reader)?;
18005                    Self::store_min_length(&mut values, data)?;
18006                }
18007                Some(_) => unreachable!(),
18008            }
18009            Ok(match artifact {
18010                DeserializerArtifact::None => unreachable!(),
18011                DeserializerArtifact::Data(data) => {
18012                    Self::store_min_length(&mut values, data)?;
18013                    let data = Self::MinLength(values, None).finish(reader)?;
18014                    *self = Self::Done__(data);
18015                    ElementHandlerOutput::Break { event, allow_any }
18016                }
18017                DeserializerArtifact::Deserializer(deserializer) => {
18018                    *self = Self::MinLength(values, Some(deserializer));
18019                    ElementHandlerOutput::from_event_end(event, allow_any)
18020                }
18021            })
18022        }
18023        fn handle_max_length<'de, R>(
18024            &mut self,
18025            reader: &R,
18026            mut values: Option<super::FacetType>,
18027            output: DeserializerOutput<'de, super::FacetType>,
18028            fallback: &mut Option<Self>,
18029        ) -> Result<ElementHandlerOutput<'de>, Error>
18030        where
18031            R: DeserializeReader,
18032        {
18033            let DeserializerOutput {
18034                artifact,
18035                event,
18036                allow_any,
18037            } = output;
18038            if artifact.is_none() {
18039                *self = match fallback.take() {
18040                    None => Self::Init__,
18041                    Some(Self::MaxLength(_, Some(deserializer))) => {
18042                        Self::MaxLength(values, Some(deserializer))
18043                    }
18044                    _ => unreachable!(),
18045                };
18046                return Ok(ElementHandlerOutput::break_(event, allow_any));
18047            }
18048            match fallback.take() {
18049                None => (),
18050                Some(Self::MaxLength(_, Some(deserializer))) => {
18051                    let data = deserializer.finish(reader)?;
18052                    Self::store_max_length(&mut values, data)?;
18053                }
18054                Some(_) => unreachable!(),
18055            }
18056            Ok(match artifact {
18057                DeserializerArtifact::None => unreachable!(),
18058                DeserializerArtifact::Data(data) => {
18059                    Self::store_max_length(&mut values, data)?;
18060                    let data = Self::MaxLength(values, None).finish(reader)?;
18061                    *self = Self::Done__(data);
18062                    ElementHandlerOutput::Break { event, allow_any }
18063                }
18064                DeserializerArtifact::Deserializer(deserializer) => {
18065                    *self = Self::MaxLength(values, Some(deserializer));
18066                    ElementHandlerOutput::from_event_end(event, allow_any)
18067                }
18068            })
18069        }
18070        fn handle_enumeration<'de, R>(
18071            &mut self,
18072            reader: &R,
18073            mut values: Option<super::FacetType>,
18074            output: DeserializerOutput<'de, super::FacetType>,
18075            fallback: &mut Option<Self>,
18076        ) -> Result<ElementHandlerOutput<'de>, Error>
18077        where
18078            R: DeserializeReader,
18079        {
18080            let DeserializerOutput {
18081                artifact,
18082                event,
18083                allow_any,
18084            } = output;
18085            if artifact.is_none() {
18086                *self = match fallback.take() {
18087                    None => Self::Init__,
18088                    Some(Self::Enumeration(_, Some(deserializer))) => {
18089                        Self::Enumeration(values, Some(deserializer))
18090                    }
18091                    _ => unreachable!(),
18092                };
18093                return Ok(ElementHandlerOutput::break_(event, allow_any));
18094            }
18095            match fallback.take() {
18096                None => (),
18097                Some(Self::Enumeration(_, Some(deserializer))) => {
18098                    let data = deserializer.finish(reader)?;
18099                    Self::store_enumeration(&mut values, data)?;
18100                }
18101                Some(_) => unreachable!(),
18102            }
18103            Ok(match artifact {
18104                DeserializerArtifact::None => unreachable!(),
18105                DeserializerArtifact::Data(data) => {
18106                    Self::store_enumeration(&mut values, data)?;
18107                    let data = Self::Enumeration(values, None).finish(reader)?;
18108                    *self = Self::Done__(data);
18109                    ElementHandlerOutput::Break { event, allow_any }
18110                }
18111                DeserializerArtifact::Deserializer(deserializer) => {
18112                    *self = Self::Enumeration(values, Some(deserializer));
18113                    ElementHandlerOutput::from_event_end(event, allow_any)
18114                }
18115            })
18116        }
18117        fn handle_white_space<'de, R>(
18118            &mut self,
18119            reader: &R,
18120            mut values: Option<super::FacetType>,
18121            output: DeserializerOutput<'de, super::FacetType>,
18122            fallback: &mut Option<Self>,
18123        ) -> Result<ElementHandlerOutput<'de>, Error>
18124        where
18125            R: DeserializeReader,
18126        {
18127            let DeserializerOutput {
18128                artifact,
18129                event,
18130                allow_any,
18131            } = output;
18132            if artifact.is_none() {
18133                *self = match fallback.take() {
18134                    None => Self::Init__,
18135                    Some(Self::WhiteSpace(_, Some(deserializer))) => {
18136                        Self::WhiteSpace(values, Some(deserializer))
18137                    }
18138                    _ => unreachable!(),
18139                };
18140                return Ok(ElementHandlerOutput::break_(event, allow_any));
18141            }
18142            match fallback.take() {
18143                None => (),
18144                Some(Self::WhiteSpace(_, Some(deserializer))) => {
18145                    let data = deserializer.finish(reader)?;
18146                    Self::store_white_space(&mut values, data)?;
18147                }
18148                Some(_) => unreachable!(),
18149            }
18150            Ok(match artifact {
18151                DeserializerArtifact::None => unreachable!(),
18152                DeserializerArtifact::Data(data) => {
18153                    Self::store_white_space(&mut values, data)?;
18154                    let data = Self::WhiteSpace(values, None).finish(reader)?;
18155                    *self = Self::Done__(data);
18156                    ElementHandlerOutput::Break { event, allow_any }
18157                }
18158                DeserializerArtifact::Deserializer(deserializer) => {
18159                    *self = Self::WhiteSpace(values, Some(deserializer));
18160                    ElementHandlerOutput::from_event_end(event, allow_any)
18161                }
18162            })
18163        }
18164        fn handle_pattern<'de, R>(
18165            &mut self,
18166            reader: &R,
18167            mut values: Option<super::FacetType>,
18168            output: DeserializerOutput<'de, super::FacetType>,
18169            fallback: &mut Option<Self>,
18170        ) -> Result<ElementHandlerOutput<'de>, Error>
18171        where
18172            R: DeserializeReader,
18173        {
18174            let DeserializerOutput {
18175                artifact,
18176                event,
18177                allow_any,
18178            } = output;
18179            if artifact.is_none() {
18180                *self = match fallback.take() {
18181                    None => Self::Init__,
18182                    Some(Self::Pattern(_, Some(deserializer))) => {
18183                        Self::Pattern(values, Some(deserializer))
18184                    }
18185                    _ => unreachable!(),
18186                };
18187                return Ok(ElementHandlerOutput::break_(event, allow_any));
18188            }
18189            match fallback.take() {
18190                None => (),
18191                Some(Self::Pattern(_, Some(deserializer))) => {
18192                    let data = deserializer.finish(reader)?;
18193                    Self::store_pattern(&mut values, data)?;
18194                }
18195                Some(_) => unreachable!(),
18196            }
18197            Ok(match artifact {
18198                DeserializerArtifact::None => unreachable!(),
18199                DeserializerArtifact::Data(data) => {
18200                    Self::store_pattern(&mut values, data)?;
18201                    let data = Self::Pattern(values, None).finish(reader)?;
18202                    *self = Self::Done__(data);
18203                    ElementHandlerOutput::Break { event, allow_any }
18204                }
18205                DeserializerArtifact::Deserializer(deserializer) => {
18206                    *self = Self::Pattern(values, Some(deserializer));
18207                    ElementHandlerOutput::from_event_end(event, allow_any)
18208                }
18209            })
18210        }
18211        fn handle_assertion<'de, R>(
18212            &mut self,
18213            reader: &R,
18214            mut values: Option<super::AssertionType>,
18215            output: DeserializerOutput<'de, super::AssertionType>,
18216            fallback: &mut Option<Self>,
18217        ) -> Result<ElementHandlerOutput<'de>, Error>
18218        where
18219            R: DeserializeReader,
18220        {
18221            let DeserializerOutput {
18222                artifact,
18223                event,
18224                allow_any,
18225            } = output;
18226            if artifact.is_none() {
18227                *self = match fallback.take() {
18228                    None => Self::Init__,
18229                    Some(Self::Assertion(_, Some(deserializer))) => {
18230                        Self::Assertion(values, Some(deserializer))
18231                    }
18232                    _ => unreachable!(),
18233                };
18234                return Ok(ElementHandlerOutput::break_(event, allow_any));
18235            }
18236            match fallback.take() {
18237                None => (),
18238                Some(Self::Assertion(_, Some(deserializer))) => {
18239                    let data = deserializer.finish(reader)?;
18240                    Self::store_assertion(&mut values, data)?;
18241                }
18242                Some(_) => unreachable!(),
18243            }
18244            Ok(match artifact {
18245                DeserializerArtifact::None => unreachable!(),
18246                DeserializerArtifact::Data(data) => {
18247                    Self::store_assertion(&mut values, data)?;
18248                    let data = Self::Assertion(values, None).finish(reader)?;
18249                    *self = Self::Done__(data);
18250                    ElementHandlerOutput::Break { event, allow_any }
18251                }
18252                DeserializerArtifact::Deserializer(deserializer) => {
18253                    *self = Self::Assertion(values, Some(deserializer));
18254                    ElementHandlerOutput::from_event_end(event, allow_any)
18255                }
18256            })
18257        }
18258        fn handle_explicit_timezone<'de, R>(
18259            &mut self,
18260            reader: &R,
18261            mut values: Option<super::FacetType>,
18262            output: DeserializerOutput<'de, super::FacetType>,
18263            fallback: &mut Option<Self>,
18264        ) -> Result<ElementHandlerOutput<'de>, Error>
18265        where
18266            R: DeserializeReader,
18267        {
18268            let DeserializerOutput {
18269                artifact,
18270                event,
18271                allow_any,
18272            } = output;
18273            if artifact.is_none() {
18274                *self = match fallback.take() {
18275                    None => Self::Init__,
18276                    Some(Self::ExplicitTimezone(_, Some(deserializer))) => {
18277                        Self::ExplicitTimezone(values, Some(deserializer))
18278                    }
18279                    _ => unreachable!(),
18280                };
18281                return Ok(ElementHandlerOutput::break_(event, allow_any));
18282            }
18283            match fallback.take() {
18284                None => (),
18285                Some(Self::ExplicitTimezone(_, Some(deserializer))) => {
18286                    let data = deserializer.finish(reader)?;
18287                    Self::store_explicit_timezone(&mut values, data)?;
18288                }
18289                Some(_) => unreachable!(),
18290            }
18291            Ok(match artifact {
18292                DeserializerArtifact::None => unreachable!(),
18293                DeserializerArtifact::Data(data) => {
18294                    Self::store_explicit_timezone(&mut values, data)?;
18295                    let data = Self::ExplicitTimezone(values, None).finish(reader)?;
18296                    *self = Self::Done__(data);
18297                    ElementHandlerOutput::Break { event, allow_any }
18298                }
18299                DeserializerArtifact::Deserializer(deserializer) => {
18300                    *self = Self::ExplicitTimezone(values, Some(deserializer));
18301                    ElementHandlerOutput::from_event_end(event, allow_any)
18302                }
18303            })
18304        }
18305    }
18306    impl<'de> Deserializer<'de, super::Facet> for FacetDeserializer {
18307        fn init<R>(reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::Facet>
18308        where
18309            R: DeserializeReader,
18310        {
18311            let deserializer = Self::Init__;
18312            let mut output = deserializer.next(reader, event)?;
18313            output.artifact = match output.artifact {
18314                DeserializerArtifact::Deserializer(Self::Init__) => DeserializerArtifact::None,
18315                artifact => artifact,
18316            };
18317            Ok(output)
18318        }
18319        fn next<R>(mut self, reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::Facet>
18320        where
18321            R: DeserializeReader,
18322        {
18323            let mut event = event;
18324            let mut fallback = None;
18325            let (event, allow_any) = loop {
18326                let state = replace(&mut self, Self::Unknown__);
18327                event = match (state, event) {
18328                    (Self::MinExclusive(values, Some(deserializer)), event) => {
18329                        let output = deserializer.next(reader, event)?;
18330                        match self.handle_min_exclusive(reader, values, output, &mut fallback)? {
18331                            ElementHandlerOutput::Break { event, allow_any } => {
18332                                break (event, allow_any)
18333                            }
18334                            ElementHandlerOutput::Continue { event, .. } => event,
18335                        }
18336                    }
18337                    (Self::MinInclusive(values, Some(deserializer)), event) => {
18338                        let output = deserializer.next(reader, event)?;
18339                        match self.handle_min_inclusive(reader, values, output, &mut fallback)? {
18340                            ElementHandlerOutput::Break { event, allow_any } => {
18341                                break (event, allow_any)
18342                            }
18343                            ElementHandlerOutput::Continue { event, .. } => event,
18344                        }
18345                    }
18346                    (Self::MaxExclusive(values, Some(deserializer)), event) => {
18347                        let output = deserializer.next(reader, event)?;
18348                        match self.handle_max_exclusive(reader, values, output, &mut fallback)? {
18349                            ElementHandlerOutput::Break { event, allow_any } => {
18350                                break (event, allow_any)
18351                            }
18352                            ElementHandlerOutput::Continue { event, .. } => event,
18353                        }
18354                    }
18355                    (Self::MaxInclusive(values, Some(deserializer)), event) => {
18356                        let output = deserializer.next(reader, event)?;
18357                        match self.handle_max_inclusive(reader, values, output, &mut fallback)? {
18358                            ElementHandlerOutput::Break { event, allow_any } => {
18359                                break (event, allow_any)
18360                            }
18361                            ElementHandlerOutput::Continue { event, .. } => event,
18362                        }
18363                    }
18364                    (Self::TotalDigits(values, Some(deserializer)), event) => {
18365                        let output = deserializer.next(reader, event)?;
18366                        match self.handle_total_digits(reader, values, output, &mut fallback)? {
18367                            ElementHandlerOutput::Break { event, allow_any } => {
18368                                break (event, allow_any)
18369                            }
18370                            ElementHandlerOutput::Continue { event, .. } => event,
18371                        }
18372                    }
18373                    (Self::FractionDigits(values, Some(deserializer)), event) => {
18374                        let output = deserializer.next(reader, event)?;
18375                        match self.handle_fraction_digits(reader, values, output, &mut fallback)? {
18376                            ElementHandlerOutput::Break { event, allow_any } => {
18377                                break (event, allow_any)
18378                            }
18379                            ElementHandlerOutput::Continue { event, .. } => event,
18380                        }
18381                    }
18382                    (Self::Length(values, Some(deserializer)), event) => {
18383                        let output = deserializer.next(reader, event)?;
18384                        match self.handle_length(reader, values, output, &mut fallback)? {
18385                            ElementHandlerOutput::Break { event, allow_any } => {
18386                                break (event, allow_any)
18387                            }
18388                            ElementHandlerOutput::Continue { event, .. } => event,
18389                        }
18390                    }
18391                    (Self::MinLength(values, Some(deserializer)), event) => {
18392                        let output = deserializer.next(reader, event)?;
18393                        match self.handle_min_length(reader, values, output, &mut fallback)? {
18394                            ElementHandlerOutput::Break { event, allow_any } => {
18395                                break (event, allow_any)
18396                            }
18397                            ElementHandlerOutput::Continue { event, .. } => event,
18398                        }
18399                    }
18400                    (Self::MaxLength(values, Some(deserializer)), event) => {
18401                        let output = deserializer.next(reader, event)?;
18402                        match self.handle_max_length(reader, values, output, &mut fallback)? {
18403                            ElementHandlerOutput::Break { event, allow_any } => {
18404                                break (event, allow_any)
18405                            }
18406                            ElementHandlerOutput::Continue { event, .. } => event,
18407                        }
18408                    }
18409                    (Self::Enumeration(values, Some(deserializer)), event) => {
18410                        let output = deserializer.next(reader, event)?;
18411                        match self.handle_enumeration(reader, values, output, &mut fallback)? {
18412                            ElementHandlerOutput::Break { event, allow_any } => {
18413                                break (event, allow_any)
18414                            }
18415                            ElementHandlerOutput::Continue { event, .. } => event,
18416                        }
18417                    }
18418                    (Self::WhiteSpace(values, Some(deserializer)), event) => {
18419                        let output = deserializer.next(reader, event)?;
18420                        match self.handle_white_space(reader, values, output, &mut fallback)? {
18421                            ElementHandlerOutput::Break { event, allow_any } => {
18422                                break (event, allow_any)
18423                            }
18424                            ElementHandlerOutput::Continue { event, .. } => event,
18425                        }
18426                    }
18427                    (Self::Pattern(values, Some(deserializer)), event) => {
18428                        let output = deserializer.next(reader, event)?;
18429                        match self.handle_pattern(reader, values, output, &mut fallback)? {
18430                            ElementHandlerOutput::Break { event, allow_any } => {
18431                                break (event, allow_any)
18432                            }
18433                            ElementHandlerOutput::Continue { event, .. } => event,
18434                        }
18435                    }
18436                    (Self::Assertion(values, Some(deserializer)), event) => {
18437                        let output = deserializer.next(reader, event)?;
18438                        match self.handle_assertion(reader, values, output, &mut fallback)? {
18439                            ElementHandlerOutput::Break { event, allow_any } => {
18440                                break (event, allow_any)
18441                            }
18442                            ElementHandlerOutput::Continue { event, .. } => event,
18443                        }
18444                    }
18445                    (Self::ExplicitTimezone(values, Some(deserializer)), event) => {
18446                        let output = deserializer.next(reader, event)?;
18447                        match self.handle_explicit_timezone(
18448                            reader,
18449                            values,
18450                            output,
18451                            &mut fallback,
18452                        )? {
18453                            ElementHandlerOutput::Break { event, allow_any } => {
18454                                break (event, allow_any)
18455                            }
18456                            ElementHandlerOutput::Continue { event, .. } => event,
18457                        }
18458                    }
18459                    (state, event @ Event::End(_)) => {
18460                        return Ok(DeserializerOutput {
18461                            artifact: DeserializerArtifact::Data(state.finish(reader)?),
18462                            event: DeserializerEvent::Continue(event),
18463                            allow_any: false,
18464                        });
18465                    }
18466                    (Self::Init__, event) => {
18467                        match self.find_suitable(reader, event, &mut fallback)? {
18468                            ElementHandlerOutput::Break { event, allow_any } => {
18469                                break (event, allow_any)
18470                            }
18471                            ElementHandlerOutput::Continue { event, .. } => event,
18472                        }
18473                    }
18474                    (Self::MinExclusive(values, None), event) => {
18475                        let output = <super::FacetType as WithDeserializer>::Deserializer::init(
18476                            reader, event,
18477                        )?;
18478                        match self.handle_min_exclusive(reader, values, output, &mut fallback)? {
18479                            ElementHandlerOutput::Break { event, allow_any } => {
18480                                break (event, allow_any)
18481                            }
18482                            ElementHandlerOutput::Continue { event, .. } => event,
18483                        }
18484                    }
18485                    (Self::MinInclusive(values, None), event) => {
18486                        let output = <super::FacetType as WithDeserializer>::Deserializer::init(
18487                            reader, event,
18488                        )?;
18489                        match self.handle_min_inclusive(reader, values, output, &mut fallback)? {
18490                            ElementHandlerOutput::Break { event, allow_any } => {
18491                                break (event, allow_any)
18492                            }
18493                            ElementHandlerOutput::Continue { event, .. } => event,
18494                        }
18495                    }
18496                    (Self::MaxExclusive(values, None), event) => {
18497                        let output = <super::FacetType as WithDeserializer>::Deserializer::init(
18498                            reader, event,
18499                        )?;
18500                        match self.handle_max_exclusive(reader, values, output, &mut fallback)? {
18501                            ElementHandlerOutput::Break { event, allow_any } => {
18502                                break (event, allow_any)
18503                            }
18504                            ElementHandlerOutput::Continue { event, .. } => event,
18505                        }
18506                    }
18507                    (Self::MaxInclusive(values, None), event) => {
18508                        let output = <super::FacetType as WithDeserializer>::Deserializer::init(
18509                            reader, event,
18510                        )?;
18511                        match self.handle_max_inclusive(reader, values, output, &mut fallback)? {
18512                            ElementHandlerOutput::Break { event, allow_any } => {
18513                                break (event, allow_any)
18514                            }
18515                            ElementHandlerOutput::Continue { event, .. } => event,
18516                        }
18517                    }
18518                    (Self::TotalDigits(values, None), event) => {
18519                        let output = <super::FacetType as WithDeserializer>::Deserializer::init(
18520                            reader, event,
18521                        )?;
18522                        match self.handle_total_digits(reader, values, output, &mut fallback)? {
18523                            ElementHandlerOutput::Break { event, allow_any } => {
18524                                break (event, allow_any)
18525                            }
18526                            ElementHandlerOutput::Continue { event, .. } => event,
18527                        }
18528                    }
18529                    (Self::FractionDigits(values, None), event) => {
18530                        let output = <super::FacetType as WithDeserializer>::Deserializer::init(
18531                            reader, event,
18532                        )?;
18533                        match self.handle_fraction_digits(reader, values, output, &mut fallback)? {
18534                            ElementHandlerOutput::Break { event, allow_any } => {
18535                                break (event, allow_any)
18536                            }
18537                            ElementHandlerOutput::Continue { event, .. } => event,
18538                        }
18539                    }
18540                    (Self::Length(values, None), event) => {
18541                        let output = <super::FacetType as WithDeserializer>::Deserializer::init(
18542                            reader, event,
18543                        )?;
18544                        match self.handle_length(reader, values, output, &mut fallback)? {
18545                            ElementHandlerOutput::Break { event, allow_any } => {
18546                                break (event, allow_any)
18547                            }
18548                            ElementHandlerOutput::Continue { event, .. } => event,
18549                        }
18550                    }
18551                    (Self::MinLength(values, None), event) => {
18552                        let output = <super::FacetType as WithDeserializer>::Deserializer::init(
18553                            reader, event,
18554                        )?;
18555                        match self.handle_min_length(reader, values, output, &mut fallback)? {
18556                            ElementHandlerOutput::Break { event, allow_any } => {
18557                                break (event, allow_any)
18558                            }
18559                            ElementHandlerOutput::Continue { event, .. } => event,
18560                        }
18561                    }
18562                    (Self::MaxLength(values, None), event) => {
18563                        let output = <super::FacetType as WithDeserializer>::Deserializer::init(
18564                            reader, event,
18565                        )?;
18566                        match self.handle_max_length(reader, values, output, &mut fallback)? {
18567                            ElementHandlerOutput::Break { event, allow_any } => {
18568                                break (event, allow_any)
18569                            }
18570                            ElementHandlerOutput::Continue { event, .. } => event,
18571                        }
18572                    }
18573                    (Self::Enumeration(values, None), event) => {
18574                        let output = <super::FacetType as WithDeserializer>::Deserializer::init(
18575                            reader, event,
18576                        )?;
18577                        match self.handle_enumeration(reader, values, output, &mut fallback)? {
18578                            ElementHandlerOutput::Break { event, allow_any } => {
18579                                break (event, allow_any)
18580                            }
18581                            ElementHandlerOutput::Continue { event, .. } => event,
18582                        }
18583                    }
18584                    (Self::WhiteSpace(values, None), event) => {
18585                        let output = <super::FacetType as WithDeserializer>::Deserializer::init(
18586                            reader, event,
18587                        )?;
18588                        match self.handle_white_space(reader, values, output, &mut fallback)? {
18589                            ElementHandlerOutput::Break { event, allow_any } => {
18590                                break (event, allow_any)
18591                            }
18592                            ElementHandlerOutput::Continue { event, .. } => event,
18593                        }
18594                    }
18595                    (Self::Pattern(values, None), event) => {
18596                        let output = <super::FacetType as WithDeserializer>::Deserializer::init(
18597                            reader, event,
18598                        )?;
18599                        match self.handle_pattern(reader, values, output, &mut fallback)? {
18600                            ElementHandlerOutput::Break { event, allow_any } => {
18601                                break (event, allow_any)
18602                            }
18603                            ElementHandlerOutput::Continue { event, .. } => event,
18604                        }
18605                    }
18606                    (Self::Assertion(values, None), event) => {
18607                        let output =
18608                            <super::AssertionType as WithDeserializer>::Deserializer::init(
18609                                reader, event,
18610                            )?;
18611                        match self.handle_assertion(reader, values, output, &mut fallback)? {
18612                            ElementHandlerOutput::Break { event, allow_any } => {
18613                                break (event, allow_any)
18614                            }
18615                            ElementHandlerOutput::Continue { event, .. } => event,
18616                        }
18617                    }
18618                    (Self::ExplicitTimezone(values, None), event) => {
18619                        let output = <super::FacetType as WithDeserializer>::Deserializer::init(
18620                            reader, event,
18621                        )?;
18622                        match self.handle_explicit_timezone(
18623                            reader,
18624                            values,
18625                            output,
18626                            &mut fallback,
18627                        )? {
18628                            ElementHandlerOutput::Break { event, allow_any } => {
18629                                break (event, allow_any)
18630                            }
18631                            ElementHandlerOutput::Continue { event, .. } => event,
18632                        }
18633                    }
18634                    (s @ Self::Done__(_), event) => {
18635                        self = s;
18636                        break (DeserializerEvent::Continue(event), false);
18637                    }
18638                    (Self::Unknown__, _) => unreachable!(),
18639                }
18640            };
18641            let artifact = match self {
18642                Self::Done__(data) => DeserializerArtifact::Data(data),
18643                deserializer => DeserializerArtifact::Deserializer(deserializer),
18644            };
18645            Ok(DeserializerOutput {
18646                artifact,
18647                event,
18648                allow_any,
18649            })
18650        }
18651        fn finish<R>(self, reader: &R) -> Result<super::Facet, Error>
18652        where
18653            R: DeserializeReader,
18654        {
18655            match self {
18656                Self::Init__ => Err(ErrorKind::MissingContent.into()),
18657                Self::MinExclusive(mut values, deserializer) => {
18658                    if let Some(deserializer) = deserializer {
18659                        let value = deserializer.finish(reader)?;
18660                        Self::store_min_exclusive(&mut values, value)?;
18661                    }
18662                    Ok(super::Facet::MinExclusive(values.ok_or_else(|| {
18663                        ErrorKind::MissingElement("minExclusive".into())
18664                    })?))
18665                }
18666                Self::MinInclusive(mut values, deserializer) => {
18667                    if let Some(deserializer) = deserializer {
18668                        let value = deserializer.finish(reader)?;
18669                        Self::store_min_inclusive(&mut values, value)?;
18670                    }
18671                    Ok(super::Facet::MinInclusive(values.ok_or_else(|| {
18672                        ErrorKind::MissingElement("minInclusive".into())
18673                    })?))
18674                }
18675                Self::MaxExclusive(mut values, deserializer) => {
18676                    if let Some(deserializer) = deserializer {
18677                        let value = deserializer.finish(reader)?;
18678                        Self::store_max_exclusive(&mut values, value)?;
18679                    }
18680                    Ok(super::Facet::MaxExclusive(values.ok_or_else(|| {
18681                        ErrorKind::MissingElement("maxExclusive".into())
18682                    })?))
18683                }
18684                Self::MaxInclusive(mut values, deserializer) => {
18685                    if let Some(deserializer) = deserializer {
18686                        let value = deserializer.finish(reader)?;
18687                        Self::store_max_inclusive(&mut values, value)?;
18688                    }
18689                    Ok(super::Facet::MaxInclusive(values.ok_or_else(|| {
18690                        ErrorKind::MissingElement("maxInclusive".into())
18691                    })?))
18692                }
18693                Self::TotalDigits(mut values, deserializer) => {
18694                    if let Some(deserializer) = deserializer {
18695                        let value = deserializer.finish(reader)?;
18696                        Self::store_total_digits(&mut values, value)?;
18697                    }
18698                    Ok(super::Facet::TotalDigits(values.ok_or_else(|| {
18699                        ErrorKind::MissingElement("totalDigits".into())
18700                    })?))
18701                }
18702                Self::FractionDigits(mut values, deserializer) => {
18703                    if let Some(deserializer) = deserializer {
18704                        let value = deserializer.finish(reader)?;
18705                        Self::store_fraction_digits(&mut values, value)?;
18706                    }
18707                    Ok(super::Facet::FractionDigits(values.ok_or_else(|| {
18708                        ErrorKind::MissingElement("fractionDigits".into())
18709                    })?))
18710                }
18711                Self::Length(mut values, deserializer) => {
18712                    if let Some(deserializer) = deserializer {
18713                        let value = deserializer.finish(reader)?;
18714                        Self::store_length(&mut values, value)?;
18715                    }
18716                    Ok(super::Facet::Length(values.ok_or_else(|| {
18717                        ErrorKind::MissingElement("length".into())
18718                    })?))
18719                }
18720                Self::MinLength(mut values, deserializer) => {
18721                    if let Some(deserializer) = deserializer {
18722                        let value = deserializer.finish(reader)?;
18723                        Self::store_min_length(&mut values, value)?;
18724                    }
18725                    Ok(super::Facet::MinLength(values.ok_or_else(|| {
18726                        ErrorKind::MissingElement("minLength".into())
18727                    })?))
18728                }
18729                Self::MaxLength(mut values, deserializer) => {
18730                    if let Some(deserializer) = deserializer {
18731                        let value = deserializer.finish(reader)?;
18732                        Self::store_max_length(&mut values, value)?;
18733                    }
18734                    Ok(super::Facet::MaxLength(values.ok_or_else(|| {
18735                        ErrorKind::MissingElement("maxLength".into())
18736                    })?))
18737                }
18738                Self::Enumeration(mut values, deserializer) => {
18739                    if let Some(deserializer) = deserializer {
18740                        let value = deserializer.finish(reader)?;
18741                        Self::store_enumeration(&mut values, value)?;
18742                    }
18743                    Ok(super::Facet::Enumeration(values.ok_or_else(|| {
18744                        ErrorKind::MissingElement("enumeration".into())
18745                    })?))
18746                }
18747                Self::WhiteSpace(mut values, deserializer) => {
18748                    if let Some(deserializer) = deserializer {
18749                        let value = deserializer.finish(reader)?;
18750                        Self::store_white_space(&mut values, value)?;
18751                    }
18752                    Ok(super::Facet::WhiteSpace(values.ok_or_else(|| {
18753                        ErrorKind::MissingElement("whiteSpace".into())
18754                    })?))
18755                }
18756                Self::Pattern(mut values, deserializer) => {
18757                    if let Some(deserializer) = deserializer {
18758                        let value = deserializer.finish(reader)?;
18759                        Self::store_pattern(&mut values, value)?;
18760                    }
18761                    Ok(super::Facet::Pattern(values.ok_or_else(|| {
18762                        ErrorKind::MissingElement("pattern".into())
18763                    })?))
18764                }
18765                Self::Assertion(mut values, deserializer) => {
18766                    if let Some(deserializer) = deserializer {
18767                        let value = deserializer.finish(reader)?;
18768                        Self::store_assertion(&mut values, value)?;
18769                    }
18770                    Ok(super::Facet::Assertion(values.ok_or_else(|| {
18771                        ErrorKind::MissingElement("assertion".into())
18772                    })?))
18773                }
18774                Self::ExplicitTimezone(mut values, deserializer) => {
18775                    if let Some(deserializer) = deserializer {
18776                        let value = deserializer.finish(reader)?;
18777                        Self::store_explicit_timezone(&mut values, value)?;
18778                    }
18779                    Ok(super::Facet::ExplicitTimezone(values.ok_or_else(|| {
18780                        ErrorKind::MissingElement("explicitTimezone".into())
18781                    })?))
18782                }
18783                Self::Done__(data) => Ok(data),
18784                Self::Unknown__ => unreachable!(),
18785            }
18786        }
18787    }
18788    #[derive(Debug)]
18789    pub struct RestrictionTypeDeserializer {
18790        id: Option<String>,
18791        base: super::QName,
18792        content: Vec<super::RestrictionTypeContent>,
18793        state: Box<RestrictionTypeDeserializerState>,
18794    }
18795    #[derive(Debug)]
18796    enum RestrictionTypeDeserializerState {
18797        Init__,
18798        Next__,
18799        Content__(<super::RestrictionTypeContent as WithDeserializer>::Deserializer),
18800        Unknown__,
18801    }
18802    impl RestrictionTypeDeserializer {
18803        fn from_bytes_start<R>(reader: &R, bytes_start: &BytesStart<'_>) -> Result<Self, Error>
18804        where
18805            R: DeserializeReader,
18806        {
18807            let mut id: Option<String> = None;
18808            let mut base: Option<super::QName> = None;
18809            for attrib in filter_xmlns_attributes(bytes_start) {
18810                let attrib = attrib?;
18811                if matches!(
18812                    reader.resolve_local_name(attrib.key, &super::NS_XS),
18813                    Some(b"id")
18814                ) {
18815                    reader.read_attrib(&mut id, b"id", &attrib.value)?;
18816                } else if matches!(
18817                    reader.resolve_local_name(attrib.key, &super::NS_XS),
18818                    Some(b"base")
18819                ) {
18820                    reader.read_attrib(&mut base, b"base", &attrib.value)?;
18821                }
18822            }
18823            Ok(Self {
18824                id: id,
18825                base: base
18826                    .ok_or_else(|| reader.map_error(ErrorKind::MissingAttribute("base".into())))?,
18827                content: Vec::new(),
18828                state: Box::new(RestrictionTypeDeserializerState::Init__),
18829            })
18830        }
18831        fn finish_state<R>(
18832            &mut self,
18833            reader: &R,
18834            state: RestrictionTypeDeserializerState,
18835        ) -> Result<(), Error>
18836        where
18837            R: DeserializeReader,
18838        {
18839            if let RestrictionTypeDeserializerState::Content__(deserializer) = state {
18840                self.store_content(deserializer.finish(reader)?)?;
18841            }
18842            Ok(())
18843        }
18844        fn store_content(&mut self, value: super::RestrictionTypeContent) -> Result<(), Error> {
18845            self.content.push(value);
18846            Ok(())
18847        }
18848        fn handle_content<'de, R>(
18849            &mut self,
18850            reader: &R,
18851            output: DeserializerOutput<'de, super::RestrictionTypeContent>,
18852            fallback: &mut Option<RestrictionTypeDeserializerState>,
18853        ) -> Result<ElementHandlerOutput<'de>, Error>
18854        where
18855            R: DeserializeReader,
18856        {
18857            let DeserializerOutput {
18858                artifact,
18859                event,
18860                allow_any,
18861            } = output;
18862            if artifact.is_none() {
18863                *self.state = fallback
18864                    .take()
18865                    .unwrap_or(RestrictionTypeDeserializerState::Next__);
18866                return Ok(ElementHandlerOutput::break_(event, allow_any));
18867            }
18868            if let Some(fallback) = fallback.take() {
18869                self.finish_state(reader, fallback)?;
18870            }
18871            Ok(match artifact {
18872                DeserializerArtifact::None => unreachable!(),
18873                DeserializerArtifact::Data(data) => {
18874                    self.store_content(data)?;
18875                    *self.state = RestrictionTypeDeserializerState::Next__;
18876                    ElementHandlerOutput::from_event(event, allow_any)
18877                }
18878                DeserializerArtifact::Deserializer(deserializer) => {
18879                    let ret = ElementHandlerOutput::from_event(event, allow_any);
18880                    match &ret {
18881                        ElementHandlerOutput::Continue { .. } => {
18882                            fallback.get_or_insert(RestrictionTypeDeserializerState::Content__(
18883                                deserializer,
18884                            ));
18885                            *self.state = RestrictionTypeDeserializerState::Next__;
18886                        }
18887                        ElementHandlerOutput::Break { .. } => {
18888                            *self.state = RestrictionTypeDeserializerState::Content__(deserializer);
18889                        }
18890                    }
18891                    ret
18892                }
18893            })
18894        }
18895    }
18896    impl<'de> Deserializer<'de, super::RestrictionType> for RestrictionTypeDeserializer {
18897        fn init<R>(reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::RestrictionType>
18898        where
18899            R: DeserializeReader,
18900        {
18901            reader.init_deserializer_from_start_event(event, Self::from_bytes_start)
18902        }
18903        fn next<R>(
18904            mut self,
18905            reader: &R,
18906            event: Event<'de>,
18907        ) -> DeserializerResult<'de, super::RestrictionType>
18908        where
18909            R: DeserializeReader,
18910        {
18911            use RestrictionTypeDeserializerState as S;
18912            let mut event = event;
18913            let mut fallback = None;
18914            let (event, allow_any) = loop {
18915                let state = replace(&mut *self.state, S::Unknown__);
18916                event = match (state, event) {
18917                    (S::Content__(deserializer), event) => {
18918                        let output = deserializer.next(reader, event)?;
18919                        match self.handle_content(reader, output, &mut fallback)? {
18920                            ElementHandlerOutput::Break { event, allow_any } => {
18921                                break (event, allow_any)
18922                            }
18923                            ElementHandlerOutput::Continue { event, .. } => event,
18924                        }
18925                    }
18926                    (_, Event::End(_)) => {
18927                        return Ok(DeserializerOutput {
18928                            artifact: DeserializerArtifact::Data(self.finish(reader)?),
18929                            event: DeserializerEvent::None,
18930                            allow_any: false,
18931                        });
18932                    }
18933                    (old_state @ (S::Init__ | S::Next__), event) => {
18934                        let output = < super :: RestrictionTypeContent as WithDeserializer > :: Deserializer :: init (reader , event) ? ;
18935                        match self.handle_content(reader, output, &mut fallback)? {
18936                            ElementHandlerOutput::Break { event, allow_any } => {
18937                                if matches!(&*self.state, S::Unknown__) {
18938                                    *self.state = old_state;
18939                                }
18940                                break (event, allow_any);
18941                            }
18942                            ElementHandlerOutput::Continue { event, .. } => event,
18943                        }
18944                    }
18945                    (S::Unknown__, _) => unreachable!(),
18946                }
18947            };
18948            Ok(DeserializerOutput {
18949                artifact: DeserializerArtifact::Deserializer(self),
18950                event,
18951                allow_any,
18952            })
18953        }
18954        fn finish<R>(mut self, reader: &R) -> Result<super::RestrictionType, Error>
18955        where
18956            R: DeserializeReader,
18957        {
18958            let state = replace(
18959                &mut *self.state,
18960                RestrictionTypeDeserializerState::Unknown__,
18961            );
18962            self.finish_state(reader, state)?;
18963            Ok(super::RestrictionType {
18964                id: self.id,
18965                base: self.base,
18966                content: self.content,
18967            })
18968        }
18969    }
18970    #[derive(Debug)]
18971    pub enum RestrictionTypeContentDeserializer {
18972        Init__,
18973        Annotation(
18974            Option<super::Annotation>,
18975            Option<<super::Annotation as WithDeserializer>::Deserializer>,
18976        ),
18977        OpenContent(
18978            Option<super::OpenContent>,
18979            Option<<super::OpenContent as WithDeserializer>::Deserializer>,
18980        ),
18981        Group(
18982            Option<super::GroupType>,
18983            Option<<super::GroupType as WithDeserializer>::Deserializer>,
18984        ),
18985        All(
18986            Option<super::GroupType>,
18987            Option<<super::GroupType as WithDeserializer>::Deserializer>,
18988        ),
18989        Choice(
18990            Option<super::GroupType>,
18991            Option<<super::GroupType as WithDeserializer>::Deserializer>,
18992        ),
18993        Sequence(
18994            Option<super::GroupType>,
18995            Option<<super::GroupType as WithDeserializer>::Deserializer>,
18996        ),
18997        SimpleType(
18998            Option<super::SimpleBaseType>,
18999            Option<<super::SimpleBaseType as WithDeserializer>::Deserializer>,
19000        ),
19001        Facet(
19002            Option<super::Facet>,
19003            Option<<super::Facet as WithDeserializer>::Deserializer>,
19004        ),
19005        Attribute(
19006            Option<super::AttributeType>,
19007            Option<<super::AttributeType as WithDeserializer>::Deserializer>,
19008        ),
19009        AttributeGroup(
19010            Option<super::AttributeGroupType>,
19011            Option<<super::AttributeGroupType as WithDeserializer>::Deserializer>,
19012        ),
19013        AnyAttribute(
19014            Option<super::AnyAttribute>,
19015            Option<<super::AnyAttribute as WithDeserializer>::Deserializer>,
19016        ),
19017        Assert(
19018            Option<super::AssertionType>,
19019            Option<<super::AssertionType as WithDeserializer>::Deserializer>,
19020        ),
19021        Done__(super::RestrictionTypeContent),
19022        Unknown__,
19023    }
19024    impl RestrictionTypeContentDeserializer {
19025        fn find_suitable<'de, R>(
19026            &mut self,
19027            reader: &R,
19028            event: Event<'de>,
19029            fallback: &mut Option<RestrictionTypeContentDeserializer>,
19030        ) -> Result<ElementHandlerOutput<'de>, Error>
19031        where
19032            R: DeserializeReader,
19033        {
19034            let (Event::Start(x) | Event::Empty(x)) = &event else {
19035                *self = Self::Init__;
19036                return Ok(ElementHandlerOutput::return_to_parent(event, true));
19037            };
19038            if matches!(
19039                reader.resolve_local_name(x.name(), &super::NS_XS),
19040                Some(b"annotation")
19041            ) {
19042                let output =
19043                    <super::Annotation as WithDeserializer>::Deserializer::init(reader, event)?;
19044                return self.handle_annotation(reader, Default::default(), output, &mut *fallback);
19045            }
19046            if matches!(
19047                reader.resolve_local_name(x.name(), &super::NS_XS),
19048                Some(b"openContent")
19049            ) {
19050                let output =
19051                    <super::OpenContent as WithDeserializer>::Deserializer::init(reader, event)?;
19052                return self.handle_open_content(
19053                    reader,
19054                    Default::default(),
19055                    output,
19056                    &mut *fallback,
19057                );
19058            }
19059            if matches!(
19060                reader.resolve_local_name(x.name(), &super::NS_XS),
19061                Some(b"group")
19062            ) {
19063                let output =
19064                    <super::GroupType as WithDeserializer>::Deserializer::init(reader, event)?;
19065                return self.handle_group(reader, Default::default(), output, &mut *fallback);
19066            }
19067            if matches!(
19068                reader.resolve_local_name(x.name(), &super::NS_XS),
19069                Some(b"all")
19070            ) {
19071                let output =
19072                    <super::GroupType as WithDeserializer>::Deserializer::init(reader, event)?;
19073                return self.handle_all(reader, Default::default(), output, &mut *fallback);
19074            }
19075            if matches!(
19076                reader.resolve_local_name(x.name(), &super::NS_XS),
19077                Some(b"choice")
19078            ) {
19079                let output =
19080                    <super::GroupType as WithDeserializer>::Deserializer::init(reader, event)?;
19081                return self.handle_choice(reader, Default::default(), output, &mut *fallback);
19082            }
19083            if matches!(
19084                reader.resolve_local_name(x.name(), &super::NS_XS),
19085                Some(b"sequence")
19086            ) {
19087                let output =
19088                    <super::GroupType as WithDeserializer>::Deserializer::init(reader, event)?;
19089                return self.handle_sequence(reader, Default::default(), output, &mut *fallback);
19090            }
19091            if matches!(
19092                reader.resolve_local_name(x.name(), &super::NS_XS),
19093                Some(b"simpleType")
19094            ) {
19095                let output =
19096                    <super::SimpleBaseType as WithDeserializer>::Deserializer::init(reader, event)?;
19097                return self.handle_simple_type(reader, Default::default(), output, &mut *fallback);
19098            }
19099            if matches!(
19100                reader.resolve_local_name(x.name(), &super::NS_XS),
19101                Some(b"attribute")
19102            ) {
19103                let output =
19104                    <super::AttributeType as WithDeserializer>::Deserializer::init(reader, event)?;
19105                return self.handle_attribute(reader, Default::default(), output, &mut *fallback);
19106            }
19107            if matches!(
19108                reader.resolve_local_name(x.name(), &super::NS_XS),
19109                Some(b"attributeGroup")
19110            ) {
19111                let output = <super::AttributeGroupType as WithDeserializer>::Deserializer::init(
19112                    reader, event,
19113                )?;
19114                return self.handle_attribute_group(
19115                    reader,
19116                    Default::default(),
19117                    output,
19118                    &mut *fallback,
19119                );
19120            }
19121            if matches!(
19122                reader.resolve_local_name(x.name(), &super::NS_XS),
19123                Some(b"anyAttribute")
19124            ) {
19125                let output =
19126                    <super::AnyAttribute as WithDeserializer>::Deserializer::init(reader, event)?;
19127                return self.handle_any_attribute(
19128                    reader,
19129                    Default::default(),
19130                    output,
19131                    &mut *fallback,
19132                );
19133            }
19134            if matches!(
19135                reader.resolve_local_name(x.name(), &super::NS_XS),
19136                Some(b"assert")
19137            ) {
19138                let output =
19139                    <super::AssertionType as WithDeserializer>::Deserializer::init(reader, event)?;
19140                return self.handle_assert(reader, Default::default(), output, &mut *fallback);
19141            }
19142            let event = {
19143                let output = <super::Facet as WithDeserializer>::Deserializer::init(reader, event)?;
19144                match self.handle_facet(reader, Default::default(), output, &mut *fallback)? {
19145                    ElementHandlerOutput::Continue { event, .. } => event,
19146                    output => {
19147                        return Ok(output);
19148                    }
19149                }
19150            };
19151            *self = Self::Init__;
19152            Ok(ElementHandlerOutput::return_to_parent(event, true))
19153        }
19154        fn store_annotation(
19155            values: &mut Option<super::Annotation>,
19156            value: super::Annotation,
19157        ) -> Result<(), Error> {
19158            if values.is_some() {
19159                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
19160                    b"annotation",
19161                )))?;
19162            }
19163            *values = Some(value);
19164            Ok(())
19165        }
19166        fn store_open_content(
19167            values: &mut Option<super::OpenContent>,
19168            value: super::OpenContent,
19169        ) -> Result<(), Error> {
19170            if values.is_some() {
19171                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
19172                    b"openContent",
19173                )))?;
19174            }
19175            *values = Some(value);
19176            Ok(())
19177        }
19178        fn store_group(
19179            values: &mut Option<super::GroupType>,
19180            value: super::GroupType,
19181        ) -> Result<(), Error> {
19182            if values.is_some() {
19183                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
19184                    b"group",
19185                )))?;
19186            }
19187            *values = Some(value);
19188            Ok(())
19189        }
19190        fn store_all(
19191            values: &mut Option<super::GroupType>,
19192            value: super::GroupType,
19193        ) -> Result<(), Error> {
19194            if values.is_some() {
19195                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(b"all")))?;
19196            }
19197            *values = Some(value);
19198            Ok(())
19199        }
19200        fn store_choice(
19201            values: &mut Option<super::GroupType>,
19202            value: super::GroupType,
19203        ) -> Result<(), Error> {
19204            if values.is_some() {
19205                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
19206                    b"choice",
19207                )))?;
19208            }
19209            *values = Some(value);
19210            Ok(())
19211        }
19212        fn store_sequence(
19213            values: &mut Option<super::GroupType>,
19214            value: super::GroupType,
19215        ) -> Result<(), Error> {
19216            if values.is_some() {
19217                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
19218                    b"sequence",
19219                )))?;
19220            }
19221            *values = Some(value);
19222            Ok(())
19223        }
19224        fn store_simple_type(
19225            values: &mut Option<super::SimpleBaseType>,
19226            value: super::SimpleBaseType,
19227        ) -> Result<(), Error> {
19228            if values.is_some() {
19229                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
19230                    b"simpleType",
19231                )))?;
19232            }
19233            *values = Some(value);
19234            Ok(())
19235        }
19236        fn store_facet(
19237            values: &mut Option<super::Facet>,
19238            value: super::Facet,
19239        ) -> Result<(), Error> {
19240            if values.is_some() {
19241                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
19242                    b"facet",
19243                )))?;
19244            }
19245            *values = Some(value);
19246            Ok(())
19247        }
19248        fn store_attribute(
19249            values: &mut Option<super::AttributeType>,
19250            value: super::AttributeType,
19251        ) -> Result<(), Error> {
19252            if values.is_some() {
19253                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
19254                    b"attribute",
19255                )))?;
19256            }
19257            *values = Some(value);
19258            Ok(())
19259        }
19260        fn store_attribute_group(
19261            values: &mut Option<super::AttributeGroupType>,
19262            value: super::AttributeGroupType,
19263        ) -> Result<(), Error> {
19264            if values.is_some() {
19265                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
19266                    b"attributeGroup",
19267                )))?;
19268            }
19269            *values = Some(value);
19270            Ok(())
19271        }
19272        fn store_any_attribute(
19273            values: &mut Option<super::AnyAttribute>,
19274            value: super::AnyAttribute,
19275        ) -> Result<(), Error> {
19276            if values.is_some() {
19277                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
19278                    b"anyAttribute",
19279                )))?;
19280            }
19281            *values = Some(value);
19282            Ok(())
19283        }
19284        fn store_assert(
19285            values: &mut Option<super::AssertionType>,
19286            value: super::AssertionType,
19287        ) -> Result<(), Error> {
19288            if values.is_some() {
19289                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
19290                    b"assert",
19291                )))?;
19292            }
19293            *values = Some(value);
19294            Ok(())
19295        }
19296        fn handle_annotation<'de, R>(
19297            &mut self,
19298            reader: &R,
19299            mut values: Option<super::Annotation>,
19300            output: DeserializerOutput<'de, super::Annotation>,
19301            fallback: &mut Option<Self>,
19302        ) -> Result<ElementHandlerOutput<'de>, Error>
19303        where
19304            R: DeserializeReader,
19305        {
19306            let DeserializerOutput {
19307                artifact,
19308                event,
19309                allow_any,
19310            } = output;
19311            if artifact.is_none() {
19312                *self = match fallback.take() {
19313                    None => Self::Init__,
19314                    Some(Self::Annotation(_, Some(deserializer))) => {
19315                        Self::Annotation(values, Some(deserializer))
19316                    }
19317                    _ => unreachable!(),
19318                };
19319                return Ok(ElementHandlerOutput::break_(event, allow_any));
19320            }
19321            match fallback.take() {
19322                None => (),
19323                Some(Self::Annotation(_, Some(deserializer))) => {
19324                    let data = deserializer.finish(reader)?;
19325                    Self::store_annotation(&mut values, data)?;
19326                }
19327                Some(_) => unreachable!(),
19328            }
19329            Ok(match artifact {
19330                DeserializerArtifact::None => unreachable!(),
19331                DeserializerArtifact::Data(data) => {
19332                    Self::store_annotation(&mut values, data)?;
19333                    let data = Self::Annotation(values, None).finish(reader)?;
19334                    *self = Self::Done__(data);
19335                    ElementHandlerOutput::Break { event, allow_any }
19336                }
19337                DeserializerArtifact::Deserializer(deserializer) => {
19338                    *self = Self::Annotation(values, Some(deserializer));
19339                    ElementHandlerOutput::from_event_end(event, allow_any)
19340                }
19341            })
19342        }
19343        fn handle_open_content<'de, R>(
19344            &mut self,
19345            reader: &R,
19346            mut values: Option<super::OpenContent>,
19347            output: DeserializerOutput<'de, super::OpenContent>,
19348            fallback: &mut Option<Self>,
19349        ) -> Result<ElementHandlerOutput<'de>, Error>
19350        where
19351            R: DeserializeReader,
19352        {
19353            let DeserializerOutput {
19354                artifact,
19355                event,
19356                allow_any,
19357            } = output;
19358            if artifact.is_none() {
19359                *self = match fallback.take() {
19360                    None => Self::Init__,
19361                    Some(Self::OpenContent(_, Some(deserializer))) => {
19362                        Self::OpenContent(values, Some(deserializer))
19363                    }
19364                    _ => unreachable!(),
19365                };
19366                return Ok(ElementHandlerOutput::break_(event, allow_any));
19367            }
19368            match fallback.take() {
19369                None => (),
19370                Some(Self::OpenContent(_, Some(deserializer))) => {
19371                    let data = deserializer.finish(reader)?;
19372                    Self::store_open_content(&mut values, data)?;
19373                }
19374                Some(_) => unreachable!(),
19375            }
19376            Ok(match artifact {
19377                DeserializerArtifact::None => unreachable!(),
19378                DeserializerArtifact::Data(data) => {
19379                    Self::store_open_content(&mut values, data)?;
19380                    let data = Self::OpenContent(values, None).finish(reader)?;
19381                    *self = Self::Done__(data);
19382                    ElementHandlerOutput::Break { event, allow_any }
19383                }
19384                DeserializerArtifact::Deserializer(deserializer) => {
19385                    *self = Self::OpenContent(values, Some(deserializer));
19386                    ElementHandlerOutput::from_event_end(event, allow_any)
19387                }
19388            })
19389        }
19390        fn handle_group<'de, R>(
19391            &mut self,
19392            reader: &R,
19393            mut values: Option<super::GroupType>,
19394            output: DeserializerOutput<'de, super::GroupType>,
19395            fallback: &mut Option<Self>,
19396        ) -> Result<ElementHandlerOutput<'de>, Error>
19397        where
19398            R: DeserializeReader,
19399        {
19400            let DeserializerOutput {
19401                artifact,
19402                event,
19403                allow_any,
19404            } = output;
19405            if artifact.is_none() {
19406                *self = match fallback.take() {
19407                    None => Self::Init__,
19408                    Some(Self::Group(_, Some(deserializer))) => {
19409                        Self::Group(values, Some(deserializer))
19410                    }
19411                    _ => unreachable!(),
19412                };
19413                return Ok(ElementHandlerOutput::break_(event, allow_any));
19414            }
19415            match fallback.take() {
19416                None => (),
19417                Some(Self::Group(_, Some(deserializer))) => {
19418                    let data = deserializer.finish(reader)?;
19419                    Self::store_group(&mut values, data)?;
19420                }
19421                Some(_) => unreachable!(),
19422            }
19423            Ok(match artifact {
19424                DeserializerArtifact::None => unreachable!(),
19425                DeserializerArtifact::Data(data) => {
19426                    Self::store_group(&mut values, data)?;
19427                    let data = Self::Group(values, None).finish(reader)?;
19428                    *self = Self::Done__(data);
19429                    ElementHandlerOutput::Break { event, allow_any }
19430                }
19431                DeserializerArtifact::Deserializer(deserializer) => {
19432                    *self = Self::Group(values, Some(deserializer));
19433                    ElementHandlerOutput::from_event_end(event, allow_any)
19434                }
19435            })
19436        }
19437        fn handle_all<'de, R>(
19438            &mut self,
19439            reader: &R,
19440            mut values: Option<super::GroupType>,
19441            output: DeserializerOutput<'de, super::GroupType>,
19442            fallback: &mut Option<Self>,
19443        ) -> Result<ElementHandlerOutput<'de>, Error>
19444        where
19445            R: DeserializeReader,
19446        {
19447            let DeserializerOutput {
19448                artifact,
19449                event,
19450                allow_any,
19451            } = output;
19452            if artifact.is_none() {
19453                *self = match fallback.take() {
19454                    None => Self::Init__,
19455                    Some(Self::All(_, Some(deserializer))) => Self::All(values, Some(deserializer)),
19456                    _ => unreachable!(),
19457                };
19458                return Ok(ElementHandlerOutput::break_(event, allow_any));
19459            }
19460            match fallback.take() {
19461                None => (),
19462                Some(Self::All(_, Some(deserializer))) => {
19463                    let data = deserializer.finish(reader)?;
19464                    Self::store_all(&mut values, data)?;
19465                }
19466                Some(_) => unreachable!(),
19467            }
19468            Ok(match artifact {
19469                DeserializerArtifact::None => unreachable!(),
19470                DeserializerArtifact::Data(data) => {
19471                    Self::store_all(&mut values, data)?;
19472                    let data = Self::All(values, None).finish(reader)?;
19473                    *self = Self::Done__(data);
19474                    ElementHandlerOutput::Break { event, allow_any }
19475                }
19476                DeserializerArtifact::Deserializer(deserializer) => {
19477                    *self = Self::All(values, Some(deserializer));
19478                    ElementHandlerOutput::from_event_end(event, allow_any)
19479                }
19480            })
19481        }
19482        fn handle_choice<'de, R>(
19483            &mut self,
19484            reader: &R,
19485            mut values: Option<super::GroupType>,
19486            output: DeserializerOutput<'de, super::GroupType>,
19487            fallback: &mut Option<Self>,
19488        ) -> Result<ElementHandlerOutput<'de>, Error>
19489        where
19490            R: DeserializeReader,
19491        {
19492            let DeserializerOutput {
19493                artifact,
19494                event,
19495                allow_any,
19496            } = output;
19497            if artifact.is_none() {
19498                *self = match fallback.take() {
19499                    None => Self::Init__,
19500                    Some(Self::Choice(_, Some(deserializer))) => {
19501                        Self::Choice(values, Some(deserializer))
19502                    }
19503                    _ => unreachable!(),
19504                };
19505                return Ok(ElementHandlerOutput::break_(event, allow_any));
19506            }
19507            match fallback.take() {
19508                None => (),
19509                Some(Self::Choice(_, Some(deserializer))) => {
19510                    let data = deserializer.finish(reader)?;
19511                    Self::store_choice(&mut values, data)?;
19512                }
19513                Some(_) => unreachable!(),
19514            }
19515            Ok(match artifact {
19516                DeserializerArtifact::None => unreachable!(),
19517                DeserializerArtifact::Data(data) => {
19518                    Self::store_choice(&mut values, data)?;
19519                    let data = Self::Choice(values, None).finish(reader)?;
19520                    *self = Self::Done__(data);
19521                    ElementHandlerOutput::Break { event, allow_any }
19522                }
19523                DeserializerArtifact::Deserializer(deserializer) => {
19524                    *self = Self::Choice(values, Some(deserializer));
19525                    ElementHandlerOutput::from_event_end(event, allow_any)
19526                }
19527            })
19528        }
19529        fn handle_sequence<'de, R>(
19530            &mut self,
19531            reader: &R,
19532            mut values: Option<super::GroupType>,
19533            output: DeserializerOutput<'de, super::GroupType>,
19534            fallback: &mut Option<Self>,
19535        ) -> Result<ElementHandlerOutput<'de>, Error>
19536        where
19537            R: DeserializeReader,
19538        {
19539            let DeserializerOutput {
19540                artifact,
19541                event,
19542                allow_any,
19543            } = output;
19544            if artifact.is_none() {
19545                *self = match fallback.take() {
19546                    None => Self::Init__,
19547                    Some(Self::Sequence(_, Some(deserializer))) => {
19548                        Self::Sequence(values, Some(deserializer))
19549                    }
19550                    _ => unreachable!(),
19551                };
19552                return Ok(ElementHandlerOutput::break_(event, allow_any));
19553            }
19554            match fallback.take() {
19555                None => (),
19556                Some(Self::Sequence(_, Some(deserializer))) => {
19557                    let data = deserializer.finish(reader)?;
19558                    Self::store_sequence(&mut values, data)?;
19559                }
19560                Some(_) => unreachable!(),
19561            }
19562            Ok(match artifact {
19563                DeserializerArtifact::None => unreachable!(),
19564                DeserializerArtifact::Data(data) => {
19565                    Self::store_sequence(&mut values, data)?;
19566                    let data = Self::Sequence(values, None).finish(reader)?;
19567                    *self = Self::Done__(data);
19568                    ElementHandlerOutput::Break { event, allow_any }
19569                }
19570                DeserializerArtifact::Deserializer(deserializer) => {
19571                    *self = Self::Sequence(values, Some(deserializer));
19572                    ElementHandlerOutput::from_event_end(event, allow_any)
19573                }
19574            })
19575        }
19576        fn handle_simple_type<'de, R>(
19577            &mut self,
19578            reader: &R,
19579            mut values: Option<super::SimpleBaseType>,
19580            output: DeserializerOutput<'de, super::SimpleBaseType>,
19581            fallback: &mut Option<Self>,
19582        ) -> Result<ElementHandlerOutput<'de>, Error>
19583        where
19584            R: DeserializeReader,
19585        {
19586            let DeserializerOutput {
19587                artifact,
19588                event,
19589                allow_any,
19590            } = output;
19591            if artifact.is_none() {
19592                *self = match fallback.take() {
19593                    None => Self::Init__,
19594                    Some(Self::SimpleType(_, Some(deserializer))) => {
19595                        Self::SimpleType(values, Some(deserializer))
19596                    }
19597                    _ => unreachable!(),
19598                };
19599                return Ok(ElementHandlerOutput::break_(event, allow_any));
19600            }
19601            match fallback.take() {
19602                None => (),
19603                Some(Self::SimpleType(_, Some(deserializer))) => {
19604                    let data = deserializer.finish(reader)?;
19605                    Self::store_simple_type(&mut values, data)?;
19606                }
19607                Some(_) => unreachable!(),
19608            }
19609            Ok(match artifact {
19610                DeserializerArtifact::None => unreachable!(),
19611                DeserializerArtifact::Data(data) => {
19612                    Self::store_simple_type(&mut values, data)?;
19613                    let data = Self::SimpleType(values, None).finish(reader)?;
19614                    *self = Self::Done__(data);
19615                    ElementHandlerOutput::Break { event, allow_any }
19616                }
19617                DeserializerArtifact::Deserializer(deserializer) => {
19618                    *self = Self::SimpleType(values, Some(deserializer));
19619                    ElementHandlerOutput::from_event_end(event, allow_any)
19620                }
19621            })
19622        }
19623        fn handle_facet<'de, R>(
19624            &mut self,
19625            reader: &R,
19626            mut values: Option<super::Facet>,
19627            output: DeserializerOutput<'de, super::Facet>,
19628            fallback: &mut Option<Self>,
19629        ) -> Result<ElementHandlerOutput<'de>, Error>
19630        where
19631            R: DeserializeReader,
19632        {
19633            let DeserializerOutput {
19634                artifact,
19635                event,
19636                allow_any,
19637            } = output;
19638            if artifact.is_none() {
19639                *self = match fallback.take() {
19640                    None => Self::Init__,
19641                    Some(Self::Facet(_, Some(deserializer))) => {
19642                        Self::Facet(values, Some(deserializer))
19643                    }
19644                    _ => unreachable!(),
19645                };
19646                return Ok(ElementHandlerOutput::break_(event, allow_any));
19647            }
19648            match fallback.take() {
19649                None => (),
19650                Some(Self::Facet(_, Some(deserializer))) => {
19651                    let data = deserializer.finish(reader)?;
19652                    Self::store_facet(&mut values, data)?;
19653                }
19654                Some(_) => unreachable!(),
19655            }
19656            Ok(match artifact {
19657                DeserializerArtifact::None => unreachable!(),
19658                DeserializerArtifact::Data(data) => {
19659                    Self::store_facet(&mut values, data)?;
19660                    let data = Self::Facet(values, None).finish(reader)?;
19661                    *self = Self::Done__(data);
19662                    ElementHandlerOutput::Break { event, allow_any }
19663                }
19664                DeserializerArtifact::Deserializer(deserializer) => {
19665                    *self = Self::Facet(values, Some(deserializer));
19666                    ElementHandlerOutput::from_event_end(event, allow_any)
19667                }
19668            })
19669        }
19670        fn handle_attribute<'de, R>(
19671            &mut self,
19672            reader: &R,
19673            mut values: Option<super::AttributeType>,
19674            output: DeserializerOutput<'de, super::AttributeType>,
19675            fallback: &mut Option<Self>,
19676        ) -> Result<ElementHandlerOutput<'de>, Error>
19677        where
19678            R: DeserializeReader,
19679        {
19680            let DeserializerOutput {
19681                artifact,
19682                event,
19683                allow_any,
19684            } = output;
19685            if artifact.is_none() {
19686                *self = match fallback.take() {
19687                    None => Self::Init__,
19688                    Some(Self::Attribute(_, Some(deserializer))) => {
19689                        Self::Attribute(values, Some(deserializer))
19690                    }
19691                    _ => unreachable!(),
19692                };
19693                return Ok(ElementHandlerOutput::break_(event, allow_any));
19694            }
19695            match fallback.take() {
19696                None => (),
19697                Some(Self::Attribute(_, Some(deserializer))) => {
19698                    let data = deserializer.finish(reader)?;
19699                    Self::store_attribute(&mut values, data)?;
19700                }
19701                Some(_) => unreachable!(),
19702            }
19703            Ok(match artifact {
19704                DeserializerArtifact::None => unreachable!(),
19705                DeserializerArtifact::Data(data) => {
19706                    Self::store_attribute(&mut values, data)?;
19707                    let data = Self::Attribute(values, None).finish(reader)?;
19708                    *self = Self::Done__(data);
19709                    ElementHandlerOutput::Break { event, allow_any }
19710                }
19711                DeserializerArtifact::Deserializer(deserializer) => {
19712                    *self = Self::Attribute(values, Some(deserializer));
19713                    ElementHandlerOutput::from_event_end(event, allow_any)
19714                }
19715            })
19716        }
19717        fn handle_attribute_group<'de, R>(
19718            &mut self,
19719            reader: &R,
19720            mut values: Option<super::AttributeGroupType>,
19721            output: DeserializerOutput<'de, super::AttributeGroupType>,
19722            fallback: &mut Option<Self>,
19723        ) -> Result<ElementHandlerOutput<'de>, Error>
19724        where
19725            R: DeserializeReader,
19726        {
19727            let DeserializerOutput {
19728                artifact,
19729                event,
19730                allow_any,
19731            } = output;
19732            if artifact.is_none() {
19733                *self = match fallback.take() {
19734                    None => Self::Init__,
19735                    Some(Self::AttributeGroup(_, Some(deserializer))) => {
19736                        Self::AttributeGroup(values, Some(deserializer))
19737                    }
19738                    _ => unreachable!(),
19739                };
19740                return Ok(ElementHandlerOutput::break_(event, allow_any));
19741            }
19742            match fallback.take() {
19743                None => (),
19744                Some(Self::AttributeGroup(_, Some(deserializer))) => {
19745                    let data = deserializer.finish(reader)?;
19746                    Self::store_attribute_group(&mut values, data)?;
19747                }
19748                Some(_) => unreachable!(),
19749            }
19750            Ok(match artifact {
19751                DeserializerArtifact::None => unreachable!(),
19752                DeserializerArtifact::Data(data) => {
19753                    Self::store_attribute_group(&mut values, data)?;
19754                    let data = Self::AttributeGroup(values, None).finish(reader)?;
19755                    *self = Self::Done__(data);
19756                    ElementHandlerOutput::Break { event, allow_any }
19757                }
19758                DeserializerArtifact::Deserializer(deserializer) => {
19759                    *self = Self::AttributeGroup(values, Some(deserializer));
19760                    ElementHandlerOutput::from_event_end(event, allow_any)
19761                }
19762            })
19763        }
19764        fn handle_any_attribute<'de, R>(
19765            &mut self,
19766            reader: &R,
19767            mut values: Option<super::AnyAttribute>,
19768            output: DeserializerOutput<'de, super::AnyAttribute>,
19769            fallback: &mut Option<Self>,
19770        ) -> Result<ElementHandlerOutput<'de>, Error>
19771        where
19772            R: DeserializeReader,
19773        {
19774            let DeserializerOutput {
19775                artifact,
19776                event,
19777                allow_any,
19778            } = output;
19779            if artifact.is_none() {
19780                *self = match fallback.take() {
19781                    None => Self::Init__,
19782                    Some(Self::AnyAttribute(_, Some(deserializer))) => {
19783                        Self::AnyAttribute(values, Some(deserializer))
19784                    }
19785                    _ => unreachable!(),
19786                };
19787                return Ok(ElementHandlerOutput::break_(event, allow_any));
19788            }
19789            match fallback.take() {
19790                None => (),
19791                Some(Self::AnyAttribute(_, Some(deserializer))) => {
19792                    let data = deserializer.finish(reader)?;
19793                    Self::store_any_attribute(&mut values, data)?;
19794                }
19795                Some(_) => unreachable!(),
19796            }
19797            Ok(match artifact {
19798                DeserializerArtifact::None => unreachable!(),
19799                DeserializerArtifact::Data(data) => {
19800                    Self::store_any_attribute(&mut values, data)?;
19801                    let data = Self::AnyAttribute(values, None).finish(reader)?;
19802                    *self = Self::Done__(data);
19803                    ElementHandlerOutput::Break { event, allow_any }
19804                }
19805                DeserializerArtifact::Deserializer(deserializer) => {
19806                    *self = Self::AnyAttribute(values, Some(deserializer));
19807                    ElementHandlerOutput::from_event_end(event, allow_any)
19808                }
19809            })
19810        }
19811        fn handle_assert<'de, R>(
19812            &mut self,
19813            reader: &R,
19814            mut values: Option<super::AssertionType>,
19815            output: DeserializerOutput<'de, super::AssertionType>,
19816            fallback: &mut Option<Self>,
19817        ) -> Result<ElementHandlerOutput<'de>, Error>
19818        where
19819            R: DeserializeReader,
19820        {
19821            let DeserializerOutput {
19822                artifact,
19823                event,
19824                allow_any,
19825            } = output;
19826            if artifact.is_none() {
19827                *self = match fallback.take() {
19828                    None => Self::Init__,
19829                    Some(Self::Assert(_, Some(deserializer))) => {
19830                        Self::Assert(values, Some(deserializer))
19831                    }
19832                    _ => unreachable!(),
19833                };
19834                return Ok(ElementHandlerOutput::break_(event, allow_any));
19835            }
19836            match fallback.take() {
19837                None => (),
19838                Some(Self::Assert(_, Some(deserializer))) => {
19839                    let data = deserializer.finish(reader)?;
19840                    Self::store_assert(&mut values, data)?;
19841                }
19842                Some(_) => unreachable!(),
19843            }
19844            Ok(match artifact {
19845                DeserializerArtifact::None => unreachable!(),
19846                DeserializerArtifact::Data(data) => {
19847                    Self::store_assert(&mut values, data)?;
19848                    let data = Self::Assert(values, None).finish(reader)?;
19849                    *self = Self::Done__(data);
19850                    ElementHandlerOutput::Break { event, allow_any }
19851                }
19852                DeserializerArtifact::Deserializer(deserializer) => {
19853                    *self = Self::Assert(values, Some(deserializer));
19854                    ElementHandlerOutput::from_event_end(event, allow_any)
19855                }
19856            })
19857        }
19858    }
19859    impl<'de> Deserializer<'de, super::RestrictionTypeContent> for RestrictionTypeContentDeserializer {
19860        fn init<R>(
19861            reader: &R,
19862            event: Event<'de>,
19863        ) -> DeserializerResult<'de, super::RestrictionTypeContent>
19864        where
19865            R: DeserializeReader,
19866        {
19867            let deserializer = Self::Init__;
19868            let mut output = deserializer.next(reader, event)?;
19869            output.artifact = match output.artifact {
19870                DeserializerArtifact::Deserializer(Self::Init__) => DeserializerArtifact::None,
19871                artifact => artifact,
19872            };
19873            Ok(output)
19874        }
19875        fn next<R>(
19876            mut self,
19877            reader: &R,
19878            event: Event<'de>,
19879        ) -> DeserializerResult<'de, super::RestrictionTypeContent>
19880        where
19881            R: DeserializeReader,
19882        {
19883            let mut event = event;
19884            let mut fallback = None;
19885            let (event, allow_any) = loop {
19886                let state = replace(&mut self, Self::Unknown__);
19887                event = match (state, event) {
19888                    (Self::Annotation(values, Some(deserializer)), event) => {
19889                        let output = deserializer.next(reader, event)?;
19890                        match self.handle_annotation(reader, values, output, &mut fallback)? {
19891                            ElementHandlerOutput::Break { event, allow_any } => {
19892                                break (event, allow_any)
19893                            }
19894                            ElementHandlerOutput::Continue { event, .. } => event,
19895                        }
19896                    }
19897                    (Self::OpenContent(values, Some(deserializer)), event) => {
19898                        let output = deserializer.next(reader, event)?;
19899                        match self.handle_open_content(reader, values, output, &mut fallback)? {
19900                            ElementHandlerOutput::Break { event, allow_any } => {
19901                                break (event, allow_any)
19902                            }
19903                            ElementHandlerOutput::Continue { event, .. } => event,
19904                        }
19905                    }
19906                    (Self::Group(values, Some(deserializer)), event) => {
19907                        let output = deserializer.next(reader, event)?;
19908                        match self.handle_group(reader, values, output, &mut fallback)? {
19909                            ElementHandlerOutput::Break { event, allow_any } => {
19910                                break (event, allow_any)
19911                            }
19912                            ElementHandlerOutput::Continue { event, .. } => event,
19913                        }
19914                    }
19915                    (Self::All(values, Some(deserializer)), event) => {
19916                        let output = deserializer.next(reader, event)?;
19917                        match self.handle_all(reader, values, output, &mut fallback)? {
19918                            ElementHandlerOutput::Break { event, allow_any } => {
19919                                break (event, allow_any)
19920                            }
19921                            ElementHandlerOutput::Continue { event, .. } => event,
19922                        }
19923                    }
19924                    (Self::Choice(values, Some(deserializer)), event) => {
19925                        let output = deserializer.next(reader, event)?;
19926                        match self.handle_choice(reader, values, output, &mut fallback)? {
19927                            ElementHandlerOutput::Break { event, allow_any } => {
19928                                break (event, allow_any)
19929                            }
19930                            ElementHandlerOutput::Continue { event, .. } => event,
19931                        }
19932                    }
19933                    (Self::Sequence(values, Some(deserializer)), event) => {
19934                        let output = deserializer.next(reader, event)?;
19935                        match self.handle_sequence(reader, values, output, &mut fallback)? {
19936                            ElementHandlerOutput::Break { event, allow_any } => {
19937                                break (event, allow_any)
19938                            }
19939                            ElementHandlerOutput::Continue { event, .. } => event,
19940                        }
19941                    }
19942                    (Self::SimpleType(values, Some(deserializer)), event) => {
19943                        let output = deserializer.next(reader, event)?;
19944                        match self.handle_simple_type(reader, values, output, &mut fallback)? {
19945                            ElementHandlerOutput::Break { event, allow_any } => {
19946                                break (event, allow_any)
19947                            }
19948                            ElementHandlerOutput::Continue { event, .. } => event,
19949                        }
19950                    }
19951                    (Self::Facet(values, Some(deserializer)), event) => {
19952                        let output = deserializer.next(reader, event)?;
19953                        match self.handle_facet(reader, values, output, &mut fallback)? {
19954                            ElementHandlerOutput::Break { event, allow_any } => {
19955                                break (event, allow_any)
19956                            }
19957                            ElementHandlerOutput::Continue { event, .. } => event,
19958                        }
19959                    }
19960                    (Self::Attribute(values, Some(deserializer)), event) => {
19961                        let output = deserializer.next(reader, event)?;
19962                        match self.handle_attribute(reader, values, output, &mut fallback)? {
19963                            ElementHandlerOutput::Break { event, allow_any } => {
19964                                break (event, allow_any)
19965                            }
19966                            ElementHandlerOutput::Continue { event, .. } => event,
19967                        }
19968                    }
19969                    (Self::AttributeGroup(values, Some(deserializer)), event) => {
19970                        let output = deserializer.next(reader, event)?;
19971                        match self.handle_attribute_group(reader, values, output, &mut fallback)? {
19972                            ElementHandlerOutput::Break { event, allow_any } => {
19973                                break (event, allow_any)
19974                            }
19975                            ElementHandlerOutput::Continue { event, .. } => event,
19976                        }
19977                    }
19978                    (Self::AnyAttribute(values, Some(deserializer)), event) => {
19979                        let output = deserializer.next(reader, event)?;
19980                        match self.handle_any_attribute(reader, values, output, &mut fallback)? {
19981                            ElementHandlerOutput::Break { event, allow_any } => {
19982                                break (event, allow_any)
19983                            }
19984                            ElementHandlerOutput::Continue { event, .. } => event,
19985                        }
19986                    }
19987                    (Self::Assert(values, Some(deserializer)), event) => {
19988                        let output = deserializer.next(reader, event)?;
19989                        match self.handle_assert(reader, values, output, &mut fallback)? {
19990                            ElementHandlerOutput::Break { event, allow_any } => {
19991                                break (event, allow_any)
19992                            }
19993                            ElementHandlerOutput::Continue { event, .. } => event,
19994                        }
19995                    }
19996                    (state, event @ Event::End(_)) => {
19997                        return Ok(DeserializerOutput {
19998                            artifact: DeserializerArtifact::Data(state.finish(reader)?),
19999                            event: DeserializerEvent::Continue(event),
20000                            allow_any: false,
20001                        });
20002                    }
20003                    (Self::Init__, event) => {
20004                        match self.find_suitable(reader, event, &mut fallback)? {
20005                            ElementHandlerOutput::Break { event, allow_any } => {
20006                                break (event, allow_any)
20007                            }
20008                            ElementHandlerOutput::Continue { event, .. } => event,
20009                        }
20010                    }
20011                    (Self::Annotation(values, None), event) => {
20012                        let output = <super::Annotation as WithDeserializer>::Deserializer::init(
20013                            reader, event,
20014                        )?;
20015                        match self.handle_annotation(reader, values, output, &mut fallback)? {
20016                            ElementHandlerOutput::Break { event, allow_any } => {
20017                                break (event, allow_any)
20018                            }
20019                            ElementHandlerOutput::Continue { event, .. } => event,
20020                        }
20021                    }
20022                    (Self::OpenContent(values, None), event) => {
20023                        let output = <super::OpenContent as WithDeserializer>::Deserializer::init(
20024                            reader, event,
20025                        )?;
20026                        match self.handle_open_content(reader, values, output, &mut fallback)? {
20027                            ElementHandlerOutput::Break { event, allow_any } => {
20028                                break (event, allow_any)
20029                            }
20030                            ElementHandlerOutput::Continue { event, .. } => event,
20031                        }
20032                    }
20033                    (Self::Group(values, None), event) => {
20034                        let output = <super::GroupType as WithDeserializer>::Deserializer::init(
20035                            reader, event,
20036                        )?;
20037                        match self.handle_group(reader, values, output, &mut fallback)? {
20038                            ElementHandlerOutput::Break { event, allow_any } => {
20039                                break (event, allow_any)
20040                            }
20041                            ElementHandlerOutput::Continue { event, .. } => event,
20042                        }
20043                    }
20044                    (Self::All(values, None), event) => {
20045                        let output = <super::GroupType as WithDeserializer>::Deserializer::init(
20046                            reader, event,
20047                        )?;
20048                        match self.handle_all(reader, values, output, &mut fallback)? {
20049                            ElementHandlerOutput::Break { event, allow_any } => {
20050                                break (event, allow_any)
20051                            }
20052                            ElementHandlerOutput::Continue { event, .. } => event,
20053                        }
20054                    }
20055                    (Self::Choice(values, None), event) => {
20056                        let output = <super::GroupType as WithDeserializer>::Deserializer::init(
20057                            reader, event,
20058                        )?;
20059                        match self.handle_choice(reader, values, output, &mut fallback)? {
20060                            ElementHandlerOutput::Break { event, allow_any } => {
20061                                break (event, allow_any)
20062                            }
20063                            ElementHandlerOutput::Continue { event, .. } => event,
20064                        }
20065                    }
20066                    (Self::Sequence(values, None), event) => {
20067                        let output = <super::GroupType as WithDeserializer>::Deserializer::init(
20068                            reader, event,
20069                        )?;
20070                        match self.handle_sequence(reader, values, output, &mut fallback)? {
20071                            ElementHandlerOutput::Break { event, allow_any } => {
20072                                break (event, allow_any)
20073                            }
20074                            ElementHandlerOutput::Continue { event, .. } => event,
20075                        }
20076                    }
20077                    (Self::SimpleType(values, None), event) => {
20078                        let output =
20079                            <super::SimpleBaseType as WithDeserializer>::Deserializer::init(
20080                                reader, event,
20081                            )?;
20082                        match self.handle_simple_type(reader, values, output, &mut fallback)? {
20083                            ElementHandlerOutput::Break { event, allow_any } => {
20084                                break (event, allow_any)
20085                            }
20086                            ElementHandlerOutput::Continue { event, .. } => event,
20087                        }
20088                    }
20089                    (Self::Facet(values, None), event) => {
20090                        let output =
20091                            <super::Facet as WithDeserializer>::Deserializer::init(reader, event)?;
20092                        match self.handle_facet(reader, values, output, &mut fallback)? {
20093                            ElementHandlerOutput::Break { event, allow_any } => {
20094                                break (event, allow_any)
20095                            }
20096                            ElementHandlerOutput::Continue { event, .. } => event,
20097                        }
20098                    }
20099                    (Self::Attribute(values, None), event) => {
20100                        let output =
20101                            <super::AttributeType as WithDeserializer>::Deserializer::init(
20102                                reader, event,
20103                            )?;
20104                        match self.handle_attribute(reader, values, output, &mut fallback)? {
20105                            ElementHandlerOutput::Break { event, allow_any } => {
20106                                break (event, allow_any)
20107                            }
20108                            ElementHandlerOutput::Continue { event, .. } => event,
20109                        }
20110                    }
20111                    (Self::AttributeGroup(values, None), event) => {
20112                        let output =
20113                            <super::AttributeGroupType as WithDeserializer>::Deserializer::init(
20114                                reader, event,
20115                            )?;
20116                        match self.handle_attribute_group(reader, values, output, &mut fallback)? {
20117                            ElementHandlerOutput::Break { event, allow_any } => {
20118                                break (event, allow_any)
20119                            }
20120                            ElementHandlerOutput::Continue { event, .. } => event,
20121                        }
20122                    }
20123                    (Self::AnyAttribute(values, None), event) => {
20124                        let output = <super::AnyAttribute as WithDeserializer>::Deserializer::init(
20125                            reader, event,
20126                        )?;
20127                        match self.handle_any_attribute(reader, values, output, &mut fallback)? {
20128                            ElementHandlerOutput::Break { event, allow_any } => {
20129                                break (event, allow_any)
20130                            }
20131                            ElementHandlerOutput::Continue { event, .. } => event,
20132                        }
20133                    }
20134                    (Self::Assert(values, None), event) => {
20135                        let output =
20136                            <super::AssertionType as WithDeserializer>::Deserializer::init(
20137                                reader, event,
20138                            )?;
20139                        match self.handle_assert(reader, values, output, &mut fallback)? {
20140                            ElementHandlerOutput::Break { event, allow_any } => {
20141                                break (event, allow_any)
20142                            }
20143                            ElementHandlerOutput::Continue { event, .. } => event,
20144                        }
20145                    }
20146                    (s @ Self::Done__(_), event) => {
20147                        self = s;
20148                        break (DeserializerEvent::Continue(event), false);
20149                    }
20150                    (Self::Unknown__, _) => unreachable!(),
20151                }
20152            };
20153            let artifact = match self {
20154                Self::Done__(data) => DeserializerArtifact::Data(data),
20155                deserializer => DeserializerArtifact::Deserializer(deserializer),
20156            };
20157            Ok(DeserializerOutput {
20158                artifact,
20159                event,
20160                allow_any,
20161            })
20162        }
20163        fn finish<R>(self, reader: &R) -> Result<super::RestrictionTypeContent, Error>
20164        where
20165            R: DeserializeReader,
20166        {
20167            match self {
20168                Self::Init__ => Err(ErrorKind::MissingContent.into()),
20169                Self::Annotation(mut values, deserializer) => {
20170                    if let Some(deserializer) = deserializer {
20171                        let value = deserializer.finish(reader)?;
20172                        Self::store_annotation(&mut values, value)?;
20173                    }
20174                    Ok(super::RestrictionTypeContent::Annotation(
20175                        values.ok_or_else(|| ErrorKind::MissingElement("annotation".into()))?,
20176                    ))
20177                }
20178                Self::OpenContent(mut values, deserializer) => {
20179                    if let Some(deserializer) = deserializer {
20180                        let value = deserializer.finish(reader)?;
20181                        Self::store_open_content(&mut values, value)?;
20182                    }
20183                    Ok(super::RestrictionTypeContent::OpenContent(
20184                        values.ok_or_else(|| ErrorKind::MissingElement("openContent".into()))?,
20185                    ))
20186                }
20187                Self::Group(mut values, deserializer) => {
20188                    if let Some(deserializer) = deserializer {
20189                        let value = deserializer.finish(reader)?;
20190                        Self::store_group(&mut values, value)?;
20191                    }
20192                    Ok(super::RestrictionTypeContent::Group(values.ok_or_else(
20193                        || ErrorKind::MissingElement("group".into()),
20194                    )?))
20195                }
20196                Self::All(mut values, deserializer) => {
20197                    if let Some(deserializer) = deserializer {
20198                        let value = deserializer.finish(reader)?;
20199                        Self::store_all(&mut values, value)?;
20200                    }
20201                    Ok(super::RestrictionTypeContent::All(
20202                        values.ok_or_else(|| ErrorKind::MissingElement("all".into()))?,
20203                    ))
20204                }
20205                Self::Choice(mut values, deserializer) => {
20206                    if let Some(deserializer) = deserializer {
20207                        let value = deserializer.finish(reader)?;
20208                        Self::store_choice(&mut values, value)?;
20209                    }
20210                    Ok(super::RestrictionTypeContent::Choice(values.ok_or_else(
20211                        || ErrorKind::MissingElement("choice".into()),
20212                    )?))
20213                }
20214                Self::Sequence(mut values, deserializer) => {
20215                    if let Some(deserializer) = deserializer {
20216                        let value = deserializer.finish(reader)?;
20217                        Self::store_sequence(&mut values, value)?;
20218                    }
20219                    Ok(super::RestrictionTypeContent::Sequence(values.ok_or_else(
20220                        || ErrorKind::MissingElement("sequence".into()),
20221                    )?))
20222                }
20223                Self::SimpleType(mut values, deserializer) => {
20224                    if let Some(deserializer) = deserializer {
20225                        let value = deserializer.finish(reader)?;
20226                        Self::store_simple_type(&mut values, value)?;
20227                    }
20228                    Ok(super::RestrictionTypeContent::SimpleType(
20229                        values.ok_or_else(|| ErrorKind::MissingElement("simpleType".into()))?,
20230                    ))
20231                }
20232                Self::Facet(mut values, deserializer) => {
20233                    if let Some(deserializer) = deserializer {
20234                        let value = deserializer.finish(reader)?;
20235                        Self::store_facet(&mut values, value)?;
20236                    }
20237                    Ok(super::RestrictionTypeContent::Facet(values.ok_or_else(
20238                        || ErrorKind::MissingElement("facet".into()),
20239                    )?))
20240                }
20241                Self::Attribute(mut values, deserializer) => {
20242                    if let Some(deserializer) = deserializer {
20243                        let value = deserializer.finish(reader)?;
20244                        Self::store_attribute(&mut values, value)?;
20245                    }
20246                    Ok(super::RestrictionTypeContent::Attribute(
20247                        values.ok_or_else(|| ErrorKind::MissingElement("attribute".into()))?,
20248                    ))
20249                }
20250                Self::AttributeGroup(mut values, deserializer) => {
20251                    if let Some(deserializer) = deserializer {
20252                        let value = deserializer.finish(reader)?;
20253                        Self::store_attribute_group(&mut values, value)?;
20254                    }
20255                    Ok(super::RestrictionTypeContent::AttributeGroup(
20256                        values.ok_or_else(|| ErrorKind::MissingElement("attributeGroup".into()))?,
20257                    ))
20258                }
20259                Self::AnyAttribute(mut values, deserializer) => {
20260                    if let Some(deserializer) = deserializer {
20261                        let value = deserializer.finish(reader)?;
20262                        Self::store_any_attribute(&mut values, value)?;
20263                    }
20264                    Ok(super::RestrictionTypeContent::AnyAttribute(
20265                        values.ok_or_else(|| ErrorKind::MissingElement("anyAttribute".into()))?,
20266                    ))
20267                }
20268                Self::Assert(mut values, deserializer) => {
20269                    if let Some(deserializer) = deserializer {
20270                        let value = deserializer.finish(reader)?;
20271                        Self::store_assert(&mut values, value)?;
20272                    }
20273                    Ok(super::RestrictionTypeContent::Assert(values.ok_or_else(
20274                        || ErrorKind::MissingElement("assert".into()),
20275                    )?))
20276                }
20277                Self::Done__(data) => Ok(data),
20278                Self::Unknown__ => unreachable!(),
20279            }
20280        }
20281    }
20282    #[derive(Debug)]
20283    pub struct ExtensionTypeDeserializer {
20284        id: Option<String>,
20285        base: super::QName,
20286        content: Vec<super::ExtensionTypeContent>,
20287        state: Box<ExtensionTypeDeserializerState>,
20288    }
20289    #[derive(Debug)]
20290    enum ExtensionTypeDeserializerState {
20291        Init__,
20292        Next__,
20293        Content__(<super::ExtensionTypeContent as WithDeserializer>::Deserializer),
20294        Unknown__,
20295    }
20296    impl ExtensionTypeDeserializer {
20297        fn from_bytes_start<R>(reader: &R, bytes_start: &BytesStart<'_>) -> Result<Self, Error>
20298        where
20299            R: DeserializeReader,
20300        {
20301            let mut id: Option<String> = None;
20302            let mut base: Option<super::QName> = None;
20303            for attrib in filter_xmlns_attributes(bytes_start) {
20304                let attrib = attrib?;
20305                if matches!(
20306                    reader.resolve_local_name(attrib.key, &super::NS_XS),
20307                    Some(b"id")
20308                ) {
20309                    reader.read_attrib(&mut id, b"id", &attrib.value)?;
20310                } else if matches!(
20311                    reader.resolve_local_name(attrib.key, &super::NS_XS),
20312                    Some(b"base")
20313                ) {
20314                    reader.read_attrib(&mut base, b"base", &attrib.value)?;
20315                }
20316            }
20317            Ok(Self {
20318                id: id,
20319                base: base
20320                    .ok_or_else(|| reader.map_error(ErrorKind::MissingAttribute("base".into())))?,
20321                content: Vec::new(),
20322                state: Box::new(ExtensionTypeDeserializerState::Init__),
20323            })
20324        }
20325        fn finish_state<R>(
20326            &mut self,
20327            reader: &R,
20328            state: ExtensionTypeDeserializerState,
20329        ) -> Result<(), Error>
20330        where
20331            R: DeserializeReader,
20332        {
20333            if let ExtensionTypeDeserializerState::Content__(deserializer) = state {
20334                self.store_content(deserializer.finish(reader)?)?;
20335            }
20336            Ok(())
20337        }
20338        fn store_content(&mut self, value: super::ExtensionTypeContent) -> Result<(), Error> {
20339            self.content.push(value);
20340            Ok(())
20341        }
20342        fn handle_content<'de, R>(
20343            &mut self,
20344            reader: &R,
20345            output: DeserializerOutput<'de, super::ExtensionTypeContent>,
20346            fallback: &mut Option<ExtensionTypeDeserializerState>,
20347        ) -> Result<ElementHandlerOutput<'de>, Error>
20348        where
20349            R: DeserializeReader,
20350        {
20351            let DeserializerOutput {
20352                artifact,
20353                event,
20354                allow_any,
20355            } = output;
20356            if artifact.is_none() {
20357                *self.state = fallback
20358                    .take()
20359                    .unwrap_or(ExtensionTypeDeserializerState::Next__);
20360                return Ok(ElementHandlerOutput::break_(event, allow_any));
20361            }
20362            if let Some(fallback) = fallback.take() {
20363                self.finish_state(reader, fallback)?;
20364            }
20365            Ok(match artifact {
20366                DeserializerArtifact::None => unreachable!(),
20367                DeserializerArtifact::Data(data) => {
20368                    self.store_content(data)?;
20369                    *self.state = ExtensionTypeDeserializerState::Next__;
20370                    ElementHandlerOutput::from_event(event, allow_any)
20371                }
20372                DeserializerArtifact::Deserializer(deserializer) => {
20373                    let ret = ElementHandlerOutput::from_event(event, allow_any);
20374                    match &ret {
20375                        ElementHandlerOutput::Continue { .. } => {
20376                            fallback.get_or_insert(ExtensionTypeDeserializerState::Content__(
20377                                deserializer,
20378                            ));
20379                            *self.state = ExtensionTypeDeserializerState::Next__;
20380                        }
20381                        ElementHandlerOutput::Break { .. } => {
20382                            *self.state = ExtensionTypeDeserializerState::Content__(deserializer);
20383                        }
20384                    }
20385                    ret
20386                }
20387            })
20388        }
20389    }
20390    impl<'de> Deserializer<'de, super::ExtensionType> for ExtensionTypeDeserializer {
20391        fn init<R>(reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::ExtensionType>
20392        where
20393            R: DeserializeReader,
20394        {
20395            reader.init_deserializer_from_start_event(event, Self::from_bytes_start)
20396        }
20397        fn next<R>(
20398            mut self,
20399            reader: &R,
20400            event: Event<'de>,
20401        ) -> DeserializerResult<'de, super::ExtensionType>
20402        where
20403            R: DeserializeReader,
20404        {
20405            use ExtensionTypeDeserializerState as S;
20406            let mut event = event;
20407            let mut fallback = None;
20408            let (event, allow_any) = loop {
20409                let state = replace(&mut *self.state, S::Unknown__);
20410                event = match (state, event) {
20411                    (S::Content__(deserializer), event) => {
20412                        let output = deserializer.next(reader, event)?;
20413                        match self.handle_content(reader, output, &mut fallback)? {
20414                            ElementHandlerOutput::Break { event, allow_any } => {
20415                                break (event, allow_any)
20416                            }
20417                            ElementHandlerOutput::Continue { event, .. } => event,
20418                        }
20419                    }
20420                    (_, Event::End(_)) => {
20421                        return Ok(DeserializerOutput {
20422                            artifact: DeserializerArtifact::Data(self.finish(reader)?),
20423                            event: DeserializerEvent::None,
20424                            allow_any: false,
20425                        });
20426                    }
20427                    (old_state @ (S::Init__ | S::Next__), event) => {
20428                        let output =
20429                            <super::ExtensionTypeContent as WithDeserializer>::Deserializer::init(
20430                                reader, event,
20431                            )?;
20432                        match self.handle_content(reader, output, &mut fallback)? {
20433                            ElementHandlerOutput::Break { event, allow_any } => {
20434                                if matches!(&*self.state, S::Unknown__) {
20435                                    *self.state = old_state;
20436                                }
20437                                break (event, allow_any);
20438                            }
20439                            ElementHandlerOutput::Continue { event, .. } => event,
20440                        }
20441                    }
20442                    (S::Unknown__, _) => unreachable!(),
20443                }
20444            };
20445            Ok(DeserializerOutput {
20446                artifact: DeserializerArtifact::Deserializer(self),
20447                event,
20448                allow_any,
20449            })
20450        }
20451        fn finish<R>(mut self, reader: &R) -> Result<super::ExtensionType, Error>
20452        where
20453            R: DeserializeReader,
20454        {
20455            let state = replace(&mut *self.state, ExtensionTypeDeserializerState::Unknown__);
20456            self.finish_state(reader, state)?;
20457            Ok(super::ExtensionType {
20458                id: self.id,
20459                base: self.base,
20460                content: self.content,
20461            })
20462        }
20463    }
20464    #[derive(Debug)]
20465    pub enum ExtensionTypeContentDeserializer {
20466        Init__,
20467        Annotation(
20468            Option<super::Annotation>,
20469            Option<<super::Annotation as WithDeserializer>::Deserializer>,
20470        ),
20471        OpenContent(
20472            Option<super::OpenContent>,
20473            Option<<super::OpenContent as WithDeserializer>::Deserializer>,
20474        ),
20475        Group(
20476            Option<super::GroupType>,
20477            Option<<super::GroupType as WithDeserializer>::Deserializer>,
20478        ),
20479        All(
20480            Option<super::GroupType>,
20481            Option<<super::GroupType as WithDeserializer>::Deserializer>,
20482        ),
20483        Choice(
20484            Option<super::GroupType>,
20485            Option<<super::GroupType as WithDeserializer>::Deserializer>,
20486        ),
20487        Sequence(
20488            Option<super::GroupType>,
20489            Option<<super::GroupType as WithDeserializer>::Deserializer>,
20490        ),
20491        Attribute(
20492            Option<super::AttributeType>,
20493            Option<<super::AttributeType as WithDeserializer>::Deserializer>,
20494        ),
20495        AttributeGroup(
20496            Option<super::AttributeGroupType>,
20497            Option<<super::AttributeGroupType as WithDeserializer>::Deserializer>,
20498        ),
20499        AnyAttribute(
20500            Option<super::AnyAttribute>,
20501            Option<<super::AnyAttribute as WithDeserializer>::Deserializer>,
20502        ),
20503        Assert(
20504            Option<super::AssertionType>,
20505            Option<<super::AssertionType as WithDeserializer>::Deserializer>,
20506        ),
20507        Done__(super::ExtensionTypeContent),
20508        Unknown__,
20509    }
20510    impl ExtensionTypeContentDeserializer {
20511        fn find_suitable<'de, R>(
20512            &mut self,
20513            reader: &R,
20514            event: Event<'de>,
20515            fallback: &mut Option<ExtensionTypeContentDeserializer>,
20516        ) -> Result<ElementHandlerOutput<'de>, Error>
20517        where
20518            R: DeserializeReader,
20519        {
20520            let (Event::Start(x) | Event::Empty(x)) = &event else {
20521                *self = Self::Init__;
20522                return Ok(ElementHandlerOutput::return_to_parent(event, false));
20523            };
20524            if matches!(
20525                reader.resolve_local_name(x.name(), &super::NS_XS),
20526                Some(b"annotation")
20527            ) {
20528                let output =
20529                    <super::Annotation as WithDeserializer>::Deserializer::init(reader, event)?;
20530                return self.handle_annotation(reader, Default::default(), output, &mut *fallback);
20531            }
20532            if matches!(
20533                reader.resolve_local_name(x.name(), &super::NS_XS),
20534                Some(b"openContent")
20535            ) {
20536                let output =
20537                    <super::OpenContent as WithDeserializer>::Deserializer::init(reader, event)?;
20538                return self.handle_open_content(
20539                    reader,
20540                    Default::default(),
20541                    output,
20542                    &mut *fallback,
20543                );
20544            }
20545            if matches!(
20546                reader.resolve_local_name(x.name(), &super::NS_XS),
20547                Some(b"group")
20548            ) {
20549                let output =
20550                    <super::GroupType as WithDeserializer>::Deserializer::init(reader, event)?;
20551                return self.handle_group(reader, Default::default(), output, &mut *fallback);
20552            }
20553            if matches!(
20554                reader.resolve_local_name(x.name(), &super::NS_XS),
20555                Some(b"all")
20556            ) {
20557                let output =
20558                    <super::GroupType as WithDeserializer>::Deserializer::init(reader, event)?;
20559                return self.handle_all(reader, Default::default(), output, &mut *fallback);
20560            }
20561            if matches!(
20562                reader.resolve_local_name(x.name(), &super::NS_XS),
20563                Some(b"choice")
20564            ) {
20565                let output =
20566                    <super::GroupType as WithDeserializer>::Deserializer::init(reader, event)?;
20567                return self.handle_choice(reader, Default::default(), output, &mut *fallback);
20568            }
20569            if matches!(
20570                reader.resolve_local_name(x.name(), &super::NS_XS),
20571                Some(b"sequence")
20572            ) {
20573                let output =
20574                    <super::GroupType as WithDeserializer>::Deserializer::init(reader, event)?;
20575                return self.handle_sequence(reader, Default::default(), output, &mut *fallback);
20576            }
20577            if matches!(
20578                reader.resolve_local_name(x.name(), &super::NS_XS),
20579                Some(b"attribute")
20580            ) {
20581                let output =
20582                    <super::AttributeType as WithDeserializer>::Deserializer::init(reader, event)?;
20583                return self.handle_attribute(reader, Default::default(), output, &mut *fallback);
20584            }
20585            if matches!(
20586                reader.resolve_local_name(x.name(), &super::NS_XS),
20587                Some(b"attributeGroup")
20588            ) {
20589                let output = <super::AttributeGroupType as WithDeserializer>::Deserializer::init(
20590                    reader, event,
20591                )?;
20592                return self.handle_attribute_group(
20593                    reader,
20594                    Default::default(),
20595                    output,
20596                    &mut *fallback,
20597                );
20598            }
20599            if matches!(
20600                reader.resolve_local_name(x.name(), &super::NS_XS),
20601                Some(b"anyAttribute")
20602            ) {
20603                let output =
20604                    <super::AnyAttribute as WithDeserializer>::Deserializer::init(reader, event)?;
20605                return self.handle_any_attribute(
20606                    reader,
20607                    Default::default(),
20608                    output,
20609                    &mut *fallback,
20610                );
20611            }
20612            if matches!(
20613                reader.resolve_local_name(x.name(), &super::NS_XS),
20614                Some(b"assert")
20615            ) {
20616                let output =
20617                    <super::AssertionType as WithDeserializer>::Deserializer::init(reader, event)?;
20618                return self.handle_assert(reader, Default::default(), output, &mut *fallback);
20619            }
20620            *self = Self::Init__;
20621            Ok(ElementHandlerOutput::return_to_parent(event, false))
20622        }
20623        fn store_annotation(
20624            values: &mut Option<super::Annotation>,
20625            value: super::Annotation,
20626        ) -> Result<(), Error> {
20627            if values.is_some() {
20628                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
20629                    b"annotation",
20630                )))?;
20631            }
20632            *values = Some(value);
20633            Ok(())
20634        }
20635        fn store_open_content(
20636            values: &mut Option<super::OpenContent>,
20637            value: super::OpenContent,
20638        ) -> Result<(), Error> {
20639            if values.is_some() {
20640                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
20641                    b"openContent",
20642                )))?;
20643            }
20644            *values = Some(value);
20645            Ok(())
20646        }
20647        fn store_group(
20648            values: &mut Option<super::GroupType>,
20649            value: super::GroupType,
20650        ) -> Result<(), Error> {
20651            if values.is_some() {
20652                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
20653                    b"group",
20654                )))?;
20655            }
20656            *values = Some(value);
20657            Ok(())
20658        }
20659        fn store_all(
20660            values: &mut Option<super::GroupType>,
20661            value: super::GroupType,
20662        ) -> Result<(), Error> {
20663            if values.is_some() {
20664                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(b"all")))?;
20665            }
20666            *values = Some(value);
20667            Ok(())
20668        }
20669        fn store_choice(
20670            values: &mut Option<super::GroupType>,
20671            value: super::GroupType,
20672        ) -> Result<(), Error> {
20673            if values.is_some() {
20674                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
20675                    b"choice",
20676                )))?;
20677            }
20678            *values = Some(value);
20679            Ok(())
20680        }
20681        fn store_sequence(
20682            values: &mut Option<super::GroupType>,
20683            value: super::GroupType,
20684        ) -> Result<(), Error> {
20685            if values.is_some() {
20686                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
20687                    b"sequence",
20688                )))?;
20689            }
20690            *values = Some(value);
20691            Ok(())
20692        }
20693        fn store_attribute(
20694            values: &mut Option<super::AttributeType>,
20695            value: super::AttributeType,
20696        ) -> Result<(), Error> {
20697            if values.is_some() {
20698                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
20699                    b"attribute",
20700                )))?;
20701            }
20702            *values = Some(value);
20703            Ok(())
20704        }
20705        fn store_attribute_group(
20706            values: &mut Option<super::AttributeGroupType>,
20707            value: super::AttributeGroupType,
20708        ) -> Result<(), Error> {
20709            if values.is_some() {
20710                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
20711                    b"attributeGroup",
20712                )))?;
20713            }
20714            *values = Some(value);
20715            Ok(())
20716        }
20717        fn store_any_attribute(
20718            values: &mut Option<super::AnyAttribute>,
20719            value: super::AnyAttribute,
20720        ) -> Result<(), Error> {
20721            if values.is_some() {
20722                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
20723                    b"anyAttribute",
20724                )))?;
20725            }
20726            *values = Some(value);
20727            Ok(())
20728        }
20729        fn store_assert(
20730            values: &mut Option<super::AssertionType>,
20731            value: super::AssertionType,
20732        ) -> Result<(), Error> {
20733            if values.is_some() {
20734                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
20735                    b"assert",
20736                )))?;
20737            }
20738            *values = Some(value);
20739            Ok(())
20740        }
20741        fn handle_annotation<'de, R>(
20742            &mut self,
20743            reader: &R,
20744            mut values: Option<super::Annotation>,
20745            output: DeserializerOutput<'de, super::Annotation>,
20746            fallback: &mut Option<Self>,
20747        ) -> Result<ElementHandlerOutput<'de>, Error>
20748        where
20749            R: DeserializeReader,
20750        {
20751            let DeserializerOutput {
20752                artifact,
20753                event,
20754                allow_any,
20755            } = output;
20756            if artifact.is_none() {
20757                *self = match fallback.take() {
20758                    None => Self::Init__,
20759                    Some(Self::Annotation(_, Some(deserializer))) => {
20760                        Self::Annotation(values, Some(deserializer))
20761                    }
20762                    _ => unreachable!(),
20763                };
20764                return Ok(ElementHandlerOutput::break_(event, allow_any));
20765            }
20766            match fallback.take() {
20767                None => (),
20768                Some(Self::Annotation(_, Some(deserializer))) => {
20769                    let data = deserializer.finish(reader)?;
20770                    Self::store_annotation(&mut values, data)?;
20771                }
20772                Some(_) => unreachable!(),
20773            }
20774            Ok(match artifact {
20775                DeserializerArtifact::None => unreachable!(),
20776                DeserializerArtifact::Data(data) => {
20777                    Self::store_annotation(&mut values, data)?;
20778                    let data = Self::Annotation(values, None).finish(reader)?;
20779                    *self = Self::Done__(data);
20780                    ElementHandlerOutput::Break { event, allow_any }
20781                }
20782                DeserializerArtifact::Deserializer(deserializer) => {
20783                    *self = Self::Annotation(values, Some(deserializer));
20784                    ElementHandlerOutput::from_event_end(event, allow_any)
20785                }
20786            })
20787        }
20788        fn handle_open_content<'de, R>(
20789            &mut self,
20790            reader: &R,
20791            mut values: Option<super::OpenContent>,
20792            output: DeserializerOutput<'de, super::OpenContent>,
20793            fallback: &mut Option<Self>,
20794        ) -> Result<ElementHandlerOutput<'de>, Error>
20795        where
20796            R: DeserializeReader,
20797        {
20798            let DeserializerOutput {
20799                artifact,
20800                event,
20801                allow_any,
20802            } = output;
20803            if artifact.is_none() {
20804                *self = match fallback.take() {
20805                    None => Self::Init__,
20806                    Some(Self::OpenContent(_, Some(deserializer))) => {
20807                        Self::OpenContent(values, Some(deserializer))
20808                    }
20809                    _ => unreachable!(),
20810                };
20811                return Ok(ElementHandlerOutput::break_(event, allow_any));
20812            }
20813            match fallback.take() {
20814                None => (),
20815                Some(Self::OpenContent(_, Some(deserializer))) => {
20816                    let data = deserializer.finish(reader)?;
20817                    Self::store_open_content(&mut values, data)?;
20818                }
20819                Some(_) => unreachable!(),
20820            }
20821            Ok(match artifact {
20822                DeserializerArtifact::None => unreachable!(),
20823                DeserializerArtifact::Data(data) => {
20824                    Self::store_open_content(&mut values, data)?;
20825                    let data = Self::OpenContent(values, None).finish(reader)?;
20826                    *self = Self::Done__(data);
20827                    ElementHandlerOutput::Break { event, allow_any }
20828                }
20829                DeserializerArtifact::Deserializer(deserializer) => {
20830                    *self = Self::OpenContent(values, Some(deserializer));
20831                    ElementHandlerOutput::from_event_end(event, allow_any)
20832                }
20833            })
20834        }
20835        fn handle_group<'de, R>(
20836            &mut self,
20837            reader: &R,
20838            mut values: Option<super::GroupType>,
20839            output: DeserializerOutput<'de, super::GroupType>,
20840            fallback: &mut Option<Self>,
20841        ) -> Result<ElementHandlerOutput<'de>, Error>
20842        where
20843            R: DeserializeReader,
20844        {
20845            let DeserializerOutput {
20846                artifact,
20847                event,
20848                allow_any,
20849            } = output;
20850            if artifact.is_none() {
20851                *self = match fallback.take() {
20852                    None => Self::Init__,
20853                    Some(Self::Group(_, Some(deserializer))) => {
20854                        Self::Group(values, Some(deserializer))
20855                    }
20856                    _ => unreachable!(),
20857                };
20858                return Ok(ElementHandlerOutput::break_(event, allow_any));
20859            }
20860            match fallback.take() {
20861                None => (),
20862                Some(Self::Group(_, Some(deserializer))) => {
20863                    let data = deserializer.finish(reader)?;
20864                    Self::store_group(&mut values, data)?;
20865                }
20866                Some(_) => unreachable!(),
20867            }
20868            Ok(match artifact {
20869                DeserializerArtifact::None => unreachable!(),
20870                DeserializerArtifact::Data(data) => {
20871                    Self::store_group(&mut values, data)?;
20872                    let data = Self::Group(values, None).finish(reader)?;
20873                    *self = Self::Done__(data);
20874                    ElementHandlerOutput::Break { event, allow_any }
20875                }
20876                DeserializerArtifact::Deserializer(deserializer) => {
20877                    *self = Self::Group(values, Some(deserializer));
20878                    ElementHandlerOutput::from_event_end(event, allow_any)
20879                }
20880            })
20881        }
20882        fn handle_all<'de, R>(
20883            &mut self,
20884            reader: &R,
20885            mut values: Option<super::GroupType>,
20886            output: DeserializerOutput<'de, super::GroupType>,
20887            fallback: &mut Option<Self>,
20888        ) -> Result<ElementHandlerOutput<'de>, Error>
20889        where
20890            R: DeserializeReader,
20891        {
20892            let DeserializerOutput {
20893                artifact,
20894                event,
20895                allow_any,
20896            } = output;
20897            if artifact.is_none() {
20898                *self = match fallback.take() {
20899                    None => Self::Init__,
20900                    Some(Self::All(_, Some(deserializer))) => Self::All(values, Some(deserializer)),
20901                    _ => unreachable!(),
20902                };
20903                return Ok(ElementHandlerOutput::break_(event, allow_any));
20904            }
20905            match fallback.take() {
20906                None => (),
20907                Some(Self::All(_, Some(deserializer))) => {
20908                    let data = deserializer.finish(reader)?;
20909                    Self::store_all(&mut values, data)?;
20910                }
20911                Some(_) => unreachable!(),
20912            }
20913            Ok(match artifact {
20914                DeserializerArtifact::None => unreachable!(),
20915                DeserializerArtifact::Data(data) => {
20916                    Self::store_all(&mut values, data)?;
20917                    let data = Self::All(values, None).finish(reader)?;
20918                    *self = Self::Done__(data);
20919                    ElementHandlerOutput::Break { event, allow_any }
20920                }
20921                DeserializerArtifact::Deserializer(deserializer) => {
20922                    *self = Self::All(values, Some(deserializer));
20923                    ElementHandlerOutput::from_event_end(event, allow_any)
20924                }
20925            })
20926        }
20927        fn handle_choice<'de, R>(
20928            &mut self,
20929            reader: &R,
20930            mut values: Option<super::GroupType>,
20931            output: DeserializerOutput<'de, super::GroupType>,
20932            fallback: &mut Option<Self>,
20933        ) -> Result<ElementHandlerOutput<'de>, Error>
20934        where
20935            R: DeserializeReader,
20936        {
20937            let DeserializerOutput {
20938                artifact,
20939                event,
20940                allow_any,
20941            } = output;
20942            if artifact.is_none() {
20943                *self = match fallback.take() {
20944                    None => Self::Init__,
20945                    Some(Self::Choice(_, Some(deserializer))) => {
20946                        Self::Choice(values, Some(deserializer))
20947                    }
20948                    _ => unreachable!(),
20949                };
20950                return Ok(ElementHandlerOutput::break_(event, allow_any));
20951            }
20952            match fallback.take() {
20953                None => (),
20954                Some(Self::Choice(_, Some(deserializer))) => {
20955                    let data = deserializer.finish(reader)?;
20956                    Self::store_choice(&mut values, data)?;
20957                }
20958                Some(_) => unreachable!(),
20959            }
20960            Ok(match artifact {
20961                DeserializerArtifact::None => unreachable!(),
20962                DeserializerArtifact::Data(data) => {
20963                    Self::store_choice(&mut values, data)?;
20964                    let data = Self::Choice(values, None).finish(reader)?;
20965                    *self = Self::Done__(data);
20966                    ElementHandlerOutput::Break { event, allow_any }
20967                }
20968                DeserializerArtifact::Deserializer(deserializer) => {
20969                    *self = Self::Choice(values, Some(deserializer));
20970                    ElementHandlerOutput::from_event_end(event, allow_any)
20971                }
20972            })
20973        }
20974        fn handle_sequence<'de, R>(
20975            &mut self,
20976            reader: &R,
20977            mut values: Option<super::GroupType>,
20978            output: DeserializerOutput<'de, super::GroupType>,
20979            fallback: &mut Option<Self>,
20980        ) -> Result<ElementHandlerOutput<'de>, Error>
20981        where
20982            R: DeserializeReader,
20983        {
20984            let DeserializerOutput {
20985                artifact,
20986                event,
20987                allow_any,
20988            } = output;
20989            if artifact.is_none() {
20990                *self = match fallback.take() {
20991                    None => Self::Init__,
20992                    Some(Self::Sequence(_, Some(deserializer))) => {
20993                        Self::Sequence(values, Some(deserializer))
20994                    }
20995                    _ => unreachable!(),
20996                };
20997                return Ok(ElementHandlerOutput::break_(event, allow_any));
20998            }
20999            match fallback.take() {
21000                None => (),
21001                Some(Self::Sequence(_, Some(deserializer))) => {
21002                    let data = deserializer.finish(reader)?;
21003                    Self::store_sequence(&mut values, data)?;
21004                }
21005                Some(_) => unreachable!(),
21006            }
21007            Ok(match artifact {
21008                DeserializerArtifact::None => unreachable!(),
21009                DeserializerArtifact::Data(data) => {
21010                    Self::store_sequence(&mut values, data)?;
21011                    let data = Self::Sequence(values, None).finish(reader)?;
21012                    *self = Self::Done__(data);
21013                    ElementHandlerOutput::Break { event, allow_any }
21014                }
21015                DeserializerArtifact::Deserializer(deserializer) => {
21016                    *self = Self::Sequence(values, Some(deserializer));
21017                    ElementHandlerOutput::from_event_end(event, allow_any)
21018                }
21019            })
21020        }
21021        fn handle_attribute<'de, R>(
21022            &mut self,
21023            reader: &R,
21024            mut values: Option<super::AttributeType>,
21025            output: DeserializerOutput<'de, super::AttributeType>,
21026            fallback: &mut Option<Self>,
21027        ) -> Result<ElementHandlerOutput<'de>, Error>
21028        where
21029            R: DeserializeReader,
21030        {
21031            let DeserializerOutput {
21032                artifact,
21033                event,
21034                allow_any,
21035            } = output;
21036            if artifact.is_none() {
21037                *self = match fallback.take() {
21038                    None => Self::Init__,
21039                    Some(Self::Attribute(_, Some(deserializer))) => {
21040                        Self::Attribute(values, Some(deserializer))
21041                    }
21042                    _ => unreachable!(),
21043                };
21044                return Ok(ElementHandlerOutput::break_(event, allow_any));
21045            }
21046            match fallback.take() {
21047                None => (),
21048                Some(Self::Attribute(_, Some(deserializer))) => {
21049                    let data = deserializer.finish(reader)?;
21050                    Self::store_attribute(&mut values, data)?;
21051                }
21052                Some(_) => unreachable!(),
21053            }
21054            Ok(match artifact {
21055                DeserializerArtifact::None => unreachable!(),
21056                DeserializerArtifact::Data(data) => {
21057                    Self::store_attribute(&mut values, data)?;
21058                    let data = Self::Attribute(values, None).finish(reader)?;
21059                    *self = Self::Done__(data);
21060                    ElementHandlerOutput::Break { event, allow_any }
21061                }
21062                DeserializerArtifact::Deserializer(deserializer) => {
21063                    *self = Self::Attribute(values, Some(deserializer));
21064                    ElementHandlerOutput::from_event_end(event, allow_any)
21065                }
21066            })
21067        }
21068        fn handle_attribute_group<'de, R>(
21069            &mut self,
21070            reader: &R,
21071            mut values: Option<super::AttributeGroupType>,
21072            output: DeserializerOutput<'de, super::AttributeGroupType>,
21073            fallback: &mut Option<Self>,
21074        ) -> Result<ElementHandlerOutput<'de>, Error>
21075        where
21076            R: DeserializeReader,
21077        {
21078            let DeserializerOutput {
21079                artifact,
21080                event,
21081                allow_any,
21082            } = output;
21083            if artifact.is_none() {
21084                *self = match fallback.take() {
21085                    None => Self::Init__,
21086                    Some(Self::AttributeGroup(_, Some(deserializer))) => {
21087                        Self::AttributeGroup(values, Some(deserializer))
21088                    }
21089                    _ => unreachable!(),
21090                };
21091                return Ok(ElementHandlerOutput::break_(event, allow_any));
21092            }
21093            match fallback.take() {
21094                None => (),
21095                Some(Self::AttributeGroup(_, Some(deserializer))) => {
21096                    let data = deserializer.finish(reader)?;
21097                    Self::store_attribute_group(&mut values, data)?;
21098                }
21099                Some(_) => unreachable!(),
21100            }
21101            Ok(match artifact {
21102                DeserializerArtifact::None => unreachable!(),
21103                DeserializerArtifact::Data(data) => {
21104                    Self::store_attribute_group(&mut values, data)?;
21105                    let data = Self::AttributeGroup(values, None).finish(reader)?;
21106                    *self = Self::Done__(data);
21107                    ElementHandlerOutput::Break { event, allow_any }
21108                }
21109                DeserializerArtifact::Deserializer(deserializer) => {
21110                    *self = Self::AttributeGroup(values, Some(deserializer));
21111                    ElementHandlerOutput::from_event_end(event, allow_any)
21112                }
21113            })
21114        }
21115        fn handle_any_attribute<'de, R>(
21116            &mut self,
21117            reader: &R,
21118            mut values: Option<super::AnyAttribute>,
21119            output: DeserializerOutput<'de, super::AnyAttribute>,
21120            fallback: &mut Option<Self>,
21121        ) -> Result<ElementHandlerOutput<'de>, Error>
21122        where
21123            R: DeserializeReader,
21124        {
21125            let DeserializerOutput {
21126                artifact,
21127                event,
21128                allow_any,
21129            } = output;
21130            if artifact.is_none() {
21131                *self = match fallback.take() {
21132                    None => Self::Init__,
21133                    Some(Self::AnyAttribute(_, Some(deserializer))) => {
21134                        Self::AnyAttribute(values, Some(deserializer))
21135                    }
21136                    _ => unreachable!(),
21137                };
21138                return Ok(ElementHandlerOutput::break_(event, allow_any));
21139            }
21140            match fallback.take() {
21141                None => (),
21142                Some(Self::AnyAttribute(_, Some(deserializer))) => {
21143                    let data = deserializer.finish(reader)?;
21144                    Self::store_any_attribute(&mut values, data)?;
21145                }
21146                Some(_) => unreachable!(),
21147            }
21148            Ok(match artifact {
21149                DeserializerArtifact::None => unreachable!(),
21150                DeserializerArtifact::Data(data) => {
21151                    Self::store_any_attribute(&mut values, data)?;
21152                    let data = Self::AnyAttribute(values, None).finish(reader)?;
21153                    *self = Self::Done__(data);
21154                    ElementHandlerOutput::Break { event, allow_any }
21155                }
21156                DeserializerArtifact::Deserializer(deserializer) => {
21157                    *self = Self::AnyAttribute(values, Some(deserializer));
21158                    ElementHandlerOutput::from_event_end(event, allow_any)
21159                }
21160            })
21161        }
21162        fn handle_assert<'de, R>(
21163            &mut self,
21164            reader: &R,
21165            mut values: Option<super::AssertionType>,
21166            output: DeserializerOutput<'de, super::AssertionType>,
21167            fallback: &mut Option<Self>,
21168        ) -> Result<ElementHandlerOutput<'de>, Error>
21169        where
21170            R: DeserializeReader,
21171        {
21172            let DeserializerOutput {
21173                artifact,
21174                event,
21175                allow_any,
21176            } = output;
21177            if artifact.is_none() {
21178                *self = match fallback.take() {
21179                    None => Self::Init__,
21180                    Some(Self::Assert(_, Some(deserializer))) => {
21181                        Self::Assert(values, Some(deserializer))
21182                    }
21183                    _ => unreachable!(),
21184                };
21185                return Ok(ElementHandlerOutput::break_(event, allow_any));
21186            }
21187            match fallback.take() {
21188                None => (),
21189                Some(Self::Assert(_, Some(deserializer))) => {
21190                    let data = deserializer.finish(reader)?;
21191                    Self::store_assert(&mut values, data)?;
21192                }
21193                Some(_) => unreachable!(),
21194            }
21195            Ok(match artifact {
21196                DeserializerArtifact::None => unreachable!(),
21197                DeserializerArtifact::Data(data) => {
21198                    Self::store_assert(&mut values, data)?;
21199                    let data = Self::Assert(values, None).finish(reader)?;
21200                    *self = Self::Done__(data);
21201                    ElementHandlerOutput::Break { event, allow_any }
21202                }
21203                DeserializerArtifact::Deserializer(deserializer) => {
21204                    *self = Self::Assert(values, Some(deserializer));
21205                    ElementHandlerOutput::from_event_end(event, allow_any)
21206                }
21207            })
21208        }
21209    }
21210    impl<'de> Deserializer<'de, super::ExtensionTypeContent> for ExtensionTypeContentDeserializer {
21211        fn init<R>(
21212            reader: &R,
21213            event: Event<'de>,
21214        ) -> DeserializerResult<'de, super::ExtensionTypeContent>
21215        where
21216            R: DeserializeReader,
21217        {
21218            let deserializer = Self::Init__;
21219            let mut output = deserializer.next(reader, event)?;
21220            output.artifact = match output.artifact {
21221                DeserializerArtifact::Deserializer(Self::Init__) => DeserializerArtifact::None,
21222                artifact => artifact,
21223            };
21224            Ok(output)
21225        }
21226        fn next<R>(
21227            mut self,
21228            reader: &R,
21229            event: Event<'de>,
21230        ) -> DeserializerResult<'de, super::ExtensionTypeContent>
21231        where
21232            R: DeserializeReader,
21233        {
21234            let mut event = event;
21235            let mut fallback = None;
21236            let (event, allow_any) = loop {
21237                let state = replace(&mut self, Self::Unknown__);
21238                event = match (state, event) {
21239                    (Self::Annotation(values, Some(deserializer)), event) => {
21240                        let output = deserializer.next(reader, event)?;
21241                        match self.handle_annotation(reader, values, output, &mut fallback)? {
21242                            ElementHandlerOutput::Break { event, allow_any } => {
21243                                break (event, allow_any)
21244                            }
21245                            ElementHandlerOutput::Continue { event, .. } => event,
21246                        }
21247                    }
21248                    (Self::OpenContent(values, Some(deserializer)), event) => {
21249                        let output = deserializer.next(reader, event)?;
21250                        match self.handle_open_content(reader, values, output, &mut fallback)? {
21251                            ElementHandlerOutput::Break { event, allow_any } => {
21252                                break (event, allow_any)
21253                            }
21254                            ElementHandlerOutput::Continue { event, .. } => event,
21255                        }
21256                    }
21257                    (Self::Group(values, Some(deserializer)), event) => {
21258                        let output = deserializer.next(reader, event)?;
21259                        match self.handle_group(reader, values, output, &mut fallback)? {
21260                            ElementHandlerOutput::Break { event, allow_any } => {
21261                                break (event, allow_any)
21262                            }
21263                            ElementHandlerOutput::Continue { event, .. } => event,
21264                        }
21265                    }
21266                    (Self::All(values, Some(deserializer)), event) => {
21267                        let output = deserializer.next(reader, event)?;
21268                        match self.handle_all(reader, values, output, &mut fallback)? {
21269                            ElementHandlerOutput::Break { event, allow_any } => {
21270                                break (event, allow_any)
21271                            }
21272                            ElementHandlerOutput::Continue { event, .. } => event,
21273                        }
21274                    }
21275                    (Self::Choice(values, Some(deserializer)), event) => {
21276                        let output = deserializer.next(reader, event)?;
21277                        match self.handle_choice(reader, values, output, &mut fallback)? {
21278                            ElementHandlerOutput::Break { event, allow_any } => {
21279                                break (event, allow_any)
21280                            }
21281                            ElementHandlerOutput::Continue { event, .. } => event,
21282                        }
21283                    }
21284                    (Self::Sequence(values, Some(deserializer)), event) => {
21285                        let output = deserializer.next(reader, event)?;
21286                        match self.handle_sequence(reader, values, output, &mut fallback)? {
21287                            ElementHandlerOutput::Break { event, allow_any } => {
21288                                break (event, allow_any)
21289                            }
21290                            ElementHandlerOutput::Continue { event, .. } => event,
21291                        }
21292                    }
21293                    (Self::Attribute(values, Some(deserializer)), event) => {
21294                        let output = deserializer.next(reader, event)?;
21295                        match self.handle_attribute(reader, values, output, &mut fallback)? {
21296                            ElementHandlerOutput::Break { event, allow_any } => {
21297                                break (event, allow_any)
21298                            }
21299                            ElementHandlerOutput::Continue { event, .. } => event,
21300                        }
21301                    }
21302                    (Self::AttributeGroup(values, Some(deserializer)), event) => {
21303                        let output = deserializer.next(reader, event)?;
21304                        match self.handle_attribute_group(reader, values, output, &mut fallback)? {
21305                            ElementHandlerOutput::Break { event, allow_any } => {
21306                                break (event, allow_any)
21307                            }
21308                            ElementHandlerOutput::Continue { event, .. } => event,
21309                        }
21310                    }
21311                    (Self::AnyAttribute(values, Some(deserializer)), event) => {
21312                        let output = deserializer.next(reader, event)?;
21313                        match self.handle_any_attribute(reader, values, output, &mut fallback)? {
21314                            ElementHandlerOutput::Break { event, allow_any } => {
21315                                break (event, allow_any)
21316                            }
21317                            ElementHandlerOutput::Continue { event, .. } => event,
21318                        }
21319                    }
21320                    (Self::Assert(values, Some(deserializer)), event) => {
21321                        let output = deserializer.next(reader, event)?;
21322                        match self.handle_assert(reader, values, output, &mut fallback)? {
21323                            ElementHandlerOutput::Break { event, allow_any } => {
21324                                break (event, allow_any)
21325                            }
21326                            ElementHandlerOutput::Continue { event, .. } => event,
21327                        }
21328                    }
21329                    (state, event @ Event::End(_)) => {
21330                        return Ok(DeserializerOutput {
21331                            artifact: DeserializerArtifact::Data(state.finish(reader)?),
21332                            event: DeserializerEvent::Continue(event),
21333                            allow_any: false,
21334                        });
21335                    }
21336                    (Self::Init__, event) => {
21337                        match self.find_suitable(reader, event, &mut fallback)? {
21338                            ElementHandlerOutput::Break { event, allow_any } => {
21339                                break (event, allow_any)
21340                            }
21341                            ElementHandlerOutput::Continue { event, .. } => event,
21342                        }
21343                    }
21344                    (Self::Annotation(values, None), event) => {
21345                        let output = <super::Annotation as WithDeserializer>::Deserializer::init(
21346                            reader, event,
21347                        )?;
21348                        match self.handle_annotation(reader, values, output, &mut fallback)? {
21349                            ElementHandlerOutput::Break { event, allow_any } => {
21350                                break (event, allow_any)
21351                            }
21352                            ElementHandlerOutput::Continue { event, .. } => event,
21353                        }
21354                    }
21355                    (Self::OpenContent(values, None), event) => {
21356                        let output = <super::OpenContent as WithDeserializer>::Deserializer::init(
21357                            reader, event,
21358                        )?;
21359                        match self.handle_open_content(reader, values, output, &mut fallback)? {
21360                            ElementHandlerOutput::Break { event, allow_any } => {
21361                                break (event, allow_any)
21362                            }
21363                            ElementHandlerOutput::Continue { event, .. } => event,
21364                        }
21365                    }
21366                    (Self::Group(values, None), event) => {
21367                        let output = <super::GroupType as WithDeserializer>::Deserializer::init(
21368                            reader, event,
21369                        )?;
21370                        match self.handle_group(reader, values, output, &mut fallback)? {
21371                            ElementHandlerOutput::Break { event, allow_any } => {
21372                                break (event, allow_any)
21373                            }
21374                            ElementHandlerOutput::Continue { event, .. } => event,
21375                        }
21376                    }
21377                    (Self::All(values, None), event) => {
21378                        let output = <super::GroupType as WithDeserializer>::Deserializer::init(
21379                            reader, event,
21380                        )?;
21381                        match self.handle_all(reader, values, output, &mut fallback)? {
21382                            ElementHandlerOutput::Break { event, allow_any } => {
21383                                break (event, allow_any)
21384                            }
21385                            ElementHandlerOutput::Continue { event, .. } => event,
21386                        }
21387                    }
21388                    (Self::Choice(values, None), event) => {
21389                        let output = <super::GroupType as WithDeserializer>::Deserializer::init(
21390                            reader, event,
21391                        )?;
21392                        match self.handle_choice(reader, values, output, &mut fallback)? {
21393                            ElementHandlerOutput::Break { event, allow_any } => {
21394                                break (event, allow_any)
21395                            }
21396                            ElementHandlerOutput::Continue { event, .. } => event,
21397                        }
21398                    }
21399                    (Self::Sequence(values, None), event) => {
21400                        let output = <super::GroupType as WithDeserializer>::Deserializer::init(
21401                            reader, event,
21402                        )?;
21403                        match self.handle_sequence(reader, values, output, &mut fallback)? {
21404                            ElementHandlerOutput::Break { event, allow_any } => {
21405                                break (event, allow_any)
21406                            }
21407                            ElementHandlerOutput::Continue { event, .. } => event,
21408                        }
21409                    }
21410                    (Self::Attribute(values, None), event) => {
21411                        let output =
21412                            <super::AttributeType as WithDeserializer>::Deserializer::init(
21413                                reader, event,
21414                            )?;
21415                        match self.handle_attribute(reader, values, output, &mut fallback)? {
21416                            ElementHandlerOutput::Break { event, allow_any } => {
21417                                break (event, allow_any)
21418                            }
21419                            ElementHandlerOutput::Continue { event, .. } => event,
21420                        }
21421                    }
21422                    (Self::AttributeGroup(values, None), event) => {
21423                        let output =
21424                            <super::AttributeGroupType as WithDeserializer>::Deserializer::init(
21425                                reader, event,
21426                            )?;
21427                        match self.handle_attribute_group(reader, values, output, &mut fallback)? {
21428                            ElementHandlerOutput::Break { event, allow_any } => {
21429                                break (event, allow_any)
21430                            }
21431                            ElementHandlerOutput::Continue { event, .. } => event,
21432                        }
21433                    }
21434                    (Self::AnyAttribute(values, None), event) => {
21435                        let output = <super::AnyAttribute as WithDeserializer>::Deserializer::init(
21436                            reader, event,
21437                        )?;
21438                        match self.handle_any_attribute(reader, values, output, &mut fallback)? {
21439                            ElementHandlerOutput::Break { event, allow_any } => {
21440                                break (event, allow_any)
21441                            }
21442                            ElementHandlerOutput::Continue { event, .. } => event,
21443                        }
21444                    }
21445                    (Self::Assert(values, None), event) => {
21446                        let output =
21447                            <super::AssertionType as WithDeserializer>::Deserializer::init(
21448                                reader, event,
21449                            )?;
21450                        match self.handle_assert(reader, values, output, &mut fallback)? {
21451                            ElementHandlerOutput::Break { event, allow_any } => {
21452                                break (event, allow_any)
21453                            }
21454                            ElementHandlerOutput::Continue { event, .. } => event,
21455                        }
21456                    }
21457                    (s @ Self::Done__(_), event) => {
21458                        self = s;
21459                        break (DeserializerEvent::Continue(event), false);
21460                    }
21461                    (Self::Unknown__, _) => unreachable!(),
21462                }
21463            };
21464            let artifact = match self {
21465                Self::Done__(data) => DeserializerArtifact::Data(data),
21466                deserializer => DeserializerArtifact::Deserializer(deserializer),
21467            };
21468            Ok(DeserializerOutput {
21469                artifact,
21470                event,
21471                allow_any,
21472            })
21473        }
21474        fn finish<R>(self, reader: &R) -> Result<super::ExtensionTypeContent, Error>
21475        where
21476            R: DeserializeReader,
21477        {
21478            match self {
21479                Self::Init__ => Err(ErrorKind::MissingContent.into()),
21480                Self::Annotation(mut values, deserializer) => {
21481                    if let Some(deserializer) = deserializer {
21482                        let value = deserializer.finish(reader)?;
21483                        Self::store_annotation(&mut values, value)?;
21484                    }
21485                    Ok(super::ExtensionTypeContent::Annotation(values.ok_or_else(
21486                        || ErrorKind::MissingElement("annotation".into()),
21487                    )?))
21488                }
21489                Self::OpenContent(mut values, deserializer) => {
21490                    if let Some(deserializer) = deserializer {
21491                        let value = deserializer.finish(reader)?;
21492                        Self::store_open_content(&mut values, value)?;
21493                    }
21494                    Ok(super::ExtensionTypeContent::OpenContent(
21495                        values.ok_or_else(|| ErrorKind::MissingElement("openContent".into()))?,
21496                    ))
21497                }
21498                Self::Group(mut values, deserializer) => {
21499                    if let Some(deserializer) = deserializer {
21500                        let value = deserializer.finish(reader)?;
21501                        Self::store_group(&mut values, value)?;
21502                    }
21503                    Ok(super::ExtensionTypeContent::Group(values.ok_or_else(
21504                        || ErrorKind::MissingElement("group".into()),
21505                    )?))
21506                }
21507                Self::All(mut values, deserializer) => {
21508                    if let Some(deserializer) = deserializer {
21509                        let value = deserializer.finish(reader)?;
21510                        Self::store_all(&mut values, value)?;
21511                    }
21512                    Ok(super::ExtensionTypeContent::All(
21513                        values.ok_or_else(|| ErrorKind::MissingElement("all".into()))?,
21514                    ))
21515                }
21516                Self::Choice(mut values, deserializer) => {
21517                    if let Some(deserializer) = deserializer {
21518                        let value = deserializer.finish(reader)?;
21519                        Self::store_choice(&mut values, value)?;
21520                    }
21521                    Ok(super::ExtensionTypeContent::Choice(values.ok_or_else(
21522                        || ErrorKind::MissingElement("choice".into()),
21523                    )?))
21524                }
21525                Self::Sequence(mut values, deserializer) => {
21526                    if let Some(deserializer) = deserializer {
21527                        let value = deserializer.finish(reader)?;
21528                        Self::store_sequence(&mut values, value)?;
21529                    }
21530                    Ok(super::ExtensionTypeContent::Sequence(values.ok_or_else(
21531                        || ErrorKind::MissingElement("sequence".into()),
21532                    )?))
21533                }
21534                Self::Attribute(mut values, deserializer) => {
21535                    if let Some(deserializer) = deserializer {
21536                        let value = deserializer.finish(reader)?;
21537                        Self::store_attribute(&mut values, value)?;
21538                    }
21539                    Ok(super::ExtensionTypeContent::Attribute(values.ok_or_else(
21540                        || ErrorKind::MissingElement("attribute".into()),
21541                    )?))
21542                }
21543                Self::AttributeGroup(mut values, deserializer) => {
21544                    if let Some(deserializer) = deserializer {
21545                        let value = deserializer.finish(reader)?;
21546                        Self::store_attribute_group(&mut values, value)?;
21547                    }
21548                    Ok(super::ExtensionTypeContent::AttributeGroup(
21549                        values.ok_or_else(|| ErrorKind::MissingElement("attributeGroup".into()))?,
21550                    ))
21551                }
21552                Self::AnyAttribute(mut values, deserializer) => {
21553                    if let Some(deserializer) = deserializer {
21554                        let value = deserializer.finish(reader)?;
21555                        Self::store_any_attribute(&mut values, value)?;
21556                    }
21557                    Ok(super::ExtensionTypeContent::AnyAttribute(
21558                        values.ok_or_else(|| ErrorKind::MissingElement("anyAttribute".into()))?,
21559                    ))
21560                }
21561                Self::Assert(mut values, deserializer) => {
21562                    if let Some(deserializer) = deserializer {
21563                        let value = deserializer.finish(reader)?;
21564                        Self::store_assert(&mut values, value)?;
21565                    }
21566                    Ok(super::ExtensionTypeContent::Assert(values.ok_or_else(
21567                        || ErrorKind::MissingElement("assert".into()),
21568                    )?))
21569                }
21570                Self::Done__(data) => Ok(data),
21571                Self::Unknown__ => unreachable!(),
21572            }
21573        }
21574    }
21575    #[derive(Debug)]
21576    pub struct FieldDeserializer {
21577        id: Option<String>,
21578        xpath: String,
21579        xpath_default_namespace: Option<super::XpathDefaultNamespaceType>,
21580        annotation: Option<super::Annotation>,
21581        state: Box<FieldDeserializerState>,
21582    }
21583    #[derive(Debug)]
21584    enum FieldDeserializerState {
21585        Init__,
21586        Annotation(Option<<super::Annotation as WithDeserializer>::Deserializer>),
21587        Done__,
21588        Unknown__,
21589    }
21590    impl FieldDeserializer {
21591        fn from_bytes_start<R>(reader: &R, bytes_start: &BytesStart<'_>) -> Result<Self, Error>
21592        where
21593            R: DeserializeReader,
21594        {
21595            let mut id: Option<String> = None;
21596            let mut xpath: Option<String> = None;
21597            let mut xpath_default_namespace: Option<super::XpathDefaultNamespaceType> = None;
21598            for attrib in filter_xmlns_attributes(bytes_start) {
21599                let attrib = attrib?;
21600                if matches!(
21601                    reader.resolve_local_name(attrib.key, &super::NS_XS),
21602                    Some(b"id")
21603                ) {
21604                    reader.read_attrib(&mut id, b"id", &attrib.value)?;
21605                } else if matches!(
21606                    reader.resolve_local_name(attrib.key, &super::NS_XS),
21607                    Some(b"xpath")
21608                ) {
21609                    reader.read_attrib(&mut xpath, b"xpath", &attrib.value)?;
21610                } else if matches!(
21611                    reader.resolve_local_name(attrib.key, &super::NS_XS),
21612                    Some(b"xpathDefaultNamespace")
21613                ) {
21614                    reader.read_attrib(
21615                        &mut xpath_default_namespace,
21616                        b"xpathDefaultNamespace",
21617                        &attrib.value,
21618                    )?;
21619                }
21620            }
21621            Ok(Self {
21622                id: id,
21623                xpath: xpath
21624                    .ok_or_else(|| reader.map_error(ErrorKind::MissingAttribute("xpath".into())))?,
21625                xpath_default_namespace: xpath_default_namespace,
21626                annotation: None,
21627                state: Box::new(FieldDeserializerState::Init__),
21628            })
21629        }
21630        fn finish_state<R>(
21631            &mut self,
21632            reader: &R,
21633            state: FieldDeserializerState,
21634        ) -> Result<(), Error>
21635        where
21636            R: DeserializeReader,
21637        {
21638            use FieldDeserializerState as S;
21639            match state {
21640                S::Annotation(Some(deserializer)) => {
21641                    self.store_annotation(deserializer.finish(reader)?)?
21642                }
21643                _ => (),
21644            }
21645            Ok(())
21646        }
21647        fn store_annotation(&mut self, value: super::Annotation) -> Result<(), Error> {
21648            if self.annotation.is_some() {
21649                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
21650                    b"annotation",
21651                )))?;
21652            }
21653            self.annotation = Some(value);
21654            Ok(())
21655        }
21656        fn handle_annotation<'de, R>(
21657            &mut self,
21658            reader: &R,
21659            output: DeserializerOutput<'de, super::Annotation>,
21660            fallback: &mut Option<FieldDeserializerState>,
21661        ) -> Result<ElementHandlerOutput<'de>, Error>
21662        where
21663            R: DeserializeReader,
21664        {
21665            let DeserializerOutput {
21666                artifact,
21667                event,
21668                allow_any,
21669            } = output;
21670            if artifact.is_none() {
21671                fallback.get_or_insert(FieldDeserializerState::Annotation(None));
21672                *self.state = FieldDeserializerState::Done__;
21673                return Ok(ElementHandlerOutput::from_event(event, allow_any));
21674            }
21675            if let Some(fallback) = fallback.take() {
21676                self.finish_state(reader, fallback)?;
21677            }
21678            Ok(match artifact {
21679                DeserializerArtifact::None => unreachable!(),
21680                DeserializerArtifact::Data(data) => {
21681                    self.store_annotation(data)?;
21682                    *self.state = FieldDeserializerState::Done__;
21683                    ElementHandlerOutput::from_event(event, allow_any)
21684                }
21685                DeserializerArtifact::Deserializer(deserializer) => {
21686                    let ret = ElementHandlerOutput::from_event(event, allow_any);
21687                    match &ret {
21688                        ElementHandlerOutput::Continue { .. } => {
21689                            fallback.get_or_insert(FieldDeserializerState::Annotation(Some(
21690                                deserializer,
21691                            )));
21692                            *self.state = FieldDeserializerState::Done__;
21693                        }
21694                        ElementHandlerOutput::Break { .. } => {
21695                            *self.state = FieldDeserializerState::Annotation(Some(deserializer));
21696                        }
21697                    }
21698                    ret
21699                }
21700            })
21701        }
21702    }
21703    impl<'de> Deserializer<'de, super::Field> for FieldDeserializer {
21704        fn init<R>(reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::Field>
21705        where
21706            R: DeserializeReader,
21707        {
21708            reader.init_deserializer_from_start_event(event, Self::from_bytes_start)
21709        }
21710        fn next<R>(mut self, reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::Field>
21711        where
21712            R: DeserializeReader,
21713        {
21714            use FieldDeserializerState as S;
21715            let mut event = event;
21716            let mut fallback = None;
21717            let mut allow_any_element = false;
21718            let (event, allow_any) = loop {
21719                let state = replace(&mut *self.state, S::Unknown__);
21720                event = match (state, event) {
21721                    (S::Annotation(Some(deserializer)), event) => {
21722                        let output = deserializer.next(reader, event)?;
21723                        match self.handle_annotation(reader, output, &mut fallback)? {
21724                            ElementHandlerOutput::Continue { event, allow_any } => {
21725                                allow_any_element = allow_any_element || allow_any;
21726                                event
21727                            }
21728                            ElementHandlerOutput::Break { event, allow_any } => {
21729                                break (event, allow_any)
21730                            }
21731                        }
21732                    }
21733                    (_, Event::End(_)) => {
21734                        if let Some(fallback) = fallback.take() {
21735                            self.finish_state(reader, fallback)?;
21736                        }
21737                        return Ok(DeserializerOutput {
21738                            artifact: DeserializerArtifact::Data(self.finish(reader)?),
21739                            event: DeserializerEvent::None,
21740                            allow_any: false,
21741                        });
21742                    }
21743                    (S::Init__, event) => {
21744                        fallback.get_or_insert(S::Init__);
21745                        *self.state = FieldDeserializerState::Annotation(None);
21746                        event
21747                    }
21748                    (S::Annotation(None), event @ (Event::Start(_) | Event::Empty(_))) => {
21749                        if reader.check_start_tag_name(&event, Some(&super::NS_XS), b"annotation") {
21750                            let output =
21751                                <super::Annotation as WithDeserializer>::Deserializer::init(
21752                                    reader, event,
21753                                )?;
21754                            match self.handle_annotation(reader, output, &mut fallback)? {
21755                                ElementHandlerOutput::Continue { event, allow_any } => {
21756                                    allow_any_element = allow_any_element || allow_any;
21757                                    event
21758                                }
21759                                ElementHandlerOutput::Break { event, allow_any } => {
21760                                    break (event, allow_any)
21761                                }
21762                            }
21763                        } else {
21764                            *self.state = S::Done__;
21765                            allow_any_element = true;
21766                            fallback.get_or_insert(S::Annotation(None));
21767                            event
21768                        }
21769                    }
21770                    (S::Done__, event) => {
21771                        fallback.get_or_insert(S::Done__);
21772                        break (DeserializerEvent::Continue(event), allow_any_element);
21773                    }
21774                    (S::Unknown__, _) => unreachable!(),
21775                    (state, event) => {
21776                        *self.state = state;
21777                        break (DeserializerEvent::Break(event), false);
21778                    }
21779                }
21780            };
21781            if let Some(fallback) = fallback {
21782                *self.state = fallback;
21783            }
21784            Ok(DeserializerOutput {
21785                artifact: DeserializerArtifact::Deserializer(self),
21786                event,
21787                allow_any,
21788            })
21789        }
21790        fn finish<R>(mut self, reader: &R) -> Result<super::Field, Error>
21791        where
21792            R: DeserializeReader,
21793        {
21794            let state = replace(&mut *self.state, FieldDeserializerState::Unknown__);
21795            self.finish_state(reader, state)?;
21796            Ok(super::Field {
21797                id: self.id,
21798                xpath: self.xpath,
21799                xpath_default_namespace: self.xpath_default_namespace,
21800                annotation: self.annotation,
21801            })
21802        }
21803    }
21804    #[derive(Debug)]
21805    pub struct FacetTypeDeserializer {
21806        id: Option<String>,
21807        value: String,
21808        fixed: bool,
21809        annotation: Option<super::Annotation>,
21810        state: Box<FacetTypeDeserializerState>,
21811    }
21812    #[derive(Debug)]
21813    enum FacetTypeDeserializerState {
21814        Init__,
21815        Annotation(Option<<super::Annotation as WithDeserializer>::Deserializer>),
21816        Done__,
21817        Unknown__,
21818    }
21819    impl FacetTypeDeserializer {
21820        fn from_bytes_start<R>(reader: &R, bytes_start: &BytesStart<'_>) -> Result<Self, Error>
21821        where
21822            R: DeserializeReader,
21823        {
21824            let mut id: Option<String> = None;
21825            let mut value: Option<String> = None;
21826            let mut fixed: Option<bool> = None;
21827            for attrib in filter_xmlns_attributes(bytes_start) {
21828                let attrib = attrib?;
21829                if matches!(
21830                    reader.resolve_local_name(attrib.key, &super::NS_XS),
21831                    Some(b"id")
21832                ) {
21833                    reader.read_attrib(&mut id, b"id", &attrib.value)?;
21834                } else if matches!(
21835                    reader.resolve_local_name(attrib.key, &super::NS_XS),
21836                    Some(b"value")
21837                ) {
21838                    reader.read_attrib(&mut value, b"value", &attrib.value)?;
21839                } else if matches!(
21840                    reader.resolve_local_name(attrib.key, &super::NS_XS),
21841                    Some(b"fixed")
21842                ) {
21843                    reader.read_attrib(&mut fixed, b"fixed", &attrib.value)?;
21844                }
21845            }
21846            Ok(Self {
21847                id: id,
21848                value: value
21849                    .ok_or_else(|| reader.map_error(ErrorKind::MissingAttribute("value".into())))?,
21850                fixed: fixed.unwrap_or_else(super::FacetType::default_fixed),
21851                annotation: None,
21852                state: Box::new(FacetTypeDeserializerState::Init__),
21853            })
21854        }
21855        fn finish_state<R>(
21856            &mut self,
21857            reader: &R,
21858            state: FacetTypeDeserializerState,
21859        ) -> Result<(), Error>
21860        where
21861            R: DeserializeReader,
21862        {
21863            use FacetTypeDeserializerState as S;
21864            match state {
21865                S::Annotation(Some(deserializer)) => {
21866                    self.store_annotation(deserializer.finish(reader)?)?
21867                }
21868                _ => (),
21869            }
21870            Ok(())
21871        }
21872        fn store_annotation(&mut self, value: super::Annotation) -> Result<(), Error> {
21873            if self.annotation.is_some() {
21874                Err(ErrorKind::DuplicateElement(RawByteStr::from_slice(
21875                    b"annotation",
21876                )))?;
21877            }
21878            self.annotation = Some(value);
21879            Ok(())
21880        }
21881        fn handle_annotation<'de, R>(
21882            &mut self,
21883            reader: &R,
21884            output: DeserializerOutput<'de, super::Annotation>,
21885            fallback: &mut Option<FacetTypeDeserializerState>,
21886        ) -> Result<ElementHandlerOutput<'de>, Error>
21887        where
21888            R: DeserializeReader,
21889        {
21890            let DeserializerOutput {
21891                artifact,
21892                event,
21893                allow_any,
21894            } = output;
21895            if artifact.is_none() {
21896                fallback.get_or_insert(FacetTypeDeserializerState::Annotation(None));
21897                *self.state = FacetTypeDeserializerState::Done__;
21898                return Ok(ElementHandlerOutput::from_event(event, allow_any));
21899            }
21900            if let Some(fallback) = fallback.take() {
21901                self.finish_state(reader, fallback)?;
21902            }
21903            Ok(match artifact {
21904                DeserializerArtifact::None => unreachable!(),
21905                DeserializerArtifact::Data(data) => {
21906                    self.store_annotation(data)?;
21907                    *self.state = FacetTypeDeserializerState::Done__;
21908                    ElementHandlerOutput::from_event(event, allow_any)
21909                }
21910                DeserializerArtifact::Deserializer(deserializer) => {
21911                    let ret = ElementHandlerOutput::from_event(event, allow_any);
21912                    match &ret {
21913                        ElementHandlerOutput::Continue { .. } => {
21914                            fallback.get_or_insert(FacetTypeDeserializerState::Annotation(Some(
21915                                deserializer,
21916                            )));
21917                            *self.state = FacetTypeDeserializerState::Done__;
21918                        }
21919                        ElementHandlerOutput::Break { .. } => {
21920                            *self.state =
21921                                FacetTypeDeserializerState::Annotation(Some(deserializer));
21922                        }
21923                    }
21924                    ret
21925                }
21926            })
21927        }
21928    }
21929    impl<'de> Deserializer<'de, super::FacetType> for FacetTypeDeserializer {
21930        fn init<R>(reader: &R, event: Event<'de>) -> DeserializerResult<'de, super::FacetType>
21931        where
21932            R: DeserializeReader,
21933        {
21934            reader.init_deserializer_from_start_event(event, Self::from_bytes_start)
21935        }
21936        fn next<R>(
21937            mut self,
21938            reader: &R,
21939            event: Event<'de>,
21940        ) -> DeserializerResult<'de, super::FacetType>
21941        where
21942            R: DeserializeReader,
21943        {
21944            use FacetTypeDeserializerState as S;
21945            let mut event = event;
21946            let mut fallback = None;
21947            let mut allow_any_element = false;
21948            let (event, allow_any) = loop {
21949                let state = replace(&mut *self.state, S::Unknown__);
21950                event = match (state, event) {
21951                    (S::Annotation(Some(deserializer)), event) => {
21952                        let output = deserializer.next(reader, event)?;
21953                        match self.handle_annotation(reader, output, &mut fallback)? {
21954                            ElementHandlerOutput::Continue { event, allow_any } => {
21955                                allow_any_element = allow_any_element || allow_any;
21956                                event
21957                            }
21958                            ElementHandlerOutput::Break { event, allow_any } => {
21959                                break (event, allow_any)
21960                            }
21961                        }
21962                    }
21963                    (_, Event::End(_)) => {
21964                        if let Some(fallback) = fallback.take() {
21965                            self.finish_state(reader, fallback)?;
21966                        }
21967                        return Ok(DeserializerOutput {
21968                            artifact: DeserializerArtifact::Data(self.finish(reader)?),
21969                            event: DeserializerEvent::None,
21970                            allow_any: false,
21971                        });
21972                    }
21973                    (S::Init__, event) => {
21974                        fallback.get_or_insert(S::Init__);
21975                        *self.state = FacetTypeDeserializerState::Annotation(None);
21976                        event
21977                    }
21978                    (S::Annotation(None), event @ (Event::Start(_) | Event::Empty(_))) => {
21979                        if reader.check_start_tag_name(&event, Some(&super::NS_XS), b"annotation") {
21980                            let output =
21981                                <super::Annotation as WithDeserializer>::Deserializer::init(
21982                                    reader, event,
21983                                )?;
21984                            match self.handle_annotation(reader, output, &mut fallback)? {
21985                                ElementHandlerOutput::Continue { event, allow_any } => {
21986                                    allow_any_element = allow_any_element || allow_any;
21987                                    event
21988                                }
21989                                ElementHandlerOutput::Break { event, allow_any } => {
21990                                    break (event, allow_any)
21991                                }
21992                            }
21993                        } else {
21994                            *self.state = S::Done__;
21995                            allow_any_element = true;
21996                            fallback.get_or_insert(S::Annotation(None));
21997                            event
21998                        }
21999                    }
22000                    (S::Done__, event) => {
22001                        fallback.get_or_insert(S::Done__);
22002                        break (DeserializerEvent::Continue(event), allow_any_element);
22003                    }
22004                    (S::Unknown__, _) => unreachable!(),
22005                    (state, event) => {
22006                        *self.state = state;
22007                        break (DeserializerEvent::Break(event), false);
22008                    }
22009                }
22010            };
22011            if let Some(fallback) = fallback {
22012                *self.state = fallback;
22013            }
22014            Ok(DeserializerOutput {
22015                artifact: DeserializerArtifact::Deserializer(self),
22016                event,
22017                allow_any,
22018            })
22019        }
22020        fn finish<R>(mut self, reader: &R) -> Result<super::FacetType, Error>
22021        where
22022            R: DeserializeReader,
22023        {
22024            let state = replace(&mut *self.state, FacetTypeDeserializerState::Unknown__);
22025            self.finish_state(reader, state)?;
22026            Ok(super::FacetType {
22027                id: self.id,
22028                value: self.value,
22029                fixed: self.fixed,
22030                annotation: self.annotation,
22031            })
22032        }
22033    }
22034}