Skip to main content

ooxml_wml/
generated_serializers.rs

1// ToXml serializers for generated types.
2// Enables roundtrip XML serialization alongside FromXml parsers.
3
4#![allow(unused_variables, unused_assignments, unreachable_code, unused_imports)]
5#![allow(clippy::single_match)]
6#![allow(clippy::match_single_binding)]
7#![allow(clippy::explicit_counter_loop)]
8
9use super::generated::*;
10pub use ooxml_xml::{SerializeError, ToXml};
11use quick_xml::Writer;
12use quick_xml::events::{BytesEnd, BytesStart, BytesText, Event};
13use std::io::Write;
14
15#[allow(dead_code)]
16/// Encode bytes as a hex string.
17fn encode_hex(bytes: &[u8]) -> String {
18    bytes.iter().map(|b| format!("{:02X}", b)).collect()
19}
20
21#[allow(dead_code)]
22/// Encode bytes as a base64 string.
23fn encode_base64(bytes: &[u8]) -> String {
24    use base64::Engine;
25    base64::engine::general_purpose::STANDARD.encode(bytes)
26}
27
28impl ToXml for CTEmpty {
29    fn is_empty_element(&self) -> bool {
30        true
31    }
32}
33
34impl ToXml for OnOffElement {
35    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
36        #[allow(unused_mut)]
37        let mut start = start;
38        if let Some(ref val) = self.value {
39            {
40                let s = val.to_string();
41                start.push_attribute(("w:val", s.as_str()));
42            }
43        }
44        #[cfg(feature = "extra-attrs")]
45        for (key, value) in &self.extra_attrs {
46            start.push_attribute((key.as_str(), value.as_str()));
47        }
48        start
49    }
50
51    fn is_empty_element(&self) -> bool {
52        true
53    }
54}
55
56impl ToXml for LongHexNumberElement {
57    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
58        #[allow(unused_mut)]
59        let mut start = start;
60        {
61            let val = &self.value;
62            {
63                let hex = encode_hex(val);
64                start.push_attribute(("w:val", hex.as_str()));
65            }
66        }
67        #[cfg(feature = "extra-attrs")]
68        for (key, value) in &self.extra_attrs {
69            start.push_attribute((key.as_str(), value.as_str()));
70        }
71        start
72    }
73
74    fn is_empty_element(&self) -> bool {
75        true
76    }
77}
78
79impl ToXml for CTCharset {
80    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
81        #[allow(unused_mut)]
82        let mut start = start;
83        if let Some(ref val) = self.value {
84            {
85                let hex = encode_hex(val);
86                start.push_attribute(("w:val", hex.as_str()));
87            }
88        }
89        #[cfg(feature = "wml-styling")]
90        if let Some(ref val) = self.character_set {
91            start.push_attribute(("w:characterSet", val.as_str()));
92        }
93        #[cfg(feature = "extra-attrs")]
94        for (key, value) in &self.extra_attrs {
95            start.push_attribute((key.as_str(), value.as_str()));
96        }
97        start
98    }
99
100    fn is_empty_element(&self) -> bool {
101        true
102    }
103}
104
105impl ToXml for CTDecimalNumber {
106    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
107        #[allow(unused_mut)]
108        let mut start = start;
109        {
110            let val = &self.value;
111            {
112                let s = val.to_string();
113                start.push_attribute(("w:val", s.as_str()));
114            }
115        }
116        #[cfg(feature = "extra-attrs")]
117        for (key, value) in &self.extra_attrs {
118            start.push_attribute((key.as_str(), value.as_str()));
119        }
120        start
121    }
122
123    fn is_empty_element(&self) -> bool {
124        true
125    }
126}
127
128impl ToXml for UnsignedDecimalNumberElement {
129    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
130        #[allow(unused_mut)]
131        let mut start = start;
132        {
133            let val = &self.value;
134            {
135                let s = val.to_string();
136                start.push_attribute(("w:val", s.as_str()));
137            }
138        }
139        #[cfg(feature = "extra-attrs")]
140        for (key, value) in &self.extra_attrs {
141            start.push_attribute((key.as_str(), value.as_str()));
142        }
143        start
144    }
145
146    fn is_empty_element(&self) -> bool {
147        true
148    }
149}
150
151impl ToXml for CTDecimalNumberOrPrecent {
152    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
153        #[allow(unused_mut)]
154        let mut start = start;
155        {
156            let val = &self.value;
157            {
158                let s = val.to_string();
159                start.push_attribute(("w:val", s.as_str()));
160            }
161        }
162        #[cfg(feature = "extra-attrs")]
163        for (key, value) in &self.extra_attrs {
164            start.push_attribute((key.as_str(), value.as_str()));
165        }
166        start
167    }
168
169    fn is_empty_element(&self) -> bool {
170        true
171    }
172}
173
174impl ToXml for TwipsMeasureElement {
175    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
176        #[allow(unused_mut)]
177        let mut start = start;
178        {
179            let val = &self.value;
180            {
181                let s = val.to_string();
182                start.push_attribute(("w:val", s.as_str()));
183            }
184        }
185        #[cfg(feature = "extra-attrs")]
186        for (key, value) in &self.extra_attrs {
187            start.push_attribute((key.as_str(), value.as_str()));
188        }
189        start
190    }
191
192    fn is_empty_element(&self) -> bool {
193        true
194    }
195}
196
197impl ToXml for SignedTwipsMeasureElement {
198    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
199        #[allow(unused_mut)]
200        let mut start = start;
201        {
202            let val = &self.value;
203            {
204                let s = val.to_string();
205                start.push_attribute(("w:val", s.as_str()));
206            }
207        }
208        #[cfg(feature = "extra-attrs")]
209        for (key, value) in &self.extra_attrs {
210            start.push_attribute((key.as_str(), value.as_str()));
211        }
212        start
213    }
214
215    fn is_empty_element(&self) -> bool {
216        true
217    }
218}
219
220impl ToXml for PixelsMeasureElement {
221    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
222        #[allow(unused_mut)]
223        let mut start = start;
224        {
225            let val = &self.value;
226            {
227                let s = val.to_string();
228                start.push_attribute(("w:val", s.as_str()));
229            }
230        }
231        #[cfg(feature = "extra-attrs")]
232        for (key, value) in &self.extra_attrs {
233            start.push_attribute((key.as_str(), value.as_str()));
234        }
235        start
236    }
237
238    fn is_empty_element(&self) -> bool {
239        true
240    }
241}
242
243impl ToXml for HpsMeasureElement {
244    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
245        #[allow(unused_mut)]
246        let mut start = start;
247        {
248            let val = &self.value;
249            {
250                let s = val.to_string();
251                start.push_attribute(("w:val", s.as_str()));
252            }
253        }
254        #[cfg(feature = "extra-attrs")]
255        for (key, value) in &self.extra_attrs {
256            start.push_attribute((key.as_str(), value.as_str()));
257        }
258        start
259    }
260
261    fn is_empty_element(&self) -> bool {
262        true
263    }
264}
265
266impl ToXml for SignedHpsMeasureElement {
267    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
268        #[allow(unused_mut)]
269        let mut start = start;
270        {
271            let val = &self.value;
272            {
273                let s = val.to_string();
274                start.push_attribute(("w:val", s.as_str()));
275            }
276        }
277        #[cfg(feature = "extra-attrs")]
278        for (key, value) in &self.extra_attrs {
279            start.push_attribute((key.as_str(), value.as_str()));
280        }
281        start
282    }
283
284    fn is_empty_element(&self) -> bool {
285        true
286    }
287}
288
289impl ToXml for MacroNameElement {
290    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
291        #[allow(unused_mut)]
292        let mut start = start;
293        {
294            let val = &self.value;
295            start.push_attribute(("w:val", val.as_str()));
296        }
297        #[cfg(feature = "extra-attrs")]
298        for (key, value) in &self.extra_attrs {
299            start.push_attribute((key.as_str(), value.as_str()));
300        }
301        start
302    }
303
304    fn is_empty_element(&self) -> bool {
305        true
306    }
307}
308
309impl ToXml for CTString {
310    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
311        #[allow(unused_mut)]
312        let mut start = start;
313        {
314            let val = &self.value;
315            start.push_attribute(("w:val", val.as_str()));
316        }
317        #[cfg(feature = "extra-attrs")]
318        for (key, value) in &self.extra_attrs {
319            start.push_attribute((key.as_str(), value.as_str()));
320        }
321        start
322    }
323
324    fn is_empty_element(&self) -> bool {
325        true
326    }
327}
328
329impl ToXml for TextScaleElement {
330    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
331        #[allow(unused_mut)]
332        let mut start = start;
333        if let Some(ref val) = self.value {
334            {
335                let s = val.to_string();
336                start.push_attribute(("w:val", s.as_str()));
337            }
338        }
339        #[cfg(feature = "extra-attrs")]
340        for (key, value) in &self.extra_attrs {
341            start.push_attribute((key.as_str(), value.as_str()));
342        }
343        start
344    }
345
346    fn is_empty_element(&self) -> bool {
347        true
348    }
349}
350
351impl ToXml for CTHighlight {
352    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
353        #[allow(unused_mut)]
354        let mut start = start;
355        {
356            let val = &self.value;
357            {
358                let s = val.to_string();
359                start.push_attribute(("w:val", s.as_str()));
360            }
361        }
362        #[cfg(feature = "extra-attrs")]
363        for (key, value) in &self.extra_attrs {
364            start.push_attribute((key.as_str(), value.as_str()));
365        }
366        start
367    }
368
369    fn is_empty_element(&self) -> bool {
370        true
371    }
372}
373
374impl ToXml for CTColor {
375    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
376        #[allow(unused_mut)]
377        let mut start = start;
378        {
379            let val = &self.value;
380            {
381                let s = val.to_string();
382                start.push_attribute(("w:val", s.as_str()));
383            }
384        }
385        #[cfg(feature = "wml-styling")]
386        if let Some(ref val) = self.theme_color {
387            {
388                let s = val.to_string();
389                start.push_attribute(("w:themeColor", s.as_str()));
390            }
391        }
392        #[cfg(feature = "wml-styling")]
393        if let Some(ref val) = self.theme_tint {
394            {
395                let hex = encode_hex(val);
396                start.push_attribute(("w:themeTint", hex.as_str()));
397            }
398        }
399        #[cfg(feature = "wml-styling")]
400        if let Some(ref val) = self.theme_shade {
401            {
402                let hex = encode_hex(val);
403                start.push_attribute(("w:themeShade", hex.as_str()));
404            }
405        }
406        #[cfg(feature = "extra-attrs")]
407        for (key, value) in &self.extra_attrs {
408            start.push_attribute((key.as_str(), value.as_str()));
409        }
410        start
411    }
412
413    fn is_empty_element(&self) -> bool {
414        true
415    }
416}
417
418impl ToXml for CTLang {
419    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
420        #[allow(unused_mut)]
421        let mut start = start;
422        {
423            let val = &self.value;
424            start.push_attribute(("w:val", val.as_str()));
425        }
426        #[cfg(feature = "extra-attrs")]
427        for (key, value) in &self.extra_attrs {
428            start.push_attribute((key.as_str(), value.as_str()));
429        }
430        start
431    }
432
433    fn is_empty_element(&self) -> bool {
434        true
435    }
436}
437
438impl ToXml for GuidElement {
439    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
440        #[allow(unused_mut)]
441        let mut start = start;
442        if let Some(ref val) = self.value {
443            start.push_attribute(("w:val", val.as_str()));
444        }
445        #[cfg(feature = "extra-attrs")]
446        for (key, value) in &self.extra_attrs {
447            start.push_attribute((key.as_str(), value.as_str()));
448        }
449        start
450    }
451
452    fn is_empty_element(&self) -> bool {
453        true
454    }
455}
456
457impl ToXml for CTUnderline {
458    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
459        #[allow(unused_mut)]
460        let mut start = start;
461        if let Some(ref val) = self.value {
462            {
463                let s = val.to_string();
464                start.push_attribute(("w:val", s.as_str()));
465            }
466        }
467        #[cfg(feature = "wml-styling")]
468        if let Some(ref val) = self.color {
469            {
470                let s = val.to_string();
471                start.push_attribute(("w:color", s.as_str()));
472            }
473        }
474        #[cfg(feature = "wml-styling")]
475        if let Some(ref val) = self.theme_color {
476            {
477                let s = val.to_string();
478                start.push_attribute(("w:themeColor", s.as_str()));
479            }
480        }
481        #[cfg(feature = "wml-styling")]
482        if let Some(ref val) = self.theme_tint {
483            {
484                let hex = encode_hex(val);
485                start.push_attribute(("w:themeTint", hex.as_str()));
486            }
487        }
488        #[cfg(feature = "wml-styling")]
489        if let Some(ref val) = self.theme_shade {
490            {
491                let hex = encode_hex(val);
492                start.push_attribute(("w:themeShade", hex.as_str()));
493            }
494        }
495        #[cfg(feature = "extra-attrs")]
496        for (key, value) in &self.extra_attrs {
497            start.push_attribute((key.as_str(), value.as_str()));
498        }
499        start
500    }
501
502    fn is_empty_element(&self) -> bool {
503        true
504    }
505}
506
507impl ToXml for CTTextEffect {
508    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
509        #[allow(unused_mut)]
510        let mut start = start;
511        {
512            let val = &self.value;
513            {
514                let s = val.to_string();
515                start.push_attribute(("w:val", s.as_str()));
516            }
517        }
518        #[cfg(feature = "extra-attrs")]
519        for (key, value) in &self.extra_attrs {
520            start.push_attribute((key.as_str(), value.as_str()));
521        }
522        start
523    }
524
525    fn is_empty_element(&self) -> bool {
526        true
527    }
528}
529
530impl ToXml for CTBorder {
531    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
532        #[allow(unused_mut)]
533        let mut start = start;
534        {
535            let val = &self.value;
536            {
537                let s = val.to_string();
538                start.push_attribute(("w:val", s.as_str()));
539            }
540        }
541        #[cfg(feature = "wml-styling")]
542        if let Some(ref val) = self.color {
543            {
544                let s = val.to_string();
545                start.push_attribute(("w:color", s.as_str()));
546            }
547        }
548        #[cfg(feature = "wml-styling")]
549        if let Some(ref val) = self.theme_color {
550            {
551                let s = val.to_string();
552                start.push_attribute(("w:themeColor", s.as_str()));
553            }
554        }
555        #[cfg(feature = "wml-styling")]
556        if let Some(ref val) = self.theme_tint {
557            {
558                let hex = encode_hex(val);
559                start.push_attribute(("w:themeTint", hex.as_str()));
560            }
561        }
562        #[cfg(feature = "wml-styling")]
563        if let Some(ref val) = self.theme_shade {
564            {
565                let hex = encode_hex(val);
566                start.push_attribute(("w:themeShade", hex.as_str()));
567            }
568        }
569        #[cfg(feature = "wml-styling")]
570        if let Some(ref val) = self.size {
571            {
572                let s = val.to_string();
573                start.push_attribute(("w:sz", s.as_str()));
574            }
575        }
576        #[cfg(feature = "wml-styling")]
577        if let Some(ref val) = self.space {
578            {
579                let s = val.to_string();
580                start.push_attribute(("w:space", s.as_str()));
581            }
582        }
583        #[cfg(feature = "wml-styling")]
584        if let Some(ref val) = self.shadow {
585            {
586                let s = val.to_string();
587                start.push_attribute(("w:shadow", s.as_str()));
588            }
589        }
590        #[cfg(feature = "wml-styling")]
591        if let Some(ref val) = self.frame {
592            {
593                let s = val.to_string();
594                start.push_attribute(("w:frame", s.as_str()));
595            }
596        }
597        #[cfg(feature = "extra-attrs")]
598        for (key, value) in &self.extra_attrs {
599            start.push_attribute((key.as_str(), value.as_str()));
600        }
601        start
602    }
603
604    fn is_empty_element(&self) -> bool {
605        true
606    }
607}
608
609impl ToXml for CTShd {
610    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
611        #[allow(unused_mut)]
612        let mut start = start;
613        {
614            let val = &self.value;
615            {
616                let s = val.to_string();
617                start.push_attribute(("w:val", s.as_str()));
618            }
619        }
620        #[cfg(feature = "wml-styling")]
621        if let Some(ref val) = self.color {
622            {
623                let s = val.to_string();
624                start.push_attribute(("w:color", s.as_str()));
625            }
626        }
627        #[cfg(feature = "wml-styling")]
628        if let Some(ref val) = self.theme_color {
629            {
630                let s = val.to_string();
631                start.push_attribute(("w:themeColor", s.as_str()));
632            }
633        }
634        #[cfg(feature = "wml-styling")]
635        if let Some(ref val) = self.theme_tint {
636            {
637                let hex = encode_hex(val);
638                start.push_attribute(("w:themeTint", hex.as_str()));
639            }
640        }
641        #[cfg(feature = "wml-styling")]
642        if let Some(ref val) = self.theme_shade {
643            {
644                let hex = encode_hex(val);
645                start.push_attribute(("w:themeShade", hex.as_str()));
646            }
647        }
648        #[cfg(feature = "wml-styling")]
649        if let Some(ref val) = self.fill {
650            {
651                let s = val.to_string();
652                start.push_attribute(("w:fill", s.as_str()));
653            }
654        }
655        #[cfg(feature = "wml-styling")]
656        if let Some(ref val) = self.theme_fill {
657            {
658                let s = val.to_string();
659                start.push_attribute(("w:themeFill", s.as_str()));
660            }
661        }
662        #[cfg(feature = "wml-styling")]
663        if let Some(ref val) = self.theme_fill_tint {
664            {
665                let hex = encode_hex(val);
666                start.push_attribute(("w:themeFillTint", hex.as_str()));
667            }
668        }
669        #[cfg(feature = "wml-styling")]
670        if let Some(ref val) = self.theme_fill_shade {
671            {
672                let hex = encode_hex(val);
673                start.push_attribute(("w:themeFillShade", hex.as_str()));
674            }
675        }
676        #[cfg(feature = "extra-attrs")]
677        for (key, value) in &self.extra_attrs {
678            start.push_attribute((key.as_str(), value.as_str()));
679        }
680        start
681    }
682
683    fn is_empty_element(&self) -> bool {
684        true
685    }
686}
687
688impl ToXml for CTVerticalAlignRun {
689    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
690        #[allow(unused_mut)]
691        let mut start = start;
692        {
693            let val = &self.value;
694            {
695                let s = val.to_string();
696                start.push_attribute(("w:val", s.as_str()));
697            }
698        }
699        #[cfg(feature = "extra-attrs")]
700        for (key, value) in &self.extra_attrs {
701            start.push_attribute((key.as_str(), value.as_str()));
702        }
703        start
704    }
705
706    fn is_empty_element(&self) -> bool {
707        true
708    }
709}
710
711impl ToXml for CTFitText {
712    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
713        #[allow(unused_mut)]
714        let mut start = start;
715        #[cfg(feature = "wml-styling")]
716        {
717            let val = &self.value;
718            {
719                let s = val.to_string();
720                start.push_attribute(("w:val", s.as_str()));
721            }
722        }
723        #[cfg(feature = "wml-styling")]
724        if let Some(ref val) = self.id {
725            {
726                let s = val.to_string();
727                start.push_attribute(("w:id", s.as_str()));
728            }
729        }
730        #[cfg(feature = "extra-attrs")]
731        for (key, value) in &self.extra_attrs {
732            start.push_attribute((key.as_str(), value.as_str()));
733        }
734        start
735    }
736
737    fn is_empty_element(&self) -> bool {
738        true
739    }
740}
741
742impl ToXml for CTEm {
743    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
744        #[allow(unused_mut)]
745        let mut start = start;
746        {
747            let val = &self.value;
748            {
749                let s = val.to_string();
750                start.push_attribute(("w:val", s.as_str()));
751            }
752        }
753        #[cfg(feature = "extra-attrs")]
754        for (key, value) in &self.extra_attrs {
755            start.push_attribute((key.as_str(), value.as_str()));
756        }
757        start
758    }
759
760    fn is_empty_element(&self) -> bool {
761        true
762    }
763}
764
765impl ToXml for LanguageElement {
766    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
767        #[allow(unused_mut)]
768        let mut start = start;
769        if let Some(ref val) = self.value {
770            start.push_attribute(("w:val", val.as_str()));
771        }
772        if let Some(ref val) = self.east_asia {
773            start.push_attribute(("w:eastAsia", val.as_str()));
774        }
775        if let Some(ref val) = self.bidi {
776            start.push_attribute(("w:bidi", val.as_str()));
777        }
778        #[cfg(feature = "extra-attrs")]
779        for (key, value) in &self.extra_attrs {
780            start.push_attribute((key.as_str(), value.as_str()));
781        }
782        start
783    }
784
785    fn is_empty_element(&self) -> bool {
786        true
787    }
788}
789
790impl ToXml for CTEastAsianLayout {
791    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
792        #[allow(unused_mut)]
793        let mut start = start;
794        #[cfg(feature = "wml-styling")]
795        if let Some(ref val) = self.id {
796            {
797                let s = val.to_string();
798                start.push_attribute(("w:id", s.as_str()));
799            }
800        }
801        #[cfg(feature = "wml-styling")]
802        if let Some(ref val) = self.combine {
803            {
804                let s = val.to_string();
805                start.push_attribute(("w:combine", s.as_str()));
806            }
807        }
808        #[cfg(feature = "wml-styling")]
809        if let Some(ref val) = self.combine_brackets {
810            {
811                let s = val.to_string();
812                start.push_attribute(("w:combineBrackets", s.as_str()));
813            }
814        }
815        #[cfg(feature = "wml-styling")]
816        if let Some(ref val) = self.vert {
817            {
818                let s = val.to_string();
819                start.push_attribute(("w:vert", s.as_str()));
820            }
821        }
822        #[cfg(feature = "wml-styling")]
823        if let Some(ref val) = self.vert_compress {
824            {
825                let s = val.to_string();
826                start.push_attribute(("w:vertCompress", s.as_str()));
827            }
828        }
829        #[cfg(feature = "extra-attrs")]
830        for (key, value) in &self.extra_attrs {
831            start.push_attribute((key.as_str(), value.as_str()));
832        }
833        start
834    }
835
836    fn is_empty_element(&self) -> bool {
837        true
838    }
839}
840
841impl ToXml for CTFramePr {
842    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
843        #[allow(unused_mut)]
844        let mut start = start;
845        #[cfg(feature = "wml-layout")]
846        if let Some(ref val) = self.drop_cap {
847            {
848                let s = val.to_string();
849                start.push_attribute(("w:dropCap", s.as_str()));
850            }
851        }
852        #[cfg(feature = "wml-layout")]
853        if let Some(ref val) = self.lines {
854            {
855                let s = val.to_string();
856                start.push_attribute(("w:lines", s.as_str()));
857            }
858        }
859        #[cfg(feature = "wml-layout")]
860        if let Some(ref val) = self.width {
861            {
862                let s = val.to_string();
863                start.push_attribute(("w:w", s.as_str()));
864            }
865        }
866        #[cfg(feature = "wml-layout")]
867        if let Some(ref val) = self.height {
868            {
869                let s = val.to_string();
870                start.push_attribute(("w:h", s.as_str()));
871            }
872        }
873        #[cfg(feature = "wml-layout")]
874        if let Some(ref val) = self.v_space {
875            {
876                let s = val.to_string();
877                start.push_attribute(("w:vSpace", s.as_str()));
878            }
879        }
880        #[cfg(feature = "wml-layout")]
881        if let Some(ref val) = self.h_space {
882            {
883                let s = val.to_string();
884                start.push_attribute(("w:hSpace", s.as_str()));
885            }
886        }
887        #[cfg(feature = "wml-layout")]
888        if let Some(ref val) = self.wrap {
889            {
890                let s = val.to_string();
891                start.push_attribute(("w:wrap", s.as_str()));
892            }
893        }
894        #[cfg(feature = "wml-layout")]
895        if let Some(ref val) = self.h_anchor {
896            {
897                let s = val.to_string();
898                start.push_attribute(("w:hAnchor", s.as_str()));
899            }
900        }
901        #[cfg(feature = "wml-layout")]
902        if let Some(ref val) = self.v_anchor {
903            {
904                let s = val.to_string();
905                start.push_attribute(("w:vAnchor", s.as_str()));
906            }
907        }
908        #[cfg(feature = "wml-layout")]
909        if let Some(ref val) = self.x {
910            {
911                let s = val.to_string();
912                start.push_attribute(("w:x", s.as_str()));
913            }
914        }
915        #[cfg(feature = "wml-layout")]
916        if let Some(ref val) = self.x_align {
917            {
918                let s = val.to_string();
919                start.push_attribute(("w:xAlign", s.as_str()));
920            }
921        }
922        #[cfg(feature = "wml-layout")]
923        if let Some(ref val) = self.y {
924            {
925                let s = val.to_string();
926                start.push_attribute(("w:y", s.as_str()));
927            }
928        }
929        #[cfg(feature = "wml-layout")]
930        if let Some(ref val) = self.y_align {
931            {
932                let s = val.to_string();
933                start.push_attribute(("w:yAlign", s.as_str()));
934            }
935        }
936        #[cfg(feature = "wml-layout")]
937        if let Some(ref val) = self.h_rule {
938            {
939                let s = val.to_string();
940                start.push_attribute(("w:hRule", s.as_str()));
941            }
942        }
943        #[cfg(feature = "wml-layout")]
944        if let Some(ref val) = self.anchor_lock {
945            {
946                let s = val.to_string();
947                start.push_attribute(("w:anchorLock", s.as_str()));
948            }
949        }
950        #[cfg(feature = "extra-attrs")]
951        for (key, value) in &self.extra_attrs {
952            start.push_attribute((key.as_str(), value.as_str()));
953        }
954        start
955    }
956
957    fn is_empty_element(&self) -> bool {
958        true
959    }
960}
961
962impl ToXml for CTTabStop {
963    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
964        #[allow(unused_mut)]
965        let mut start = start;
966        {
967            let val = &self.value;
968            {
969                let s = val.to_string();
970                start.push_attribute(("w:val", s.as_str()));
971            }
972        }
973        #[cfg(feature = "wml-styling")]
974        if let Some(ref val) = self.leader {
975            {
976                let s = val.to_string();
977                start.push_attribute(("w:leader", s.as_str()));
978            }
979        }
980        {
981            let val = &self.pos;
982            {
983                let s = val.to_string();
984                start.push_attribute(("w:pos", s.as_str()));
985            }
986        }
987        #[cfg(feature = "extra-attrs")]
988        for (key, value) in &self.extra_attrs {
989            start.push_attribute((key.as_str(), value.as_str()));
990        }
991        start
992    }
993
994    fn is_empty_element(&self) -> bool {
995        true
996    }
997}
998
999impl ToXml for CTSpacing {
1000    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
1001        #[allow(unused_mut)]
1002        let mut start = start;
1003        #[cfg(feature = "wml-styling")]
1004        if let Some(ref val) = self.before {
1005            {
1006                let s = val.to_string();
1007                start.push_attribute(("w:before", s.as_str()));
1008            }
1009        }
1010        #[cfg(feature = "wml-styling")]
1011        if let Some(ref val) = self.before_lines {
1012            {
1013                let s = val.to_string();
1014                start.push_attribute(("w:beforeLines", s.as_str()));
1015            }
1016        }
1017        #[cfg(feature = "wml-styling")]
1018        if let Some(ref val) = self.before_autospacing {
1019            {
1020                let s = val.to_string();
1021                start.push_attribute(("w:beforeAutospacing", s.as_str()));
1022            }
1023        }
1024        #[cfg(feature = "wml-styling")]
1025        if let Some(ref val) = self.after {
1026            {
1027                let s = val.to_string();
1028                start.push_attribute(("w:after", s.as_str()));
1029            }
1030        }
1031        #[cfg(feature = "wml-styling")]
1032        if let Some(ref val) = self.after_lines {
1033            {
1034                let s = val.to_string();
1035                start.push_attribute(("w:afterLines", s.as_str()));
1036            }
1037        }
1038        #[cfg(feature = "wml-styling")]
1039        if let Some(ref val) = self.after_autospacing {
1040            {
1041                let s = val.to_string();
1042                start.push_attribute(("w:afterAutospacing", s.as_str()));
1043            }
1044        }
1045        #[cfg(feature = "wml-styling")]
1046        if let Some(ref val) = self.line {
1047            {
1048                let s = val.to_string();
1049                start.push_attribute(("w:line", s.as_str()));
1050            }
1051        }
1052        #[cfg(feature = "wml-styling")]
1053        if let Some(ref val) = self.line_rule {
1054            {
1055                let s = val.to_string();
1056                start.push_attribute(("w:lineRule", s.as_str()));
1057            }
1058        }
1059        #[cfg(feature = "extra-attrs")]
1060        for (key, value) in &self.extra_attrs {
1061            start.push_attribute((key.as_str(), value.as_str()));
1062        }
1063        start
1064    }
1065
1066    fn is_empty_element(&self) -> bool {
1067        true
1068    }
1069}
1070
1071impl ToXml for CTInd {
1072    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
1073        #[allow(unused_mut)]
1074        let mut start = start;
1075        #[cfg(feature = "wml-styling")]
1076        if let Some(ref val) = self.start {
1077            {
1078                let s = val.to_string();
1079                start.push_attribute(("w:start", s.as_str()));
1080            }
1081        }
1082        #[cfg(feature = "wml-styling")]
1083        if let Some(ref val) = self.start_chars {
1084            {
1085                let s = val.to_string();
1086                start.push_attribute(("w:startChars", s.as_str()));
1087            }
1088        }
1089        #[cfg(feature = "wml-styling")]
1090        if let Some(ref val) = self.end {
1091            {
1092                let s = val.to_string();
1093                start.push_attribute(("w:end", s.as_str()));
1094            }
1095        }
1096        #[cfg(feature = "wml-styling")]
1097        if let Some(ref val) = self.end_chars {
1098            {
1099                let s = val.to_string();
1100                start.push_attribute(("w:endChars", s.as_str()));
1101            }
1102        }
1103        #[cfg(feature = "wml-styling")]
1104        if let Some(ref val) = self.left {
1105            {
1106                let s = val.to_string();
1107                start.push_attribute(("w:left", s.as_str()));
1108            }
1109        }
1110        #[cfg(feature = "wml-styling")]
1111        if let Some(ref val) = self.left_chars {
1112            {
1113                let s = val.to_string();
1114                start.push_attribute(("w:leftChars", s.as_str()));
1115            }
1116        }
1117        #[cfg(feature = "wml-styling")]
1118        if let Some(ref val) = self.right {
1119            {
1120                let s = val.to_string();
1121                start.push_attribute(("w:right", s.as_str()));
1122            }
1123        }
1124        #[cfg(feature = "wml-styling")]
1125        if let Some(ref val) = self.right_chars {
1126            {
1127                let s = val.to_string();
1128                start.push_attribute(("w:rightChars", s.as_str()));
1129            }
1130        }
1131        #[cfg(feature = "wml-styling")]
1132        if let Some(ref val) = self.hanging {
1133            {
1134                let s = val.to_string();
1135                start.push_attribute(("w:hanging", s.as_str()));
1136            }
1137        }
1138        #[cfg(feature = "wml-styling")]
1139        if let Some(ref val) = self.hanging_chars {
1140            {
1141                let s = val.to_string();
1142                start.push_attribute(("w:hangingChars", s.as_str()));
1143            }
1144        }
1145        #[cfg(feature = "wml-styling")]
1146        if let Some(ref val) = self.first_line {
1147            {
1148                let s = val.to_string();
1149                start.push_attribute(("w:firstLine", s.as_str()));
1150            }
1151        }
1152        #[cfg(feature = "wml-styling")]
1153        if let Some(ref val) = self.first_line_chars {
1154            {
1155                let s = val.to_string();
1156                start.push_attribute(("w:firstLineChars", s.as_str()));
1157            }
1158        }
1159        #[cfg(feature = "extra-attrs")]
1160        for (key, value) in &self.extra_attrs {
1161            start.push_attribute((key.as_str(), value.as_str()));
1162        }
1163        start
1164    }
1165
1166    fn is_empty_element(&self) -> bool {
1167        true
1168    }
1169}
1170
1171impl ToXml for CTJc {
1172    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
1173        #[allow(unused_mut)]
1174        let mut start = start;
1175        {
1176            let val = &self.value;
1177            {
1178                let s = val.to_string();
1179                start.push_attribute(("w:val", s.as_str()));
1180            }
1181        }
1182        #[cfg(feature = "extra-attrs")]
1183        for (key, value) in &self.extra_attrs {
1184            start.push_attribute((key.as_str(), value.as_str()));
1185        }
1186        start
1187    }
1188
1189    fn is_empty_element(&self) -> bool {
1190        true
1191    }
1192}
1193
1194impl ToXml for CTJcTable {
1195    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
1196        #[allow(unused_mut)]
1197        let mut start = start;
1198        {
1199            let val = &self.value;
1200            {
1201                let s = val.to_string();
1202                start.push_attribute(("w:val", s.as_str()));
1203            }
1204        }
1205        #[cfg(feature = "extra-attrs")]
1206        for (key, value) in &self.extra_attrs {
1207            start.push_attribute((key.as_str(), value.as_str()));
1208        }
1209        start
1210    }
1211
1212    fn is_empty_element(&self) -> bool {
1213        true
1214    }
1215}
1216
1217impl ToXml for CTView {
1218    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
1219        #[allow(unused_mut)]
1220        let mut start = start;
1221        {
1222            let val = &self.value;
1223            {
1224                let s = val.to_string();
1225                start.push_attribute(("w:val", s.as_str()));
1226            }
1227        }
1228        #[cfg(feature = "extra-attrs")]
1229        for (key, value) in &self.extra_attrs {
1230            start.push_attribute((key.as_str(), value.as_str()));
1231        }
1232        start
1233    }
1234
1235    fn is_empty_element(&self) -> bool {
1236        true
1237    }
1238}
1239
1240impl ToXml for CTZoom {
1241    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
1242        #[allow(unused_mut)]
1243        let mut start = start;
1244        #[cfg(feature = "wml-settings")]
1245        if let Some(ref val) = self.value {
1246            {
1247                let s = val.to_string();
1248                start.push_attribute(("w:val", s.as_str()));
1249            }
1250        }
1251        {
1252            let val = &self.percent;
1253            {
1254                let s = val.to_string();
1255                start.push_attribute(("w:percent", s.as_str()));
1256            }
1257        }
1258        #[cfg(feature = "extra-attrs")]
1259        for (key, value) in &self.extra_attrs {
1260            start.push_attribute((key.as_str(), value.as_str()));
1261        }
1262        start
1263    }
1264
1265    fn is_empty_element(&self) -> bool {
1266        true
1267    }
1268}
1269
1270impl ToXml for CTWritingStyle {
1271    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
1272        #[allow(unused_mut)]
1273        let mut start = start;
1274        #[cfg(feature = "wml-settings")]
1275        {
1276            let val = &self.lang;
1277            start.push_attribute(("w:lang", val.as_str()));
1278        }
1279        #[cfg(feature = "wml-settings")]
1280        {
1281            let val = &self.vendor_i_d;
1282            start.push_attribute(("w:vendorID", val.as_str()));
1283        }
1284        #[cfg(feature = "wml-settings")]
1285        {
1286            let val = &self.dll_version;
1287            start.push_attribute(("w:dllVersion", val.as_str()));
1288        }
1289        #[cfg(feature = "wml-settings")]
1290        if let Some(ref val) = self.nl_check {
1291            {
1292                let s = val.to_string();
1293                start.push_attribute(("w:nlCheck", s.as_str()));
1294            }
1295        }
1296        #[cfg(feature = "wml-settings")]
1297        {
1298            let val = &self.check_style;
1299            {
1300                let s = val.to_string();
1301                start.push_attribute(("w:checkStyle", s.as_str()));
1302            }
1303        }
1304        #[cfg(feature = "wml-settings")]
1305        {
1306            let val = &self.app_name;
1307            start.push_attribute(("w:appName", val.as_str()));
1308        }
1309        #[cfg(feature = "extra-attrs")]
1310        for (key, value) in &self.extra_attrs {
1311            start.push_attribute((key.as_str(), value.as_str()));
1312        }
1313        start
1314    }
1315
1316    fn is_empty_element(&self) -> bool {
1317        true
1318    }
1319}
1320
1321impl ToXml for CTProof {
1322    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
1323        #[allow(unused_mut)]
1324        let mut start = start;
1325        #[cfg(feature = "wml-settings")]
1326        if let Some(ref val) = self.spelling {
1327            {
1328                let s = val.to_string();
1329                start.push_attribute(("w:spelling", s.as_str()));
1330            }
1331        }
1332        #[cfg(feature = "wml-settings")]
1333        if let Some(ref val) = self.grammar {
1334            {
1335                let s = val.to_string();
1336                start.push_attribute(("w:grammar", s.as_str()));
1337            }
1338        }
1339        #[cfg(feature = "extra-attrs")]
1340        for (key, value) in &self.extra_attrs {
1341            start.push_attribute((key.as_str(), value.as_str()));
1342        }
1343        start
1344    }
1345
1346    fn is_empty_element(&self) -> bool {
1347        true
1348    }
1349}
1350
1351impl ToXml for DocTypeElement {
1352    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
1353        #[allow(unused_mut)]
1354        let mut start = start;
1355        {
1356            let val = &self.value;
1357            start.push_attribute(("w:val", val.as_str()));
1358        }
1359        #[cfg(feature = "extra-attrs")]
1360        for (key, value) in &self.extra_attrs {
1361            start.push_attribute((key.as_str(), value.as_str()));
1362        }
1363        start
1364    }
1365
1366    fn is_empty_element(&self) -> bool {
1367        true
1368    }
1369}
1370
1371impl ToXml for WAGPassword {
1372    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
1373        #[allow(unused_mut)]
1374        let mut start = start;
1375        if let Some(ref val) = self.algorithm_name {
1376            start.push_attribute(("w:algorithmName", val.as_str()));
1377        }
1378        if let Some(ref val) = self.hash_value {
1379            {
1380                let b64 = encode_base64(val);
1381                start.push_attribute(("w:hashValue", b64.as_str()));
1382            }
1383        }
1384        if let Some(ref val) = self.salt_value {
1385            {
1386                let b64 = encode_base64(val);
1387                start.push_attribute(("w:saltValue", b64.as_str()));
1388            }
1389        }
1390        if let Some(ref val) = self.spin_count {
1391            {
1392                let s = val.to_string();
1393                start.push_attribute(("w:spinCount", s.as_str()));
1394            }
1395        }
1396        #[cfg(feature = "extra-attrs")]
1397        for (key, value) in &self.extra_attrs {
1398            start.push_attribute((key.as_str(), value.as_str()));
1399        }
1400        start
1401    }
1402
1403    fn is_empty_element(&self) -> bool {
1404        true
1405    }
1406}
1407
1408impl ToXml for WAGTransitionalPassword {
1409    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
1410        #[allow(unused_mut)]
1411        let mut start = start;
1412        if let Some(ref val) = self.crypt_provider_type {
1413            {
1414                let s = val.to_string();
1415                start.push_attribute(("w:cryptProviderType", s.as_str()));
1416            }
1417        }
1418        if let Some(ref val) = self.crypt_algorithm_class {
1419            {
1420                let s = val.to_string();
1421                start.push_attribute(("w:cryptAlgorithmClass", s.as_str()));
1422            }
1423        }
1424        if let Some(ref val) = self.crypt_algorithm_type {
1425            {
1426                let s = val.to_string();
1427                start.push_attribute(("w:cryptAlgorithmType", s.as_str()));
1428            }
1429        }
1430        if let Some(ref val) = self.crypt_algorithm_sid {
1431            {
1432                let s = val.to_string();
1433                start.push_attribute(("w:cryptAlgorithmSid", s.as_str()));
1434            }
1435        }
1436        if let Some(ref val) = self.crypt_spin_count {
1437            {
1438                let s = val.to_string();
1439                start.push_attribute(("w:cryptSpinCount", s.as_str()));
1440            }
1441        }
1442        if let Some(ref val) = self.crypt_provider {
1443            start.push_attribute(("w:cryptProvider", val.as_str()));
1444        }
1445        if let Some(ref val) = self.alg_id_ext {
1446            {
1447                let hex = encode_hex(val);
1448                start.push_attribute(("w:algIdExt", hex.as_str()));
1449            }
1450        }
1451        if let Some(ref val) = self.alg_id_ext_source {
1452            start.push_attribute(("w:algIdExtSource", val.as_str()));
1453        }
1454        if let Some(ref val) = self.crypt_provider_type_ext {
1455            {
1456                let hex = encode_hex(val);
1457                start.push_attribute(("w:cryptProviderTypeExt", hex.as_str()));
1458            }
1459        }
1460        if let Some(ref val) = self.crypt_provider_type_ext_source {
1461            start.push_attribute(("w:cryptProviderTypeExtSource", val.as_str()));
1462        }
1463        if let Some(ref val) = self.hash {
1464            {
1465                let b64 = encode_base64(val);
1466                start.push_attribute(("w:hash", b64.as_str()));
1467            }
1468        }
1469        if let Some(ref val) = self.salt {
1470            {
1471                let b64 = encode_base64(val);
1472                start.push_attribute(("w:salt", b64.as_str()));
1473            }
1474        }
1475        #[cfg(feature = "extra-attrs")]
1476        for (key, value) in &self.extra_attrs {
1477            start.push_attribute((key.as_str(), value.as_str()));
1478        }
1479        start
1480    }
1481
1482    fn is_empty_element(&self) -> bool {
1483        true
1484    }
1485}
1486
1487impl ToXml for CTDocProtect {
1488    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
1489        #[allow(unused_mut)]
1490        let mut start = start;
1491        #[cfg(feature = "wml-settings")]
1492        if let Some(ref val) = self.edit {
1493            {
1494                let s = val.to_string();
1495                start.push_attribute(("w:edit", s.as_str()));
1496            }
1497        }
1498        #[cfg(feature = "wml-settings")]
1499        if let Some(ref val) = self.formatting {
1500            {
1501                let s = val.to_string();
1502                start.push_attribute(("w:formatting", s.as_str()));
1503            }
1504        }
1505        #[cfg(feature = "wml-settings")]
1506        if let Some(ref val) = self.enforcement {
1507            {
1508                let s = val.to_string();
1509                start.push_attribute(("w:enforcement", s.as_str()));
1510            }
1511        }
1512        #[cfg(feature = "wml-settings")]
1513        if let Some(ref val) = self.algorithm_name {
1514            start.push_attribute(("w:algorithmName", val.as_str()));
1515        }
1516        #[cfg(feature = "wml-settings")]
1517        if let Some(ref val) = self.hash_value {
1518            {
1519                let b64 = encode_base64(val);
1520                start.push_attribute(("w:hashValue", b64.as_str()));
1521            }
1522        }
1523        #[cfg(feature = "wml-settings")]
1524        if let Some(ref val) = self.salt_value {
1525            {
1526                let b64 = encode_base64(val);
1527                start.push_attribute(("w:saltValue", b64.as_str()));
1528            }
1529        }
1530        #[cfg(feature = "wml-settings")]
1531        if let Some(ref val) = self.spin_count {
1532            {
1533                let s = val.to_string();
1534                start.push_attribute(("w:spinCount", s.as_str()));
1535            }
1536        }
1537        #[cfg(feature = "wml-settings")]
1538        if let Some(ref val) = self.crypt_provider_type {
1539            {
1540                let s = val.to_string();
1541                start.push_attribute(("w:cryptProviderType", s.as_str()));
1542            }
1543        }
1544        #[cfg(feature = "wml-settings")]
1545        if let Some(ref val) = self.crypt_algorithm_class {
1546            {
1547                let s = val.to_string();
1548                start.push_attribute(("w:cryptAlgorithmClass", s.as_str()));
1549            }
1550        }
1551        #[cfg(feature = "wml-settings")]
1552        if let Some(ref val) = self.crypt_algorithm_type {
1553            {
1554                let s = val.to_string();
1555                start.push_attribute(("w:cryptAlgorithmType", s.as_str()));
1556            }
1557        }
1558        #[cfg(feature = "wml-settings")]
1559        if let Some(ref val) = self.crypt_algorithm_sid {
1560            {
1561                let s = val.to_string();
1562                start.push_attribute(("w:cryptAlgorithmSid", s.as_str()));
1563            }
1564        }
1565        #[cfg(feature = "wml-settings")]
1566        if let Some(ref val) = self.crypt_spin_count {
1567            {
1568                let s = val.to_string();
1569                start.push_attribute(("w:cryptSpinCount", s.as_str()));
1570            }
1571        }
1572        #[cfg(feature = "wml-settings")]
1573        if let Some(ref val) = self.crypt_provider {
1574            start.push_attribute(("w:cryptProvider", val.as_str()));
1575        }
1576        #[cfg(feature = "wml-settings")]
1577        if let Some(ref val) = self.alg_id_ext {
1578            {
1579                let hex = encode_hex(val);
1580                start.push_attribute(("w:algIdExt", hex.as_str()));
1581            }
1582        }
1583        #[cfg(feature = "wml-settings")]
1584        if let Some(ref val) = self.alg_id_ext_source {
1585            start.push_attribute(("w:algIdExtSource", val.as_str()));
1586        }
1587        #[cfg(feature = "wml-settings")]
1588        if let Some(ref val) = self.crypt_provider_type_ext {
1589            {
1590                let hex = encode_hex(val);
1591                start.push_attribute(("w:cryptProviderTypeExt", hex.as_str()));
1592            }
1593        }
1594        #[cfg(feature = "wml-settings")]
1595        if let Some(ref val) = self.crypt_provider_type_ext_source {
1596            start.push_attribute(("w:cryptProviderTypeExtSource", val.as_str()));
1597        }
1598        #[cfg(feature = "wml-settings")]
1599        if let Some(ref val) = self.hash {
1600            {
1601                let b64 = encode_base64(val);
1602                start.push_attribute(("w:hash", b64.as_str()));
1603            }
1604        }
1605        #[cfg(feature = "wml-settings")]
1606        if let Some(ref val) = self.salt {
1607            {
1608                let b64 = encode_base64(val);
1609                start.push_attribute(("w:salt", b64.as_str()));
1610            }
1611        }
1612        #[cfg(feature = "extra-attrs")]
1613        for (key, value) in &self.extra_attrs {
1614            start.push_attribute((key.as_str(), value.as_str()));
1615        }
1616        start
1617    }
1618
1619    fn is_empty_element(&self) -> bool {
1620        true
1621    }
1622}
1623
1624impl ToXml for CTMailMergeDocType {
1625    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
1626        #[allow(unused_mut)]
1627        let mut start = start;
1628        {
1629            let val = &self.value;
1630            {
1631                let s = val.to_string();
1632                start.push_attribute(("w:val", s.as_str()));
1633            }
1634        }
1635        #[cfg(feature = "extra-attrs")]
1636        for (key, value) in &self.extra_attrs {
1637            start.push_attribute((key.as_str(), value.as_str()));
1638        }
1639        start
1640    }
1641
1642    fn is_empty_element(&self) -> bool {
1643        true
1644    }
1645}
1646
1647impl ToXml for MailMergeDataTypeElement {
1648    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
1649        #[allow(unused_mut)]
1650        let mut start = start;
1651        {
1652            let val = &self.value;
1653            start.push_attribute(("w:val", val.as_str()));
1654        }
1655        #[cfg(feature = "extra-attrs")]
1656        for (key, value) in &self.extra_attrs {
1657            start.push_attribute((key.as_str(), value.as_str()));
1658        }
1659        start
1660    }
1661
1662    fn is_empty_element(&self) -> bool {
1663        true
1664    }
1665}
1666
1667impl ToXml for CTMailMergeDest {
1668    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
1669        #[allow(unused_mut)]
1670        let mut start = start;
1671        {
1672            let val = &self.value;
1673            {
1674                let s = val.to_string();
1675                start.push_attribute(("w:val", s.as_str()));
1676            }
1677        }
1678        #[cfg(feature = "extra-attrs")]
1679        for (key, value) in &self.extra_attrs {
1680            start.push_attribute((key.as_str(), value.as_str()));
1681        }
1682        start
1683    }
1684
1685    fn is_empty_element(&self) -> bool {
1686        true
1687    }
1688}
1689
1690impl ToXml for CTMailMergeOdsoFMDFieldType {
1691    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
1692        #[allow(unused_mut)]
1693        let mut start = start;
1694        {
1695            let val = &self.value;
1696            {
1697                let s = val.to_string();
1698                start.push_attribute(("w:val", s.as_str()));
1699            }
1700        }
1701        #[cfg(feature = "extra-attrs")]
1702        for (key, value) in &self.extra_attrs {
1703            start.push_attribute((key.as_str(), value.as_str()));
1704        }
1705        start
1706    }
1707
1708    fn is_empty_element(&self) -> bool {
1709        true
1710    }
1711}
1712
1713impl ToXml for CTTrackChangesView {
1714    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
1715        #[allow(unused_mut)]
1716        let mut start = start;
1717        #[cfg(feature = "wml-settings")]
1718        if let Some(ref val) = self.markup {
1719            {
1720                let s = val.to_string();
1721                start.push_attribute(("w:markup", s.as_str()));
1722            }
1723        }
1724        #[cfg(feature = "wml-settings")]
1725        if let Some(ref val) = self.comments {
1726            {
1727                let s = val.to_string();
1728                start.push_attribute(("w:comments", s.as_str()));
1729            }
1730        }
1731        #[cfg(feature = "wml-settings")]
1732        if let Some(ref val) = self.ins_del {
1733            {
1734                let s = val.to_string();
1735                start.push_attribute(("w:insDel", s.as_str()));
1736            }
1737        }
1738        #[cfg(feature = "wml-settings")]
1739        if let Some(ref val) = self.formatting {
1740            {
1741                let s = val.to_string();
1742                start.push_attribute(("w:formatting", s.as_str()));
1743            }
1744        }
1745        #[cfg(feature = "wml-settings")]
1746        if let Some(ref val) = self.ink_annotations {
1747            {
1748                let s = val.to_string();
1749                start.push_attribute(("w:inkAnnotations", s.as_str()));
1750            }
1751        }
1752        #[cfg(feature = "extra-attrs")]
1753        for (key, value) in &self.extra_attrs {
1754            start.push_attribute((key.as_str(), value.as_str()));
1755        }
1756        start
1757    }
1758
1759    fn is_empty_element(&self) -> bool {
1760        true
1761    }
1762}
1763
1764impl ToXml for CTKinsoku {
1765    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
1766        #[allow(unused_mut)]
1767        let mut start = start;
1768        #[cfg(feature = "wml-styling")]
1769        {
1770            let val = &self.lang;
1771            start.push_attribute(("w:lang", val.as_str()));
1772        }
1773        #[cfg(feature = "wml-styling")]
1774        {
1775            let val = &self.value;
1776            start.push_attribute(("w:val", val.as_str()));
1777        }
1778        #[cfg(feature = "extra-attrs")]
1779        for (key, value) in &self.extra_attrs {
1780            start.push_attribute((key.as_str(), value.as_str()));
1781        }
1782        start
1783    }
1784
1785    fn is_empty_element(&self) -> bool {
1786        true
1787    }
1788}
1789
1790impl ToXml for CTTextDirection {
1791    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
1792        #[allow(unused_mut)]
1793        let mut start = start;
1794        {
1795            let val = &self.value;
1796            {
1797                let s = val.to_string();
1798                start.push_attribute(("w:val", s.as_str()));
1799            }
1800        }
1801        #[cfg(feature = "extra-attrs")]
1802        for (key, value) in &self.extra_attrs {
1803            start.push_attribute((key.as_str(), value.as_str()));
1804        }
1805        start
1806    }
1807
1808    fn is_empty_element(&self) -> bool {
1809        true
1810    }
1811}
1812
1813impl ToXml for CTTextAlignment {
1814    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
1815        #[allow(unused_mut)]
1816        let mut start = start;
1817        {
1818            let val = &self.value;
1819            {
1820                let s = val.to_string();
1821                start.push_attribute(("w:val", s.as_str()));
1822            }
1823        }
1824        #[cfg(feature = "extra-attrs")]
1825        for (key, value) in &self.extra_attrs {
1826            start.push_attribute((key.as_str(), value.as_str()));
1827        }
1828        start
1829    }
1830
1831    fn is_empty_element(&self) -> bool {
1832        true
1833    }
1834}
1835
1836impl ToXml for CTMarkup {
1837    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
1838        #[allow(unused_mut)]
1839        let mut start = start;
1840        {
1841            let val = &self.id;
1842            {
1843                let s = val.to_string();
1844                start.push_attribute(("w:id", s.as_str()));
1845            }
1846        }
1847        #[cfg(feature = "extra-attrs")]
1848        for (key, value) in &self.extra_attrs {
1849            start.push_attribute((key.as_str(), value.as_str()));
1850        }
1851        start
1852    }
1853
1854    fn is_empty_element(&self) -> bool {
1855        true
1856    }
1857}
1858
1859impl ToXml for CTTrackChange {
1860    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
1861        #[allow(unused_mut)]
1862        let mut start = start;
1863        {
1864            let val = &self.id;
1865            {
1866                let s = val.to_string();
1867                start.push_attribute(("w:id", s.as_str()));
1868            }
1869        }
1870        {
1871            let val = &self.author;
1872            start.push_attribute(("w:author", val.as_str()));
1873        }
1874        #[cfg(feature = "wml-track-changes")]
1875        if let Some(ref val) = self.date {
1876            start.push_attribute(("w:date", val.as_str()));
1877        }
1878        #[cfg(feature = "extra-attrs")]
1879        for (key, value) in &self.extra_attrs {
1880            start.push_attribute((key.as_str(), value.as_str()));
1881        }
1882        start
1883    }
1884
1885    fn is_empty_element(&self) -> bool {
1886        true
1887    }
1888}
1889
1890impl ToXml for CTCellMergeTrackChange {
1891    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
1892        #[allow(unused_mut)]
1893        let mut start = start;
1894        {
1895            let val = &self.id;
1896            {
1897                let s = val.to_string();
1898                start.push_attribute(("w:id", s.as_str()));
1899            }
1900        }
1901        {
1902            let val = &self.author;
1903            start.push_attribute(("w:author", val.as_str()));
1904        }
1905        if let Some(ref val) = self.date {
1906            start.push_attribute(("w:date", val.as_str()));
1907        }
1908        #[cfg(feature = "wml-track-changes")]
1909        if let Some(ref val) = self.vertical_merge {
1910            {
1911                let s = val.to_string();
1912                start.push_attribute(("w:vMerge", s.as_str()));
1913            }
1914        }
1915        #[cfg(feature = "wml-track-changes")]
1916        if let Some(ref val) = self.v_merge_orig {
1917            {
1918                let s = val.to_string();
1919                start.push_attribute(("w:vMergeOrig", s.as_str()));
1920            }
1921        }
1922        #[cfg(feature = "extra-attrs")]
1923        for (key, value) in &self.extra_attrs {
1924            start.push_attribute((key.as_str(), value.as_str()));
1925        }
1926        start
1927    }
1928
1929    fn is_empty_element(&self) -> bool {
1930        true
1931    }
1932}
1933
1934impl ToXml for CTTrackChangeRange {
1935    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
1936        #[allow(unused_mut)]
1937        let mut start = start;
1938        {
1939            let val = &self.id;
1940            {
1941                let s = val.to_string();
1942                start.push_attribute(("w:id", s.as_str()));
1943            }
1944        }
1945        {
1946            let val = &self.author;
1947            start.push_attribute(("w:author", val.as_str()));
1948        }
1949        if let Some(ref val) = self.date {
1950            start.push_attribute(("w:date", val.as_str()));
1951        }
1952        #[cfg(feature = "wml-settings")]
1953        if let Some(ref val) = self.displaced_by_custom_xml {
1954            {
1955                let s = val.to_string();
1956                start.push_attribute(("w:displacedByCustomXml", s.as_str()));
1957            }
1958        }
1959        #[cfg(feature = "extra-attrs")]
1960        for (key, value) in &self.extra_attrs {
1961            start.push_attribute((key.as_str(), value.as_str()));
1962        }
1963        start
1964    }
1965
1966    fn is_empty_element(&self) -> bool {
1967        true
1968    }
1969}
1970
1971impl ToXml for CTMarkupRange {
1972    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
1973        #[allow(unused_mut)]
1974        let mut start = start;
1975        {
1976            let val = &self.id;
1977            {
1978                let s = val.to_string();
1979                start.push_attribute(("w:id", s.as_str()));
1980            }
1981        }
1982        #[cfg(feature = "wml-settings")]
1983        if let Some(ref val) = self.displaced_by_custom_xml {
1984            {
1985                let s = val.to_string();
1986                start.push_attribute(("w:displacedByCustomXml", s.as_str()));
1987            }
1988        }
1989        #[cfg(feature = "extra-attrs")]
1990        for (key, value) in &self.extra_attrs {
1991            start.push_attribute((key.as_str(), value.as_str()));
1992        }
1993        start
1994    }
1995
1996    fn is_empty_element(&self) -> bool {
1997        true
1998    }
1999}
2000
2001impl ToXml for CTBookmarkRange {
2002    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
2003        #[allow(unused_mut)]
2004        let mut start = start;
2005        {
2006            let val = &self.id;
2007            {
2008                let s = val.to_string();
2009                start.push_attribute(("w:id", s.as_str()));
2010            }
2011        }
2012        if let Some(ref val) = self.displaced_by_custom_xml {
2013            {
2014                let s = val.to_string();
2015                start.push_attribute(("w:displacedByCustomXml", s.as_str()));
2016            }
2017        }
2018        #[cfg(feature = "wml-tables")]
2019        if let Some(ref val) = self.col_first {
2020            {
2021                let s = val.to_string();
2022                start.push_attribute(("w:colFirst", s.as_str()));
2023            }
2024        }
2025        #[cfg(feature = "wml-tables")]
2026        if let Some(ref val) = self.col_last {
2027            {
2028                let s = val.to_string();
2029                start.push_attribute(("w:colLast", s.as_str()));
2030            }
2031        }
2032        #[cfg(feature = "extra-attrs")]
2033        for (key, value) in &self.extra_attrs {
2034            start.push_attribute((key.as_str(), value.as_str()));
2035        }
2036        start
2037    }
2038
2039    fn is_empty_element(&self) -> bool {
2040        true
2041    }
2042}
2043
2044impl ToXml for Bookmark {
2045    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
2046        #[allow(unused_mut)]
2047        let mut start = start;
2048        {
2049            let val = &self.id;
2050            {
2051                let s = val.to_string();
2052                start.push_attribute(("w:id", s.as_str()));
2053            }
2054        }
2055        #[cfg(feature = "wml-settings")]
2056        if let Some(ref val) = self.displaced_by_custom_xml {
2057            {
2058                let s = val.to_string();
2059                start.push_attribute(("w:displacedByCustomXml", s.as_str()));
2060            }
2061        }
2062        #[cfg(feature = "wml-tables")]
2063        if let Some(ref val) = self.col_first {
2064            {
2065                let s = val.to_string();
2066                start.push_attribute(("w:colFirst", s.as_str()));
2067            }
2068        }
2069        #[cfg(feature = "wml-tables")]
2070        if let Some(ref val) = self.col_last {
2071            {
2072                let s = val.to_string();
2073                start.push_attribute(("w:colLast", s.as_str()));
2074            }
2075        }
2076        {
2077            let val = &self.name;
2078            start.push_attribute(("w:name", val.as_str()));
2079        }
2080        #[cfg(feature = "extra-attrs")]
2081        for (key, value) in &self.extra_attrs {
2082            start.push_attribute((key.as_str(), value.as_str()));
2083        }
2084        start
2085    }
2086
2087    fn is_empty_element(&self) -> bool {
2088        true
2089    }
2090}
2091
2092impl ToXml for CTMoveBookmark {
2093    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
2094        #[allow(unused_mut)]
2095        let mut start = start;
2096        {
2097            let val = &self.id;
2098            {
2099                let s = val.to_string();
2100                start.push_attribute(("w:id", s.as_str()));
2101            }
2102        }
2103        if let Some(ref val) = self.displaced_by_custom_xml {
2104            {
2105                let s = val.to_string();
2106                start.push_attribute(("w:displacedByCustomXml", s.as_str()));
2107            }
2108        }
2109        if let Some(ref val) = self.col_first {
2110            {
2111                let s = val.to_string();
2112                start.push_attribute(("w:colFirst", s.as_str()));
2113            }
2114        }
2115        if let Some(ref val) = self.col_last {
2116            {
2117                let s = val.to_string();
2118                start.push_attribute(("w:colLast", s.as_str()));
2119            }
2120        }
2121        {
2122            let val = &self.name;
2123            start.push_attribute(("w:name", val.as_str()));
2124        }
2125        #[cfg(feature = "wml-track-changes")]
2126        {
2127            let val = &self.author;
2128            start.push_attribute(("w:author", val.as_str()));
2129        }
2130        #[cfg(feature = "wml-track-changes")]
2131        {
2132            let val = &self.date;
2133            start.push_attribute(("w:date", val.as_str()));
2134        }
2135        #[cfg(feature = "extra-attrs")]
2136        for (key, value) in &self.extra_attrs {
2137            start.push_attribute((key.as_str(), value.as_str()));
2138        }
2139        start
2140    }
2141
2142    fn is_empty_element(&self) -> bool {
2143        true
2144    }
2145}
2146
2147impl ToXml for Comment {
2148    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
2149        #[allow(unused_mut)]
2150        let mut start = start;
2151        {
2152            let val = &self.id;
2153            {
2154                let s = val.to_string();
2155                start.push_attribute(("w:id", s.as_str()));
2156            }
2157        }
2158        {
2159            let val = &self.author;
2160            start.push_attribute(("w:author", val.as_str()));
2161        }
2162        #[cfg(feature = "wml-comments")]
2163        if let Some(ref val) = self.date {
2164            start.push_attribute(("w:date", val.as_str()));
2165        }
2166        #[cfg(feature = "wml-comments")]
2167        if let Some(ref val) = self.initials {
2168            start.push_attribute(("w:initials", val.as_str()));
2169        }
2170        #[cfg(feature = "extra-attrs")]
2171        for (key, value) in &self.extra_attrs {
2172            start.push_attribute((key.as_str(), value.as_str()));
2173        }
2174        start
2175    }
2176
2177    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
2178        #[cfg(feature = "extra-children")]
2179        let mut extra_iter = self.extra_children.iter().peekable();
2180        #[cfg(feature = "extra-children")]
2181        let mut emit_idx: usize = 0;
2182        for item in &self.block_content {
2183            #[cfg(feature = "extra-children")]
2184            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
2185                extra_iter
2186                    .next()
2187                    .unwrap()
2188                    .node
2189                    .write_to(writer)
2190                    .map_err(SerializeError::from)?;
2191            }
2192            item.write_element("", writer)?;
2193            #[cfg(feature = "extra-children")]
2194            {
2195                emit_idx += 1;
2196            }
2197        }
2198        #[cfg(feature = "extra-children")]
2199        for extra in extra_iter {
2200            extra.node.write_to(writer).map_err(SerializeError::from)?;
2201        }
2202        Ok(())
2203    }
2204
2205    fn is_empty_element(&self) -> bool {
2206        if !self.block_content.is_empty() {
2207            return false;
2208        }
2209        #[cfg(feature = "extra-children")]
2210        if !self.extra_children.is_empty() {
2211            return false;
2212        }
2213        true
2214    }
2215}
2216
2217impl ToXml for CTTrackChangeNumbering {
2218    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
2219        #[allow(unused_mut)]
2220        let mut start = start;
2221        {
2222            let val = &self.id;
2223            {
2224                let s = val.to_string();
2225                start.push_attribute(("w:id", s.as_str()));
2226            }
2227        }
2228        {
2229            let val = &self.author;
2230            start.push_attribute(("w:author", val.as_str()));
2231        }
2232        if let Some(ref val) = self.date {
2233            start.push_attribute(("w:date", val.as_str()));
2234        }
2235        #[cfg(feature = "wml-track-changes")]
2236        if let Some(ref val) = self.original {
2237            start.push_attribute(("w:original", val.as_str()));
2238        }
2239        #[cfg(feature = "extra-attrs")]
2240        for (key, value) in &self.extra_attrs {
2241            start.push_attribute((key.as_str(), value.as_str()));
2242        }
2243        start
2244    }
2245
2246    fn is_empty_element(&self) -> bool {
2247        true
2248    }
2249}
2250
2251impl ToXml for CTTblPrExChange {
2252    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
2253        #[allow(unused_mut)]
2254        let mut start = start;
2255        {
2256            let val = &self.id;
2257            {
2258                let s = val.to_string();
2259                start.push_attribute(("w:id", s.as_str()));
2260            }
2261        }
2262        {
2263            let val = &self.author;
2264            start.push_attribute(("w:author", val.as_str()));
2265        }
2266        if let Some(ref val) = self.date {
2267            start.push_attribute(("w:date", val.as_str()));
2268        }
2269        #[cfg(feature = "extra-attrs")]
2270        for (key, value) in &self.extra_attrs {
2271            start.push_attribute((key.as_str(), value.as_str()));
2272        }
2273        start
2274    }
2275
2276    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
2277        #[cfg(feature = "extra-children")]
2278        let mut extra_iter = self.extra_children.iter().peekable();
2279        #[cfg(feature = "extra-children")]
2280        let mut emit_idx: usize = 0;
2281        #[cfg(feature = "extra-children")]
2282        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
2283            extra_iter
2284                .next()
2285                .unwrap()
2286                .node
2287                .write_to(writer)
2288                .map_err(SerializeError::from)?;
2289        }
2290        #[cfg(feature = "wml-track-changes")]
2291        {
2292            let val = &self.tbl_pr_ex;
2293            val.write_element("w:tblPrEx", writer)?;
2294        }
2295        #[cfg(feature = "extra-children")]
2296        {
2297            emit_idx += 1;
2298        }
2299        #[cfg(feature = "extra-children")]
2300        for extra in extra_iter {
2301            extra.node.write_to(writer).map_err(SerializeError::from)?;
2302        }
2303        Ok(())
2304    }
2305
2306    fn is_empty_element(&self) -> bool {
2307        #[cfg(feature = "wml-track-changes")]
2308        return false;
2309        #[cfg(feature = "extra-children")]
2310        if !self.extra_children.is_empty() {
2311            return false;
2312        }
2313        true
2314    }
2315}
2316
2317impl ToXml for CTTcPrChange {
2318    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
2319        #[allow(unused_mut)]
2320        let mut start = start;
2321        {
2322            let val = &self.id;
2323            {
2324                let s = val.to_string();
2325                start.push_attribute(("w:id", s.as_str()));
2326            }
2327        }
2328        {
2329            let val = &self.author;
2330            start.push_attribute(("w:author", val.as_str()));
2331        }
2332        if let Some(ref val) = self.date {
2333            start.push_attribute(("w:date", val.as_str()));
2334        }
2335        #[cfg(feature = "extra-attrs")]
2336        for (key, value) in &self.extra_attrs {
2337            start.push_attribute((key.as_str(), value.as_str()));
2338        }
2339        start
2340    }
2341
2342    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
2343        #[cfg(feature = "extra-children")]
2344        let mut extra_iter = self.extra_children.iter().peekable();
2345        #[cfg(feature = "extra-children")]
2346        let mut emit_idx: usize = 0;
2347        #[cfg(feature = "extra-children")]
2348        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
2349            extra_iter
2350                .next()
2351                .unwrap()
2352                .node
2353                .write_to(writer)
2354                .map_err(SerializeError::from)?;
2355        }
2356        #[cfg(feature = "wml-track-changes")]
2357        {
2358            let val = &self.cell_properties;
2359            val.write_element("w:tcPr", writer)?;
2360        }
2361        #[cfg(feature = "extra-children")]
2362        {
2363            emit_idx += 1;
2364        }
2365        #[cfg(feature = "extra-children")]
2366        for extra in extra_iter {
2367            extra.node.write_to(writer).map_err(SerializeError::from)?;
2368        }
2369        Ok(())
2370    }
2371
2372    fn is_empty_element(&self) -> bool {
2373        #[cfg(feature = "wml-track-changes")]
2374        return false;
2375        #[cfg(feature = "extra-children")]
2376        if !self.extra_children.is_empty() {
2377            return false;
2378        }
2379        true
2380    }
2381}
2382
2383impl ToXml for CTTrPrChange {
2384    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
2385        #[allow(unused_mut)]
2386        let mut start = start;
2387        {
2388            let val = &self.id;
2389            {
2390                let s = val.to_string();
2391                start.push_attribute(("w:id", s.as_str()));
2392            }
2393        }
2394        {
2395            let val = &self.author;
2396            start.push_attribute(("w:author", val.as_str()));
2397        }
2398        if let Some(ref val) = self.date {
2399            start.push_attribute(("w:date", val.as_str()));
2400        }
2401        #[cfg(feature = "extra-attrs")]
2402        for (key, value) in &self.extra_attrs {
2403            start.push_attribute((key.as_str(), value.as_str()));
2404        }
2405        start
2406    }
2407
2408    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
2409        #[cfg(feature = "extra-children")]
2410        let mut extra_iter = self.extra_children.iter().peekable();
2411        #[cfg(feature = "extra-children")]
2412        let mut emit_idx: usize = 0;
2413        #[cfg(feature = "extra-children")]
2414        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
2415            extra_iter
2416                .next()
2417                .unwrap()
2418                .node
2419                .write_to(writer)
2420                .map_err(SerializeError::from)?;
2421        }
2422        #[cfg(feature = "wml-track-changes")]
2423        {
2424            let val = &self.row_properties;
2425            val.write_element("w:trPr", writer)?;
2426        }
2427        #[cfg(feature = "extra-children")]
2428        {
2429            emit_idx += 1;
2430        }
2431        #[cfg(feature = "extra-children")]
2432        for extra in extra_iter {
2433            extra.node.write_to(writer).map_err(SerializeError::from)?;
2434        }
2435        Ok(())
2436    }
2437
2438    fn is_empty_element(&self) -> bool {
2439        #[cfg(feature = "wml-track-changes")]
2440        return false;
2441        #[cfg(feature = "extra-children")]
2442        if !self.extra_children.is_empty() {
2443            return false;
2444        }
2445        true
2446    }
2447}
2448
2449impl ToXml for CTTblGridChange {
2450    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
2451        #[allow(unused_mut)]
2452        let mut start = start;
2453        {
2454            let val = &self.id;
2455            {
2456                let s = val.to_string();
2457                start.push_attribute(("w:id", s.as_str()));
2458            }
2459        }
2460        #[cfg(feature = "extra-attrs")]
2461        for (key, value) in &self.extra_attrs {
2462            start.push_attribute((key.as_str(), value.as_str()));
2463        }
2464        start
2465    }
2466
2467    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
2468        #[cfg(feature = "extra-children")]
2469        let mut extra_iter = self.extra_children.iter().peekable();
2470        #[cfg(feature = "extra-children")]
2471        let mut emit_idx: usize = 0;
2472        #[cfg(feature = "extra-children")]
2473        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
2474            extra_iter
2475                .next()
2476                .unwrap()
2477                .node
2478                .write_to(writer)
2479                .map_err(SerializeError::from)?;
2480        }
2481        #[cfg(feature = "wml-track-changes")]
2482        {
2483            let val = &self.tbl_grid;
2484            val.write_element("w:tblGrid", writer)?;
2485        }
2486        #[cfg(feature = "extra-children")]
2487        {
2488            emit_idx += 1;
2489        }
2490        #[cfg(feature = "extra-children")]
2491        for extra in extra_iter {
2492            extra.node.write_to(writer).map_err(SerializeError::from)?;
2493        }
2494        Ok(())
2495    }
2496
2497    fn is_empty_element(&self) -> bool {
2498        #[cfg(feature = "wml-track-changes")]
2499        return false;
2500        #[cfg(feature = "extra-children")]
2501        if !self.extra_children.is_empty() {
2502            return false;
2503        }
2504        true
2505    }
2506}
2507
2508impl ToXml for CTTblPrChange {
2509    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
2510        #[allow(unused_mut)]
2511        let mut start = start;
2512        {
2513            let val = &self.id;
2514            {
2515                let s = val.to_string();
2516                start.push_attribute(("w:id", s.as_str()));
2517            }
2518        }
2519        {
2520            let val = &self.author;
2521            start.push_attribute(("w:author", val.as_str()));
2522        }
2523        if let Some(ref val) = self.date {
2524            start.push_attribute(("w:date", val.as_str()));
2525        }
2526        #[cfg(feature = "extra-attrs")]
2527        for (key, value) in &self.extra_attrs {
2528            start.push_attribute((key.as_str(), value.as_str()));
2529        }
2530        start
2531    }
2532
2533    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
2534        #[cfg(feature = "extra-children")]
2535        let mut extra_iter = self.extra_children.iter().peekable();
2536        #[cfg(feature = "extra-children")]
2537        let mut emit_idx: usize = 0;
2538        #[cfg(feature = "extra-children")]
2539        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
2540            extra_iter
2541                .next()
2542                .unwrap()
2543                .node
2544                .write_to(writer)
2545                .map_err(SerializeError::from)?;
2546        }
2547        #[cfg(feature = "wml-track-changes")]
2548        {
2549            let val = &self.table_properties;
2550            val.write_element("w:tblPr", writer)?;
2551        }
2552        #[cfg(feature = "extra-children")]
2553        {
2554            emit_idx += 1;
2555        }
2556        #[cfg(feature = "extra-children")]
2557        for extra in extra_iter {
2558            extra.node.write_to(writer).map_err(SerializeError::from)?;
2559        }
2560        Ok(())
2561    }
2562
2563    fn is_empty_element(&self) -> bool {
2564        #[cfg(feature = "wml-track-changes")]
2565        return false;
2566        #[cfg(feature = "extra-children")]
2567        if !self.extra_children.is_empty() {
2568            return false;
2569        }
2570        true
2571    }
2572}
2573
2574impl ToXml for CTSectPrChange {
2575    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
2576        #[allow(unused_mut)]
2577        let mut start = start;
2578        {
2579            let val = &self.id;
2580            {
2581                let s = val.to_string();
2582                start.push_attribute(("w:id", s.as_str()));
2583            }
2584        }
2585        {
2586            let val = &self.author;
2587            start.push_attribute(("w:author", val.as_str()));
2588        }
2589        if let Some(ref val) = self.date {
2590            start.push_attribute(("w:date", val.as_str()));
2591        }
2592        #[cfg(feature = "extra-attrs")]
2593        for (key, value) in &self.extra_attrs {
2594            start.push_attribute((key.as_str(), value.as_str()));
2595        }
2596        start
2597    }
2598
2599    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
2600        #[cfg(feature = "extra-children")]
2601        let mut extra_iter = self.extra_children.iter().peekable();
2602        #[cfg(feature = "extra-children")]
2603        let mut emit_idx: usize = 0;
2604        #[cfg(feature = "extra-children")]
2605        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
2606            extra_iter
2607                .next()
2608                .unwrap()
2609                .node
2610                .write_to(writer)
2611                .map_err(SerializeError::from)?;
2612        }
2613        #[cfg(feature = "wml-track-changes")]
2614        if let Some(ref val) = self.sect_pr {
2615            val.write_element("w:sectPr", writer)?;
2616        }
2617        #[cfg(feature = "extra-children")]
2618        {
2619            emit_idx += 1;
2620        }
2621        #[cfg(feature = "extra-children")]
2622        for extra in extra_iter {
2623            extra.node.write_to(writer).map_err(SerializeError::from)?;
2624        }
2625        Ok(())
2626    }
2627
2628    fn is_empty_element(&self) -> bool {
2629        #[cfg(feature = "wml-track-changes")]
2630        if self.sect_pr.is_some() {
2631            return false;
2632        }
2633        #[cfg(feature = "extra-children")]
2634        if !self.extra_children.is_empty() {
2635            return false;
2636        }
2637        true
2638    }
2639}
2640
2641impl ToXml for CTPPrChange {
2642    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
2643        #[allow(unused_mut)]
2644        let mut start = start;
2645        {
2646            let val = &self.id;
2647            {
2648                let s = val.to_string();
2649                start.push_attribute(("w:id", s.as_str()));
2650            }
2651        }
2652        {
2653            let val = &self.author;
2654            start.push_attribute(("w:author", val.as_str()));
2655        }
2656        if let Some(ref val) = self.date {
2657            start.push_attribute(("w:date", val.as_str()));
2658        }
2659        #[cfg(feature = "extra-attrs")]
2660        for (key, value) in &self.extra_attrs {
2661            start.push_attribute((key.as_str(), value.as_str()));
2662        }
2663        start
2664    }
2665
2666    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
2667        #[cfg(feature = "extra-children")]
2668        let mut extra_iter = self.extra_children.iter().peekable();
2669        #[cfg(feature = "extra-children")]
2670        let mut emit_idx: usize = 0;
2671        #[cfg(feature = "extra-children")]
2672        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
2673            extra_iter
2674                .next()
2675                .unwrap()
2676                .node
2677                .write_to(writer)
2678                .map_err(SerializeError::from)?;
2679        }
2680        #[cfg(feature = "wml-track-changes")]
2681        {
2682            let val = &self.p_pr;
2683            val.write_element("w:pPr", writer)?;
2684        }
2685        #[cfg(feature = "extra-children")]
2686        {
2687            emit_idx += 1;
2688        }
2689        #[cfg(feature = "extra-children")]
2690        for extra in extra_iter {
2691            extra.node.write_to(writer).map_err(SerializeError::from)?;
2692        }
2693        Ok(())
2694    }
2695
2696    fn is_empty_element(&self) -> bool {
2697        #[cfg(feature = "wml-track-changes")]
2698        return false;
2699        #[cfg(feature = "extra-children")]
2700        if !self.extra_children.is_empty() {
2701            return false;
2702        }
2703        true
2704    }
2705}
2706
2707impl ToXml for CTRPrChange {
2708    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
2709        #[allow(unused_mut)]
2710        let mut start = start;
2711        {
2712            let val = &self.id;
2713            {
2714                let s = val.to_string();
2715                start.push_attribute(("w:id", s.as_str()));
2716            }
2717        }
2718        {
2719            let val = &self.author;
2720            start.push_attribute(("w:author", val.as_str()));
2721        }
2722        if let Some(ref val) = self.date {
2723            start.push_attribute(("w:date", val.as_str()));
2724        }
2725        #[cfg(feature = "extra-attrs")]
2726        for (key, value) in &self.extra_attrs {
2727            start.push_attribute((key.as_str(), value.as_str()));
2728        }
2729        start
2730    }
2731
2732    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
2733        #[cfg(feature = "extra-children")]
2734        let mut extra_iter = self.extra_children.iter().peekable();
2735        #[cfg(feature = "extra-children")]
2736        let mut emit_idx: usize = 0;
2737        #[cfg(feature = "extra-children")]
2738        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
2739            extra_iter
2740                .next()
2741                .unwrap()
2742                .node
2743                .write_to(writer)
2744                .map_err(SerializeError::from)?;
2745        }
2746        #[cfg(feature = "wml-track-changes")]
2747        {
2748            let val = &self.r_pr;
2749            val.write_element("w:rPr", writer)?;
2750        }
2751        #[cfg(feature = "extra-children")]
2752        {
2753            emit_idx += 1;
2754        }
2755        #[cfg(feature = "extra-children")]
2756        for extra in extra_iter {
2757            extra.node.write_to(writer).map_err(SerializeError::from)?;
2758        }
2759        Ok(())
2760    }
2761
2762    fn is_empty_element(&self) -> bool {
2763        #[cfg(feature = "wml-track-changes")]
2764        return false;
2765        #[cfg(feature = "extra-children")]
2766        if !self.extra_children.is_empty() {
2767            return false;
2768        }
2769        true
2770    }
2771}
2772
2773impl ToXml for CTParaRPrChange {
2774    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
2775        #[allow(unused_mut)]
2776        let mut start = start;
2777        {
2778            let val = &self.id;
2779            {
2780                let s = val.to_string();
2781                start.push_attribute(("w:id", s.as_str()));
2782            }
2783        }
2784        {
2785            let val = &self.author;
2786            start.push_attribute(("w:author", val.as_str()));
2787        }
2788        if let Some(ref val) = self.date {
2789            start.push_attribute(("w:date", val.as_str()));
2790        }
2791        #[cfg(feature = "extra-attrs")]
2792        for (key, value) in &self.extra_attrs {
2793            start.push_attribute((key.as_str(), value.as_str()));
2794        }
2795        start
2796    }
2797
2798    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
2799        #[cfg(feature = "extra-children")]
2800        let mut extra_iter = self.extra_children.iter().peekable();
2801        #[cfg(feature = "extra-children")]
2802        let mut emit_idx: usize = 0;
2803        #[cfg(feature = "extra-children")]
2804        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
2805            extra_iter
2806                .next()
2807                .unwrap()
2808                .node
2809                .write_to(writer)
2810                .map_err(SerializeError::from)?;
2811        }
2812        #[cfg(feature = "wml-track-changes")]
2813        {
2814            let val = &self.r_pr;
2815            val.write_element("w:rPr", writer)?;
2816        }
2817        #[cfg(feature = "extra-children")]
2818        {
2819            emit_idx += 1;
2820        }
2821        #[cfg(feature = "extra-children")]
2822        for extra in extra_iter {
2823            extra.node.write_to(writer).map_err(SerializeError::from)?;
2824        }
2825        Ok(())
2826    }
2827
2828    fn is_empty_element(&self) -> bool {
2829        #[cfg(feature = "wml-track-changes")]
2830        return false;
2831        #[cfg(feature = "extra-children")]
2832        if !self.extra_children.is_empty() {
2833            return false;
2834        }
2835        true
2836    }
2837}
2838
2839impl ToXml for CTRunTrackChange {
2840    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
2841        #[allow(unused_mut)]
2842        let mut start = start;
2843        #[cfg(feature = "wml-track-changes")]
2844        {
2845            let val = &self.id;
2846            {
2847                let s = val.to_string();
2848                start.push_attribute(("w:id", s.as_str()));
2849            }
2850        }
2851        #[cfg(feature = "wml-track-changes")]
2852        {
2853            let val = &self.author;
2854            start.push_attribute(("w:author", val.as_str()));
2855        }
2856        #[cfg(feature = "wml-track-changes")]
2857        if let Some(ref val) = self.date {
2858            start.push_attribute(("w:date", val.as_str()));
2859        }
2860        #[cfg(feature = "extra-attrs")]
2861        for (key, value) in &self.extra_attrs {
2862            start.push_attribute((key.as_str(), value.as_str()));
2863        }
2864        start
2865    }
2866
2867    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
2868        #[cfg(feature = "extra-children")]
2869        let mut extra_iter = self.extra_children.iter().peekable();
2870        #[cfg(feature = "extra-children")]
2871        let mut emit_idx: usize = 0;
2872        #[cfg(feature = "wml-track-changes")]
2873        for item in &self.run_content {
2874            #[cfg(feature = "extra-children")]
2875            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
2876                extra_iter
2877                    .next()
2878                    .unwrap()
2879                    .node
2880                    .write_to(writer)
2881                    .map_err(SerializeError::from)?;
2882            }
2883            item.write_element("", writer)?;
2884            #[cfg(feature = "extra-children")]
2885            {
2886                emit_idx += 1;
2887            }
2888        }
2889        #[cfg(feature = "extra-children")]
2890        for extra in extra_iter {
2891            extra.node.write_to(writer).map_err(SerializeError::from)?;
2892        }
2893        Ok(())
2894    }
2895
2896    fn is_empty_element(&self) -> bool {
2897        #[cfg(feature = "wml-track-changes")]
2898        if !self.run_content.is_empty() {
2899            return false;
2900        }
2901        #[cfg(feature = "extra-children")]
2902        if !self.extra_children.is_empty() {
2903            return false;
2904        }
2905        true
2906    }
2907}
2908
2909impl ToXml for MathContent {
2910    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
2911        #[cfg(feature = "extra-children")]
2912        let mut extra_iter = self.extra_children.iter().peekable();
2913        #[cfg(feature = "extra-children")]
2914        let mut emit_idx: usize = 0;
2915        for item in &self.p_content_base {
2916            #[cfg(feature = "extra-children")]
2917            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
2918                extra_iter
2919                    .next()
2920                    .unwrap()
2921                    .node
2922                    .write_to(writer)
2923                    .map_err(SerializeError::from)?;
2924            }
2925            item.write_element("", writer)?;
2926            #[cfg(feature = "extra-children")]
2927            {
2928                emit_idx += 1;
2929            }
2930        }
2931        for item in &self.content_run_content_base {
2932            #[cfg(feature = "extra-children")]
2933            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
2934                extra_iter
2935                    .next()
2936                    .unwrap()
2937                    .node
2938                    .write_to(writer)
2939                    .map_err(SerializeError::from)?;
2940            }
2941            item.write_element("", writer)?;
2942            #[cfg(feature = "extra-children")]
2943            {
2944                emit_idx += 1;
2945            }
2946        }
2947        #[cfg(feature = "extra-children")]
2948        for extra in extra_iter {
2949            extra.node.write_to(writer).map_err(SerializeError::from)?;
2950        }
2951        Ok(())
2952    }
2953
2954    fn is_empty_element(&self) -> bool {
2955        if !self.p_content_base.is_empty() {
2956            return false;
2957        }
2958        if !self.content_run_content_base.is_empty() {
2959            return false;
2960        }
2961        #[cfg(feature = "extra-children")]
2962        if !self.extra_children.is_empty() {
2963            return false;
2964        }
2965        true
2966    }
2967}
2968
2969impl ToXml for ParagraphContentBase {
2970    fn write_element<W: Write>(
2971        &self,
2972        _tag: &str,
2973        writer: &mut Writer<W>,
2974    ) -> Result<(), SerializeError> {
2975        match self {
2976            Self::CustomXml(inner) => inner.write_element("w:customXml", writer)?,
2977            Self::FldSimple(inner) => inner.write_element("w:fldSimple", writer)?,
2978            Self::Hyperlink(inner) => inner.write_element("w:hyperlink", writer)?,
2979        }
2980        Ok(())
2981    }
2982}
2983
2984impl ToXml for RunContentBase {
2985    fn write_element<W: Write>(
2986        &self,
2987        _tag: &str,
2988        writer: &mut Writer<W>,
2989    ) -> Result<(), SerializeError> {
2990        match self {
2991            Self::SmartTag(inner) => inner.write_element("w:smartTag", writer)?,
2992            Self::Sdt(inner) => inner.write_element("w:sdt", writer)?,
2993            Self::ProofErr(inner) => inner.write_element("w:proofErr", writer)?,
2994            Self::PermStart(inner) => inner.write_element("w:permStart", writer)?,
2995            Self::PermEnd(inner) => inner.write_element("w:permEnd", writer)?,
2996            Self::BookmarkStart(inner) => inner.write_element("w:bookmarkStart", writer)?,
2997            Self::BookmarkEnd(inner) => inner.write_element("w:bookmarkEnd", writer)?,
2998            Self::MoveFromRangeStart(inner) => {
2999                inner.write_element("w:moveFromRangeStart", writer)?
3000            }
3001            Self::MoveFromRangeEnd(inner) => inner.write_element("w:moveFromRangeEnd", writer)?,
3002            Self::MoveToRangeStart(inner) => inner.write_element("w:moveToRangeStart", writer)?,
3003            Self::MoveToRangeEnd(inner) => inner.write_element("w:moveToRangeEnd", writer)?,
3004            Self::CommentRangeStart(inner) => inner.write_element("w:commentRangeStart", writer)?,
3005            Self::CommentRangeEnd(inner) => inner.write_element("w:commentRangeEnd", writer)?,
3006            Self::CustomXmlInsRangeStart(inner) => {
3007                inner.write_element("w:customXmlInsRangeStart", writer)?
3008            }
3009            Self::CustomXmlInsRangeEnd(inner) => {
3010                inner.write_element("w:customXmlInsRangeEnd", writer)?
3011            }
3012            Self::CustomXmlDelRangeStart(inner) => {
3013                inner.write_element("w:customXmlDelRangeStart", writer)?
3014            }
3015            Self::CustomXmlDelRangeEnd(inner) => {
3016                inner.write_element("w:customXmlDelRangeEnd", writer)?
3017            }
3018            Self::CustomXmlMoveFromRangeStart(inner) => {
3019                inner.write_element("w:customXmlMoveFromRangeStart", writer)?
3020            }
3021            Self::CustomXmlMoveFromRangeEnd(inner) => {
3022                inner.write_element("w:customXmlMoveFromRangeEnd", writer)?
3023            }
3024            Self::CustomXmlMoveToRangeStart(inner) => {
3025                inner.write_element("w:customXmlMoveToRangeStart", writer)?
3026            }
3027            Self::CustomXmlMoveToRangeEnd(inner) => {
3028                inner.write_element("w:customXmlMoveToRangeEnd", writer)?
3029            }
3030            Self::Ins(inner) => inner.write_element("w:ins", writer)?,
3031            Self::Del(inner) => inner.write_element("w:del", writer)?,
3032            Self::MoveFrom(inner) => inner.write_element("w:moveFrom", writer)?,
3033            Self::MoveTo(inner) => inner.write_element("w:moveTo", writer)?,
3034        }
3035        Ok(())
3036    }
3037}
3038
3039impl ToXml for CellMarkup {
3040    fn write_element<W: Write>(
3041        &self,
3042        _tag: &str,
3043        writer: &mut Writer<W>,
3044    ) -> Result<(), SerializeError> {
3045        match self {
3046            Self::CellIns(inner) => inner.write_element("w:cellIns", writer)?,
3047            Self::CellDel(inner) => inner.write_element("w:cellDel", writer)?,
3048            Self::CellMerge(inner) => inner.write_element("w:cellMerge", writer)?,
3049        }
3050        Ok(())
3051    }
3052}
3053
3054impl ToXml for RangeMarkup {
3055    fn write_element<W: Write>(
3056        &self,
3057        _tag: &str,
3058        writer: &mut Writer<W>,
3059    ) -> Result<(), SerializeError> {
3060        match self {
3061            Self::BookmarkStart(inner) => inner.write_element("w:bookmarkStart", writer)?,
3062            Self::BookmarkEnd(inner) => inner.write_element("w:bookmarkEnd", writer)?,
3063            Self::MoveFromRangeStart(inner) => {
3064                inner.write_element("w:moveFromRangeStart", writer)?
3065            }
3066            Self::MoveFromRangeEnd(inner) => inner.write_element("w:moveFromRangeEnd", writer)?,
3067            Self::MoveToRangeStart(inner) => inner.write_element("w:moveToRangeStart", writer)?,
3068            Self::MoveToRangeEnd(inner) => inner.write_element("w:moveToRangeEnd", writer)?,
3069            Self::CommentRangeStart(inner) => inner.write_element("w:commentRangeStart", writer)?,
3070            Self::CommentRangeEnd(inner) => inner.write_element("w:commentRangeEnd", writer)?,
3071            Self::CustomXmlInsRangeStart(inner) => {
3072                inner.write_element("w:customXmlInsRangeStart", writer)?
3073            }
3074            Self::CustomXmlInsRangeEnd(inner) => {
3075                inner.write_element("w:customXmlInsRangeEnd", writer)?
3076            }
3077            Self::CustomXmlDelRangeStart(inner) => {
3078                inner.write_element("w:customXmlDelRangeStart", writer)?
3079            }
3080            Self::CustomXmlDelRangeEnd(inner) => {
3081                inner.write_element("w:customXmlDelRangeEnd", writer)?
3082            }
3083            Self::CustomXmlMoveFromRangeStart(inner) => {
3084                inner.write_element("w:customXmlMoveFromRangeStart", writer)?
3085            }
3086            Self::CustomXmlMoveFromRangeEnd(inner) => {
3087                inner.write_element("w:customXmlMoveFromRangeEnd", writer)?
3088            }
3089            Self::CustomXmlMoveToRangeStart(inner) => {
3090                inner.write_element("w:customXmlMoveToRangeStart", writer)?
3091            }
3092            Self::CustomXmlMoveToRangeEnd(inner) => {
3093                inner.write_element("w:customXmlMoveToRangeEnd", writer)?
3094            }
3095        }
3096        Ok(())
3097    }
3098}
3099
3100impl ToXml for NumberingProperties {
3101    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
3102        #[cfg(feature = "extra-children")]
3103        let mut extra_iter = self.extra_children.iter().peekable();
3104        #[cfg(feature = "extra-children")]
3105        let mut emit_idx: usize = 0;
3106        #[cfg(feature = "extra-children")]
3107        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
3108            extra_iter
3109                .next()
3110                .unwrap()
3111                .node
3112                .write_to(writer)
3113                .map_err(SerializeError::from)?;
3114        }
3115        #[cfg(feature = "wml-numbering")]
3116        if let Some(ref val) = self.ilvl {
3117            val.write_element("w:ilvl", writer)?;
3118        }
3119        #[cfg(feature = "extra-children")]
3120        {
3121            emit_idx += 1;
3122        }
3123        #[cfg(feature = "extra-children")]
3124        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
3125            extra_iter
3126                .next()
3127                .unwrap()
3128                .node
3129                .write_to(writer)
3130                .map_err(SerializeError::from)?;
3131        }
3132        #[cfg(feature = "wml-numbering")]
3133        if let Some(ref val) = self.num_id {
3134            val.write_element("w:numId", writer)?;
3135        }
3136        #[cfg(feature = "extra-children")]
3137        {
3138            emit_idx += 1;
3139        }
3140        #[cfg(feature = "extra-children")]
3141        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
3142            extra_iter
3143                .next()
3144                .unwrap()
3145                .node
3146                .write_to(writer)
3147                .map_err(SerializeError::from)?;
3148        }
3149        #[cfg(feature = "wml-track-changes")]
3150        if let Some(ref val) = self.numbering_change {
3151            val.write_element("w:numberingChange", writer)?;
3152        }
3153        #[cfg(feature = "extra-children")]
3154        {
3155            emit_idx += 1;
3156        }
3157        #[cfg(feature = "extra-children")]
3158        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
3159            extra_iter
3160                .next()
3161                .unwrap()
3162                .node
3163                .write_to(writer)
3164                .map_err(SerializeError::from)?;
3165        }
3166        #[cfg(feature = "wml-track-changes")]
3167        if let Some(ref val) = self.ins {
3168            val.write_element("w:ins", writer)?;
3169        }
3170        #[cfg(feature = "extra-children")]
3171        {
3172            emit_idx += 1;
3173        }
3174        #[cfg(feature = "extra-children")]
3175        for extra in extra_iter {
3176            extra.node.write_to(writer).map_err(SerializeError::from)?;
3177        }
3178        Ok(())
3179    }
3180
3181    fn is_empty_element(&self) -> bool {
3182        #[cfg(feature = "wml-numbering")]
3183        if self.ilvl.is_some() {
3184            return false;
3185        }
3186        #[cfg(feature = "wml-numbering")]
3187        if self.num_id.is_some() {
3188            return false;
3189        }
3190        #[cfg(feature = "wml-track-changes")]
3191        if self.numbering_change.is_some() {
3192            return false;
3193        }
3194        #[cfg(feature = "wml-track-changes")]
3195        if self.ins.is_some() {
3196            return false;
3197        }
3198        #[cfg(feature = "extra-children")]
3199        if !self.extra_children.is_empty() {
3200            return false;
3201        }
3202        true
3203    }
3204}
3205
3206impl ToXml for CTPBdr {
3207    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
3208        #[cfg(feature = "extra-children")]
3209        let mut extra_iter = self.extra_children.iter().peekable();
3210        #[cfg(feature = "extra-children")]
3211        let mut emit_idx: usize = 0;
3212        #[cfg(feature = "extra-children")]
3213        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
3214            extra_iter
3215                .next()
3216                .unwrap()
3217                .node
3218                .write_to(writer)
3219                .map_err(SerializeError::from)?;
3220        }
3221        #[cfg(feature = "wml-styling")]
3222        if let Some(ref val) = self.top {
3223            val.write_element("w:top", writer)?;
3224        }
3225        #[cfg(feature = "extra-children")]
3226        {
3227            emit_idx += 1;
3228        }
3229        #[cfg(feature = "extra-children")]
3230        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
3231            extra_iter
3232                .next()
3233                .unwrap()
3234                .node
3235                .write_to(writer)
3236                .map_err(SerializeError::from)?;
3237        }
3238        #[cfg(feature = "wml-styling")]
3239        if let Some(ref val) = self.left {
3240            val.write_element("w:left", writer)?;
3241        }
3242        #[cfg(feature = "extra-children")]
3243        {
3244            emit_idx += 1;
3245        }
3246        #[cfg(feature = "extra-children")]
3247        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
3248            extra_iter
3249                .next()
3250                .unwrap()
3251                .node
3252                .write_to(writer)
3253                .map_err(SerializeError::from)?;
3254        }
3255        #[cfg(feature = "wml-styling")]
3256        if let Some(ref val) = self.bottom {
3257            val.write_element("w:bottom", writer)?;
3258        }
3259        #[cfg(feature = "extra-children")]
3260        {
3261            emit_idx += 1;
3262        }
3263        #[cfg(feature = "extra-children")]
3264        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
3265            extra_iter
3266                .next()
3267                .unwrap()
3268                .node
3269                .write_to(writer)
3270                .map_err(SerializeError::from)?;
3271        }
3272        #[cfg(feature = "wml-styling")]
3273        if let Some(ref val) = self.right {
3274            val.write_element("w:right", writer)?;
3275        }
3276        #[cfg(feature = "extra-children")]
3277        {
3278            emit_idx += 1;
3279        }
3280        #[cfg(feature = "extra-children")]
3281        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
3282            extra_iter
3283                .next()
3284                .unwrap()
3285                .node
3286                .write_to(writer)
3287                .map_err(SerializeError::from)?;
3288        }
3289        #[cfg(feature = "wml-styling")]
3290        if let Some(ref val) = self.between {
3291            val.write_element("w:between", writer)?;
3292        }
3293        #[cfg(feature = "extra-children")]
3294        {
3295            emit_idx += 1;
3296        }
3297        #[cfg(feature = "extra-children")]
3298        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
3299            extra_iter
3300                .next()
3301                .unwrap()
3302                .node
3303                .write_to(writer)
3304                .map_err(SerializeError::from)?;
3305        }
3306        #[cfg(feature = "wml-styling")]
3307        if let Some(ref val) = self.bar {
3308            val.write_element("w:bar", writer)?;
3309        }
3310        #[cfg(feature = "extra-children")]
3311        {
3312            emit_idx += 1;
3313        }
3314        #[cfg(feature = "extra-children")]
3315        for extra in extra_iter {
3316            extra.node.write_to(writer).map_err(SerializeError::from)?;
3317        }
3318        Ok(())
3319    }
3320
3321    fn is_empty_element(&self) -> bool {
3322        #[cfg(feature = "wml-styling")]
3323        if self.top.is_some() {
3324            return false;
3325        }
3326        #[cfg(feature = "wml-styling")]
3327        if self.left.is_some() {
3328            return false;
3329        }
3330        #[cfg(feature = "wml-styling")]
3331        if self.bottom.is_some() {
3332            return false;
3333        }
3334        #[cfg(feature = "wml-styling")]
3335        if self.right.is_some() {
3336            return false;
3337        }
3338        #[cfg(feature = "wml-styling")]
3339        if self.between.is_some() {
3340            return false;
3341        }
3342        #[cfg(feature = "wml-styling")]
3343        if self.bar.is_some() {
3344            return false;
3345        }
3346        #[cfg(feature = "extra-children")]
3347        if !self.extra_children.is_empty() {
3348            return false;
3349        }
3350        true
3351    }
3352}
3353
3354impl ToXml for CTTabs {
3355    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
3356        #[cfg(feature = "extra-children")]
3357        let mut extra_iter = self.extra_children.iter().peekable();
3358        #[cfg(feature = "extra-children")]
3359        let mut emit_idx: usize = 0;
3360        for item in &self.tab {
3361            #[cfg(feature = "extra-children")]
3362            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
3363                extra_iter
3364                    .next()
3365                    .unwrap()
3366                    .node
3367                    .write_to(writer)
3368                    .map_err(SerializeError::from)?;
3369            }
3370            item.write_element("w:tab", writer)?;
3371            #[cfg(feature = "extra-children")]
3372            {
3373                emit_idx += 1;
3374            }
3375        }
3376        #[cfg(feature = "extra-children")]
3377        for extra in extra_iter {
3378            extra.node.write_to(writer).map_err(SerializeError::from)?;
3379        }
3380        Ok(())
3381    }
3382
3383    fn is_empty_element(&self) -> bool {
3384        if !self.tab.is_empty() {
3385            return false;
3386        }
3387        #[cfg(feature = "extra-children")]
3388        if !self.extra_children.is_empty() {
3389            return false;
3390        }
3391        true
3392    }
3393}
3394
3395impl ToXml for CTTextboxTightWrap {
3396    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
3397        #[allow(unused_mut)]
3398        let mut start = start;
3399        {
3400            let val = &self.value;
3401            {
3402                let s = val.to_string();
3403                start.push_attribute(("w:val", s.as_str()));
3404            }
3405        }
3406        #[cfg(feature = "extra-attrs")]
3407        for (key, value) in &self.extra_attrs {
3408            start.push_attribute((key.as_str(), value.as_str()));
3409        }
3410        start
3411    }
3412
3413    fn is_empty_element(&self) -> bool {
3414        true
3415    }
3416}
3417
3418impl ToXml for ParagraphProperties {
3419    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
3420        #[cfg(feature = "extra-children")]
3421        let mut extra_iter = self.extra_children.iter().peekable();
3422        #[cfg(feature = "extra-children")]
3423        let mut emit_idx: usize = 0;
3424        #[cfg(feature = "extra-children")]
3425        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
3426            extra_iter
3427                .next()
3428                .unwrap()
3429                .node
3430                .write_to(writer)
3431                .map_err(SerializeError::from)?;
3432        }
3433        if let Some(ref val) = self.paragraph_style {
3434            val.write_element("w:pStyle", writer)?;
3435        }
3436        #[cfg(feature = "extra-children")]
3437        {
3438            emit_idx += 1;
3439        }
3440        #[cfg(feature = "extra-children")]
3441        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
3442            extra_iter
3443                .next()
3444                .unwrap()
3445                .node
3446                .write_to(writer)
3447                .map_err(SerializeError::from)?;
3448        }
3449        #[cfg(feature = "wml-layout")]
3450        if let Some(ref val) = self.keep_next {
3451            val.write_element("w:keepNext", writer)?;
3452        }
3453        #[cfg(feature = "extra-children")]
3454        {
3455            emit_idx += 1;
3456        }
3457        #[cfg(feature = "extra-children")]
3458        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
3459            extra_iter
3460                .next()
3461                .unwrap()
3462                .node
3463                .write_to(writer)
3464                .map_err(SerializeError::from)?;
3465        }
3466        #[cfg(feature = "wml-layout")]
3467        if let Some(ref val) = self.keep_lines {
3468            val.write_element("w:keepLines", writer)?;
3469        }
3470        #[cfg(feature = "extra-children")]
3471        {
3472            emit_idx += 1;
3473        }
3474        #[cfg(feature = "extra-children")]
3475        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
3476            extra_iter
3477                .next()
3478                .unwrap()
3479                .node
3480                .write_to(writer)
3481                .map_err(SerializeError::from)?;
3482        }
3483        #[cfg(feature = "wml-layout")]
3484        if let Some(ref val) = self.page_break_before {
3485            val.write_element("w:pageBreakBefore", writer)?;
3486        }
3487        #[cfg(feature = "extra-children")]
3488        {
3489            emit_idx += 1;
3490        }
3491        #[cfg(feature = "extra-children")]
3492        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
3493            extra_iter
3494                .next()
3495                .unwrap()
3496                .node
3497                .write_to(writer)
3498                .map_err(SerializeError::from)?;
3499        }
3500        #[cfg(feature = "wml-layout")]
3501        if let Some(ref val) = self.frame_pr {
3502            val.write_element("w:framePr", writer)?;
3503        }
3504        #[cfg(feature = "extra-children")]
3505        {
3506            emit_idx += 1;
3507        }
3508        #[cfg(feature = "extra-children")]
3509        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
3510            extra_iter
3511                .next()
3512                .unwrap()
3513                .node
3514                .write_to(writer)
3515                .map_err(SerializeError::from)?;
3516        }
3517        #[cfg(feature = "wml-layout")]
3518        if let Some(ref val) = self.widow_control {
3519            val.write_element("w:widowControl", writer)?;
3520        }
3521        #[cfg(feature = "extra-children")]
3522        {
3523            emit_idx += 1;
3524        }
3525        #[cfg(feature = "extra-children")]
3526        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
3527            extra_iter
3528                .next()
3529                .unwrap()
3530                .node
3531                .write_to(writer)
3532                .map_err(SerializeError::from)?;
3533        }
3534        #[cfg(feature = "wml-numbering")]
3535        if let Some(ref val) = self.num_pr {
3536            val.write_element("w:numPr", writer)?;
3537        }
3538        #[cfg(feature = "extra-children")]
3539        {
3540            emit_idx += 1;
3541        }
3542        #[cfg(feature = "extra-children")]
3543        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
3544            extra_iter
3545                .next()
3546                .unwrap()
3547                .node
3548                .write_to(writer)
3549                .map_err(SerializeError::from)?;
3550        }
3551        #[cfg(feature = "wml-layout")]
3552        if let Some(ref val) = self.suppress_line_numbers {
3553            val.write_element("w:suppressLineNumbers", writer)?;
3554        }
3555        #[cfg(feature = "extra-children")]
3556        {
3557            emit_idx += 1;
3558        }
3559        #[cfg(feature = "extra-children")]
3560        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
3561            extra_iter
3562                .next()
3563                .unwrap()
3564                .node
3565                .write_to(writer)
3566                .map_err(SerializeError::from)?;
3567        }
3568        #[cfg(feature = "wml-styling")]
3569        if let Some(ref val) = self.paragraph_border {
3570            val.write_element("w:pBdr", writer)?;
3571        }
3572        #[cfg(feature = "extra-children")]
3573        {
3574            emit_idx += 1;
3575        }
3576        #[cfg(feature = "extra-children")]
3577        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
3578            extra_iter
3579                .next()
3580                .unwrap()
3581                .node
3582                .write_to(writer)
3583                .map_err(SerializeError::from)?;
3584        }
3585        #[cfg(feature = "wml-styling")]
3586        if let Some(ref val) = self.shading {
3587            val.write_element("w:shd", writer)?;
3588        }
3589        #[cfg(feature = "extra-children")]
3590        {
3591            emit_idx += 1;
3592        }
3593        #[cfg(feature = "extra-children")]
3594        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
3595            extra_iter
3596                .next()
3597                .unwrap()
3598                .node
3599                .write_to(writer)
3600                .map_err(SerializeError::from)?;
3601        }
3602        #[cfg(feature = "wml-styling")]
3603        if let Some(ref val) = self.tabs {
3604            val.write_element("w:tabs", writer)?;
3605        }
3606        #[cfg(feature = "extra-children")]
3607        {
3608            emit_idx += 1;
3609        }
3610        #[cfg(feature = "extra-children")]
3611        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
3612            extra_iter
3613                .next()
3614                .unwrap()
3615                .node
3616                .write_to(writer)
3617                .map_err(SerializeError::from)?;
3618        }
3619        #[cfg(feature = "wml-styling")]
3620        if let Some(ref val) = self.suppress_auto_hyphens {
3621            val.write_element("w:suppressAutoHyphens", writer)?;
3622        }
3623        #[cfg(feature = "extra-children")]
3624        {
3625            emit_idx += 1;
3626        }
3627        #[cfg(feature = "extra-children")]
3628        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
3629            extra_iter
3630                .next()
3631                .unwrap()
3632                .node
3633                .write_to(writer)
3634                .map_err(SerializeError::from)?;
3635        }
3636        #[cfg(feature = "wml-styling")]
3637        if let Some(ref val) = self.kinsoku {
3638            val.write_element("w:kinsoku", writer)?;
3639        }
3640        #[cfg(feature = "extra-children")]
3641        {
3642            emit_idx += 1;
3643        }
3644        #[cfg(feature = "extra-children")]
3645        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
3646            extra_iter
3647                .next()
3648                .unwrap()
3649                .node
3650                .write_to(writer)
3651                .map_err(SerializeError::from)?;
3652        }
3653        #[cfg(feature = "wml-styling")]
3654        if let Some(ref val) = self.word_wrap {
3655            val.write_element("w:wordWrap", writer)?;
3656        }
3657        #[cfg(feature = "extra-children")]
3658        {
3659            emit_idx += 1;
3660        }
3661        #[cfg(feature = "extra-children")]
3662        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
3663            extra_iter
3664                .next()
3665                .unwrap()
3666                .node
3667                .write_to(writer)
3668                .map_err(SerializeError::from)?;
3669        }
3670        #[cfg(feature = "wml-styling")]
3671        if let Some(ref val) = self.overflow_punct {
3672            val.write_element("w:overflowPunct", writer)?;
3673        }
3674        #[cfg(feature = "extra-children")]
3675        {
3676            emit_idx += 1;
3677        }
3678        #[cfg(feature = "extra-children")]
3679        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
3680            extra_iter
3681                .next()
3682                .unwrap()
3683                .node
3684                .write_to(writer)
3685                .map_err(SerializeError::from)?;
3686        }
3687        #[cfg(feature = "wml-styling")]
3688        if let Some(ref val) = self.top_line_punct {
3689            val.write_element("w:topLinePunct", writer)?;
3690        }
3691        #[cfg(feature = "extra-children")]
3692        {
3693            emit_idx += 1;
3694        }
3695        #[cfg(feature = "extra-children")]
3696        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
3697            extra_iter
3698                .next()
3699                .unwrap()
3700                .node
3701                .write_to(writer)
3702                .map_err(SerializeError::from)?;
3703        }
3704        #[cfg(feature = "wml-styling")]
3705        if let Some(ref val) = self.auto_space_d_e {
3706            val.write_element("w:autoSpaceDE", writer)?;
3707        }
3708        #[cfg(feature = "extra-children")]
3709        {
3710            emit_idx += 1;
3711        }
3712        #[cfg(feature = "extra-children")]
3713        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
3714            extra_iter
3715                .next()
3716                .unwrap()
3717                .node
3718                .write_to(writer)
3719                .map_err(SerializeError::from)?;
3720        }
3721        #[cfg(feature = "wml-styling")]
3722        if let Some(ref val) = self.auto_space_d_n {
3723            val.write_element("w:autoSpaceDN", writer)?;
3724        }
3725        #[cfg(feature = "extra-children")]
3726        {
3727            emit_idx += 1;
3728        }
3729        #[cfg(feature = "extra-children")]
3730        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
3731            extra_iter
3732                .next()
3733                .unwrap()
3734                .node
3735                .write_to(writer)
3736                .map_err(SerializeError::from)?;
3737        }
3738        #[cfg(feature = "wml-styling")]
3739        if let Some(ref val) = self.bidi {
3740            val.write_element("w:bidi", writer)?;
3741        }
3742        #[cfg(feature = "extra-children")]
3743        {
3744            emit_idx += 1;
3745        }
3746        #[cfg(feature = "extra-children")]
3747        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
3748            extra_iter
3749                .next()
3750                .unwrap()
3751                .node
3752                .write_to(writer)
3753                .map_err(SerializeError::from)?;
3754        }
3755        #[cfg(feature = "wml-styling")]
3756        if let Some(ref val) = self.adjust_right_ind {
3757            val.write_element("w:adjustRightInd", writer)?;
3758        }
3759        #[cfg(feature = "extra-children")]
3760        {
3761            emit_idx += 1;
3762        }
3763        #[cfg(feature = "extra-children")]
3764        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
3765            extra_iter
3766                .next()
3767                .unwrap()
3768                .node
3769                .write_to(writer)
3770                .map_err(SerializeError::from)?;
3771        }
3772        #[cfg(feature = "wml-layout")]
3773        if let Some(ref val) = self.snap_to_grid {
3774            val.write_element("w:snapToGrid", writer)?;
3775        }
3776        #[cfg(feature = "extra-children")]
3777        {
3778            emit_idx += 1;
3779        }
3780        #[cfg(feature = "extra-children")]
3781        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
3782            extra_iter
3783                .next()
3784                .unwrap()
3785                .node
3786                .write_to(writer)
3787                .map_err(SerializeError::from)?;
3788        }
3789        #[cfg(feature = "wml-styling")]
3790        if let Some(ref val) = self.spacing {
3791            val.write_element("w:spacing", writer)?;
3792        }
3793        #[cfg(feature = "extra-children")]
3794        {
3795            emit_idx += 1;
3796        }
3797        #[cfg(feature = "extra-children")]
3798        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
3799            extra_iter
3800                .next()
3801                .unwrap()
3802                .node
3803                .write_to(writer)
3804                .map_err(SerializeError::from)?;
3805        }
3806        #[cfg(feature = "wml-styling")]
3807        if let Some(ref val) = self.indentation {
3808            val.write_element("w:ind", writer)?;
3809        }
3810        #[cfg(feature = "extra-children")]
3811        {
3812            emit_idx += 1;
3813        }
3814        #[cfg(feature = "extra-children")]
3815        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
3816            extra_iter
3817                .next()
3818                .unwrap()
3819                .node
3820                .write_to(writer)
3821                .map_err(SerializeError::from)?;
3822        }
3823        #[cfg(feature = "wml-styling")]
3824        if let Some(ref val) = self.contextual_spacing {
3825            val.write_element("w:contextualSpacing", writer)?;
3826        }
3827        #[cfg(feature = "extra-children")]
3828        {
3829            emit_idx += 1;
3830        }
3831        #[cfg(feature = "extra-children")]
3832        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
3833            extra_iter
3834                .next()
3835                .unwrap()
3836                .node
3837                .write_to(writer)
3838                .map_err(SerializeError::from)?;
3839        }
3840        #[cfg(feature = "wml-styling")]
3841        if let Some(ref val) = self.mirror_indents {
3842            val.write_element("w:mirrorIndents", writer)?;
3843        }
3844        #[cfg(feature = "extra-children")]
3845        {
3846            emit_idx += 1;
3847        }
3848        #[cfg(feature = "extra-children")]
3849        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
3850            extra_iter
3851                .next()
3852                .unwrap()
3853                .node
3854                .write_to(writer)
3855                .map_err(SerializeError::from)?;
3856        }
3857        #[cfg(feature = "wml-layout")]
3858        if let Some(ref val) = self.suppress_overlap {
3859            val.write_element("w:suppressOverlap", writer)?;
3860        }
3861        #[cfg(feature = "extra-children")]
3862        {
3863            emit_idx += 1;
3864        }
3865        #[cfg(feature = "extra-children")]
3866        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
3867            extra_iter
3868                .next()
3869                .unwrap()
3870                .node
3871                .write_to(writer)
3872                .map_err(SerializeError::from)?;
3873        }
3874        #[cfg(feature = "wml-styling")]
3875        if let Some(ref val) = self.justification {
3876            val.write_element("w:jc", writer)?;
3877        }
3878        #[cfg(feature = "extra-children")]
3879        {
3880            emit_idx += 1;
3881        }
3882        #[cfg(feature = "extra-children")]
3883        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
3884            extra_iter
3885                .next()
3886                .unwrap()
3887                .node
3888                .write_to(writer)
3889                .map_err(SerializeError::from)?;
3890        }
3891        #[cfg(feature = "wml-styling")]
3892        if let Some(ref val) = self.text_direction {
3893            val.write_element("w:textDirection", writer)?;
3894        }
3895        #[cfg(feature = "extra-children")]
3896        {
3897            emit_idx += 1;
3898        }
3899        #[cfg(feature = "extra-children")]
3900        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
3901            extra_iter
3902                .next()
3903                .unwrap()
3904                .node
3905                .write_to(writer)
3906                .map_err(SerializeError::from)?;
3907        }
3908        #[cfg(feature = "wml-styling")]
3909        if let Some(ref val) = self.text_alignment {
3910            val.write_element("w:textAlignment", writer)?;
3911        }
3912        #[cfg(feature = "extra-children")]
3913        {
3914            emit_idx += 1;
3915        }
3916        #[cfg(feature = "extra-children")]
3917        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
3918            extra_iter
3919                .next()
3920                .unwrap()
3921                .node
3922                .write_to(writer)
3923                .map_err(SerializeError::from)?;
3924        }
3925        #[cfg(feature = "wml-styling")]
3926        if let Some(ref val) = self.textbox_tight_wrap {
3927            val.write_element("w:textboxTightWrap", writer)?;
3928        }
3929        #[cfg(feature = "extra-children")]
3930        {
3931            emit_idx += 1;
3932        }
3933        #[cfg(feature = "extra-children")]
3934        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
3935            extra_iter
3936                .next()
3937                .unwrap()
3938                .node
3939                .write_to(writer)
3940                .map_err(SerializeError::from)?;
3941        }
3942        #[cfg(feature = "wml-styling")]
3943        if let Some(ref val) = self.outline_lvl {
3944            val.write_element("w:outlineLvl", writer)?;
3945        }
3946        #[cfg(feature = "extra-children")]
3947        {
3948            emit_idx += 1;
3949        }
3950        #[cfg(feature = "extra-children")]
3951        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
3952            extra_iter
3953                .next()
3954                .unwrap()
3955                .node
3956                .write_to(writer)
3957                .map_err(SerializeError::from)?;
3958        }
3959        #[cfg(feature = "wml-styling")]
3960        if let Some(ref val) = self.div_id {
3961            val.write_element("w:divId", writer)?;
3962        }
3963        #[cfg(feature = "extra-children")]
3964        {
3965            emit_idx += 1;
3966        }
3967        #[cfg(feature = "extra-children")]
3968        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
3969            extra_iter
3970                .next()
3971                .unwrap()
3972                .node
3973                .write_to(writer)
3974                .map_err(SerializeError::from)?;
3975        }
3976        #[cfg(feature = "wml-styling")]
3977        if let Some(ref val) = self.cnf_style {
3978            val.write_element("w:cnfStyle", writer)?;
3979        }
3980        #[cfg(feature = "extra-children")]
3981        {
3982            emit_idx += 1;
3983        }
3984        #[cfg(feature = "extra-children")]
3985        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
3986            extra_iter
3987                .next()
3988                .unwrap()
3989                .node
3990                .write_to(writer)
3991                .map_err(SerializeError::from)?;
3992        }
3993        #[cfg(feature = "wml-styling")]
3994        if let Some(ref val) = self.r_pr {
3995            val.write_element("w:rPr", writer)?;
3996        }
3997        #[cfg(feature = "extra-children")]
3998        {
3999            emit_idx += 1;
4000        }
4001        #[cfg(feature = "extra-children")]
4002        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4003            extra_iter
4004                .next()
4005                .unwrap()
4006                .node
4007                .write_to(writer)
4008                .map_err(SerializeError::from)?;
4009        }
4010        #[cfg(feature = "wml-layout")]
4011        if let Some(ref val) = self.sect_pr {
4012            val.write_element("w:sectPr", writer)?;
4013        }
4014        #[cfg(feature = "extra-children")]
4015        {
4016            emit_idx += 1;
4017        }
4018        #[cfg(feature = "extra-children")]
4019        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4020            extra_iter
4021                .next()
4022                .unwrap()
4023                .node
4024                .write_to(writer)
4025                .map_err(SerializeError::from)?;
4026        }
4027        #[cfg(feature = "wml-track-changes")]
4028        if let Some(ref val) = self.p_pr_change {
4029            val.write_element("w:pPrChange", writer)?;
4030        }
4031        #[cfg(feature = "extra-children")]
4032        {
4033            emit_idx += 1;
4034        }
4035        #[cfg(feature = "extra-children")]
4036        for extra in extra_iter {
4037            extra.node.write_to(writer).map_err(SerializeError::from)?;
4038        }
4039        Ok(())
4040    }
4041
4042    fn is_empty_element(&self) -> bool {
4043        if self.paragraph_style.is_some() {
4044            return false;
4045        }
4046        #[cfg(feature = "wml-layout")]
4047        if self.keep_next.is_some() {
4048            return false;
4049        }
4050        #[cfg(feature = "wml-layout")]
4051        if self.keep_lines.is_some() {
4052            return false;
4053        }
4054        #[cfg(feature = "wml-layout")]
4055        if self.page_break_before.is_some() {
4056            return false;
4057        }
4058        #[cfg(feature = "wml-layout")]
4059        if self.frame_pr.is_some() {
4060            return false;
4061        }
4062        #[cfg(feature = "wml-layout")]
4063        if self.widow_control.is_some() {
4064            return false;
4065        }
4066        #[cfg(feature = "wml-numbering")]
4067        if self.num_pr.is_some() {
4068            return false;
4069        }
4070        #[cfg(feature = "wml-layout")]
4071        if self.suppress_line_numbers.is_some() {
4072            return false;
4073        }
4074        #[cfg(feature = "wml-styling")]
4075        if self.paragraph_border.is_some() {
4076            return false;
4077        }
4078        #[cfg(feature = "wml-styling")]
4079        if self.shading.is_some() {
4080            return false;
4081        }
4082        #[cfg(feature = "wml-styling")]
4083        if self.tabs.is_some() {
4084            return false;
4085        }
4086        #[cfg(feature = "wml-styling")]
4087        if self.suppress_auto_hyphens.is_some() {
4088            return false;
4089        }
4090        #[cfg(feature = "wml-styling")]
4091        if self.kinsoku.is_some() {
4092            return false;
4093        }
4094        #[cfg(feature = "wml-styling")]
4095        if self.word_wrap.is_some() {
4096            return false;
4097        }
4098        #[cfg(feature = "wml-styling")]
4099        if self.overflow_punct.is_some() {
4100            return false;
4101        }
4102        #[cfg(feature = "wml-styling")]
4103        if self.top_line_punct.is_some() {
4104            return false;
4105        }
4106        #[cfg(feature = "wml-styling")]
4107        if self.auto_space_d_e.is_some() {
4108            return false;
4109        }
4110        #[cfg(feature = "wml-styling")]
4111        if self.auto_space_d_n.is_some() {
4112            return false;
4113        }
4114        #[cfg(feature = "wml-styling")]
4115        if self.bidi.is_some() {
4116            return false;
4117        }
4118        #[cfg(feature = "wml-styling")]
4119        if self.adjust_right_ind.is_some() {
4120            return false;
4121        }
4122        #[cfg(feature = "wml-layout")]
4123        if self.snap_to_grid.is_some() {
4124            return false;
4125        }
4126        #[cfg(feature = "wml-styling")]
4127        if self.spacing.is_some() {
4128            return false;
4129        }
4130        #[cfg(feature = "wml-styling")]
4131        if self.indentation.is_some() {
4132            return false;
4133        }
4134        #[cfg(feature = "wml-styling")]
4135        if self.contextual_spacing.is_some() {
4136            return false;
4137        }
4138        #[cfg(feature = "wml-styling")]
4139        if self.mirror_indents.is_some() {
4140            return false;
4141        }
4142        #[cfg(feature = "wml-layout")]
4143        if self.suppress_overlap.is_some() {
4144            return false;
4145        }
4146        #[cfg(feature = "wml-styling")]
4147        if self.justification.is_some() {
4148            return false;
4149        }
4150        #[cfg(feature = "wml-styling")]
4151        if self.text_direction.is_some() {
4152            return false;
4153        }
4154        #[cfg(feature = "wml-styling")]
4155        if self.text_alignment.is_some() {
4156            return false;
4157        }
4158        #[cfg(feature = "wml-styling")]
4159        if self.textbox_tight_wrap.is_some() {
4160            return false;
4161        }
4162        #[cfg(feature = "wml-styling")]
4163        if self.outline_lvl.is_some() {
4164            return false;
4165        }
4166        #[cfg(feature = "wml-styling")]
4167        if self.div_id.is_some() {
4168            return false;
4169        }
4170        #[cfg(feature = "wml-styling")]
4171        if self.cnf_style.is_some() {
4172            return false;
4173        }
4174        #[cfg(feature = "wml-styling")]
4175        if self.r_pr.is_some() {
4176            return false;
4177        }
4178        #[cfg(feature = "wml-layout")]
4179        if self.sect_pr.is_some() {
4180            return false;
4181        }
4182        #[cfg(feature = "wml-track-changes")]
4183        if self.p_pr_change.is_some() {
4184            return false;
4185        }
4186        #[cfg(feature = "extra-children")]
4187        if !self.extra_children.is_empty() {
4188            return false;
4189        }
4190        true
4191    }
4192}
4193
4194impl ToXml for CTPPrBase {
4195    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
4196        #[cfg(feature = "extra-children")]
4197        let mut extra_iter = self.extra_children.iter().peekable();
4198        #[cfg(feature = "extra-children")]
4199        let mut emit_idx: usize = 0;
4200        #[cfg(feature = "extra-children")]
4201        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4202            extra_iter
4203                .next()
4204                .unwrap()
4205                .node
4206                .write_to(writer)
4207                .map_err(SerializeError::from)?;
4208        }
4209        if let Some(ref val) = self.paragraph_style {
4210            val.write_element("w:pStyle", writer)?;
4211        }
4212        #[cfg(feature = "extra-children")]
4213        {
4214            emit_idx += 1;
4215        }
4216        #[cfg(feature = "extra-children")]
4217        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4218            extra_iter
4219                .next()
4220                .unwrap()
4221                .node
4222                .write_to(writer)
4223                .map_err(SerializeError::from)?;
4224        }
4225        #[cfg(feature = "wml-layout")]
4226        if let Some(ref val) = self.keep_next {
4227            val.write_element("w:keepNext", writer)?;
4228        }
4229        #[cfg(feature = "extra-children")]
4230        {
4231            emit_idx += 1;
4232        }
4233        #[cfg(feature = "extra-children")]
4234        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4235            extra_iter
4236                .next()
4237                .unwrap()
4238                .node
4239                .write_to(writer)
4240                .map_err(SerializeError::from)?;
4241        }
4242        #[cfg(feature = "wml-layout")]
4243        if let Some(ref val) = self.keep_lines {
4244            val.write_element("w:keepLines", writer)?;
4245        }
4246        #[cfg(feature = "extra-children")]
4247        {
4248            emit_idx += 1;
4249        }
4250        #[cfg(feature = "extra-children")]
4251        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4252            extra_iter
4253                .next()
4254                .unwrap()
4255                .node
4256                .write_to(writer)
4257                .map_err(SerializeError::from)?;
4258        }
4259        #[cfg(feature = "wml-layout")]
4260        if let Some(ref val) = self.page_break_before {
4261            val.write_element("w:pageBreakBefore", writer)?;
4262        }
4263        #[cfg(feature = "extra-children")]
4264        {
4265            emit_idx += 1;
4266        }
4267        #[cfg(feature = "extra-children")]
4268        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4269            extra_iter
4270                .next()
4271                .unwrap()
4272                .node
4273                .write_to(writer)
4274                .map_err(SerializeError::from)?;
4275        }
4276        #[cfg(feature = "wml-layout")]
4277        if let Some(ref val) = self.frame_pr {
4278            val.write_element("w:framePr", writer)?;
4279        }
4280        #[cfg(feature = "extra-children")]
4281        {
4282            emit_idx += 1;
4283        }
4284        #[cfg(feature = "extra-children")]
4285        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4286            extra_iter
4287                .next()
4288                .unwrap()
4289                .node
4290                .write_to(writer)
4291                .map_err(SerializeError::from)?;
4292        }
4293        #[cfg(feature = "wml-layout")]
4294        if let Some(ref val) = self.widow_control {
4295            val.write_element("w:widowControl", writer)?;
4296        }
4297        #[cfg(feature = "extra-children")]
4298        {
4299            emit_idx += 1;
4300        }
4301        #[cfg(feature = "extra-children")]
4302        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4303            extra_iter
4304                .next()
4305                .unwrap()
4306                .node
4307                .write_to(writer)
4308                .map_err(SerializeError::from)?;
4309        }
4310        #[cfg(feature = "wml-numbering")]
4311        if let Some(ref val) = self.num_pr {
4312            val.write_element("w:numPr", writer)?;
4313        }
4314        #[cfg(feature = "extra-children")]
4315        {
4316            emit_idx += 1;
4317        }
4318        #[cfg(feature = "extra-children")]
4319        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4320            extra_iter
4321                .next()
4322                .unwrap()
4323                .node
4324                .write_to(writer)
4325                .map_err(SerializeError::from)?;
4326        }
4327        #[cfg(feature = "wml-layout")]
4328        if let Some(ref val) = self.suppress_line_numbers {
4329            val.write_element("w:suppressLineNumbers", writer)?;
4330        }
4331        #[cfg(feature = "extra-children")]
4332        {
4333            emit_idx += 1;
4334        }
4335        #[cfg(feature = "extra-children")]
4336        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4337            extra_iter
4338                .next()
4339                .unwrap()
4340                .node
4341                .write_to(writer)
4342                .map_err(SerializeError::from)?;
4343        }
4344        #[cfg(feature = "wml-styling")]
4345        if let Some(ref val) = self.paragraph_border {
4346            val.write_element("w:pBdr", writer)?;
4347        }
4348        #[cfg(feature = "extra-children")]
4349        {
4350            emit_idx += 1;
4351        }
4352        #[cfg(feature = "extra-children")]
4353        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4354            extra_iter
4355                .next()
4356                .unwrap()
4357                .node
4358                .write_to(writer)
4359                .map_err(SerializeError::from)?;
4360        }
4361        #[cfg(feature = "wml-styling")]
4362        if let Some(ref val) = self.shading {
4363            val.write_element("w:shd", writer)?;
4364        }
4365        #[cfg(feature = "extra-children")]
4366        {
4367            emit_idx += 1;
4368        }
4369        #[cfg(feature = "extra-children")]
4370        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4371            extra_iter
4372                .next()
4373                .unwrap()
4374                .node
4375                .write_to(writer)
4376                .map_err(SerializeError::from)?;
4377        }
4378        #[cfg(feature = "wml-styling")]
4379        if let Some(ref val) = self.tabs {
4380            val.write_element("w:tabs", writer)?;
4381        }
4382        #[cfg(feature = "extra-children")]
4383        {
4384            emit_idx += 1;
4385        }
4386        #[cfg(feature = "extra-children")]
4387        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4388            extra_iter
4389                .next()
4390                .unwrap()
4391                .node
4392                .write_to(writer)
4393                .map_err(SerializeError::from)?;
4394        }
4395        #[cfg(feature = "wml-styling")]
4396        if let Some(ref val) = self.suppress_auto_hyphens {
4397            val.write_element("w:suppressAutoHyphens", writer)?;
4398        }
4399        #[cfg(feature = "extra-children")]
4400        {
4401            emit_idx += 1;
4402        }
4403        #[cfg(feature = "extra-children")]
4404        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4405            extra_iter
4406                .next()
4407                .unwrap()
4408                .node
4409                .write_to(writer)
4410                .map_err(SerializeError::from)?;
4411        }
4412        #[cfg(feature = "wml-styling")]
4413        if let Some(ref val) = self.kinsoku {
4414            val.write_element("w:kinsoku", writer)?;
4415        }
4416        #[cfg(feature = "extra-children")]
4417        {
4418            emit_idx += 1;
4419        }
4420        #[cfg(feature = "extra-children")]
4421        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4422            extra_iter
4423                .next()
4424                .unwrap()
4425                .node
4426                .write_to(writer)
4427                .map_err(SerializeError::from)?;
4428        }
4429        #[cfg(feature = "wml-styling")]
4430        if let Some(ref val) = self.word_wrap {
4431            val.write_element("w:wordWrap", writer)?;
4432        }
4433        #[cfg(feature = "extra-children")]
4434        {
4435            emit_idx += 1;
4436        }
4437        #[cfg(feature = "extra-children")]
4438        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4439            extra_iter
4440                .next()
4441                .unwrap()
4442                .node
4443                .write_to(writer)
4444                .map_err(SerializeError::from)?;
4445        }
4446        #[cfg(feature = "wml-styling")]
4447        if let Some(ref val) = self.overflow_punct {
4448            val.write_element("w:overflowPunct", writer)?;
4449        }
4450        #[cfg(feature = "extra-children")]
4451        {
4452            emit_idx += 1;
4453        }
4454        #[cfg(feature = "extra-children")]
4455        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4456            extra_iter
4457                .next()
4458                .unwrap()
4459                .node
4460                .write_to(writer)
4461                .map_err(SerializeError::from)?;
4462        }
4463        #[cfg(feature = "wml-styling")]
4464        if let Some(ref val) = self.top_line_punct {
4465            val.write_element("w:topLinePunct", writer)?;
4466        }
4467        #[cfg(feature = "extra-children")]
4468        {
4469            emit_idx += 1;
4470        }
4471        #[cfg(feature = "extra-children")]
4472        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4473            extra_iter
4474                .next()
4475                .unwrap()
4476                .node
4477                .write_to(writer)
4478                .map_err(SerializeError::from)?;
4479        }
4480        #[cfg(feature = "wml-styling")]
4481        if let Some(ref val) = self.auto_space_d_e {
4482            val.write_element("w:autoSpaceDE", writer)?;
4483        }
4484        #[cfg(feature = "extra-children")]
4485        {
4486            emit_idx += 1;
4487        }
4488        #[cfg(feature = "extra-children")]
4489        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4490            extra_iter
4491                .next()
4492                .unwrap()
4493                .node
4494                .write_to(writer)
4495                .map_err(SerializeError::from)?;
4496        }
4497        #[cfg(feature = "wml-styling")]
4498        if let Some(ref val) = self.auto_space_d_n {
4499            val.write_element("w:autoSpaceDN", writer)?;
4500        }
4501        #[cfg(feature = "extra-children")]
4502        {
4503            emit_idx += 1;
4504        }
4505        #[cfg(feature = "extra-children")]
4506        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4507            extra_iter
4508                .next()
4509                .unwrap()
4510                .node
4511                .write_to(writer)
4512                .map_err(SerializeError::from)?;
4513        }
4514        #[cfg(feature = "wml-styling")]
4515        if let Some(ref val) = self.bidi {
4516            val.write_element("w:bidi", writer)?;
4517        }
4518        #[cfg(feature = "extra-children")]
4519        {
4520            emit_idx += 1;
4521        }
4522        #[cfg(feature = "extra-children")]
4523        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4524            extra_iter
4525                .next()
4526                .unwrap()
4527                .node
4528                .write_to(writer)
4529                .map_err(SerializeError::from)?;
4530        }
4531        #[cfg(feature = "wml-styling")]
4532        if let Some(ref val) = self.adjust_right_ind {
4533            val.write_element("w:adjustRightInd", writer)?;
4534        }
4535        #[cfg(feature = "extra-children")]
4536        {
4537            emit_idx += 1;
4538        }
4539        #[cfg(feature = "extra-children")]
4540        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4541            extra_iter
4542                .next()
4543                .unwrap()
4544                .node
4545                .write_to(writer)
4546                .map_err(SerializeError::from)?;
4547        }
4548        #[cfg(feature = "wml-layout")]
4549        if let Some(ref val) = self.snap_to_grid {
4550            val.write_element("w:snapToGrid", writer)?;
4551        }
4552        #[cfg(feature = "extra-children")]
4553        {
4554            emit_idx += 1;
4555        }
4556        #[cfg(feature = "extra-children")]
4557        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4558            extra_iter
4559                .next()
4560                .unwrap()
4561                .node
4562                .write_to(writer)
4563                .map_err(SerializeError::from)?;
4564        }
4565        #[cfg(feature = "wml-styling")]
4566        if let Some(ref val) = self.spacing {
4567            val.write_element("w:spacing", writer)?;
4568        }
4569        #[cfg(feature = "extra-children")]
4570        {
4571            emit_idx += 1;
4572        }
4573        #[cfg(feature = "extra-children")]
4574        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4575            extra_iter
4576                .next()
4577                .unwrap()
4578                .node
4579                .write_to(writer)
4580                .map_err(SerializeError::from)?;
4581        }
4582        #[cfg(feature = "wml-styling")]
4583        if let Some(ref val) = self.indentation {
4584            val.write_element("w:ind", writer)?;
4585        }
4586        #[cfg(feature = "extra-children")]
4587        {
4588            emit_idx += 1;
4589        }
4590        #[cfg(feature = "extra-children")]
4591        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4592            extra_iter
4593                .next()
4594                .unwrap()
4595                .node
4596                .write_to(writer)
4597                .map_err(SerializeError::from)?;
4598        }
4599        #[cfg(feature = "wml-styling")]
4600        if let Some(ref val) = self.contextual_spacing {
4601            val.write_element("w:contextualSpacing", writer)?;
4602        }
4603        #[cfg(feature = "extra-children")]
4604        {
4605            emit_idx += 1;
4606        }
4607        #[cfg(feature = "extra-children")]
4608        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4609            extra_iter
4610                .next()
4611                .unwrap()
4612                .node
4613                .write_to(writer)
4614                .map_err(SerializeError::from)?;
4615        }
4616        #[cfg(feature = "wml-styling")]
4617        if let Some(ref val) = self.mirror_indents {
4618            val.write_element("w:mirrorIndents", writer)?;
4619        }
4620        #[cfg(feature = "extra-children")]
4621        {
4622            emit_idx += 1;
4623        }
4624        #[cfg(feature = "extra-children")]
4625        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4626            extra_iter
4627                .next()
4628                .unwrap()
4629                .node
4630                .write_to(writer)
4631                .map_err(SerializeError::from)?;
4632        }
4633        #[cfg(feature = "wml-layout")]
4634        if let Some(ref val) = self.suppress_overlap {
4635            val.write_element("w:suppressOverlap", writer)?;
4636        }
4637        #[cfg(feature = "extra-children")]
4638        {
4639            emit_idx += 1;
4640        }
4641        #[cfg(feature = "extra-children")]
4642        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4643            extra_iter
4644                .next()
4645                .unwrap()
4646                .node
4647                .write_to(writer)
4648                .map_err(SerializeError::from)?;
4649        }
4650        #[cfg(feature = "wml-styling")]
4651        if let Some(ref val) = self.justification {
4652            val.write_element("w:jc", writer)?;
4653        }
4654        #[cfg(feature = "extra-children")]
4655        {
4656            emit_idx += 1;
4657        }
4658        #[cfg(feature = "extra-children")]
4659        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4660            extra_iter
4661                .next()
4662                .unwrap()
4663                .node
4664                .write_to(writer)
4665                .map_err(SerializeError::from)?;
4666        }
4667        #[cfg(feature = "wml-styling")]
4668        if let Some(ref val) = self.text_direction {
4669            val.write_element("w:textDirection", writer)?;
4670        }
4671        #[cfg(feature = "extra-children")]
4672        {
4673            emit_idx += 1;
4674        }
4675        #[cfg(feature = "extra-children")]
4676        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4677            extra_iter
4678                .next()
4679                .unwrap()
4680                .node
4681                .write_to(writer)
4682                .map_err(SerializeError::from)?;
4683        }
4684        #[cfg(feature = "wml-styling")]
4685        if let Some(ref val) = self.text_alignment {
4686            val.write_element("w:textAlignment", writer)?;
4687        }
4688        #[cfg(feature = "extra-children")]
4689        {
4690            emit_idx += 1;
4691        }
4692        #[cfg(feature = "extra-children")]
4693        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4694            extra_iter
4695                .next()
4696                .unwrap()
4697                .node
4698                .write_to(writer)
4699                .map_err(SerializeError::from)?;
4700        }
4701        #[cfg(feature = "wml-styling")]
4702        if let Some(ref val) = self.textbox_tight_wrap {
4703            val.write_element("w:textboxTightWrap", writer)?;
4704        }
4705        #[cfg(feature = "extra-children")]
4706        {
4707            emit_idx += 1;
4708        }
4709        #[cfg(feature = "extra-children")]
4710        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4711            extra_iter
4712                .next()
4713                .unwrap()
4714                .node
4715                .write_to(writer)
4716                .map_err(SerializeError::from)?;
4717        }
4718        #[cfg(feature = "wml-styling")]
4719        if let Some(ref val) = self.outline_lvl {
4720            val.write_element("w:outlineLvl", writer)?;
4721        }
4722        #[cfg(feature = "extra-children")]
4723        {
4724            emit_idx += 1;
4725        }
4726        #[cfg(feature = "extra-children")]
4727        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4728            extra_iter
4729                .next()
4730                .unwrap()
4731                .node
4732                .write_to(writer)
4733                .map_err(SerializeError::from)?;
4734        }
4735        #[cfg(feature = "wml-styling")]
4736        if let Some(ref val) = self.div_id {
4737            val.write_element("w:divId", writer)?;
4738        }
4739        #[cfg(feature = "extra-children")]
4740        {
4741            emit_idx += 1;
4742        }
4743        #[cfg(feature = "extra-children")]
4744        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4745            extra_iter
4746                .next()
4747                .unwrap()
4748                .node
4749                .write_to(writer)
4750                .map_err(SerializeError::from)?;
4751        }
4752        #[cfg(feature = "wml-styling")]
4753        if let Some(ref val) = self.cnf_style {
4754            val.write_element("w:cnfStyle", writer)?;
4755        }
4756        #[cfg(feature = "extra-children")]
4757        {
4758            emit_idx += 1;
4759        }
4760        #[cfg(feature = "extra-children")]
4761        for extra in extra_iter {
4762            extra.node.write_to(writer).map_err(SerializeError::from)?;
4763        }
4764        Ok(())
4765    }
4766
4767    fn is_empty_element(&self) -> bool {
4768        if self.paragraph_style.is_some() {
4769            return false;
4770        }
4771        #[cfg(feature = "wml-layout")]
4772        if self.keep_next.is_some() {
4773            return false;
4774        }
4775        #[cfg(feature = "wml-layout")]
4776        if self.keep_lines.is_some() {
4777            return false;
4778        }
4779        #[cfg(feature = "wml-layout")]
4780        if self.page_break_before.is_some() {
4781            return false;
4782        }
4783        #[cfg(feature = "wml-layout")]
4784        if self.frame_pr.is_some() {
4785            return false;
4786        }
4787        #[cfg(feature = "wml-layout")]
4788        if self.widow_control.is_some() {
4789            return false;
4790        }
4791        #[cfg(feature = "wml-numbering")]
4792        if self.num_pr.is_some() {
4793            return false;
4794        }
4795        #[cfg(feature = "wml-layout")]
4796        if self.suppress_line_numbers.is_some() {
4797            return false;
4798        }
4799        #[cfg(feature = "wml-styling")]
4800        if self.paragraph_border.is_some() {
4801            return false;
4802        }
4803        #[cfg(feature = "wml-styling")]
4804        if self.shading.is_some() {
4805            return false;
4806        }
4807        #[cfg(feature = "wml-styling")]
4808        if self.tabs.is_some() {
4809            return false;
4810        }
4811        #[cfg(feature = "wml-styling")]
4812        if self.suppress_auto_hyphens.is_some() {
4813            return false;
4814        }
4815        #[cfg(feature = "wml-styling")]
4816        if self.kinsoku.is_some() {
4817            return false;
4818        }
4819        #[cfg(feature = "wml-styling")]
4820        if self.word_wrap.is_some() {
4821            return false;
4822        }
4823        #[cfg(feature = "wml-styling")]
4824        if self.overflow_punct.is_some() {
4825            return false;
4826        }
4827        #[cfg(feature = "wml-styling")]
4828        if self.top_line_punct.is_some() {
4829            return false;
4830        }
4831        #[cfg(feature = "wml-styling")]
4832        if self.auto_space_d_e.is_some() {
4833            return false;
4834        }
4835        #[cfg(feature = "wml-styling")]
4836        if self.auto_space_d_n.is_some() {
4837            return false;
4838        }
4839        #[cfg(feature = "wml-styling")]
4840        if self.bidi.is_some() {
4841            return false;
4842        }
4843        #[cfg(feature = "wml-styling")]
4844        if self.adjust_right_ind.is_some() {
4845            return false;
4846        }
4847        #[cfg(feature = "wml-layout")]
4848        if self.snap_to_grid.is_some() {
4849            return false;
4850        }
4851        #[cfg(feature = "wml-styling")]
4852        if self.spacing.is_some() {
4853            return false;
4854        }
4855        #[cfg(feature = "wml-styling")]
4856        if self.indentation.is_some() {
4857            return false;
4858        }
4859        #[cfg(feature = "wml-styling")]
4860        if self.contextual_spacing.is_some() {
4861            return false;
4862        }
4863        #[cfg(feature = "wml-styling")]
4864        if self.mirror_indents.is_some() {
4865            return false;
4866        }
4867        #[cfg(feature = "wml-layout")]
4868        if self.suppress_overlap.is_some() {
4869            return false;
4870        }
4871        #[cfg(feature = "wml-styling")]
4872        if self.justification.is_some() {
4873            return false;
4874        }
4875        #[cfg(feature = "wml-styling")]
4876        if self.text_direction.is_some() {
4877            return false;
4878        }
4879        #[cfg(feature = "wml-styling")]
4880        if self.text_alignment.is_some() {
4881            return false;
4882        }
4883        #[cfg(feature = "wml-styling")]
4884        if self.textbox_tight_wrap.is_some() {
4885            return false;
4886        }
4887        #[cfg(feature = "wml-styling")]
4888        if self.outline_lvl.is_some() {
4889            return false;
4890        }
4891        #[cfg(feature = "wml-styling")]
4892        if self.div_id.is_some() {
4893            return false;
4894        }
4895        #[cfg(feature = "wml-styling")]
4896        if self.cnf_style.is_some() {
4897            return false;
4898        }
4899        #[cfg(feature = "extra-children")]
4900        if !self.extra_children.is_empty() {
4901            return false;
4902        }
4903        true
4904    }
4905}
4906
4907impl ToXml for CTPPrGeneral {
4908    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
4909        #[cfg(feature = "extra-children")]
4910        let mut extra_iter = self.extra_children.iter().peekable();
4911        #[cfg(feature = "extra-children")]
4912        let mut emit_idx: usize = 0;
4913        #[cfg(feature = "extra-children")]
4914        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4915            extra_iter
4916                .next()
4917                .unwrap()
4918                .node
4919                .write_to(writer)
4920                .map_err(SerializeError::from)?;
4921        }
4922        if let Some(ref val) = self.paragraph_style {
4923            val.write_element("w:pStyle", writer)?;
4924        }
4925        #[cfg(feature = "extra-children")]
4926        {
4927            emit_idx += 1;
4928        }
4929        #[cfg(feature = "extra-children")]
4930        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4931            extra_iter
4932                .next()
4933                .unwrap()
4934                .node
4935                .write_to(writer)
4936                .map_err(SerializeError::from)?;
4937        }
4938        if let Some(ref val) = self.keep_next {
4939            val.write_element("w:keepNext", writer)?;
4940        }
4941        #[cfg(feature = "extra-children")]
4942        {
4943            emit_idx += 1;
4944        }
4945        #[cfg(feature = "extra-children")]
4946        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4947            extra_iter
4948                .next()
4949                .unwrap()
4950                .node
4951                .write_to(writer)
4952                .map_err(SerializeError::from)?;
4953        }
4954        if let Some(ref val) = self.keep_lines {
4955            val.write_element("w:keepLines", writer)?;
4956        }
4957        #[cfg(feature = "extra-children")]
4958        {
4959            emit_idx += 1;
4960        }
4961        #[cfg(feature = "extra-children")]
4962        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4963            extra_iter
4964                .next()
4965                .unwrap()
4966                .node
4967                .write_to(writer)
4968                .map_err(SerializeError::from)?;
4969        }
4970        if let Some(ref val) = self.page_break_before {
4971            val.write_element("w:pageBreakBefore", writer)?;
4972        }
4973        #[cfg(feature = "extra-children")]
4974        {
4975            emit_idx += 1;
4976        }
4977        #[cfg(feature = "extra-children")]
4978        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4979            extra_iter
4980                .next()
4981                .unwrap()
4982                .node
4983                .write_to(writer)
4984                .map_err(SerializeError::from)?;
4985        }
4986        if let Some(ref val) = self.frame_pr {
4987            val.write_element("w:framePr", writer)?;
4988        }
4989        #[cfg(feature = "extra-children")]
4990        {
4991            emit_idx += 1;
4992        }
4993        #[cfg(feature = "extra-children")]
4994        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4995            extra_iter
4996                .next()
4997                .unwrap()
4998                .node
4999                .write_to(writer)
5000                .map_err(SerializeError::from)?;
5001        }
5002        if let Some(ref val) = self.widow_control {
5003            val.write_element("w:widowControl", writer)?;
5004        }
5005        #[cfg(feature = "extra-children")]
5006        {
5007            emit_idx += 1;
5008        }
5009        #[cfg(feature = "extra-children")]
5010        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
5011            extra_iter
5012                .next()
5013                .unwrap()
5014                .node
5015                .write_to(writer)
5016                .map_err(SerializeError::from)?;
5017        }
5018        if let Some(ref val) = self.num_pr {
5019            val.write_element("w:numPr", writer)?;
5020        }
5021        #[cfg(feature = "extra-children")]
5022        {
5023            emit_idx += 1;
5024        }
5025        #[cfg(feature = "extra-children")]
5026        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
5027            extra_iter
5028                .next()
5029                .unwrap()
5030                .node
5031                .write_to(writer)
5032                .map_err(SerializeError::from)?;
5033        }
5034        if let Some(ref val) = self.suppress_line_numbers {
5035            val.write_element("w:suppressLineNumbers", writer)?;
5036        }
5037        #[cfg(feature = "extra-children")]
5038        {
5039            emit_idx += 1;
5040        }
5041        #[cfg(feature = "extra-children")]
5042        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
5043            extra_iter
5044                .next()
5045                .unwrap()
5046                .node
5047                .write_to(writer)
5048                .map_err(SerializeError::from)?;
5049        }
5050        if let Some(ref val) = self.paragraph_border {
5051            val.write_element("w:pBdr", writer)?;
5052        }
5053        #[cfg(feature = "extra-children")]
5054        {
5055            emit_idx += 1;
5056        }
5057        #[cfg(feature = "extra-children")]
5058        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
5059            extra_iter
5060                .next()
5061                .unwrap()
5062                .node
5063                .write_to(writer)
5064                .map_err(SerializeError::from)?;
5065        }
5066        if let Some(ref val) = self.shading {
5067            val.write_element("w:shd", writer)?;
5068        }
5069        #[cfg(feature = "extra-children")]
5070        {
5071            emit_idx += 1;
5072        }
5073        #[cfg(feature = "extra-children")]
5074        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
5075            extra_iter
5076                .next()
5077                .unwrap()
5078                .node
5079                .write_to(writer)
5080                .map_err(SerializeError::from)?;
5081        }
5082        if let Some(ref val) = self.tabs {
5083            val.write_element("w:tabs", writer)?;
5084        }
5085        #[cfg(feature = "extra-children")]
5086        {
5087            emit_idx += 1;
5088        }
5089        #[cfg(feature = "extra-children")]
5090        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
5091            extra_iter
5092                .next()
5093                .unwrap()
5094                .node
5095                .write_to(writer)
5096                .map_err(SerializeError::from)?;
5097        }
5098        if let Some(ref val) = self.suppress_auto_hyphens {
5099            val.write_element("w:suppressAutoHyphens", writer)?;
5100        }
5101        #[cfg(feature = "extra-children")]
5102        {
5103            emit_idx += 1;
5104        }
5105        #[cfg(feature = "extra-children")]
5106        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
5107            extra_iter
5108                .next()
5109                .unwrap()
5110                .node
5111                .write_to(writer)
5112                .map_err(SerializeError::from)?;
5113        }
5114        if let Some(ref val) = self.kinsoku {
5115            val.write_element("w:kinsoku", writer)?;
5116        }
5117        #[cfg(feature = "extra-children")]
5118        {
5119            emit_idx += 1;
5120        }
5121        #[cfg(feature = "extra-children")]
5122        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
5123            extra_iter
5124                .next()
5125                .unwrap()
5126                .node
5127                .write_to(writer)
5128                .map_err(SerializeError::from)?;
5129        }
5130        if let Some(ref val) = self.word_wrap {
5131            val.write_element("w:wordWrap", writer)?;
5132        }
5133        #[cfg(feature = "extra-children")]
5134        {
5135            emit_idx += 1;
5136        }
5137        #[cfg(feature = "extra-children")]
5138        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
5139            extra_iter
5140                .next()
5141                .unwrap()
5142                .node
5143                .write_to(writer)
5144                .map_err(SerializeError::from)?;
5145        }
5146        if let Some(ref val) = self.overflow_punct {
5147            val.write_element("w:overflowPunct", writer)?;
5148        }
5149        #[cfg(feature = "extra-children")]
5150        {
5151            emit_idx += 1;
5152        }
5153        #[cfg(feature = "extra-children")]
5154        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
5155            extra_iter
5156                .next()
5157                .unwrap()
5158                .node
5159                .write_to(writer)
5160                .map_err(SerializeError::from)?;
5161        }
5162        if let Some(ref val) = self.top_line_punct {
5163            val.write_element("w:topLinePunct", writer)?;
5164        }
5165        #[cfg(feature = "extra-children")]
5166        {
5167            emit_idx += 1;
5168        }
5169        #[cfg(feature = "extra-children")]
5170        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
5171            extra_iter
5172                .next()
5173                .unwrap()
5174                .node
5175                .write_to(writer)
5176                .map_err(SerializeError::from)?;
5177        }
5178        if let Some(ref val) = self.auto_space_d_e {
5179            val.write_element("w:autoSpaceDE", writer)?;
5180        }
5181        #[cfg(feature = "extra-children")]
5182        {
5183            emit_idx += 1;
5184        }
5185        #[cfg(feature = "extra-children")]
5186        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
5187            extra_iter
5188                .next()
5189                .unwrap()
5190                .node
5191                .write_to(writer)
5192                .map_err(SerializeError::from)?;
5193        }
5194        if let Some(ref val) = self.auto_space_d_n {
5195            val.write_element("w:autoSpaceDN", writer)?;
5196        }
5197        #[cfg(feature = "extra-children")]
5198        {
5199            emit_idx += 1;
5200        }
5201        #[cfg(feature = "extra-children")]
5202        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
5203            extra_iter
5204                .next()
5205                .unwrap()
5206                .node
5207                .write_to(writer)
5208                .map_err(SerializeError::from)?;
5209        }
5210        if let Some(ref val) = self.bidi {
5211            val.write_element("w:bidi", writer)?;
5212        }
5213        #[cfg(feature = "extra-children")]
5214        {
5215            emit_idx += 1;
5216        }
5217        #[cfg(feature = "extra-children")]
5218        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
5219            extra_iter
5220                .next()
5221                .unwrap()
5222                .node
5223                .write_to(writer)
5224                .map_err(SerializeError::from)?;
5225        }
5226        if let Some(ref val) = self.adjust_right_ind {
5227            val.write_element("w:adjustRightInd", writer)?;
5228        }
5229        #[cfg(feature = "extra-children")]
5230        {
5231            emit_idx += 1;
5232        }
5233        #[cfg(feature = "extra-children")]
5234        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
5235            extra_iter
5236                .next()
5237                .unwrap()
5238                .node
5239                .write_to(writer)
5240                .map_err(SerializeError::from)?;
5241        }
5242        if let Some(ref val) = self.snap_to_grid {
5243            val.write_element("w:snapToGrid", writer)?;
5244        }
5245        #[cfg(feature = "extra-children")]
5246        {
5247            emit_idx += 1;
5248        }
5249        #[cfg(feature = "extra-children")]
5250        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
5251            extra_iter
5252                .next()
5253                .unwrap()
5254                .node
5255                .write_to(writer)
5256                .map_err(SerializeError::from)?;
5257        }
5258        if let Some(ref val) = self.spacing {
5259            val.write_element("w:spacing", writer)?;
5260        }
5261        #[cfg(feature = "extra-children")]
5262        {
5263            emit_idx += 1;
5264        }
5265        #[cfg(feature = "extra-children")]
5266        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
5267            extra_iter
5268                .next()
5269                .unwrap()
5270                .node
5271                .write_to(writer)
5272                .map_err(SerializeError::from)?;
5273        }
5274        if let Some(ref val) = self.indentation {
5275            val.write_element("w:ind", writer)?;
5276        }
5277        #[cfg(feature = "extra-children")]
5278        {
5279            emit_idx += 1;
5280        }
5281        #[cfg(feature = "extra-children")]
5282        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
5283            extra_iter
5284                .next()
5285                .unwrap()
5286                .node
5287                .write_to(writer)
5288                .map_err(SerializeError::from)?;
5289        }
5290        if let Some(ref val) = self.contextual_spacing {
5291            val.write_element("w:contextualSpacing", writer)?;
5292        }
5293        #[cfg(feature = "extra-children")]
5294        {
5295            emit_idx += 1;
5296        }
5297        #[cfg(feature = "extra-children")]
5298        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
5299            extra_iter
5300                .next()
5301                .unwrap()
5302                .node
5303                .write_to(writer)
5304                .map_err(SerializeError::from)?;
5305        }
5306        if let Some(ref val) = self.mirror_indents {
5307            val.write_element("w:mirrorIndents", writer)?;
5308        }
5309        #[cfg(feature = "extra-children")]
5310        {
5311            emit_idx += 1;
5312        }
5313        #[cfg(feature = "extra-children")]
5314        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
5315            extra_iter
5316                .next()
5317                .unwrap()
5318                .node
5319                .write_to(writer)
5320                .map_err(SerializeError::from)?;
5321        }
5322        if let Some(ref val) = self.suppress_overlap {
5323            val.write_element("w:suppressOverlap", writer)?;
5324        }
5325        #[cfg(feature = "extra-children")]
5326        {
5327            emit_idx += 1;
5328        }
5329        #[cfg(feature = "extra-children")]
5330        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
5331            extra_iter
5332                .next()
5333                .unwrap()
5334                .node
5335                .write_to(writer)
5336                .map_err(SerializeError::from)?;
5337        }
5338        if let Some(ref val) = self.justification {
5339            val.write_element("w:jc", writer)?;
5340        }
5341        #[cfg(feature = "extra-children")]
5342        {
5343            emit_idx += 1;
5344        }
5345        #[cfg(feature = "extra-children")]
5346        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
5347            extra_iter
5348                .next()
5349                .unwrap()
5350                .node
5351                .write_to(writer)
5352                .map_err(SerializeError::from)?;
5353        }
5354        if let Some(ref val) = self.text_direction {
5355            val.write_element("w:textDirection", writer)?;
5356        }
5357        #[cfg(feature = "extra-children")]
5358        {
5359            emit_idx += 1;
5360        }
5361        #[cfg(feature = "extra-children")]
5362        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
5363            extra_iter
5364                .next()
5365                .unwrap()
5366                .node
5367                .write_to(writer)
5368                .map_err(SerializeError::from)?;
5369        }
5370        if let Some(ref val) = self.text_alignment {
5371            val.write_element("w:textAlignment", writer)?;
5372        }
5373        #[cfg(feature = "extra-children")]
5374        {
5375            emit_idx += 1;
5376        }
5377        #[cfg(feature = "extra-children")]
5378        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
5379            extra_iter
5380                .next()
5381                .unwrap()
5382                .node
5383                .write_to(writer)
5384                .map_err(SerializeError::from)?;
5385        }
5386        if let Some(ref val) = self.textbox_tight_wrap {
5387            val.write_element("w:textboxTightWrap", writer)?;
5388        }
5389        #[cfg(feature = "extra-children")]
5390        {
5391            emit_idx += 1;
5392        }
5393        #[cfg(feature = "extra-children")]
5394        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
5395            extra_iter
5396                .next()
5397                .unwrap()
5398                .node
5399                .write_to(writer)
5400                .map_err(SerializeError::from)?;
5401        }
5402        if let Some(ref val) = self.outline_lvl {
5403            val.write_element("w:outlineLvl", writer)?;
5404        }
5405        #[cfg(feature = "extra-children")]
5406        {
5407            emit_idx += 1;
5408        }
5409        #[cfg(feature = "extra-children")]
5410        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
5411            extra_iter
5412                .next()
5413                .unwrap()
5414                .node
5415                .write_to(writer)
5416                .map_err(SerializeError::from)?;
5417        }
5418        if let Some(ref val) = self.div_id {
5419            val.write_element("w:divId", writer)?;
5420        }
5421        #[cfg(feature = "extra-children")]
5422        {
5423            emit_idx += 1;
5424        }
5425        #[cfg(feature = "extra-children")]
5426        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
5427            extra_iter
5428                .next()
5429                .unwrap()
5430                .node
5431                .write_to(writer)
5432                .map_err(SerializeError::from)?;
5433        }
5434        if let Some(ref val) = self.cnf_style {
5435            val.write_element("w:cnfStyle", writer)?;
5436        }
5437        #[cfg(feature = "extra-children")]
5438        {
5439            emit_idx += 1;
5440        }
5441        #[cfg(feature = "extra-children")]
5442        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
5443            extra_iter
5444                .next()
5445                .unwrap()
5446                .node
5447                .write_to(writer)
5448                .map_err(SerializeError::from)?;
5449        }
5450        #[cfg(feature = "wml-track-changes")]
5451        if let Some(ref val) = self.p_pr_change {
5452            val.write_element("w:pPrChange", writer)?;
5453        }
5454        #[cfg(feature = "extra-children")]
5455        {
5456            emit_idx += 1;
5457        }
5458        #[cfg(feature = "extra-children")]
5459        for extra in extra_iter {
5460            extra.node.write_to(writer).map_err(SerializeError::from)?;
5461        }
5462        Ok(())
5463    }
5464
5465    fn is_empty_element(&self) -> bool {
5466        if self.paragraph_style.is_some() {
5467            return false;
5468        }
5469        if self.keep_next.is_some() {
5470            return false;
5471        }
5472        if self.keep_lines.is_some() {
5473            return false;
5474        }
5475        if self.page_break_before.is_some() {
5476            return false;
5477        }
5478        if self.frame_pr.is_some() {
5479            return false;
5480        }
5481        if self.widow_control.is_some() {
5482            return false;
5483        }
5484        if self.num_pr.is_some() {
5485            return false;
5486        }
5487        if self.suppress_line_numbers.is_some() {
5488            return false;
5489        }
5490        if self.paragraph_border.is_some() {
5491            return false;
5492        }
5493        if self.shading.is_some() {
5494            return false;
5495        }
5496        if self.tabs.is_some() {
5497            return false;
5498        }
5499        if self.suppress_auto_hyphens.is_some() {
5500            return false;
5501        }
5502        if self.kinsoku.is_some() {
5503            return false;
5504        }
5505        if self.word_wrap.is_some() {
5506            return false;
5507        }
5508        if self.overflow_punct.is_some() {
5509            return false;
5510        }
5511        if self.top_line_punct.is_some() {
5512            return false;
5513        }
5514        if self.auto_space_d_e.is_some() {
5515            return false;
5516        }
5517        if self.auto_space_d_n.is_some() {
5518            return false;
5519        }
5520        if self.bidi.is_some() {
5521            return false;
5522        }
5523        if self.adjust_right_ind.is_some() {
5524            return false;
5525        }
5526        if self.snap_to_grid.is_some() {
5527            return false;
5528        }
5529        if self.spacing.is_some() {
5530            return false;
5531        }
5532        if self.indentation.is_some() {
5533            return false;
5534        }
5535        if self.contextual_spacing.is_some() {
5536            return false;
5537        }
5538        if self.mirror_indents.is_some() {
5539            return false;
5540        }
5541        if self.suppress_overlap.is_some() {
5542            return false;
5543        }
5544        if self.justification.is_some() {
5545            return false;
5546        }
5547        if self.text_direction.is_some() {
5548            return false;
5549        }
5550        if self.text_alignment.is_some() {
5551            return false;
5552        }
5553        if self.textbox_tight_wrap.is_some() {
5554            return false;
5555        }
5556        if self.outline_lvl.is_some() {
5557            return false;
5558        }
5559        if self.div_id.is_some() {
5560            return false;
5561        }
5562        if self.cnf_style.is_some() {
5563            return false;
5564        }
5565        #[cfg(feature = "wml-track-changes")]
5566        if self.p_pr_change.is_some() {
5567            return false;
5568        }
5569        #[cfg(feature = "extra-children")]
5570        if !self.extra_children.is_empty() {
5571            return false;
5572        }
5573        true
5574    }
5575}
5576
5577impl ToXml for CTControl {
5578    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
5579        #[allow(unused_mut)]
5580        let mut start = start;
5581        #[cfg(feature = "wml-drawings")]
5582        if let Some(ref val) = self.name {
5583            start.push_attribute(("w:name", val.as_str()));
5584        }
5585        #[cfg(feature = "wml-drawings")]
5586        if let Some(ref val) = self.shapeid {
5587            start.push_attribute(("w:shapeid", val.as_str()));
5588        }
5589        #[cfg(feature = "wml-drawings")]
5590        if let Some(ref val) = self.id {
5591            start.push_attribute(("r:id", val.as_str()));
5592        }
5593        #[cfg(feature = "extra-attrs")]
5594        for (key, value) in &self.extra_attrs {
5595            start.push_attribute((key.as_str(), value.as_str()));
5596        }
5597        start
5598    }
5599
5600    fn is_empty_element(&self) -> bool {
5601        true
5602    }
5603}
5604
5605impl ToXml for CTBackground {
5606    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
5607        #[allow(unused_mut)]
5608        let mut start = start;
5609        #[cfg(feature = "wml-styling")]
5610        if let Some(ref val) = self.color {
5611            {
5612                let s = val.to_string();
5613                start.push_attribute(("w:color", s.as_str()));
5614            }
5615        }
5616        #[cfg(feature = "wml-styling")]
5617        if let Some(ref val) = self.theme_color {
5618            {
5619                let s = val.to_string();
5620                start.push_attribute(("w:themeColor", s.as_str()));
5621            }
5622        }
5623        #[cfg(feature = "wml-styling")]
5624        if let Some(ref val) = self.theme_tint {
5625            {
5626                let hex = encode_hex(val);
5627                start.push_attribute(("w:themeTint", hex.as_str()));
5628            }
5629        }
5630        #[cfg(feature = "wml-styling")]
5631        if let Some(ref val) = self.theme_shade {
5632            {
5633                let hex = encode_hex(val);
5634                start.push_attribute(("w:themeShade", hex.as_str()));
5635            }
5636        }
5637        #[cfg(feature = "extra-attrs")]
5638        for (key, value) in &self.extra_attrs {
5639            start.push_attribute((key.as_str(), value.as_str()));
5640        }
5641        start
5642    }
5643
5644    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
5645        #[cfg(feature = "extra-children")]
5646        let mut extra_iter = self.extra_children.iter().peekable();
5647        #[cfg(feature = "extra-children")]
5648        let mut emit_idx: usize = 0;
5649        #[cfg(feature = "extra-children")]
5650        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
5651            extra_iter
5652                .next()
5653                .unwrap()
5654                .node
5655                .write_to(writer)
5656                .map_err(SerializeError::from)?;
5657        }
5658        #[cfg(feature = "wml-drawings")]
5659        if let Some(ref val) = self.drawing {
5660            val.write_element("w:drawing", writer)?;
5661        }
5662        #[cfg(feature = "extra-children")]
5663        {
5664            emit_idx += 1;
5665        }
5666        #[cfg(feature = "extra-children")]
5667        for extra in extra_iter {
5668            extra.node.write_to(writer).map_err(SerializeError::from)?;
5669        }
5670        Ok(())
5671    }
5672
5673    fn is_empty_element(&self) -> bool {
5674        #[cfg(feature = "wml-drawings")]
5675        if self.drawing.is_some() {
5676            return false;
5677        }
5678        #[cfg(feature = "extra-children")]
5679        if !self.extra_children.is_empty() {
5680            return false;
5681        }
5682        true
5683    }
5684}
5685
5686impl ToXml for CTRel {
5687    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
5688        #[allow(unused_mut)]
5689        let mut start = start;
5690        {
5691            let val = &self.id;
5692            start.push_attribute(("r:id", val.as_str()));
5693        }
5694        #[cfg(feature = "extra-attrs")]
5695        for (key, value) in &self.extra_attrs {
5696            start.push_attribute((key.as_str(), value.as_str()));
5697        }
5698        start
5699    }
5700
5701    fn is_empty_element(&self) -> bool {
5702        true
5703    }
5704}
5705
5706impl ToXml for CTObject {
5707    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
5708        #[allow(unused_mut)]
5709        let mut start = start;
5710        #[cfg(feature = "wml-drawings")]
5711        if let Some(ref val) = self.dxa_orig {
5712            {
5713                let s = val.to_string();
5714                start.push_attribute(("w:dxaOrig", s.as_str()));
5715            }
5716        }
5717        #[cfg(feature = "wml-drawings")]
5718        if let Some(ref val) = self.dya_orig {
5719            {
5720                let s = val.to_string();
5721                start.push_attribute(("w:dyaOrig", s.as_str()));
5722            }
5723        }
5724        #[cfg(feature = "extra-attrs")]
5725        for (key, value) in &self.extra_attrs {
5726            start.push_attribute((key.as_str(), value.as_str()));
5727        }
5728        start
5729    }
5730
5731    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
5732        #[cfg(feature = "extra-children")]
5733        let mut extra_iter = self.extra_children.iter().peekable();
5734        #[cfg(feature = "extra-children")]
5735        let mut emit_idx: usize = 0;
5736        #[cfg(feature = "extra-children")]
5737        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
5738            extra_iter
5739                .next()
5740                .unwrap()
5741                .node
5742                .write_to(writer)
5743                .map_err(SerializeError::from)?;
5744        }
5745        #[cfg(feature = "wml-drawings")]
5746        if let Some(ref val) = self.drawing {
5747            val.write_element("w:drawing", writer)?;
5748        }
5749        #[cfg(feature = "extra-children")]
5750        {
5751            emit_idx += 1;
5752        }
5753        #[cfg(feature = "extra-children")]
5754        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
5755            extra_iter
5756                .next()
5757                .unwrap()
5758                .node
5759                .write_to(writer)
5760                .map_err(SerializeError::from)?;
5761        }
5762        #[cfg(feature = "wml-drawings")]
5763        if let Some(ref val) = self.control {
5764            val.write_element("w:control", writer)?;
5765        }
5766        #[cfg(feature = "extra-children")]
5767        {
5768            emit_idx += 1;
5769        }
5770        #[cfg(feature = "extra-children")]
5771        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
5772            extra_iter
5773                .next()
5774                .unwrap()
5775                .node
5776                .write_to(writer)
5777                .map_err(SerializeError::from)?;
5778        }
5779        #[cfg(feature = "wml-drawings")]
5780        if let Some(ref val) = self.object_link {
5781            val.write_element("w:objectLink", writer)?;
5782        }
5783        #[cfg(feature = "extra-children")]
5784        {
5785            emit_idx += 1;
5786        }
5787        #[cfg(feature = "extra-children")]
5788        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
5789            extra_iter
5790                .next()
5791                .unwrap()
5792                .node
5793                .write_to(writer)
5794                .map_err(SerializeError::from)?;
5795        }
5796        #[cfg(feature = "wml-drawings")]
5797        if let Some(ref val) = self.object_embed {
5798            val.write_element("w:objectEmbed", writer)?;
5799        }
5800        #[cfg(feature = "extra-children")]
5801        {
5802            emit_idx += 1;
5803        }
5804        #[cfg(feature = "extra-children")]
5805        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
5806            extra_iter
5807                .next()
5808                .unwrap()
5809                .node
5810                .write_to(writer)
5811                .map_err(SerializeError::from)?;
5812        }
5813        #[cfg(feature = "wml-drawings")]
5814        if let Some(ref val) = self.movie {
5815            val.write_element("w:movie", writer)?;
5816        }
5817        #[cfg(feature = "extra-children")]
5818        {
5819            emit_idx += 1;
5820        }
5821        #[cfg(feature = "extra-children")]
5822        for extra in extra_iter {
5823            extra.node.write_to(writer).map_err(SerializeError::from)?;
5824        }
5825        Ok(())
5826    }
5827
5828    fn is_empty_element(&self) -> bool {
5829        #[cfg(feature = "wml-drawings")]
5830        if self.drawing.is_some() {
5831            return false;
5832        }
5833        #[cfg(feature = "wml-drawings")]
5834        if self.control.is_some() {
5835            return false;
5836        }
5837        #[cfg(feature = "wml-drawings")]
5838        if self.object_link.is_some() {
5839            return false;
5840        }
5841        #[cfg(feature = "wml-drawings")]
5842        if self.object_embed.is_some() {
5843            return false;
5844        }
5845        #[cfg(feature = "wml-drawings")]
5846        if self.movie.is_some() {
5847            return false;
5848        }
5849        #[cfg(feature = "extra-children")]
5850        if !self.extra_children.is_empty() {
5851            return false;
5852        }
5853        true
5854    }
5855}
5856
5857impl ToXml for CTPicture {
5858    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
5859        #[cfg(feature = "extra-children")]
5860        let mut extra_iter = self.extra_children.iter().peekable();
5861        #[cfg(feature = "extra-children")]
5862        let mut emit_idx: usize = 0;
5863        #[cfg(feature = "extra-children")]
5864        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
5865            extra_iter
5866                .next()
5867                .unwrap()
5868                .node
5869                .write_to(writer)
5870                .map_err(SerializeError::from)?;
5871        }
5872        #[cfg(feature = "wml-drawings")]
5873        if let Some(ref val) = self.movie {
5874            val.write_element("w:movie", writer)?;
5875        }
5876        #[cfg(feature = "extra-children")]
5877        {
5878            emit_idx += 1;
5879        }
5880        #[cfg(feature = "extra-children")]
5881        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
5882            extra_iter
5883                .next()
5884                .unwrap()
5885                .node
5886                .write_to(writer)
5887                .map_err(SerializeError::from)?;
5888        }
5889        #[cfg(feature = "wml-drawings")]
5890        if let Some(ref val) = self.control {
5891            val.write_element("w:control", writer)?;
5892        }
5893        #[cfg(feature = "extra-children")]
5894        {
5895            emit_idx += 1;
5896        }
5897        #[cfg(feature = "extra-children")]
5898        for extra in extra_iter {
5899            extra.node.write_to(writer).map_err(SerializeError::from)?;
5900        }
5901        Ok(())
5902    }
5903
5904    fn is_empty_element(&self) -> bool {
5905        #[cfg(feature = "wml-drawings")]
5906        if self.movie.is_some() {
5907            return false;
5908        }
5909        #[cfg(feature = "wml-drawings")]
5910        if self.control.is_some() {
5911            return false;
5912        }
5913        #[cfg(feature = "extra-children")]
5914        if !self.extra_children.is_empty() {
5915            return false;
5916        }
5917        true
5918    }
5919}
5920
5921impl ToXml for CTObjectEmbed {
5922    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
5923        #[allow(unused_mut)]
5924        let mut start = start;
5925        #[cfg(feature = "wml-drawings")]
5926        if let Some(ref val) = self.draw_aspect {
5927            {
5928                let s = val.to_string();
5929                start.push_attribute(("w:drawAspect", s.as_str()));
5930            }
5931        }
5932        #[cfg(feature = "wml-drawings")]
5933        {
5934            let val = &self.id;
5935            start.push_attribute(("r:id", val.as_str()));
5936        }
5937        #[cfg(feature = "wml-drawings")]
5938        if let Some(ref val) = self.prog_id {
5939            start.push_attribute(("w:progId", val.as_str()));
5940        }
5941        #[cfg(feature = "wml-drawings")]
5942        if let Some(ref val) = self.shape_id {
5943            start.push_attribute(("w:shapeId", val.as_str()));
5944        }
5945        #[cfg(feature = "wml-drawings")]
5946        if let Some(ref val) = self.field_codes {
5947            start.push_attribute(("w:fieldCodes", val.as_str()));
5948        }
5949        #[cfg(feature = "extra-attrs")]
5950        for (key, value) in &self.extra_attrs {
5951            start.push_attribute((key.as_str(), value.as_str()));
5952        }
5953        start
5954    }
5955
5956    fn is_empty_element(&self) -> bool {
5957        true
5958    }
5959}
5960
5961impl ToXml for CTObjectLink {
5962    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
5963        #[allow(unused_mut)]
5964        let mut start = start;
5965        #[cfg(feature = "wml-drawings")]
5966        if let Some(ref val) = self.draw_aspect {
5967            {
5968                let s = val.to_string();
5969                start.push_attribute(("w:drawAspect", s.as_str()));
5970            }
5971        }
5972        #[cfg(feature = "wml-drawings")]
5973        {
5974            let val = &self.id;
5975            start.push_attribute(("r:id", val.as_str()));
5976        }
5977        #[cfg(feature = "wml-drawings")]
5978        if let Some(ref val) = self.prog_id {
5979            start.push_attribute(("w:progId", val.as_str()));
5980        }
5981        #[cfg(feature = "wml-drawings")]
5982        if let Some(ref val) = self.shape_id {
5983            start.push_attribute(("w:shapeId", val.as_str()));
5984        }
5985        #[cfg(feature = "wml-drawings")]
5986        if let Some(ref val) = self.field_codes {
5987            start.push_attribute(("w:fieldCodes", val.as_str()));
5988        }
5989        #[cfg(feature = "wml-drawings")]
5990        {
5991            let val = &self.update_mode;
5992            {
5993                let s = val.to_string();
5994                start.push_attribute(("w:updateMode", s.as_str()));
5995            }
5996        }
5997        #[cfg(feature = "wml-drawings")]
5998        if let Some(ref val) = self.locked_field {
5999            {
6000                let s = val.to_string();
6001                start.push_attribute(("w:lockedField", s.as_str()));
6002            }
6003        }
6004        #[cfg(feature = "extra-attrs")]
6005        for (key, value) in &self.extra_attrs {
6006            start.push_attribute((key.as_str(), value.as_str()));
6007        }
6008        start
6009    }
6010
6011    fn is_empty_element(&self) -> bool {
6012        true
6013    }
6014}
6015
6016impl ToXml for CTDrawing {
6017    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
6018        #[cfg(feature = "extra-children")]
6019        for child in &self.extra_children {
6020            child.node.write_to(writer).map_err(SerializeError::from)?;
6021        }
6022        Ok(())
6023    }
6024
6025    fn is_empty_element(&self) -> bool {
6026        #[cfg(feature = "extra-children")]
6027        if !self.extra_children.is_empty() {
6028            return false;
6029        }
6030        true
6031    }
6032}
6033
6034impl ToXml for CTSimpleField {
6035    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
6036        #[allow(unused_mut)]
6037        let mut start = start;
6038        {
6039            let val = &self.instr;
6040            start.push_attribute(("w:instr", val.as_str()));
6041        }
6042        #[cfg(feature = "wml-fields")]
6043        if let Some(ref val) = self.fld_lock {
6044            {
6045                let s = val.to_string();
6046                start.push_attribute(("w:fldLock", s.as_str()));
6047            }
6048        }
6049        #[cfg(feature = "wml-fields")]
6050        if let Some(ref val) = self.dirty {
6051            {
6052                let s = val.to_string();
6053                start.push_attribute(("w:dirty", s.as_str()));
6054            }
6055        }
6056        #[cfg(feature = "extra-attrs")]
6057        for (key, value) in &self.extra_attrs {
6058            start.push_attribute((key.as_str(), value.as_str()));
6059        }
6060        start
6061    }
6062
6063    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
6064        #[cfg(feature = "extra-children")]
6065        let mut extra_iter = self.extra_children.iter().peekable();
6066        #[cfg(feature = "extra-children")]
6067        let mut emit_idx: usize = 0;
6068        #[cfg(feature = "extra-children")]
6069        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
6070            extra_iter
6071                .next()
6072                .unwrap()
6073                .node
6074                .write_to(writer)
6075                .map_err(SerializeError::from)?;
6076        }
6077        #[cfg(feature = "wml-fields")]
6078        if let Some(ref val) = self.fld_data {
6079            val.write_element("w:fldData", writer)?;
6080        }
6081        #[cfg(feature = "extra-children")]
6082        {
6083            emit_idx += 1;
6084        }
6085        for item in &self.paragraph_content {
6086            #[cfg(feature = "extra-children")]
6087            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
6088                extra_iter
6089                    .next()
6090                    .unwrap()
6091                    .node
6092                    .write_to(writer)
6093                    .map_err(SerializeError::from)?;
6094            }
6095            item.write_element("", writer)?;
6096            #[cfg(feature = "extra-children")]
6097            {
6098                emit_idx += 1;
6099            }
6100        }
6101        #[cfg(feature = "extra-children")]
6102        for extra in extra_iter {
6103            extra.node.write_to(writer).map_err(SerializeError::from)?;
6104        }
6105        Ok(())
6106    }
6107
6108    fn is_empty_element(&self) -> bool {
6109        #[cfg(feature = "wml-fields")]
6110        if self.fld_data.is_some() {
6111            return false;
6112        }
6113        if !self.paragraph_content.is_empty() {
6114            return false;
6115        }
6116        #[cfg(feature = "extra-children")]
6117        if !self.extra_children.is_empty() {
6118            return false;
6119        }
6120        true
6121    }
6122}
6123
6124impl ToXml for CTFFTextType {
6125    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
6126        #[allow(unused_mut)]
6127        let mut start = start;
6128        {
6129            let val = &self.value;
6130            {
6131                let s = val.to_string();
6132                start.push_attribute(("w:val", s.as_str()));
6133            }
6134        }
6135        #[cfg(feature = "extra-attrs")]
6136        for (key, value) in &self.extra_attrs {
6137            start.push_attribute((key.as_str(), value.as_str()));
6138        }
6139        start
6140    }
6141
6142    fn is_empty_element(&self) -> bool {
6143        true
6144    }
6145}
6146
6147impl ToXml for FFNameElement {
6148    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
6149        #[allow(unused_mut)]
6150        let mut start = start;
6151        if let Some(ref val) = self.value {
6152            start.push_attribute(("w:val", val.as_str()));
6153        }
6154        #[cfg(feature = "extra-attrs")]
6155        for (key, value) in &self.extra_attrs {
6156            start.push_attribute((key.as_str(), value.as_str()));
6157        }
6158        start
6159    }
6160
6161    fn is_empty_element(&self) -> bool {
6162        true
6163    }
6164}
6165
6166impl ToXml for CTFldChar {
6167    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
6168        #[allow(unused_mut)]
6169        let mut start = start;
6170        {
6171            let val = &self.fld_char_type;
6172            {
6173                let s = val.to_string();
6174                start.push_attribute(("w:fldCharType", s.as_str()));
6175            }
6176        }
6177        #[cfg(feature = "wml-fields")]
6178        if let Some(ref val) = self.fld_lock {
6179            {
6180                let s = val.to_string();
6181                start.push_attribute(("w:fldLock", s.as_str()));
6182            }
6183        }
6184        #[cfg(feature = "wml-fields")]
6185        if let Some(ref val) = self.dirty {
6186            {
6187                let s = val.to_string();
6188                start.push_attribute(("w:dirty", s.as_str()));
6189            }
6190        }
6191        #[cfg(feature = "extra-attrs")]
6192        for (key, value) in &self.extra_attrs {
6193            start.push_attribute((key.as_str(), value.as_str()));
6194        }
6195        start
6196    }
6197
6198    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
6199        #[cfg(feature = "extra-children")]
6200        let mut extra_iter = self.extra_children.iter().peekable();
6201        #[cfg(feature = "extra-children")]
6202        let mut emit_idx: usize = 0;
6203        #[cfg(feature = "extra-children")]
6204        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
6205            extra_iter
6206                .next()
6207                .unwrap()
6208                .node
6209                .write_to(writer)
6210                .map_err(SerializeError::from)?;
6211        }
6212        #[cfg(feature = "wml-fields")]
6213        if let Some(ref val) = self.fld_data {
6214            val.write_element("w:fldData", writer)?;
6215        }
6216        #[cfg(feature = "extra-children")]
6217        {
6218            emit_idx += 1;
6219        }
6220        #[cfg(feature = "extra-children")]
6221        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
6222            extra_iter
6223                .next()
6224                .unwrap()
6225                .node
6226                .write_to(writer)
6227                .map_err(SerializeError::from)?;
6228        }
6229        #[cfg(feature = "wml-fields")]
6230        if let Some(ref val) = self.ff_data {
6231            val.write_element("w:ffData", writer)?;
6232        }
6233        #[cfg(feature = "extra-children")]
6234        {
6235            emit_idx += 1;
6236        }
6237        #[cfg(feature = "extra-children")]
6238        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
6239            extra_iter
6240                .next()
6241                .unwrap()
6242                .node
6243                .write_to(writer)
6244                .map_err(SerializeError::from)?;
6245        }
6246        #[cfg(feature = "wml-track-changes")]
6247        if let Some(ref val) = self.numbering_change {
6248            val.write_element("w:numberingChange", writer)?;
6249        }
6250        #[cfg(feature = "extra-children")]
6251        {
6252            emit_idx += 1;
6253        }
6254        #[cfg(feature = "extra-children")]
6255        for extra in extra_iter {
6256            extra.node.write_to(writer).map_err(SerializeError::from)?;
6257        }
6258        Ok(())
6259    }
6260
6261    fn is_empty_element(&self) -> bool {
6262        #[cfg(feature = "wml-fields")]
6263        if self.fld_data.is_some() {
6264            return false;
6265        }
6266        #[cfg(feature = "wml-fields")]
6267        if self.ff_data.is_some() {
6268            return false;
6269        }
6270        #[cfg(feature = "wml-track-changes")]
6271        if self.numbering_change.is_some() {
6272            return false;
6273        }
6274        #[cfg(feature = "extra-children")]
6275        if !self.extra_children.is_empty() {
6276            return false;
6277        }
6278        true
6279    }
6280}
6281
6282impl ToXml for Hyperlink {
6283    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
6284        #[allow(unused_mut)]
6285        let mut start = start;
6286        #[cfg(feature = "wml-hyperlinks")]
6287        if let Some(ref val) = self.tgt_frame {
6288            start.push_attribute(("w:tgtFrame", val.as_str()));
6289        }
6290        #[cfg(feature = "wml-hyperlinks")]
6291        if let Some(ref val) = self.tooltip {
6292            start.push_attribute(("w:tooltip", val.as_str()));
6293        }
6294        #[cfg(feature = "wml-hyperlinks")]
6295        if let Some(ref val) = self.doc_location {
6296            start.push_attribute(("w:docLocation", val.as_str()));
6297        }
6298        #[cfg(feature = "wml-hyperlinks")]
6299        if let Some(ref val) = self.history {
6300            {
6301                let s = val.to_string();
6302                start.push_attribute(("w:history", s.as_str()));
6303            }
6304        }
6305        #[cfg(feature = "wml-hyperlinks")]
6306        if let Some(ref val) = self.anchor {
6307            start.push_attribute(("w:anchor", val.as_str()));
6308        }
6309        #[cfg(feature = "wml-hyperlinks")]
6310        if let Some(ref val) = self.id {
6311            start.push_attribute(("r:id", val.as_str()));
6312        }
6313        #[cfg(feature = "extra-attrs")]
6314        for (key, value) in &self.extra_attrs {
6315            start.push_attribute((key.as_str(), value.as_str()));
6316        }
6317        start
6318    }
6319
6320    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
6321        #[cfg(feature = "extra-children")]
6322        let mut extra_iter = self.extra_children.iter().peekable();
6323        #[cfg(feature = "extra-children")]
6324        let mut emit_idx: usize = 0;
6325        for item in &self.paragraph_content {
6326            #[cfg(feature = "extra-children")]
6327            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
6328                extra_iter
6329                    .next()
6330                    .unwrap()
6331                    .node
6332                    .write_to(writer)
6333                    .map_err(SerializeError::from)?;
6334            }
6335            item.write_element("", writer)?;
6336            #[cfg(feature = "extra-children")]
6337            {
6338                emit_idx += 1;
6339            }
6340        }
6341        #[cfg(feature = "extra-children")]
6342        for extra in extra_iter {
6343            extra.node.write_to(writer).map_err(SerializeError::from)?;
6344        }
6345        Ok(())
6346    }
6347
6348    fn is_empty_element(&self) -> bool {
6349        if !self.paragraph_content.is_empty() {
6350            return false;
6351        }
6352        #[cfg(feature = "extra-children")]
6353        if !self.extra_children.is_empty() {
6354            return false;
6355        }
6356        true
6357    }
6358}
6359
6360impl ToXml for CTFFData {
6361    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
6362        #[cfg(feature = "extra-children")]
6363        let mut extra_iter = self.extra_children.iter().peekable();
6364        #[cfg(feature = "extra-children")]
6365        let mut emit_idx: usize = 0;
6366        #[cfg(feature = "wml-fields")]
6367        for item in &self.name {
6368            #[cfg(feature = "extra-children")]
6369            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
6370                extra_iter
6371                    .next()
6372                    .unwrap()
6373                    .node
6374                    .write_to(writer)
6375                    .map_err(SerializeError::from)?;
6376            }
6377            item.write_element("w:name", writer)?;
6378            #[cfg(feature = "extra-children")]
6379            {
6380                emit_idx += 1;
6381            }
6382        }
6383        #[cfg(feature = "extra-children")]
6384        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
6385            extra_iter
6386                .next()
6387                .unwrap()
6388                .node
6389                .write_to(writer)
6390                .map_err(SerializeError::from)?;
6391        }
6392        #[cfg(feature = "wml-fields")]
6393        if let Some(ref val) = self.label {
6394            val.write_element("w:label", writer)?;
6395        }
6396        #[cfg(feature = "extra-children")]
6397        {
6398            emit_idx += 1;
6399        }
6400        #[cfg(feature = "extra-children")]
6401        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
6402            extra_iter
6403                .next()
6404                .unwrap()
6405                .node
6406                .write_to(writer)
6407                .map_err(SerializeError::from)?;
6408        }
6409        #[cfg(feature = "wml-fields")]
6410        if let Some(ref val) = self.tab_index {
6411            val.write_element("w:tabIndex", writer)?;
6412        }
6413        #[cfg(feature = "extra-children")]
6414        {
6415            emit_idx += 1;
6416        }
6417        #[cfg(feature = "wml-fields")]
6418        for item in &self.enabled {
6419            #[cfg(feature = "extra-children")]
6420            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
6421                extra_iter
6422                    .next()
6423                    .unwrap()
6424                    .node
6425                    .write_to(writer)
6426                    .map_err(SerializeError::from)?;
6427            }
6428            item.write_element("w:enabled", writer)?;
6429            #[cfg(feature = "extra-children")]
6430            {
6431                emit_idx += 1;
6432            }
6433        }
6434        #[cfg(feature = "wml-fields")]
6435        for item in &self.calc_on_exit {
6436            #[cfg(feature = "extra-children")]
6437            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
6438                extra_iter
6439                    .next()
6440                    .unwrap()
6441                    .node
6442                    .write_to(writer)
6443                    .map_err(SerializeError::from)?;
6444            }
6445            item.write_element("w:calcOnExit", writer)?;
6446            #[cfg(feature = "extra-children")]
6447            {
6448                emit_idx += 1;
6449            }
6450        }
6451        #[cfg(feature = "extra-children")]
6452        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
6453            extra_iter
6454                .next()
6455                .unwrap()
6456                .node
6457                .write_to(writer)
6458                .map_err(SerializeError::from)?;
6459        }
6460        #[cfg(feature = "wml-fields")]
6461        if let Some(ref val) = self.entry_macro {
6462            val.write_element("w:entryMacro", writer)?;
6463        }
6464        #[cfg(feature = "extra-children")]
6465        {
6466            emit_idx += 1;
6467        }
6468        #[cfg(feature = "extra-children")]
6469        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
6470            extra_iter
6471                .next()
6472                .unwrap()
6473                .node
6474                .write_to(writer)
6475                .map_err(SerializeError::from)?;
6476        }
6477        #[cfg(feature = "wml-fields")]
6478        if let Some(ref val) = self.exit_macro {
6479            val.write_element("w:exitMacro", writer)?;
6480        }
6481        #[cfg(feature = "extra-children")]
6482        {
6483            emit_idx += 1;
6484        }
6485        #[cfg(feature = "extra-children")]
6486        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
6487            extra_iter
6488                .next()
6489                .unwrap()
6490                .node
6491                .write_to(writer)
6492                .map_err(SerializeError::from)?;
6493        }
6494        #[cfg(feature = "wml-fields")]
6495        if let Some(ref val) = self.help_text {
6496            val.write_element("w:helpText", writer)?;
6497        }
6498        #[cfg(feature = "extra-children")]
6499        {
6500            emit_idx += 1;
6501        }
6502        #[cfg(feature = "extra-children")]
6503        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
6504            extra_iter
6505                .next()
6506                .unwrap()
6507                .node
6508                .write_to(writer)
6509                .map_err(SerializeError::from)?;
6510        }
6511        #[cfg(feature = "wml-fields")]
6512        if let Some(ref val) = self.status_text {
6513            val.write_element("w:statusText", writer)?;
6514        }
6515        #[cfg(feature = "extra-children")]
6516        {
6517            emit_idx += 1;
6518        }
6519        #[cfg(feature = "extra-children")]
6520        for extra in extra_iter {
6521            extra.node.write_to(writer).map_err(SerializeError::from)?;
6522        }
6523        Ok(())
6524    }
6525
6526    fn is_empty_element(&self) -> bool {
6527        #[cfg(feature = "wml-fields")]
6528        if !self.name.is_empty() {
6529            return false;
6530        }
6531        #[cfg(feature = "wml-fields")]
6532        if self.label.is_some() {
6533            return false;
6534        }
6535        #[cfg(feature = "wml-fields")]
6536        if self.tab_index.is_some() {
6537            return false;
6538        }
6539        #[cfg(feature = "wml-fields")]
6540        if !self.enabled.is_empty() {
6541            return false;
6542        }
6543        #[cfg(feature = "wml-fields")]
6544        if !self.calc_on_exit.is_empty() {
6545            return false;
6546        }
6547        #[cfg(feature = "wml-fields")]
6548        if self.entry_macro.is_some() {
6549            return false;
6550        }
6551        #[cfg(feature = "wml-fields")]
6552        if self.exit_macro.is_some() {
6553            return false;
6554        }
6555        #[cfg(feature = "wml-fields")]
6556        if self.help_text.is_some() {
6557            return false;
6558        }
6559        #[cfg(feature = "wml-fields")]
6560        if self.status_text.is_some() {
6561            return false;
6562        }
6563        #[cfg(feature = "extra-children")]
6564        if !self.extra_children.is_empty() {
6565            return false;
6566        }
6567        true
6568    }
6569}
6570
6571impl ToXml for CTFFHelpText {
6572    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
6573        #[allow(unused_mut)]
6574        let mut start = start;
6575        if let Some(ref val) = self.r#type {
6576            {
6577                let s = val.to_string();
6578                start.push_attribute(("w:type", s.as_str()));
6579            }
6580        }
6581        if let Some(ref val) = self.value {
6582            start.push_attribute(("w:val", val.as_str()));
6583        }
6584        #[cfg(feature = "extra-attrs")]
6585        for (key, value) in &self.extra_attrs {
6586            start.push_attribute((key.as_str(), value.as_str()));
6587        }
6588        start
6589    }
6590
6591    fn is_empty_element(&self) -> bool {
6592        true
6593    }
6594}
6595
6596impl ToXml for CTFFStatusText {
6597    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
6598        #[allow(unused_mut)]
6599        let mut start = start;
6600        if let Some(ref val) = self.r#type {
6601            {
6602                let s = val.to_string();
6603                start.push_attribute(("w:type", s.as_str()));
6604            }
6605        }
6606        if let Some(ref val) = self.value {
6607            start.push_attribute(("w:val", val.as_str()));
6608        }
6609        #[cfg(feature = "extra-attrs")]
6610        for (key, value) in &self.extra_attrs {
6611            start.push_attribute((key.as_str(), value.as_str()));
6612        }
6613        start
6614    }
6615
6616    fn is_empty_element(&self) -> bool {
6617        true
6618    }
6619}
6620
6621impl ToXml for CTFFCheckBox {
6622    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
6623        #[cfg(feature = "extra-children")]
6624        let mut extra_iter = self.extra_children.iter().peekable();
6625        #[cfg(feature = "extra-children")]
6626        let mut emit_idx: usize = 0;
6627        #[cfg(feature = "extra-children")]
6628        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
6629            extra_iter
6630                .next()
6631                .unwrap()
6632                .node
6633                .write_to(writer)
6634                .map_err(SerializeError::from)?;
6635        }
6636        #[cfg(feature = "wml-fields")]
6637        if let Some(ref val) = self.size {
6638            val.write_element("w:size", writer)?;
6639        }
6640        #[cfg(feature = "extra-children")]
6641        {
6642            emit_idx += 1;
6643        }
6644        #[cfg(feature = "extra-children")]
6645        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
6646            extra_iter
6647                .next()
6648                .unwrap()
6649                .node
6650                .write_to(writer)
6651                .map_err(SerializeError::from)?;
6652        }
6653        #[cfg(feature = "wml-fields")]
6654        if let Some(ref val) = self.size_auto {
6655            val.write_element("w:sizeAuto", writer)?;
6656        }
6657        #[cfg(feature = "extra-children")]
6658        {
6659            emit_idx += 1;
6660        }
6661        #[cfg(feature = "extra-children")]
6662        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
6663            extra_iter
6664                .next()
6665                .unwrap()
6666                .node
6667                .write_to(writer)
6668                .map_err(SerializeError::from)?;
6669        }
6670        #[cfg(feature = "wml-fields")]
6671        if let Some(ref val) = self.default {
6672            val.write_element("w:default", writer)?;
6673        }
6674        #[cfg(feature = "extra-children")]
6675        {
6676            emit_idx += 1;
6677        }
6678        #[cfg(feature = "extra-children")]
6679        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
6680            extra_iter
6681                .next()
6682                .unwrap()
6683                .node
6684                .write_to(writer)
6685                .map_err(SerializeError::from)?;
6686        }
6687        #[cfg(feature = "wml-fields")]
6688        if let Some(ref val) = self.checked {
6689            val.write_element("w:checked", writer)?;
6690        }
6691        #[cfg(feature = "extra-children")]
6692        {
6693            emit_idx += 1;
6694        }
6695        #[cfg(feature = "extra-children")]
6696        for extra in extra_iter {
6697            extra.node.write_to(writer).map_err(SerializeError::from)?;
6698        }
6699        Ok(())
6700    }
6701
6702    fn is_empty_element(&self) -> bool {
6703        #[cfg(feature = "wml-fields")]
6704        if self.size.is_some() {
6705            return false;
6706        }
6707        #[cfg(feature = "wml-fields")]
6708        if self.size_auto.is_some() {
6709            return false;
6710        }
6711        #[cfg(feature = "wml-fields")]
6712        if self.default.is_some() {
6713            return false;
6714        }
6715        #[cfg(feature = "wml-fields")]
6716        if self.checked.is_some() {
6717            return false;
6718        }
6719        #[cfg(feature = "extra-children")]
6720        if !self.extra_children.is_empty() {
6721            return false;
6722        }
6723        true
6724    }
6725}
6726
6727impl ToXml for CTFFDDList {
6728    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
6729        #[cfg(feature = "extra-children")]
6730        let mut extra_iter = self.extra_children.iter().peekable();
6731        #[cfg(feature = "extra-children")]
6732        let mut emit_idx: usize = 0;
6733        #[cfg(feature = "extra-children")]
6734        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
6735            extra_iter
6736                .next()
6737                .unwrap()
6738                .node
6739                .write_to(writer)
6740                .map_err(SerializeError::from)?;
6741        }
6742        #[cfg(feature = "wml-fields")]
6743        if let Some(ref val) = self.result {
6744            val.write_element("w:result", writer)?;
6745        }
6746        #[cfg(feature = "extra-children")]
6747        {
6748            emit_idx += 1;
6749        }
6750        #[cfg(feature = "extra-children")]
6751        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
6752            extra_iter
6753                .next()
6754                .unwrap()
6755                .node
6756                .write_to(writer)
6757                .map_err(SerializeError::from)?;
6758        }
6759        #[cfg(feature = "wml-fields")]
6760        if let Some(ref val) = self.default {
6761            val.write_element("w:default", writer)?;
6762        }
6763        #[cfg(feature = "extra-children")]
6764        {
6765            emit_idx += 1;
6766        }
6767        #[cfg(feature = "wml-fields")]
6768        for item in &self.list_entry {
6769            #[cfg(feature = "extra-children")]
6770            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
6771                extra_iter
6772                    .next()
6773                    .unwrap()
6774                    .node
6775                    .write_to(writer)
6776                    .map_err(SerializeError::from)?;
6777            }
6778            item.write_element("w:listEntry", writer)?;
6779            #[cfg(feature = "extra-children")]
6780            {
6781                emit_idx += 1;
6782            }
6783        }
6784        #[cfg(feature = "extra-children")]
6785        for extra in extra_iter {
6786            extra.node.write_to(writer).map_err(SerializeError::from)?;
6787        }
6788        Ok(())
6789    }
6790
6791    fn is_empty_element(&self) -> bool {
6792        #[cfg(feature = "wml-fields")]
6793        if self.result.is_some() {
6794            return false;
6795        }
6796        #[cfg(feature = "wml-fields")]
6797        if self.default.is_some() {
6798            return false;
6799        }
6800        #[cfg(feature = "wml-fields")]
6801        if !self.list_entry.is_empty() {
6802            return false;
6803        }
6804        #[cfg(feature = "extra-children")]
6805        if !self.extra_children.is_empty() {
6806            return false;
6807        }
6808        true
6809    }
6810}
6811
6812impl ToXml for CTFFTextInput {
6813    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
6814        #[cfg(feature = "extra-children")]
6815        let mut extra_iter = self.extra_children.iter().peekable();
6816        #[cfg(feature = "extra-children")]
6817        let mut emit_idx: usize = 0;
6818        #[cfg(feature = "extra-children")]
6819        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
6820            extra_iter
6821                .next()
6822                .unwrap()
6823                .node
6824                .write_to(writer)
6825                .map_err(SerializeError::from)?;
6826        }
6827        #[cfg(feature = "wml-fields")]
6828        if let Some(ref val) = self.r#type {
6829            val.write_element("w:type", writer)?;
6830        }
6831        #[cfg(feature = "extra-children")]
6832        {
6833            emit_idx += 1;
6834        }
6835        #[cfg(feature = "extra-children")]
6836        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
6837            extra_iter
6838                .next()
6839                .unwrap()
6840                .node
6841                .write_to(writer)
6842                .map_err(SerializeError::from)?;
6843        }
6844        #[cfg(feature = "wml-fields")]
6845        if let Some(ref val) = self.default {
6846            val.write_element("w:default", writer)?;
6847        }
6848        #[cfg(feature = "extra-children")]
6849        {
6850            emit_idx += 1;
6851        }
6852        #[cfg(feature = "extra-children")]
6853        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
6854            extra_iter
6855                .next()
6856                .unwrap()
6857                .node
6858                .write_to(writer)
6859                .map_err(SerializeError::from)?;
6860        }
6861        #[cfg(feature = "wml-fields")]
6862        if let Some(ref val) = self.max_length {
6863            val.write_element("w:maxLength", writer)?;
6864        }
6865        #[cfg(feature = "extra-children")]
6866        {
6867            emit_idx += 1;
6868        }
6869        #[cfg(feature = "extra-children")]
6870        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
6871            extra_iter
6872                .next()
6873                .unwrap()
6874                .node
6875                .write_to(writer)
6876                .map_err(SerializeError::from)?;
6877        }
6878        #[cfg(feature = "wml-fields")]
6879        if let Some(ref val) = self.format {
6880            val.write_element("w:format", writer)?;
6881        }
6882        #[cfg(feature = "extra-children")]
6883        {
6884            emit_idx += 1;
6885        }
6886        #[cfg(feature = "extra-children")]
6887        for extra in extra_iter {
6888            extra.node.write_to(writer).map_err(SerializeError::from)?;
6889        }
6890        Ok(())
6891    }
6892
6893    fn is_empty_element(&self) -> bool {
6894        #[cfg(feature = "wml-fields")]
6895        if self.r#type.is_some() {
6896            return false;
6897        }
6898        #[cfg(feature = "wml-fields")]
6899        if self.default.is_some() {
6900            return false;
6901        }
6902        #[cfg(feature = "wml-fields")]
6903        if self.max_length.is_some() {
6904            return false;
6905        }
6906        #[cfg(feature = "wml-fields")]
6907        if self.format.is_some() {
6908            return false;
6909        }
6910        #[cfg(feature = "extra-children")]
6911        if !self.extra_children.is_empty() {
6912            return false;
6913        }
6914        true
6915    }
6916}
6917
6918impl ToXml for CTSectType {
6919    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
6920        #[allow(unused_mut)]
6921        let mut start = start;
6922        if let Some(ref val) = self.value {
6923            {
6924                let s = val.to_string();
6925                start.push_attribute(("w:val", s.as_str()));
6926            }
6927        }
6928        #[cfg(feature = "extra-attrs")]
6929        for (key, value) in &self.extra_attrs {
6930            start.push_attribute((key.as_str(), value.as_str()));
6931        }
6932        start
6933    }
6934
6935    fn is_empty_element(&self) -> bool {
6936        true
6937    }
6938}
6939
6940impl ToXml for CTPaperSource {
6941    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
6942        #[allow(unused_mut)]
6943        let mut start = start;
6944        #[cfg(feature = "wml-layout")]
6945        if let Some(ref val) = self.first {
6946            {
6947                let s = val.to_string();
6948                start.push_attribute(("w:first", s.as_str()));
6949            }
6950        }
6951        #[cfg(feature = "wml-layout")]
6952        if let Some(ref val) = self.other {
6953            {
6954                let s = val.to_string();
6955                start.push_attribute(("w:other", s.as_str()));
6956            }
6957        }
6958        #[cfg(feature = "extra-attrs")]
6959        for (key, value) in &self.extra_attrs {
6960            start.push_attribute((key.as_str(), value.as_str()));
6961        }
6962        start
6963    }
6964
6965    fn is_empty_element(&self) -> bool {
6966        true
6967    }
6968}
6969
6970impl ToXml for PageSize {
6971    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
6972        #[allow(unused_mut)]
6973        let mut start = start;
6974        #[cfg(feature = "wml-layout")]
6975        if let Some(ref val) = self.width {
6976            {
6977                let s = val.to_string();
6978                start.push_attribute(("w:w", s.as_str()));
6979            }
6980        }
6981        #[cfg(feature = "wml-layout")]
6982        if let Some(ref val) = self.height {
6983            {
6984                let s = val.to_string();
6985                start.push_attribute(("w:h", s.as_str()));
6986            }
6987        }
6988        #[cfg(feature = "wml-layout")]
6989        if let Some(ref val) = self.orient {
6990            {
6991                let s = val.to_string();
6992                start.push_attribute(("w:orient", s.as_str()));
6993            }
6994        }
6995        #[cfg(feature = "wml-layout")]
6996        if let Some(ref val) = self.code {
6997            {
6998                let s = val.to_string();
6999                start.push_attribute(("w:code", s.as_str()));
7000            }
7001        }
7002        #[cfg(feature = "extra-attrs")]
7003        for (key, value) in &self.extra_attrs {
7004            start.push_attribute((key.as_str(), value.as_str()));
7005        }
7006        start
7007    }
7008
7009    fn is_empty_element(&self) -> bool {
7010        true
7011    }
7012}
7013
7014impl ToXml for PageMargins {
7015    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
7016        #[allow(unused_mut)]
7017        let mut start = start;
7018        #[cfg(feature = "wml-layout")]
7019        {
7020            let val = &self.top;
7021            {
7022                let s = val.to_string();
7023                start.push_attribute(("w:top", s.as_str()));
7024            }
7025        }
7026        #[cfg(feature = "wml-layout")]
7027        {
7028            let val = &self.right;
7029            {
7030                let s = val.to_string();
7031                start.push_attribute(("w:right", s.as_str()));
7032            }
7033        }
7034        #[cfg(feature = "wml-layout")]
7035        {
7036            let val = &self.bottom;
7037            {
7038                let s = val.to_string();
7039                start.push_attribute(("w:bottom", s.as_str()));
7040            }
7041        }
7042        #[cfg(feature = "wml-layout")]
7043        {
7044            let val = &self.left;
7045            {
7046                let s = val.to_string();
7047                start.push_attribute(("w:left", s.as_str()));
7048            }
7049        }
7050        #[cfg(feature = "wml-layout")]
7051        {
7052            let val = &self.header;
7053            {
7054                let s = val.to_string();
7055                start.push_attribute(("w:header", s.as_str()));
7056            }
7057        }
7058        #[cfg(feature = "wml-layout")]
7059        {
7060            let val = &self.footer;
7061            {
7062                let s = val.to_string();
7063                start.push_attribute(("w:footer", s.as_str()));
7064            }
7065        }
7066        #[cfg(feature = "wml-layout")]
7067        {
7068            let val = &self.gutter;
7069            {
7070                let s = val.to_string();
7071                start.push_attribute(("w:gutter", s.as_str()));
7072            }
7073        }
7074        #[cfg(feature = "extra-attrs")]
7075        for (key, value) in &self.extra_attrs {
7076            start.push_attribute((key.as_str(), value.as_str()));
7077        }
7078        start
7079    }
7080
7081    fn is_empty_element(&self) -> bool {
7082        true
7083    }
7084}
7085
7086impl ToXml for CTPageBorders {
7087    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
7088        #[allow(unused_mut)]
7089        let mut start = start;
7090        #[cfg(feature = "wml-layout")]
7091        if let Some(ref val) = self.z_order {
7092            {
7093                let s = val.to_string();
7094                start.push_attribute(("w:zOrder", s.as_str()));
7095            }
7096        }
7097        #[cfg(feature = "wml-layout")]
7098        if let Some(ref val) = self.display {
7099            {
7100                let s = val.to_string();
7101                start.push_attribute(("w:display", s.as_str()));
7102            }
7103        }
7104        #[cfg(feature = "wml-layout")]
7105        if let Some(ref val) = self.offset_from {
7106            {
7107                let s = val.to_string();
7108                start.push_attribute(("w:offsetFrom", s.as_str()));
7109            }
7110        }
7111        #[cfg(feature = "extra-attrs")]
7112        for (key, value) in &self.extra_attrs {
7113            start.push_attribute((key.as_str(), value.as_str()));
7114        }
7115        start
7116    }
7117
7118    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
7119        #[cfg(feature = "extra-children")]
7120        let mut extra_iter = self.extra_children.iter().peekable();
7121        #[cfg(feature = "extra-children")]
7122        let mut emit_idx: usize = 0;
7123        #[cfg(feature = "extra-children")]
7124        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
7125            extra_iter
7126                .next()
7127                .unwrap()
7128                .node
7129                .write_to(writer)
7130                .map_err(SerializeError::from)?;
7131        }
7132        #[cfg(feature = "wml-layout")]
7133        if let Some(ref val) = self.top {
7134            val.write_element("w:top", writer)?;
7135        }
7136        #[cfg(feature = "extra-children")]
7137        {
7138            emit_idx += 1;
7139        }
7140        #[cfg(feature = "extra-children")]
7141        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
7142            extra_iter
7143                .next()
7144                .unwrap()
7145                .node
7146                .write_to(writer)
7147                .map_err(SerializeError::from)?;
7148        }
7149        #[cfg(feature = "wml-layout")]
7150        if let Some(ref val) = self.left {
7151            val.write_element("w:left", writer)?;
7152        }
7153        #[cfg(feature = "extra-children")]
7154        {
7155            emit_idx += 1;
7156        }
7157        #[cfg(feature = "extra-children")]
7158        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
7159            extra_iter
7160                .next()
7161                .unwrap()
7162                .node
7163                .write_to(writer)
7164                .map_err(SerializeError::from)?;
7165        }
7166        #[cfg(feature = "wml-layout")]
7167        if let Some(ref val) = self.bottom {
7168            val.write_element("w:bottom", writer)?;
7169        }
7170        #[cfg(feature = "extra-children")]
7171        {
7172            emit_idx += 1;
7173        }
7174        #[cfg(feature = "extra-children")]
7175        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
7176            extra_iter
7177                .next()
7178                .unwrap()
7179                .node
7180                .write_to(writer)
7181                .map_err(SerializeError::from)?;
7182        }
7183        #[cfg(feature = "wml-layout")]
7184        if let Some(ref val) = self.right {
7185            val.write_element("w:right", writer)?;
7186        }
7187        #[cfg(feature = "extra-children")]
7188        {
7189            emit_idx += 1;
7190        }
7191        #[cfg(feature = "extra-children")]
7192        for extra in extra_iter {
7193            extra.node.write_to(writer).map_err(SerializeError::from)?;
7194        }
7195        Ok(())
7196    }
7197
7198    fn is_empty_element(&self) -> bool {
7199        #[cfg(feature = "wml-layout")]
7200        if self.top.is_some() {
7201            return false;
7202        }
7203        #[cfg(feature = "wml-layout")]
7204        if self.left.is_some() {
7205            return false;
7206        }
7207        #[cfg(feature = "wml-layout")]
7208        if self.bottom.is_some() {
7209            return false;
7210        }
7211        #[cfg(feature = "wml-layout")]
7212        if self.right.is_some() {
7213            return false;
7214        }
7215        #[cfg(feature = "extra-children")]
7216        if !self.extra_children.is_empty() {
7217            return false;
7218        }
7219        true
7220    }
7221}
7222
7223impl ToXml for CTPageBorder {
7224    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
7225        #[allow(unused_mut)]
7226        let mut start = start;
7227        {
7228            let val = &self.value;
7229            {
7230                let s = val.to_string();
7231                start.push_attribute(("w:val", s.as_str()));
7232            }
7233        }
7234        if let Some(ref val) = self.color {
7235            {
7236                let s = val.to_string();
7237                start.push_attribute(("w:color", s.as_str()));
7238            }
7239        }
7240        if let Some(ref val) = self.theme_color {
7241            {
7242                let s = val.to_string();
7243                start.push_attribute(("w:themeColor", s.as_str()));
7244            }
7245        }
7246        if let Some(ref val) = self.theme_tint {
7247            {
7248                let hex = encode_hex(val);
7249                start.push_attribute(("w:themeTint", hex.as_str()));
7250            }
7251        }
7252        if let Some(ref val) = self.theme_shade {
7253            {
7254                let hex = encode_hex(val);
7255                start.push_attribute(("w:themeShade", hex.as_str()));
7256            }
7257        }
7258        if let Some(ref val) = self.size {
7259            {
7260                let s = val.to_string();
7261                start.push_attribute(("w:sz", s.as_str()));
7262            }
7263        }
7264        if let Some(ref val) = self.space {
7265            {
7266                let s = val.to_string();
7267                start.push_attribute(("w:space", s.as_str()));
7268            }
7269        }
7270        if let Some(ref val) = self.shadow {
7271            {
7272                let s = val.to_string();
7273                start.push_attribute(("w:shadow", s.as_str()));
7274            }
7275        }
7276        if let Some(ref val) = self.frame {
7277            {
7278                let s = val.to_string();
7279                start.push_attribute(("w:frame", s.as_str()));
7280            }
7281        }
7282        #[cfg(feature = "wml-layout")]
7283        if let Some(ref val) = self.id {
7284            start.push_attribute(("r:id", val.as_str()));
7285        }
7286        #[cfg(feature = "extra-attrs")]
7287        for (key, value) in &self.extra_attrs {
7288            start.push_attribute((key.as_str(), value.as_str()));
7289        }
7290        start
7291    }
7292
7293    fn is_empty_element(&self) -> bool {
7294        true
7295    }
7296}
7297
7298impl ToXml for CTBottomPageBorder {
7299    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
7300        #[allow(unused_mut)]
7301        let mut start = start;
7302        {
7303            let val = &self.value;
7304            {
7305                let s = val.to_string();
7306                start.push_attribute(("w:val", s.as_str()));
7307            }
7308        }
7309        if let Some(ref val) = self.color {
7310            {
7311                let s = val.to_string();
7312                start.push_attribute(("w:color", s.as_str()));
7313            }
7314        }
7315        if let Some(ref val) = self.theme_color {
7316            {
7317                let s = val.to_string();
7318                start.push_attribute(("w:themeColor", s.as_str()));
7319            }
7320        }
7321        if let Some(ref val) = self.theme_tint {
7322            {
7323                let hex = encode_hex(val);
7324                start.push_attribute(("w:themeTint", hex.as_str()));
7325            }
7326        }
7327        if let Some(ref val) = self.theme_shade {
7328            {
7329                let hex = encode_hex(val);
7330                start.push_attribute(("w:themeShade", hex.as_str()));
7331            }
7332        }
7333        if let Some(ref val) = self.size {
7334            {
7335                let s = val.to_string();
7336                start.push_attribute(("w:sz", s.as_str()));
7337            }
7338        }
7339        if let Some(ref val) = self.space {
7340            {
7341                let s = val.to_string();
7342                start.push_attribute(("w:space", s.as_str()));
7343            }
7344        }
7345        if let Some(ref val) = self.shadow {
7346            {
7347                let s = val.to_string();
7348                start.push_attribute(("w:shadow", s.as_str()));
7349            }
7350        }
7351        if let Some(ref val) = self.frame {
7352            {
7353                let s = val.to_string();
7354                start.push_attribute(("w:frame", s.as_str()));
7355            }
7356        }
7357        if let Some(ref val) = self.id {
7358            start.push_attribute(("r:id", val.as_str()));
7359        }
7360        #[cfg(feature = "wml-layout")]
7361        if let Some(ref val) = self.bottom_left {
7362            start.push_attribute(("r:bottomLeft", val.as_str()));
7363        }
7364        #[cfg(feature = "wml-layout")]
7365        if let Some(ref val) = self.bottom_right {
7366            start.push_attribute(("r:bottomRight", val.as_str()));
7367        }
7368        #[cfg(feature = "extra-attrs")]
7369        for (key, value) in &self.extra_attrs {
7370            start.push_attribute((key.as_str(), value.as_str()));
7371        }
7372        start
7373    }
7374
7375    fn is_empty_element(&self) -> bool {
7376        true
7377    }
7378}
7379
7380impl ToXml for CTTopPageBorder {
7381    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
7382        #[allow(unused_mut)]
7383        let mut start = start;
7384        {
7385            let val = &self.value;
7386            {
7387                let s = val.to_string();
7388                start.push_attribute(("w:val", s.as_str()));
7389            }
7390        }
7391        if let Some(ref val) = self.color {
7392            {
7393                let s = val.to_string();
7394                start.push_attribute(("w:color", s.as_str()));
7395            }
7396        }
7397        if let Some(ref val) = self.theme_color {
7398            {
7399                let s = val.to_string();
7400                start.push_attribute(("w:themeColor", s.as_str()));
7401            }
7402        }
7403        if let Some(ref val) = self.theme_tint {
7404            {
7405                let hex = encode_hex(val);
7406                start.push_attribute(("w:themeTint", hex.as_str()));
7407            }
7408        }
7409        if let Some(ref val) = self.theme_shade {
7410            {
7411                let hex = encode_hex(val);
7412                start.push_attribute(("w:themeShade", hex.as_str()));
7413            }
7414        }
7415        if let Some(ref val) = self.size {
7416            {
7417                let s = val.to_string();
7418                start.push_attribute(("w:sz", s.as_str()));
7419            }
7420        }
7421        if let Some(ref val) = self.space {
7422            {
7423                let s = val.to_string();
7424                start.push_attribute(("w:space", s.as_str()));
7425            }
7426        }
7427        if let Some(ref val) = self.shadow {
7428            {
7429                let s = val.to_string();
7430                start.push_attribute(("w:shadow", s.as_str()));
7431            }
7432        }
7433        if let Some(ref val) = self.frame {
7434            {
7435                let s = val.to_string();
7436                start.push_attribute(("w:frame", s.as_str()));
7437            }
7438        }
7439        if let Some(ref val) = self.id {
7440            start.push_attribute(("r:id", val.as_str()));
7441        }
7442        #[cfg(feature = "wml-layout")]
7443        if let Some(ref val) = self.top_left {
7444            start.push_attribute(("r:topLeft", val.as_str()));
7445        }
7446        #[cfg(feature = "wml-layout")]
7447        if let Some(ref val) = self.top_right {
7448            start.push_attribute(("r:topRight", val.as_str()));
7449        }
7450        #[cfg(feature = "extra-attrs")]
7451        for (key, value) in &self.extra_attrs {
7452            start.push_attribute((key.as_str(), value.as_str()));
7453        }
7454        start
7455    }
7456
7457    fn is_empty_element(&self) -> bool {
7458        true
7459    }
7460}
7461
7462impl ToXml for CTLineNumber {
7463    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
7464        #[allow(unused_mut)]
7465        let mut start = start;
7466        #[cfg(feature = "wml-layout")]
7467        if let Some(ref val) = self.count_by {
7468            {
7469                let s = val.to_string();
7470                start.push_attribute(("w:countBy", s.as_str()));
7471            }
7472        }
7473        #[cfg(feature = "wml-layout")]
7474        if let Some(ref val) = self.start {
7475            {
7476                let s = val.to_string();
7477                start.push_attribute(("w:start", s.as_str()));
7478            }
7479        }
7480        #[cfg(feature = "wml-layout")]
7481        if let Some(ref val) = self.distance {
7482            {
7483                let s = val.to_string();
7484                start.push_attribute(("w:distance", s.as_str()));
7485            }
7486        }
7487        #[cfg(feature = "wml-layout")]
7488        if let Some(ref val) = self.restart {
7489            {
7490                let s = val.to_string();
7491                start.push_attribute(("w:restart", s.as_str()));
7492            }
7493        }
7494        #[cfg(feature = "extra-attrs")]
7495        for (key, value) in &self.extra_attrs {
7496            start.push_attribute((key.as_str(), value.as_str()));
7497        }
7498        start
7499    }
7500
7501    fn is_empty_element(&self) -> bool {
7502        true
7503    }
7504}
7505
7506impl ToXml for CTPageNumber {
7507    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
7508        #[allow(unused_mut)]
7509        let mut start = start;
7510        #[cfg(feature = "wml-layout")]
7511        if let Some(ref val) = self.fmt {
7512            {
7513                let s = val.to_string();
7514                start.push_attribute(("w:fmt", s.as_str()));
7515            }
7516        }
7517        #[cfg(feature = "wml-layout")]
7518        if let Some(ref val) = self.start {
7519            {
7520                let s = val.to_string();
7521                start.push_attribute(("w:start", s.as_str()));
7522            }
7523        }
7524        #[cfg(feature = "wml-layout")]
7525        if let Some(ref val) = self.chap_style {
7526            {
7527                let s = val.to_string();
7528                start.push_attribute(("w:chapStyle", s.as_str()));
7529            }
7530        }
7531        #[cfg(feature = "wml-layout")]
7532        if let Some(ref val) = self.chap_sep {
7533            {
7534                let s = val.to_string();
7535                start.push_attribute(("w:chapSep", s.as_str()));
7536            }
7537        }
7538        #[cfg(feature = "extra-attrs")]
7539        for (key, value) in &self.extra_attrs {
7540            start.push_attribute((key.as_str(), value.as_str()));
7541        }
7542        start
7543    }
7544
7545    fn is_empty_element(&self) -> bool {
7546        true
7547    }
7548}
7549
7550impl ToXml for CTColumn {
7551    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
7552        #[allow(unused_mut)]
7553        let mut start = start;
7554        #[cfg(feature = "wml-layout")]
7555        if let Some(ref val) = self.width {
7556            {
7557                let s = val.to_string();
7558                start.push_attribute(("w:w", s.as_str()));
7559            }
7560        }
7561        #[cfg(feature = "wml-layout")]
7562        if let Some(ref val) = self.space {
7563            {
7564                let s = val.to_string();
7565                start.push_attribute(("w:space", s.as_str()));
7566            }
7567        }
7568        #[cfg(feature = "extra-attrs")]
7569        for (key, value) in &self.extra_attrs {
7570            start.push_attribute((key.as_str(), value.as_str()));
7571        }
7572        start
7573    }
7574
7575    fn is_empty_element(&self) -> bool {
7576        true
7577    }
7578}
7579
7580impl ToXml for Columns {
7581    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
7582        #[allow(unused_mut)]
7583        let mut start = start;
7584        #[cfg(feature = "wml-layout")]
7585        if let Some(ref val) = self.equal_width {
7586            {
7587                let s = val.to_string();
7588                start.push_attribute(("w:equalWidth", s.as_str()));
7589            }
7590        }
7591        #[cfg(feature = "wml-layout")]
7592        if let Some(ref val) = self.space {
7593            {
7594                let s = val.to_string();
7595                start.push_attribute(("w:space", s.as_str()));
7596            }
7597        }
7598        #[cfg(feature = "wml-layout")]
7599        if let Some(ref val) = self.num {
7600            {
7601                let s = val.to_string();
7602                start.push_attribute(("w:num", s.as_str()));
7603            }
7604        }
7605        #[cfg(feature = "wml-layout")]
7606        if let Some(ref val) = self.sep {
7607            {
7608                let s = val.to_string();
7609                start.push_attribute(("w:sep", s.as_str()));
7610            }
7611        }
7612        #[cfg(feature = "extra-attrs")]
7613        for (key, value) in &self.extra_attrs {
7614            start.push_attribute((key.as_str(), value.as_str()));
7615        }
7616        start
7617    }
7618
7619    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
7620        #[cfg(feature = "extra-children")]
7621        let mut extra_iter = self.extra_children.iter().peekable();
7622        #[cfg(feature = "extra-children")]
7623        let mut emit_idx: usize = 0;
7624        #[cfg(feature = "wml-layout")]
7625        for item in &self.col {
7626            #[cfg(feature = "extra-children")]
7627            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
7628                extra_iter
7629                    .next()
7630                    .unwrap()
7631                    .node
7632                    .write_to(writer)
7633                    .map_err(SerializeError::from)?;
7634            }
7635            item.write_element("w:col", writer)?;
7636            #[cfg(feature = "extra-children")]
7637            {
7638                emit_idx += 1;
7639            }
7640        }
7641        #[cfg(feature = "extra-children")]
7642        for extra in extra_iter {
7643            extra.node.write_to(writer).map_err(SerializeError::from)?;
7644        }
7645        Ok(())
7646    }
7647
7648    fn is_empty_element(&self) -> bool {
7649        #[cfg(feature = "wml-layout")]
7650        if !self.col.is_empty() {
7651            return false;
7652        }
7653        #[cfg(feature = "extra-children")]
7654        if !self.extra_children.is_empty() {
7655            return false;
7656        }
7657        true
7658    }
7659}
7660
7661impl ToXml for CTVerticalJc {
7662    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
7663        #[allow(unused_mut)]
7664        let mut start = start;
7665        {
7666            let val = &self.value;
7667            {
7668                let s = val.to_string();
7669                start.push_attribute(("w:val", s.as_str()));
7670            }
7671        }
7672        #[cfg(feature = "extra-attrs")]
7673        for (key, value) in &self.extra_attrs {
7674            start.push_attribute((key.as_str(), value.as_str()));
7675        }
7676        start
7677    }
7678
7679    fn is_empty_element(&self) -> bool {
7680        true
7681    }
7682}
7683
7684impl ToXml for DocumentGrid {
7685    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
7686        #[allow(unused_mut)]
7687        let mut start = start;
7688        #[cfg(feature = "wml-layout")]
7689        if let Some(ref val) = self.r#type {
7690            {
7691                let s = val.to_string();
7692                start.push_attribute(("w:type", s.as_str()));
7693            }
7694        }
7695        #[cfg(feature = "wml-layout")]
7696        if let Some(ref val) = self.line_pitch {
7697            {
7698                let s = val.to_string();
7699                start.push_attribute(("w:linePitch", s.as_str()));
7700            }
7701        }
7702        #[cfg(feature = "wml-layout")]
7703        if let Some(ref val) = self.char_space {
7704            {
7705                let s = val.to_string();
7706                start.push_attribute(("w:charSpace", s.as_str()));
7707            }
7708        }
7709        #[cfg(feature = "extra-attrs")]
7710        for (key, value) in &self.extra_attrs {
7711            start.push_attribute((key.as_str(), value.as_str()));
7712        }
7713        start
7714    }
7715
7716    fn is_empty_element(&self) -> bool {
7717        true
7718    }
7719}
7720
7721impl ToXml for HeaderFooterReference {
7722    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
7723        #[allow(unused_mut)]
7724        let mut start = start;
7725        {
7726            let val = &self.id;
7727            start.push_attribute(("r:id", val.as_str()));
7728        }
7729        {
7730            let val = &self.r#type;
7731            {
7732                let s = val.to_string();
7733                start.push_attribute(("w:type", s.as_str()));
7734            }
7735        }
7736        #[cfg(feature = "extra-attrs")]
7737        for (key, value) in &self.extra_attrs {
7738            start.push_attribute((key.as_str(), value.as_str()));
7739        }
7740        start
7741    }
7742
7743    fn is_empty_element(&self) -> bool {
7744        true
7745    }
7746}
7747
7748impl ToXml for HeaderFooterRef {
7749    fn write_element<W: Write>(
7750        &self,
7751        _tag: &str,
7752        writer: &mut Writer<W>,
7753    ) -> Result<(), SerializeError> {
7754        match self {
7755            Self::HeaderReference(inner) => inner.write_element("w:headerReference", writer)?,
7756            Self::FooterReference(inner) => inner.write_element("w:footerReference", writer)?,
7757        }
7758        Ok(())
7759    }
7760}
7761
7762impl ToXml for HeaderFooter {
7763    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
7764        #[cfg(feature = "extra-children")]
7765        let mut extra_iter = self.extra_children.iter().peekable();
7766        #[cfg(feature = "extra-children")]
7767        let mut emit_idx: usize = 0;
7768        for item in &self.block_content {
7769            #[cfg(feature = "extra-children")]
7770            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
7771                extra_iter
7772                    .next()
7773                    .unwrap()
7774                    .node
7775                    .write_to(writer)
7776                    .map_err(SerializeError::from)?;
7777            }
7778            item.write_element("", writer)?;
7779            #[cfg(feature = "extra-children")]
7780            {
7781                emit_idx += 1;
7782            }
7783        }
7784        #[cfg(feature = "extra-children")]
7785        for extra in extra_iter {
7786            extra.node.write_to(writer).map_err(SerializeError::from)?;
7787        }
7788        Ok(())
7789    }
7790
7791    fn is_empty_element(&self) -> bool {
7792        if !self.block_content.is_empty() {
7793            return false;
7794        }
7795        #[cfg(feature = "extra-children")]
7796        if !self.extra_children.is_empty() {
7797            return false;
7798        }
7799        true
7800    }
7801}
7802
7803impl ToXml for EGSectPrContents {
7804    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
7805        #[cfg(feature = "extra-children")]
7806        let mut extra_iter = self.extra_children.iter().peekable();
7807        #[cfg(feature = "extra-children")]
7808        let mut emit_idx: usize = 0;
7809        #[cfg(feature = "extra-children")]
7810        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
7811            extra_iter
7812                .next()
7813                .unwrap()
7814                .node
7815                .write_to(writer)
7816                .map_err(SerializeError::from)?;
7817        }
7818        if let Some(ref val) = self.footnote_pr {
7819            val.write_element("w:footnotePr", writer)?;
7820        }
7821        #[cfg(feature = "extra-children")]
7822        {
7823            emit_idx += 1;
7824        }
7825        #[cfg(feature = "extra-children")]
7826        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
7827            extra_iter
7828                .next()
7829                .unwrap()
7830                .node
7831                .write_to(writer)
7832                .map_err(SerializeError::from)?;
7833        }
7834        if let Some(ref val) = self.endnote_pr {
7835            val.write_element("w:endnotePr", writer)?;
7836        }
7837        #[cfg(feature = "extra-children")]
7838        {
7839            emit_idx += 1;
7840        }
7841        #[cfg(feature = "extra-children")]
7842        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
7843            extra_iter
7844                .next()
7845                .unwrap()
7846                .node
7847                .write_to(writer)
7848                .map_err(SerializeError::from)?;
7849        }
7850        if let Some(ref val) = self.r#type {
7851            val.write_element("w:type", writer)?;
7852        }
7853        #[cfg(feature = "extra-children")]
7854        {
7855            emit_idx += 1;
7856        }
7857        #[cfg(feature = "extra-children")]
7858        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
7859            extra_iter
7860                .next()
7861                .unwrap()
7862                .node
7863                .write_to(writer)
7864                .map_err(SerializeError::from)?;
7865        }
7866        if let Some(ref val) = self.pg_sz {
7867            val.write_element("w:pgSz", writer)?;
7868        }
7869        #[cfg(feature = "extra-children")]
7870        {
7871            emit_idx += 1;
7872        }
7873        #[cfg(feature = "extra-children")]
7874        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
7875            extra_iter
7876                .next()
7877                .unwrap()
7878                .node
7879                .write_to(writer)
7880                .map_err(SerializeError::from)?;
7881        }
7882        if let Some(ref val) = self.pg_mar {
7883            val.write_element("w:pgMar", writer)?;
7884        }
7885        #[cfg(feature = "extra-children")]
7886        {
7887            emit_idx += 1;
7888        }
7889        #[cfg(feature = "extra-children")]
7890        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
7891            extra_iter
7892                .next()
7893                .unwrap()
7894                .node
7895                .write_to(writer)
7896                .map_err(SerializeError::from)?;
7897        }
7898        if let Some(ref val) = self.paper_src {
7899            val.write_element("w:paperSrc", writer)?;
7900        }
7901        #[cfg(feature = "extra-children")]
7902        {
7903            emit_idx += 1;
7904        }
7905        #[cfg(feature = "extra-children")]
7906        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
7907            extra_iter
7908                .next()
7909                .unwrap()
7910                .node
7911                .write_to(writer)
7912                .map_err(SerializeError::from)?;
7913        }
7914        if let Some(ref val) = self.pg_borders {
7915            val.write_element("w:pgBorders", writer)?;
7916        }
7917        #[cfg(feature = "extra-children")]
7918        {
7919            emit_idx += 1;
7920        }
7921        #[cfg(feature = "extra-children")]
7922        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
7923            extra_iter
7924                .next()
7925                .unwrap()
7926                .node
7927                .write_to(writer)
7928                .map_err(SerializeError::from)?;
7929        }
7930        if let Some(ref val) = self.ln_num_type {
7931            val.write_element("w:lnNumType", writer)?;
7932        }
7933        #[cfg(feature = "extra-children")]
7934        {
7935            emit_idx += 1;
7936        }
7937        #[cfg(feature = "extra-children")]
7938        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
7939            extra_iter
7940                .next()
7941                .unwrap()
7942                .node
7943                .write_to(writer)
7944                .map_err(SerializeError::from)?;
7945        }
7946        if let Some(ref val) = self.pg_num_type {
7947            val.write_element("w:pgNumType", writer)?;
7948        }
7949        #[cfg(feature = "extra-children")]
7950        {
7951            emit_idx += 1;
7952        }
7953        #[cfg(feature = "extra-children")]
7954        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
7955            extra_iter
7956                .next()
7957                .unwrap()
7958                .node
7959                .write_to(writer)
7960                .map_err(SerializeError::from)?;
7961        }
7962        if let Some(ref val) = self.cols {
7963            val.write_element("w:cols", writer)?;
7964        }
7965        #[cfg(feature = "extra-children")]
7966        {
7967            emit_idx += 1;
7968        }
7969        #[cfg(feature = "extra-children")]
7970        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
7971            extra_iter
7972                .next()
7973                .unwrap()
7974                .node
7975                .write_to(writer)
7976                .map_err(SerializeError::from)?;
7977        }
7978        if let Some(ref val) = self.form_prot {
7979            val.write_element("w:formProt", writer)?;
7980        }
7981        #[cfg(feature = "extra-children")]
7982        {
7983            emit_idx += 1;
7984        }
7985        #[cfg(feature = "extra-children")]
7986        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
7987            extra_iter
7988                .next()
7989                .unwrap()
7990                .node
7991                .write_to(writer)
7992                .map_err(SerializeError::from)?;
7993        }
7994        if let Some(ref val) = self.v_align {
7995            val.write_element("w:vAlign", writer)?;
7996        }
7997        #[cfg(feature = "extra-children")]
7998        {
7999            emit_idx += 1;
8000        }
8001        #[cfg(feature = "extra-children")]
8002        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
8003            extra_iter
8004                .next()
8005                .unwrap()
8006                .node
8007                .write_to(writer)
8008                .map_err(SerializeError::from)?;
8009        }
8010        if let Some(ref val) = self.no_endnote {
8011            val.write_element("w:noEndnote", writer)?;
8012        }
8013        #[cfg(feature = "extra-children")]
8014        {
8015            emit_idx += 1;
8016        }
8017        #[cfg(feature = "extra-children")]
8018        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
8019            extra_iter
8020                .next()
8021                .unwrap()
8022                .node
8023                .write_to(writer)
8024                .map_err(SerializeError::from)?;
8025        }
8026        if let Some(ref val) = self.title_pg {
8027            val.write_element("w:titlePg", writer)?;
8028        }
8029        #[cfg(feature = "extra-children")]
8030        {
8031            emit_idx += 1;
8032        }
8033        #[cfg(feature = "extra-children")]
8034        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
8035            extra_iter
8036                .next()
8037                .unwrap()
8038                .node
8039                .write_to(writer)
8040                .map_err(SerializeError::from)?;
8041        }
8042        if let Some(ref val) = self.text_direction {
8043            val.write_element("w:textDirection", writer)?;
8044        }
8045        #[cfg(feature = "extra-children")]
8046        {
8047            emit_idx += 1;
8048        }
8049        #[cfg(feature = "extra-children")]
8050        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
8051            extra_iter
8052                .next()
8053                .unwrap()
8054                .node
8055                .write_to(writer)
8056                .map_err(SerializeError::from)?;
8057        }
8058        if let Some(ref val) = self.bidi {
8059            val.write_element("w:bidi", writer)?;
8060        }
8061        #[cfg(feature = "extra-children")]
8062        {
8063            emit_idx += 1;
8064        }
8065        #[cfg(feature = "extra-children")]
8066        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
8067            extra_iter
8068                .next()
8069                .unwrap()
8070                .node
8071                .write_to(writer)
8072                .map_err(SerializeError::from)?;
8073        }
8074        if let Some(ref val) = self.rtl_gutter {
8075            val.write_element("w:rtlGutter", writer)?;
8076        }
8077        #[cfg(feature = "extra-children")]
8078        {
8079            emit_idx += 1;
8080        }
8081        #[cfg(feature = "extra-children")]
8082        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
8083            extra_iter
8084                .next()
8085                .unwrap()
8086                .node
8087                .write_to(writer)
8088                .map_err(SerializeError::from)?;
8089        }
8090        if let Some(ref val) = self.doc_grid {
8091            val.write_element("w:docGrid", writer)?;
8092        }
8093        #[cfg(feature = "extra-children")]
8094        {
8095            emit_idx += 1;
8096        }
8097        #[cfg(feature = "extra-children")]
8098        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
8099            extra_iter
8100                .next()
8101                .unwrap()
8102                .node
8103                .write_to(writer)
8104                .map_err(SerializeError::from)?;
8105        }
8106        if let Some(ref val) = self.printer_settings {
8107            val.write_element("w:printerSettings", writer)?;
8108        }
8109        #[cfg(feature = "extra-children")]
8110        {
8111            emit_idx += 1;
8112        }
8113        #[cfg(feature = "extra-children")]
8114        for extra in extra_iter {
8115            extra.node.write_to(writer).map_err(SerializeError::from)?;
8116        }
8117        Ok(())
8118    }
8119
8120    fn is_empty_element(&self) -> bool {
8121        if self.footnote_pr.is_some() {
8122            return false;
8123        }
8124        if self.endnote_pr.is_some() {
8125            return false;
8126        }
8127        if self.r#type.is_some() {
8128            return false;
8129        }
8130        if self.pg_sz.is_some() {
8131            return false;
8132        }
8133        if self.pg_mar.is_some() {
8134            return false;
8135        }
8136        if self.paper_src.is_some() {
8137            return false;
8138        }
8139        if self.pg_borders.is_some() {
8140            return false;
8141        }
8142        if self.ln_num_type.is_some() {
8143            return false;
8144        }
8145        if self.pg_num_type.is_some() {
8146            return false;
8147        }
8148        if self.cols.is_some() {
8149            return false;
8150        }
8151        if self.form_prot.is_some() {
8152            return false;
8153        }
8154        if self.v_align.is_some() {
8155            return false;
8156        }
8157        if self.no_endnote.is_some() {
8158            return false;
8159        }
8160        if self.title_pg.is_some() {
8161            return false;
8162        }
8163        if self.text_direction.is_some() {
8164            return false;
8165        }
8166        if self.bidi.is_some() {
8167            return false;
8168        }
8169        if self.rtl_gutter.is_some() {
8170            return false;
8171        }
8172        if self.doc_grid.is_some() {
8173            return false;
8174        }
8175        if self.printer_settings.is_some() {
8176            return false;
8177        }
8178        #[cfg(feature = "extra-children")]
8179        if !self.extra_children.is_empty() {
8180            return false;
8181        }
8182        true
8183    }
8184}
8185
8186impl ToXml for WAGSectPrAttributes {
8187    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
8188        #[allow(unused_mut)]
8189        let mut start = start;
8190        if let Some(ref val) = self.rsid_r_pr {
8191            {
8192                let hex = encode_hex(val);
8193                start.push_attribute(("w:rsidRPr", hex.as_str()));
8194            }
8195        }
8196        if let Some(ref val) = self.rsid_del {
8197            {
8198                let hex = encode_hex(val);
8199                start.push_attribute(("w:rsidDel", hex.as_str()));
8200            }
8201        }
8202        if let Some(ref val) = self.rsid_r {
8203            {
8204                let hex = encode_hex(val);
8205                start.push_attribute(("w:rsidR", hex.as_str()));
8206            }
8207        }
8208        if let Some(ref val) = self.rsid_sect {
8209            {
8210                let hex = encode_hex(val);
8211                start.push_attribute(("w:rsidSect", hex.as_str()));
8212            }
8213        }
8214        #[cfg(feature = "extra-attrs")]
8215        for (key, value) in &self.extra_attrs {
8216            start.push_attribute((key.as_str(), value.as_str()));
8217        }
8218        start
8219    }
8220
8221    fn is_empty_element(&self) -> bool {
8222        true
8223    }
8224}
8225
8226impl ToXml for CTSectPrBase {
8227    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
8228        #[allow(unused_mut)]
8229        let mut start = start;
8230        #[cfg(feature = "wml-track-changes")]
8231        if let Some(ref val) = self.rsid_r_pr {
8232            {
8233                let hex = encode_hex(val);
8234                start.push_attribute(("w:rsidRPr", hex.as_str()));
8235            }
8236        }
8237        #[cfg(feature = "wml-track-changes")]
8238        if let Some(ref val) = self.rsid_del {
8239            {
8240                let hex = encode_hex(val);
8241                start.push_attribute(("w:rsidDel", hex.as_str()));
8242            }
8243        }
8244        #[cfg(feature = "wml-track-changes")]
8245        if let Some(ref val) = self.rsid_r {
8246            {
8247                let hex = encode_hex(val);
8248                start.push_attribute(("w:rsidR", hex.as_str()));
8249            }
8250        }
8251        #[cfg(feature = "wml-track-changes")]
8252        if let Some(ref val) = self.rsid_sect {
8253            {
8254                let hex = encode_hex(val);
8255                start.push_attribute(("w:rsidSect", hex.as_str()));
8256            }
8257        }
8258        #[cfg(feature = "extra-attrs")]
8259        for (key, value) in &self.extra_attrs {
8260            start.push_attribute((key.as_str(), value.as_str()));
8261        }
8262        start
8263    }
8264
8265    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
8266        #[cfg(feature = "extra-children")]
8267        let mut extra_iter = self.extra_children.iter().peekable();
8268        #[cfg(feature = "extra-children")]
8269        let mut emit_idx: usize = 0;
8270        #[cfg(feature = "extra-children")]
8271        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
8272            extra_iter
8273                .next()
8274                .unwrap()
8275                .node
8276                .write_to(writer)
8277                .map_err(SerializeError::from)?;
8278        }
8279        if let Some(ref val) = self.footnote_pr {
8280            val.write_element("w:footnotePr", writer)?;
8281        }
8282        #[cfg(feature = "extra-children")]
8283        {
8284            emit_idx += 1;
8285        }
8286        #[cfg(feature = "extra-children")]
8287        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
8288            extra_iter
8289                .next()
8290                .unwrap()
8291                .node
8292                .write_to(writer)
8293                .map_err(SerializeError::from)?;
8294        }
8295        if let Some(ref val) = self.endnote_pr {
8296            val.write_element("w:endnotePr", writer)?;
8297        }
8298        #[cfg(feature = "extra-children")]
8299        {
8300            emit_idx += 1;
8301        }
8302        #[cfg(feature = "extra-children")]
8303        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
8304            extra_iter
8305                .next()
8306                .unwrap()
8307                .node
8308                .write_to(writer)
8309                .map_err(SerializeError::from)?;
8310        }
8311        if let Some(ref val) = self.r#type {
8312            val.write_element("w:type", writer)?;
8313        }
8314        #[cfg(feature = "extra-children")]
8315        {
8316            emit_idx += 1;
8317        }
8318        #[cfg(feature = "extra-children")]
8319        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
8320            extra_iter
8321                .next()
8322                .unwrap()
8323                .node
8324                .write_to(writer)
8325                .map_err(SerializeError::from)?;
8326        }
8327        if let Some(ref val) = self.pg_sz {
8328            val.write_element("w:pgSz", writer)?;
8329        }
8330        #[cfg(feature = "extra-children")]
8331        {
8332            emit_idx += 1;
8333        }
8334        #[cfg(feature = "extra-children")]
8335        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
8336            extra_iter
8337                .next()
8338                .unwrap()
8339                .node
8340                .write_to(writer)
8341                .map_err(SerializeError::from)?;
8342        }
8343        if let Some(ref val) = self.pg_mar {
8344            val.write_element("w:pgMar", writer)?;
8345        }
8346        #[cfg(feature = "extra-children")]
8347        {
8348            emit_idx += 1;
8349        }
8350        #[cfg(feature = "extra-children")]
8351        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
8352            extra_iter
8353                .next()
8354                .unwrap()
8355                .node
8356                .write_to(writer)
8357                .map_err(SerializeError::from)?;
8358        }
8359        if let Some(ref val) = self.paper_src {
8360            val.write_element("w:paperSrc", writer)?;
8361        }
8362        #[cfg(feature = "extra-children")]
8363        {
8364            emit_idx += 1;
8365        }
8366        #[cfg(feature = "extra-children")]
8367        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
8368            extra_iter
8369                .next()
8370                .unwrap()
8371                .node
8372                .write_to(writer)
8373                .map_err(SerializeError::from)?;
8374        }
8375        if let Some(ref val) = self.pg_borders {
8376            val.write_element("w:pgBorders", writer)?;
8377        }
8378        #[cfg(feature = "extra-children")]
8379        {
8380            emit_idx += 1;
8381        }
8382        #[cfg(feature = "extra-children")]
8383        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
8384            extra_iter
8385                .next()
8386                .unwrap()
8387                .node
8388                .write_to(writer)
8389                .map_err(SerializeError::from)?;
8390        }
8391        if let Some(ref val) = self.ln_num_type {
8392            val.write_element("w:lnNumType", writer)?;
8393        }
8394        #[cfg(feature = "extra-children")]
8395        {
8396            emit_idx += 1;
8397        }
8398        #[cfg(feature = "extra-children")]
8399        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
8400            extra_iter
8401                .next()
8402                .unwrap()
8403                .node
8404                .write_to(writer)
8405                .map_err(SerializeError::from)?;
8406        }
8407        if let Some(ref val) = self.pg_num_type {
8408            val.write_element("w:pgNumType", writer)?;
8409        }
8410        #[cfg(feature = "extra-children")]
8411        {
8412            emit_idx += 1;
8413        }
8414        #[cfg(feature = "extra-children")]
8415        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
8416            extra_iter
8417                .next()
8418                .unwrap()
8419                .node
8420                .write_to(writer)
8421                .map_err(SerializeError::from)?;
8422        }
8423        if let Some(ref val) = self.cols {
8424            val.write_element("w:cols", writer)?;
8425        }
8426        #[cfg(feature = "extra-children")]
8427        {
8428            emit_idx += 1;
8429        }
8430        #[cfg(feature = "extra-children")]
8431        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
8432            extra_iter
8433                .next()
8434                .unwrap()
8435                .node
8436                .write_to(writer)
8437                .map_err(SerializeError::from)?;
8438        }
8439        if let Some(ref val) = self.form_prot {
8440            val.write_element("w:formProt", writer)?;
8441        }
8442        #[cfg(feature = "extra-children")]
8443        {
8444            emit_idx += 1;
8445        }
8446        #[cfg(feature = "extra-children")]
8447        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
8448            extra_iter
8449                .next()
8450                .unwrap()
8451                .node
8452                .write_to(writer)
8453                .map_err(SerializeError::from)?;
8454        }
8455        if let Some(ref val) = self.v_align {
8456            val.write_element("w:vAlign", writer)?;
8457        }
8458        #[cfg(feature = "extra-children")]
8459        {
8460            emit_idx += 1;
8461        }
8462        #[cfg(feature = "extra-children")]
8463        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
8464            extra_iter
8465                .next()
8466                .unwrap()
8467                .node
8468                .write_to(writer)
8469                .map_err(SerializeError::from)?;
8470        }
8471        if let Some(ref val) = self.no_endnote {
8472            val.write_element("w:noEndnote", writer)?;
8473        }
8474        #[cfg(feature = "extra-children")]
8475        {
8476            emit_idx += 1;
8477        }
8478        #[cfg(feature = "extra-children")]
8479        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
8480            extra_iter
8481                .next()
8482                .unwrap()
8483                .node
8484                .write_to(writer)
8485                .map_err(SerializeError::from)?;
8486        }
8487        if let Some(ref val) = self.title_pg {
8488            val.write_element("w:titlePg", writer)?;
8489        }
8490        #[cfg(feature = "extra-children")]
8491        {
8492            emit_idx += 1;
8493        }
8494        #[cfg(feature = "extra-children")]
8495        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
8496            extra_iter
8497                .next()
8498                .unwrap()
8499                .node
8500                .write_to(writer)
8501                .map_err(SerializeError::from)?;
8502        }
8503        if let Some(ref val) = self.text_direction {
8504            val.write_element("w:textDirection", writer)?;
8505        }
8506        #[cfg(feature = "extra-children")]
8507        {
8508            emit_idx += 1;
8509        }
8510        #[cfg(feature = "extra-children")]
8511        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
8512            extra_iter
8513                .next()
8514                .unwrap()
8515                .node
8516                .write_to(writer)
8517                .map_err(SerializeError::from)?;
8518        }
8519        if let Some(ref val) = self.bidi {
8520            val.write_element("w:bidi", writer)?;
8521        }
8522        #[cfg(feature = "extra-children")]
8523        {
8524            emit_idx += 1;
8525        }
8526        #[cfg(feature = "extra-children")]
8527        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
8528            extra_iter
8529                .next()
8530                .unwrap()
8531                .node
8532                .write_to(writer)
8533                .map_err(SerializeError::from)?;
8534        }
8535        if let Some(ref val) = self.rtl_gutter {
8536            val.write_element("w:rtlGutter", writer)?;
8537        }
8538        #[cfg(feature = "extra-children")]
8539        {
8540            emit_idx += 1;
8541        }
8542        #[cfg(feature = "extra-children")]
8543        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
8544            extra_iter
8545                .next()
8546                .unwrap()
8547                .node
8548                .write_to(writer)
8549                .map_err(SerializeError::from)?;
8550        }
8551        if let Some(ref val) = self.doc_grid {
8552            val.write_element("w:docGrid", writer)?;
8553        }
8554        #[cfg(feature = "extra-children")]
8555        {
8556            emit_idx += 1;
8557        }
8558        #[cfg(feature = "extra-children")]
8559        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
8560            extra_iter
8561                .next()
8562                .unwrap()
8563                .node
8564                .write_to(writer)
8565                .map_err(SerializeError::from)?;
8566        }
8567        if let Some(ref val) = self.printer_settings {
8568            val.write_element("w:printerSettings", writer)?;
8569        }
8570        #[cfg(feature = "extra-children")]
8571        {
8572            emit_idx += 1;
8573        }
8574        #[cfg(feature = "extra-children")]
8575        for extra in extra_iter {
8576            extra.node.write_to(writer).map_err(SerializeError::from)?;
8577        }
8578        Ok(())
8579    }
8580
8581    fn is_empty_element(&self) -> bool {
8582        if self.footnote_pr.is_some() {
8583            return false;
8584        }
8585        if self.endnote_pr.is_some() {
8586            return false;
8587        }
8588        if self.r#type.is_some() {
8589            return false;
8590        }
8591        if self.pg_sz.is_some() {
8592            return false;
8593        }
8594        if self.pg_mar.is_some() {
8595            return false;
8596        }
8597        if self.paper_src.is_some() {
8598            return false;
8599        }
8600        if self.pg_borders.is_some() {
8601            return false;
8602        }
8603        if self.ln_num_type.is_some() {
8604            return false;
8605        }
8606        if self.pg_num_type.is_some() {
8607            return false;
8608        }
8609        if self.cols.is_some() {
8610            return false;
8611        }
8612        if self.form_prot.is_some() {
8613            return false;
8614        }
8615        if self.v_align.is_some() {
8616            return false;
8617        }
8618        if self.no_endnote.is_some() {
8619            return false;
8620        }
8621        if self.title_pg.is_some() {
8622            return false;
8623        }
8624        if self.text_direction.is_some() {
8625            return false;
8626        }
8627        if self.bidi.is_some() {
8628            return false;
8629        }
8630        if self.rtl_gutter.is_some() {
8631            return false;
8632        }
8633        if self.doc_grid.is_some() {
8634            return false;
8635        }
8636        if self.printer_settings.is_some() {
8637            return false;
8638        }
8639        #[cfg(feature = "extra-children")]
8640        if !self.extra_children.is_empty() {
8641            return false;
8642        }
8643        true
8644    }
8645}
8646
8647impl ToXml for SectionProperties {
8648    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
8649        #[allow(unused_mut)]
8650        let mut start = start;
8651        #[cfg(feature = "wml-track-changes")]
8652        if let Some(ref val) = self.rsid_r_pr {
8653            {
8654                let hex = encode_hex(val);
8655                start.push_attribute(("w:rsidRPr", hex.as_str()));
8656            }
8657        }
8658        #[cfg(feature = "wml-track-changes")]
8659        if let Some(ref val) = self.rsid_del {
8660            {
8661                let hex = encode_hex(val);
8662                start.push_attribute(("w:rsidDel", hex.as_str()));
8663            }
8664        }
8665        #[cfg(feature = "wml-track-changes")]
8666        if let Some(ref val) = self.rsid_r {
8667            {
8668                let hex = encode_hex(val);
8669                start.push_attribute(("w:rsidR", hex.as_str()));
8670            }
8671        }
8672        #[cfg(feature = "wml-track-changes")]
8673        if let Some(ref val) = self.rsid_sect {
8674            {
8675                let hex = encode_hex(val);
8676                start.push_attribute(("w:rsidSect", hex.as_str()));
8677            }
8678        }
8679        #[cfg(feature = "extra-attrs")]
8680        for (key, value) in &self.extra_attrs {
8681            start.push_attribute((key.as_str(), value.as_str()));
8682        }
8683        start
8684    }
8685
8686    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
8687        #[cfg(feature = "extra-children")]
8688        let mut extra_iter = self.extra_children.iter().peekable();
8689        #[cfg(feature = "extra-children")]
8690        let mut emit_idx: usize = 0;
8691        for item in &self.header_footer_refs {
8692            #[cfg(feature = "extra-children")]
8693            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
8694                extra_iter
8695                    .next()
8696                    .unwrap()
8697                    .node
8698                    .write_to(writer)
8699                    .map_err(SerializeError::from)?;
8700            }
8701            item.write_element("", writer)?;
8702            #[cfg(feature = "extra-children")]
8703            {
8704                emit_idx += 1;
8705            }
8706        }
8707        #[cfg(feature = "extra-children")]
8708        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
8709            extra_iter
8710                .next()
8711                .unwrap()
8712                .node
8713                .write_to(writer)
8714                .map_err(SerializeError::from)?;
8715        }
8716        #[cfg(feature = "wml-comments")]
8717        if let Some(ref val) = self.footnote_pr {
8718            val.write_element("w:footnotePr", writer)?;
8719        }
8720        #[cfg(feature = "extra-children")]
8721        {
8722            emit_idx += 1;
8723        }
8724        #[cfg(feature = "extra-children")]
8725        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
8726            extra_iter
8727                .next()
8728                .unwrap()
8729                .node
8730                .write_to(writer)
8731                .map_err(SerializeError::from)?;
8732        }
8733        #[cfg(feature = "wml-comments")]
8734        if let Some(ref val) = self.endnote_pr {
8735            val.write_element("w:endnotePr", writer)?;
8736        }
8737        #[cfg(feature = "extra-children")]
8738        {
8739            emit_idx += 1;
8740        }
8741        #[cfg(feature = "extra-children")]
8742        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
8743            extra_iter
8744                .next()
8745                .unwrap()
8746                .node
8747                .write_to(writer)
8748                .map_err(SerializeError::from)?;
8749        }
8750        #[cfg(feature = "wml-layout")]
8751        if let Some(ref val) = self.r#type {
8752            val.write_element("w:type", writer)?;
8753        }
8754        #[cfg(feature = "extra-children")]
8755        {
8756            emit_idx += 1;
8757        }
8758        #[cfg(feature = "extra-children")]
8759        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
8760            extra_iter
8761                .next()
8762                .unwrap()
8763                .node
8764                .write_to(writer)
8765                .map_err(SerializeError::from)?;
8766        }
8767        #[cfg(feature = "wml-layout")]
8768        if let Some(ref val) = self.pg_sz {
8769            val.write_element("w:pgSz", writer)?;
8770        }
8771        #[cfg(feature = "extra-children")]
8772        {
8773            emit_idx += 1;
8774        }
8775        #[cfg(feature = "extra-children")]
8776        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
8777            extra_iter
8778                .next()
8779                .unwrap()
8780                .node
8781                .write_to(writer)
8782                .map_err(SerializeError::from)?;
8783        }
8784        #[cfg(feature = "wml-layout")]
8785        if let Some(ref val) = self.pg_mar {
8786            val.write_element("w:pgMar", writer)?;
8787        }
8788        #[cfg(feature = "extra-children")]
8789        {
8790            emit_idx += 1;
8791        }
8792        #[cfg(feature = "extra-children")]
8793        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
8794            extra_iter
8795                .next()
8796                .unwrap()
8797                .node
8798                .write_to(writer)
8799                .map_err(SerializeError::from)?;
8800        }
8801        #[cfg(feature = "wml-layout")]
8802        if let Some(ref val) = self.paper_src {
8803            val.write_element("w:paperSrc", writer)?;
8804        }
8805        #[cfg(feature = "extra-children")]
8806        {
8807            emit_idx += 1;
8808        }
8809        #[cfg(feature = "extra-children")]
8810        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
8811            extra_iter
8812                .next()
8813                .unwrap()
8814                .node
8815                .write_to(writer)
8816                .map_err(SerializeError::from)?;
8817        }
8818        #[cfg(feature = "wml-layout")]
8819        if let Some(ref val) = self.pg_borders {
8820            val.write_element("w:pgBorders", writer)?;
8821        }
8822        #[cfg(feature = "extra-children")]
8823        {
8824            emit_idx += 1;
8825        }
8826        #[cfg(feature = "extra-children")]
8827        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
8828            extra_iter
8829                .next()
8830                .unwrap()
8831                .node
8832                .write_to(writer)
8833                .map_err(SerializeError::from)?;
8834        }
8835        #[cfg(feature = "wml-layout")]
8836        if let Some(ref val) = self.ln_num_type {
8837            val.write_element("w:lnNumType", writer)?;
8838        }
8839        #[cfg(feature = "extra-children")]
8840        {
8841            emit_idx += 1;
8842        }
8843        #[cfg(feature = "extra-children")]
8844        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
8845            extra_iter
8846                .next()
8847                .unwrap()
8848                .node
8849                .write_to(writer)
8850                .map_err(SerializeError::from)?;
8851        }
8852        #[cfg(feature = "wml-layout")]
8853        if let Some(ref val) = self.pg_num_type {
8854            val.write_element("w:pgNumType", writer)?;
8855        }
8856        #[cfg(feature = "extra-children")]
8857        {
8858            emit_idx += 1;
8859        }
8860        #[cfg(feature = "extra-children")]
8861        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
8862            extra_iter
8863                .next()
8864                .unwrap()
8865                .node
8866                .write_to(writer)
8867                .map_err(SerializeError::from)?;
8868        }
8869        #[cfg(feature = "wml-layout")]
8870        if let Some(ref val) = self.cols {
8871            val.write_element("w:cols", writer)?;
8872        }
8873        #[cfg(feature = "extra-children")]
8874        {
8875            emit_idx += 1;
8876        }
8877        #[cfg(feature = "extra-children")]
8878        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
8879            extra_iter
8880                .next()
8881                .unwrap()
8882                .node
8883                .write_to(writer)
8884                .map_err(SerializeError::from)?;
8885        }
8886        #[cfg(feature = "wml-layout")]
8887        if let Some(ref val) = self.form_prot {
8888            val.write_element("w:formProt", writer)?;
8889        }
8890        #[cfg(feature = "extra-children")]
8891        {
8892            emit_idx += 1;
8893        }
8894        #[cfg(feature = "extra-children")]
8895        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
8896            extra_iter
8897                .next()
8898                .unwrap()
8899                .node
8900                .write_to(writer)
8901                .map_err(SerializeError::from)?;
8902        }
8903        #[cfg(feature = "wml-layout")]
8904        if let Some(ref val) = self.v_align {
8905            val.write_element("w:vAlign", writer)?;
8906        }
8907        #[cfg(feature = "extra-children")]
8908        {
8909            emit_idx += 1;
8910        }
8911        #[cfg(feature = "extra-children")]
8912        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
8913            extra_iter
8914                .next()
8915                .unwrap()
8916                .node
8917                .write_to(writer)
8918                .map_err(SerializeError::from)?;
8919        }
8920        #[cfg(feature = "wml-comments")]
8921        if let Some(ref val) = self.no_endnote {
8922            val.write_element("w:noEndnote", writer)?;
8923        }
8924        #[cfg(feature = "extra-children")]
8925        {
8926            emit_idx += 1;
8927        }
8928        #[cfg(feature = "extra-children")]
8929        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
8930            extra_iter
8931                .next()
8932                .unwrap()
8933                .node
8934                .write_to(writer)
8935                .map_err(SerializeError::from)?;
8936        }
8937        #[cfg(feature = "wml-layout")]
8938        if let Some(ref val) = self.title_pg {
8939            val.write_element("w:titlePg", writer)?;
8940        }
8941        #[cfg(feature = "extra-children")]
8942        {
8943            emit_idx += 1;
8944        }
8945        #[cfg(feature = "extra-children")]
8946        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
8947            extra_iter
8948                .next()
8949                .unwrap()
8950                .node
8951                .write_to(writer)
8952                .map_err(SerializeError::from)?;
8953        }
8954        #[cfg(feature = "wml-layout")]
8955        if let Some(ref val) = self.text_direction {
8956            val.write_element("w:textDirection", writer)?;
8957        }
8958        #[cfg(feature = "extra-children")]
8959        {
8960            emit_idx += 1;
8961        }
8962        #[cfg(feature = "extra-children")]
8963        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
8964            extra_iter
8965                .next()
8966                .unwrap()
8967                .node
8968                .write_to(writer)
8969                .map_err(SerializeError::from)?;
8970        }
8971        #[cfg(feature = "wml-layout")]
8972        if let Some(ref val) = self.bidi {
8973            val.write_element("w:bidi", writer)?;
8974        }
8975        #[cfg(feature = "extra-children")]
8976        {
8977            emit_idx += 1;
8978        }
8979        #[cfg(feature = "extra-children")]
8980        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
8981            extra_iter
8982                .next()
8983                .unwrap()
8984                .node
8985                .write_to(writer)
8986                .map_err(SerializeError::from)?;
8987        }
8988        #[cfg(feature = "wml-layout")]
8989        if let Some(ref val) = self.rtl_gutter {
8990            val.write_element("w:rtlGutter", writer)?;
8991        }
8992        #[cfg(feature = "extra-children")]
8993        {
8994            emit_idx += 1;
8995        }
8996        #[cfg(feature = "extra-children")]
8997        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
8998            extra_iter
8999                .next()
9000                .unwrap()
9001                .node
9002                .write_to(writer)
9003                .map_err(SerializeError::from)?;
9004        }
9005        #[cfg(feature = "wml-layout")]
9006        if let Some(ref val) = self.doc_grid {
9007            val.write_element("w:docGrid", writer)?;
9008        }
9009        #[cfg(feature = "extra-children")]
9010        {
9011            emit_idx += 1;
9012        }
9013        #[cfg(feature = "extra-children")]
9014        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
9015            extra_iter
9016                .next()
9017                .unwrap()
9018                .node
9019                .write_to(writer)
9020                .map_err(SerializeError::from)?;
9021        }
9022        #[cfg(feature = "wml-layout")]
9023        if let Some(ref val) = self.printer_settings {
9024            val.write_element("w:printerSettings", writer)?;
9025        }
9026        #[cfg(feature = "extra-children")]
9027        {
9028            emit_idx += 1;
9029        }
9030        #[cfg(feature = "extra-children")]
9031        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
9032            extra_iter
9033                .next()
9034                .unwrap()
9035                .node
9036                .write_to(writer)
9037                .map_err(SerializeError::from)?;
9038        }
9039        #[cfg(feature = "wml-track-changes")]
9040        if let Some(ref val) = self.sect_pr_change {
9041            val.write_element("w:sectPrChange", writer)?;
9042        }
9043        #[cfg(feature = "extra-children")]
9044        {
9045            emit_idx += 1;
9046        }
9047        #[cfg(feature = "extra-children")]
9048        for extra in extra_iter {
9049            extra.node.write_to(writer).map_err(SerializeError::from)?;
9050        }
9051        Ok(())
9052    }
9053
9054    fn is_empty_element(&self) -> bool {
9055        if !self.header_footer_refs.is_empty() {
9056            return false;
9057        }
9058        #[cfg(feature = "wml-comments")]
9059        if self.footnote_pr.is_some() {
9060            return false;
9061        }
9062        #[cfg(feature = "wml-comments")]
9063        if self.endnote_pr.is_some() {
9064            return false;
9065        }
9066        #[cfg(feature = "wml-layout")]
9067        if self.r#type.is_some() {
9068            return false;
9069        }
9070        #[cfg(feature = "wml-layout")]
9071        if self.pg_sz.is_some() {
9072            return false;
9073        }
9074        #[cfg(feature = "wml-layout")]
9075        if self.pg_mar.is_some() {
9076            return false;
9077        }
9078        #[cfg(feature = "wml-layout")]
9079        if self.paper_src.is_some() {
9080            return false;
9081        }
9082        #[cfg(feature = "wml-layout")]
9083        if self.pg_borders.is_some() {
9084            return false;
9085        }
9086        #[cfg(feature = "wml-layout")]
9087        if self.ln_num_type.is_some() {
9088            return false;
9089        }
9090        #[cfg(feature = "wml-layout")]
9091        if self.pg_num_type.is_some() {
9092            return false;
9093        }
9094        #[cfg(feature = "wml-layout")]
9095        if self.cols.is_some() {
9096            return false;
9097        }
9098        #[cfg(feature = "wml-layout")]
9099        if self.form_prot.is_some() {
9100            return false;
9101        }
9102        #[cfg(feature = "wml-layout")]
9103        if self.v_align.is_some() {
9104            return false;
9105        }
9106        #[cfg(feature = "wml-comments")]
9107        if self.no_endnote.is_some() {
9108            return false;
9109        }
9110        #[cfg(feature = "wml-layout")]
9111        if self.title_pg.is_some() {
9112            return false;
9113        }
9114        #[cfg(feature = "wml-layout")]
9115        if self.text_direction.is_some() {
9116            return false;
9117        }
9118        #[cfg(feature = "wml-layout")]
9119        if self.bidi.is_some() {
9120            return false;
9121        }
9122        #[cfg(feature = "wml-layout")]
9123        if self.rtl_gutter.is_some() {
9124            return false;
9125        }
9126        #[cfg(feature = "wml-layout")]
9127        if self.doc_grid.is_some() {
9128            return false;
9129        }
9130        #[cfg(feature = "wml-layout")]
9131        if self.printer_settings.is_some() {
9132            return false;
9133        }
9134        #[cfg(feature = "wml-track-changes")]
9135        if self.sect_pr_change.is_some() {
9136            return false;
9137        }
9138        #[cfg(feature = "extra-children")]
9139        if !self.extra_children.is_empty() {
9140            return false;
9141        }
9142        true
9143    }
9144}
9145
9146impl ToXml for CTBr {
9147    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
9148        #[allow(unused_mut)]
9149        let mut start = start;
9150        if let Some(ref val) = self.r#type {
9151            {
9152                let s = val.to_string();
9153                start.push_attribute(("w:type", s.as_str()));
9154            }
9155        }
9156        if let Some(ref val) = self.clear {
9157            {
9158                let s = val.to_string();
9159                start.push_attribute(("w:clear", s.as_str()));
9160            }
9161        }
9162        #[cfg(feature = "extra-attrs")]
9163        for (key, value) in &self.extra_attrs {
9164            start.push_attribute((key.as_str(), value.as_str()));
9165        }
9166        start
9167    }
9168
9169    fn is_empty_element(&self) -> bool {
9170        true
9171    }
9172}
9173
9174impl ToXml for CTPTab {
9175    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
9176        #[allow(unused_mut)]
9177        let mut start = start;
9178        {
9179            let val = &self.alignment;
9180            {
9181                let s = val.to_string();
9182                start.push_attribute(("w:alignment", s.as_str()));
9183            }
9184        }
9185        {
9186            let val = &self.relative_to;
9187            {
9188                let s = val.to_string();
9189                start.push_attribute(("w:relativeTo", s.as_str()));
9190            }
9191        }
9192        #[cfg(feature = "wml-styling")]
9193        {
9194            let val = &self.leader;
9195            {
9196                let s = val.to_string();
9197                start.push_attribute(("w:leader", s.as_str()));
9198            }
9199        }
9200        #[cfg(feature = "extra-attrs")]
9201        for (key, value) in &self.extra_attrs {
9202            start.push_attribute((key.as_str(), value.as_str()));
9203        }
9204        start
9205    }
9206
9207    fn is_empty_element(&self) -> bool {
9208        true
9209    }
9210}
9211
9212impl ToXml for CTSym {
9213    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
9214        #[allow(unused_mut)]
9215        let mut start = start;
9216        #[cfg(feature = "wml-styling")]
9217        if let Some(ref val) = self.font {
9218            start.push_attribute(("w:font", val.as_str()));
9219        }
9220        if let Some(ref val) = self.char {
9221            {
9222                let hex = encode_hex(val);
9223                start.push_attribute(("w:char", hex.as_str()));
9224            }
9225        }
9226        #[cfg(feature = "extra-attrs")]
9227        for (key, value) in &self.extra_attrs {
9228            start.push_attribute((key.as_str(), value.as_str()));
9229        }
9230        start
9231    }
9232
9233    fn is_empty_element(&self) -> bool {
9234        true
9235    }
9236}
9237
9238impl ToXml for CTProofErr {
9239    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
9240        #[allow(unused_mut)]
9241        let mut start = start;
9242        {
9243            let val = &self.r#type;
9244            {
9245                let s = val.to_string();
9246                start.push_attribute(("w:type", s.as_str()));
9247            }
9248        }
9249        #[cfg(feature = "extra-attrs")]
9250        for (key, value) in &self.extra_attrs {
9251            start.push_attribute((key.as_str(), value.as_str()));
9252        }
9253        start
9254    }
9255
9256    fn is_empty_element(&self) -> bool {
9257        true
9258    }
9259}
9260
9261impl ToXml for CTPerm {
9262    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
9263        #[allow(unused_mut)]
9264        let mut start = start;
9265        {
9266            let val = &self.id;
9267            start.push_attribute(("w:id", val.as_str()));
9268        }
9269        #[cfg(feature = "wml-settings")]
9270        if let Some(ref val) = self.displaced_by_custom_xml {
9271            {
9272                let s = val.to_string();
9273                start.push_attribute(("w:displacedByCustomXml", s.as_str()));
9274            }
9275        }
9276        #[cfg(feature = "extra-attrs")]
9277        for (key, value) in &self.extra_attrs {
9278            start.push_attribute((key.as_str(), value.as_str()));
9279        }
9280        start
9281    }
9282
9283    fn is_empty_element(&self) -> bool {
9284        true
9285    }
9286}
9287
9288impl ToXml for CTPermStart {
9289    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
9290        #[allow(unused_mut)]
9291        let mut start = start;
9292        {
9293            let val = &self.id;
9294            start.push_attribute(("w:id", val.as_str()));
9295        }
9296        if let Some(ref val) = self.displaced_by_custom_xml {
9297            {
9298                let s = val.to_string();
9299                start.push_attribute(("w:displacedByCustomXml", s.as_str()));
9300            }
9301        }
9302        #[cfg(feature = "wml-settings")]
9303        if let Some(ref val) = self.ed_grp {
9304            {
9305                let s = val.to_string();
9306                start.push_attribute(("w:edGrp", s.as_str()));
9307            }
9308        }
9309        #[cfg(feature = "wml-settings")]
9310        if let Some(ref val) = self.ed {
9311            start.push_attribute(("w:ed", val.as_str()));
9312        }
9313        #[cfg(feature = "wml-tables")]
9314        if let Some(ref val) = self.col_first {
9315            {
9316                let s = val.to_string();
9317                start.push_attribute(("w:colFirst", s.as_str()));
9318            }
9319        }
9320        #[cfg(feature = "wml-tables")]
9321        if let Some(ref val) = self.col_last {
9322            {
9323                let s = val.to_string();
9324                start.push_attribute(("w:colLast", s.as_str()));
9325            }
9326        }
9327        #[cfg(feature = "extra-attrs")]
9328        for (key, value) in &self.extra_attrs {
9329            start.push_attribute((key.as_str(), value.as_str()));
9330        }
9331        start
9332    }
9333
9334    fn is_empty_element(&self) -> bool {
9335        true
9336    }
9337}
9338
9339impl ToXml for Text {
9340    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
9341        if let Some(ref text) = self.text {
9342            writer.write_event(Event::Text(BytesText::new(text)))?;
9343        }
9344        #[cfg(feature = "extra-children")]
9345        for extra in &self.extra_children {
9346            extra.node.write_to(writer).map_err(SerializeError::from)?;
9347        }
9348        Ok(())
9349    }
9350
9351    fn is_empty_element(&self) -> bool {
9352        if self.text.is_some() {
9353            return false;
9354        }
9355        #[cfg(feature = "extra-children")]
9356        if !self.extra_children.is_empty() {
9357            return false;
9358        }
9359        true
9360    }
9361}
9362
9363impl ToXml for RunContent {
9364    fn write_element<W: Write>(
9365        &self,
9366        _tag: &str,
9367        writer: &mut Writer<W>,
9368    ) -> Result<(), SerializeError> {
9369        match self {
9370            Self::Br(inner) => inner.write_element("w:br", writer)?,
9371            Self::T(inner) => inner.write_element("w:t", writer)?,
9372            Self::ContentPart(inner) => inner.write_element("w:contentPart", writer)?,
9373            Self::DelText(inner) => inner.write_element("w:delText", writer)?,
9374            Self::InstrText(inner) => inner.write_element("w:instrText", writer)?,
9375            Self::DelInstrText(inner) => inner.write_element("w:delInstrText", writer)?,
9376            Self::NoBreakHyphen(inner) => inner.write_element("w:noBreakHyphen", writer)?,
9377            Self::SoftHyphen(inner) => inner.write_element("w:softHyphen", writer)?,
9378            Self::DayShort(inner) => inner.write_element("w:dayShort", writer)?,
9379            Self::MonthShort(inner) => inner.write_element("w:monthShort", writer)?,
9380            Self::YearShort(inner) => inner.write_element("w:yearShort", writer)?,
9381            Self::DayLong(inner) => inner.write_element("w:dayLong", writer)?,
9382            Self::MonthLong(inner) => inner.write_element("w:monthLong", writer)?,
9383            Self::YearLong(inner) => inner.write_element("w:yearLong", writer)?,
9384            Self::AnnotationRef(inner) => inner.write_element("w:annotationRef", writer)?,
9385            Self::FootnoteRef(inner) => inner.write_element("w:footnoteRef", writer)?,
9386            Self::EndnoteRef(inner) => inner.write_element("w:endnoteRef", writer)?,
9387            Self::Separator(inner) => inner.write_element("w:separator", writer)?,
9388            Self::ContinuationSeparator(inner) => {
9389                inner.write_element("w:continuationSeparator", writer)?
9390            }
9391            Self::Sym(inner) => inner.write_element("w:sym", writer)?,
9392            Self::PgNum(inner) => inner.write_element("w:pgNum", writer)?,
9393            Self::Cr(inner) => inner.write_element("w:cr", writer)?,
9394            Self::Tab(inner) => inner.write_element("w:tab", writer)?,
9395            Self::Object(inner) => inner.write_element("w:object", writer)?,
9396            Self::Pict(inner) => inner.write_element("w:pict", writer)?,
9397            Self::FldChar(inner) => inner.write_element("w:fldChar", writer)?,
9398            Self::Ruby(inner) => inner.write_element("w:ruby", writer)?,
9399            Self::FootnoteReference(inner) => inner.write_element("w:footnoteReference", writer)?,
9400            Self::EndnoteReference(inner) => inner.write_element("w:endnoteReference", writer)?,
9401            Self::CommentReference(inner) => inner.write_element("w:commentReference", writer)?,
9402            Self::Drawing(inner) => inner.write_element("w:drawing", writer)?,
9403            Self::Ptab(inner) => inner.write_element("w:ptab", writer)?,
9404            Self::LastRenderedPageBreak(inner) => {
9405                inner.write_element("w:lastRenderedPageBreak", writer)?
9406            }
9407        }
9408        Ok(())
9409    }
9410}
9411
9412impl ToXml for Run {
9413    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
9414        #[allow(unused_mut)]
9415        let mut start = start;
9416        #[cfg(feature = "wml-track-changes")]
9417        if let Some(ref val) = self.rsid_r_pr {
9418            {
9419                let hex = encode_hex(val);
9420                start.push_attribute(("w:rsidRPr", hex.as_str()));
9421            }
9422        }
9423        #[cfg(feature = "wml-track-changes")]
9424        if let Some(ref val) = self.rsid_del {
9425            {
9426                let hex = encode_hex(val);
9427                start.push_attribute(("w:rsidDel", hex.as_str()));
9428            }
9429        }
9430        #[cfg(feature = "wml-track-changes")]
9431        if let Some(ref val) = self.rsid_r {
9432            {
9433                let hex = encode_hex(val);
9434                start.push_attribute(("w:rsidR", hex.as_str()));
9435            }
9436        }
9437        #[cfg(feature = "extra-attrs")]
9438        for (key, value) in &self.extra_attrs {
9439            start.push_attribute((key.as_str(), value.as_str()));
9440        }
9441        start
9442    }
9443
9444    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
9445        #[cfg(feature = "extra-children")]
9446        let mut extra_iter = self.extra_children.iter().peekable();
9447        #[cfg(feature = "extra-children")]
9448        let mut emit_idx: usize = 0;
9449        #[cfg(feature = "extra-children")]
9450        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
9451            extra_iter
9452                .next()
9453                .unwrap()
9454                .node
9455                .write_to(writer)
9456                .map_err(SerializeError::from)?;
9457        }
9458        #[cfg(feature = "wml-styling")]
9459        if let Some(ref val) = self.r_pr {
9460            val.write_element("w:rPr", writer)?;
9461        }
9462        #[cfg(feature = "extra-children")]
9463        {
9464            emit_idx += 1;
9465        }
9466        for item in &self.run_content {
9467            #[cfg(feature = "extra-children")]
9468            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
9469                extra_iter
9470                    .next()
9471                    .unwrap()
9472                    .node
9473                    .write_to(writer)
9474                    .map_err(SerializeError::from)?;
9475            }
9476            item.write_element("", writer)?;
9477            #[cfg(feature = "extra-children")]
9478            {
9479                emit_idx += 1;
9480            }
9481        }
9482        #[cfg(feature = "extra-children")]
9483        for extra in extra_iter {
9484            extra.node.write_to(writer).map_err(SerializeError::from)?;
9485        }
9486        Ok(())
9487    }
9488
9489    fn is_empty_element(&self) -> bool {
9490        #[cfg(feature = "wml-styling")]
9491        if self.r_pr.is_some() {
9492            return false;
9493        }
9494        if !self.run_content.is_empty() {
9495            return false;
9496        }
9497        #[cfg(feature = "extra-children")]
9498        if !self.extra_children.is_empty() {
9499            return false;
9500        }
9501        true
9502    }
9503}
9504
9505impl ToXml for Fonts {
9506    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
9507        #[allow(unused_mut)]
9508        let mut start = start;
9509        #[cfg(feature = "wml-styling")]
9510        if let Some(ref val) = self.hint {
9511            {
9512                let s = val.to_string();
9513                start.push_attribute(("w:hint", s.as_str()));
9514            }
9515        }
9516        #[cfg(feature = "wml-styling")]
9517        if let Some(ref val) = self.ascii {
9518            start.push_attribute(("w:ascii", val.as_str()));
9519        }
9520        #[cfg(feature = "wml-styling")]
9521        if let Some(ref val) = self.h_ansi {
9522            start.push_attribute(("w:hAnsi", val.as_str()));
9523        }
9524        #[cfg(feature = "wml-styling")]
9525        if let Some(ref val) = self.east_asia {
9526            start.push_attribute(("w:eastAsia", val.as_str()));
9527        }
9528        #[cfg(feature = "wml-styling")]
9529        if let Some(ref val) = self.cs {
9530            start.push_attribute(("w:cs", val.as_str()));
9531        }
9532        #[cfg(feature = "wml-styling")]
9533        if let Some(ref val) = self.ascii_theme {
9534            {
9535                let s = val.to_string();
9536                start.push_attribute(("w:asciiTheme", s.as_str()));
9537            }
9538        }
9539        #[cfg(feature = "wml-styling")]
9540        if let Some(ref val) = self.h_ansi_theme {
9541            {
9542                let s = val.to_string();
9543                start.push_attribute(("w:hAnsiTheme", s.as_str()));
9544            }
9545        }
9546        #[cfg(feature = "wml-styling")]
9547        if let Some(ref val) = self.east_asia_theme {
9548            {
9549                let s = val.to_string();
9550                start.push_attribute(("w:eastAsiaTheme", s.as_str()));
9551            }
9552        }
9553        #[cfg(feature = "wml-styling")]
9554        if let Some(ref val) = self.cstheme {
9555            {
9556                let s = val.to_string();
9557                start.push_attribute(("w:cstheme", s.as_str()));
9558            }
9559        }
9560        #[cfg(feature = "extra-attrs")]
9561        for (key, value) in &self.extra_attrs {
9562            start.push_attribute((key.as_str(), value.as_str()));
9563        }
9564        start
9565    }
9566
9567    fn is_empty_element(&self) -> bool {
9568        true
9569    }
9570}
9571
9572impl ToXml for EGRPrBase {
9573    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
9574        #[cfg(feature = "extra-children")]
9575        let mut extra_iter = self.extra_children.iter().peekable();
9576        #[cfg(feature = "extra-children")]
9577        let mut emit_idx: usize = 0;
9578        #[cfg(feature = "extra-children")]
9579        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
9580            extra_iter
9581                .next()
9582                .unwrap()
9583                .node
9584                .write_to(writer)
9585                .map_err(SerializeError::from)?;
9586        }
9587        if let Some(ref val) = self.run_style {
9588            val.write_element("w:rStyle", writer)?;
9589        }
9590        #[cfg(feature = "extra-children")]
9591        {
9592            emit_idx += 1;
9593        }
9594        #[cfg(feature = "extra-children")]
9595        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
9596            extra_iter
9597                .next()
9598                .unwrap()
9599                .node
9600                .write_to(writer)
9601                .map_err(SerializeError::from)?;
9602        }
9603        if let Some(ref val) = self.fonts {
9604            val.write_element("w:rFonts", writer)?;
9605        }
9606        #[cfg(feature = "extra-children")]
9607        {
9608            emit_idx += 1;
9609        }
9610        #[cfg(feature = "extra-children")]
9611        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
9612            extra_iter
9613                .next()
9614                .unwrap()
9615                .node
9616                .write_to(writer)
9617                .map_err(SerializeError::from)?;
9618        }
9619        if let Some(ref val) = self.bold {
9620            val.write_element("w:b", writer)?;
9621        }
9622        #[cfg(feature = "extra-children")]
9623        {
9624            emit_idx += 1;
9625        }
9626        #[cfg(feature = "extra-children")]
9627        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
9628            extra_iter
9629                .next()
9630                .unwrap()
9631                .node
9632                .write_to(writer)
9633                .map_err(SerializeError::from)?;
9634        }
9635        if let Some(ref val) = self.b_cs {
9636            val.write_element("w:bCs", writer)?;
9637        }
9638        #[cfg(feature = "extra-children")]
9639        {
9640            emit_idx += 1;
9641        }
9642        #[cfg(feature = "extra-children")]
9643        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
9644            extra_iter
9645                .next()
9646                .unwrap()
9647                .node
9648                .write_to(writer)
9649                .map_err(SerializeError::from)?;
9650        }
9651        if let Some(ref val) = self.italic {
9652            val.write_element("w:i", writer)?;
9653        }
9654        #[cfg(feature = "extra-children")]
9655        {
9656            emit_idx += 1;
9657        }
9658        #[cfg(feature = "extra-children")]
9659        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
9660            extra_iter
9661                .next()
9662                .unwrap()
9663                .node
9664                .write_to(writer)
9665                .map_err(SerializeError::from)?;
9666        }
9667        if let Some(ref val) = self.i_cs {
9668            val.write_element("w:iCs", writer)?;
9669        }
9670        #[cfg(feature = "extra-children")]
9671        {
9672            emit_idx += 1;
9673        }
9674        #[cfg(feature = "extra-children")]
9675        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
9676            extra_iter
9677                .next()
9678                .unwrap()
9679                .node
9680                .write_to(writer)
9681                .map_err(SerializeError::from)?;
9682        }
9683        if let Some(ref val) = self.caps {
9684            val.write_element("w:caps", writer)?;
9685        }
9686        #[cfg(feature = "extra-children")]
9687        {
9688            emit_idx += 1;
9689        }
9690        #[cfg(feature = "extra-children")]
9691        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
9692            extra_iter
9693                .next()
9694                .unwrap()
9695                .node
9696                .write_to(writer)
9697                .map_err(SerializeError::from)?;
9698        }
9699        if let Some(ref val) = self.small_caps {
9700            val.write_element("w:smallCaps", writer)?;
9701        }
9702        #[cfg(feature = "extra-children")]
9703        {
9704            emit_idx += 1;
9705        }
9706        #[cfg(feature = "extra-children")]
9707        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
9708            extra_iter
9709                .next()
9710                .unwrap()
9711                .node
9712                .write_to(writer)
9713                .map_err(SerializeError::from)?;
9714        }
9715        if let Some(ref val) = self.strikethrough {
9716            val.write_element("w:strike", writer)?;
9717        }
9718        #[cfg(feature = "extra-children")]
9719        {
9720            emit_idx += 1;
9721        }
9722        #[cfg(feature = "extra-children")]
9723        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
9724            extra_iter
9725                .next()
9726                .unwrap()
9727                .node
9728                .write_to(writer)
9729                .map_err(SerializeError::from)?;
9730        }
9731        if let Some(ref val) = self.dstrike {
9732            val.write_element("w:dstrike", writer)?;
9733        }
9734        #[cfg(feature = "extra-children")]
9735        {
9736            emit_idx += 1;
9737        }
9738        #[cfg(feature = "extra-children")]
9739        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
9740            extra_iter
9741                .next()
9742                .unwrap()
9743                .node
9744                .write_to(writer)
9745                .map_err(SerializeError::from)?;
9746        }
9747        if let Some(ref val) = self.outline {
9748            val.write_element("w:outline", writer)?;
9749        }
9750        #[cfg(feature = "extra-children")]
9751        {
9752            emit_idx += 1;
9753        }
9754        #[cfg(feature = "extra-children")]
9755        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
9756            extra_iter
9757                .next()
9758                .unwrap()
9759                .node
9760                .write_to(writer)
9761                .map_err(SerializeError::from)?;
9762        }
9763        if let Some(ref val) = self.shadow {
9764            val.write_element("w:shadow", writer)?;
9765        }
9766        #[cfg(feature = "extra-children")]
9767        {
9768            emit_idx += 1;
9769        }
9770        #[cfg(feature = "extra-children")]
9771        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
9772            extra_iter
9773                .next()
9774                .unwrap()
9775                .node
9776                .write_to(writer)
9777                .map_err(SerializeError::from)?;
9778        }
9779        if let Some(ref val) = self.emboss {
9780            val.write_element("w:emboss", writer)?;
9781        }
9782        #[cfg(feature = "extra-children")]
9783        {
9784            emit_idx += 1;
9785        }
9786        #[cfg(feature = "extra-children")]
9787        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
9788            extra_iter
9789                .next()
9790                .unwrap()
9791                .node
9792                .write_to(writer)
9793                .map_err(SerializeError::from)?;
9794        }
9795        if let Some(ref val) = self.imprint {
9796            val.write_element("w:imprint", writer)?;
9797        }
9798        #[cfg(feature = "extra-children")]
9799        {
9800            emit_idx += 1;
9801        }
9802        #[cfg(feature = "extra-children")]
9803        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
9804            extra_iter
9805                .next()
9806                .unwrap()
9807                .node
9808                .write_to(writer)
9809                .map_err(SerializeError::from)?;
9810        }
9811        if let Some(ref val) = self.no_proof {
9812            val.write_element("w:noProof", writer)?;
9813        }
9814        #[cfg(feature = "extra-children")]
9815        {
9816            emit_idx += 1;
9817        }
9818        #[cfg(feature = "extra-children")]
9819        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
9820            extra_iter
9821                .next()
9822                .unwrap()
9823                .node
9824                .write_to(writer)
9825                .map_err(SerializeError::from)?;
9826        }
9827        if let Some(ref val) = self.snap_to_grid {
9828            val.write_element("w:snapToGrid", writer)?;
9829        }
9830        #[cfg(feature = "extra-children")]
9831        {
9832            emit_idx += 1;
9833        }
9834        #[cfg(feature = "extra-children")]
9835        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
9836            extra_iter
9837                .next()
9838                .unwrap()
9839                .node
9840                .write_to(writer)
9841                .map_err(SerializeError::from)?;
9842        }
9843        if let Some(ref val) = self.vanish {
9844            val.write_element("w:vanish", writer)?;
9845        }
9846        #[cfg(feature = "extra-children")]
9847        {
9848            emit_idx += 1;
9849        }
9850        #[cfg(feature = "extra-children")]
9851        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
9852            extra_iter
9853                .next()
9854                .unwrap()
9855                .node
9856                .write_to(writer)
9857                .map_err(SerializeError::from)?;
9858        }
9859        if let Some(ref val) = self.web_hidden {
9860            val.write_element("w:webHidden", writer)?;
9861        }
9862        #[cfg(feature = "extra-children")]
9863        {
9864            emit_idx += 1;
9865        }
9866        #[cfg(feature = "extra-children")]
9867        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
9868            extra_iter
9869                .next()
9870                .unwrap()
9871                .node
9872                .write_to(writer)
9873                .map_err(SerializeError::from)?;
9874        }
9875        if let Some(ref val) = self.color {
9876            val.write_element("w:color", writer)?;
9877        }
9878        #[cfg(feature = "extra-children")]
9879        {
9880            emit_idx += 1;
9881        }
9882        #[cfg(feature = "extra-children")]
9883        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
9884            extra_iter
9885                .next()
9886                .unwrap()
9887                .node
9888                .write_to(writer)
9889                .map_err(SerializeError::from)?;
9890        }
9891        if let Some(ref val) = self.spacing {
9892            val.write_element("w:spacing", writer)?;
9893        }
9894        #[cfg(feature = "extra-children")]
9895        {
9896            emit_idx += 1;
9897        }
9898        #[cfg(feature = "extra-children")]
9899        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
9900            extra_iter
9901                .next()
9902                .unwrap()
9903                .node
9904                .write_to(writer)
9905                .map_err(SerializeError::from)?;
9906        }
9907        if let Some(ref val) = self.width {
9908            val.write_element("w:w", writer)?;
9909        }
9910        #[cfg(feature = "extra-children")]
9911        {
9912            emit_idx += 1;
9913        }
9914        #[cfg(feature = "extra-children")]
9915        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
9916            extra_iter
9917                .next()
9918                .unwrap()
9919                .node
9920                .write_to(writer)
9921                .map_err(SerializeError::from)?;
9922        }
9923        if let Some(ref val) = self.kern {
9924            val.write_element("w:kern", writer)?;
9925        }
9926        #[cfg(feature = "extra-children")]
9927        {
9928            emit_idx += 1;
9929        }
9930        #[cfg(feature = "extra-children")]
9931        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
9932            extra_iter
9933                .next()
9934                .unwrap()
9935                .node
9936                .write_to(writer)
9937                .map_err(SerializeError::from)?;
9938        }
9939        if let Some(ref val) = self.position {
9940            val.write_element("w:position", writer)?;
9941        }
9942        #[cfg(feature = "extra-children")]
9943        {
9944            emit_idx += 1;
9945        }
9946        #[cfg(feature = "extra-children")]
9947        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
9948            extra_iter
9949                .next()
9950                .unwrap()
9951                .node
9952                .write_to(writer)
9953                .map_err(SerializeError::from)?;
9954        }
9955        if let Some(ref val) = self.size {
9956            val.write_element("w:sz", writer)?;
9957        }
9958        #[cfg(feature = "extra-children")]
9959        {
9960            emit_idx += 1;
9961        }
9962        #[cfg(feature = "extra-children")]
9963        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
9964            extra_iter
9965                .next()
9966                .unwrap()
9967                .node
9968                .write_to(writer)
9969                .map_err(SerializeError::from)?;
9970        }
9971        if let Some(ref val) = self.size_complex_script {
9972            val.write_element("w:szCs", writer)?;
9973        }
9974        #[cfg(feature = "extra-children")]
9975        {
9976            emit_idx += 1;
9977        }
9978        #[cfg(feature = "extra-children")]
9979        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
9980            extra_iter
9981                .next()
9982                .unwrap()
9983                .node
9984                .write_to(writer)
9985                .map_err(SerializeError::from)?;
9986        }
9987        if let Some(ref val) = self.highlight {
9988            val.write_element("w:highlight", writer)?;
9989        }
9990        #[cfg(feature = "extra-children")]
9991        {
9992            emit_idx += 1;
9993        }
9994        #[cfg(feature = "extra-children")]
9995        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
9996            extra_iter
9997                .next()
9998                .unwrap()
9999                .node
10000                .write_to(writer)
10001                .map_err(SerializeError::from)?;
10002        }
10003        if let Some(ref val) = self.underline {
10004            val.write_element("w:u", writer)?;
10005        }
10006        #[cfg(feature = "extra-children")]
10007        {
10008            emit_idx += 1;
10009        }
10010        #[cfg(feature = "extra-children")]
10011        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10012            extra_iter
10013                .next()
10014                .unwrap()
10015                .node
10016                .write_to(writer)
10017                .map_err(SerializeError::from)?;
10018        }
10019        if let Some(ref val) = self.effect {
10020            val.write_element("w:effect", writer)?;
10021        }
10022        #[cfg(feature = "extra-children")]
10023        {
10024            emit_idx += 1;
10025        }
10026        #[cfg(feature = "extra-children")]
10027        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10028            extra_iter
10029                .next()
10030                .unwrap()
10031                .node
10032                .write_to(writer)
10033                .map_err(SerializeError::from)?;
10034        }
10035        if let Some(ref val) = self.bdr {
10036            val.write_element("w:bdr", writer)?;
10037        }
10038        #[cfg(feature = "extra-children")]
10039        {
10040            emit_idx += 1;
10041        }
10042        #[cfg(feature = "extra-children")]
10043        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10044            extra_iter
10045                .next()
10046                .unwrap()
10047                .node
10048                .write_to(writer)
10049                .map_err(SerializeError::from)?;
10050        }
10051        if let Some(ref val) = self.shading {
10052            val.write_element("w:shd", writer)?;
10053        }
10054        #[cfg(feature = "extra-children")]
10055        {
10056            emit_idx += 1;
10057        }
10058        #[cfg(feature = "extra-children")]
10059        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10060            extra_iter
10061                .next()
10062                .unwrap()
10063                .node
10064                .write_to(writer)
10065                .map_err(SerializeError::from)?;
10066        }
10067        if let Some(ref val) = self.fit_text {
10068            val.write_element("w:fitText", writer)?;
10069        }
10070        #[cfg(feature = "extra-children")]
10071        {
10072            emit_idx += 1;
10073        }
10074        #[cfg(feature = "extra-children")]
10075        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10076            extra_iter
10077                .next()
10078                .unwrap()
10079                .node
10080                .write_to(writer)
10081                .map_err(SerializeError::from)?;
10082        }
10083        if let Some(ref val) = self.vert_align {
10084            val.write_element("w:vertAlign", writer)?;
10085        }
10086        #[cfg(feature = "extra-children")]
10087        {
10088            emit_idx += 1;
10089        }
10090        #[cfg(feature = "extra-children")]
10091        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10092            extra_iter
10093                .next()
10094                .unwrap()
10095                .node
10096                .write_to(writer)
10097                .map_err(SerializeError::from)?;
10098        }
10099        if let Some(ref val) = self.rtl {
10100            val.write_element("w:rtl", writer)?;
10101        }
10102        #[cfg(feature = "extra-children")]
10103        {
10104            emit_idx += 1;
10105        }
10106        #[cfg(feature = "extra-children")]
10107        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10108            extra_iter
10109                .next()
10110                .unwrap()
10111                .node
10112                .write_to(writer)
10113                .map_err(SerializeError::from)?;
10114        }
10115        if let Some(ref val) = self.cs {
10116            val.write_element("w:cs", writer)?;
10117        }
10118        #[cfg(feature = "extra-children")]
10119        {
10120            emit_idx += 1;
10121        }
10122        #[cfg(feature = "extra-children")]
10123        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10124            extra_iter
10125                .next()
10126                .unwrap()
10127                .node
10128                .write_to(writer)
10129                .map_err(SerializeError::from)?;
10130        }
10131        if let Some(ref val) = self.em {
10132            val.write_element("w:em", writer)?;
10133        }
10134        #[cfg(feature = "extra-children")]
10135        {
10136            emit_idx += 1;
10137        }
10138        #[cfg(feature = "extra-children")]
10139        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10140            extra_iter
10141                .next()
10142                .unwrap()
10143                .node
10144                .write_to(writer)
10145                .map_err(SerializeError::from)?;
10146        }
10147        if let Some(ref val) = self.lang {
10148            val.write_element("w:lang", writer)?;
10149        }
10150        #[cfg(feature = "extra-children")]
10151        {
10152            emit_idx += 1;
10153        }
10154        #[cfg(feature = "extra-children")]
10155        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10156            extra_iter
10157                .next()
10158                .unwrap()
10159                .node
10160                .write_to(writer)
10161                .map_err(SerializeError::from)?;
10162        }
10163        if let Some(ref val) = self.east_asian_layout {
10164            val.write_element("w:eastAsianLayout", writer)?;
10165        }
10166        #[cfg(feature = "extra-children")]
10167        {
10168            emit_idx += 1;
10169        }
10170        #[cfg(feature = "extra-children")]
10171        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10172            extra_iter
10173                .next()
10174                .unwrap()
10175                .node
10176                .write_to(writer)
10177                .map_err(SerializeError::from)?;
10178        }
10179        if let Some(ref val) = self.spec_vanish {
10180            val.write_element("w:specVanish", writer)?;
10181        }
10182        #[cfg(feature = "extra-children")]
10183        {
10184            emit_idx += 1;
10185        }
10186        #[cfg(feature = "extra-children")]
10187        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10188            extra_iter
10189                .next()
10190                .unwrap()
10191                .node
10192                .write_to(writer)
10193                .map_err(SerializeError::from)?;
10194        }
10195        if let Some(ref val) = self.o_math {
10196            val.write_element("w:oMath", writer)?;
10197        }
10198        #[cfg(feature = "extra-children")]
10199        {
10200            emit_idx += 1;
10201        }
10202        #[cfg(feature = "extra-children")]
10203        for extra in extra_iter {
10204            extra.node.write_to(writer).map_err(SerializeError::from)?;
10205        }
10206        Ok(())
10207    }
10208
10209    fn is_empty_element(&self) -> bool {
10210        if self.run_style.is_some() {
10211            return false;
10212        }
10213        if self.fonts.is_some() {
10214            return false;
10215        }
10216        if self.bold.is_some() {
10217            return false;
10218        }
10219        if self.b_cs.is_some() {
10220            return false;
10221        }
10222        if self.italic.is_some() {
10223            return false;
10224        }
10225        if self.i_cs.is_some() {
10226            return false;
10227        }
10228        if self.caps.is_some() {
10229            return false;
10230        }
10231        if self.small_caps.is_some() {
10232            return false;
10233        }
10234        if self.strikethrough.is_some() {
10235            return false;
10236        }
10237        if self.dstrike.is_some() {
10238            return false;
10239        }
10240        if self.outline.is_some() {
10241            return false;
10242        }
10243        if self.shadow.is_some() {
10244            return false;
10245        }
10246        if self.emboss.is_some() {
10247            return false;
10248        }
10249        if self.imprint.is_some() {
10250            return false;
10251        }
10252        if self.no_proof.is_some() {
10253            return false;
10254        }
10255        if self.snap_to_grid.is_some() {
10256            return false;
10257        }
10258        if self.vanish.is_some() {
10259            return false;
10260        }
10261        if self.web_hidden.is_some() {
10262            return false;
10263        }
10264        if self.color.is_some() {
10265            return false;
10266        }
10267        if self.spacing.is_some() {
10268            return false;
10269        }
10270        if self.width.is_some() {
10271            return false;
10272        }
10273        if self.kern.is_some() {
10274            return false;
10275        }
10276        if self.position.is_some() {
10277            return false;
10278        }
10279        if self.size.is_some() {
10280            return false;
10281        }
10282        if self.size_complex_script.is_some() {
10283            return false;
10284        }
10285        if self.highlight.is_some() {
10286            return false;
10287        }
10288        if self.underline.is_some() {
10289            return false;
10290        }
10291        if self.effect.is_some() {
10292            return false;
10293        }
10294        if self.bdr.is_some() {
10295            return false;
10296        }
10297        if self.shading.is_some() {
10298            return false;
10299        }
10300        if self.fit_text.is_some() {
10301            return false;
10302        }
10303        if self.vert_align.is_some() {
10304            return false;
10305        }
10306        if self.rtl.is_some() {
10307            return false;
10308        }
10309        if self.cs.is_some() {
10310            return false;
10311        }
10312        if self.em.is_some() {
10313            return false;
10314        }
10315        if self.lang.is_some() {
10316            return false;
10317        }
10318        if self.east_asian_layout.is_some() {
10319            return false;
10320        }
10321        if self.spec_vanish.is_some() {
10322            return false;
10323        }
10324        if self.o_math.is_some() {
10325            return false;
10326        }
10327        #[cfg(feature = "extra-children")]
10328        if !self.extra_children.is_empty() {
10329            return false;
10330        }
10331        true
10332    }
10333}
10334
10335impl ToXml for EGRPrContent {
10336    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
10337        #[cfg(feature = "extra-children")]
10338        let mut extra_iter = self.extra_children.iter().peekable();
10339        #[cfg(feature = "extra-children")]
10340        let mut emit_idx: usize = 0;
10341        #[cfg(feature = "extra-children")]
10342        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10343            extra_iter
10344                .next()
10345                .unwrap()
10346                .node
10347                .write_to(writer)
10348                .map_err(SerializeError::from)?;
10349        }
10350        if let Some(ref val) = self.run_style {
10351            val.write_element("w:rStyle", writer)?;
10352        }
10353        #[cfg(feature = "extra-children")]
10354        {
10355            emit_idx += 1;
10356        }
10357        #[cfg(feature = "extra-children")]
10358        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10359            extra_iter
10360                .next()
10361                .unwrap()
10362                .node
10363                .write_to(writer)
10364                .map_err(SerializeError::from)?;
10365        }
10366        if let Some(ref val) = self.fonts {
10367            val.write_element("w:rFonts", writer)?;
10368        }
10369        #[cfg(feature = "extra-children")]
10370        {
10371            emit_idx += 1;
10372        }
10373        #[cfg(feature = "extra-children")]
10374        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10375            extra_iter
10376                .next()
10377                .unwrap()
10378                .node
10379                .write_to(writer)
10380                .map_err(SerializeError::from)?;
10381        }
10382        if let Some(ref val) = self.bold {
10383            val.write_element("w:b", writer)?;
10384        }
10385        #[cfg(feature = "extra-children")]
10386        {
10387            emit_idx += 1;
10388        }
10389        #[cfg(feature = "extra-children")]
10390        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10391            extra_iter
10392                .next()
10393                .unwrap()
10394                .node
10395                .write_to(writer)
10396                .map_err(SerializeError::from)?;
10397        }
10398        if let Some(ref val) = self.b_cs {
10399            val.write_element("w:bCs", writer)?;
10400        }
10401        #[cfg(feature = "extra-children")]
10402        {
10403            emit_idx += 1;
10404        }
10405        #[cfg(feature = "extra-children")]
10406        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10407            extra_iter
10408                .next()
10409                .unwrap()
10410                .node
10411                .write_to(writer)
10412                .map_err(SerializeError::from)?;
10413        }
10414        if let Some(ref val) = self.italic {
10415            val.write_element("w:i", writer)?;
10416        }
10417        #[cfg(feature = "extra-children")]
10418        {
10419            emit_idx += 1;
10420        }
10421        #[cfg(feature = "extra-children")]
10422        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10423            extra_iter
10424                .next()
10425                .unwrap()
10426                .node
10427                .write_to(writer)
10428                .map_err(SerializeError::from)?;
10429        }
10430        if let Some(ref val) = self.i_cs {
10431            val.write_element("w:iCs", writer)?;
10432        }
10433        #[cfg(feature = "extra-children")]
10434        {
10435            emit_idx += 1;
10436        }
10437        #[cfg(feature = "extra-children")]
10438        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10439            extra_iter
10440                .next()
10441                .unwrap()
10442                .node
10443                .write_to(writer)
10444                .map_err(SerializeError::from)?;
10445        }
10446        if let Some(ref val) = self.caps {
10447            val.write_element("w:caps", writer)?;
10448        }
10449        #[cfg(feature = "extra-children")]
10450        {
10451            emit_idx += 1;
10452        }
10453        #[cfg(feature = "extra-children")]
10454        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10455            extra_iter
10456                .next()
10457                .unwrap()
10458                .node
10459                .write_to(writer)
10460                .map_err(SerializeError::from)?;
10461        }
10462        if let Some(ref val) = self.small_caps {
10463            val.write_element("w:smallCaps", writer)?;
10464        }
10465        #[cfg(feature = "extra-children")]
10466        {
10467            emit_idx += 1;
10468        }
10469        #[cfg(feature = "extra-children")]
10470        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10471            extra_iter
10472                .next()
10473                .unwrap()
10474                .node
10475                .write_to(writer)
10476                .map_err(SerializeError::from)?;
10477        }
10478        if let Some(ref val) = self.strikethrough {
10479            val.write_element("w:strike", writer)?;
10480        }
10481        #[cfg(feature = "extra-children")]
10482        {
10483            emit_idx += 1;
10484        }
10485        #[cfg(feature = "extra-children")]
10486        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10487            extra_iter
10488                .next()
10489                .unwrap()
10490                .node
10491                .write_to(writer)
10492                .map_err(SerializeError::from)?;
10493        }
10494        if let Some(ref val) = self.dstrike {
10495            val.write_element("w:dstrike", writer)?;
10496        }
10497        #[cfg(feature = "extra-children")]
10498        {
10499            emit_idx += 1;
10500        }
10501        #[cfg(feature = "extra-children")]
10502        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10503            extra_iter
10504                .next()
10505                .unwrap()
10506                .node
10507                .write_to(writer)
10508                .map_err(SerializeError::from)?;
10509        }
10510        if let Some(ref val) = self.outline {
10511            val.write_element("w:outline", writer)?;
10512        }
10513        #[cfg(feature = "extra-children")]
10514        {
10515            emit_idx += 1;
10516        }
10517        #[cfg(feature = "extra-children")]
10518        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10519            extra_iter
10520                .next()
10521                .unwrap()
10522                .node
10523                .write_to(writer)
10524                .map_err(SerializeError::from)?;
10525        }
10526        if let Some(ref val) = self.shadow {
10527            val.write_element("w:shadow", writer)?;
10528        }
10529        #[cfg(feature = "extra-children")]
10530        {
10531            emit_idx += 1;
10532        }
10533        #[cfg(feature = "extra-children")]
10534        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10535            extra_iter
10536                .next()
10537                .unwrap()
10538                .node
10539                .write_to(writer)
10540                .map_err(SerializeError::from)?;
10541        }
10542        if let Some(ref val) = self.emboss {
10543            val.write_element("w:emboss", writer)?;
10544        }
10545        #[cfg(feature = "extra-children")]
10546        {
10547            emit_idx += 1;
10548        }
10549        #[cfg(feature = "extra-children")]
10550        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10551            extra_iter
10552                .next()
10553                .unwrap()
10554                .node
10555                .write_to(writer)
10556                .map_err(SerializeError::from)?;
10557        }
10558        if let Some(ref val) = self.imprint {
10559            val.write_element("w:imprint", writer)?;
10560        }
10561        #[cfg(feature = "extra-children")]
10562        {
10563            emit_idx += 1;
10564        }
10565        #[cfg(feature = "extra-children")]
10566        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10567            extra_iter
10568                .next()
10569                .unwrap()
10570                .node
10571                .write_to(writer)
10572                .map_err(SerializeError::from)?;
10573        }
10574        if let Some(ref val) = self.no_proof {
10575            val.write_element("w:noProof", writer)?;
10576        }
10577        #[cfg(feature = "extra-children")]
10578        {
10579            emit_idx += 1;
10580        }
10581        #[cfg(feature = "extra-children")]
10582        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10583            extra_iter
10584                .next()
10585                .unwrap()
10586                .node
10587                .write_to(writer)
10588                .map_err(SerializeError::from)?;
10589        }
10590        if let Some(ref val) = self.snap_to_grid {
10591            val.write_element("w:snapToGrid", writer)?;
10592        }
10593        #[cfg(feature = "extra-children")]
10594        {
10595            emit_idx += 1;
10596        }
10597        #[cfg(feature = "extra-children")]
10598        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10599            extra_iter
10600                .next()
10601                .unwrap()
10602                .node
10603                .write_to(writer)
10604                .map_err(SerializeError::from)?;
10605        }
10606        if let Some(ref val) = self.vanish {
10607            val.write_element("w:vanish", writer)?;
10608        }
10609        #[cfg(feature = "extra-children")]
10610        {
10611            emit_idx += 1;
10612        }
10613        #[cfg(feature = "extra-children")]
10614        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10615            extra_iter
10616                .next()
10617                .unwrap()
10618                .node
10619                .write_to(writer)
10620                .map_err(SerializeError::from)?;
10621        }
10622        if let Some(ref val) = self.web_hidden {
10623            val.write_element("w:webHidden", writer)?;
10624        }
10625        #[cfg(feature = "extra-children")]
10626        {
10627            emit_idx += 1;
10628        }
10629        #[cfg(feature = "extra-children")]
10630        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10631            extra_iter
10632                .next()
10633                .unwrap()
10634                .node
10635                .write_to(writer)
10636                .map_err(SerializeError::from)?;
10637        }
10638        if let Some(ref val) = self.color {
10639            val.write_element("w:color", writer)?;
10640        }
10641        #[cfg(feature = "extra-children")]
10642        {
10643            emit_idx += 1;
10644        }
10645        #[cfg(feature = "extra-children")]
10646        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10647            extra_iter
10648                .next()
10649                .unwrap()
10650                .node
10651                .write_to(writer)
10652                .map_err(SerializeError::from)?;
10653        }
10654        if let Some(ref val) = self.spacing {
10655            val.write_element("w:spacing", writer)?;
10656        }
10657        #[cfg(feature = "extra-children")]
10658        {
10659            emit_idx += 1;
10660        }
10661        #[cfg(feature = "extra-children")]
10662        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10663            extra_iter
10664                .next()
10665                .unwrap()
10666                .node
10667                .write_to(writer)
10668                .map_err(SerializeError::from)?;
10669        }
10670        if let Some(ref val) = self.width {
10671            val.write_element("w:w", writer)?;
10672        }
10673        #[cfg(feature = "extra-children")]
10674        {
10675            emit_idx += 1;
10676        }
10677        #[cfg(feature = "extra-children")]
10678        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10679            extra_iter
10680                .next()
10681                .unwrap()
10682                .node
10683                .write_to(writer)
10684                .map_err(SerializeError::from)?;
10685        }
10686        if let Some(ref val) = self.kern {
10687            val.write_element("w:kern", writer)?;
10688        }
10689        #[cfg(feature = "extra-children")]
10690        {
10691            emit_idx += 1;
10692        }
10693        #[cfg(feature = "extra-children")]
10694        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10695            extra_iter
10696                .next()
10697                .unwrap()
10698                .node
10699                .write_to(writer)
10700                .map_err(SerializeError::from)?;
10701        }
10702        if let Some(ref val) = self.position {
10703            val.write_element("w:position", writer)?;
10704        }
10705        #[cfg(feature = "extra-children")]
10706        {
10707            emit_idx += 1;
10708        }
10709        #[cfg(feature = "extra-children")]
10710        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10711            extra_iter
10712                .next()
10713                .unwrap()
10714                .node
10715                .write_to(writer)
10716                .map_err(SerializeError::from)?;
10717        }
10718        if let Some(ref val) = self.size {
10719            val.write_element("w:sz", writer)?;
10720        }
10721        #[cfg(feature = "extra-children")]
10722        {
10723            emit_idx += 1;
10724        }
10725        #[cfg(feature = "extra-children")]
10726        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10727            extra_iter
10728                .next()
10729                .unwrap()
10730                .node
10731                .write_to(writer)
10732                .map_err(SerializeError::from)?;
10733        }
10734        if let Some(ref val) = self.size_complex_script {
10735            val.write_element("w:szCs", writer)?;
10736        }
10737        #[cfg(feature = "extra-children")]
10738        {
10739            emit_idx += 1;
10740        }
10741        #[cfg(feature = "extra-children")]
10742        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10743            extra_iter
10744                .next()
10745                .unwrap()
10746                .node
10747                .write_to(writer)
10748                .map_err(SerializeError::from)?;
10749        }
10750        if let Some(ref val) = self.highlight {
10751            val.write_element("w:highlight", writer)?;
10752        }
10753        #[cfg(feature = "extra-children")]
10754        {
10755            emit_idx += 1;
10756        }
10757        #[cfg(feature = "extra-children")]
10758        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10759            extra_iter
10760                .next()
10761                .unwrap()
10762                .node
10763                .write_to(writer)
10764                .map_err(SerializeError::from)?;
10765        }
10766        if let Some(ref val) = self.underline {
10767            val.write_element("w:u", writer)?;
10768        }
10769        #[cfg(feature = "extra-children")]
10770        {
10771            emit_idx += 1;
10772        }
10773        #[cfg(feature = "extra-children")]
10774        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10775            extra_iter
10776                .next()
10777                .unwrap()
10778                .node
10779                .write_to(writer)
10780                .map_err(SerializeError::from)?;
10781        }
10782        if let Some(ref val) = self.effect {
10783            val.write_element("w:effect", writer)?;
10784        }
10785        #[cfg(feature = "extra-children")]
10786        {
10787            emit_idx += 1;
10788        }
10789        #[cfg(feature = "extra-children")]
10790        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10791            extra_iter
10792                .next()
10793                .unwrap()
10794                .node
10795                .write_to(writer)
10796                .map_err(SerializeError::from)?;
10797        }
10798        if let Some(ref val) = self.bdr {
10799            val.write_element("w:bdr", writer)?;
10800        }
10801        #[cfg(feature = "extra-children")]
10802        {
10803            emit_idx += 1;
10804        }
10805        #[cfg(feature = "extra-children")]
10806        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10807            extra_iter
10808                .next()
10809                .unwrap()
10810                .node
10811                .write_to(writer)
10812                .map_err(SerializeError::from)?;
10813        }
10814        if let Some(ref val) = self.shading {
10815            val.write_element("w:shd", writer)?;
10816        }
10817        #[cfg(feature = "extra-children")]
10818        {
10819            emit_idx += 1;
10820        }
10821        #[cfg(feature = "extra-children")]
10822        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10823            extra_iter
10824                .next()
10825                .unwrap()
10826                .node
10827                .write_to(writer)
10828                .map_err(SerializeError::from)?;
10829        }
10830        if let Some(ref val) = self.fit_text {
10831            val.write_element("w:fitText", writer)?;
10832        }
10833        #[cfg(feature = "extra-children")]
10834        {
10835            emit_idx += 1;
10836        }
10837        #[cfg(feature = "extra-children")]
10838        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10839            extra_iter
10840                .next()
10841                .unwrap()
10842                .node
10843                .write_to(writer)
10844                .map_err(SerializeError::from)?;
10845        }
10846        if let Some(ref val) = self.vert_align {
10847            val.write_element("w:vertAlign", writer)?;
10848        }
10849        #[cfg(feature = "extra-children")]
10850        {
10851            emit_idx += 1;
10852        }
10853        #[cfg(feature = "extra-children")]
10854        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10855            extra_iter
10856                .next()
10857                .unwrap()
10858                .node
10859                .write_to(writer)
10860                .map_err(SerializeError::from)?;
10861        }
10862        if let Some(ref val) = self.rtl {
10863            val.write_element("w:rtl", writer)?;
10864        }
10865        #[cfg(feature = "extra-children")]
10866        {
10867            emit_idx += 1;
10868        }
10869        #[cfg(feature = "extra-children")]
10870        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10871            extra_iter
10872                .next()
10873                .unwrap()
10874                .node
10875                .write_to(writer)
10876                .map_err(SerializeError::from)?;
10877        }
10878        if let Some(ref val) = self.cs {
10879            val.write_element("w:cs", writer)?;
10880        }
10881        #[cfg(feature = "extra-children")]
10882        {
10883            emit_idx += 1;
10884        }
10885        #[cfg(feature = "extra-children")]
10886        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10887            extra_iter
10888                .next()
10889                .unwrap()
10890                .node
10891                .write_to(writer)
10892                .map_err(SerializeError::from)?;
10893        }
10894        if let Some(ref val) = self.em {
10895            val.write_element("w:em", writer)?;
10896        }
10897        #[cfg(feature = "extra-children")]
10898        {
10899            emit_idx += 1;
10900        }
10901        #[cfg(feature = "extra-children")]
10902        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10903            extra_iter
10904                .next()
10905                .unwrap()
10906                .node
10907                .write_to(writer)
10908                .map_err(SerializeError::from)?;
10909        }
10910        if let Some(ref val) = self.lang {
10911            val.write_element("w:lang", writer)?;
10912        }
10913        #[cfg(feature = "extra-children")]
10914        {
10915            emit_idx += 1;
10916        }
10917        #[cfg(feature = "extra-children")]
10918        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10919            extra_iter
10920                .next()
10921                .unwrap()
10922                .node
10923                .write_to(writer)
10924                .map_err(SerializeError::from)?;
10925        }
10926        if let Some(ref val) = self.east_asian_layout {
10927            val.write_element("w:eastAsianLayout", writer)?;
10928        }
10929        #[cfg(feature = "extra-children")]
10930        {
10931            emit_idx += 1;
10932        }
10933        #[cfg(feature = "extra-children")]
10934        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10935            extra_iter
10936                .next()
10937                .unwrap()
10938                .node
10939                .write_to(writer)
10940                .map_err(SerializeError::from)?;
10941        }
10942        if let Some(ref val) = self.spec_vanish {
10943            val.write_element("w:specVanish", writer)?;
10944        }
10945        #[cfg(feature = "extra-children")]
10946        {
10947            emit_idx += 1;
10948        }
10949        #[cfg(feature = "extra-children")]
10950        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10951            extra_iter
10952                .next()
10953                .unwrap()
10954                .node
10955                .write_to(writer)
10956                .map_err(SerializeError::from)?;
10957        }
10958        if let Some(ref val) = self.o_math {
10959            val.write_element("w:oMath", writer)?;
10960        }
10961        #[cfg(feature = "extra-children")]
10962        {
10963            emit_idx += 1;
10964        }
10965        #[cfg(feature = "extra-children")]
10966        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10967            extra_iter
10968                .next()
10969                .unwrap()
10970                .node
10971                .write_to(writer)
10972                .map_err(SerializeError::from)?;
10973        }
10974        if let Some(ref val) = self.r_pr_change {
10975            val.write_element("w:rPrChange", writer)?;
10976        }
10977        #[cfg(feature = "extra-children")]
10978        {
10979            emit_idx += 1;
10980        }
10981        #[cfg(feature = "extra-children")]
10982        for extra in extra_iter {
10983            extra.node.write_to(writer).map_err(SerializeError::from)?;
10984        }
10985        Ok(())
10986    }
10987
10988    fn is_empty_element(&self) -> bool {
10989        if self.run_style.is_some() {
10990            return false;
10991        }
10992        if self.fonts.is_some() {
10993            return false;
10994        }
10995        if self.bold.is_some() {
10996            return false;
10997        }
10998        if self.b_cs.is_some() {
10999            return false;
11000        }
11001        if self.italic.is_some() {
11002            return false;
11003        }
11004        if self.i_cs.is_some() {
11005            return false;
11006        }
11007        if self.caps.is_some() {
11008            return false;
11009        }
11010        if self.small_caps.is_some() {
11011            return false;
11012        }
11013        if self.strikethrough.is_some() {
11014            return false;
11015        }
11016        if self.dstrike.is_some() {
11017            return false;
11018        }
11019        if self.outline.is_some() {
11020            return false;
11021        }
11022        if self.shadow.is_some() {
11023            return false;
11024        }
11025        if self.emboss.is_some() {
11026            return false;
11027        }
11028        if self.imprint.is_some() {
11029            return false;
11030        }
11031        if self.no_proof.is_some() {
11032            return false;
11033        }
11034        if self.snap_to_grid.is_some() {
11035            return false;
11036        }
11037        if self.vanish.is_some() {
11038            return false;
11039        }
11040        if self.web_hidden.is_some() {
11041            return false;
11042        }
11043        if self.color.is_some() {
11044            return false;
11045        }
11046        if self.spacing.is_some() {
11047            return false;
11048        }
11049        if self.width.is_some() {
11050            return false;
11051        }
11052        if self.kern.is_some() {
11053            return false;
11054        }
11055        if self.position.is_some() {
11056            return false;
11057        }
11058        if self.size.is_some() {
11059            return false;
11060        }
11061        if self.size_complex_script.is_some() {
11062            return false;
11063        }
11064        if self.highlight.is_some() {
11065            return false;
11066        }
11067        if self.underline.is_some() {
11068            return false;
11069        }
11070        if self.effect.is_some() {
11071            return false;
11072        }
11073        if self.bdr.is_some() {
11074            return false;
11075        }
11076        if self.shading.is_some() {
11077            return false;
11078        }
11079        if self.fit_text.is_some() {
11080            return false;
11081        }
11082        if self.vert_align.is_some() {
11083            return false;
11084        }
11085        if self.rtl.is_some() {
11086            return false;
11087        }
11088        if self.cs.is_some() {
11089            return false;
11090        }
11091        if self.em.is_some() {
11092            return false;
11093        }
11094        if self.lang.is_some() {
11095            return false;
11096        }
11097        if self.east_asian_layout.is_some() {
11098            return false;
11099        }
11100        if self.spec_vanish.is_some() {
11101            return false;
11102        }
11103        if self.o_math.is_some() {
11104            return false;
11105        }
11106        if self.r_pr_change.is_some() {
11107            return false;
11108        }
11109        #[cfg(feature = "extra-children")]
11110        if !self.extra_children.is_empty() {
11111            return false;
11112        }
11113        true
11114    }
11115}
11116
11117impl ToXml for RunProperties {
11118    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
11119        #[cfg(feature = "extra-children")]
11120        let mut extra_iter = self.extra_children.iter().peekable();
11121        #[cfg(feature = "extra-children")]
11122        let mut emit_idx: usize = 0;
11123        #[cfg(feature = "extra-children")]
11124        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
11125            extra_iter
11126                .next()
11127                .unwrap()
11128                .node
11129                .write_to(writer)
11130                .map_err(SerializeError::from)?;
11131        }
11132        if let Some(ref val) = self.run_style {
11133            val.write_element("w:rStyle", writer)?;
11134        }
11135        #[cfg(feature = "extra-children")]
11136        {
11137            emit_idx += 1;
11138        }
11139        #[cfg(feature = "extra-children")]
11140        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
11141            extra_iter
11142                .next()
11143                .unwrap()
11144                .node
11145                .write_to(writer)
11146                .map_err(SerializeError::from)?;
11147        }
11148        #[cfg(feature = "wml-styling")]
11149        if let Some(ref val) = self.fonts {
11150            val.write_element("w:rFonts", writer)?;
11151        }
11152        #[cfg(feature = "extra-children")]
11153        {
11154            emit_idx += 1;
11155        }
11156        #[cfg(feature = "extra-children")]
11157        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
11158            extra_iter
11159                .next()
11160                .unwrap()
11161                .node
11162                .write_to(writer)
11163                .map_err(SerializeError::from)?;
11164        }
11165        #[cfg(feature = "wml-styling")]
11166        if let Some(ref val) = self.bold {
11167            val.write_element("w:b", writer)?;
11168        }
11169        #[cfg(feature = "extra-children")]
11170        {
11171            emit_idx += 1;
11172        }
11173        #[cfg(feature = "extra-children")]
11174        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
11175            extra_iter
11176                .next()
11177                .unwrap()
11178                .node
11179                .write_to(writer)
11180                .map_err(SerializeError::from)?;
11181        }
11182        #[cfg(feature = "wml-styling")]
11183        if let Some(ref val) = self.b_cs {
11184            val.write_element("w:bCs", writer)?;
11185        }
11186        #[cfg(feature = "extra-children")]
11187        {
11188            emit_idx += 1;
11189        }
11190        #[cfg(feature = "extra-children")]
11191        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
11192            extra_iter
11193                .next()
11194                .unwrap()
11195                .node
11196                .write_to(writer)
11197                .map_err(SerializeError::from)?;
11198        }
11199        #[cfg(feature = "wml-styling")]
11200        if let Some(ref val) = self.italic {
11201            val.write_element("w:i", writer)?;
11202        }
11203        #[cfg(feature = "extra-children")]
11204        {
11205            emit_idx += 1;
11206        }
11207        #[cfg(feature = "extra-children")]
11208        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
11209            extra_iter
11210                .next()
11211                .unwrap()
11212                .node
11213                .write_to(writer)
11214                .map_err(SerializeError::from)?;
11215        }
11216        #[cfg(feature = "wml-styling")]
11217        if let Some(ref val) = self.i_cs {
11218            val.write_element("w:iCs", writer)?;
11219        }
11220        #[cfg(feature = "extra-children")]
11221        {
11222            emit_idx += 1;
11223        }
11224        #[cfg(feature = "extra-children")]
11225        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
11226            extra_iter
11227                .next()
11228                .unwrap()
11229                .node
11230                .write_to(writer)
11231                .map_err(SerializeError::from)?;
11232        }
11233        #[cfg(feature = "wml-styling")]
11234        if let Some(ref val) = self.caps {
11235            val.write_element("w:caps", writer)?;
11236        }
11237        #[cfg(feature = "extra-children")]
11238        {
11239            emit_idx += 1;
11240        }
11241        #[cfg(feature = "extra-children")]
11242        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
11243            extra_iter
11244                .next()
11245                .unwrap()
11246                .node
11247                .write_to(writer)
11248                .map_err(SerializeError::from)?;
11249        }
11250        #[cfg(feature = "wml-styling")]
11251        if let Some(ref val) = self.small_caps {
11252            val.write_element("w:smallCaps", writer)?;
11253        }
11254        #[cfg(feature = "extra-children")]
11255        {
11256            emit_idx += 1;
11257        }
11258        #[cfg(feature = "extra-children")]
11259        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
11260            extra_iter
11261                .next()
11262                .unwrap()
11263                .node
11264                .write_to(writer)
11265                .map_err(SerializeError::from)?;
11266        }
11267        #[cfg(feature = "wml-styling")]
11268        if let Some(ref val) = self.strikethrough {
11269            val.write_element("w:strike", writer)?;
11270        }
11271        #[cfg(feature = "extra-children")]
11272        {
11273            emit_idx += 1;
11274        }
11275        #[cfg(feature = "extra-children")]
11276        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
11277            extra_iter
11278                .next()
11279                .unwrap()
11280                .node
11281                .write_to(writer)
11282                .map_err(SerializeError::from)?;
11283        }
11284        #[cfg(feature = "wml-styling")]
11285        if let Some(ref val) = self.dstrike {
11286            val.write_element("w:dstrike", writer)?;
11287        }
11288        #[cfg(feature = "extra-children")]
11289        {
11290            emit_idx += 1;
11291        }
11292        #[cfg(feature = "extra-children")]
11293        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
11294            extra_iter
11295                .next()
11296                .unwrap()
11297                .node
11298                .write_to(writer)
11299                .map_err(SerializeError::from)?;
11300        }
11301        #[cfg(feature = "wml-styling")]
11302        if let Some(ref val) = self.outline {
11303            val.write_element("w:outline", writer)?;
11304        }
11305        #[cfg(feature = "extra-children")]
11306        {
11307            emit_idx += 1;
11308        }
11309        #[cfg(feature = "extra-children")]
11310        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
11311            extra_iter
11312                .next()
11313                .unwrap()
11314                .node
11315                .write_to(writer)
11316                .map_err(SerializeError::from)?;
11317        }
11318        #[cfg(feature = "wml-styling")]
11319        if let Some(ref val) = self.shadow {
11320            val.write_element("w:shadow", writer)?;
11321        }
11322        #[cfg(feature = "extra-children")]
11323        {
11324            emit_idx += 1;
11325        }
11326        #[cfg(feature = "extra-children")]
11327        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
11328            extra_iter
11329                .next()
11330                .unwrap()
11331                .node
11332                .write_to(writer)
11333                .map_err(SerializeError::from)?;
11334        }
11335        #[cfg(feature = "wml-styling")]
11336        if let Some(ref val) = self.emboss {
11337            val.write_element("w:emboss", writer)?;
11338        }
11339        #[cfg(feature = "extra-children")]
11340        {
11341            emit_idx += 1;
11342        }
11343        #[cfg(feature = "extra-children")]
11344        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
11345            extra_iter
11346                .next()
11347                .unwrap()
11348                .node
11349                .write_to(writer)
11350                .map_err(SerializeError::from)?;
11351        }
11352        #[cfg(feature = "wml-styling")]
11353        if let Some(ref val) = self.imprint {
11354            val.write_element("w:imprint", writer)?;
11355        }
11356        #[cfg(feature = "extra-children")]
11357        {
11358            emit_idx += 1;
11359        }
11360        #[cfg(feature = "extra-children")]
11361        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
11362            extra_iter
11363                .next()
11364                .unwrap()
11365                .node
11366                .write_to(writer)
11367                .map_err(SerializeError::from)?;
11368        }
11369        #[cfg(feature = "wml-styling")]
11370        if let Some(ref val) = self.no_proof {
11371            val.write_element("w:noProof", writer)?;
11372        }
11373        #[cfg(feature = "extra-children")]
11374        {
11375            emit_idx += 1;
11376        }
11377        #[cfg(feature = "extra-children")]
11378        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
11379            extra_iter
11380                .next()
11381                .unwrap()
11382                .node
11383                .write_to(writer)
11384                .map_err(SerializeError::from)?;
11385        }
11386        #[cfg(feature = "wml-styling")]
11387        if let Some(ref val) = self.snap_to_grid {
11388            val.write_element("w:snapToGrid", writer)?;
11389        }
11390        #[cfg(feature = "extra-children")]
11391        {
11392            emit_idx += 1;
11393        }
11394        #[cfg(feature = "extra-children")]
11395        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
11396            extra_iter
11397                .next()
11398                .unwrap()
11399                .node
11400                .write_to(writer)
11401                .map_err(SerializeError::from)?;
11402        }
11403        #[cfg(feature = "wml-styling")]
11404        if let Some(ref val) = self.vanish {
11405            val.write_element("w:vanish", writer)?;
11406        }
11407        #[cfg(feature = "extra-children")]
11408        {
11409            emit_idx += 1;
11410        }
11411        #[cfg(feature = "extra-children")]
11412        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
11413            extra_iter
11414                .next()
11415                .unwrap()
11416                .node
11417                .write_to(writer)
11418                .map_err(SerializeError::from)?;
11419        }
11420        #[cfg(feature = "wml-styling")]
11421        if let Some(ref val) = self.web_hidden {
11422            val.write_element("w:webHidden", writer)?;
11423        }
11424        #[cfg(feature = "extra-children")]
11425        {
11426            emit_idx += 1;
11427        }
11428        #[cfg(feature = "extra-children")]
11429        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
11430            extra_iter
11431                .next()
11432                .unwrap()
11433                .node
11434                .write_to(writer)
11435                .map_err(SerializeError::from)?;
11436        }
11437        #[cfg(feature = "wml-styling")]
11438        if let Some(ref val) = self.color {
11439            val.write_element("w:color", writer)?;
11440        }
11441        #[cfg(feature = "extra-children")]
11442        {
11443            emit_idx += 1;
11444        }
11445        #[cfg(feature = "extra-children")]
11446        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
11447            extra_iter
11448                .next()
11449                .unwrap()
11450                .node
11451                .write_to(writer)
11452                .map_err(SerializeError::from)?;
11453        }
11454        #[cfg(feature = "wml-styling")]
11455        if let Some(ref val) = self.spacing {
11456            val.write_element("w:spacing", writer)?;
11457        }
11458        #[cfg(feature = "extra-children")]
11459        {
11460            emit_idx += 1;
11461        }
11462        #[cfg(feature = "extra-children")]
11463        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
11464            extra_iter
11465                .next()
11466                .unwrap()
11467                .node
11468                .write_to(writer)
11469                .map_err(SerializeError::from)?;
11470        }
11471        #[cfg(feature = "wml-styling")]
11472        if let Some(ref val) = self.width {
11473            val.write_element("w:w", writer)?;
11474        }
11475        #[cfg(feature = "extra-children")]
11476        {
11477            emit_idx += 1;
11478        }
11479        #[cfg(feature = "extra-children")]
11480        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
11481            extra_iter
11482                .next()
11483                .unwrap()
11484                .node
11485                .write_to(writer)
11486                .map_err(SerializeError::from)?;
11487        }
11488        #[cfg(feature = "wml-styling")]
11489        if let Some(ref val) = self.kern {
11490            val.write_element("w:kern", writer)?;
11491        }
11492        #[cfg(feature = "extra-children")]
11493        {
11494            emit_idx += 1;
11495        }
11496        #[cfg(feature = "extra-children")]
11497        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
11498            extra_iter
11499                .next()
11500                .unwrap()
11501                .node
11502                .write_to(writer)
11503                .map_err(SerializeError::from)?;
11504        }
11505        #[cfg(feature = "wml-styling")]
11506        if let Some(ref val) = self.position {
11507            val.write_element("w:position", writer)?;
11508        }
11509        #[cfg(feature = "extra-children")]
11510        {
11511            emit_idx += 1;
11512        }
11513        #[cfg(feature = "extra-children")]
11514        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
11515            extra_iter
11516                .next()
11517                .unwrap()
11518                .node
11519                .write_to(writer)
11520                .map_err(SerializeError::from)?;
11521        }
11522        #[cfg(feature = "wml-styling")]
11523        if let Some(ref val) = self.size {
11524            val.write_element("w:sz", writer)?;
11525        }
11526        #[cfg(feature = "extra-children")]
11527        {
11528            emit_idx += 1;
11529        }
11530        #[cfg(feature = "extra-children")]
11531        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
11532            extra_iter
11533                .next()
11534                .unwrap()
11535                .node
11536                .write_to(writer)
11537                .map_err(SerializeError::from)?;
11538        }
11539        #[cfg(feature = "wml-styling")]
11540        if let Some(ref val) = self.size_complex_script {
11541            val.write_element("w:szCs", writer)?;
11542        }
11543        #[cfg(feature = "extra-children")]
11544        {
11545            emit_idx += 1;
11546        }
11547        #[cfg(feature = "extra-children")]
11548        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
11549            extra_iter
11550                .next()
11551                .unwrap()
11552                .node
11553                .write_to(writer)
11554                .map_err(SerializeError::from)?;
11555        }
11556        #[cfg(feature = "wml-styling")]
11557        if let Some(ref val) = self.highlight {
11558            val.write_element("w:highlight", writer)?;
11559        }
11560        #[cfg(feature = "extra-children")]
11561        {
11562            emit_idx += 1;
11563        }
11564        #[cfg(feature = "extra-children")]
11565        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
11566            extra_iter
11567                .next()
11568                .unwrap()
11569                .node
11570                .write_to(writer)
11571                .map_err(SerializeError::from)?;
11572        }
11573        #[cfg(feature = "wml-styling")]
11574        if let Some(ref val) = self.underline {
11575            val.write_element("w:u", writer)?;
11576        }
11577        #[cfg(feature = "extra-children")]
11578        {
11579            emit_idx += 1;
11580        }
11581        #[cfg(feature = "extra-children")]
11582        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
11583            extra_iter
11584                .next()
11585                .unwrap()
11586                .node
11587                .write_to(writer)
11588                .map_err(SerializeError::from)?;
11589        }
11590        #[cfg(feature = "wml-styling")]
11591        if let Some(ref val) = self.effect {
11592            val.write_element("w:effect", writer)?;
11593        }
11594        #[cfg(feature = "extra-children")]
11595        {
11596            emit_idx += 1;
11597        }
11598        #[cfg(feature = "extra-children")]
11599        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
11600            extra_iter
11601                .next()
11602                .unwrap()
11603                .node
11604                .write_to(writer)
11605                .map_err(SerializeError::from)?;
11606        }
11607        #[cfg(feature = "wml-styling")]
11608        if let Some(ref val) = self.bdr {
11609            val.write_element("w:bdr", writer)?;
11610        }
11611        #[cfg(feature = "extra-children")]
11612        {
11613            emit_idx += 1;
11614        }
11615        #[cfg(feature = "extra-children")]
11616        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
11617            extra_iter
11618                .next()
11619                .unwrap()
11620                .node
11621                .write_to(writer)
11622                .map_err(SerializeError::from)?;
11623        }
11624        #[cfg(feature = "wml-styling")]
11625        if let Some(ref val) = self.shading {
11626            val.write_element("w:shd", writer)?;
11627        }
11628        #[cfg(feature = "extra-children")]
11629        {
11630            emit_idx += 1;
11631        }
11632        #[cfg(feature = "extra-children")]
11633        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
11634            extra_iter
11635                .next()
11636                .unwrap()
11637                .node
11638                .write_to(writer)
11639                .map_err(SerializeError::from)?;
11640        }
11641        #[cfg(feature = "wml-styling")]
11642        if let Some(ref val) = self.fit_text {
11643            val.write_element("w:fitText", writer)?;
11644        }
11645        #[cfg(feature = "extra-children")]
11646        {
11647            emit_idx += 1;
11648        }
11649        #[cfg(feature = "extra-children")]
11650        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
11651            extra_iter
11652                .next()
11653                .unwrap()
11654                .node
11655                .write_to(writer)
11656                .map_err(SerializeError::from)?;
11657        }
11658        #[cfg(feature = "wml-styling")]
11659        if let Some(ref val) = self.vert_align {
11660            val.write_element("w:vertAlign", writer)?;
11661        }
11662        #[cfg(feature = "extra-children")]
11663        {
11664            emit_idx += 1;
11665        }
11666        #[cfg(feature = "extra-children")]
11667        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
11668            extra_iter
11669                .next()
11670                .unwrap()
11671                .node
11672                .write_to(writer)
11673                .map_err(SerializeError::from)?;
11674        }
11675        #[cfg(feature = "wml-styling")]
11676        if let Some(ref val) = self.rtl {
11677            val.write_element("w:rtl", writer)?;
11678        }
11679        #[cfg(feature = "extra-children")]
11680        {
11681            emit_idx += 1;
11682        }
11683        #[cfg(feature = "extra-children")]
11684        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
11685            extra_iter
11686                .next()
11687                .unwrap()
11688                .node
11689                .write_to(writer)
11690                .map_err(SerializeError::from)?;
11691        }
11692        #[cfg(feature = "wml-styling")]
11693        if let Some(ref val) = self.cs {
11694            val.write_element("w:cs", writer)?;
11695        }
11696        #[cfg(feature = "extra-children")]
11697        {
11698            emit_idx += 1;
11699        }
11700        #[cfg(feature = "extra-children")]
11701        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
11702            extra_iter
11703                .next()
11704                .unwrap()
11705                .node
11706                .write_to(writer)
11707                .map_err(SerializeError::from)?;
11708        }
11709        #[cfg(feature = "wml-styling")]
11710        if let Some(ref val) = self.em {
11711            val.write_element("w:em", writer)?;
11712        }
11713        #[cfg(feature = "extra-children")]
11714        {
11715            emit_idx += 1;
11716        }
11717        #[cfg(feature = "extra-children")]
11718        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
11719            extra_iter
11720                .next()
11721                .unwrap()
11722                .node
11723                .write_to(writer)
11724                .map_err(SerializeError::from)?;
11725        }
11726        #[cfg(feature = "wml-styling")]
11727        if let Some(ref val) = self.lang {
11728            val.write_element("w:lang", writer)?;
11729        }
11730        #[cfg(feature = "extra-children")]
11731        {
11732            emit_idx += 1;
11733        }
11734        #[cfg(feature = "extra-children")]
11735        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
11736            extra_iter
11737                .next()
11738                .unwrap()
11739                .node
11740                .write_to(writer)
11741                .map_err(SerializeError::from)?;
11742        }
11743        #[cfg(feature = "wml-styling")]
11744        if let Some(ref val) = self.east_asian_layout {
11745            val.write_element("w:eastAsianLayout", writer)?;
11746        }
11747        #[cfg(feature = "extra-children")]
11748        {
11749            emit_idx += 1;
11750        }
11751        #[cfg(feature = "extra-children")]
11752        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
11753            extra_iter
11754                .next()
11755                .unwrap()
11756                .node
11757                .write_to(writer)
11758                .map_err(SerializeError::from)?;
11759        }
11760        #[cfg(feature = "wml-styling")]
11761        if let Some(ref val) = self.spec_vanish {
11762            val.write_element("w:specVanish", writer)?;
11763        }
11764        #[cfg(feature = "extra-children")]
11765        {
11766            emit_idx += 1;
11767        }
11768        #[cfg(feature = "extra-children")]
11769        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
11770            extra_iter
11771                .next()
11772                .unwrap()
11773                .node
11774                .write_to(writer)
11775                .map_err(SerializeError::from)?;
11776        }
11777        #[cfg(feature = "wml-styling")]
11778        if let Some(ref val) = self.o_math {
11779            val.write_element("w:oMath", writer)?;
11780        }
11781        #[cfg(feature = "extra-children")]
11782        {
11783            emit_idx += 1;
11784        }
11785        #[cfg(feature = "extra-children")]
11786        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
11787            extra_iter
11788                .next()
11789                .unwrap()
11790                .node
11791                .write_to(writer)
11792                .map_err(SerializeError::from)?;
11793        }
11794        #[cfg(feature = "wml-track-changes")]
11795        if let Some(ref val) = self.r_pr_change {
11796            val.write_element("w:rPrChange", writer)?;
11797        }
11798        #[cfg(feature = "extra-children")]
11799        {
11800            emit_idx += 1;
11801        }
11802        #[cfg(feature = "extra-children")]
11803        for extra in extra_iter {
11804            extra.node.write_to(writer).map_err(SerializeError::from)?;
11805        }
11806        Ok(())
11807    }
11808
11809    fn is_empty_element(&self) -> bool {
11810        if self.run_style.is_some() {
11811            return false;
11812        }
11813        #[cfg(feature = "wml-styling")]
11814        if self.fonts.is_some() {
11815            return false;
11816        }
11817        #[cfg(feature = "wml-styling")]
11818        if self.bold.is_some() {
11819            return false;
11820        }
11821        #[cfg(feature = "wml-styling")]
11822        if self.b_cs.is_some() {
11823            return false;
11824        }
11825        #[cfg(feature = "wml-styling")]
11826        if self.italic.is_some() {
11827            return false;
11828        }
11829        #[cfg(feature = "wml-styling")]
11830        if self.i_cs.is_some() {
11831            return false;
11832        }
11833        #[cfg(feature = "wml-styling")]
11834        if self.caps.is_some() {
11835            return false;
11836        }
11837        #[cfg(feature = "wml-styling")]
11838        if self.small_caps.is_some() {
11839            return false;
11840        }
11841        #[cfg(feature = "wml-styling")]
11842        if self.strikethrough.is_some() {
11843            return false;
11844        }
11845        #[cfg(feature = "wml-styling")]
11846        if self.dstrike.is_some() {
11847            return false;
11848        }
11849        #[cfg(feature = "wml-styling")]
11850        if self.outline.is_some() {
11851            return false;
11852        }
11853        #[cfg(feature = "wml-styling")]
11854        if self.shadow.is_some() {
11855            return false;
11856        }
11857        #[cfg(feature = "wml-styling")]
11858        if self.emboss.is_some() {
11859            return false;
11860        }
11861        #[cfg(feature = "wml-styling")]
11862        if self.imprint.is_some() {
11863            return false;
11864        }
11865        #[cfg(feature = "wml-styling")]
11866        if self.no_proof.is_some() {
11867            return false;
11868        }
11869        #[cfg(feature = "wml-styling")]
11870        if self.snap_to_grid.is_some() {
11871            return false;
11872        }
11873        #[cfg(feature = "wml-styling")]
11874        if self.vanish.is_some() {
11875            return false;
11876        }
11877        #[cfg(feature = "wml-styling")]
11878        if self.web_hidden.is_some() {
11879            return false;
11880        }
11881        #[cfg(feature = "wml-styling")]
11882        if self.color.is_some() {
11883            return false;
11884        }
11885        #[cfg(feature = "wml-styling")]
11886        if self.spacing.is_some() {
11887            return false;
11888        }
11889        #[cfg(feature = "wml-styling")]
11890        if self.width.is_some() {
11891            return false;
11892        }
11893        #[cfg(feature = "wml-styling")]
11894        if self.kern.is_some() {
11895            return false;
11896        }
11897        #[cfg(feature = "wml-styling")]
11898        if self.position.is_some() {
11899            return false;
11900        }
11901        #[cfg(feature = "wml-styling")]
11902        if self.size.is_some() {
11903            return false;
11904        }
11905        #[cfg(feature = "wml-styling")]
11906        if self.size_complex_script.is_some() {
11907            return false;
11908        }
11909        #[cfg(feature = "wml-styling")]
11910        if self.highlight.is_some() {
11911            return false;
11912        }
11913        #[cfg(feature = "wml-styling")]
11914        if self.underline.is_some() {
11915            return false;
11916        }
11917        #[cfg(feature = "wml-styling")]
11918        if self.effect.is_some() {
11919            return false;
11920        }
11921        #[cfg(feature = "wml-styling")]
11922        if self.bdr.is_some() {
11923            return false;
11924        }
11925        #[cfg(feature = "wml-styling")]
11926        if self.shading.is_some() {
11927            return false;
11928        }
11929        #[cfg(feature = "wml-styling")]
11930        if self.fit_text.is_some() {
11931            return false;
11932        }
11933        #[cfg(feature = "wml-styling")]
11934        if self.vert_align.is_some() {
11935            return false;
11936        }
11937        #[cfg(feature = "wml-styling")]
11938        if self.rtl.is_some() {
11939            return false;
11940        }
11941        #[cfg(feature = "wml-styling")]
11942        if self.cs.is_some() {
11943            return false;
11944        }
11945        #[cfg(feature = "wml-styling")]
11946        if self.em.is_some() {
11947            return false;
11948        }
11949        #[cfg(feature = "wml-styling")]
11950        if self.lang.is_some() {
11951            return false;
11952        }
11953        #[cfg(feature = "wml-styling")]
11954        if self.east_asian_layout.is_some() {
11955            return false;
11956        }
11957        #[cfg(feature = "wml-styling")]
11958        if self.spec_vanish.is_some() {
11959            return false;
11960        }
11961        #[cfg(feature = "wml-styling")]
11962        if self.o_math.is_some() {
11963            return false;
11964        }
11965        #[cfg(feature = "wml-track-changes")]
11966        if self.r_pr_change.is_some() {
11967            return false;
11968        }
11969        #[cfg(feature = "extra-children")]
11970        if !self.extra_children.is_empty() {
11971            return false;
11972        }
11973        true
11974    }
11975}
11976
11977impl ToXml for EGRPr {
11978    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
11979        #[cfg(feature = "extra-children")]
11980        let mut extra_iter = self.extra_children.iter().peekable();
11981        #[cfg(feature = "extra-children")]
11982        let mut emit_idx: usize = 0;
11983        #[cfg(feature = "extra-children")]
11984        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
11985            extra_iter
11986                .next()
11987                .unwrap()
11988                .node
11989                .write_to(writer)
11990                .map_err(SerializeError::from)?;
11991        }
11992        if let Some(ref val) = self.r_pr {
11993            val.write_element("w:rPr", writer)?;
11994        }
11995        #[cfg(feature = "extra-children")]
11996        {
11997            emit_idx += 1;
11998        }
11999        #[cfg(feature = "extra-children")]
12000        for extra in extra_iter {
12001            extra.node.write_to(writer).map_err(SerializeError::from)?;
12002        }
12003        Ok(())
12004    }
12005
12006    fn is_empty_element(&self) -> bool {
12007        if self.r_pr.is_some() {
12008            return false;
12009        }
12010        #[cfg(feature = "extra-children")]
12011        if !self.extra_children.is_empty() {
12012            return false;
12013        }
12014        true
12015    }
12016}
12017
12018impl ToXml for MathRunProperties {
12019    fn write_element<W: Write>(
12020        &self,
12021        _tag: &str,
12022        writer: &mut Writer<W>,
12023    ) -> Result<(), SerializeError> {
12024        match self {
12025            Self::RPr(inner) => inner.write_element("w:rPr", writer)?,
12026            Self::Ins(inner) => inner.write_element("w:ins", writer)?,
12027            Self::Del(inner) => inner.write_element("w:del", writer)?,
12028        }
12029        Ok(())
12030    }
12031}
12032
12033impl ToXml for CTMathCtrlIns {
12034    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
12035        #[allow(unused_mut)]
12036        let mut start = start;
12037        {
12038            let val = &self.id;
12039            {
12040                let s = val.to_string();
12041                start.push_attribute(("w:id", s.as_str()));
12042            }
12043        }
12044        {
12045            let val = &self.author;
12046            start.push_attribute(("w:author", val.as_str()));
12047        }
12048        if let Some(ref val) = self.date {
12049            start.push_attribute(("w:date", val.as_str()));
12050        }
12051        #[cfg(feature = "extra-attrs")]
12052        for (key, value) in &self.extra_attrs {
12053            start.push_attribute((key.as_str(), value.as_str()));
12054        }
12055        start
12056    }
12057
12058    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
12059        #[cfg(feature = "extra-children")]
12060        let mut extra_iter = self.extra_children.iter().peekable();
12061        #[cfg(feature = "extra-children")]
12062        let mut emit_idx: usize = 0;
12063        #[cfg(feature = "extra-children")]
12064        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12065            extra_iter
12066                .next()
12067                .unwrap()
12068                .node
12069                .write_to(writer)
12070                .map_err(SerializeError::from)?;
12071        }
12072        #[cfg(feature = "wml-track-changes")]
12073        if let Some(ref val) = self.del {
12074            val.write_element("w:del", writer)?;
12075        }
12076        #[cfg(feature = "extra-children")]
12077        {
12078            emit_idx += 1;
12079        }
12080        #[cfg(feature = "extra-children")]
12081        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12082            extra_iter
12083                .next()
12084                .unwrap()
12085                .node
12086                .write_to(writer)
12087                .map_err(SerializeError::from)?;
12088        }
12089        #[cfg(feature = "wml-styling")]
12090        if let Some(ref val) = self.r_pr {
12091            val.write_element("w:rPr", writer)?;
12092        }
12093        #[cfg(feature = "extra-children")]
12094        {
12095            emit_idx += 1;
12096        }
12097        #[cfg(feature = "extra-children")]
12098        for extra in extra_iter {
12099            extra.node.write_to(writer).map_err(SerializeError::from)?;
12100        }
12101        Ok(())
12102    }
12103
12104    fn is_empty_element(&self) -> bool {
12105        #[cfg(feature = "wml-track-changes")]
12106        if self.del.is_some() {
12107            return false;
12108        }
12109        #[cfg(feature = "wml-styling")]
12110        if self.r_pr.is_some() {
12111            return false;
12112        }
12113        #[cfg(feature = "extra-children")]
12114        if !self.extra_children.is_empty() {
12115            return false;
12116        }
12117        true
12118    }
12119}
12120
12121impl ToXml for CTMathCtrlDel {
12122    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
12123        #[allow(unused_mut)]
12124        let mut start = start;
12125        {
12126            let val = &self.id;
12127            {
12128                let s = val.to_string();
12129                start.push_attribute(("w:id", s.as_str()));
12130            }
12131        }
12132        {
12133            let val = &self.author;
12134            start.push_attribute(("w:author", val.as_str()));
12135        }
12136        if let Some(ref val) = self.date {
12137            start.push_attribute(("w:date", val.as_str()));
12138        }
12139        #[cfg(feature = "extra-attrs")]
12140        for (key, value) in &self.extra_attrs {
12141            start.push_attribute((key.as_str(), value.as_str()));
12142        }
12143        start
12144    }
12145
12146    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
12147        #[cfg(feature = "extra-children")]
12148        let mut extra_iter = self.extra_children.iter().peekable();
12149        #[cfg(feature = "extra-children")]
12150        let mut emit_idx: usize = 0;
12151        #[cfg(feature = "extra-children")]
12152        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12153            extra_iter
12154                .next()
12155                .unwrap()
12156                .node
12157                .write_to(writer)
12158                .map_err(SerializeError::from)?;
12159        }
12160        #[cfg(feature = "wml-styling")]
12161        if let Some(ref val) = self.r_pr {
12162            val.write_element("w:rPr", writer)?;
12163        }
12164        #[cfg(feature = "extra-children")]
12165        {
12166            emit_idx += 1;
12167        }
12168        #[cfg(feature = "extra-children")]
12169        for extra in extra_iter {
12170            extra.node.write_to(writer).map_err(SerializeError::from)?;
12171        }
12172        Ok(())
12173    }
12174
12175    fn is_empty_element(&self) -> bool {
12176        #[cfg(feature = "wml-styling")]
12177        if self.r_pr.is_some() {
12178            return false;
12179        }
12180        #[cfg(feature = "extra-children")]
12181        if !self.extra_children.is_empty() {
12182            return false;
12183        }
12184        true
12185    }
12186}
12187
12188impl ToXml for CTRPrOriginal {
12189    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
12190        #[cfg(feature = "extra-children")]
12191        let mut extra_iter = self.extra_children.iter().peekable();
12192        #[cfg(feature = "extra-children")]
12193        let mut emit_idx: usize = 0;
12194        #[cfg(feature = "extra-children")]
12195        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12196            extra_iter
12197                .next()
12198                .unwrap()
12199                .node
12200                .write_to(writer)
12201                .map_err(SerializeError::from)?;
12202        }
12203        if let Some(ref val) = self.run_style {
12204            val.write_element("w:rStyle", writer)?;
12205        }
12206        #[cfg(feature = "extra-children")]
12207        {
12208            emit_idx += 1;
12209        }
12210        #[cfg(feature = "extra-children")]
12211        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12212            extra_iter
12213                .next()
12214                .unwrap()
12215                .node
12216                .write_to(writer)
12217                .map_err(SerializeError::from)?;
12218        }
12219        if let Some(ref val) = self.fonts {
12220            val.write_element("w:rFonts", writer)?;
12221        }
12222        #[cfg(feature = "extra-children")]
12223        {
12224            emit_idx += 1;
12225        }
12226        #[cfg(feature = "extra-children")]
12227        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12228            extra_iter
12229                .next()
12230                .unwrap()
12231                .node
12232                .write_to(writer)
12233                .map_err(SerializeError::from)?;
12234        }
12235        if let Some(ref val) = self.bold {
12236            val.write_element("w:b", writer)?;
12237        }
12238        #[cfg(feature = "extra-children")]
12239        {
12240            emit_idx += 1;
12241        }
12242        #[cfg(feature = "extra-children")]
12243        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12244            extra_iter
12245                .next()
12246                .unwrap()
12247                .node
12248                .write_to(writer)
12249                .map_err(SerializeError::from)?;
12250        }
12251        if let Some(ref val) = self.b_cs {
12252            val.write_element("w:bCs", writer)?;
12253        }
12254        #[cfg(feature = "extra-children")]
12255        {
12256            emit_idx += 1;
12257        }
12258        #[cfg(feature = "extra-children")]
12259        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12260            extra_iter
12261                .next()
12262                .unwrap()
12263                .node
12264                .write_to(writer)
12265                .map_err(SerializeError::from)?;
12266        }
12267        if let Some(ref val) = self.italic {
12268            val.write_element("w:i", writer)?;
12269        }
12270        #[cfg(feature = "extra-children")]
12271        {
12272            emit_idx += 1;
12273        }
12274        #[cfg(feature = "extra-children")]
12275        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12276            extra_iter
12277                .next()
12278                .unwrap()
12279                .node
12280                .write_to(writer)
12281                .map_err(SerializeError::from)?;
12282        }
12283        if let Some(ref val) = self.i_cs {
12284            val.write_element("w:iCs", writer)?;
12285        }
12286        #[cfg(feature = "extra-children")]
12287        {
12288            emit_idx += 1;
12289        }
12290        #[cfg(feature = "extra-children")]
12291        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12292            extra_iter
12293                .next()
12294                .unwrap()
12295                .node
12296                .write_to(writer)
12297                .map_err(SerializeError::from)?;
12298        }
12299        if let Some(ref val) = self.caps {
12300            val.write_element("w:caps", writer)?;
12301        }
12302        #[cfg(feature = "extra-children")]
12303        {
12304            emit_idx += 1;
12305        }
12306        #[cfg(feature = "extra-children")]
12307        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12308            extra_iter
12309                .next()
12310                .unwrap()
12311                .node
12312                .write_to(writer)
12313                .map_err(SerializeError::from)?;
12314        }
12315        if let Some(ref val) = self.small_caps {
12316            val.write_element("w:smallCaps", writer)?;
12317        }
12318        #[cfg(feature = "extra-children")]
12319        {
12320            emit_idx += 1;
12321        }
12322        #[cfg(feature = "extra-children")]
12323        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12324            extra_iter
12325                .next()
12326                .unwrap()
12327                .node
12328                .write_to(writer)
12329                .map_err(SerializeError::from)?;
12330        }
12331        if let Some(ref val) = self.strikethrough {
12332            val.write_element("w:strike", writer)?;
12333        }
12334        #[cfg(feature = "extra-children")]
12335        {
12336            emit_idx += 1;
12337        }
12338        #[cfg(feature = "extra-children")]
12339        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12340            extra_iter
12341                .next()
12342                .unwrap()
12343                .node
12344                .write_to(writer)
12345                .map_err(SerializeError::from)?;
12346        }
12347        if let Some(ref val) = self.dstrike {
12348            val.write_element("w:dstrike", writer)?;
12349        }
12350        #[cfg(feature = "extra-children")]
12351        {
12352            emit_idx += 1;
12353        }
12354        #[cfg(feature = "extra-children")]
12355        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12356            extra_iter
12357                .next()
12358                .unwrap()
12359                .node
12360                .write_to(writer)
12361                .map_err(SerializeError::from)?;
12362        }
12363        if let Some(ref val) = self.outline {
12364            val.write_element("w:outline", writer)?;
12365        }
12366        #[cfg(feature = "extra-children")]
12367        {
12368            emit_idx += 1;
12369        }
12370        #[cfg(feature = "extra-children")]
12371        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12372            extra_iter
12373                .next()
12374                .unwrap()
12375                .node
12376                .write_to(writer)
12377                .map_err(SerializeError::from)?;
12378        }
12379        if let Some(ref val) = self.shadow {
12380            val.write_element("w:shadow", writer)?;
12381        }
12382        #[cfg(feature = "extra-children")]
12383        {
12384            emit_idx += 1;
12385        }
12386        #[cfg(feature = "extra-children")]
12387        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12388            extra_iter
12389                .next()
12390                .unwrap()
12391                .node
12392                .write_to(writer)
12393                .map_err(SerializeError::from)?;
12394        }
12395        if let Some(ref val) = self.emboss {
12396            val.write_element("w:emboss", writer)?;
12397        }
12398        #[cfg(feature = "extra-children")]
12399        {
12400            emit_idx += 1;
12401        }
12402        #[cfg(feature = "extra-children")]
12403        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12404            extra_iter
12405                .next()
12406                .unwrap()
12407                .node
12408                .write_to(writer)
12409                .map_err(SerializeError::from)?;
12410        }
12411        if let Some(ref val) = self.imprint {
12412            val.write_element("w:imprint", writer)?;
12413        }
12414        #[cfg(feature = "extra-children")]
12415        {
12416            emit_idx += 1;
12417        }
12418        #[cfg(feature = "extra-children")]
12419        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12420            extra_iter
12421                .next()
12422                .unwrap()
12423                .node
12424                .write_to(writer)
12425                .map_err(SerializeError::from)?;
12426        }
12427        if let Some(ref val) = self.no_proof {
12428            val.write_element("w:noProof", writer)?;
12429        }
12430        #[cfg(feature = "extra-children")]
12431        {
12432            emit_idx += 1;
12433        }
12434        #[cfg(feature = "extra-children")]
12435        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12436            extra_iter
12437                .next()
12438                .unwrap()
12439                .node
12440                .write_to(writer)
12441                .map_err(SerializeError::from)?;
12442        }
12443        if let Some(ref val) = self.snap_to_grid {
12444            val.write_element("w:snapToGrid", writer)?;
12445        }
12446        #[cfg(feature = "extra-children")]
12447        {
12448            emit_idx += 1;
12449        }
12450        #[cfg(feature = "extra-children")]
12451        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12452            extra_iter
12453                .next()
12454                .unwrap()
12455                .node
12456                .write_to(writer)
12457                .map_err(SerializeError::from)?;
12458        }
12459        if let Some(ref val) = self.vanish {
12460            val.write_element("w:vanish", writer)?;
12461        }
12462        #[cfg(feature = "extra-children")]
12463        {
12464            emit_idx += 1;
12465        }
12466        #[cfg(feature = "extra-children")]
12467        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12468            extra_iter
12469                .next()
12470                .unwrap()
12471                .node
12472                .write_to(writer)
12473                .map_err(SerializeError::from)?;
12474        }
12475        if let Some(ref val) = self.web_hidden {
12476            val.write_element("w:webHidden", writer)?;
12477        }
12478        #[cfg(feature = "extra-children")]
12479        {
12480            emit_idx += 1;
12481        }
12482        #[cfg(feature = "extra-children")]
12483        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12484            extra_iter
12485                .next()
12486                .unwrap()
12487                .node
12488                .write_to(writer)
12489                .map_err(SerializeError::from)?;
12490        }
12491        if let Some(ref val) = self.color {
12492            val.write_element("w:color", writer)?;
12493        }
12494        #[cfg(feature = "extra-children")]
12495        {
12496            emit_idx += 1;
12497        }
12498        #[cfg(feature = "extra-children")]
12499        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12500            extra_iter
12501                .next()
12502                .unwrap()
12503                .node
12504                .write_to(writer)
12505                .map_err(SerializeError::from)?;
12506        }
12507        if let Some(ref val) = self.spacing {
12508            val.write_element("w:spacing", writer)?;
12509        }
12510        #[cfg(feature = "extra-children")]
12511        {
12512            emit_idx += 1;
12513        }
12514        #[cfg(feature = "extra-children")]
12515        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12516            extra_iter
12517                .next()
12518                .unwrap()
12519                .node
12520                .write_to(writer)
12521                .map_err(SerializeError::from)?;
12522        }
12523        if let Some(ref val) = self.width {
12524            val.write_element("w:w", writer)?;
12525        }
12526        #[cfg(feature = "extra-children")]
12527        {
12528            emit_idx += 1;
12529        }
12530        #[cfg(feature = "extra-children")]
12531        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12532            extra_iter
12533                .next()
12534                .unwrap()
12535                .node
12536                .write_to(writer)
12537                .map_err(SerializeError::from)?;
12538        }
12539        if let Some(ref val) = self.kern {
12540            val.write_element("w:kern", writer)?;
12541        }
12542        #[cfg(feature = "extra-children")]
12543        {
12544            emit_idx += 1;
12545        }
12546        #[cfg(feature = "extra-children")]
12547        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12548            extra_iter
12549                .next()
12550                .unwrap()
12551                .node
12552                .write_to(writer)
12553                .map_err(SerializeError::from)?;
12554        }
12555        if let Some(ref val) = self.position {
12556            val.write_element("w:position", writer)?;
12557        }
12558        #[cfg(feature = "extra-children")]
12559        {
12560            emit_idx += 1;
12561        }
12562        #[cfg(feature = "extra-children")]
12563        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12564            extra_iter
12565                .next()
12566                .unwrap()
12567                .node
12568                .write_to(writer)
12569                .map_err(SerializeError::from)?;
12570        }
12571        if let Some(ref val) = self.size {
12572            val.write_element("w:sz", writer)?;
12573        }
12574        #[cfg(feature = "extra-children")]
12575        {
12576            emit_idx += 1;
12577        }
12578        #[cfg(feature = "extra-children")]
12579        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12580            extra_iter
12581                .next()
12582                .unwrap()
12583                .node
12584                .write_to(writer)
12585                .map_err(SerializeError::from)?;
12586        }
12587        if let Some(ref val) = self.size_complex_script {
12588            val.write_element("w:szCs", writer)?;
12589        }
12590        #[cfg(feature = "extra-children")]
12591        {
12592            emit_idx += 1;
12593        }
12594        #[cfg(feature = "extra-children")]
12595        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12596            extra_iter
12597                .next()
12598                .unwrap()
12599                .node
12600                .write_to(writer)
12601                .map_err(SerializeError::from)?;
12602        }
12603        if let Some(ref val) = self.highlight {
12604            val.write_element("w:highlight", writer)?;
12605        }
12606        #[cfg(feature = "extra-children")]
12607        {
12608            emit_idx += 1;
12609        }
12610        #[cfg(feature = "extra-children")]
12611        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12612            extra_iter
12613                .next()
12614                .unwrap()
12615                .node
12616                .write_to(writer)
12617                .map_err(SerializeError::from)?;
12618        }
12619        if let Some(ref val) = self.underline {
12620            val.write_element("w:u", writer)?;
12621        }
12622        #[cfg(feature = "extra-children")]
12623        {
12624            emit_idx += 1;
12625        }
12626        #[cfg(feature = "extra-children")]
12627        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12628            extra_iter
12629                .next()
12630                .unwrap()
12631                .node
12632                .write_to(writer)
12633                .map_err(SerializeError::from)?;
12634        }
12635        if let Some(ref val) = self.effect {
12636            val.write_element("w:effect", writer)?;
12637        }
12638        #[cfg(feature = "extra-children")]
12639        {
12640            emit_idx += 1;
12641        }
12642        #[cfg(feature = "extra-children")]
12643        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12644            extra_iter
12645                .next()
12646                .unwrap()
12647                .node
12648                .write_to(writer)
12649                .map_err(SerializeError::from)?;
12650        }
12651        if let Some(ref val) = self.bdr {
12652            val.write_element("w:bdr", writer)?;
12653        }
12654        #[cfg(feature = "extra-children")]
12655        {
12656            emit_idx += 1;
12657        }
12658        #[cfg(feature = "extra-children")]
12659        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12660            extra_iter
12661                .next()
12662                .unwrap()
12663                .node
12664                .write_to(writer)
12665                .map_err(SerializeError::from)?;
12666        }
12667        if let Some(ref val) = self.shading {
12668            val.write_element("w:shd", writer)?;
12669        }
12670        #[cfg(feature = "extra-children")]
12671        {
12672            emit_idx += 1;
12673        }
12674        #[cfg(feature = "extra-children")]
12675        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12676            extra_iter
12677                .next()
12678                .unwrap()
12679                .node
12680                .write_to(writer)
12681                .map_err(SerializeError::from)?;
12682        }
12683        if let Some(ref val) = self.fit_text {
12684            val.write_element("w:fitText", writer)?;
12685        }
12686        #[cfg(feature = "extra-children")]
12687        {
12688            emit_idx += 1;
12689        }
12690        #[cfg(feature = "extra-children")]
12691        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12692            extra_iter
12693                .next()
12694                .unwrap()
12695                .node
12696                .write_to(writer)
12697                .map_err(SerializeError::from)?;
12698        }
12699        if let Some(ref val) = self.vert_align {
12700            val.write_element("w:vertAlign", writer)?;
12701        }
12702        #[cfg(feature = "extra-children")]
12703        {
12704            emit_idx += 1;
12705        }
12706        #[cfg(feature = "extra-children")]
12707        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12708            extra_iter
12709                .next()
12710                .unwrap()
12711                .node
12712                .write_to(writer)
12713                .map_err(SerializeError::from)?;
12714        }
12715        if let Some(ref val) = self.rtl {
12716            val.write_element("w:rtl", writer)?;
12717        }
12718        #[cfg(feature = "extra-children")]
12719        {
12720            emit_idx += 1;
12721        }
12722        #[cfg(feature = "extra-children")]
12723        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12724            extra_iter
12725                .next()
12726                .unwrap()
12727                .node
12728                .write_to(writer)
12729                .map_err(SerializeError::from)?;
12730        }
12731        if let Some(ref val) = self.cs {
12732            val.write_element("w:cs", writer)?;
12733        }
12734        #[cfg(feature = "extra-children")]
12735        {
12736            emit_idx += 1;
12737        }
12738        #[cfg(feature = "extra-children")]
12739        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12740            extra_iter
12741                .next()
12742                .unwrap()
12743                .node
12744                .write_to(writer)
12745                .map_err(SerializeError::from)?;
12746        }
12747        if let Some(ref val) = self.em {
12748            val.write_element("w:em", writer)?;
12749        }
12750        #[cfg(feature = "extra-children")]
12751        {
12752            emit_idx += 1;
12753        }
12754        #[cfg(feature = "extra-children")]
12755        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12756            extra_iter
12757                .next()
12758                .unwrap()
12759                .node
12760                .write_to(writer)
12761                .map_err(SerializeError::from)?;
12762        }
12763        if let Some(ref val) = self.lang {
12764            val.write_element("w:lang", writer)?;
12765        }
12766        #[cfg(feature = "extra-children")]
12767        {
12768            emit_idx += 1;
12769        }
12770        #[cfg(feature = "extra-children")]
12771        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12772            extra_iter
12773                .next()
12774                .unwrap()
12775                .node
12776                .write_to(writer)
12777                .map_err(SerializeError::from)?;
12778        }
12779        if let Some(ref val) = self.east_asian_layout {
12780            val.write_element("w:eastAsianLayout", writer)?;
12781        }
12782        #[cfg(feature = "extra-children")]
12783        {
12784            emit_idx += 1;
12785        }
12786        #[cfg(feature = "extra-children")]
12787        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12788            extra_iter
12789                .next()
12790                .unwrap()
12791                .node
12792                .write_to(writer)
12793                .map_err(SerializeError::from)?;
12794        }
12795        if let Some(ref val) = self.spec_vanish {
12796            val.write_element("w:specVanish", writer)?;
12797        }
12798        #[cfg(feature = "extra-children")]
12799        {
12800            emit_idx += 1;
12801        }
12802        #[cfg(feature = "extra-children")]
12803        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12804            extra_iter
12805                .next()
12806                .unwrap()
12807                .node
12808                .write_to(writer)
12809                .map_err(SerializeError::from)?;
12810        }
12811        if let Some(ref val) = self.o_math {
12812            val.write_element("w:oMath", writer)?;
12813        }
12814        #[cfg(feature = "extra-children")]
12815        {
12816            emit_idx += 1;
12817        }
12818        #[cfg(feature = "extra-children")]
12819        for extra in extra_iter {
12820            extra.node.write_to(writer).map_err(SerializeError::from)?;
12821        }
12822        Ok(())
12823    }
12824
12825    fn is_empty_element(&self) -> bool {
12826        if self.run_style.is_some() {
12827            return false;
12828        }
12829        if self.fonts.is_some() {
12830            return false;
12831        }
12832        if self.bold.is_some() {
12833            return false;
12834        }
12835        if self.b_cs.is_some() {
12836            return false;
12837        }
12838        if self.italic.is_some() {
12839            return false;
12840        }
12841        if self.i_cs.is_some() {
12842            return false;
12843        }
12844        if self.caps.is_some() {
12845            return false;
12846        }
12847        if self.small_caps.is_some() {
12848            return false;
12849        }
12850        if self.strikethrough.is_some() {
12851            return false;
12852        }
12853        if self.dstrike.is_some() {
12854            return false;
12855        }
12856        if self.outline.is_some() {
12857            return false;
12858        }
12859        if self.shadow.is_some() {
12860            return false;
12861        }
12862        if self.emboss.is_some() {
12863            return false;
12864        }
12865        if self.imprint.is_some() {
12866            return false;
12867        }
12868        if self.no_proof.is_some() {
12869            return false;
12870        }
12871        if self.snap_to_grid.is_some() {
12872            return false;
12873        }
12874        if self.vanish.is_some() {
12875            return false;
12876        }
12877        if self.web_hidden.is_some() {
12878            return false;
12879        }
12880        if self.color.is_some() {
12881            return false;
12882        }
12883        if self.spacing.is_some() {
12884            return false;
12885        }
12886        if self.width.is_some() {
12887            return false;
12888        }
12889        if self.kern.is_some() {
12890            return false;
12891        }
12892        if self.position.is_some() {
12893            return false;
12894        }
12895        if self.size.is_some() {
12896            return false;
12897        }
12898        if self.size_complex_script.is_some() {
12899            return false;
12900        }
12901        if self.highlight.is_some() {
12902            return false;
12903        }
12904        if self.underline.is_some() {
12905            return false;
12906        }
12907        if self.effect.is_some() {
12908            return false;
12909        }
12910        if self.bdr.is_some() {
12911            return false;
12912        }
12913        if self.shading.is_some() {
12914            return false;
12915        }
12916        if self.fit_text.is_some() {
12917            return false;
12918        }
12919        if self.vert_align.is_some() {
12920            return false;
12921        }
12922        if self.rtl.is_some() {
12923            return false;
12924        }
12925        if self.cs.is_some() {
12926            return false;
12927        }
12928        if self.em.is_some() {
12929            return false;
12930        }
12931        if self.lang.is_some() {
12932            return false;
12933        }
12934        if self.east_asian_layout.is_some() {
12935            return false;
12936        }
12937        if self.spec_vanish.is_some() {
12938            return false;
12939        }
12940        if self.o_math.is_some() {
12941            return false;
12942        }
12943        #[cfg(feature = "extra-children")]
12944        if !self.extra_children.is_empty() {
12945            return false;
12946        }
12947        true
12948    }
12949}
12950
12951impl ToXml for CTParaRPrOriginal {
12952    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
12953        #[cfg(feature = "extra-children")]
12954        let mut extra_iter = self.extra_children.iter().peekable();
12955        #[cfg(feature = "extra-children")]
12956        let mut emit_idx: usize = 0;
12957        #[cfg(feature = "extra-children")]
12958        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12959            extra_iter
12960                .next()
12961                .unwrap()
12962                .node
12963                .write_to(writer)
12964                .map_err(SerializeError::from)?;
12965        }
12966        if let Some(ref val) = self.ins {
12967            val.write_element("w:ins", writer)?;
12968        }
12969        #[cfg(feature = "extra-children")]
12970        {
12971            emit_idx += 1;
12972        }
12973        #[cfg(feature = "extra-children")]
12974        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12975            extra_iter
12976                .next()
12977                .unwrap()
12978                .node
12979                .write_to(writer)
12980                .map_err(SerializeError::from)?;
12981        }
12982        if let Some(ref val) = self.del {
12983            val.write_element("w:del", writer)?;
12984        }
12985        #[cfg(feature = "extra-children")]
12986        {
12987            emit_idx += 1;
12988        }
12989        #[cfg(feature = "extra-children")]
12990        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12991            extra_iter
12992                .next()
12993                .unwrap()
12994                .node
12995                .write_to(writer)
12996                .map_err(SerializeError::from)?;
12997        }
12998        if let Some(ref val) = self.move_from {
12999            val.write_element("w:moveFrom", writer)?;
13000        }
13001        #[cfg(feature = "extra-children")]
13002        {
13003            emit_idx += 1;
13004        }
13005        #[cfg(feature = "extra-children")]
13006        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
13007            extra_iter
13008                .next()
13009                .unwrap()
13010                .node
13011                .write_to(writer)
13012                .map_err(SerializeError::from)?;
13013        }
13014        if let Some(ref val) = self.move_to {
13015            val.write_element("w:moveTo", writer)?;
13016        }
13017        #[cfg(feature = "extra-children")]
13018        {
13019            emit_idx += 1;
13020        }
13021        #[cfg(feature = "extra-children")]
13022        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
13023            extra_iter
13024                .next()
13025                .unwrap()
13026                .node
13027                .write_to(writer)
13028                .map_err(SerializeError::from)?;
13029        }
13030        if let Some(ref val) = self.run_style {
13031            val.write_element("w:rStyle", writer)?;
13032        }
13033        #[cfg(feature = "extra-children")]
13034        {
13035            emit_idx += 1;
13036        }
13037        #[cfg(feature = "extra-children")]
13038        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
13039            extra_iter
13040                .next()
13041                .unwrap()
13042                .node
13043                .write_to(writer)
13044                .map_err(SerializeError::from)?;
13045        }
13046        if let Some(ref val) = self.fonts {
13047            val.write_element("w:rFonts", writer)?;
13048        }
13049        #[cfg(feature = "extra-children")]
13050        {
13051            emit_idx += 1;
13052        }
13053        #[cfg(feature = "extra-children")]
13054        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
13055            extra_iter
13056                .next()
13057                .unwrap()
13058                .node
13059                .write_to(writer)
13060                .map_err(SerializeError::from)?;
13061        }
13062        if let Some(ref val) = self.bold {
13063            val.write_element("w:b", writer)?;
13064        }
13065        #[cfg(feature = "extra-children")]
13066        {
13067            emit_idx += 1;
13068        }
13069        #[cfg(feature = "extra-children")]
13070        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
13071            extra_iter
13072                .next()
13073                .unwrap()
13074                .node
13075                .write_to(writer)
13076                .map_err(SerializeError::from)?;
13077        }
13078        if let Some(ref val) = self.b_cs {
13079            val.write_element("w:bCs", writer)?;
13080        }
13081        #[cfg(feature = "extra-children")]
13082        {
13083            emit_idx += 1;
13084        }
13085        #[cfg(feature = "extra-children")]
13086        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
13087            extra_iter
13088                .next()
13089                .unwrap()
13090                .node
13091                .write_to(writer)
13092                .map_err(SerializeError::from)?;
13093        }
13094        if let Some(ref val) = self.italic {
13095            val.write_element("w:i", writer)?;
13096        }
13097        #[cfg(feature = "extra-children")]
13098        {
13099            emit_idx += 1;
13100        }
13101        #[cfg(feature = "extra-children")]
13102        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
13103            extra_iter
13104                .next()
13105                .unwrap()
13106                .node
13107                .write_to(writer)
13108                .map_err(SerializeError::from)?;
13109        }
13110        if let Some(ref val) = self.i_cs {
13111            val.write_element("w:iCs", writer)?;
13112        }
13113        #[cfg(feature = "extra-children")]
13114        {
13115            emit_idx += 1;
13116        }
13117        #[cfg(feature = "extra-children")]
13118        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
13119            extra_iter
13120                .next()
13121                .unwrap()
13122                .node
13123                .write_to(writer)
13124                .map_err(SerializeError::from)?;
13125        }
13126        if let Some(ref val) = self.caps {
13127            val.write_element("w:caps", writer)?;
13128        }
13129        #[cfg(feature = "extra-children")]
13130        {
13131            emit_idx += 1;
13132        }
13133        #[cfg(feature = "extra-children")]
13134        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
13135            extra_iter
13136                .next()
13137                .unwrap()
13138                .node
13139                .write_to(writer)
13140                .map_err(SerializeError::from)?;
13141        }
13142        if let Some(ref val) = self.small_caps {
13143            val.write_element("w:smallCaps", writer)?;
13144        }
13145        #[cfg(feature = "extra-children")]
13146        {
13147            emit_idx += 1;
13148        }
13149        #[cfg(feature = "extra-children")]
13150        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
13151            extra_iter
13152                .next()
13153                .unwrap()
13154                .node
13155                .write_to(writer)
13156                .map_err(SerializeError::from)?;
13157        }
13158        if let Some(ref val) = self.strikethrough {
13159            val.write_element("w:strike", writer)?;
13160        }
13161        #[cfg(feature = "extra-children")]
13162        {
13163            emit_idx += 1;
13164        }
13165        #[cfg(feature = "extra-children")]
13166        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
13167            extra_iter
13168                .next()
13169                .unwrap()
13170                .node
13171                .write_to(writer)
13172                .map_err(SerializeError::from)?;
13173        }
13174        if let Some(ref val) = self.dstrike {
13175            val.write_element("w:dstrike", writer)?;
13176        }
13177        #[cfg(feature = "extra-children")]
13178        {
13179            emit_idx += 1;
13180        }
13181        #[cfg(feature = "extra-children")]
13182        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
13183            extra_iter
13184                .next()
13185                .unwrap()
13186                .node
13187                .write_to(writer)
13188                .map_err(SerializeError::from)?;
13189        }
13190        if let Some(ref val) = self.outline {
13191            val.write_element("w:outline", writer)?;
13192        }
13193        #[cfg(feature = "extra-children")]
13194        {
13195            emit_idx += 1;
13196        }
13197        #[cfg(feature = "extra-children")]
13198        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
13199            extra_iter
13200                .next()
13201                .unwrap()
13202                .node
13203                .write_to(writer)
13204                .map_err(SerializeError::from)?;
13205        }
13206        if let Some(ref val) = self.shadow {
13207            val.write_element("w:shadow", writer)?;
13208        }
13209        #[cfg(feature = "extra-children")]
13210        {
13211            emit_idx += 1;
13212        }
13213        #[cfg(feature = "extra-children")]
13214        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
13215            extra_iter
13216                .next()
13217                .unwrap()
13218                .node
13219                .write_to(writer)
13220                .map_err(SerializeError::from)?;
13221        }
13222        if let Some(ref val) = self.emboss {
13223            val.write_element("w:emboss", writer)?;
13224        }
13225        #[cfg(feature = "extra-children")]
13226        {
13227            emit_idx += 1;
13228        }
13229        #[cfg(feature = "extra-children")]
13230        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
13231            extra_iter
13232                .next()
13233                .unwrap()
13234                .node
13235                .write_to(writer)
13236                .map_err(SerializeError::from)?;
13237        }
13238        if let Some(ref val) = self.imprint {
13239            val.write_element("w:imprint", writer)?;
13240        }
13241        #[cfg(feature = "extra-children")]
13242        {
13243            emit_idx += 1;
13244        }
13245        #[cfg(feature = "extra-children")]
13246        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
13247            extra_iter
13248                .next()
13249                .unwrap()
13250                .node
13251                .write_to(writer)
13252                .map_err(SerializeError::from)?;
13253        }
13254        if let Some(ref val) = self.no_proof {
13255            val.write_element("w:noProof", writer)?;
13256        }
13257        #[cfg(feature = "extra-children")]
13258        {
13259            emit_idx += 1;
13260        }
13261        #[cfg(feature = "extra-children")]
13262        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
13263            extra_iter
13264                .next()
13265                .unwrap()
13266                .node
13267                .write_to(writer)
13268                .map_err(SerializeError::from)?;
13269        }
13270        if let Some(ref val) = self.snap_to_grid {
13271            val.write_element("w:snapToGrid", writer)?;
13272        }
13273        #[cfg(feature = "extra-children")]
13274        {
13275            emit_idx += 1;
13276        }
13277        #[cfg(feature = "extra-children")]
13278        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
13279            extra_iter
13280                .next()
13281                .unwrap()
13282                .node
13283                .write_to(writer)
13284                .map_err(SerializeError::from)?;
13285        }
13286        if let Some(ref val) = self.vanish {
13287            val.write_element("w:vanish", writer)?;
13288        }
13289        #[cfg(feature = "extra-children")]
13290        {
13291            emit_idx += 1;
13292        }
13293        #[cfg(feature = "extra-children")]
13294        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
13295            extra_iter
13296                .next()
13297                .unwrap()
13298                .node
13299                .write_to(writer)
13300                .map_err(SerializeError::from)?;
13301        }
13302        if let Some(ref val) = self.web_hidden {
13303            val.write_element("w:webHidden", writer)?;
13304        }
13305        #[cfg(feature = "extra-children")]
13306        {
13307            emit_idx += 1;
13308        }
13309        #[cfg(feature = "extra-children")]
13310        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
13311            extra_iter
13312                .next()
13313                .unwrap()
13314                .node
13315                .write_to(writer)
13316                .map_err(SerializeError::from)?;
13317        }
13318        if let Some(ref val) = self.color {
13319            val.write_element("w:color", writer)?;
13320        }
13321        #[cfg(feature = "extra-children")]
13322        {
13323            emit_idx += 1;
13324        }
13325        #[cfg(feature = "extra-children")]
13326        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
13327            extra_iter
13328                .next()
13329                .unwrap()
13330                .node
13331                .write_to(writer)
13332                .map_err(SerializeError::from)?;
13333        }
13334        if let Some(ref val) = self.spacing {
13335            val.write_element("w:spacing", writer)?;
13336        }
13337        #[cfg(feature = "extra-children")]
13338        {
13339            emit_idx += 1;
13340        }
13341        #[cfg(feature = "extra-children")]
13342        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
13343            extra_iter
13344                .next()
13345                .unwrap()
13346                .node
13347                .write_to(writer)
13348                .map_err(SerializeError::from)?;
13349        }
13350        if let Some(ref val) = self.width {
13351            val.write_element("w:w", writer)?;
13352        }
13353        #[cfg(feature = "extra-children")]
13354        {
13355            emit_idx += 1;
13356        }
13357        #[cfg(feature = "extra-children")]
13358        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
13359            extra_iter
13360                .next()
13361                .unwrap()
13362                .node
13363                .write_to(writer)
13364                .map_err(SerializeError::from)?;
13365        }
13366        if let Some(ref val) = self.kern {
13367            val.write_element("w:kern", writer)?;
13368        }
13369        #[cfg(feature = "extra-children")]
13370        {
13371            emit_idx += 1;
13372        }
13373        #[cfg(feature = "extra-children")]
13374        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
13375            extra_iter
13376                .next()
13377                .unwrap()
13378                .node
13379                .write_to(writer)
13380                .map_err(SerializeError::from)?;
13381        }
13382        if let Some(ref val) = self.position {
13383            val.write_element("w:position", writer)?;
13384        }
13385        #[cfg(feature = "extra-children")]
13386        {
13387            emit_idx += 1;
13388        }
13389        #[cfg(feature = "extra-children")]
13390        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
13391            extra_iter
13392                .next()
13393                .unwrap()
13394                .node
13395                .write_to(writer)
13396                .map_err(SerializeError::from)?;
13397        }
13398        if let Some(ref val) = self.size {
13399            val.write_element("w:sz", writer)?;
13400        }
13401        #[cfg(feature = "extra-children")]
13402        {
13403            emit_idx += 1;
13404        }
13405        #[cfg(feature = "extra-children")]
13406        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
13407            extra_iter
13408                .next()
13409                .unwrap()
13410                .node
13411                .write_to(writer)
13412                .map_err(SerializeError::from)?;
13413        }
13414        if let Some(ref val) = self.size_complex_script {
13415            val.write_element("w:szCs", writer)?;
13416        }
13417        #[cfg(feature = "extra-children")]
13418        {
13419            emit_idx += 1;
13420        }
13421        #[cfg(feature = "extra-children")]
13422        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
13423            extra_iter
13424                .next()
13425                .unwrap()
13426                .node
13427                .write_to(writer)
13428                .map_err(SerializeError::from)?;
13429        }
13430        if let Some(ref val) = self.highlight {
13431            val.write_element("w:highlight", writer)?;
13432        }
13433        #[cfg(feature = "extra-children")]
13434        {
13435            emit_idx += 1;
13436        }
13437        #[cfg(feature = "extra-children")]
13438        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
13439            extra_iter
13440                .next()
13441                .unwrap()
13442                .node
13443                .write_to(writer)
13444                .map_err(SerializeError::from)?;
13445        }
13446        if let Some(ref val) = self.underline {
13447            val.write_element("w:u", writer)?;
13448        }
13449        #[cfg(feature = "extra-children")]
13450        {
13451            emit_idx += 1;
13452        }
13453        #[cfg(feature = "extra-children")]
13454        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
13455            extra_iter
13456                .next()
13457                .unwrap()
13458                .node
13459                .write_to(writer)
13460                .map_err(SerializeError::from)?;
13461        }
13462        if let Some(ref val) = self.effect {
13463            val.write_element("w:effect", writer)?;
13464        }
13465        #[cfg(feature = "extra-children")]
13466        {
13467            emit_idx += 1;
13468        }
13469        #[cfg(feature = "extra-children")]
13470        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
13471            extra_iter
13472                .next()
13473                .unwrap()
13474                .node
13475                .write_to(writer)
13476                .map_err(SerializeError::from)?;
13477        }
13478        if let Some(ref val) = self.bdr {
13479            val.write_element("w:bdr", writer)?;
13480        }
13481        #[cfg(feature = "extra-children")]
13482        {
13483            emit_idx += 1;
13484        }
13485        #[cfg(feature = "extra-children")]
13486        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
13487            extra_iter
13488                .next()
13489                .unwrap()
13490                .node
13491                .write_to(writer)
13492                .map_err(SerializeError::from)?;
13493        }
13494        if let Some(ref val) = self.shading {
13495            val.write_element("w:shd", writer)?;
13496        }
13497        #[cfg(feature = "extra-children")]
13498        {
13499            emit_idx += 1;
13500        }
13501        #[cfg(feature = "extra-children")]
13502        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
13503            extra_iter
13504                .next()
13505                .unwrap()
13506                .node
13507                .write_to(writer)
13508                .map_err(SerializeError::from)?;
13509        }
13510        if let Some(ref val) = self.fit_text {
13511            val.write_element("w:fitText", writer)?;
13512        }
13513        #[cfg(feature = "extra-children")]
13514        {
13515            emit_idx += 1;
13516        }
13517        #[cfg(feature = "extra-children")]
13518        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
13519            extra_iter
13520                .next()
13521                .unwrap()
13522                .node
13523                .write_to(writer)
13524                .map_err(SerializeError::from)?;
13525        }
13526        if let Some(ref val) = self.vert_align {
13527            val.write_element("w:vertAlign", writer)?;
13528        }
13529        #[cfg(feature = "extra-children")]
13530        {
13531            emit_idx += 1;
13532        }
13533        #[cfg(feature = "extra-children")]
13534        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
13535            extra_iter
13536                .next()
13537                .unwrap()
13538                .node
13539                .write_to(writer)
13540                .map_err(SerializeError::from)?;
13541        }
13542        if let Some(ref val) = self.rtl {
13543            val.write_element("w:rtl", writer)?;
13544        }
13545        #[cfg(feature = "extra-children")]
13546        {
13547            emit_idx += 1;
13548        }
13549        #[cfg(feature = "extra-children")]
13550        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
13551            extra_iter
13552                .next()
13553                .unwrap()
13554                .node
13555                .write_to(writer)
13556                .map_err(SerializeError::from)?;
13557        }
13558        if let Some(ref val) = self.cs {
13559            val.write_element("w:cs", writer)?;
13560        }
13561        #[cfg(feature = "extra-children")]
13562        {
13563            emit_idx += 1;
13564        }
13565        #[cfg(feature = "extra-children")]
13566        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
13567            extra_iter
13568                .next()
13569                .unwrap()
13570                .node
13571                .write_to(writer)
13572                .map_err(SerializeError::from)?;
13573        }
13574        if let Some(ref val) = self.em {
13575            val.write_element("w:em", writer)?;
13576        }
13577        #[cfg(feature = "extra-children")]
13578        {
13579            emit_idx += 1;
13580        }
13581        #[cfg(feature = "extra-children")]
13582        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
13583            extra_iter
13584                .next()
13585                .unwrap()
13586                .node
13587                .write_to(writer)
13588                .map_err(SerializeError::from)?;
13589        }
13590        if let Some(ref val) = self.lang {
13591            val.write_element("w:lang", writer)?;
13592        }
13593        #[cfg(feature = "extra-children")]
13594        {
13595            emit_idx += 1;
13596        }
13597        #[cfg(feature = "extra-children")]
13598        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
13599            extra_iter
13600                .next()
13601                .unwrap()
13602                .node
13603                .write_to(writer)
13604                .map_err(SerializeError::from)?;
13605        }
13606        if let Some(ref val) = self.east_asian_layout {
13607            val.write_element("w:eastAsianLayout", writer)?;
13608        }
13609        #[cfg(feature = "extra-children")]
13610        {
13611            emit_idx += 1;
13612        }
13613        #[cfg(feature = "extra-children")]
13614        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
13615            extra_iter
13616                .next()
13617                .unwrap()
13618                .node
13619                .write_to(writer)
13620                .map_err(SerializeError::from)?;
13621        }
13622        if let Some(ref val) = self.spec_vanish {
13623            val.write_element("w:specVanish", writer)?;
13624        }
13625        #[cfg(feature = "extra-children")]
13626        {
13627            emit_idx += 1;
13628        }
13629        #[cfg(feature = "extra-children")]
13630        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
13631            extra_iter
13632                .next()
13633                .unwrap()
13634                .node
13635                .write_to(writer)
13636                .map_err(SerializeError::from)?;
13637        }
13638        if let Some(ref val) = self.o_math {
13639            val.write_element("w:oMath", writer)?;
13640        }
13641        #[cfg(feature = "extra-children")]
13642        {
13643            emit_idx += 1;
13644        }
13645        #[cfg(feature = "extra-children")]
13646        for extra in extra_iter {
13647            extra.node.write_to(writer).map_err(SerializeError::from)?;
13648        }
13649        Ok(())
13650    }
13651
13652    fn is_empty_element(&self) -> bool {
13653        if self.ins.is_some() {
13654            return false;
13655        }
13656        if self.del.is_some() {
13657            return false;
13658        }
13659        if self.move_from.is_some() {
13660            return false;
13661        }
13662        if self.move_to.is_some() {
13663            return false;
13664        }
13665        if self.run_style.is_some() {
13666            return false;
13667        }
13668        if self.fonts.is_some() {
13669            return false;
13670        }
13671        if self.bold.is_some() {
13672            return false;
13673        }
13674        if self.b_cs.is_some() {
13675            return false;
13676        }
13677        if self.italic.is_some() {
13678            return false;
13679        }
13680        if self.i_cs.is_some() {
13681            return false;
13682        }
13683        if self.caps.is_some() {
13684            return false;
13685        }
13686        if self.small_caps.is_some() {
13687            return false;
13688        }
13689        if self.strikethrough.is_some() {
13690            return false;
13691        }
13692        if self.dstrike.is_some() {
13693            return false;
13694        }
13695        if self.outline.is_some() {
13696            return false;
13697        }
13698        if self.shadow.is_some() {
13699            return false;
13700        }
13701        if self.emboss.is_some() {
13702            return false;
13703        }
13704        if self.imprint.is_some() {
13705            return false;
13706        }
13707        if self.no_proof.is_some() {
13708            return false;
13709        }
13710        if self.snap_to_grid.is_some() {
13711            return false;
13712        }
13713        if self.vanish.is_some() {
13714            return false;
13715        }
13716        if self.web_hidden.is_some() {
13717            return false;
13718        }
13719        if self.color.is_some() {
13720            return false;
13721        }
13722        if self.spacing.is_some() {
13723            return false;
13724        }
13725        if self.width.is_some() {
13726            return false;
13727        }
13728        if self.kern.is_some() {
13729            return false;
13730        }
13731        if self.position.is_some() {
13732            return false;
13733        }
13734        if self.size.is_some() {
13735            return false;
13736        }
13737        if self.size_complex_script.is_some() {
13738            return false;
13739        }
13740        if self.highlight.is_some() {
13741            return false;
13742        }
13743        if self.underline.is_some() {
13744            return false;
13745        }
13746        if self.effect.is_some() {
13747            return false;
13748        }
13749        if self.bdr.is_some() {
13750            return false;
13751        }
13752        if self.shading.is_some() {
13753            return false;
13754        }
13755        if self.fit_text.is_some() {
13756            return false;
13757        }
13758        if self.vert_align.is_some() {
13759            return false;
13760        }
13761        if self.rtl.is_some() {
13762            return false;
13763        }
13764        if self.cs.is_some() {
13765            return false;
13766        }
13767        if self.em.is_some() {
13768            return false;
13769        }
13770        if self.lang.is_some() {
13771            return false;
13772        }
13773        if self.east_asian_layout.is_some() {
13774            return false;
13775        }
13776        if self.spec_vanish.is_some() {
13777            return false;
13778        }
13779        if self.o_math.is_some() {
13780            return false;
13781        }
13782        #[cfg(feature = "extra-children")]
13783        if !self.extra_children.is_empty() {
13784            return false;
13785        }
13786        true
13787    }
13788}
13789
13790impl ToXml for CTParaRPr {
13791    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
13792        #[cfg(feature = "extra-children")]
13793        let mut extra_iter = self.extra_children.iter().peekable();
13794        #[cfg(feature = "extra-children")]
13795        let mut emit_idx: usize = 0;
13796        #[cfg(feature = "extra-children")]
13797        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
13798            extra_iter
13799                .next()
13800                .unwrap()
13801                .node
13802                .write_to(writer)
13803                .map_err(SerializeError::from)?;
13804        }
13805        if let Some(ref val) = self.ins {
13806            val.write_element("w:ins", writer)?;
13807        }
13808        #[cfg(feature = "extra-children")]
13809        {
13810            emit_idx += 1;
13811        }
13812        #[cfg(feature = "extra-children")]
13813        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
13814            extra_iter
13815                .next()
13816                .unwrap()
13817                .node
13818                .write_to(writer)
13819                .map_err(SerializeError::from)?;
13820        }
13821        if let Some(ref val) = self.del {
13822            val.write_element("w:del", writer)?;
13823        }
13824        #[cfg(feature = "extra-children")]
13825        {
13826            emit_idx += 1;
13827        }
13828        #[cfg(feature = "extra-children")]
13829        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
13830            extra_iter
13831                .next()
13832                .unwrap()
13833                .node
13834                .write_to(writer)
13835                .map_err(SerializeError::from)?;
13836        }
13837        if let Some(ref val) = self.move_from {
13838            val.write_element("w:moveFrom", writer)?;
13839        }
13840        #[cfg(feature = "extra-children")]
13841        {
13842            emit_idx += 1;
13843        }
13844        #[cfg(feature = "extra-children")]
13845        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
13846            extra_iter
13847                .next()
13848                .unwrap()
13849                .node
13850                .write_to(writer)
13851                .map_err(SerializeError::from)?;
13852        }
13853        if let Some(ref val) = self.move_to {
13854            val.write_element("w:moveTo", writer)?;
13855        }
13856        #[cfg(feature = "extra-children")]
13857        {
13858            emit_idx += 1;
13859        }
13860        #[cfg(feature = "extra-children")]
13861        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
13862            extra_iter
13863                .next()
13864                .unwrap()
13865                .node
13866                .write_to(writer)
13867                .map_err(SerializeError::from)?;
13868        }
13869        if let Some(ref val) = self.run_style {
13870            val.write_element("w:rStyle", writer)?;
13871        }
13872        #[cfg(feature = "extra-children")]
13873        {
13874            emit_idx += 1;
13875        }
13876        #[cfg(feature = "extra-children")]
13877        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
13878            extra_iter
13879                .next()
13880                .unwrap()
13881                .node
13882                .write_to(writer)
13883                .map_err(SerializeError::from)?;
13884        }
13885        if let Some(ref val) = self.fonts {
13886            val.write_element("w:rFonts", writer)?;
13887        }
13888        #[cfg(feature = "extra-children")]
13889        {
13890            emit_idx += 1;
13891        }
13892        #[cfg(feature = "extra-children")]
13893        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
13894            extra_iter
13895                .next()
13896                .unwrap()
13897                .node
13898                .write_to(writer)
13899                .map_err(SerializeError::from)?;
13900        }
13901        if let Some(ref val) = self.bold {
13902            val.write_element("w:b", writer)?;
13903        }
13904        #[cfg(feature = "extra-children")]
13905        {
13906            emit_idx += 1;
13907        }
13908        #[cfg(feature = "extra-children")]
13909        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
13910            extra_iter
13911                .next()
13912                .unwrap()
13913                .node
13914                .write_to(writer)
13915                .map_err(SerializeError::from)?;
13916        }
13917        if let Some(ref val) = self.b_cs {
13918            val.write_element("w:bCs", writer)?;
13919        }
13920        #[cfg(feature = "extra-children")]
13921        {
13922            emit_idx += 1;
13923        }
13924        #[cfg(feature = "extra-children")]
13925        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
13926            extra_iter
13927                .next()
13928                .unwrap()
13929                .node
13930                .write_to(writer)
13931                .map_err(SerializeError::from)?;
13932        }
13933        if let Some(ref val) = self.italic {
13934            val.write_element("w:i", writer)?;
13935        }
13936        #[cfg(feature = "extra-children")]
13937        {
13938            emit_idx += 1;
13939        }
13940        #[cfg(feature = "extra-children")]
13941        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
13942            extra_iter
13943                .next()
13944                .unwrap()
13945                .node
13946                .write_to(writer)
13947                .map_err(SerializeError::from)?;
13948        }
13949        if let Some(ref val) = self.i_cs {
13950            val.write_element("w:iCs", writer)?;
13951        }
13952        #[cfg(feature = "extra-children")]
13953        {
13954            emit_idx += 1;
13955        }
13956        #[cfg(feature = "extra-children")]
13957        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
13958            extra_iter
13959                .next()
13960                .unwrap()
13961                .node
13962                .write_to(writer)
13963                .map_err(SerializeError::from)?;
13964        }
13965        if let Some(ref val) = self.caps {
13966            val.write_element("w:caps", writer)?;
13967        }
13968        #[cfg(feature = "extra-children")]
13969        {
13970            emit_idx += 1;
13971        }
13972        #[cfg(feature = "extra-children")]
13973        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
13974            extra_iter
13975                .next()
13976                .unwrap()
13977                .node
13978                .write_to(writer)
13979                .map_err(SerializeError::from)?;
13980        }
13981        if let Some(ref val) = self.small_caps {
13982            val.write_element("w:smallCaps", writer)?;
13983        }
13984        #[cfg(feature = "extra-children")]
13985        {
13986            emit_idx += 1;
13987        }
13988        #[cfg(feature = "extra-children")]
13989        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
13990            extra_iter
13991                .next()
13992                .unwrap()
13993                .node
13994                .write_to(writer)
13995                .map_err(SerializeError::from)?;
13996        }
13997        if let Some(ref val) = self.strikethrough {
13998            val.write_element("w:strike", writer)?;
13999        }
14000        #[cfg(feature = "extra-children")]
14001        {
14002            emit_idx += 1;
14003        }
14004        #[cfg(feature = "extra-children")]
14005        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
14006            extra_iter
14007                .next()
14008                .unwrap()
14009                .node
14010                .write_to(writer)
14011                .map_err(SerializeError::from)?;
14012        }
14013        if let Some(ref val) = self.dstrike {
14014            val.write_element("w:dstrike", writer)?;
14015        }
14016        #[cfg(feature = "extra-children")]
14017        {
14018            emit_idx += 1;
14019        }
14020        #[cfg(feature = "extra-children")]
14021        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
14022            extra_iter
14023                .next()
14024                .unwrap()
14025                .node
14026                .write_to(writer)
14027                .map_err(SerializeError::from)?;
14028        }
14029        if let Some(ref val) = self.outline {
14030            val.write_element("w:outline", writer)?;
14031        }
14032        #[cfg(feature = "extra-children")]
14033        {
14034            emit_idx += 1;
14035        }
14036        #[cfg(feature = "extra-children")]
14037        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
14038            extra_iter
14039                .next()
14040                .unwrap()
14041                .node
14042                .write_to(writer)
14043                .map_err(SerializeError::from)?;
14044        }
14045        if let Some(ref val) = self.shadow {
14046            val.write_element("w:shadow", writer)?;
14047        }
14048        #[cfg(feature = "extra-children")]
14049        {
14050            emit_idx += 1;
14051        }
14052        #[cfg(feature = "extra-children")]
14053        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
14054            extra_iter
14055                .next()
14056                .unwrap()
14057                .node
14058                .write_to(writer)
14059                .map_err(SerializeError::from)?;
14060        }
14061        if let Some(ref val) = self.emboss {
14062            val.write_element("w:emboss", writer)?;
14063        }
14064        #[cfg(feature = "extra-children")]
14065        {
14066            emit_idx += 1;
14067        }
14068        #[cfg(feature = "extra-children")]
14069        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
14070            extra_iter
14071                .next()
14072                .unwrap()
14073                .node
14074                .write_to(writer)
14075                .map_err(SerializeError::from)?;
14076        }
14077        if let Some(ref val) = self.imprint {
14078            val.write_element("w:imprint", writer)?;
14079        }
14080        #[cfg(feature = "extra-children")]
14081        {
14082            emit_idx += 1;
14083        }
14084        #[cfg(feature = "extra-children")]
14085        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
14086            extra_iter
14087                .next()
14088                .unwrap()
14089                .node
14090                .write_to(writer)
14091                .map_err(SerializeError::from)?;
14092        }
14093        if let Some(ref val) = self.no_proof {
14094            val.write_element("w:noProof", writer)?;
14095        }
14096        #[cfg(feature = "extra-children")]
14097        {
14098            emit_idx += 1;
14099        }
14100        #[cfg(feature = "extra-children")]
14101        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
14102            extra_iter
14103                .next()
14104                .unwrap()
14105                .node
14106                .write_to(writer)
14107                .map_err(SerializeError::from)?;
14108        }
14109        if let Some(ref val) = self.snap_to_grid {
14110            val.write_element("w:snapToGrid", writer)?;
14111        }
14112        #[cfg(feature = "extra-children")]
14113        {
14114            emit_idx += 1;
14115        }
14116        #[cfg(feature = "extra-children")]
14117        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
14118            extra_iter
14119                .next()
14120                .unwrap()
14121                .node
14122                .write_to(writer)
14123                .map_err(SerializeError::from)?;
14124        }
14125        if let Some(ref val) = self.vanish {
14126            val.write_element("w:vanish", writer)?;
14127        }
14128        #[cfg(feature = "extra-children")]
14129        {
14130            emit_idx += 1;
14131        }
14132        #[cfg(feature = "extra-children")]
14133        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
14134            extra_iter
14135                .next()
14136                .unwrap()
14137                .node
14138                .write_to(writer)
14139                .map_err(SerializeError::from)?;
14140        }
14141        if let Some(ref val) = self.web_hidden {
14142            val.write_element("w:webHidden", writer)?;
14143        }
14144        #[cfg(feature = "extra-children")]
14145        {
14146            emit_idx += 1;
14147        }
14148        #[cfg(feature = "extra-children")]
14149        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
14150            extra_iter
14151                .next()
14152                .unwrap()
14153                .node
14154                .write_to(writer)
14155                .map_err(SerializeError::from)?;
14156        }
14157        if let Some(ref val) = self.color {
14158            val.write_element("w:color", writer)?;
14159        }
14160        #[cfg(feature = "extra-children")]
14161        {
14162            emit_idx += 1;
14163        }
14164        #[cfg(feature = "extra-children")]
14165        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
14166            extra_iter
14167                .next()
14168                .unwrap()
14169                .node
14170                .write_to(writer)
14171                .map_err(SerializeError::from)?;
14172        }
14173        if let Some(ref val) = self.spacing {
14174            val.write_element("w:spacing", writer)?;
14175        }
14176        #[cfg(feature = "extra-children")]
14177        {
14178            emit_idx += 1;
14179        }
14180        #[cfg(feature = "extra-children")]
14181        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
14182            extra_iter
14183                .next()
14184                .unwrap()
14185                .node
14186                .write_to(writer)
14187                .map_err(SerializeError::from)?;
14188        }
14189        if let Some(ref val) = self.width {
14190            val.write_element("w:w", writer)?;
14191        }
14192        #[cfg(feature = "extra-children")]
14193        {
14194            emit_idx += 1;
14195        }
14196        #[cfg(feature = "extra-children")]
14197        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
14198            extra_iter
14199                .next()
14200                .unwrap()
14201                .node
14202                .write_to(writer)
14203                .map_err(SerializeError::from)?;
14204        }
14205        if let Some(ref val) = self.kern {
14206            val.write_element("w:kern", writer)?;
14207        }
14208        #[cfg(feature = "extra-children")]
14209        {
14210            emit_idx += 1;
14211        }
14212        #[cfg(feature = "extra-children")]
14213        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
14214            extra_iter
14215                .next()
14216                .unwrap()
14217                .node
14218                .write_to(writer)
14219                .map_err(SerializeError::from)?;
14220        }
14221        if let Some(ref val) = self.position {
14222            val.write_element("w:position", writer)?;
14223        }
14224        #[cfg(feature = "extra-children")]
14225        {
14226            emit_idx += 1;
14227        }
14228        #[cfg(feature = "extra-children")]
14229        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
14230            extra_iter
14231                .next()
14232                .unwrap()
14233                .node
14234                .write_to(writer)
14235                .map_err(SerializeError::from)?;
14236        }
14237        if let Some(ref val) = self.size {
14238            val.write_element("w:sz", writer)?;
14239        }
14240        #[cfg(feature = "extra-children")]
14241        {
14242            emit_idx += 1;
14243        }
14244        #[cfg(feature = "extra-children")]
14245        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
14246            extra_iter
14247                .next()
14248                .unwrap()
14249                .node
14250                .write_to(writer)
14251                .map_err(SerializeError::from)?;
14252        }
14253        if let Some(ref val) = self.size_complex_script {
14254            val.write_element("w:szCs", writer)?;
14255        }
14256        #[cfg(feature = "extra-children")]
14257        {
14258            emit_idx += 1;
14259        }
14260        #[cfg(feature = "extra-children")]
14261        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
14262            extra_iter
14263                .next()
14264                .unwrap()
14265                .node
14266                .write_to(writer)
14267                .map_err(SerializeError::from)?;
14268        }
14269        if let Some(ref val) = self.highlight {
14270            val.write_element("w:highlight", writer)?;
14271        }
14272        #[cfg(feature = "extra-children")]
14273        {
14274            emit_idx += 1;
14275        }
14276        #[cfg(feature = "extra-children")]
14277        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
14278            extra_iter
14279                .next()
14280                .unwrap()
14281                .node
14282                .write_to(writer)
14283                .map_err(SerializeError::from)?;
14284        }
14285        if let Some(ref val) = self.underline {
14286            val.write_element("w:u", writer)?;
14287        }
14288        #[cfg(feature = "extra-children")]
14289        {
14290            emit_idx += 1;
14291        }
14292        #[cfg(feature = "extra-children")]
14293        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
14294            extra_iter
14295                .next()
14296                .unwrap()
14297                .node
14298                .write_to(writer)
14299                .map_err(SerializeError::from)?;
14300        }
14301        if let Some(ref val) = self.effect {
14302            val.write_element("w:effect", writer)?;
14303        }
14304        #[cfg(feature = "extra-children")]
14305        {
14306            emit_idx += 1;
14307        }
14308        #[cfg(feature = "extra-children")]
14309        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
14310            extra_iter
14311                .next()
14312                .unwrap()
14313                .node
14314                .write_to(writer)
14315                .map_err(SerializeError::from)?;
14316        }
14317        if let Some(ref val) = self.bdr {
14318            val.write_element("w:bdr", writer)?;
14319        }
14320        #[cfg(feature = "extra-children")]
14321        {
14322            emit_idx += 1;
14323        }
14324        #[cfg(feature = "extra-children")]
14325        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
14326            extra_iter
14327                .next()
14328                .unwrap()
14329                .node
14330                .write_to(writer)
14331                .map_err(SerializeError::from)?;
14332        }
14333        if let Some(ref val) = self.shading {
14334            val.write_element("w:shd", writer)?;
14335        }
14336        #[cfg(feature = "extra-children")]
14337        {
14338            emit_idx += 1;
14339        }
14340        #[cfg(feature = "extra-children")]
14341        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
14342            extra_iter
14343                .next()
14344                .unwrap()
14345                .node
14346                .write_to(writer)
14347                .map_err(SerializeError::from)?;
14348        }
14349        if let Some(ref val) = self.fit_text {
14350            val.write_element("w:fitText", writer)?;
14351        }
14352        #[cfg(feature = "extra-children")]
14353        {
14354            emit_idx += 1;
14355        }
14356        #[cfg(feature = "extra-children")]
14357        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
14358            extra_iter
14359                .next()
14360                .unwrap()
14361                .node
14362                .write_to(writer)
14363                .map_err(SerializeError::from)?;
14364        }
14365        if let Some(ref val) = self.vert_align {
14366            val.write_element("w:vertAlign", writer)?;
14367        }
14368        #[cfg(feature = "extra-children")]
14369        {
14370            emit_idx += 1;
14371        }
14372        #[cfg(feature = "extra-children")]
14373        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
14374            extra_iter
14375                .next()
14376                .unwrap()
14377                .node
14378                .write_to(writer)
14379                .map_err(SerializeError::from)?;
14380        }
14381        if let Some(ref val) = self.rtl {
14382            val.write_element("w:rtl", writer)?;
14383        }
14384        #[cfg(feature = "extra-children")]
14385        {
14386            emit_idx += 1;
14387        }
14388        #[cfg(feature = "extra-children")]
14389        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
14390            extra_iter
14391                .next()
14392                .unwrap()
14393                .node
14394                .write_to(writer)
14395                .map_err(SerializeError::from)?;
14396        }
14397        if let Some(ref val) = self.cs {
14398            val.write_element("w:cs", writer)?;
14399        }
14400        #[cfg(feature = "extra-children")]
14401        {
14402            emit_idx += 1;
14403        }
14404        #[cfg(feature = "extra-children")]
14405        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
14406            extra_iter
14407                .next()
14408                .unwrap()
14409                .node
14410                .write_to(writer)
14411                .map_err(SerializeError::from)?;
14412        }
14413        if let Some(ref val) = self.em {
14414            val.write_element("w:em", writer)?;
14415        }
14416        #[cfg(feature = "extra-children")]
14417        {
14418            emit_idx += 1;
14419        }
14420        #[cfg(feature = "extra-children")]
14421        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
14422            extra_iter
14423                .next()
14424                .unwrap()
14425                .node
14426                .write_to(writer)
14427                .map_err(SerializeError::from)?;
14428        }
14429        if let Some(ref val) = self.lang {
14430            val.write_element("w:lang", writer)?;
14431        }
14432        #[cfg(feature = "extra-children")]
14433        {
14434            emit_idx += 1;
14435        }
14436        #[cfg(feature = "extra-children")]
14437        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
14438            extra_iter
14439                .next()
14440                .unwrap()
14441                .node
14442                .write_to(writer)
14443                .map_err(SerializeError::from)?;
14444        }
14445        if let Some(ref val) = self.east_asian_layout {
14446            val.write_element("w:eastAsianLayout", writer)?;
14447        }
14448        #[cfg(feature = "extra-children")]
14449        {
14450            emit_idx += 1;
14451        }
14452        #[cfg(feature = "extra-children")]
14453        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
14454            extra_iter
14455                .next()
14456                .unwrap()
14457                .node
14458                .write_to(writer)
14459                .map_err(SerializeError::from)?;
14460        }
14461        if let Some(ref val) = self.spec_vanish {
14462            val.write_element("w:specVanish", writer)?;
14463        }
14464        #[cfg(feature = "extra-children")]
14465        {
14466            emit_idx += 1;
14467        }
14468        #[cfg(feature = "extra-children")]
14469        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
14470            extra_iter
14471                .next()
14472                .unwrap()
14473                .node
14474                .write_to(writer)
14475                .map_err(SerializeError::from)?;
14476        }
14477        if let Some(ref val) = self.o_math {
14478            val.write_element("w:oMath", writer)?;
14479        }
14480        #[cfg(feature = "extra-children")]
14481        {
14482            emit_idx += 1;
14483        }
14484        #[cfg(feature = "extra-children")]
14485        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
14486            extra_iter
14487                .next()
14488                .unwrap()
14489                .node
14490                .write_to(writer)
14491                .map_err(SerializeError::from)?;
14492        }
14493        #[cfg(feature = "wml-track-changes")]
14494        if let Some(ref val) = self.r_pr_change {
14495            val.write_element("w:rPrChange", writer)?;
14496        }
14497        #[cfg(feature = "extra-children")]
14498        {
14499            emit_idx += 1;
14500        }
14501        #[cfg(feature = "extra-children")]
14502        for extra in extra_iter {
14503            extra.node.write_to(writer).map_err(SerializeError::from)?;
14504        }
14505        Ok(())
14506    }
14507
14508    fn is_empty_element(&self) -> bool {
14509        if self.ins.is_some() {
14510            return false;
14511        }
14512        if self.del.is_some() {
14513            return false;
14514        }
14515        if self.move_from.is_some() {
14516            return false;
14517        }
14518        if self.move_to.is_some() {
14519            return false;
14520        }
14521        if self.run_style.is_some() {
14522            return false;
14523        }
14524        if self.fonts.is_some() {
14525            return false;
14526        }
14527        if self.bold.is_some() {
14528            return false;
14529        }
14530        if self.b_cs.is_some() {
14531            return false;
14532        }
14533        if self.italic.is_some() {
14534            return false;
14535        }
14536        if self.i_cs.is_some() {
14537            return false;
14538        }
14539        if self.caps.is_some() {
14540            return false;
14541        }
14542        if self.small_caps.is_some() {
14543            return false;
14544        }
14545        if self.strikethrough.is_some() {
14546            return false;
14547        }
14548        if self.dstrike.is_some() {
14549            return false;
14550        }
14551        if self.outline.is_some() {
14552            return false;
14553        }
14554        if self.shadow.is_some() {
14555            return false;
14556        }
14557        if self.emboss.is_some() {
14558            return false;
14559        }
14560        if self.imprint.is_some() {
14561            return false;
14562        }
14563        if self.no_proof.is_some() {
14564            return false;
14565        }
14566        if self.snap_to_grid.is_some() {
14567            return false;
14568        }
14569        if self.vanish.is_some() {
14570            return false;
14571        }
14572        if self.web_hidden.is_some() {
14573            return false;
14574        }
14575        if self.color.is_some() {
14576            return false;
14577        }
14578        if self.spacing.is_some() {
14579            return false;
14580        }
14581        if self.width.is_some() {
14582            return false;
14583        }
14584        if self.kern.is_some() {
14585            return false;
14586        }
14587        if self.position.is_some() {
14588            return false;
14589        }
14590        if self.size.is_some() {
14591            return false;
14592        }
14593        if self.size_complex_script.is_some() {
14594            return false;
14595        }
14596        if self.highlight.is_some() {
14597            return false;
14598        }
14599        if self.underline.is_some() {
14600            return false;
14601        }
14602        if self.effect.is_some() {
14603            return false;
14604        }
14605        if self.bdr.is_some() {
14606            return false;
14607        }
14608        if self.shading.is_some() {
14609            return false;
14610        }
14611        if self.fit_text.is_some() {
14612            return false;
14613        }
14614        if self.vert_align.is_some() {
14615            return false;
14616        }
14617        if self.rtl.is_some() {
14618            return false;
14619        }
14620        if self.cs.is_some() {
14621            return false;
14622        }
14623        if self.em.is_some() {
14624            return false;
14625        }
14626        if self.lang.is_some() {
14627            return false;
14628        }
14629        if self.east_asian_layout.is_some() {
14630            return false;
14631        }
14632        if self.spec_vanish.is_some() {
14633            return false;
14634        }
14635        if self.o_math.is_some() {
14636            return false;
14637        }
14638        #[cfg(feature = "wml-track-changes")]
14639        if self.r_pr_change.is_some() {
14640            return false;
14641        }
14642        #[cfg(feature = "extra-children")]
14643        if !self.extra_children.is_empty() {
14644            return false;
14645        }
14646        true
14647    }
14648}
14649
14650impl ToXml for EGParaRPrTrackChanges {
14651    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
14652        #[cfg(feature = "extra-children")]
14653        let mut extra_iter = self.extra_children.iter().peekable();
14654        #[cfg(feature = "extra-children")]
14655        let mut emit_idx: usize = 0;
14656        #[cfg(feature = "extra-children")]
14657        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
14658            extra_iter
14659                .next()
14660                .unwrap()
14661                .node
14662                .write_to(writer)
14663                .map_err(SerializeError::from)?;
14664        }
14665        if let Some(ref val) = self.ins {
14666            val.write_element("w:ins", writer)?;
14667        }
14668        #[cfg(feature = "extra-children")]
14669        {
14670            emit_idx += 1;
14671        }
14672        #[cfg(feature = "extra-children")]
14673        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
14674            extra_iter
14675                .next()
14676                .unwrap()
14677                .node
14678                .write_to(writer)
14679                .map_err(SerializeError::from)?;
14680        }
14681        if let Some(ref val) = self.del {
14682            val.write_element("w:del", writer)?;
14683        }
14684        #[cfg(feature = "extra-children")]
14685        {
14686            emit_idx += 1;
14687        }
14688        #[cfg(feature = "extra-children")]
14689        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
14690            extra_iter
14691                .next()
14692                .unwrap()
14693                .node
14694                .write_to(writer)
14695                .map_err(SerializeError::from)?;
14696        }
14697        if let Some(ref val) = self.move_from {
14698            val.write_element("w:moveFrom", writer)?;
14699        }
14700        #[cfg(feature = "extra-children")]
14701        {
14702            emit_idx += 1;
14703        }
14704        #[cfg(feature = "extra-children")]
14705        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
14706            extra_iter
14707                .next()
14708                .unwrap()
14709                .node
14710                .write_to(writer)
14711                .map_err(SerializeError::from)?;
14712        }
14713        if let Some(ref val) = self.move_to {
14714            val.write_element("w:moveTo", writer)?;
14715        }
14716        #[cfg(feature = "extra-children")]
14717        {
14718            emit_idx += 1;
14719        }
14720        #[cfg(feature = "extra-children")]
14721        for extra in extra_iter {
14722            extra.node.write_to(writer).map_err(SerializeError::from)?;
14723        }
14724        Ok(())
14725    }
14726
14727    fn is_empty_element(&self) -> bool {
14728        if self.ins.is_some() {
14729            return false;
14730        }
14731        if self.del.is_some() {
14732            return false;
14733        }
14734        if self.move_from.is_some() {
14735            return false;
14736        }
14737        if self.move_to.is_some() {
14738            return false;
14739        }
14740        #[cfg(feature = "extra-children")]
14741        if !self.extra_children.is_empty() {
14742            return false;
14743        }
14744        true
14745    }
14746}
14747
14748impl ToXml for CTAltChunk {
14749    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
14750        #[allow(unused_mut)]
14751        let mut start = start;
14752        if let Some(ref val) = self.id {
14753            start.push_attribute(("r:id", val.as_str()));
14754        }
14755        #[cfg(feature = "extra-attrs")]
14756        for (key, value) in &self.extra_attrs {
14757            start.push_attribute((key.as_str(), value.as_str()));
14758        }
14759        start
14760    }
14761
14762    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
14763        #[cfg(feature = "extra-children")]
14764        let mut extra_iter = self.extra_children.iter().peekable();
14765        #[cfg(feature = "extra-children")]
14766        let mut emit_idx: usize = 0;
14767        #[cfg(feature = "extra-children")]
14768        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
14769            extra_iter
14770                .next()
14771                .unwrap()
14772                .node
14773                .write_to(writer)
14774                .map_err(SerializeError::from)?;
14775        }
14776        #[cfg(feature = "wml-settings")]
14777        if let Some(ref val) = self.alt_chunk_pr {
14778            val.write_element("w:altChunkPr", writer)?;
14779        }
14780        #[cfg(feature = "extra-children")]
14781        {
14782            emit_idx += 1;
14783        }
14784        #[cfg(feature = "extra-children")]
14785        for extra in extra_iter {
14786            extra.node.write_to(writer).map_err(SerializeError::from)?;
14787        }
14788        Ok(())
14789    }
14790
14791    fn is_empty_element(&self) -> bool {
14792        #[cfg(feature = "wml-settings")]
14793        if self.alt_chunk_pr.is_some() {
14794            return false;
14795        }
14796        #[cfg(feature = "extra-children")]
14797        if !self.extra_children.is_empty() {
14798            return false;
14799        }
14800        true
14801    }
14802}
14803
14804impl ToXml for CTAltChunkPr {
14805    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
14806        #[cfg(feature = "extra-children")]
14807        let mut extra_iter = self.extra_children.iter().peekable();
14808        #[cfg(feature = "extra-children")]
14809        let mut emit_idx: usize = 0;
14810        #[cfg(feature = "extra-children")]
14811        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
14812            extra_iter
14813                .next()
14814                .unwrap()
14815                .node
14816                .write_to(writer)
14817                .map_err(SerializeError::from)?;
14818        }
14819        #[cfg(feature = "wml-settings")]
14820        if let Some(ref val) = self.match_src {
14821            val.write_element("w:matchSrc", writer)?;
14822        }
14823        #[cfg(feature = "extra-children")]
14824        {
14825            emit_idx += 1;
14826        }
14827        #[cfg(feature = "extra-children")]
14828        for extra in extra_iter {
14829            extra.node.write_to(writer).map_err(SerializeError::from)?;
14830        }
14831        Ok(())
14832    }
14833
14834    fn is_empty_element(&self) -> bool {
14835        #[cfg(feature = "wml-settings")]
14836        if self.match_src.is_some() {
14837            return false;
14838        }
14839        #[cfg(feature = "extra-children")]
14840        if !self.extra_children.is_empty() {
14841            return false;
14842        }
14843        true
14844    }
14845}
14846
14847impl ToXml for CTRubyAlign {
14848    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
14849        #[allow(unused_mut)]
14850        let mut start = start;
14851        {
14852            let val = &self.value;
14853            {
14854                let s = val.to_string();
14855                start.push_attribute(("w:val", s.as_str()));
14856            }
14857        }
14858        #[cfg(feature = "extra-attrs")]
14859        for (key, value) in &self.extra_attrs {
14860            start.push_attribute((key.as_str(), value.as_str()));
14861        }
14862        start
14863    }
14864
14865    fn is_empty_element(&self) -> bool {
14866        true
14867    }
14868}
14869
14870impl ToXml for CTRubyPr {
14871    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
14872        #[cfg(feature = "extra-children")]
14873        let mut extra_iter = self.extra_children.iter().peekable();
14874        #[cfg(feature = "extra-children")]
14875        let mut emit_idx: usize = 0;
14876        #[cfg(feature = "extra-children")]
14877        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
14878            extra_iter
14879                .next()
14880                .unwrap()
14881                .node
14882                .write_to(writer)
14883                .map_err(SerializeError::from)?;
14884        }
14885        #[cfg(feature = "wml-styling")]
14886        {
14887            let val = &self.ruby_align;
14888            val.write_element("w:rubyAlign", writer)?;
14889        }
14890        #[cfg(feature = "extra-children")]
14891        {
14892            emit_idx += 1;
14893        }
14894        #[cfg(feature = "extra-children")]
14895        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
14896            extra_iter
14897                .next()
14898                .unwrap()
14899                .node
14900                .write_to(writer)
14901                .map_err(SerializeError::from)?;
14902        }
14903        #[cfg(feature = "wml-styling")]
14904        {
14905            let val = &self.hps;
14906            val.write_element("w:hps", writer)?;
14907        }
14908        #[cfg(feature = "extra-children")]
14909        {
14910            emit_idx += 1;
14911        }
14912        #[cfg(feature = "extra-children")]
14913        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
14914            extra_iter
14915                .next()
14916                .unwrap()
14917                .node
14918                .write_to(writer)
14919                .map_err(SerializeError::from)?;
14920        }
14921        #[cfg(feature = "wml-styling")]
14922        {
14923            let val = &self.hps_raise;
14924            val.write_element("w:hpsRaise", writer)?;
14925        }
14926        #[cfg(feature = "extra-children")]
14927        {
14928            emit_idx += 1;
14929        }
14930        #[cfg(feature = "extra-children")]
14931        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
14932            extra_iter
14933                .next()
14934                .unwrap()
14935                .node
14936                .write_to(writer)
14937                .map_err(SerializeError::from)?;
14938        }
14939        #[cfg(feature = "wml-styling")]
14940        {
14941            let val = &self.hps_base_text;
14942            val.write_element("w:hpsBaseText", writer)?;
14943        }
14944        #[cfg(feature = "extra-children")]
14945        {
14946            emit_idx += 1;
14947        }
14948        #[cfg(feature = "extra-children")]
14949        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
14950            extra_iter
14951                .next()
14952                .unwrap()
14953                .node
14954                .write_to(writer)
14955                .map_err(SerializeError::from)?;
14956        }
14957        #[cfg(feature = "wml-styling")]
14958        {
14959            let val = &self.lid;
14960            val.write_element("w:lid", writer)?;
14961        }
14962        #[cfg(feature = "extra-children")]
14963        {
14964            emit_idx += 1;
14965        }
14966        #[cfg(feature = "extra-children")]
14967        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
14968            extra_iter
14969                .next()
14970                .unwrap()
14971                .node
14972                .write_to(writer)
14973                .map_err(SerializeError::from)?;
14974        }
14975        #[cfg(feature = "wml-styling")]
14976        if let Some(ref val) = self.dirty {
14977            val.write_element("w:dirty", writer)?;
14978        }
14979        #[cfg(feature = "extra-children")]
14980        {
14981            emit_idx += 1;
14982        }
14983        #[cfg(feature = "extra-children")]
14984        for extra in extra_iter {
14985            extra.node.write_to(writer).map_err(SerializeError::from)?;
14986        }
14987        Ok(())
14988    }
14989
14990    fn is_empty_element(&self) -> bool {
14991        #[cfg(feature = "wml-styling")]
14992        return false;
14993        #[cfg(feature = "wml-styling")]
14994        return false;
14995        #[cfg(feature = "wml-styling")]
14996        return false;
14997        #[cfg(feature = "wml-styling")]
14998        return false;
14999        #[cfg(feature = "wml-styling")]
15000        return false;
15001        #[cfg(feature = "wml-styling")]
15002        if self.dirty.is_some() {
15003            return false;
15004        }
15005        #[cfg(feature = "extra-children")]
15006        if !self.extra_children.is_empty() {
15007            return false;
15008        }
15009        true
15010    }
15011}
15012
15013impl ToXml for RubyContent {
15014    fn write_element<W: Write>(
15015        &self,
15016        _tag: &str,
15017        writer: &mut Writer<W>,
15018    ) -> Result<(), SerializeError> {
15019        match self {
15020            Self::R(inner) => inner.write_element("w:r", writer)?,
15021            Self::ProofErr(inner) => inner.write_element("w:proofErr", writer)?,
15022            Self::PermStart(inner) => inner.write_element("w:permStart", writer)?,
15023            Self::PermEnd(inner) => inner.write_element("w:permEnd", writer)?,
15024            Self::BookmarkStart(inner) => inner.write_element("w:bookmarkStart", writer)?,
15025            Self::BookmarkEnd(inner) => inner.write_element("w:bookmarkEnd", writer)?,
15026            Self::MoveFromRangeStart(inner) => {
15027                inner.write_element("w:moveFromRangeStart", writer)?
15028            }
15029            Self::MoveFromRangeEnd(inner) => inner.write_element("w:moveFromRangeEnd", writer)?,
15030            Self::MoveToRangeStart(inner) => inner.write_element("w:moveToRangeStart", writer)?,
15031            Self::MoveToRangeEnd(inner) => inner.write_element("w:moveToRangeEnd", writer)?,
15032            Self::CommentRangeStart(inner) => inner.write_element("w:commentRangeStart", writer)?,
15033            Self::CommentRangeEnd(inner) => inner.write_element("w:commentRangeEnd", writer)?,
15034            Self::CustomXmlInsRangeStart(inner) => {
15035                inner.write_element("w:customXmlInsRangeStart", writer)?
15036            }
15037            Self::CustomXmlInsRangeEnd(inner) => {
15038                inner.write_element("w:customXmlInsRangeEnd", writer)?
15039            }
15040            Self::CustomXmlDelRangeStart(inner) => {
15041                inner.write_element("w:customXmlDelRangeStart", writer)?
15042            }
15043            Self::CustomXmlDelRangeEnd(inner) => {
15044                inner.write_element("w:customXmlDelRangeEnd", writer)?
15045            }
15046            Self::CustomXmlMoveFromRangeStart(inner) => {
15047                inner.write_element("w:customXmlMoveFromRangeStart", writer)?
15048            }
15049            Self::CustomXmlMoveFromRangeEnd(inner) => {
15050                inner.write_element("w:customXmlMoveFromRangeEnd", writer)?
15051            }
15052            Self::CustomXmlMoveToRangeStart(inner) => {
15053                inner.write_element("w:customXmlMoveToRangeStart", writer)?
15054            }
15055            Self::CustomXmlMoveToRangeEnd(inner) => {
15056                inner.write_element("w:customXmlMoveToRangeEnd", writer)?
15057            }
15058            Self::Ins(inner) => inner.write_element("w:ins", writer)?,
15059            Self::Del(inner) => inner.write_element("w:del", writer)?,
15060            Self::MoveFrom(inner) => inner.write_element("w:moveFrom", writer)?,
15061            Self::MoveTo(inner) => inner.write_element("w:moveTo", writer)?,
15062        }
15063        Ok(())
15064    }
15065}
15066
15067impl ToXml for CTRubyContent {
15068    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
15069        #[cfg(feature = "extra-children")]
15070        let mut extra_iter = self.extra_children.iter().peekable();
15071        #[cfg(feature = "extra-children")]
15072        let mut emit_idx: usize = 0;
15073        for item in &self.ruby_content {
15074            #[cfg(feature = "extra-children")]
15075            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
15076                extra_iter
15077                    .next()
15078                    .unwrap()
15079                    .node
15080                    .write_to(writer)
15081                    .map_err(SerializeError::from)?;
15082            }
15083            item.write_element("", writer)?;
15084            #[cfg(feature = "extra-children")]
15085            {
15086                emit_idx += 1;
15087            }
15088        }
15089        #[cfg(feature = "extra-children")]
15090        for extra in extra_iter {
15091            extra.node.write_to(writer).map_err(SerializeError::from)?;
15092        }
15093        Ok(())
15094    }
15095
15096    fn is_empty_element(&self) -> bool {
15097        if !self.ruby_content.is_empty() {
15098            return false;
15099        }
15100        #[cfg(feature = "extra-children")]
15101        if !self.extra_children.is_empty() {
15102            return false;
15103        }
15104        true
15105    }
15106}
15107
15108impl ToXml for CTRuby {
15109    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
15110        #[cfg(feature = "extra-children")]
15111        let mut extra_iter = self.extra_children.iter().peekable();
15112        #[cfg(feature = "extra-children")]
15113        let mut emit_idx: usize = 0;
15114        #[cfg(feature = "extra-children")]
15115        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
15116            extra_iter
15117                .next()
15118                .unwrap()
15119                .node
15120                .write_to(writer)
15121                .map_err(SerializeError::from)?;
15122        }
15123        #[cfg(feature = "wml-styling")]
15124        {
15125            let val = &self.ruby_pr;
15126            val.write_element("w:rubyPr", writer)?;
15127        }
15128        #[cfg(feature = "extra-children")]
15129        {
15130            emit_idx += 1;
15131        }
15132        #[cfg(feature = "extra-children")]
15133        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
15134            extra_iter
15135                .next()
15136                .unwrap()
15137                .node
15138                .write_to(writer)
15139                .map_err(SerializeError::from)?;
15140        }
15141        {
15142            let val = &self.rt;
15143            val.write_element("w:rt", writer)?;
15144        }
15145        #[cfg(feature = "extra-children")]
15146        {
15147            emit_idx += 1;
15148        }
15149        #[cfg(feature = "extra-children")]
15150        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
15151            extra_iter
15152                .next()
15153                .unwrap()
15154                .node
15155                .write_to(writer)
15156                .map_err(SerializeError::from)?;
15157        }
15158        {
15159            let val = &self.ruby_base;
15160            val.write_element("w:rubyBase", writer)?;
15161        }
15162        #[cfg(feature = "extra-children")]
15163        {
15164            emit_idx += 1;
15165        }
15166        #[cfg(feature = "extra-children")]
15167        for extra in extra_iter {
15168            extra.node.write_to(writer).map_err(SerializeError::from)?;
15169        }
15170        Ok(())
15171    }
15172
15173    fn is_empty_element(&self) -> bool {
15174        #[cfg(feature = "wml-styling")]
15175        return false;
15176        false
15177    }
15178}
15179
15180impl ToXml for CTLock {
15181    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
15182        #[allow(unused_mut)]
15183        let mut start = start;
15184        if let Some(ref val) = self.value {
15185            {
15186                let s = val.to_string();
15187                start.push_attribute(("w:val", s.as_str()));
15188            }
15189        }
15190        #[cfg(feature = "extra-attrs")]
15191        for (key, value) in &self.extra_attrs {
15192            start.push_attribute((key.as_str(), value.as_str()));
15193        }
15194        start
15195    }
15196
15197    fn is_empty_element(&self) -> bool {
15198        true
15199    }
15200}
15201
15202impl ToXml for CTSdtListItem {
15203    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
15204        #[allow(unused_mut)]
15205        let mut start = start;
15206        if let Some(ref val) = self.display_text {
15207            start.push_attribute(("w:displayText", val.as_str()));
15208        }
15209        if let Some(ref val) = self.value {
15210            start.push_attribute(("w:value", val.as_str()));
15211        }
15212        #[cfg(feature = "extra-attrs")]
15213        for (key, value) in &self.extra_attrs {
15214            start.push_attribute((key.as_str(), value.as_str()));
15215        }
15216        start
15217    }
15218
15219    fn is_empty_element(&self) -> bool {
15220        true
15221    }
15222}
15223
15224impl ToXml for CTSdtDateMappingType {
15225    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
15226        #[allow(unused_mut)]
15227        let mut start = start;
15228        if let Some(ref val) = self.value {
15229            {
15230                let s = val.to_string();
15231                start.push_attribute(("w:val", s.as_str()));
15232            }
15233        }
15234        #[cfg(feature = "extra-attrs")]
15235        for (key, value) in &self.extra_attrs {
15236            start.push_attribute((key.as_str(), value.as_str()));
15237        }
15238        start
15239    }
15240
15241    fn is_empty_element(&self) -> bool {
15242        true
15243    }
15244}
15245
15246impl ToXml for CTCalendarType {
15247    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
15248        #[allow(unused_mut)]
15249        let mut start = start;
15250        if let Some(ref val) = self.value {
15251            {
15252                let s = val.to_string();
15253                start.push_attribute(("w:val", s.as_str()));
15254            }
15255        }
15256        #[cfg(feature = "extra-attrs")]
15257        for (key, value) in &self.extra_attrs {
15258            start.push_attribute((key.as_str(), value.as_str()));
15259        }
15260        start
15261    }
15262
15263    fn is_empty_element(&self) -> bool {
15264        true
15265    }
15266}
15267
15268impl ToXml for CTSdtDate {
15269    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
15270        #[allow(unused_mut)]
15271        let mut start = start;
15272        #[cfg(feature = "wml-settings")]
15273        if let Some(ref val) = self.full_date {
15274            start.push_attribute(("w:fullDate", val.as_str()));
15275        }
15276        #[cfg(feature = "extra-attrs")]
15277        for (key, value) in &self.extra_attrs {
15278            start.push_attribute((key.as_str(), value.as_str()));
15279        }
15280        start
15281    }
15282
15283    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
15284        #[cfg(feature = "extra-children")]
15285        let mut extra_iter = self.extra_children.iter().peekable();
15286        #[cfg(feature = "extra-children")]
15287        let mut emit_idx: usize = 0;
15288        #[cfg(feature = "extra-children")]
15289        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
15290            extra_iter
15291                .next()
15292                .unwrap()
15293                .node
15294                .write_to(writer)
15295                .map_err(SerializeError::from)?;
15296        }
15297        #[cfg(feature = "wml-settings")]
15298        if let Some(ref val) = self.date_format {
15299            val.write_element("w:dateFormat", writer)?;
15300        }
15301        #[cfg(feature = "extra-children")]
15302        {
15303            emit_idx += 1;
15304        }
15305        #[cfg(feature = "extra-children")]
15306        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
15307            extra_iter
15308                .next()
15309                .unwrap()
15310                .node
15311                .write_to(writer)
15312                .map_err(SerializeError::from)?;
15313        }
15314        #[cfg(feature = "wml-settings")]
15315        if let Some(ref val) = self.lid {
15316            val.write_element("w:lid", writer)?;
15317        }
15318        #[cfg(feature = "extra-children")]
15319        {
15320            emit_idx += 1;
15321        }
15322        #[cfg(feature = "extra-children")]
15323        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
15324            extra_iter
15325                .next()
15326                .unwrap()
15327                .node
15328                .write_to(writer)
15329                .map_err(SerializeError::from)?;
15330        }
15331        #[cfg(feature = "wml-settings")]
15332        if let Some(ref val) = self.store_mapped_data_as {
15333            val.write_element("w:storeMappedDataAs", writer)?;
15334        }
15335        #[cfg(feature = "extra-children")]
15336        {
15337            emit_idx += 1;
15338        }
15339        #[cfg(feature = "extra-children")]
15340        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
15341            extra_iter
15342                .next()
15343                .unwrap()
15344                .node
15345                .write_to(writer)
15346                .map_err(SerializeError::from)?;
15347        }
15348        #[cfg(feature = "wml-settings")]
15349        if let Some(ref val) = self.calendar {
15350            val.write_element("w:calendar", writer)?;
15351        }
15352        #[cfg(feature = "extra-children")]
15353        {
15354            emit_idx += 1;
15355        }
15356        #[cfg(feature = "extra-children")]
15357        for extra in extra_iter {
15358            extra.node.write_to(writer).map_err(SerializeError::from)?;
15359        }
15360        Ok(())
15361    }
15362
15363    fn is_empty_element(&self) -> bool {
15364        #[cfg(feature = "wml-settings")]
15365        if self.date_format.is_some() {
15366            return false;
15367        }
15368        #[cfg(feature = "wml-settings")]
15369        if self.lid.is_some() {
15370            return false;
15371        }
15372        #[cfg(feature = "wml-settings")]
15373        if self.store_mapped_data_as.is_some() {
15374            return false;
15375        }
15376        #[cfg(feature = "wml-settings")]
15377        if self.calendar.is_some() {
15378            return false;
15379        }
15380        #[cfg(feature = "extra-children")]
15381        if !self.extra_children.is_empty() {
15382            return false;
15383        }
15384        true
15385    }
15386}
15387
15388impl ToXml for CTSdtComboBox {
15389    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
15390        #[allow(unused_mut)]
15391        let mut start = start;
15392        #[cfg(feature = "wml-settings")]
15393        if let Some(ref val) = self.last_value {
15394            start.push_attribute(("w:lastValue", val.as_str()));
15395        }
15396        #[cfg(feature = "extra-attrs")]
15397        for (key, value) in &self.extra_attrs {
15398            start.push_attribute((key.as_str(), value.as_str()));
15399        }
15400        start
15401    }
15402
15403    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
15404        #[cfg(feature = "extra-children")]
15405        let mut extra_iter = self.extra_children.iter().peekable();
15406        #[cfg(feature = "extra-children")]
15407        let mut emit_idx: usize = 0;
15408        #[cfg(feature = "wml-settings")]
15409        for item in &self.list_item {
15410            #[cfg(feature = "extra-children")]
15411            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
15412                extra_iter
15413                    .next()
15414                    .unwrap()
15415                    .node
15416                    .write_to(writer)
15417                    .map_err(SerializeError::from)?;
15418            }
15419            item.write_element("w:listItem", writer)?;
15420            #[cfg(feature = "extra-children")]
15421            {
15422                emit_idx += 1;
15423            }
15424        }
15425        #[cfg(feature = "extra-children")]
15426        for extra in extra_iter {
15427            extra.node.write_to(writer).map_err(SerializeError::from)?;
15428        }
15429        Ok(())
15430    }
15431
15432    fn is_empty_element(&self) -> bool {
15433        #[cfg(feature = "wml-settings")]
15434        if !self.list_item.is_empty() {
15435            return false;
15436        }
15437        #[cfg(feature = "extra-children")]
15438        if !self.extra_children.is_empty() {
15439            return false;
15440        }
15441        true
15442    }
15443}
15444
15445impl ToXml for CTSdtDocPart {
15446    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
15447        #[cfg(feature = "extra-children")]
15448        let mut extra_iter = self.extra_children.iter().peekable();
15449        #[cfg(feature = "extra-children")]
15450        let mut emit_idx: usize = 0;
15451        #[cfg(feature = "extra-children")]
15452        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
15453            extra_iter
15454                .next()
15455                .unwrap()
15456                .node
15457                .write_to(writer)
15458                .map_err(SerializeError::from)?;
15459        }
15460        #[cfg(feature = "wml-settings")]
15461        if let Some(ref val) = self.doc_part_gallery {
15462            val.write_element("w:docPartGallery", writer)?;
15463        }
15464        #[cfg(feature = "extra-children")]
15465        {
15466            emit_idx += 1;
15467        }
15468        #[cfg(feature = "extra-children")]
15469        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
15470            extra_iter
15471                .next()
15472                .unwrap()
15473                .node
15474                .write_to(writer)
15475                .map_err(SerializeError::from)?;
15476        }
15477        #[cfg(feature = "wml-settings")]
15478        if let Some(ref val) = self.doc_part_category {
15479            val.write_element("w:docPartCategory", writer)?;
15480        }
15481        #[cfg(feature = "extra-children")]
15482        {
15483            emit_idx += 1;
15484        }
15485        #[cfg(feature = "extra-children")]
15486        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
15487            extra_iter
15488                .next()
15489                .unwrap()
15490                .node
15491                .write_to(writer)
15492                .map_err(SerializeError::from)?;
15493        }
15494        #[cfg(feature = "wml-settings")]
15495        if let Some(ref val) = self.doc_part_unique {
15496            val.write_element("w:docPartUnique", writer)?;
15497        }
15498        #[cfg(feature = "extra-children")]
15499        {
15500            emit_idx += 1;
15501        }
15502        #[cfg(feature = "extra-children")]
15503        for extra in extra_iter {
15504            extra.node.write_to(writer).map_err(SerializeError::from)?;
15505        }
15506        Ok(())
15507    }
15508
15509    fn is_empty_element(&self) -> bool {
15510        #[cfg(feature = "wml-settings")]
15511        if self.doc_part_gallery.is_some() {
15512            return false;
15513        }
15514        #[cfg(feature = "wml-settings")]
15515        if self.doc_part_category.is_some() {
15516            return false;
15517        }
15518        #[cfg(feature = "wml-settings")]
15519        if self.doc_part_unique.is_some() {
15520            return false;
15521        }
15522        #[cfg(feature = "extra-children")]
15523        if !self.extra_children.is_empty() {
15524            return false;
15525        }
15526        true
15527    }
15528}
15529
15530impl ToXml for CTSdtDropDownList {
15531    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
15532        #[allow(unused_mut)]
15533        let mut start = start;
15534        #[cfg(feature = "wml-settings")]
15535        if let Some(ref val) = self.last_value {
15536            start.push_attribute(("w:lastValue", val.as_str()));
15537        }
15538        #[cfg(feature = "extra-attrs")]
15539        for (key, value) in &self.extra_attrs {
15540            start.push_attribute((key.as_str(), value.as_str()));
15541        }
15542        start
15543    }
15544
15545    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
15546        #[cfg(feature = "extra-children")]
15547        let mut extra_iter = self.extra_children.iter().peekable();
15548        #[cfg(feature = "extra-children")]
15549        let mut emit_idx: usize = 0;
15550        #[cfg(feature = "wml-settings")]
15551        for item in &self.list_item {
15552            #[cfg(feature = "extra-children")]
15553            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
15554                extra_iter
15555                    .next()
15556                    .unwrap()
15557                    .node
15558                    .write_to(writer)
15559                    .map_err(SerializeError::from)?;
15560            }
15561            item.write_element("w:listItem", writer)?;
15562            #[cfg(feature = "extra-children")]
15563            {
15564                emit_idx += 1;
15565            }
15566        }
15567        #[cfg(feature = "extra-children")]
15568        for extra in extra_iter {
15569            extra.node.write_to(writer).map_err(SerializeError::from)?;
15570        }
15571        Ok(())
15572    }
15573
15574    fn is_empty_element(&self) -> bool {
15575        #[cfg(feature = "wml-settings")]
15576        if !self.list_item.is_empty() {
15577            return false;
15578        }
15579        #[cfg(feature = "extra-children")]
15580        if !self.extra_children.is_empty() {
15581            return false;
15582        }
15583        true
15584    }
15585}
15586
15587impl ToXml for CTSdtText {
15588    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
15589        #[allow(unused_mut)]
15590        let mut start = start;
15591        #[cfg(feature = "wml-settings")]
15592        if let Some(ref val) = self.multi_line {
15593            {
15594                let s = val.to_string();
15595                start.push_attribute(("w:multiLine", s.as_str()));
15596            }
15597        }
15598        #[cfg(feature = "extra-attrs")]
15599        for (key, value) in &self.extra_attrs {
15600            start.push_attribute((key.as_str(), value.as_str()));
15601        }
15602        start
15603    }
15604
15605    fn is_empty_element(&self) -> bool {
15606        true
15607    }
15608}
15609
15610impl ToXml for CTDataBinding {
15611    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
15612        #[allow(unused_mut)]
15613        let mut start = start;
15614        #[cfg(feature = "wml-settings")]
15615        if let Some(ref val) = self.prefix_mappings {
15616            start.push_attribute(("w:prefixMappings", val.as_str()));
15617        }
15618        #[cfg(feature = "wml-settings")]
15619        {
15620            let val = &self.xpath;
15621            start.push_attribute(("w:xpath", val.as_str()));
15622        }
15623        #[cfg(feature = "wml-settings")]
15624        {
15625            let val = &self.store_item_i_d;
15626            start.push_attribute(("w:storeItemID", val.as_str()));
15627        }
15628        #[cfg(feature = "extra-attrs")]
15629        for (key, value) in &self.extra_attrs {
15630            start.push_attribute((key.as_str(), value.as_str()));
15631        }
15632        start
15633    }
15634
15635    fn is_empty_element(&self) -> bool {
15636        true
15637    }
15638}
15639
15640impl ToXml for CTSdtPr {
15641    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
15642        #[cfg(feature = "extra-children")]
15643        let mut extra_iter = self.extra_children.iter().peekable();
15644        #[cfg(feature = "extra-children")]
15645        let mut emit_idx: usize = 0;
15646        #[cfg(feature = "extra-children")]
15647        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
15648            extra_iter
15649                .next()
15650                .unwrap()
15651                .node
15652                .write_to(writer)
15653                .map_err(SerializeError::from)?;
15654        }
15655        #[cfg(feature = "wml-settings")]
15656        if let Some(ref val) = self.r_pr {
15657            val.write_element("w:rPr", writer)?;
15658        }
15659        #[cfg(feature = "extra-children")]
15660        {
15661            emit_idx += 1;
15662        }
15663        #[cfg(feature = "extra-children")]
15664        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
15665            extra_iter
15666                .next()
15667                .unwrap()
15668                .node
15669                .write_to(writer)
15670                .map_err(SerializeError::from)?;
15671        }
15672        #[cfg(feature = "wml-settings")]
15673        if let Some(ref val) = self.alias {
15674            val.write_element("w:alias", writer)?;
15675        }
15676        #[cfg(feature = "extra-children")]
15677        {
15678            emit_idx += 1;
15679        }
15680        #[cfg(feature = "extra-children")]
15681        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
15682            extra_iter
15683                .next()
15684                .unwrap()
15685                .node
15686                .write_to(writer)
15687                .map_err(SerializeError::from)?;
15688        }
15689        #[cfg(feature = "wml-settings")]
15690        if let Some(ref val) = self.tag {
15691            val.write_element("w:tag", writer)?;
15692        }
15693        #[cfg(feature = "extra-children")]
15694        {
15695            emit_idx += 1;
15696        }
15697        #[cfg(feature = "extra-children")]
15698        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
15699            extra_iter
15700                .next()
15701                .unwrap()
15702                .node
15703                .write_to(writer)
15704                .map_err(SerializeError::from)?;
15705        }
15706        #[cfg(feature = "wml-settings")]
15707        if let Some(ref val) = self.id {
15708            val.write_element("w:id", writer)?;
15709        }
15710        #[cfg(feature = "extra-children")]
15711        {
15712            emit_idx += 1;
15713        }
15714        #[cfg(feature = "extra-children")]
15715        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
15716            extra_iter
15717                .next()
15718                .unwrap()
15719                .node
15720                .write_to(writer)
15721                .map_err(SerializeError::from)?;
15722        }
15723        #[cfg(feature = "wml-settings")]
15724        if let Some(ref val) = self.lock {
15725            val.write_element("w:lock", writer)?;
15726        }
15727        #[cfg(feature = "extra-children")]
15728        {
15729            emit_idx += 1;
15730        }
15731        #[cfg(feature = "extra-children")]
15732        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
15733            extra_iter
15734                .next()
15735                .unwrap()
15736                .node
15737                .write_to(writer)
15738                .map_err(SerializeError::from)?;
15739        }
15740        #[cfg(feature = "wml-settings")]
15741        if let Some(ref val) = self.placeholder {
15742            val.write_element("w:placeholder", writer)?;
15743        }
15744        #[cfg(feature = "extra-children")]
15745        {
15746            emit_idx += 1;
15747        }
15748        #[cfg(feature = "extra-children")]
15749        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
15750            extra_iter
15751                .next()
15752                .unwrap()
15753                .node
15754                .write_to(writer)
15755                .map_err(SerializeError::from)?;
15756        }
15757        #[cfg(feature = "wml-settings")]
15758        if let Some(ref val) = self.temporary {
15759            val.write_element("w:temporary", writer)?;
15760        }
15761        #[cfg(feature = "extra-children")]
15762        {
15763            emit_idx += 1;
15764        }
15765        #[cfg(feature = "extra-children")]
15766        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
15767            extra_iter
15768                .next()
15769                .unwrap()
15770                .node
15771                .write_to(writer)
15772                .map_err(SerializeError::from)?;
15773        }
15774        #[cfg(feature = "wml-settings")]
15775        if let Some(ref val) = self.showing_plc_hdr {
15776            val.write_element("w:showingPlcHdr", writer)?;
15777        }
15778        #[cfg(feature = "extra-children")]
15779        {
15780            emit_idx += 1;
15781        }
15782        #[cfg(feature = "extra-children")]
15783        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
15784            extra_iter
15785                .next()
15786                .unwrap()
15787                .node
15788                .write_to(writer)
15789                .map_err(SerializeError::from)?;
15790        }
15791        #[cfg(feature = "wml-settings")]
15792        if let Some(ref val) = self.data_binding {
15793            val.write_element("w:dataBinding", writer)?;
15794        }
15795        #[cfg(feature = "extra-children")]
15796        {
15797            emit_idx += 1;
15798        }
15799        #[cfg(feature = "extra-children")]
15800        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
15801            extra_iter
15802                .next()
15803                .unwrap()
15804                .node
15805                .write_to(writer)
15806                .map_err(SerializeError::from)?;
15807        }
15808        #[cfg(feature = "wml-settings")]
15809        if let Some(ref val) = self.label {
15810            val.write_element("w:label", writer)?;
15811        }
15812        #[cfg(feature = "extra-children")]
15813        {
15814            emit_idx += 1;
15815        }
15816        #[cfg(feature = "extra-children")]
15817        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
15818            extra_iter
15819                .next()
15820                .unwrap()
15821                .node
15822                .write_to(writer)
15823                .map_err(SerializeError::from)?;
15824        }
15825        #[cfg(feature = "wml-settings")]
15826        if let Some(ref val) = self.tab_index {
15827            val.write_element("w:tabIndex", writer)?;
15828        }
15829        #[cfg(feature = "extra-children")]
15830        {
15831            emit_idx += 1;
15832        }
15833        #[cfg(feature = "extra-children")]
15834        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
15835            extra_iter
15836                .next()
15837                .unwrap()
15838                .node
15839                .write_to(writer)
15840                .map_err(SerializeError::from)?;
15841        }
15842        #[cfg(feature = "wml-settings")]
15843        if let Some(ref val) = self.equation {
15844            val.write_element("w:equation", writer)?;
15845        }
15846        #[cfg(feature = "extra-children")]
15847        {
15848            emit_idx += 1;
15849        }
15850        #[cfg(feature = "extra-children")]
15851        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
15852            extra_iter
15853                .next()
15854                .unwrap()
15855                .node
15856                .write_to(writer)
15857                .map_err(SerializeError::from)?;
15858        }
15859        #[cfg(feature = "wml-settings")]
15860        if let Some(ref val) = self.combo_box {
15861            val.write_element("w:comboBox", writer)?;
15862        }
15863        #[cfg(feature = "extra-children")]
15864        {
15865            emit_idx += 1;
15866        }
15867        #[cfg(feature = "extra-children")]
15868        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
15869            extra_iter
15870                .next()
15871                .unwrap()
15872                .node
15873                .write_to(writer)
15874                .map_err(SerializeError::from)?;
15875        }
15876        #[cfg(feature = "wml-settings")]
15877        if let Some(ref val) = self.date {
15878            val.write_element("w:date", writer)?;
15879        }
15880        #[cfg(feature = "extra-children")]
15881        {
15882            emit_idx += 1;
15883        }
15884        #[cfg(feature = "extra-children")]
15885        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
15886            extra_iter
15887                .next()
15888                .unwrap()
15889                .node
15890                .write_to(writer)
15891                .map_err(SerializeError::from)?;
15892        }
15893        #[cfg(feature = "wml-settings")]
15894        if let Some(ref val) = self.doc_part_obj {
15895            val.write_element("w:docPartObj", writer)?;
15896        }
15897        #[cfg(feature = "extra-children")]
15898        {
15899            emit_idx += 1;
15900        }
15901        #[cfg(feature = "extra-children")]
15902        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
15903            extra_iter
15904                .next()
15905                .unwrap()
15906                .node
15907                .write_to(writer)
15908                .map_err(SerializeError::from)?;
15909        }
15910        #[cfg(feature = "wml-settings")]
15911        if let Some(ref val) = self.doc_part_list {
15912            val.write_element("w:docPartList", writer)?;
15913        }
15914        #[cfg(feature = "extra-children")]
15915        {
15916            emit_idx += 1;
15917        }
15918        #[cfg(feature = "extra-children")]
15919        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
15920            extra_iter
15921                .next()
15922                .unwrap()
15923                .node
15924                .write_to(writer)
15925                .map_err(SerializeError::from)?;
15926        }
15927        #[cfg(feature = "wml-settings")]
15928        if let Some(ref val) = self.drop_down_list {
15929            val.write_element("w:dropDownList", writer)?;
15930        }
15931        #[cfg(feature = "extra-children")]
15932        {
15933            emit_idx += 1;
15934        }
15935        #[cfg(feature = "extra-children")]
15936        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
15937            extra_iter
15938                .next()
15939                .unwrap()
15940                .node
15941                .write_to(writer)
15942                .map_err(SerializeError::from)?;
15943        }
15944        #[cfg(feature = "wml-settings")]
15945        if let Some(ref val) = self.picture {
15946            val.write_element("w:picture", writer)?;
15947        }
15948        #[cfg(feature = "extra-children")]
15949        {
15950            emit_idx += 1;
15951        }
15952        #[cfg(feature = "extra-children")]
15953        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
15954            extra_iter
15955                .next()
15956                .unwrap()
15957                .node
15958                .write_to(writer)
15959                .map_err(SerializeError::from)?;
15960        }
15961        #[cfg(feature = "wml-settings")]
15962        if let Some(ref val) = self.rich_text {
15963            val.write_element("w:richText", writer)?;
15964        }
15965        #[cfg(feature = "extra-children")]
15966        {
15967            emit_idx += 1;
15968        }
15969        #[cfg(feature = "extra-children")]
15970        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
15971            extra_iter
15972                .next()
15973                .unwrap()
15974                .node
15975                .write_to(writer)
15976                .map_err(SerializeError::from)?;
15977        }
15978        #[cfg(feature = "wml-settings")]
15979        if let Some(ref val) = self.text {
15980            val.write_element("w:text", writer)?;
15981        }
15982        #[cfg(feature = "extra-children")]
15983        {
15984            emit_idx += 1;
15985        }
15986        #[cfg(feature = "extra-children")]
15987        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
15988            extra_iter
15989                .next()
15990                .unwrap()
15991                .node
15992                .write_to(writer)
15993                .map_err(SerializeError::from)?;
15994        }
15995        #[cfg(feature = "wml-settings")]
15996        if let Some(ref val) = self.citation {
15997            val.write_element("w:citation", writer)?;
15998        }
15999        #[cfg(feature = "extra-children")]
16000        {
16001            emit_idx += 1;
16002        }
16003        #[cfg(feature = "extra-children")]
16004        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
16005            extra_iter
16006                .next()
16007                .unwrap()
16008                .node
16009                .write_to(writer)
16010                .map_err(SerializeError::from)?;
16011        }
16012        #[cfg(feature = "wml-settings")]
16013        if let Some(ref val) = self.group {
16014            val.write_element("w:group", writer)?;
16015        }
16016        #[cfg(feature = "extra-children")]
16017        {
16018            emit_idx += 1;
16019        }
16020        #[cfg(feature = "extra-children")]
16021        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
16022            extra_iter
16023                .next()
16024                .unwrap()
16025                .node
16026                .write_to(writer)
16027                .map_err(SerializeError::from)?;
16028        }
16029        #[cfg(feature = "wml-settings")]
16030        if let Some(ref val) = self.bibliography {
16031            val.write_element("w:bibliography", writer)?;
16032        }
16033        #[cfg(feature = "extra-children")]
16034        {
16035            emit_idx += 1;
16036        }
16037        #[cfg(feature = "extra-children")]
16038        for extra in extra_iter {
16039            extra.node.write_to(writer).map_err(SerializeError::from)?;
16040        }
16041        Ok(())
16042    }
16043
16044    fn is_empty_element(&self) -> bool {
16045        #[cfg(feature = "wml-settings")]
16046        if self.r_pr.is_some() {
16047            return false;
16048        }
16049        #[cfg(feature = "wml-settings")]
16050        if self.alias.is_some() {
16051            return false;
16052        }
16053        #[cfg(feature = "wml-settings")]
16054        if self.tag.is_some() {
16055            return false;
16056        }
16057        #[cfg(feature = "wml-settings")]
16058        if self.id.is_some() {
16059            return false;
16060        }
16061        #[cfg(feature = "wml-settings")]
16062        if self.lock.is_some() {
16063            return false;
16064        }
16065        #[cfg(feature = "wml-settings")]
16066        if self.placeholder.is_some() {
16067            return false;
16068        }
16069        #[cfg(feature = "wml-settings")]
16070        if self.temporary.is_some() {
16071            return false;
16072        }
16073        #[cfg(feature = "wml-settings")]
16074        if self.showing_plc_hdr.is_some() {
16075            return false;
16076        }
16077        #[cfg(feature = "wml-settings")]
16078        if self.data_binding.is_some() {
16079            return false;
16080        }
16081        #[cfg(feature = "wml-settings")]
16082        if self.label.is_some() {
16083            return false;
16084        }
16085        #[cfg(feature = "wml-settings")]
16086        if self.tab_index.is_some() {
16087            return false;
16088        }
16089        #[cfg(feature = "wml-settings")]
16090        if self.equation.is_some() {
16091            return false;
16092        }
16093        #[cfg(feature = "wml-settings")]
16094        if self.combo_box.is_some() {
16095            return false;
16096        }
16097        #[cfg(feature = "wml-settings")]
16098        if self.date.is_some() {
16099            return false;
16100        }
16101        #[cfg(feature = "wml-settings")]
16102        if self.doc_part_obj.is_some() {
16103            return false;
16104        }
16105        #[cfg(feature = "wml-settings")]
16106        if self.doc_part_list.is_some() {
16107            return false;
16108        }
16109        #[cfg(feature = "wml-settings")]
16110        if self.drop_down_list.is_some() {
16111            return false;
16112        }
16113        #[cfg(feature = "wml-settings")]
16114        if self.picture.is_some() {
16115            return false;
16116        }
16117        #[cfg(feature = "wml-settings")]
16118        if self.rich_text.is_some() {
16119            return false;
16120        }
16121        #[cfg(feature = "wml-settings")]
16122        if self.text.is_some() {
16123            return false;
16124        }
16125        #[cfg(feature = "wml-settings")]
16126        if self.citation.is_some() {
16127            return false;
16128        }
16129        #[cfg(feature = "wml-settings")]
16130        if self.group.is_some() {
16131            return false;
16132        }
16133        #[cfg(feature = "wml-settings")]
16134        if self.bibliography.is_some() {
16135            return false;
16136        }
16137        #[cfg(feature = "extra-children")]
16138        if !self.extra_children.is_empty() {
16139            return false;
16140        }
16141        true
16142    }
16143}
16144
16145impl ToXml for CTSdtEndPr {
16146    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
16147        #[cfg(feature = "extra-children")]
16148        let mut extra_iter = self.extra_children.iter().peekable();
16149        #[cfg(feature = "extra-children")]
16150        let mut emit_idx: usize = 0;
16151        #[cfg(feature = "extra-children")]
16152        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
16153            extra_iter
16154                .next()
16155                .unwrap()
16156                .node
16157                .write_to(writer)
16158                .map_err(SerializeError::from)?;
16159        }
16160        #[cfg(feature = "wml-styling")]
16161        if let Some(ref val) = self.r_pr {
16162            val.write_element("w:rPr", writer)?;
16163        }
16164        #[cfg(feature = "extra-children")]
16165        {
16166            emit_idx += 1;
16167        }
16168        #[cfg(feature = "extra-children")]
16169        for extra in extra_iter {
16170            extra.node.write_to(writer).map_err(SerializeError::from)?;
16171        }
16172        Ok(())
16173    }
16174
16175    fn is_empty_element(&self) -> bool {
16176        #[cfg(feature = "wml-styling")]
16177        if self.r_pr.is_some() {
16178            return false;
16179        }
16180        #[cfg(feature = "extra-children")]
16181        if !self.extra_children.is_empty() {
16182            return false;
16183        }
16184        true
16185    }
16186}
16187
16188impl ToXml for RunContentChoice {
16189    fn write_element<W: Write>(
16190        &self,
16191        _tag: &str,
16192        writer: &mut Writer<W>,
16193    ) -> Result<(), SerializeError> {
16194        match self {
16195            Self::CustomXml(inner) => inner.write_element("w:customXml", writer)?,
16196            Self::SmartTag(inner) => inner.write_element("w:smartTag", writer)?,
16197            Self::Sdt(inner) => inner.write_element("w:sdt", writer)?,
16198            Self::Dir(inner) => inner.write_element("w:dir", writer)?,
16199            Self::Bdo(inner) => inner.write_element("w:bdo", writer)?,
16200            Self::R(inner) => inner.write_element("w:r", writer)?,
16201            Self::ProofErr(inner) => inner.write_element("w:proofErr", writer)?,
16202            Self::PermStart(inner) => inner.write_element("w:permStart", writer)?,
16203            Self::PermEnd(inner) => inner.write_element("w:permEnd", writer)?,
16204            Self::BookmarkStart(inner) => inner.write_element("w:bookmarkStart", writer)?,
16205            Self::BookmarkEnd(inner) => inner.write_element("w:bookmarkEnd", writer)?,
16206            Self::MoveFromRangeStart(inner) => {
16207                inner.write_element("w:moveFromRangeStart", writer)?
16208            }
16209            Self::MoveFromRangeEnd(inner) => inner.write_element("w:moveFromRangeEnd", writer)?,
16210            Self::MoveToRangeStart(inner) => inner.write_element("w:moveToRangeStart", writer)?,
16211            Self::MoveToRangeEnd(inner) => inner.write_element("w:moveToRangeEnd", writer)?,
16212            Self::CommentRangeStart(inner) => inner.write_element("w:commentRangeStart", writer)?,
16213            Self::CommentRangeEnd(inner) => inner.write_element("w:commentRangeEnd", writer)?,
16214            Self::CustomXmlInsRangeStart(inner) => {
16215                inner.write_element("w:customXmlInsRangeStart", writer)?
16216            }
16217            Self::CustomXmlInsRangeEnd(inner) => {
16218                inner.write_element("w:customXmlInsRangeEnd", writer)?
16219            }
16220            Self::CustomXmlDelRangeStart(inner) => {
16221                inner.write_element("w:customXmlDelRangeStart", writer)?
16222            }
16223            Self::CustomXmlDelRangeEnd(inner) => {
16224                inner.write_element("w:customXmlDelRangeEnd", writer)?
16225            }
16226            Self::CustomXmlMoveFromRangeStart(inner) => {
16227                inner.write_element("w:customXmlMoveFromRangeStart", writer)?
16228            }
16229            Self::CustomXmlMoveFromRangeEnd(inner) => {
16230                inner.write_element("w:customXmlMoveFromRangeEnd", writer)?
16231            }
16232            Self::CustomXmlMoveToRangeStart(inner) => {
16233                inner.write_element("w:customXmlMoveToRangeStart", writer)?
16234            }
16235            Self::CustomXmlMoveToRangeEnd(inner) => {
16236                inner.write_element("w:customXmlMoveToRangeEnd", writer)?
16237            }
16238            Self::Ins(inner) => inner.write_element("w:ins", writer)?,
16239            Self::Del(inner) => inner.write_element("w:del", writer)?,
16240            Self::MoveFrom(inner) => inner.write_element("w:moveFrom", writer)?,
16241            Self::MoveTo(inner) => inner.write_element("w:moveTo", writer)?,
16242        }
16243        Ok(())
16244    }
16245}
16246
16247impl ToXml for CTDirContentRun {
16248    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
16249        #[allow(unused_mut)]
16250        let mut start = start;
16251        if let Some(ref val) = self.value {
16252            {
16253                let s = val.to_string();
16254                start.push_attribute(("w:val", s.as_str()));
16255            }
16256        }
16257        #[cfg(feature = "extra-attrs")]
16258        for (key, value) in &self.extra_attrs {
16259            start.push_attribute((key.as_str(), value.as_str()));
16260        }
16261        start
16262    }
16263
16264    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
16265        #[cfg(feature = "extra-children")]
16266        let mut extra_iter = self.extra_children.iter().peekable();
16267        #[cfg(feature = "extra-children")]
16268        let mut emit_idx: usize = 0;
16269        for item in &self.paragraph_content {
16270            #[cfg(feature = "extra-children")]
16271            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
16272                extra_iter
16273                    .next()
16274                    .unwrap()
16275                    .node
16276                    .write_to(writer)
16277                    .map_err(SerializeError::from)?;
16278            }
16279            item.write_element("", writer)?;
16280            #[cfg(feature = "extra-children")]
16281            {
16282                emit_idx += 1;
16283            }
16284        }
16285        #[cfg(feature = "extra-children")]
16286        for extra in extra_iter {
16287            extra.node.write_to(writer).map_err(SerializeError::from)?;
16288        }
16289        Ok(())
16290    }
16291
16292    fn is_empty_element(&self) -> bool {
16293        if !self.paragraph_content.is_empty() {
16294            return false;
16295        }
16296        #[cfg(feature = "extra-children")]
16297        if !self.extra_children.is_empty() {
16298            return false;
16299        }
16300        true
16301    }
16302}
16303
16304impl ToXml for CTBdoContentRun {
16305    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
16306        #[allow(unused_mut)]
16307        let mut start = start;
16308        if let Some(ref val) = self.value {
16309            {
16310                let s = val.to_string();
16311                start.push_attribute(("w:val", s.as_str()));
16312            }
16313        }
16314        #[cfg(feature = "extra-attrs")]
16315        for (key, value) in &self.extra_attrs {
16316            start.push_attribute((key.as_str(), value.as_str()));
16317        }
16318        start
16319    }
16320
16321    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
16322        #[cfg(feature = "extra-children")]
16323        let mut extra_iter = self.extra_children.iter().peekable();
16324        #[cfg(feature = "extra-children")]
16325        let mut emit_idx: usize = 0;
16326        for item in &self.paragraph_content {
16327            #[cfg(feature = "extra-children")]
16328            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
16329                extra_iter
16330                    .next()
16331                    .unwrap()
16332                    .node
16333                    .write_to(writer)
16334                    .map_err(SerializeError::from)?;
16335            }
16336            item.write_element("", writer)?;
16337            #[cfg(feature = "extra-children")]
16338            {
16339                emit_idx += 1;
16340            }
16341        }
16342        #[cfg(feature = "extra-children")]
16343        for extra in extra_iter {
16344            extra.node.write_to(writer).map_err(SerializeError::from)?;
16345        }
16346        Ok(())
16347    }
16348
16349    fn is_empty_element(&self) -> bool {
16350        if !self.paragraph_content.is_empty() {
16351            return false;
16352        }
16353        #[cfg(feature = "extra-children")]
16354        if !self.extra_children.is_empty() {
16355            return false;
16356        }
16357        true
16358    }
16359}
16360
16361impl ToXml for CTSdtContentRun {
16362    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
16363        #[cfg(feature = "extra-children")]
16364        let mut extra_iter = self.extra_children.iter().peekable();
16365        #[cfg(feature = "extra-children")]
16366        let mut emit_idx: usize = 0;
16367        for item in &self.paragraph_content {
16368            #[cfg(feature = "extra-children")]
16369            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
16370                extra_iter
16371                    .next()
16372                    .unwrap()
16373                    .node
16374                    .write_to(writer)
16375                    .map_err(SerializeError::from)?;
16376            }
16377            item.write_element("", writer)?;
16378            #[cfg(feature = "extra-children")]
16379            {
16380                emit_idx += 1;
16381            }
16382        }
16383        #[cfg(feature = "extra-children")]
16384        for extra in extra_iter {
16385            extra.node.write_to(writer).map_err(SerializeError::from)?;
16386        }
16387        Ok(())
16388    }
16389
16390    fn is_empty_element(&self) -> bool {
16391        if !self.paragraph_content.is_empty() {
16392            return false;
16393        }
16394        #[cfg(feature = "extra-children")]
16395        if !self.extra_children.is_empty() {
16396            return false;
16397        }
16398        true
16399    }
16400}
16401
16402impl ToXml for BlockContentChoice {
16403    fn write_element<W: Write>(
16404        &self,
16405        _tag: &str,
16406        writer: &mut Writer<W>,
16407    ) -> Result<(), SerializeError> {
16408        match self {
16409            Self::CustomXml(inner) => inner.write_element("w:customXml", writer)?,
16410            Self::Sdt(inner) => inner.write_element("w:sdt", writer)?,
16411            Self::P(inner) => inner.write_element("w:p", writer)?,
16412            Self::Tbl(inner) => inner.write_element("w:tbl", writer)?,
16413            Self::ProofErr(inner) => inner.write_element("w:proofErr", writer)?,
16414            Self::PermStart(inner) => inner.write_element("w:permStart", writer)?,
16415            Self::PermEnd(inner) => inner.write_element("w:permEnd", writer)?,
16416            Self::BookmarkStart(inner) => inner.write_element("w:bookmarkStart", writer)?,
16417            Self::BookmarkEnd(inner) => inner.write_element("w:bookmarkEnd", writer)?,
16418            Self::MoveFromRangeStart(inner) => {
16419                inner.write_element("w:moveFromRangeStart", writer)?
16420            }
16421            Self::MoveFromRangeEnd(inner) => inner.write_element("w:moveFromRangeEnd", writer)?,
16422            Self::MoveToRangeStart(inner) => inner.write_element("w:moveToRangeStart", writer)?,
16423            Self::MoveToRangeEnd(inner) => inner.write_element("w:moveToRangeEnd", writer)?,
16424            Self::CommentRangeStart(inner) => inner.write_element("w:commentRangeStart", writer)?,
16425            Self::CommentRangeEnd(inner) => inner.write_element("w:commentRangeEnd", writer)?,
16426            Self::CustomXmlInsRangeStart(inner) => {
16427                inner.write_element("w:customXmlInsRangeStart", writer)?
16428            }
16429            Self::CustomXmlInsRangeEnd(inner) => {
16430                inner.write_element("w:customXmlInsRangeEnd", writer)?
16431            }
16432            Self::CustomXmlDelRangeStart(inner) => {
16433                inner.write_element("w:customXmlDelRangeStart", writer)?
16434            }
16435            Self::CustomXmlDelRangeEnd(inner) => {
16436                inner.write_element("w:customXmlDelRangeEnd", writer)?
16437            }
16438            Self::CustomXmlMoveFromRangeStart(inner) => {
16439                inner.write_element("w:customXmlMoveFromRangeStart", writer)?
16440            }
16441            Self::CustomXmlMoveFromRangeEnd(inner) => {
16442                inner.write_element("w:customXmlMoveFromRangeEnd", writer)?
16443            }
16444            Self::CustomXmlMoveToRangeStart(inner) => {
16445                inner.write_element("w:customXmlMoveToRangeStart", writer)?
16446            }
16447            Self::CustomXmlMoveToRangeEnd(inner) => {
16448                inner.write_element("w:customXmlMoveToRangeEnd", writer)?
16449            }
16450            Self::Ins(inner) => inner.write_element("w:ins", writer)?,
16451            Self::Del(inner) => inner.write_element("w:del", writer)?,
16452            Self::MoveFrom(inner) => inner.write_element("w:moveFrom", writer)?,
16453            Self::MoveTo(inner) => inner.write_element("w:moveTo", writer)?,
16454        }
16455        Ok(())
16456    }
16457}
16458
16459impl ToXml for CTSdtContentBlock {
16460    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
16461        #[cfg(feature = "extra-children")]
16462        let mut extra_iter = self.extra_children.iter().peekable();
16463        #[cfg(feature = "extra-children")]
16464        let mut emit_idx: usize = 0;
16465        for item in &self.block_content {
16466            #[cfg(feature = "extra-children")]
16467            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
16468                extra_iter
16469                    .next()
16470                    .unwrap()
16471                    .node
16472                    .write_to(writer)
16473                    .map_err(SerializeError::from)?;
16474            }
16475            item.write_element("", writer)?;
16476            #[cfg(feature = "extra-children")]
16477            {
16478                emit_idx += 1;
16479            }
16480        }
16481        #[cfg(feature = "extra-children")]
16482        for extra in extra_iter {
16483            extra.node.write_to(writer).map_err(SerializeError::from)?;
16484        }
16485        Ok(())
16486    }
16487
16488    fn is_empty_element(&self) -> bool {
16489        if !self.block_content.is_empty() {
16490            return false;
16491        }
16492        #[cfg(feature = "extra-children")]
16493        if !self.extra_children.is_empty() {
16494            return false;
16495        }
16496        true
16497    }
16498}
16499
16500impl ToXml for RowContent {
16501    fn write_element<W: Write>(
16502        &self,
16503        _tag: &str,
16504        writer: &mut Writer<W>,
16505    ) -> Result<(), SerializeError> {
16506        match self {
16507            Self::Tr(inner) => inner.write_element("w:tr", writer)?,
16508            Self::CustomXml(inner) => inner.write_element("w:customXml", writer)?,
16509            Self::Sdt(inner) => inner.write_element("w:sdt", writer)?,
16510            Self::ProofErr(inner) => inner.write_element("w:proofErr", writer)?,
16511            Self::PermStart(inner) => inner.write_element("w:permStart", writer)?,
16512            Self::PermEnd(inner) => inner.write_element("w:permEnd", writer)?,
16513            Self::BookmarkStart(inner) => inner.write_element("w:bookmarkStart", writer)?,
16514            Self::BookmarkEnd(inner) => inner.write_element("w:bookmarkEnd", writer)?,
16515            Self::MoveFromRangeStart(inner) => {
16516                inner.write_element("w:moveFromRangeStart", writer)?
16517            }
16518            Self::MoveFromRangeEnd(inner) => inner.write_element("w:moveFromRangeEnd", writer)?,
16519            Self::MoveToRangeStart(inner) => inner.write_element("w:moveToRangeStart", writer)?,
16520            Self::MoveToRangeEnd(inner) => inner.write_element("w:moveToRangeEnd", writer)?,
16521            Self::CommentRangeStart(inner) => inner.write_element("w:commentRangeStart", writer)?,
16522            Self::CommentRangeEnd(inner) => inner.write_element("w:commentRangeEnd", writer)?,
16523            Self::CustomXmlInsRangeStart(inner) => {
16524                inner.write_element("w:customXmlInsRangeStart", writer)?
16525            }
16526            Self::CustomXmlInsRangeEnd(inner) => {
16527                inner.write_element("w:customXmlInsRangeEnd", writer)?
16528            }
16529            Self::CustomXmlDelRangeStart(inner) => {
16530                inner.write_element("w:customXmlDelRangeStart", writer)?
16531            }
16532            Self::CustomXmlDelRangeEnd(inner) => {
16533                inner.write_element("w:customXmlDelRangeEnd", writer)?
16534            }
16535            Self::CustomXmlMoveFromRangeStart(inner) => {
16536                inner.write_element("w:customXmlMoveFromRangeStart", writer)?
16537            }
16538            Self::CustomXmlMoveFromRangeEnd(inner) => {
16539                inner.write_element("w:customXmlMoveFromRangeEnd", writer)?
16540            }
16541            Self::CustomXmlMoveToRangeStart(inner) => {
16542                inner.write_element("w:customXmlMoveToRangeStart", writer)?
16543            }
16544            Self::CustomXmlMoveToRangeEnd(inner) => {
16545                inner.write_element("w:customXmlMoveToRangeEnd", writer)?
16546            }
16547            Self::Ins(inner) => inner.write_element("w:ins", writer)?,
16548            Self::Del(inner) => inner.write_element("w:del", writer)?,
16549            Self::MoveFrom(inner) => inner.write_element("w:moveFrom", writer)?,
16550            Self::MoveTo(inner) => inner.write_element("w:moveTo", writer)?,
16551        }
16552        Ok(())
16553    }
16554}
16555
16556impl ToXml for CTSdtContentRow {
16557    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
16558        #[cfg(feature = "extra-children")]
16559        let mut extra_iter = self.extra_children.iter().peekable();
16560        #[cfg(feature = "extra-children")]
16561        let mut emit_idx: usize = 0;
16562        for item in &self.rows {
16563            #[cfg(feature = "extra-children")]
16564            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
16565                extra_iter
16566                    .next()
16567                    .unwrap()
16568                    .node
16569                    .write_to(writer)
16570                    .map_err(SerializeError::from)?;
16571            }
16572            item.write_element("", writer)?;
16573            #[cfg(feature = "extra-children")]
16574            {
16575                emit_idx += 1;
16576            }
16577        }
16578        #[cfg(feature = "extra-children")]
16579        for extra in extra_iter {
16580            extra.node.write_to(writer).map_err(SerializeError::from)?;
16581        }
16582        Ok(())
16583    }
16584
16585    fn is_empty_element(&self) -> bool {
16586        if !self.rows.is_empty() {
16587            return false;
16588        }
16589        #[cfg(feature = "extra-children")]
16590        if !self.extra_children.is_empty() {
16591            return false;
16592        }
16593        true
16594    }
16595}
16596
16597impl ToXml for CellContent {
16598    fn write_element<W: Write>(
16599        &self,
16600        _tag: &str,
16601        writer: &mut Writer<W>,
16602    ) -> Result<(), SerializeError> {
16603        match self {
16604            Self::Tc(inner) => inner.write_element("w:tc", writer)?,
16605            Self::CustomXml(inner) => inner.write_element("w:customXml", writer)?,
16606            Self::Sdt(inner) => inner.write_element("w:sdt", writer)?,
16607            Self::ProofErr(inner) => inner.write_element("w:proofErr", writer)?,
16608            Self::PermStart(inner) => inner.write_element("w:permStart", writer)?,
16609            Self::PermEnd(inner) => inner.write_element("w:permEnd", writer)?,
16610            Self::BookmarkStart(inner) => inner.write_element("w:bookmarkStart", writer)?,
16611            Self::BookmarkEnd(inner) => inner.write_element("w:bookmarkEnd", writer)?,
16612            Self::MoveFromRangeStart(inner) => {
16613                inner.write_element("w:moveFromRangeStart", writer)?
16614            }
16615            Self::MoveFromRangeEnd(inner) => inner.write_element("w:moveFromRangeEnd", writer)?,
16616            Self::MoveToRangeStart(inner) => inner.write_element("w:moveToRangeStart", writer)?,
16617            Self::MoveToRangeEnd(inner) => inner.write_element("w:moveToRangeEnd", writer)?,
16618            Self::CommentRangeStart(inner) => inner.write_element("w:commentRangeStart", writer)?,
16619            Self::CommentRangeEnd(inner) => inner.write_element("w:commentRangeEnd", writer)?,
16620            Self::CustomXmlInsRangeStart(inner) => {
16621                inner.write_element("w:customXmlInsRangeStart", writer)?
16622            }
16623            Self::CustomXmlInsRangeEnd(inner) => {
16624                inner.write_element("w:customXmlInsRangeEnd", writer)?
16625            }
16626            Self::CustomXmlDelRangeStart(inner) => {
16627                inner.write_element("w:customXmlDelRangeStart", writer)?
16628            }
16629            Self::CustomXmlDelRangeEnd(inner) => {
16630                inner.write_element("w:customXmlDelRangeEnd", writer)?
16631            }
16632            Self::CustomXmlMoveFromRangeStart(inner) => {
16633                inner.write_element("w:customXmlMoveFromRangeStart", writer)?
16634            }
16635            Self::CustomXmlMoveFromRangeEnd(inner) => {
16636                inner.write_element("w:customXmlMoveFromRangeEnd", writer)?
16637            }
16638            Self::CustomXmlMoveToRangeStart(inner) => {
16639                inner.write_element("w:customXmlMoveToRangeStart", writer)?
16640            }
16641            Self::CustomXmlMoveToRangeEnd(inner) => {
16642                inner.write_element("w:customXmlMoveToRangeEnd", writer)?
16643            }
16644            Self::Ins(inner) => inner.write_element("w:ins", writer)?,
16645            Self::Del(inner) => inner.write_element("w:del", writer)?,
16646            Self::MoveFrom(inner) => inner.write_element("w:moveFrom", writer)?,
16647            Self::MoveTo(inner) => inner.write_element("w:moveTo", writer)?,
16648        }
16649        Ok(())
16650    }
16651}
16652
16653impl ToXml for CTSdtContentCell {
16654    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
16655        #[cfg(feature = "extra-children")]
16656        let mut extra_iter = self.extra_children.iter().peekable();
16657        #[cfg(feature = "extra-children")]
16658        let mut emit_idx: usize = 0;
16659        for item in &self.cells {
16660            #[cfg(feature = "extra-children")]
16661            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
16662                extra_iter
16663                    .next()
16664                    .unwrap()
16665                    .node
16666                    .write_to(writer)
16667                    .map_err(SerializeError::from)?;
16668            }
16669            item.write_element("", writer)?;
16670            #[cfg(feature = "extra-children")]
16671            {
16672                emit_idx += 1;
16673            }
16674        }
16675        #[cfg(feature = "extra-children")]
16676        for extra in extra_iter {
16677            extra.node.write_to(writer).map_err(SerializeError::from)?;
16678        }
16679        Ok(())
16680    }
16681
16682    fn is_empty_element(&self) -> bool {
16683        if !self.cells.is_empty() {
16684            return false;
16685        }
16686        #[cfg(feature = "extra-children")]
16687        if !self.extra_children.is_empty() {
16688            return false;
16689        }
16690        true
16691    }
16692}
16693
16694impl ToXml for CTSdtBlock {
16695    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
16696        #[cfg(feature = "extra-children")]
16697        let mut extra_iter = self.extra_children.iter().peekable();
16698        #[cfg(feature = "extra-children")]
16699        let mut emit_idx: usize = 0;
16700        #[cfg(feature = "extra-children")]
16701        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
16702            extra_iter
16703                .next()
16704                .unwrap()
16705                .node
16706                .write_to(writer)
16707                .map_err(SerializeError::from)?;
16708        }
16709        #[cfg(feature = "wml-settings")]
16710        if let Some(ref val) = self.sdt_pr {
16711            val.write_element("w:sdtPr", writer)?;
16712        }
16713        #[cfg(feature = "extra-children")]
16714        {
16715            emit_idx += 1;
16716        }
16717        #[cfg(feature = "extra-children")]
16718        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
16719            extra_iter
16720                .next()
16721                .unwrap()
16722                .node
16723                .write_to(writer)
16724                .map_err(SerializeError::from)?;
16725        }
16726        #[cfg(feature = "wml-settings")]
16727        if let Some(ref val) = self.sdt_end_pr {
16728            val.write_element("w:sdtEndPr", writer)?;
16729        }
16730        #[cfg(feature = "extra-children")]
16731        {
16732            emit_idx += 1;
16733        }
16734        #[cfg(feature = "extra-children")]
16735        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
16736            extra_iter
16737                .next()
16738                .unwrap()
16739                .node
16740                .write_to(writer)
16741                .map_err(SerializeError::from)?;
16742        }
16743        if let Some(ref val) = self.sdt_content {
16744            val.write_element("w:sdtContent", writer)?;
16745        }
16746        #[cfg(feature = "extra-children")]
16747        {
16748            emit_idx += 1;
16749        }
16750        #[cfg(feature = "extra-children")]
16751        for extra in extra_iter {
16752            extra.node.write_to(writer).map_err(SerializeError::from)?;
16753        }
16754        Ok(())
16755    }
16756
16757    fn is_empty_element(&self) -> bool {
16758        #[cfg(feature = "wml-settings")]
16759        if self.sdt_pr.is_some() {
16760            return false;
16761        }
16762        #[cfg(feature = "wml-settings")]
16763        if self.sdt_end_pr.is_some() {
16764            return false;
16765        }
16766        if self.sdt_content.is_some() {
16767            return false;
16768        }
16769        #[cfg(feature = "extra-children")]
16770        if !self.extra_children.is_empty() {
16771            return false;
16772        }
16773        true
16774    }
16775}
16776
16777impl ToXml for CTSdtRun {
16778    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
16779        #[cfg(feature = "extra-children")]
16780        let mut extra_iter = self.extra_children.iter().peekable();
16781        #[cfg(feature = "extra-children")]
16782        let mut emit_idx: usize = 0;
16783        #[cfg(feature = "extra-children")]
16784        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
16785            extra_iter
16786                .next()
16787                .unwrap()
16788                .node
16789                .write_to(writer)
16790                .map_err(SerializeError::from)?;
16791        }
16792        #[cfg(feature = "wml-settings")]
16793        if let Some(ref val) = self.sdt_pr {
16794            val.write_element("w:sdtPr", writer)?;
16795        }
16796        #[cfg(feature = "extra-children")]
16797        {
16798            emit_idx += 1;
16799        }
16800        #[cfg(feature = "extra-children")]
16801        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
16802            extra_iter
16803                .next()
16804                .unwrap()
16805                .node
16806                .write_to(writer)
16807                .map_err(SerializeError::from)?;
16808        }
16809        #[cfg(feature = "wml-settings")]
16810        if let Some(ref val) = self.sdt_end_pr {
16811            val.write_element("w:sdtEndPr", writer)?;
16812        }
16813        #[cfg(feature = "extra-children")]
16814        {
16815            emit_idx += 1;
16816        }
16817        #[cfg(feature = "extra-children")]
16818        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
16819            extra_iter
16820                .next()
16821                .unwrap()
16822                .node
16823                .write_to(writer)
16824                .map_err(SerializeError::from)?;
16825        }
16826        if let Some(ref val) = self.sdt_content {
16827            val.write_element("w:sdtContent", writer)?;
16828        }
16829        #[cfg(feature = "extra-children")]
16830        {
16831            emit_idx += 1;
16832        }
16833        #[cfg(feature = "extra-children")]
16834        for extra in extra_iter {
16835            extra.node.write_to(writer).map_err(SerializeError::from)?;
16836        }
16837        Ok(())
16838    }
16839
16840    fn is_empty_element(&self) -> bool {
16841        #[cfg(feature = "wml-settings")]
16842        if self.sdt_pr.is_some() {
16843            return false;
16844        }
16845        #[cfg(feature = "wml-settings")]
16846        if self.sdt_end_pr.is_some() {
16847            return false;
16848        }
16849        if self.sdt_content.is_some() {
16850            return false;
16851        }
16852        #[cfg(feature = "extra-children")]
16853        if !self.extra_children.is_empty() {
16854            return false;
16855        }
16856        true
16857    }
16858}
16859
16860impl ToXml for CTSdtCell {
16861    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
16862        #[cfg(feature = "extra-children")]
16863        let mut extra_iter = self.extra_children.iter().peekable();
16864        #[cfg(feature = "extra-children")]
16865        let mut emit_idx: usize = 0;
16866        #[cfg(feature = "extra-children")]
16867        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
16868            extra_iter
16869                .next()
16870                .unwrap()
16871                .node
16872                .write_to(writer)
16873                .map_err(SerializeError::from)?;
16874        }
16875        #[cfg(feature = "wml-settings")]
16876        if let Some(ref val) = self.sdt_pr {
16877            val.write_element("w:sdtPr", writer)?;
16878        }
16879        #[cfg(feature = "extra-children")]
16880        {
16881            emit_idx += 1;
16882        }
16883        #[cfg(feature = "extra-children")]
16884        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
16885            extra_iter
16886                .next()
16887                .unwrap()
16888                .node
16889                .write_to(writer)
16890                .map_err(SerializeError::from)?;
16891        }
16892        #[cfg(feature = "wml-settings")]
16893        if let Some(ref val) = self.sdt_end_pr {
16894            val.write_element("w:sdtEndPr", writer)?;
16895        }
16896        #[cfg(feature = "extra-children")]
16897        {
16898            emit_idx += 1;
16899        }
16900        #[cfg(feature = "extra-children")]
16901        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
16902            extra_iter
16903                .next()
16904                .unwrap()
16905                .node
16906                .write_to(writer)
16907                .map_err(SerializeError::from)?;
16908        }
16909        if let Some(ref val) = self.sdt_content {
16910            val.write_element("w:sdtContent", writer)?;
16911        }
16912        #[cfg(feature = "extra-children")]
16913        {
16914            emit_idx += 1;
16915        }
16916        #[cfg(feature = "extra-children")]
16917        for extra in extra_iter {
16918            extra.node.write_to(writer).map_err(SerializeError::from)?;
16919        }
16920        Ok(())
16921    }
16922
16923    fn is_empty_element(&self) -> bool {
16924        #[cfg(feature = "wml-settings")]
16925        if self.sdt_pr.is_some() {
16926            return false;
16927        }
16928        #[cfg(feature = "wml-settings")]
16929        if self.sdt_end_pr.is_some() {
16930            return false;
16931        }
16932        if self.sdt_content.is_some() {
16933            return false;
16934        }
16935        #[cfg(feature = "extra-children")]
16936        if !self.extra_children.is_empty() {
16937            return false;
16938        }
16939        true
16940    }
16941}
16942
16943impl ToXml for CTSdtRow {
16944    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
16945        #[cfg(feature = "extra-children")]
16946        let mut extra_iter = self.extra_children.iter().peekable();
16947        #[cfg(feature = "extra-children")]
16948        let mut emit_idx: usize = 0;
16949        #[cfg(feature = "extra-children")]
16950        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
16951            extra_iter
16952                .next()
16953                .unwrap()
16954                .node
16955                .write_to(writer)
16956                .map_err(SerializeError::from)?;
16957        }
16958        #[cfg(feature = "wml-settings")]
16959        if let Some(ref val) = self.sdt_pr {
16960            val.write_element("w:sdtPr", writer)?;
16961        }
16962        #[cfg(feature = "extra-children")]
16963        {
16964            emit_idx += 1;
16965        }
16966        #[cfg(feature = "extra-children")]
16967        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
16968            extra_iter
16969                .next()
16970                .unwrap()
16971                .node
16972                .write_to(writer)
16973                .map_err(SerializeError::from)?;
16974        }
16975        #[cfg(feature = "wml-settings")]
16976        if let Some(ref val) = self.sdt_end_pr {
16977            val.write_element("w:sdtEndPr", writer)?;
16978        }
16979        #[cfg(feature = "extra-children")]
16980        {
16981            emit_idx += 1;
16982        }
16983        #[cfg(feature = "extra-children")]
16984        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
16985            extra_iter
16986                .next()
16987                .unwrap()
16988                .node
16989                .write_to(writer)
16990                .map_err(SerializeError::from)?;
16991        }
16992        if let Some(ref val) = self.sdt_content {
16993            val.write_element("w:sdtContent", writer)?;
16994        }
16995        #[cfg(feature = "extra-children")]
16996        {
16997            emit_idx += 1;
16998        }
16999        #[cfg(feature = "extra-children")]
17000        for extra in extra_iter {
17001            extra.node.write_to(writer).map_err(SerializeError::from)?;
17002        }
17003        Ok(())
17004    }
17005
17006    fn is_empty_element(&self) -> bool {
17007        #[cfg(feature = "wml-settings")]
17008        if self.sdt_pr.is_some() {
17009            return false;
17010        }
17011        #[cfg(feature = "wml-settings")]
17012        if self.sdt_end_pr.is_some() {
17013            return false;
17014        }
17015        if self.sdt_content.is_some() {
17016            return false;
17017        }
17018        #[cfg(feature = "extra-children")]
17019        if !self.extra_children.is_empty() {
17020            return false;
17021        }
17022        true
17023    }
17024}
17025
17026impl ToXml for CTAttr {
17027    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
17028        #[allow(unused_mut)]
17029        let mut start = start;
17030        if let Some(ref val) = self.uri {
17031            start.push_attribute(("w:uri", val.as_str()));
17032        }
17033        {
17034            let val = &self.name;
17035            start.push_attribute(("w:name", val.as_str()));
17036        }
17037        {
17038            let val = &self.value;
17039            start.push_attribute(("w:val", val.as_str()));
17040        }
17041        #[cfg(feature = "extra-attrs")]
17042        for (key, value) in &self.extra_attrs {
17043            start.push_attribute((key.as_str(), value.as_str()));
17044        }
17045        start
17046    }
17047
17048    fn is_empty_element(&self) -> bool {
17049        true
17050    }
17051}
17052
17053impl ToXml for CTCustomXmlRun {
17054    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
17055        #[allow(unused_mut)]
17056        let mut start = start;
17057        #[cfg(feature = "wml-settings")]
17058        if let Some(ref val) = self.uri {
17059            start.push_attribute(("w:uri", val.as_str()));
17060        }
17061        #[cfg(feature = "wml-settings")]
17062        {
17063            let val = &self.element;
17064            start.push_attribute(("w:element", val.as_str()));
17065        }
17066        #[cfg(feature = "extra-attrs")]
17067        for (key, value) in &self.extra_attrs {
17068            start.push_attribute((key.as_str(), value.as_str()));
17069        }
17070        start
17071    }
17072
17073    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
17074        #[cfg(feature = "extra-children")]
17075        let mut extra_iter = self.extra_children.iter().peekable();
17076        #[cfg(feature = "extra-children")]
17077        let mut emit_idx: usize = 0;
17078        #[cfg(feature = "extra-children")]
17079        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
17080            extra_iter
17081                .next()
17082                .unwrap()
17083                .node
17084                .write_to(writer)
17085                .map_err(SerializeError::from)?;
17086        }
17087        #[cfg(feature = "wml-settings")]
17088        if let Some(ref val) = self.custom_xml_pr {
17089            val.write_element("w:customXmlPr", writer)?;
17090        }
17091        #[cfg(feature = "extra-children")]
17092        {
17093            emit_idx += 1;
17094        }
17095        for item in &self.paragraph_content {
17096            #[cfg(feature = "extra-children")]
17097            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
17098                extra_iter
17099                    .next()
17100                    .unwrap()
17101                    .node
17102                    .write_to(writer)
17103                    .map_err(SerializeError::from)?;
17104            }
17105            item.write_element("", writer)?;
17106            #[cfg(feature = "extra-children")]
17107            {
17108                emit_idx += 1;
17109            }
17110        }
17111        #[cfg(feature = "extra-children")]
17112        for extra in extra_iter {
17113            extra.node.write_to(writer).map_err(SerializeError::from)?;
17114        }
17115        Ok(())
17116    }
17117
17118    fn is_empty_element(&self) -> bool {
17119        #[cfg(feature = "wml-settings")]
17120        if self.custom_xml_pr.is_some() {
17121            return false;
17122        }
17123        if !self.paragraph_content.is_empty() {
17124            return false;
17125        }
17126        #[cfg(feature = "extra-children")]
17127        if !self.extra_children.is_empty() {
17128            return false;
17129        }
17130        true
17131    }
17132}
17133
17134impl ToXml for CTSmartTagRun {
17135    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
17136        #[allow(unused_mut)]
17137        let mut start = start;
17138        #[cfg(feature = "wml-settings")]
17139        if let Some(ref val) = self.uri {
17140            start.push_attribute(("w:uri", val.as_str()));
17141        }
17142        #[cfg(feature = "wml-settings")]
17143        {
17144            let val = &self.element;
17145            start.push_attribute(("w:element", val.as_str()));
17146        }
17147        #[cfg(feature = "extra-attrs")]
17148        for (key, value) in &self.extra_attrs {
17149            start.push_attribute((key.as_str(), value.as_str()));
17150        }
17151        start
17152    }
17153
17154    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
17155        #[cfg(feature = "extra-children")]
17156        let mut extra_iter = self.extra_children.iter().peekable();
17157        #[cfg(feature = "extra-children")]
17158        let mut emit_idx: usize = 0;
17159        #[cfg(feature = "extra-children")]
17160        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
17161            extra_iter
17162                .next()
17163                .unwrap()
17164                .node
17165                .write_to(writer)
17166                .map_err(SerializeError::from)?;
17167        }
17168        #[cfg(feature = "wml-settings")]
17169        if let Some(ref val) = self.smart_tag_pr {
17170            val.write_element("w:smartTagPr", writer)?;
17171        }
17172        #[cfg(feature = "extra-children")]
17173        {
17174            emit_idx += 1;
17175        }
17176        for item in &self.paragraph_content {
17177            #[cfg(feature = "extra-children")]
17178            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
17179                extra_iter
17180                    .next()
17181                    .unwrap()
17182                    .node
17183                    .write_to(writer)
17184                    .map_err(SerializeError::from)?;
17185            }
17186            item.write_element("", writer)?;
17187            #[cfg(feature = "extra-children")]
17188            {
17189                emit_idx += 1;
17190            }
17191        }
17192        #[cfg(feature = "extra-children")]
17193        for extra in extra_iter {
17194            extra.node.write_to(writer).map_err(SerializeError::from)?;
17195        }
17196        Ok(())
17197    }
17198
17199    fn is_empty_element(&self) -> bool {
17200        #[cfg(feature = "wml-settings")]
17201        if self.smart_tag_pr.is_some() {
17202            return false;
17203        }
17204        if !self.paragraph_content.is_empty() {
17205            return false;
17206        }
17207        #[cfg(feature = "extra-children")]
17208        if !self.extra_children.is_empty() {
17209            return false;
17210        }
17211        true
17212    }
17213}
17214
17215impl ToXml for CTCustomXmlBlock {
17216    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
17217        #[allow(unused_mut)]
17218        let mut start = start;
17219        #[cfg(feature = "wml-settings")]
17220        if let Some(ref val) = self.uri {
17221            start.push_attribute(("w:uri", val.as_str()));
17222        }
17223        #[cfg(feature = "wml-settings")]
17224        {
17225            let val = &self.element;
17226            start.push_attribute(("w:element", val.as_str()));
17227        }
17228        #[cfg(feature = "extra-attrs")]
17229        for (key, value) in &self.extra_attrs {
17230            start.push_attribute((key.as_str(), value.as_str()));
17231        }
17232        start
17233    }
17234
17235    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
17236        #[cfg(feature = "extra-children")]
17237        let mut extra_iter = self.extra_children.iter().peekable();
17238        #[cfg(feature = "extra-children")]
17239        let mut emit_idx: usize = 0;
17240        #[cfg(feature = "extra-children")]
17241        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
17242            extra_iter
17243                .next()
17244                .unwrap()
17245                .node
17246                .write_to(writer)
17247                .map_err(SerializeError::from)?;
17248        }
17249        #[cfg(feature = "wml-settings")]
17250        if let Some(ref val) = self.custom_xml_pr {
17251            val.write_element("w:customXmlPr", writer)?;
17252        }
17253        #[cfg(feature = "extra-children")]
17254        {
17255            emit_idx += 1;
17256        }
17257        for item in &self.block_content {
17258            #[cfg(feature = "extra-children")]
17259            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
17260                extra_iter
17261                    .next()
17262                    .unwrap()
17263                    .node
17264                    .write_to(writer)
17265                    .map_err(SerializeError::from)?;
17266            }
17267            item.write_element("", writer)?;
17268            #[cfg(feature = "extra-children")]
17269            {
17270                emit_idx += 1;
17271            }
17272        }
17273        #[cfg(feature = "extra-children")]
17274        for extra in extra_iter {
17275            extra.node.write_to(writer).map_err(SerializeError::from)?;
17276        }
17277        Ok(())
17278    }
17279
17280    fn is_empty_element(&self) -> bool {
17281        #[cfg(feature = "wml-settings")]
17282        if self.custom_xml_pr.is_some() {
17283            return false;
17284        }
17285        if !self.block_content.is_empty() {
17286            return false;
17287        }
17288        #[cfg(feature = "extra-children")]
17289        if !self.extra_children.is_empty() {
17290            return false;
17291        }
17292        true
17293    }
17294}
17295
17296impl ToXml for CTCustomXmlPr {
17297    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
17298        #[cfg(feature = "extra-children")]
17299        let mut extra_iter = self.extra_children.iter().peekable();
17300        #[cfg(feature = "extra-children")]
17301        let mut emit_idx: usize = 0;
17302        #[cfg(feature = "extra-children")]
17303        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
17304            extra_iter
17305                .next()
17306                .unwrap()
17307                .node
17308                .write_to(writer)
17309                .map_err(SerializeError::from)?;
17310        }
17311        #[cfg(feature = "wml-settings")]
17312        if let Some(ref val) = self.placeholder {
17313            val.write_element("w:placeholder", writer)?;
17314        }
17315        #[cfg(feature = "extra-children")]
17316        {
17317            emit_idx += 1;
17318        }
17319        #[cfg(feature = "wml-settings")]
17320        for item in &self.attr {
17321            #[cfg(feature = "extra-children")]
17322            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
17323                extra_iter
17324                    .next()
17325                    .unwrap()
17326                    .node
17327                    .write_to(writer)
17328                    .map_err(SerializeError::from)?;
17329            }
17330            item.write_element("w:attr", writer)?;
17331            #[cfg(feature = "extra-children")]
17332            {
17333                emit_idx += 1;
17334            }
17335        }
17336        #[cfg(feature = "extra-children")]
17337        for extra in extra_iter {
17338            extra.node.write_to(writer).map_err(SerializeError::from)?;
17339        }
17340        Ok(())
17341    }
17342
17343    fn is_empty_element(&self) -> bool {
17344        #[cfg(feature = "wml-settings")]
17345        if self.placeholder.is_some() {
17346            return false;
17347        }
17348        #[cfg(feature = "wml-settings")]
17349        if !self.attr.is_empty() {
17350            return false;
17351        }
17352        #[cfg(feature = "extra-children")]
17353        if !self.extra_children.is_empty() {
17354            return false;
17355        }
17356        true
17357    }
17358}
17359
17360impl ToXml for CTCustomXmlRow {
17361    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
17362        #[allow(unused_mut)]
17363        let mut start = start;
17364        #[cfg(feature = "wml-settings")]
17365        if let Some(ref val) = self.uri {
17366            start.push_attribute(("w:uri", val.as_str()));
17367        }
17368        #[cfg(feature = "wml-settings")]
17369        {
17370            let val = &self.element;
17371            start.push_attribute(("w:element", val.as_str()));
17372        }
17373        #[cfg(feature = "extra-attrs")]
17374        for (key, value) in &self.extra_attrs {
17375            start.push_attribute((key.as_str(), value.as_str()));
17376        }
17377        start
17378    }
17379
17380    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
17381        #[cfg(feature = "extra-children")]
17382        let mut extra_iter = self.extra_children.iter().peekable();
17383        #[cfg(feature = "extra-children")]
17384        let mut emit_idx: usize = 0;
17385        #[cfg(feature = "extra-children")]
17386        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
17387            extra_iter
17388                .next()
17389                .unwrap()
17390                .node
17391                .write_to(writer)
17392                .map_err(SerializeError::from)?;
17393        }
17394        #[cfg(feature = "wml-settings")]
17395        if let Some(ref val) = self.custom_xml_pr {
17396            val.write_element("w:customXmlPr", writer)?;
17397        }
17398        #[cfg(feature = "extra-children")]
17399        {
17400            emit_idx += 1;
17401        }
17402        for item in &self.rows {
17403            #[cfg(feature = "extra-children")]
17404            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
17405                extra_iter
17406                    .next()
17407                    .unwrap()
17408                    .node
17409                    .write_to(writer)
17410                    .map_err(SerializeError::from)?;
17411            }
17412            item.write_element("", writer)?;
17413            #[cfg(feature = "extra-children")]
17414            {
17415                emit_idx += 1;
17416            }
17417        }
17418        #[cfg(feature = "extra-children")]
17419        for extra in extra_iter {
17420            extra.node.write_to(writer).map_err(SerializeError::from)?;
17421        }
17422        Ok(())
17423    }
17424
17425    fn is_empty_element(&self) -> bool {
17426        #[cfg(feature = "wml-settings")]
17427        if self.custom_xml_pr.is_some() {
17428            return false;
17429        }
17430        if !self.rows.is_empty() {
17431            return false;
17432        }
17433        #[cfg(feature = "extra-children")]
17434        if !self.extra_children.is_empty() {
17435            return false;
17436        }
17437        true
17438    }
17439}
17440
17441impl ToXml for CTCustomXmlCell {
17442    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
17443        #[allow(unused_mut)]
17444        let mut start = start;
17445        #[cfg(feature = "wml-settings")]
17446        if let Some(ref val) = self.uri {
17447            start.push_attribute(("w:uri", val.as_str()));
17448        }
17449        #[cfg(feature = "wml-settings")]
17450        {
17451            let val = &self.element;
17452            start.push_attribute(("w:element", val.as_str()));
17453        }
17454        #[cfg(feature = "extra-attrs")]
17455        for (key, value) in &self.extra_attrs {
17456            start.push_attribute((key.as_str(), value.as_str()));
17457        }
17458        start
17459    }
17460
17461    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
17462        #[cfg(feature = "extra-children")]
17463        let mut extra_iter = self.extra_children.iter().peekable();
17464        #[cfg(feature = "extra-children")]
17465        let mut emit_idx: usize = 0;
17466        #[cfg(feature = "extra-children")]
17467        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
17468            extra_iter
17469                .next()
17470                .unwrap()
17471                .node
17472                .write_to(writer)
17473                .map_err(SerializeError::from)?;
17474        }
17475        #[cfg(feature = "wml-settings")]
17476        if let Some(ref val) = self.custom_xml_pr {
17477            val.write_element("w:customXmlPr", writer)?;
17478        }
17479        #[cfg(feature = "extra-children")]
17480        {
17481            emit_idx += 1;
17482        }
17483        for item in &self.cells {
17484            #[cfg(feature = "extra-children")]
17485            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
17486                extra_iter
17487                    .next()
17488                    .unwrap()
17489                    .node
17490                    .write_to(writer)
17491                    .map_err(SerializeError::from)?;
17492            }
17493            item.write_element("", writer)?;
17494            #[cfg(feature = "extra-children")]
17495            {
17496                emit_idx += 1;
17497            }
17498        }
17499        #[cfg(feature = "extra-children")]
17500        for extra in extra_iter {
17501            extra.node.write_to(writer).map_err(SerializeError::from)?;
17502        }
17503        Ok(())
17504    }
17505
17506    fn is_empty_element(&self) -> bool {
17507        #[cfg(feature = "wml-settings")]
17508        if self.custom_xml_pr.is_some() {
17509            return false;
17510        }
17511        if !self.cells.is_empty() {
17512            return false;
17513        }
17514        #[cfg(feature = "extra-children")]
17515        if !self.extra_children.is_empty() {
17516            return false;
17517        }
17518        true
17519    }
17520}
17521
17522impl ToXml for CTSmartTagPr {
17523    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
17524        #[cfg(feature = "extra-children")]
17525        let mut extra_iter = self.extra_children.iter().peekable();
17526        #[cfg(feature = "extra-children")]
17527        let mut emit_idx: usize = 0;
17528        #[cfg(feature = "wml-settings")]
17529        for item in &self.attr {
17530            #[cfg(feature = "extra-children")]
17531            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
17532                extra_iter
17533                    .next()
17534                    .unwrap()
17535                    .node
17536                    .write_to(writer)
17537                    .map_err(SerializeError::from)?;
17538            }
17539            item.write_element("w:attr", writer)?;
17540            #[cfg(feature = "extra-children")]
17541            {
17542                emit_idx += 1;
17543            }
17544        }
17545        #[cfg(feature = "extra-children")]
17546        for extra in extra_iter {
17547            extra.node.write_to(writer).map_err(SerializeError::from)?;
17548        }
17549        Ok(())
17550    }
17551
17552    fn is_empty_element(&self) -> bool {
17553        #[cfg(feature = "wml-settings")]
17554        if !self.attr.is_empty() {
17555            return false;
17556        }
17557        #[cfg(feature = "extra-children")]
17558        if !self.extra_children.is_empty() {
17559            return false;
17560        }
17561        true
17562    }
17563}
17564
17565impl ToXml for ParagraphContent {
17566    fn write_element<W: Write>(
17567        &self,
17568        _tag: &str,
17569        writer: &mut Writer<W>,
17570    ) -> Result<(), SerializeError> {
17571        match self {
17572            Self::CustomXml(inner) => inner.write_element("w:customXml", writer)?,
17573            Self::SmartTag(inner) => inner.write_element("w:smartTag", writer)?,
17574            Self::Sdt(inner) => inner.write_element("w:sdt", writer)?,
17575            Self::Dir(inner) => inner.write_element("w:dir", writer)?,
17576            Self::Bdo(inner) => inner.write_element("w:bdo", writer)?,
17577            Self::R(inner) => inner.write_element("w:r", writer)?,
17578            Self::ProofErr(inner) => inner.write_element("w:proofErr", writer)?,
17579            Self::PermStart(inner) => inner.write_element("w:permStart", writer)?,
17580            Self::PermEnd(inner) => inner.write_element("w:permEnd", writer)?,
17581            Self::BookmarkStart(inner) => inner.write_element("w:bookmarkStart", writer)?,
17582            Self::BookmarkEnd(inner) => inner.write_element("w:bookmarkEnd", writer)?,
17583            Self::MoveFromRangeStart(inner) => {
17584                inner.write_element("w:moveFromRangeStart", writer)?
17585            }
17586            Self::MoveFromRangeEnd(inner) => inner.write_element("w:moveFromRangeEnd", writer)?,
17587            Self::MoveToRangeStart(inner) => inner.write_element("w:moveToRangeStart", writer)?,
17588            Self::MoveToRangeEnd(inner) => inner.write_element("w:moveToRangeEnd", writer)?,
17589            Self::CommentRangeStart(inner) => inner.write_element("w:commentRangeStart", writer)?,
17590            Self::CommentRangeEnd(inner) => inner.write_element("w:commentRangeEnd", writer)?,
17591            Self::CustomXmlInsRangeStart(inner) => {
17592                inner.write_element("w:customXmlInsRangeStart", writer)?
17593            }
17594            Self::CustomXmlInsRangeEnd(inner) => {
17595                inner.write_element("w:customXmlInsRangeEnd", writer)?
17596            }
17597            Self::CustomXmlDelRangeStart(inner) => {
17598                inner.write_element("w:customXmlDelRangeStart", writer)?
17599            }
17600            Self::CustomXmlDelRangeEnd(inner) => {
17601                inner.write_element("w:customXmlDelRangeEnd", writer)?
17602            }
17603            Self::CustomXmlMoveFromRangeStart(inner) => {
17604                inner.write_element("w:customXmlMoveFromRangeStart", writer)?
17605            }
17606            Self::CustomXmlMoveFromRangeEnd(inner) => {
17607                inner.write_element("w:customXmlMoveFromRangeEnd", writer)?
17608            }
17609            Self::CustomXmlMoveToRangeStart(inner) => {
17610                inner.write_element("w:customXmlMoveToRangeStart", writer)?
17611            }
17612            Self::CustomXmlMoveToRangeEnd(inner) => {
17613                inner.write_element("w:customXmlMoveToRangeEnd", writer)?
17614            }
17615            Self::Ins(inner) => inner.write_element("w:ins", writer)?,
17616            Self::Del(inner) => inner.write_element("w:del", writer)?,
17617            Self::MoveFrom(inner) => inner.write_element("w:moveFrom", writer)?,
17618            Self::MoveTo(inner) => inner.write_element("w:moveTo", writer)?,
17619            Self::FldSimple(inner) => inner.write_element("w:fldSimple", writer)?,
17620            Self::Hyperlink(inner) => inner.write_element("w:hyperlink", writer)?,
17621            Self::SubDoc(inner) => inner.write_element("w:subDoc", writer)?,
17622        }
17623        Ok(())
17624    }
17625}
17626
17627impl ToXml for Paragraph {
17628    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
17629        #[allow(unused_mut)]
17630        let mut start = start;
17631        #[cfg(feature = "wml-track-changes")]
17632        if let Some(ref val) = self.rsid_r_pr {
17633            {
17634                let hex = encode_hex(val);
17635                start.push_attribute(("w:rsidRPr", hex.as_str()));
17636            }
17637        }
17638        #[cfg(feature = "wml-track-changes")]
17639        if let Some(ref val) = self.rsid_r {
17640            {
17641                let hex = encode_hex(val);
17642                start.push_attribute(("w:rsidR", hex.as_str()));
17643            }
17644        }
17645        #[cfg(feature = "wml-track-changes")]
17646        if let Some(ref val) = self.rsid_del {
17647            {
17648                let hex = encode_hex(val);
17649                start.push_attribute(("w:rsidDel", hex.as_str()));
17650            }
17651        }
17652        #[cfg(feature = "wml-track-changes")]
17653        if let Some(ref val) = self.rsid_p {
17654            {
17655                let hex = encode_hex(val);
17656                start.push_attribute(("w:rsidP", hex.as_str()));
17657            }
17658        }
17659        #[cfg(feature = "wml-track-changes")]
17660        if let Some(ref val) = self.rsid_r_default {
17661            {
17662                let hex = encode_hex(val);
17663                start.push_attribute(("w:rsidRDefault", hex.as_str()));
17664            }
17665        }
17666        #[cfg(feature = "extra-attrs")]
17667        for (key, value) in &self.extra_attrs {
17668            start.push_attribute((key.as_str(), value.as_str()));
17669        }
17670        start
17671    }
17672
17673    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
17674        #[cfg(feature = "extra-children")]
17675        let mut extra_iter = self.extra_children.iter().peekable();
17676        #[cfg(feature = "extra-children")]
17677        let mut emit_idx: usize = 0;
17678        #[cfg(feature = "extra-children")]
17679        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
17680            extra_iter
17681                .next()
17682                .unwrap()
17683                .node
17684                .write_to(writer)
17685                .map_err(SerializeError::from)?;
17686        }
17687        #[cfg(feature = "wml-styling")]
17688        if let Some(ref val) = self.p_pr {
17689            val.write_element("w:pPr", writer)?;
17690        }
17691        #[cfg(feature = "extra-children")]
17692        {
17693            emit_idx += 1;
17694        }
17695        for item in &self.paragraph_content {
17696            #[cfg(feature = "extra-children")]
17697            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
17698                extra_iter
17699                    .next()
17700                    .unwrap()
17701                    .node
17702                    .write_to(writer)
17703                    .map_err(SerializeError::from)?;
17704            }
17705            item.write_element("", writer)?;
17706            #[cfg(feature = "extra-children")]
17707            {
17708                emit_idx += 1;
17709            }
17710        }
17711        #[cfg(feature = "extra-children")]
17712        for extra in extra_iter {
17713            extra.node.write_to(writer).map_err(SerializeError::from)?;
17714        }
17715        Ok(())
17716    }
17717
17718    fn is_empty_element(&self) -> bool {
17719        #[cfg(feature = "wml-styling")]
17720        if self.p_pr.is_some() {
17721            return false;
17722        }
17723        if !self.paragraph_content.is_empty() {
17724            return false;
17725        }
17726        #[cfg(feature = "extra-children")]
17727        if !self.extra_children.is_empty() {
17728            return false;
17729        }
17730        true
17731    }
17732}
17733
17734impl ToXml for CTHeight {
17735    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
17736        #[allow(unused_mut)]
17737        let mut start = start;
17738        if let Some(ref val) = self.value {
17739            {
17740                let s = val.to_string();
17741                start.push_attribute(("w:val", s.as_str()));
17742            }
17743        }
17744        #[cfg(feature = "wml-tables")]
17745        if let Some(ref val) = self.h_rule {
17746            {
17747                let s = val.to_string();
17748                start.push_attribute(("w:hRule", s.as_str()));
17749            }
17750        }
17751        #[cfg(feature = "extra-attrs")]
17752        for (key, value) in &self.extra_attrs {
17753            start.push_attribute((key.as_str(), value.as_str()));
17754        }
17755        start
17756    }
17757
17758    fn is_empty_element(&self) -> bool {
17759        true
17760    }
17761}
17762
17763impl ToXml for CTTblWidth {
17764    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
17765        #[allow(unused_mut)]
17766        let mut start = start;
17767        if let Some(ref val) = self.width {
17768            {
17769                let s = val.to_string();
17770                start.push_attribute(("w:w", s.as_str()));
17771            }
17772        }
17773        if let Some(ref val) = self.r#type {
17774            {
17775                let s = val.to_string();
17776                start.push_attribute(("w:type", s.as_str()));
17777            }
17778        }
17779        #[cfg(feature = "extra-attrs")]
17780        for (key, value) in &self.extra_attrs {
17781            start.push_attribute((key.as_str(), value.as_str()));
17782        }
17783        start
17784    }
17785
17786    fn is_empty_element(&self) -> bool {
17787        true
17788    }
17789}
17790
17791impl ToXml for TableGridColumn {
17792    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
17793        #[allow(unused_mut)]
17794        let mut start = start;
17795        if let Some(ref val) = self.width {
17796            {
17797                let s = val.to_string();
17798                start.push_attribute(("w:w", s.as_str()));
17799            }
17800        }
17801        #[cfg(feature = "extra-attrs")]
17802        for (key, value) in &self.extra_attrs {
17803            start.push_attribute((key.as_str(), value.as_str()));
17804        }
17805        start
17806    }
17807
17808    fn is_empty_element(&self) -> bool {
17809        true
17810    }
17811}
17812
17813impl ToXml for CTTblGridBase {
17814    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
17815        #[cfg(feature = "extra-children")]
17816        let mut extra_iter = self.extra_children.iter().peekable();
17817        #[cfg(feature = "extra-children")]
17818        let mut emit_idx: usize = 0;
17819        for item in &self.grid_col {
17820            #[cfg(feature = "extra-children")]
17821            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
17822                extra_iter
17823                    .next()
17824                    .unwrap()
17825                    .node
17826                    .write_to(writer)
17827                    .map_err(SerializeError::from)?;
17828            }
17829            item.write_element("w:gridCol", writer)?;
17830            #[cfg(feature = "extra-children")]
17831            {
17832                emit_idx += 1;
17833            }
17834        }
17835        #[cfg(feature = "extra-children")]
17836        for extra in extra_iter {
17837            extra.node.write_to(writer).map_err(SerializeError::from)?;
17838        }
17839        Ok(())
17840    }
17841
17842    fn is_empty_element(&self) -> bool {
17843        if !self.grid_col.is_empty() {
17844            return false;
17845        }
17846        #[cfg(feature = "extra-children")]
17847        if !self.extra_children.is_empty() {
17848            return false;
17849        }
17850        true
17851    }
17852}
17853
17854impl ToXml for TableGrid {
17855    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
17856        #[cfg(feature = "extra-children")]
17857        let mut extra_iter = self.extra_children.iter().peekable();
17858        #[cfg(feature = "extra-children")]
17859        let mut emit_idx: usize = 0;
17860        for item in &self.grid_col {
17861            #[cfg(feature = "extra-children")]
17862            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
17863                extra_iter
17864                    .next()
17865                    .unwrap()
17866                    .node
17867                    .write_to(writer)
17868                    .map_err(SerializeError::from)?;
17869            }
17870            item.write_element("w:gridCol", writer)?;
17871            #[cfg(feature = "extra-children")]
17872            {
17873                emit_idx += 1;
17874            }
17875        }
17876        #[cfg(feature = "extra-children")]
17877        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
17878            extra_iter
17879                .next()
17880                .unwrap()
17881                .node
17882                .write_to(writer)
17883                .map_err(SerializeError::from)?;
17884        }
17885        #[cfg(feature = "wml-track-changes")]
17886        if let Some(ref val) = self.tbl_grid_change {
17887            val.write_element("w:tblGridChange", writer)?;
17888        }
17889        #[cfg(feature = "extra-children")]
17890        {
17891            emit_idx += 1;
17892        }
17893        #[cfg(feature = "extra-children")]
17894        for extra in extra_iter {
17895            extra.node.write_to(writer).map_err(SerializeError::from)?;
17896        }
17897        Ok(())
17898    }
17899
17900    fn is_empty_element(&self) -> bool {
17901        if !self.grid_col.is_empty() {
17902            return false;
17903        }
17904        #[cfg(feature = "wml-track-changes")]
17905        if self.tbl_grid_change.is_some() {
17906            return false;
17907        }
17908        #[cfg(feature = "extra-children")]
17909        if !self.extra_children.is_empty() {
17910            return false;
17911        }
17912        true
17913    }
17914}
17915
17916impl ToXml for CTTcBorders {
17917    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
17918        #[cfg(feature = "extra-children")]
17919        let mut extra_iter = self.extra_children.iter().peekable();
17920        #[cfg(feature = "extra-children")]
17921        let mut emit_idx: usize = 0;
17922        #[cfg(feature = "extra-children")]
17923        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
17924            extra_iter
17925                .next()
17926                .unwrap()
17927                .node
17928                .write_to(writer)
17929                .map_err(SerializeError::from)?;
17930        }
17931        #[cfg(feature = "wml-tables")]
17932        if let Some(ref val) = self.top {
17933            val.write_element("w:top", writer)?;
17934        }
17935        #[cfg(feature = "extra-children")]
17936        {
17937            emit_idx += 1;
17938        }
17939        #[cfg(feature = "extra-children")]
17940        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
17941            extra_iter
17942                .next()
17943                .unwrap()
17944                .node
17945                .write_to(writer)
17946                .map_err(SerializeError::from)?;
17947        }
17948        #[cfg(feature = "wml-tables")]
17949        if let Some(ref val) = self.start {
17950            val.write_element("w:start", writer)?;
17951        }
17952        #[cfg(feature = "extra-children")]
17953        {
17954            emit_idx += 1;
17955        }
17956        #[cfg(feature = "extra-children")]
17957        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
17958            extra_iter
17959                .next()
17960                .unwrap()
17961                .node
17962                .write_to(writer)
17963                .map_err(SerializeError::from)?;
17964        }
17965        #[cfg(feature = "wml-tables")]
17966        if let Some(ref val) = self.left {
17967            val.write_element("w:left", writer)?;
17968        }
17969        #[cfg(feature = "extra-children")]
17970        {
17971            emit_idx += 1;
17972        }
17973        #[cfg(feature = "extra-children")]
17974        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
17975            extra_iter
17976                .next()
17977                .unwrap()
17978                .node
17979                .write_to(writer)
17980                .map_err(SerializeError::from)?;
17981        }
17982        #[cfg(feature = "wml-tables")]
17983        if let Some(ref val) = self.bottom {
17984            val.write_element("w:bottom", writer)?;
17985        }
17986        #[cfg(feature = "extra-children")]
17987        {
17988            emit_idx += 1;
17989        }
17990        #[cfg(feature = "extra-children")]
17991        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
17992            extra_iter
17993                .next()
17994                .unwrap()
17995                .node
17996                .write_to(writer)
17997                .map_err(SerializeError::from)?;
17998        }
17999        #[cfg(feature = "wml-tables")]
18000        if let Some(ref val) = self.end {
18001            val.write_element("w:end", writer)?;
18002        }
18003        #[cfg(feature = "extra-children")]
18004        {
18005            emit_idx += 1;
18006        }
18007        #[cfg(feature = "extra-children")]
18008        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18009            extra_iter
18010                .next()
18011                .unwrap()
18012                .node
18013                .write_to(writer)
18014                .map_err(SerializeError::from)?;
18015        }
18016        #[cfg(feature = "wml-tables")]
18017        if let Some(ref val) = self.right {
18018            val.write_element("w:right", writer)?;
18019        }
18020        #[cfg(feature = "extra-children")]
18021        {
18022            emit_idx += 1;
18023        }
18024        #[cfg(feature = "extra-children")]
18025        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18026            extra_iter
18027                .next()
18028                .unwrap()
18029                .node
18030                .write_to(writer)
18031                .map_err(SerializeError::from)?;
18032        }
18033        #[cfg(feature = "wml-tables")]
18034        if let Some(ref val) = self.inside_h {
18035            val.write_element("w:insideH", writer)?;
18036        }
18037        #[cfg(feature = "extra-children")]
18038        {
18039            emit_idx += 1;
18040        }
18041        #[cfg(feature = "extra-children")]
18042        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18043            extra_iter
18044                .next()
18045                .unwrap()
18046                .node
18047                .write_to(writer)
18048                .map_err(SerializeError::from)?;
18049        }
18050        #[cfg(feature = "wml-tables")]
18051        if let Some(ref val) = self.inside_v {
18052            val.write_element("w:insideV", writer)?;
18053        }
18054        #[cfg(feature = "extra-children")]
18055        {
18056            emit_idx += 1;
18057        }
18058        #[cfg(feature = "extra-children")]
18059        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18060            extra_iter
18061                .next()
18062                .unwrap()
18063                .node
18064                .write_to(writer)
18065                .map_err(SerializeError::from)?;
18066        }
18067        #[cfg(feature = "wml-tables")]
18068        if let Some(ref val) = self.tl2br {
18069            val.write_element("w:tl2br", writer)?;
18070        }
18071        #[cfg(feature = "extra-children")]
18072        {
18073            emit_idx += 1;
18074        }
18075        #[cfg(feature = "extra-children")]
18076        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18077            extra_iter
18078                .next()
18079                .unwrap()
18080                .node
18081                .write_to(writer)
18082                .map_err(SerializeError::from)?;
18083        }
18084        #[cfg(feature = "wml-tables")]
18085        if let Some(ref val) = self.tr2bl {
18086            val.write_element("w:tr2bl", writer)?;
18087        }
18088        #[cfg(feature = "extra-children")]
18089        {
18090            emit_idx += 1;
18091        }
18092        #[cfg(feature = "extra-children")]
18093        for extra in extra_iter {
18094            extra.node.write_to(writer).map_err(SerializeError::from)?;
18095        }
18096        Ok(())
18097    }
18098
18099    fn is_empty_element(&self) -> bool {
18100        #[cfg(feature = "wml-tables")]
18101        if self.top.is_some() {
18102            return false;
18103        }
18104        #[cfg(feature = "wml-tables")]
18105        if self.start.is_some() {
18106            return false;
18107        }
18108        #[cfg(feature = "wml-tables")]
18109        if self.left.is_some() {
18110            return false;
18111        }
18112        #[cfg(feature = "wml-tables")]
18113        if self.bottom.is_some() {
18114            return false;
18115        }
18116        #[cfg(feature = "wml-tables")]
18117        if self.end.is_some() {
18118            return false;
18119        }
18120        #[cfg(feature = "wml-tables")]
18121        if self.right.is_some() {
18122            return false;
18123        }
18124        #[cfg(feature = "wml-tables")]
18125        if self.inside_h.is_some() {
18126            return false;
18127        }
18128        #[cfg(feature = "wml-tables")]
18129        if self.inside_v.is_some() {
18130            return false;
18131        }
18132        #[cfg(feature = "wml-tables")]
18133        if self.tl2br.is_some() {
18134            return false;
18135        }
18136        #[cfg(feature = "wml-tables")]
18137        if self.tr2bl.is_some() {
18138            return false;
18139        }
18140        #[cfg(feature = "extra-children")]
18141        if !self.extra_children.is_empty() {
18142            return false;
18143        }
18144        true
18145    }
18146}
18147
18148impl ToXml for CTTcMar {
18149    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
18150        #[cfg(feature = "extra-children")]
18151        let mut extra_iter = self.extra_children.iter().peekable();
18152        #[cfg(feature = "extra-children")]
18153        let mut emit_idx: usize = 0;
18154        #[cfg(feature = "extra-children")]
18155        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18156            extra_iter
18157                .next()
18158                .unwrap()
18159                .node
18160                .write_to(writer)
18161                .map_err(SerializeError::from)?;
18162        }
18163        #[cfg(feature = "wml-tables")]
18164        if let Some(ref val) = self.top {
18165            val.write_element("w:top", writer)?;
18166        }
18167        #[cfg(feature = "extra-children")]
18168        {
18169            emit_idx += 1;
18170        }
18171        #[cfg(feature = "extra-children")]
18172        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18173            extra_iter
18174                .next()
18175                .unwrap()
18176                .node
18177                .write_to(writer)
18178                .map_err(SerializeError::from)?;
18179        }
18180        #[cfg(feature = "wml-tables")]
18181        if let Some(ref val) = self.start {
18182            val.write_element("w:start", writer)?;
18183        }
18184        #[cfg(feature = "extra-children")]
18185        {
18186            emit_idx += 1;
18187        }
18188        #[cfg(feature = "extra-children")]
18189        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18190            extra_iter
18191                .next()
18192                .unwrap()
18193                .node
18194                .write_to(writer)
18195                .map_err(SerializeError::from)?;
18196        }
18197        #[cfg(feature = "wml-tables")]
18198        if let Some(ref val) = self.left {
18199            val.write_element("w:left", writer)?;
18200        }
18201        #[cfg(feature = "extra-children")]
18202        {
18203            emit_idx += 1;
18204        }
18205        #[cfg(feature = "extra-children")]
18206        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18207            extra_iter
18208                .next()
18209                .unwrap()
18210                .node
18211                .write_to(writer)
18212                .map_err(SerializeError::from)?;
18213        }
18214        #[cfg(feature = "wml-tables")]
18215        if let Some(ref val) = self.bottom {
18216            val.write_element("w:bottom", writer)?;
18217        }
18218        #[cfg(feature = "extra-children")]
18219        {
18220            emit_idx += 1;
18221        }
18222        #[cfg(feature = "extra-children")]
18223        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18224            extra_iter
18225                .next()
18226                .unwrap()
18227                .node
18228                .write_to(writer)
18229                .map_err(SerializeError::from)?;
18230        }
18231        #[cfg(feature = "wml-tables")]
18232        if let Some(ref val) = self.end {
18233            val.write_element("w:end", writer)?;
18234        }
18235        #[cfg(feature = "extra-children")]
18236        {
18237            emit_idx += 1;
18238        }
18239        #[cfg(feature = "extra-children")]
18240        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18241            extra_iter
18242                .next()
18243                .unwrap()
18244                .node
18245                .write_to(writer)
18246                .map_err(SerializeError::from)?;
18247        }
18248        #[cfg(feature = "wml-tables")]
18249        if let Some(ref val) = self.right {
18250            val.write_element("w:right", writer)?;
18251        }
18252        #[cfg(feature = "extra-children")]
18253        {
18254            emit_idx += 1;
18255        }
18256        #[cfg(feature = "extra-children")]
18257        for extra in extra_iter {
18258            extra.node.write_to(writer).map_err(SerializeError::from)?;
18259        }
18260        Ok(())
18261    }
18262
18263    fn is_empty_element(&self) -> bool {
18264        #[cfg(feature = "wml-tables")]
18265        if self.top.is_some() {
18266            return false;
18267        }
18268        #[cfg(feature = "wml-tables")]
18269        if self.start.is_some() {
18270            return false;
18271        }
18272        #[cfg(feature = "wml-tables")]
18273        if self.left.is_some() {
18274            return false;
18275        }
18276        #[cfg(feature = "wml-tables")]
18277        if self.bottom.is_some() {
18278            return false;
18279        }
18280        #[cfg(feature = "wml-tables")]
18281        if self.end.is_some() {
18282            return false;
18283        }
18284        #[cfg(feature = "wml-tables")]
18285        if self.right.is_some() {
18286            return false;
18287        }
18288        #[cfg(feature = "extra-children")]
18289        if !self.extra_children.is_empty() {
18290            return false;
18291        }
18292        true
18293    }
18294}
18295
18296impl ToXml for CTVMerge {
18297    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
18298        #[allow(unused_mut)]
18299        let mut start = start;
18300        if let Some(ref val) = self.value {
18301            {
18302                let s = val.to_string();
18303                start.push_attribute(("w:val", s.as_str()));
18304            }
18305        }
18306        #[cfg(feature = "extra-attrs")]
18307        for (key, value) in &self.extra_attrs {
18308            start.push_attribute((key.as_str(), value.as_str()));
18309        }
18310        start
18311    }
18312
18313    fn is_empty_element(&self) -> bool {
18314        true
18315    }
18316}
18317
18318impl ToXml for CTHMerge {
18319    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
18320        #[allow(unused_mut)]
18321        let mut start = start;
18322        if let Some(ref val) = self.value {
18323            {
18324                let s = val.to_string();
18325                start.push_attribute(("w:val", s.as_str()));
18326            }
18327        }
18328        #[cfg(feature = "extra-attrs")]
18329        for (key, value) in &self.extra_attrs {
18330            start.push_attribute((key.as_str(), value.as_str()));
18331        }
18332        start
18333    }
18334
18335    fn is_empty_element(&self) -> bool {
18336        true
18337    }
18338}
18339
18340impl ToXml for CTTcPrBase {
18341    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
18342        #[cfg(feature = "extra-children")]
18343        let mut extra_iter = self.extra_children.iter().peekable();
18344        #[cfg(feature = "extra-children")]
18345        let mut emit_idx: usize = 0;
18346        #[cfg(feature = "extra-children")]
18347        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18348            extra_iter
18349                .next()
18350                .unwrap()
18351                .node
18352                .write_to(writer)
18353                .map_err(SerializeError::from)?;
18354        }
18355        #[cfg(feature = "wml-styling")]
18356        if let Some(ref val) = self.cnf_style {
18357            val.write_element("w:cnfStyle", writer)?;
18358        }
18359        #[cfg(feature = "extra-children")]
18360        {
18361            emit_idx += 1;
18362        }
18363        #[cfg(feature = "extra-children")]
18364        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18365            extra_iter
18366                .next()
18367                .unwrap()
18368                .node
18369                .write_to(writer)
18370                .map_err(SerializeError::from)?;
18371        }
18372        #[cfg(feature = "wml-tables")]
18373        if let Some(ref val) = self.tc_w {
18374            val.write_element("w:tcW", writer)?;
18375        }
18376        #[cfg(feature = "extra-children")]
18377        {
18378            emit_idx += 1;
18379        }
18380        #[cfg(feature = "extra-children")]
18381        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18382            extra_iter
18383                .next()
18384                .unwrap()
18385                .node
18386                .write_to(writer)
18387                .map_err(SerializeError::from)?;
18388        }
18389        #[cfg(feature = "wml-tables")]
18390        if let Some(ref val) = self.grid_span {
18391            val.write_element("w:gridSpan", writer)?;
18392        }
18393        #[cfg(feature = "extra-children")]
18394        {
18395            emit_idx += 1;
18396        }
18397        #[cfg(feature = "extra-children")]
18398        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18399            extra_iter
18400                .next()
18401                .unwrap()
18402                .node
18403                .write_to(writer)
18404                .map_err(SerializeError::from)?;
18405        }
18406        #[cfg(feature = "wml-tables")]
18407        if let Some(ref val) = self.horizontal_merge {
18408            val.write_element("w:hMerge", writer)?;
18409        }
18410        #[cfg(feature = "extra-children")]
18411        {
18412            emit_idx += 1;
18413        }
18414        #[cfg(feature = "extra-children")]
18415        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18416            extra_iter
18417                .next()
18418                .unwrap()
18419                .node
18420                .write_to(writer)
18421                .map_err(SerializeError::from)?;
18422        }
18423        #[cfg(feature = "wml-tables")]
18424        if let Some(ref val) = self.vertical_merge {
18425            val.write_element("w:vMerge", writer)?;
18426        }
18427        #[cfg(feature = "extra-children")]
18428        {
18429            emit_idx += 1;
18430        }
18431        #[cfg(feature = "extra-children")]
18432        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18433            extra_iter
18434                .next()
18435                .unwrap()
18436                .node
18437                .write_to(writer)
18438                .map_err(SerializeError::from)?;
18439        }
18440        #[cfg(feature = "wml-tables")]
18441        if let Some(ref val) = self.tc_borders {
18442            val.write_element("w:tcBorders", writer)?;
18443        }
18444        #[cfg(feature = "extra-children")]
18445        {
18446            emit_idx += 1;
18447        }
18448        #[cfg(feature = "extra-children")]
18449        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18450            extra_iter
18451                .next()
18452                .unwrap()
18453                .node
18454                .write_to(writer)
18455                .map_err(SerializeError::from)?;
18456        }
18457        #[cfg(feature = "wml-tables")]
18458        if let Some(ref val) = self.shading {
18459            val.write_element("w:shd", writer)?;
18460        }
18461        #[cfg(feature = "extra-children")]
18462        {
18463            emit_idx += 1;
18464        }
18465        #[cfg(feature = "extra-children")]
18466        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18467            extra_iter
18468                .next()
18469                .unwrap()
18470                .node
18471                .write_to(writer)
18472                .map_err(SerializeError::from)?;
18473        }
18474        #[cfg(feature = "wml-tables")]
18475        if let Some(ref val) = self.no_wrap {
18476            val.write_element("w:noWrap", writer)?;
18477        }
18478        #[cfg(feature = "extra-children")]
18479        {
18480            emit_idx += 1;
18481        }
18482        #[cfg(feature = "extra-children")]
18483        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18484            extra_iter
18485                .next()
18486                .unwrap()
18487                .node
18488                .write_to(writer)
18489                .map_err(SerializeError::from)?;
18490        }
18491        #[cfg(feature = "wml-tables")]
18492        if let Some(ref val) = self.tc_mar {
18493            val.write_element("w:tcMar", writer)?;
18494        }
18495        #[cfg(feature = "extra-children")]
18496        {
18497            emit_idx += 1;
18498        }
18499        #[cfg(feature = "extra-children")]
18500        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18501            extra_iter
18502                .next()
18503                .unwrap()
18504                .node
18505                .write_to(writer)
18506                .map_err(SerializeError::from)?;
18507        }
18508        #[cfg(feature = "wml-tables")]
18509        if let Some(ref val) = self.text_direction {
18510            val.write_element("w:textDirection", writer)?;
18511        }
18512        #[cfg(feature = "extra-children")]
18513        {
18514            emit_idx += 1;
18515        }
18516        #[cfg(feature = "extra-children")]
18517        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18518            extra_iter
18519                .next()
18520                .unwrap()
18521                .node
18522                .write_to(writer)
18523                .map_err(SerializeError::from)?;
18524        }
18525        #[cfg(feature = "wml-tables")]
18526        if let Some(ref val) = self.tc_fit_text {
18527            val.write_element("w:tcFitText", writer)?;
18528        }
18529        #[cfg(feature = "extra-children")]
18530        {
18531            emit_idx += 1;
18532        }
18533        #[cfg(feature = "extra-children")]
18534        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18535            extra_iter
18536                .next()
18537                .unwrap()
18538                .node
18539                .write_to(writer)
18540                .map_err(SerializeError::from)?;
18541        }
18542        #[cfg(feature = "wml-tables")]
18543        if let Some(ref val) = self.v_align {
18544            val.write_element("w:vAlign", writer)?;
18545        }
18546        #[cfg(feature = "extra-children")]
18547        {
18548            emit_idx += 1;
18549        }
18550        #[cfg(feature = "extra-children")]
18551        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18552            extra_iter
18553                .next()
18554                .unwrap()
18555                .node
18556                .write_to(writer)
18557                .map_err(SerializeError::from)?;
18558        }
18559        #[cfg(feature = "wml-tables")]
18560        if let Some(ref val) = self.hide_mark {
18561            val.write_element("w:hideMark", writer)?;
18562        }
18563        #[cfg(feature = "extra-children")]
18564        {
18565            emit_idx += 1;
18566        }
18567        #[cfg(feature = "extra-children")]
18568        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18569            extra_iter
18570                .next()
18571                .unwrap()
18572                .node
18573                .write_to(writer)
18574                .map_err(SerializeError::from)?;
18575        }
18576        #[cfg(feature = "wml-tables")]
18577        if let Some(ref val) = self.headers {
18578            val.write_element("w:headers", writer)?;
18579        }
18580        #[cfg(feature = "extra-children")]
18581        {
18582            emit_idx += 1;
18583        }
18584        #[cfg(feature = "extra-children")]
18585        for extra in extra_iter {
18586            extra.node.write_to(writer).map_err(SerializeError::from)?;
18587        }
18588        Ok(())
18589    }
18590
18591    fn is_empty_element(&self) -> bool {
18592        #[cfg(feature = "wml-styling")]
18593        if self.cnf_style.is_some() {
18594            return false;
18595        }
18596        #[cfg(feature = "wml-tables")]
18597        if self.tc_w.is_some() {
18598            return false;
18599        }
18600        #[cfg(feature = "wml-tables")]
18601        if self.grid_span.is_some() {
18602            return false;
18603        }
18604        #[cfg(feature = "wml-tables")]
18605        if self.horizontal_merge.is_some() {
18606            return false;
18607        }
18608        #[cfg(feature = "wml-tables")]
18609        if self.vertical_merge.is_some() {
18610            return false;
18611        }
18612        #[cfg(feature = "wml-tables")]
18613        if self.tc_borders.is_some() {
18614            return false;
18615        }
18616        #[cfg(feature = "wml-tables")]
18617        if self.shading.is_some() {
18618            return false;
18619        }
18620        #[cfg(feature = "wml-tables")]
18621        if self.no_wrap.is_some() {
18622            return false;
18623        }
18624        #[cfg(feature = "wml-tables")]
18625        if self.tc_mar.is_some() {
18626            return false;
18627        }
18628        #[cfg(feature = "wml-tables")]
18629        if self.text_direction.is_some() {
18630            return false;
18631        }
18632        #[cfg(feature = "wml-tables")]
18633        if self.tc_fit_text.is_some() {
18634            return false;
18635        }
18636        #[cfg(feature = "wml-tables")]
18637        if self.v_align.is_some() {
18638            return false;
18639        }
18640        #[cfg(feature = "wml-tables")]
18641        if self.hide_mark.is_some() {
18642            return false;
18643        }
18644        #[cfg(feature = "wml-tables")]
18645        if self.headers.is_some() {
18646            return false;
18647        }
18648        #[cfg(feature = "extra-children")]
18649        if !self.extra_children.is_empty() {
18650            return false;
18651        }
18652        true
18653    }
18654}
18655
18656impl ToXml for TableCellProperties {
18657    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
18658        #[cfg(feature = "extra-children")]
18659        let mut extra_iter = self.extra_children.iter().peekable();
18660        #[cfg(feature = "extra-children")]
18661        let mut emit_idx: usize = 0;
18662        #[cfg(feature = "extra-children")]
18663        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18664            extra_iter
18665                .next()
18666                .unwrap()
18667                .node
18668                .write_to(writer)
18669                .map_err(SerializeError::from)?;
18670        }
18671        #[cfg(feature = "wml-styling")]
18672        if let Some(ref val) = self.cnf_style {
18673            val.write_element("w:cnfStyle", writer)?;
18674        }
18675        #[cfg(feature = "extra-children")]
18676        {
18677            emit_idx += 1;
18678        }
18679        #[cfg(feature = "extra-children")]
18680        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18681            extra_iter
18682                .next()
18683                .unwrap()
18684                .node
18685                .write_to(writer)
18686                .map_err(SerializeError::from)?;
18687        }
18688        #[cfg(feature = "wml-tables")]
18689        if let Some(ref val) = self.tc_w {
18690            val.write_element("w:tcW", writer)?;
18691        }
18692        #[cfg(feature = "extra-children")]
18693        {
18694            emit_idx += 1;
18695        }
18696        #[cfg(feature = "extra-children")]
18697        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18698            extra_iter
18699                .next()
18700                .unwrap()
18701                .node
18702                .write_to(writer)
18703                .map_err(SerializeError::from)?;
18704        }
18705        #[cfg(feature = "wml-tables")]
18706        if let Some(ref val) = self.grid_span {
18707            val.write_element("w:gridSpan", writer)?;
18708        }
18709        #[cfg(feature = "extra-children")]
18710        {
18711            emit_idx += 1;
18712        }
18713        #[cfg(feature = "extra-children")]
18714        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18715            extra_iter
18716                .next()
18717                .unwrap()
18718                .node
18719                .write_to(writer)
18720                .map_err(SerializeError::from)?;
18721        }
18722        #[cfg(feature = "wml-tables")]
18723        if let Some(ref val) = self.horizontal_merge {
18724            val.write_element("w:hMerge", writer)?;
18725        }
18726        #[cfg(feature = "extra-children")]
18727        {
18728            emit_idx += 1;
18729        }
18730        #[cfg(feature = "extra-children")]
18731        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18732            extra_iter
18733                .next()
18734                .unwrap()
18735                .node
18736                .write_to(writer)
18737                .map_err(SerializeError::from)?;
18738        }
18739        #[cfg(feature = "wml-tables")]
18740        if let Some(ref val) = self.vertical_merge {
18741            val.write_element("w:vMerge", writer)?;
18742        }
18743        #[cfg(feature = "extra-children")]
18744        {
18745            emit_idx += 1;
18746        }
18747        #[cfg(feature = "extra-children")]
18748        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18749            extra_iter
18750                .next()
18751                .unwrap()
18752                .node
18753                .write_to(writer)
18754                .map_err(SerializeError::from)?;
18755        }
18756        #[cfg(feature = "wml-tables")]
18757        if let Some(ref val) = self.tc_borders {
18758            val.write_element("w:tcBorders", writer)?;
18759        }
18760        #[cfg(feature = "extra-children")]
18761        {
18762            emit_idx += 1;
18763        }
18764        #[cfg(feature = "extra-children")]
18765        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18766            extra_iter
18767                .next()
18768                .unwrap()
18769                .node
18770                .write_to(writer)
18771                .map_err(SerializeError::from)?;
18772        }
18773        #[cfg(feature = "wml-tables")]
18774        if let Some(ref val) = self.shading {
18775            val.write_element("w:shd", writer)?;
18776        }
18777        #[cfg(feature = "extra-children")]
18778        {
18779            emit_idx += 1;
18780        }
18781        #[cfg(feature = "extra-children")]
18782        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18783            extra_iter
18784                .next()
18785                .unwrap()
18786                .node
18787                .write_to(writer)
18788                .map_err(SerializeError::from)?;
18789        }
18790        #[cfg(feature = "wml-tables")]
18791        if let Some(ref val) = self.no_wrap {
18792            val.write_element("w:noWrap", writer)?;
18793        }
18794        #[cfg(feature = "extra-children")]
18795        {
18796            emit_idx += 1;
18797        }
18798        #[cfg(feature = "extra-children")]
18799        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18800            extra_iter
18801                .next()
18802                .unwrap()
18803                .node
18804                .write_to(writer)
18805                .map_err(SerializeError::from)?;
18806        }
18807        #[cfg(feature = "wml-tables")]
18808        if let Some(ref val) = self.tc_mar {
18809            val.write_element("w:tcMar", writer)?;
18810        }
18811        #[cfg(feature = "extra-children")]
18812        {
18813            emit_idx += 1;
18814        }
18815        #[cfg(feature = "extra-children")]
18816        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18817            extra_iter
18818                .next()
18819                .unwrap()
18820                .node
18821                .write_to(writer)
18822                .map_err(SerializeError::from)?;
18823        }
18824        #[cfg(feature = "wml-tables")]
18825        if let Some(ref val) = self.text_direction {
18826            val.write_element("w:textDirection", writer)?;
18827        }
18828        #[cfg(feature = "extra-children")]
18829        {
18830            emit_idx += 1;
18831        }
18832        #[cfg(feature = "extra-children")]
18833        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18834            extra_iter
18835                .next()
18836                .unwrap()
18837                .node
18838                .write_to(writer)
18839                .map_err(SerializeError::from)?;
18840        }
18841        #[cfg(feature = "wml-tables")]
18842        if let Some(ref val) = self.tc_fit_text {
18843            val.write_element("w:tcFitText", writer)?;
18844        }
18845        #[cfg(feature = "extra-children")]
18846        {
18847            emit_idx += 1;
18848        }
18849        #[cfg(feature = "extra-children")]
18850        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18851            extra_iter
18852                .next()
18853                .unwrap()
18854                .node
18855                .write_to(writer)
18856                .map_err(SerializeError::from)?;
18857        }
18858        #[cfg(feature = "wml-tables")]
18859        if let Some(ref val) = self.v_align {
18860            val.write_element("w:vAlign", writer)?;
18861        }
18862        #[cfg(feature = "extra-children")]
18863        {
18864            emit_idx += 1;
18865        }
18866        #[cfg(feature = "extra-children")]
18867        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18868            extra_iter
18869                .next()
18870                .unwrap()
18871                .node
18872                .write_to(writer)
18873                .map_err(SerializeError::from)?;
18874        }
18875        #[cfg(feature = "wml-tables")]
18876        if let Some(ref val) = self.hide_mark {
18877            val.write_element("w:hideMark", writer)?;
18878        }
18879        #[cfg(feature = "extra-children")]
18880        {
18881            emit_idx += 1;
18882        }
18883        #[cfg(feature = "extra-children")]
18884        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18885            extra_iter
18886                .next()
18887                .unwrap()
18888                .node
18889                .write_to(writer)
18890                .map_err(SerializeError::from)?;
18891        }
18892        #[cfg(feature = "wml-tables")]
18893        if let Some(ref val) = self.headers {
18894            val.write_element("w:headers", writer)?;
18895        }
18896        #[cfg(feature = "extra-children")]
18897        {
18898            emit_idx += 1;
18899        }
18900        #[cfg(feature = "extra-children")]
18901        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18902            extra_iter
18903                .next()
18904                .unwrap()
18905                .node
18906                .write_to(writer)
18907                .map_err(SerializeError::from)?;
18908        }
18909        if let Some(ref val) = self.cell_markup {
18910            val.write_element("", writer)?;
18911        }
18912        #[cfg(feature = "extra-children")]
18913        {
18914            emit_idx += 1;
18915        }
18916        #[cfg(feature = "extra-children")]
18917        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18918            extra_iter
18919                .next()
18920                .unwrap()
18921                .node
18922                .write_to(writer)
18923                .map_err(SerializeError::from)?;
18924        }
18925        #[cfg(feature = "wml-track-changes")]
18926        if let Some(ref val) = self.tc_pr_change {
18927            val.write_element("w:tcPrChange", writer)?;
18928        }
18929        #[cfg(feature = "extra-children")]
18930        {
18931            emit_idx += 1;
18932        }
18933        #[cfg(feature = "extra-children")]
18934        for extra in extra_iter {
18935            extra.node.write_to(writer).map_err(SerializeError::from)?;
18936        }
18937        Ok(())
18938    }
18939
18940    fn is_empty_element(&self) -> bool {
18941        #[cfg(feature = "wml-styling")]
18942        if self.cnf_style.is_some() {
18943            return false;
18944        }
18945        #[cfg(feature = "wml-tables")]
18946        if self.tc_w.is_some() {
18947            return false;
18948        }
18949        #[cfg(feature = "wml-tables")]
18950        if self.grid_span.is_some() {
18951            return false;
18952        }
18953        #[cfg(feature = "wml-tables")]
18954        if self.horizontal_merge.is_some() {
18955            return false;
18956        }
18957        #[cfg(feature = "wml-tables")]
18958        if self.vertical_merge.is_some() {
18959            return false;
18960        }
18961        #[cfg(feature = "wml-tables")]
18962        if self.tc_borders.is_some() {
18963            return false;
18964        }
18965        #[cfg(feature = "wml-tables")]
18966        if self.shading.is_some() {
18967            return false;
18968        }
18969        #[cfg(feature = "wml-tables")]
18970        if self.no_wrap.is_some() {
18971            return false;
18972        }
18973        #[cfg(feature = "wml-tables")]
18974        if self.tc_mar.is_some() {
18975            return false;
18976        }
18977        #[cfg(feature = "wml-tables")]
18978        if self.text_direction.is_some() {
18979            return false;
18980        }
18981        #[cfg(feature = "wml-tables")]
18982        if self.tc_fit_text.is_some() {
18983            return false;
18984        }
18985        #[cfg(feature = "wml-tables")]
18986        if self.v_align.is_some() {
18987            return false;
18988        }
18989        #[cfg(feature = "wml-tables")]
18990        if self.hide_mark.is_some() {
18991            return false;
18992        }
18993        #[cfg(feature = "wml-tables")]
18994        if self.headers.is_some() {
18995            return false;
18996        }
18997        if self.cell_markup.is_some() {
18998            return false;
18999        }
19000        #[cfg(feature = "wml-track-changes")]
19001        if self.tc_pr_change.is_some() {
19002            return false;
19003        }
19004        #[cfg(feature = "extra-children")]
19005        if !self.extra_children.is_empty() {
19006            return false;
19007        }
19008        true
19009    }
19010}
19011
19012impl ToXml for CTTcPrInner {
19013    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
19014        #[cfg(feature = "extra-children")]
19015        let mut extra_iter = self.extra_children.iter().peekable();
19016        #[cfg(feature = "extra-children")]
19017        let mut emit_idx: usize = 0;
19018        #[cfg(feature = "extra-children")]
19019        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19020            extra_iter
19021                .next()
19022                .unwrap()
19023                .node
19024                .write_to(writer)
19025                .map_err(SerializeError::from)?;
19026        }
19027        if let Some(ref val) = self.cnf_style {
19028            val.write_element("w:cnfStyle", writer)?;
19029        }
19030        #[cfg(feature = "extra-children")]
19031        {
19032            emit_idx += 1;
19033        }
19034        #[cfg(feature = "extra-children")]
19035        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19036            extra_iter
19037                .next()
19038                .unwrap()
19039                .node
19040                .write_to(writer)
19041                .map_err(SerializeError::from)?;
19042        }
19043        if let Some(ref val) = self.tc_w {
19044            val.write_element("w:tcW", writer)?;
19045        }
19046        #[cfg(feature = "extra-children")]
19047        {
19048            emit_idx += 1;
19049        }
19050        #[cfg(feature = "extra-children")]
19051        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19052            extra_iter
19053                .next()
19054                .unwrap()
19055                .node
19056                .write_to(writer)
19057                .map_err(SerializeError::from)?;
19058        }
19059        if let Some(ref val) = self.grid_span {
19060            val.write_element("w:gridSpan", writer)?;
19061        }
19062        #[cfg(feature = "extra-children")]
19063        {
19064            emit_idx += 1;
19065        }
19066        #[cfg(feature = "extra-children")]
19067        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19068            extra_iter
19069                .next()
19070                .unwrap()
19071                .node
19072                .write_to(writer)
19073                .map_err(SerializeError::from)?;
19074        }
19075        if let Some(ref val) = self.horizontal_merge {
19076            val.write_element("w:hMerge", writer)?;
19077        }
19078        #[cfg(feature = "extra-children")]
19079        {
19080            emit_idx += 1;
19081        }
19082        #[cfg(feature = "extra-children")]
19083        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19084            extra_iter
19085                .next()
19086                .unwrap()
19087                .node
19088                .write_to(writer)
19089                .map_err(SerializeError::from)?;
19090        }
19091        if let Some(ref val) = self.vertical_merge {
19092            val.write_element("w:vMerge", writer)?;
19093        }
19094        #[cfg(feature = "extra-children")]
19095        {
19096            emit_idx += 1;
19097        }
19098        #[cfg(feature = "extra-children")]
19099        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19100            extra_iter
19101                .next()
19102                .unwrap()
19103                .node
19104                .write_to(writer)
19105                .map_err(SerializeError::from)?;
19106        }
19107        if let Some(ref val) = self.tc_borders {
19108            val.write_element("w:tcBorders", writer)?;
19109        }
19110        #[cfg(feature = "extra-children")]
19111        {
19112            emit_idx += 1;
19113        }
19114        #[cfg(feature = "extra-children")]
19115        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19116            extra_iter
19117                .next()
19118                .unwrap()
19119                .node
19120                .write_to(writer)
19121                .map_err(SerializeError::from)?;
19122        }
19123        if let Some(ref val) = self.shading {
19124            val.write_element("w:shd", writer)?;
19125        }
19126        #[cfg(feature = "extra-children")]
19127        {
19128            emit_idx += 1;
19129        }
19130        #[cfg(feature = "extra-children")]
19131        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19132            extra_iter
19133                .next()
19134                .unwrap()
19135                .node
19136                .write_to(writer)
19137                .map_err(SerializeError::from)?;
19138        }
19139        if let Some(ref val) = self.no_wrap {
19140            val.write_element("w:noWrap", writer)?;
19141        }
19142        #[cfg(feature = "extra-children")]
19143        {
19144            emit_idx += 1;
19145        }
19146        #[cfg(feature = "extra-children")]
19147        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19148            extra_iter
19149                .next()
19150                .unwrap()
19151                .node
19152                .write_to(writer)
19153                .map_err(SerializeError::from)?;
19154        }
19155        if let Some(ref val) = self.tc_mar {
19156            val.write_element("w:tcMar", writer)?;
19157        }
19158        #[cfg(feature = "extra-children")]
19159        {
19160            emit_idx += 1;
19161        }
19162        #[cfg(feature = "extra-children")]
19163        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19164            extra_iter
19165                .next()
19166                .unwrap()
19167                .node
19168                .write_to(writer)
19169                .map_err(SerializeError::from)?;
19170        }
19171        if let Some(ref val) = self.text_direction {
19172            val.write_element("w:textDirection", writer)?;
19173        }
19174        #[cfg(feature = "extra-children")]
19175        {
19176            emit_idx += 1;
19177        }
19178        #[cfg(feature = "extra-children")]
19179        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19180            extra_iter
19181                .next()
19182                .unwrap()
19183                .node
19184                .write_to(writer)
19185                .map_err(SerializeError::from)?;
19186        }
19187        if let Some(ref val) = self.tc_fit_text {
19188            val.write_element("w:tcFitText", writer)?;
19189        }
19190        #[cfg(feature = "extra-children")]
19191        {
19192            emit_idx += 1;
19193        }
19194        #[cfg(feature = "extra-children")]
19195        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19196            extra_iter
19197                .next()
19198                .unwrap()
19199                .node
19200                .write_to(writer)
19201                .map_err(SerializeError::from)?;
19202        }
19203        if let Some(ref val) = self.v_align {
19204            val.write_element("w:vAlign", writer)?;
19205        }
19206        #[cfg(feature = "extra-children")]
19207        {
19208            emit_idx += 1;
19209        }
19210        #[cfg(feature = "extra-children")]
19211        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19212            extra_iter
19213                .next()
19214                .unwrap()
19215                .node
19216                .write_to(writer)
19217                .map_err(SerializeError::from)?;
19218        }
19219        if let Some(ref val) = self.hide_mark {
19220            val.write_element("w:hideMark", writer)?;
19221        }
19222        #[cfg(feature = "extra-children")]
19223        {
19224            emit_idx += 1;
19225        }
19226        #[cfg(feature = "extra-children")]
19227        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19228            extra_iter
19229                .next()
19230                .unwrap()
19231                .node
19232                .write_to(writer)
19233                .map_err(SerializeError::from)?;
19234        }
19235        if let Some(ref val) = self.headers {
19236            val.write_element("w:headers", writer)?;
19237        }
19238        #[cfg(feature = "extra-children")]
19239        {
19240            emit_idx += 1;
19241        }
19242        #[cfg(feature = "extra-children")]
19243        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19244            extra_iter
19245                .next()
19246                .unwrap()
19247                .node
19248                .write_to(writer)
19249                .map_err(SerializeError::from)?;
19250        }
19251        if let Some(ref val) = self.cell_markup {
19252            val.write_element("", writer)?;
19253        }
19254        #[cfg(feature = "extra-children")]
19255        {
19256            emit_idx += 1;
19257        }
19258        #[cfg(feature = "extra-children")]
19259        for extra in extra_iter {
19260            extra.node.write_to(writer).map_err(SerializeError::from)?;
19261        }
19262        Ok(())
19263    }
19264
19265    fn is_empty_element(&self) -> bool {
19266        if self.cnf_style.is_some() {
19267            return false;
19268        }
19269        if self.tc_w.is_some() {
19270            return false;
19271        }
19272        if self.grid_span.is_some() {
19273            return false;
19274        }
19275        if self.horizontal_merge.is_some() {
19276            return false;
19277        }
19278        if self.vertical_merge.is_some() {
19279            return false;
19280        }
19281        if self.tc_borders.is_some() {
19282            return false;
19283        }
19284        if self.shading.is_some() {
19285            return false;
19286        }
19287        if self.no_wrap.is_some() {
19288            return false;
19289        }
19290        if self.tc_mar.is_some() {
19291            return false;
19292        }
19293        if self.text_direction.is_some() {
19294            return false;
19295        }
19296        if self.tc_fit_text.is_some() {
19297            return false;
19298        }
19299        if self.v_align.is_some() {
19300            return false;
19301        }
19302        if self.hide_mark.is_some() {
19303            return false;
19304        }
19305        if self.headers.is_some() {
19306            return false;
19307        }
19308        if self.cell_markup.is_some() {
19309            return false;
19310        }
19311        #[cfg(feature = "extra-children")]
19312        if !self.extra_children.is_empty() {
19313            return false;
19314        }
19315        true
19316    }
19317}
19318
19319impl ToXml for TableCell {
19320    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
19321        #[allow(unused_mut)]
19322        let mut start = start;
19323        #[cfg(feature = "wml-tables")]
19324        if let Some(ref val) = self.id {
19325            start.push_attribute(("w:id", val.as_str()));
19326        }
19327        #[cfg(feature = "extra-attrs")]
19328        for (key, value) in &self.extra_attrs {
19329            start.push_attribute((key.as_str(), value.as_str()));
19330        }
19331        start
19332    }
19333
19334    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
19335        #[cfg(feature = "extra-children")]
19336        let mut extra_iter = self.extra_children.iter().peekable();
19337        #[cfg(feature = "extra-children")]
19338        let mut emit_idx: usize = 0;
19339        #[cfg(feature = "extra-children")]
19340        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19341            extra_iter
19342                .next()
19343                .unwrap()
19344                .node
19345                .write_to(writer)
19346                .map_err(SerializeError::from)?;
19347        }
19348        #[cfg(feature = "wml-tables")]
19349        if let Some(ref val) = self.cell_properties {
19350            val.write_element("w:tcPr", writer)?;
19351        }
19352        #[cfg(feature = "extra-children")]
19353        {
19354            emit_idx += 1;
19355        }
19356        for item in &self.block_content {
19357            #[cfg(feature = "extra-children")]
19358            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19359                extra_iter
19360                    .next()
19361                    .unwrap()
19362                    .node
19363                    .write_to(writer)
19364                    .map_err(SerializeError::from)?;
19365            }
19366            item.write_element("", writer)?;
19367            #[cfg(feature = "extra-children")]
19368            {
19369                emit_idx += 1;
19370            }
19371        }
19372        #[cfg(feature = "extra-children")]
19373        for extra in extra_iter {
19374            extra.node.write_to(writer).map_err(SerializeError::from)?;
19375        }
19376        Ok(())
19377    }
19378
19379    fn is_empty_element(&self) -> bool {
19380        #[cfg(feature = "wml-tables")]
19381        if self.cell_properties.is_some() {
19382            return false;
19383        }
19384        if !self.block_content.is_empty() {
19385            return false;
19386        }
19387        #[cfg(feature = "extra-children")]
19388        if !self.extra_children.is_empty() {
19389            return false;
19390        }
19391        true
19392    }
19393}
19394
19395impl ToXml for CTCnf {
19396    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
19397        #[allow(unused_mut)]
19398        let mut start = start;
19399        #[cfg(feature = "wml-styling")]
19400        if let Some(ref val) = self.value {
19401            start.push_attribute(("w:val", val.as_str()));
19402        }
19403        #[cfg(feature = "wml-styling")]
19404        if let Some(ref val) = self.first_row {
19405            {
19406                let s = val.to_string();
19407                start.push_attribute(("w:firstRow", s.as_str()));
19408            }
19409        }
19410        #[cfg(feature = "wml-styling")]
19411        if let Some(ref val) = self.last_row {
19412            {
19413                let s = val.to_string();
19414                start.push_attribute(("w:lastRow", s.as_str()));
19415            }
19416        }
19417        #[cfg(feature = "wml-styling")]
19418        if let Some(ref val) = self.first_column {
19419            {
19420                let s = val.to_string();
19421                start.push_attribute(("w:firstColumn", s.as_str()));
19422            }
19423        }
19424        #[cfg(feature = "wml-styling")]
19425        if let Some(ref val) = self.last_column {
19426            {
19427                let s = val.to_string();
19428                start.push_attribute(("w:lastColumn", s.as_str()));
19429            }
19430        }
19431        #[cfg(feature = "wml-styling")]
19432        if let Some(ref val) = self.odd_v_band {
19433            {
19434                let s = val.to_string();
19435                start.push_attribute(("w:oddVBand", s.as_str()));
19436            }
19437        }
19438        #[cfg(feature = "wml-styling")]
19439        if let Some(ref val) = self.even_v_band {
19440            {
19441                let s = val.to_string();
19442                start.push_attribute(("w:evenVBand", s.as_str()));
19443            }
19444        }
19445        #[cfg(feature = "wml-styling")]
19446        if let Some(ref val) = self.odd_h_band {
19447            {
19448                let s = val.to_string();
19449                start.push_attribute(("w:oddHBand", s.as_str()));
19450            }
19451        }
19452        #[cfg(feature = "wml-styling")]
19453        if let Some(ref val) = self.even_h_band {
19454            {
19455                let s = val.to_string();
19456                start.push_attribute(("w:evenHBand", s.as_str()));
19457            }
19458        }
19459        #[cfg(feature = "wml-styling")]
19460        if let Some(ref val) = self.first_row_first_column {
19461            {
19462                let s = val.to_string();
19463                start.push_attribute(("w:firstRowFirstColumn", s.as_str()));
19464            }
19465        }
19466        #[cfg(feature = "wml-styling")]
19467        if let Some(ref val) = self.first_row_last_column {
19468            {
19469                let s = val.to_string();
19470                start.push_attribute(("w:firstRowLastColumn", s.as_str()));
19471            }
19472        }
19473        #[cfg(feature = "wml-styling")]
19474        if let Some(ref val) = self.last_row_first_column {
19475            {
19476                let s = val.to_string();
19477                start.push_attribute(("w:lastRowFirstColumn", s.as_str()));
19478            }
19479        }
19480        #[cfg(feature = "wml-styling")]
19481        if let Some(ref val) = self.last_row_last_column {
19482            {
19483                let s = val.to_string();
19484                start.push_attribute(("w:lastRowLastColumn", s.as_str()));
19485            }
19486        }
19487        #[cfg(feature = "extra-attrs")]
19488        for (key, value) in &self.extra_attrs {
19489            start.push_attribute((key.as_str(), value.as_str()));
19490        }
19491        start
19492    }
19493
19494    fn is_empty_element(&self) -> bool {
19495        true
19496    }
19497}
19498
19499impl ToXml for CTHeaders {
19500    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
19501        #[cfg(feature = "extra-children")]
19502        let mut extra_iter = self.extra_children.iter().peekable();
19503        #[cfg(feature = "extra-children")]
19504        let mut emit_idx: usize = 0;
19505        for item in &self.header {
19506            #[cfg(feature = "extra-children")]
19507            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19508                extra_iter
19509                    .next()
19510                    .unwrap()
19511                    .node
19512                    .write_to(writer)
19513                    .map_err(SerializeError::from)?;
19514            }
19515            item.write_element("w:header", writer)?;
19516            #[cfg(feature = "extra-children")]
19517            {
19518                emit_idx += 1;
19519            }
19520        }
19521        #[cfg(feature = "extra-children")]
19522        for extra in extra_iter {
19523            extra.node.write_to(writer).map_err(SerializeError::from)?;
19524        }
19525        Ok(())
19526    }
19527
19528    fn is_empty_element(&self) -> bool {
19529        if !self.header.is_empty() {
19530            return false;
19531        }
19532        #[cfg(feature = "extra-children")]
19533        if !self.extra_children.is_empty() {
19534            return false;
19535        }
19536        true
19537    }
19538}
19539
19540impl ToXml for CTTrPrBase {
19541    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
19542        #[cfg(feature = "extra-children")]
19543        let mut extra_iter = self.extra_children.iter().peekable();
19544        #[cfg(feature = "extra-children")]
19545        let mut emit_idx: usize = 0;
19546        #[cfg(feature = "extra-children")]
19547        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19548            extra_iter
19549                .next()
19550                .unwrap()
19551                .node
19552                .write_to(writer)
19553                .map_err(SerializeError::from)?;
19554        }
19555        #[cfg(feature = "wml-styling")]
19556        if let Some(ref val) = self.cnf_style {
19557            val.write_element("w:cnfStyle", writer)?;
19558        }
19559        #[cfg(feature = "extra-children")]
19560        {
19561            emit_idx += 1;
19562        }
19563        #[cfg(feature = "extra-children")]
19564        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19565            extra_iter
19566                .next()
19567                .unwrap()
19568                .node
19569                .write_to(writer)
19570                .map_err(SerializeError::from)?;
19571        }
19572        #[cfg(feature = "wml-settings")]
19573        if let Some(ref val) = self.div_id {
19574            val.write_element("w:divId", writer)?;
19575        }
19576        #[cfg(feature = "extra-children")]
19577        {
19578            emit_idx += 1;
19579        }
19580        #[cfg(feature = "extra-children")]
19581        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19582            extra_iter
19583                .next()
19584                .unwrap()
19585                .node
19586                .write_to(writer)
19587                .map_err(SerializeError::from)?;
19588        }
19589        #[cfg(feature = "wml-tables")]
19590        if let Some(ref val) = self.grid_before {
19591            val.write_element("w:gridBefore", writer)?;
19592        }
19593        #[cfg(feature = "extra-children")]
19594        {
19595            emit_idx += 1;
19596        }
19597        #[cfg(feature = "extra-children")]
19598        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19599            extra_iter
19600                .next()
19601                .unwrap()
19602                .node
19603                .write_to(writer)
19604                .map_err(SerializeError::from)?;
19605        }
19606        #[cfg(feature = "wml-tables")]
19607        if let Some(ref val) = self.grid_after {
19608            val.write_element("w:gridAfter", writer)?;
19609        }
19610        #[cfg(feature = "extra-children")]
19611        {
19612            emit_idx += 1;
19613        }
19614        #[cfg(feature = "extra-children")]
19615        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19616            extra_iter
19617                .next()
19618                .unwrap()
19619                .node
19620                .write_to(writer)
19621                .map_err(SerializeError::from)?;
19622        }
19623        #[cfg(feature = "wml-tables")]
19624        if let Some(ref val) = self.w_before {
19625            val.write_element("w:wBefore", writer)?;
19626        }
19627        #[cfg(feature = "extra-children")]
19628        {
19629            emit_idx += 1;
19630        }
19631        #[cfg(feature = "extra-children")]
19632        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19633            extra_iter
19634                .next()
19635                .unwrap()
19636                .node
19637                .write_to(writer)
19638                .map_err(SerializeError::from)?;
19639        }
19640        #[cfg(feature = "wml-tables")]
19641        if let Some(ref val) = self.w_after {
19642            val.write_element("w:wAfter", writer)?;
19643        }
19644        #[cfg(feature = "extra-children")]
19645        {
19646            emit_idx += 1;
19647        }
19648        #[cfg(feature = "extra-children")]
19649        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19650            extra_iter
19651                .next()
19652                .unwrap()
19653                .node
19654                .write_to(writer)
19655                .map_err(SerializeError::from)?;
19656        }
19657        #[cfg(feature = "wml-tables")]
19658        if let Some(ref val) = self.cant_split {
19659            val.write_element("w:cantSplit", writer)?;
19660        }
19661        #[cfg(feature = "extra-children")]
19662        {
19663            emit_idx += 1;
19664        }
19665        #[cfg(feature = "extra-children")]
19666        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19667            extra_iter
19668                .next()
19669                .unwrap()
19670                .node
19671                .write_to(writer)
19672                .map_err(SerializeError::from)?;
19673        }
19674        #[cfg(feature = "wml-tables")]
19675        if let Some(ref val) = self.tr_height {
19676            val.write_element("w:trHeight", writer)?;
19677        }
19678        #[cfg(feature = "extra-children")]
19679        {
19680            emit_idx += 1;
19681        }
19682        #[cfg(feature = "extra-children")]
19683        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19684            extra_iter
19685                .next()
19686                .unwrap()
19687                .node
19688                .write_to(writer)
19689                .map_err(SerializeError::from)?;
19690        }
19691        #[cfg(feature = "wml-tables")]
19692        if let Some(ref val) = self.tbl_header {
19693            val.write_element("w:tblHeader", writer)?;
19694        }
19695        #[cfg(feature = "extra-children")]
19696        {
19697            emit_idx += 1;
19698        }
19699        #[cfg(feature = "extra-children")]
19700        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19701            extra_iter
19702                .next()
19703                .unwrap()
19704                .node
19705                .write_to(writer)
19706                .map_err(SerializeError::from)?;
19707        }
19708        #[cfg(feature = "wml-tables")]
19709        if let Some(ref val) = self.tbl_cell_spacing {
19710            val.write_element("w:tblCellSpacing", writer)?;
19711        }
19712        #[cfg(feature = "extra-children")]
19713        {
19714            emit_idx += 1;
19715        }
19716        #[cfg(feature = "extra-children")]
19717        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19718            extra_iter
19719                .next()
19720                .unwrap()
19721                .node
19722                .write_to(writer)
19723                .map_err(SerializeError::from)?;
19724        }
19725        #[cfg(feature = "wml-tables")]
19726        if let Some(ref val) = self.justification {
19727            val.write_element("w:jc", writer)?;
19728        }
19729        #[cfg(feature = "extra-children")]
19730        {
19731            emit_idx += 1;
19732        }
19733        #[cfg(feature = "extra-children")]
19734        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19735            extra_iter
19736                .next()
19737                .unwrap()
19738                .node
19739                .write_to(writer)
19740                .map_err(SerializeError::from)?;
19741        }
19742        #[cfg(feature = "wml-tables")]
19743        if let Some(ref val) = self.hidden {
19744            val.write_element("w:hidden", writer)?;
19745        }
19746        #[cfg(feature = "extra-children")]
19747        {
19748            emit_idx += 1;
19749        }
19750        #[cfg(feature = "extra-children")]
19751        for extra in extra_iter {
19752            extra.node.write_to(writer).map_err(SerializeError::from)?;
19753        }
19754        Ok(())
19755    }
19756
19757    fn is_empty_element(&self) -> bool {
19758        #[cfg(feature = "wml-styling")]
19759        if self.cnf_style.is_some() {
19760            return false;
19761        }
19762        #[cfg(feature = "wml-settings")]
19763        if self.div_id.is_some() {
19764            return false;
19765        }
19766        #[cfg(feature = "wml-tables")]
19767        if self.grid_before.is_some() {
19768            return false;
19769        }
19770        #[cfg(feature = "wml-tables")]
19771        if self.grid_after.is_some() {
19772            return false;
19773        }
19774        #[cfg(feature = "wml-tables")]
19775        if self.w_before.is_some() {
19776            return false;
19777        }
19778        #[cfg(feature = "wml-tables")]
19779        if self.w_after.is_some() {
19780            return false;
19781        }
19782        #[cfg(feature = "wml-tables")]
19783        if self.cant_split.is_some() {
19784            return false;
19785        }
19786        #[cfg(feature = "wml-tables")]
19787        if self.tr_height.is_some() {
19788            return false;
19789        }
19790        #[cfg(feature = "wml-tables")]
19791        if self.tbl_header.is_some() {
19792            return false;
19793        }
19794        #[cfg(feature = "wml-tables")]
19795        if self.tbl_cell_spacing.is_some() {
19796            return false;
19797        }
19798        #[cfg(feature = "wml-tables")]
19799        if self.justification.is_some() {
19800            return false;
19801        }
19802        #[cfg(feature = "wml-tables")]
19803        if self.hidden.is_some() {
19804            return false;
19805        }
19806        #[cfg(feature = "extra-children")]
19807        if !self.extra_children.is_empty() {
19808            return false;
19809        }
19810        true
19811    }
19812}
19813
19814impl ToXml for TableRowProperties {
19815    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
19816        #[cfg(feature = "extra-children")]
19817        let mut extra_iter = self.extra_children.iter().peekable();
19818        #[cfg(feature = "extra-children")]
19819        let mut emit_idx: usize = 0;
19820        #[cfg(feature = "extra-children")]
19821        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19822            extra_iter
19823                .next()
19824                .unwrap()
19825                .node
19826                .write_to(writer)
19827                .map_err(SerializeError::from)?;
19828        }
19829        #[cfg(feature = "wml-styling")]
19830        if let Some(ref val) = self.cnf_style {
19831            val.write_element("w:cnfStyle", writer)?;
19832        }
19833        #[cfg(feature = "extra-children")]
19834        {
19835            emit_idx += 1;
19836        }
19837        #[cfg(feature = "extra-children")]
19838        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19839            extra_iter
19840                .next()
19841                .unwrap()
19842                .node
19843                .write_to(writer)
19844                .map_err(SerializeError::from)?;
19845        }
19846        #[cfg(feature = "wml-settings")]
19847        if let Some(ref val) = self.div_id {
19848            val.write_element("w:divId", writer)?;
19849        }
19850        #[cfg(feature = "extra-children")]
19851        {
19852            emit_idx += 1;
19853        }
19854        #[cfg(feature = "extra-children")]
19855        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19856            extra_iter
19857                .next()
19858                .unwrap()
19859                .node
19860                .write_to(writer)
19861                .map_err(SerializeError::from)?;
19862        }
19863        #[cfg(feature = "wml-tables")]
19864        if let Some(ref val) = self.grid_before {
19865            val.write_element("w:gridBefore", writer)?;
19866        }
19867        #[cfg(feature = "extra-children")]
19868        {
19869            emit_idx += 1;
19870        }
19871        #[cfg(feature = "extra-children")]
19872        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19873            extra_iter
19874                .next()
19875                .unwrap()
19876                .node
19877                .write_to(writer)
19878                .map_err(SerializeError::from)?;
19879        }
19880        #[cfg(feature = "wml-tables")]
19881        if let Some(ref val) = self.grid_after {
19882            val.write_element("w:gridAfter", writer)?;
19883        }
19884        #[cfg(feature = "extra-children")]
19885        {
19886            emit_idx += 1;
19887        }
19888        #[cfg(feature = "extra-children")]
19889        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19890            extra_iter
19891                .next()
19892                .unwrap()
19893                .node
19894                .write_to(writer)
19895                .map_err(SerializeError::from)?;
19896        }
19897        #[cfg(feature = "wml-tables")]
19898        if let Some(ref val) = self.w_before {
19899            val.write_element("w:wBefore", writer)?;
19900        }
19901        #[cfg(feature = "extra-children")]
19902        {
19903            emit_idx += 1;
19904        }
19905        #[cfg(feature = "extra-children")]
19906        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19907            extra_iter
19908                .next()
19909                .unwrap()
19910                .node
19911                .write_to(writer)
19912                .map_err(SerializeError::from)?;
19913        }
19914        #[cfg(feature = "wml-tables")]
19915        if let Some(ref val) = self.w_after {
19916            val.write_element("w:wAfter", writer)?;
19917        }
19918        #[cfg(feature = "extra-children")]
19919        {
19920            emit_idx += 1;
19921        }
19922        #[cfg(feature = "extra-children")]
19923        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19924            extra_iter
19925                .next()
19926                .unwrap()
19927                .node
19928                .write_to(writer)
19929                .map_err(SerializeError::from)?;
19930        }
19931        #[cfg(feature = "wml-tables")]
19932        if let Some(ref val) = self.cant_split {
19933            val.write_element("w:cantSplit", writer)?;
19934        }
19935        #[cfg(feature = "extra-children")]
19936        {
19937            emit_idx += 1;
19938        }
19939        #[cfg(feature = "extra-children")]
19940        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19941            extra_iter
19942                .next()
19943                .unwrap()
19944                .node
19945                .write_to(writer)
19946                .map_err(SerializeError::from)?;
19947        }
19948        #[cfg(feature = "wml-tables")]
19949        if let Some(ref val) = self.tr_height {
19950            val.write_element("w:trHeight", writer)?;
19951        }
19952        #[cfg(feature = "extra-children")]
19953        {
19954            emit_idx += 1;
19955        }
19956        #[cfg(feature = "extra-children")]
19957        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19958            extra_iter
19959                .next()
19960                .unwrap()
19961                .node
19962                .write_to(writer)
19963                .map_err(SerializeError::from)?;
19964        }
19965        #[cfg(feature = "wml-tables")]
19966        if let Some(ref val) = self.tbl_header {
19967            val.write_element("w:tblHeader", writer)?;
19968        }
19969        #[cfg(feature = "extra-children")]
19970        {
19971            emit_idx += 1;
19972        }
19973        #[cfg(feature = "extra-children")]
19974        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19975            extra_iter
19976                .next()
19977                .unwrap()
19978                .node
19979                .write_to(writer)
19980                .map_err(SerializeError::from)?;
19981        }
19982        #[cfg(feature = "wml-tables")]
19983        if let Some(ref val) = self.tbl_cell_spacing {
19984            val.write_element("w:tblCellSpacing", writer)?;
19985        }
19986        #[cfg(feature = "extra-children")]
19987        {
19988            emit_idx += 1;
19989        }
19990        #[cfg(feature = "extra-children")]
19991        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19992            extra_iter
19993                .next()
19994                .unwrap()
19995                .node
19996                .write_to(writer)
19997                .map_err(SerializeError::from)?;
19998        }
19999        #[cfg(feature = "wml-tables")]
20000        if let Some(ref val) = self.justification {
20001            val.write_element("w:jc", writer)?;
20002        }
20003        #[cfg(feature = "extra-children")]
20004        {
20005            emit_idx += 1;
20006        }
20007        #[cfg(feature = "extra-children")]
20008        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
20009            extra_iter
20010                .next()
20011                .unwrap()
20012                .node
20013                .write_to(writer)
20014                .map_err(SerializeError::from)?;
20015        }
20016        #[cfg(feature = "wml-tables")]
20017        if let Some(ref val) = self.hidden {
20018            val.write_element("w:hidden", writer)?;
20019        }
20020        #[cfg(feature = "extra-children")]
20021        {
20022            emit_idx += 1;
20023        }
20024        #[cfg(feature = "extra-children")]
20025        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
20026            extra_iter
20027                .next()
20028                .unwrap()
20029                .node
20030                .write_to(writer)
20031                .map_err(SerializeError::from)?;
20032        }
20033        #[cfg(feature = "wml-track-changes")]
20034        if let Some(ref val) = self.ins {
20035            val.write_element("w:ins", writer)?;
20036        }
20037        #[cfg(feature = "extra-children")]
20038        {
20039            emit_idx += 1;
20040        }
20041        #[cfg(feature = "extra-children")]
20042        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
20043            extra_iter
20044                .next()
20045                .unwrap()
20046                .node
20047                .write_to(writer)
20048                .map_err(SerializeError::from)?;
20049        }
20050        #[cfg(feature = "wml-track-changes")]
20051        if let Some(ref val) = self.del {
20052            val.write_element("w:del", writer)?;
20053        }
20054        #[cfg(feature = "extra-children")]
20055        {
20056            emit_idx += 1;
20057        }
20058        #[cfg(feature = "extra-children")]
20059        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
20060            extra_iter
20061                .next()
20062                .unwrap()
20063                .node
20064                .write_to(writer)
20065                .map_err(SerializeError::from)?;
20066        }
20067        #[cfg(feature = "wml-track-changes")]
20068        if let Some(ref val) = self.tr_pr_change {
20069            val.write_element("w:trPrChange", writer)?;
20070        }
20071        #[cfg(feature = "extra-children")]
20072        {
20073            emit_idx += 1;
20074        }
20075        #[cfg(feature = "extra-children")]
20076        for extra in extra_iter {
20077            extra.node.write_to(writer).map_err(SerializeError::from)?;
20078        }
20079        Ok(())
20080    }
20081
20082    fn is_empty_element(&self) -> bool {
20083        #[cfg(feature = "wml-styling")]
20084        if self.cnf_style.is_some() {
20085            return false;
20086        }
20087        #[cfg(feature = "wml-settings")]
20088        if self.div_id.is_some() {
20089            return false;
20090        }
20091        #[cfg(feature = "wml-tables")]
20092        if self.grid_before.is_some() {
20093            return false;
20094        }
20095        #[cfg(feature = "wml-tables")]
20096        if self.grid_after.is_some() {
20097            return false;
20098        }
20099        #[cfg(feature = "wml-tables")]
20100        if self.w_before.is_some() {
20101            return false;
20102        }
20103        #[cfg(feature = "wml-tables")]
20104        if self.w_after.is_some() {
20105            return false;
20106        }
20107        #[cfg(feature = "wml-tables")]
20108        if self.cant_split.is_some() {
20109            return false;
20110        }
20111        #[cfg(feature = "wml-tables")]
20112        if self.tr_height.is_some() {
20113            return false;
20114        }
20115        #[cfg(feature = "wml-tables")]
20116        if self.tbl_header.is_some() {
20117            return false;
20118        }
20119        #[cfg(feature = "wml-tables")]
20120        if self.tbl_cell_spacing.is_some() {
20121            return false;
20122        }
20123        #[cfg(feature = "wml-tables")]
20124        if self.justification.is_some() {
20125            return false;
20126        }
20127        #[cfg(feature = "wml-tables")]
20128        if self.hidden.is_some() {
20129            return false;
20130        }
20131        #[cfg(feature = "wml-track-changes")]
20132        if self.ins.is_some() {
20133            return false;
20134        }
20135        #[cfg(feature = "wml-track-changes")]
20136        if self.del.is_some() {
20137            return false;
20138        }
20139        #[cfg(feature = "wml-track-changes")]
20140        if self.tr_pr_change.is_some() {
20141            return false;
20142        }
20143        #[cfg(feature = "extra-children")]
20144        if !self.extra_children.is_empty() {
20145            return false;
20146        }
20147        true
20148    }
20149}
20150
20151impl ToXml for CTRow {
20152    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
20153        #[allow(unused_mut)]
20154        let mut start = start;
20155        #[cfg(feature = "wml-track-changes")]
20156        if let Some(ref val) = self.rsid_r_pr {
20157            {
20158                let hex = encode_hex(val);
20159                start.push_attribute(("w:rsidRPr", hex.as_str()));
20160            }
20161        }
20162        #[cfg(feature = "wml-track-changes")]
20163        if let Some(ref val) = self.rsid_r {
20164            {
20165                let hex = encode_hex(val);
20166                start.push_attribute(("w:rsidR", hex.as_str()));
20167            }
20168        }
20169        #[cfg(feature = "wml-track-changes")]
20170        if let Some(ref val) = self.rsid_del {
20171            {
20172                let hex = encode_hex(val);
20173                start.push_attribute(("w:rsidDel", hex.as_str()));
20174            }
20175        }
20176        #[cfg(feature = "wml-track-changes")]
20177        if let Some(ref val) = self.rsid_tr {
20178            {
20179                let hex = encode_hex(val);
20180                start.push_attribute(("w:rsidTr", hex.as_str()));
20181            }
20182        }
20183        #[cfg(feature = "extra-attrs")]
20184        for (key, value) in &self.extra_attrs {
20185            start.push_attribute((key.as_str(), value.as_str()));
20186        }
20187        start
20188    }
20189
20190    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
20191        #[cfg(feature = "extra-children")]
20192        let mut extra_iter = self.extra_children.iter().peekable();
20193        #[cfg(feature = "extra-children")]
20194        let mut emit_idx: usize = 0;
20195        #[cfg(feature = "extra-children")]
20196        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
20197            extra_iter
20198                .next()
20199                .unwrap()
20200                .node
20201                .write_to(writer)
20202                .map_err(SerializeError::from)?;
20203        }
20204        #[cfg(feature = "wml-tables")]
20205        if let Some(ref val) = self.tbl_pr_ex {
20206            val.write_element("w:tblPrEx", writer)?;
20207        }
20208        #[cfg(feature = "extra-children")]
20209        {
20210            emit_idx += 1;
20211        }
20212        #[cfg(feature = "extra-children")]
20213        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
20214            extra_iter
20215                .next()
20216                .unwrap()
20217                .node
20218                .write_to(writer)
20219                .map_err(SerializeError::from)?;
20220        }
20221        #[cfg(feature = "wml-tables")]
20222        if let Some(ref val) = self.row_properties {
20223            val.write_element("w:trPr", writer)?;
20224        }
20225        #[cfg(feature = "extra-children")]
20226        {
20227            emit_idx += 1;
20228        }
20229        for item in &self.cells {
20230            #[cfg(feature = "extra-children")]
20231            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
20232                extra_iter
20233                    .next()
20234                    .unwrap()
20235                    .node
20236                    .write_to(writer)
20237                    .map_err(SerializeError::from)?;
20238            }
20239            item.write_element("", writer)?;
20240            #[cfg(feature = "extra-children")]
20241            {
20242                emit_idx += 1;
20243            }
20244        }
20245        #[cfg(feature = "extra-children")]
20246        for extra in extra_iter {
20247            extra.node.write_to(writer).map_err(SerializeError::from)?;
20248        }
20249        Ok(())
20250    }
20251
20252    fn is_empty_element(&self) -> bool {
20253        #[cfg(feature = "wml-tables")]
20254        if self.tbl_pr_ex.is_some() {
20255            return false;
20256        }
20257        #[cfg(feature = "wml-tables")]
20258        if self.row_properties.is_some() {
20259            return false;
20260        }
20261        if !self.cells.is_empty() {
20262            return false;
20263        }
20264        #[cfg(feature = "extra-children")]
20265        if !self.extra_children.is_empty() {
20266            return false;
20267        }
20268        true
20269    }
20270}
20271
20272impl ToXml for CTTblLayoutType {
20273    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
20274        #[allow(unused_mut)]
20275        let mut start = start;
20276        if let Some(ref val) = self.r#type {
20277            {
20278                let s = val.to_string();
20279                start.push_attribute(("w:type", s.as_str()));
20280            }
20281        }
20282        #[cfg(feature = "extra-attrs")]
20283        for (key, value) in &self.extra_attrs {
20284            start.push_attribute((key.as_str(), value.as_str()));
20285        }
20286        start
20287    }
20288
20289    fn is_empty_element(&self) -> bool {
20290        true
20291    }
20292}
20293
20294impl ToXml for CTTblOverlap {
20295    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
20296        #[allow(unused_mut)]
20297        let mut start = start;
20298        {
20299            let val = &self.value;
20300            {
20301                let s = val.to_string();
20302                start.push_attribute(("w:val", s.as_str()));
20303            }
20304        }
20305        #[cfg(feature = "extra-attrs")]
20306        for (key, value) in &self.extra_attrs {
20307            start.push_attribute((key.as_str(), value.as_str()));
20308        }
20309        start
20310    }
20311
20312    fn is_empty_element(&self) -> bool {
20313        true
20314    }
20315}
20316
20317impl ToXml for CTTblPPr {
20318    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
20319        #[allow(unused_mut)]
20320        let mut start = start;
20321        #[cfg(feature = "wml-tables")]
20322        if let Some(ref val) = self.left_from_text {
20323            {
20324                let s = val.to_string();
20325                start.push_attribute(("w:leftFromText", s.as_str()));
20326            }
20327        }
20328        #[cfg(feature = "wml-tables")]
20329        if let Some(ref val) = self.right_from_text {
20330            {
20331                let s = val.to_string();
20332                start.push_attribute(("w:rightFromText", s.as_str()));
20333            }
20334        }
20335        #[cfg(feature = "wml-tables")]
20336        if let Some(ref val) = self.top_from_text {
20337            {
20338                let s = val.to_string();
20339                start.push_attribute(("w:topFromText", s.as_str()));
20340            }
20341        }
20342        #[cfg(feature = "wml-tables")]
20343        if let Some(ref val) = self.bottom_from_text {
20344            {
20345                let s = val.to_string();
20346                start.push_attribute(("w:bottomFromText", s.as_str()));
20347            }
20348        }
20349        #[cfg(feature = "wml-tables")]
20350        if let Some(ref val) = self.vert_anchor {
20351            {
20352                let s = val.to_string();
20353                start.push_attribute(("w:vertAnchor", s.as_str()));
20354            }
20355        }
20356        #[cfg(feature = "wml-tables")]
20357        if let Some(ref val) = self.horz_anchor {
20358            {
20359                let s = val.to_string();
20360                start.push_attribute(("w:horzAnchor", s.as_str()));
20361            }
20362        }
20363        #[cfg(feature = "wml-tables")]
20364        if let Some(ref val) = self.tblp_x_spec {
20365            {
20366                let s = val.to_string();
20367                start.push_attribute(("w:tblpXSpec", s.as_str()));
20368            }
20369        }
20370        #[cfg(feature = "wml-tables")]
20371        if let Some(ref val) = self.tblp_x {
20372            {
20373                let s = val.to_string();
20374                start.push_attribute(("w:tblpX", s.as_str()));
20375            }
20376        }
20377        #[cfg(feature = "wml-tables")]
20378        if let Some(ref val) = self.tblp_y_spec {
20379            {
20380                let s = val.to_string();
20381                start.push_attribute(("w:tblpYSpec", s.as_str()));
20382            }
20383        }
20384        #[cfg(feature = "wml-tables")]
20385        if let Some(ref val) = self.tblp_y {
20386            {
20387                let s = val.to_string();
20388                start.push_attribute(("w:tblpY", s.as_str()));
20389            }
20390        }
20391        #[cfg(feature = "extra-attrs")]
20392        for (key, value) in &self.extra_attrs {
20393            start.push_attribute((key.as_str(), value.as_str()));
20394        }
20395        start
20396    }
20397
20398    fn is_empty_element(&self) -> bool {
20399        true
20400    }
20401}
20402
20403impl ToXml for CTTblCellMar {
20404    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
20405        #[cfg(feature = "extra-children")]
20406        let mut extra_iter = self.extra_children.iter().peekable();
20407        #[cfg(feature = "extra-children")]
20408        let mut emit_idx: usize = 0;
20409        #[cfg(feature = "extra-children")]
20410        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
20411            extra_iter
20412                .next()
20413                .unwrap()
20414                .node
20415                .write_to(writer)
20416                .map_err(SerializeError::from)?;
20417        }
20418        #[cfg(feature = "wml-tables")]
20419        if let Some(ref val) = self.top {
20420            val.write_element("w:top", writer)?;
20421        }
20422        #[cfg(feature = "extra-children")]
20423        {
20424            emit_idx += 1;
20425        }
20426        #[cfg(feature = "extra-children")]
20427        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
20428            extra_iter
20429                .next()
20430                .unwrap()
20431                .node
20432                .write_to(writer)
20433                .map_err(SerializeError::from)?;
20434        }
20435        #[cfg(feature = "wml-tables")]
20436        if let Some(ref val) = self.start {
20437            val.write_element("w:start", writer)?;
20438        }
20439        #[cfg(feature = "extra-children")]
20440        {
20441            emit_idx += 1;
20442        }
20443        #[cfg(feature = "extra-children")]
20444        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
20445            extra_iter
20446                .next()
20447                .unwrap()
20448                .node
20449                .write_to(writer)
20450                .map_err(SerializeError::from)?;
20451        }
20452        #[cfg(feature = "wml-tables")]
20453        if let Some(ref val) = self.left {
20454            val.write_element("w:left", writer)?;
20455        }
20456        #[cfg(feature = "extra-children")]
20457        {
20458            emit_idx += 1;
20459        }
20460        #[cfg(feature = "extra-children")]
20461        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
20462            extra_iter
20463                .next()
20464                .unwrap()
20465                .node
20466                .write_to(writer)
20467                .map_err(SerializeError::from)?;
20468        }
20469        #[cfg(feature = "wml-tables")]
20470        if let Some(ref val) = self.bottom {
20471            val.write_element("w:bottom", writer)?;
20472        }
20473        #[cfg(feature = "extra-children")]
20474        {
20475            emit_idx += 1;
20476        }
20477        #[cfg(feature = "extra-children")]
20478        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
20479            extra_iter
20480                .next()
20481                .unwrap()
20482                .node
20483                .write_to(writer)
20484                .map_err(SerializeError::from)?;
20485        }
20486        #[cfg(feature = "wml-tables")]
20487        if let Some(ref val) = self.end {
20488            val.write_element("w:end", writer)?;
20489        }
20490        #[cfg(feature = "extra-children")]
20491        {
20492            emit_idx += 1;
20493        }
20494        #[cfg(feature = "extra-children")]
20495        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
20496            extra_iter
20497                .next()
20498                .unwrap()
20499                .node
20500                .write_to(writer)
20501                .map_err(SerializeError::from)?;
20502        }
20503        #[cfg(feature = "wml-tables")]
20504        if let Some(ref val) = self.right {
20505            val.write_element("w:right", writer)?;
20506        }
20507        #[cfg(feature = "extra-children")]
20508        {
20509            emit_idx += 1;
20510        }
20511        #[cfg(feature = "extra-children")]
20512        for extra in extra_iter {
20513            extra.node.write_to(writer).map_err(SerializeError::from)?;
20514        }
20515        Ok(())
20516    }
20517
20518    fn is_empty_element(&self) -> bool {
20519        #[cfg(feature = "wml-tables")]
20520        if self.top.is_some() {
20521            return false;
20522        }
20523        #[cfg(feature = "wml-tables")]
20524        if self.start.is_some() {
20525            return false;
20526        }
20527        #[cfg(feature = "wml-tables")]
20528        if self.left.is_some() {
20529            return false;
20530        }
20531        #[cfg(feature = "wml-tables")]
20532        if self.bottom.is_some() {
20533            return false;
20534        }
20535        #[cfg(feature = "wml-tables")]
20536        if self.end.is_some() {
20537            return false;
20538        }
20539        #[cfg(feature = "wml-tables")]
20540        if self.right.is_some() {
20541            return false;
20542        }
20543        #[cfg(feature = "extra-children")]
20544        if !self.extra_children.is_empty() {
20545            return false;
20546        }
20547        true
20548    }
20549}
20550
20551impl ToXml for CTTblBorders {
20552    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
20553        #[cfg(feature = "extra-children")]
20554        let mut extra_iter = self.extra_children.iter().peekable();
20555        #[cfg(feature = "extra-children")]
20556        let mut emit_idx: usize = 0;
20557        #[cfg(feature = "extra-children")]
20558        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
20559            extra_iter
20560                .next()
20561                .unwrap()
20562                .node
20563                .write_to(writer)
20564                .map_err(SerializeError::from)?;
20565        }
20566        #[cfg(feature = "wml-tables")]
20567        if let Some(ref val) = self.top {
20568            val.write_element("w:top", writer)?;
20569        }
20570        #[cfg(feature = "extra-children")]
20571        {
20572            emit_idx += 1;
20573        }
20574        #[cfg(feature = "extra-children")]
20575        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
20576            extra_iter
20577                .next()
20578                .unwrap()
20579                .node
20580                .write_to(writer)
20581                .map_err(SerializeError::from)?;
20582        }
20583        #[cfg(feature = "wml-tables")]
20584        if let Some(ref val) = self.start {
20585            val.write_element("w:start", writer)?;
20586        }
20587        #[cfg(feature = "extra-children")]
20588        {
20589            emit_idx += 1;
20590        }
20591        #[cfg(feature = "extra-children")]
20592        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
20593            extra_iter
20594                .next()
20595                .unwrap()
20596                .node
20597                .write_to(writer)
20598                .map_err(SerializeError::from)?;
20599        }
20600        #[cfg(feature = "wml-tables")]
20601        if let Some(ref val) = self.left {
20602            val.write_element("w:left", writer)?;
20603        }
20604        #[cfg(feature = "extra-children")]
20605        {
20606            emit_idx += 1;
20607        }
20608        #[cfg(feature = "extra-children")]
20609        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
20610            extra_iter
20611                .next()
20612                .unwrap()
20613                .node
20614                .write_to(writer)
20615                .map_err(SerializeError::from)?;
20616        }
20617        #[cfg(feature = "wml-tables")]
20618        if let Some(ref val) = self.bottom {
20619            val.write_element("w:bottom", writer)?;
20620        }
20621        #[cfg(feature = "extra-children")]
20622        {
20623            emit_idx += 1;
20624        }
20625        #[cfg(feature = "extra-children")]
20626        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
20627            extra_iter
20628                .next()
20629                .unwrap()
20630                .node
20631                .write_to(writer)
20632                .map_err(SerializeError::from)?;
20633        }
20634        #[cfg(feature = "wml-tables")]
20635        if let Some(ref val) = self.end {
20636            val.write_element("w:end", writer)?;
20637        }
20638        #[cfg(feature = "extra-children")]
20639        {
20640            emit_idx += 1;
20641        }
20642        #[cfg(feature = "extra-children")]
20643        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
20644            extra_iter
20645                .next()
20646                .unwrap()
20647                .node
20648                .write_to(writer)
20649                .map_err(SerializeError::from)?;
20650        }
20651        #[cfg(feature = "wml-tables")]
20652        if let Some(ref val) = self.right {
20653            val.write_element("w:right", writer)?;
20654        }
20655        #[cfg(feature = "extra-children")]
20656        {
20657            emit_idx += 1;
20658        }
20659        #[cfg(feature = "extra-children")]
20660        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
20661            extra_iter
20662                .next()
20663                .unwrap()
20664                .node
20665                .write_to(writer)
20666                .map_err(SerializeError::from)?;
20667        }
20668        #[cfg(feature = "wml-tables")]
20669        if let Some(ref val) = self.inside_h {
20670            val.write_element("w:insideH", writer)?;
20671        }
20672        #[cfg(feature = "extra-children")]
20673        {
20674            emit_idx += 1;
20675        }
20676        #[cfg(feature = "extra-children")]
20677        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
20678            extra_iter
20679                .next()
20680                .unwrap()
20681                .node
20682                .write_to(writer)
20683                .map_err(SerializeError::from)?;
20684        }
20685        #[cfg(feature = "wml-tables")]
20686        if let Some(ref val) = self.inside_v {
20687            val.write_element("w:insideV", writer)?;
20688        }
20689        #[cfg(feature = "extra-children")]
20690        {
20691            emit_idx += 1;
20692        }
20693        #[cfg(feature = "extra-children")]
20694        for extra in extra_iter {
20695            extra.node.write_to(writer).map_err(SerializeError::from)?;
20696        }
20697        Ok(())
20698    }
20699
20700    fn is_empty_element(&self) -> bool {
20701        #[cfg(feature = "wml-tables")]
20702        if self.top.is_some() {
20703            return false;
20704        }
20705        #[cfg(feature = "wml-tables")]
20706        if self.start.is_some() {
20707            return false;
20708        }
20709        #[cfg(feature = "wml-tables")]
20710        if self.left.is_some() {
20711            return false;
20712        }
20713        #[cfg(feature = "wml-tables")]
20714        if self.bottom.is_some() {
20715            return false;
20716        }
20717        #[cfg(feature = "wml-tables")]
20718        if self.end.is_some() {
20719            return false;
20720        }
20721        #[cfg(feature = "wml-tables")]
20722        if self.right.is_some() {
20723            return false;
20724        }
20725        #[cfg(feature = "wml-tables")]
20726        if self.inside_h.is_some() {
20727            return false;
20728        }
20729        #[cfg(feature = "wml-tables")]
20730        if self.inside_v.is_some() {
20731            return false;
20732        }
20733        #[cfg(feature = "extra-children")]
20734        if !self.extra_children.is_empty() {
20735            return false;
20736        }
20737        true
20738    }
20739}
20740
20741impl ToXml for CTTblPrBase {
20742    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
20743        #[cfg(feature = "extra-children")]
20744        let mut extra_iter = self.extra_children.iter().peekable();
20745        #[cfg(feature = "extra-children")]
20746        let mut emit_idx: usize = 0;
20747        #[cfg(feature = "extra-children")]
20748        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
20749            extra_iter
20750                .next()
20751                .unwrap()
20752                .node
20753                .write_to(writer)
20754                .map_err(SerializeError::from)?;
20755        }
20756        #[cfg(feature = "wml-styling")]
20757        if let Some(ref val) = self.tbl_style {
20758            val.write_element("w:tblStyle", writer)?;
20759        }
20760        #[cfg(feature = "extra-children")]
20761        {
20762            emit_idx += 1;
20763        }
20764        #[cfg(feature = "extra-children")]
20765        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
20766            extra_iter
20767                .next()
20768                .unwrap()
20769                .node
20770                .write_to(writer)
20771                .map_err(SerializeError::from)?;
20772        }
20773        #[cfg(feature = "wml-tables")]
20774        if let Some(ref val) = self.tblp_pr {
20775            val.write_element("w:tblpPr", writer)?;
20776        }
20777        #[cfg(feature = "extra-children")]
20778        {
20779            emit_idx += 1;
20780        }
20781        #[cfg(feature = "extra-children")]
20782        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
20783            extra_iter
20784                .next()
20785                .unwrap()
20786                .node
20787                .write_to(writer)
20788                .map_err(SerializeError::from)?;
20789        }
20790        #[cfg(feature = "wml-tables")]
20791        if let Some(ref val) = self.tbl_overlap {
20792            val.write_element("w:tblOverlap", writer)?;
20793        }
20794        #[cfg(feature = "extra-children")]
20795        {
20796            emit_idx += 1;
20797        }
20798        #[cfg(feature = "extra-children")]
20799        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
20800            extra_iter
20801                .next()
20802                .unwrap()
20803                .node
20804                .write_to(writer)
20805                .map_err(SerializeError::from)?;
20806        }
20807        #[cfg(feature = "wml-tables")]
20808        if let Some(ref val) = self.bidi_visual {
20809            val.write_element("w:bidiVisual", writer)?;
20810        }
20811        #[cfg(feature = "extra-children")]
20812        {
20813            emit_idx += 1;
20814        }
20815        #[cfg(feature = "extra-children")]
20816        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
20817            extra_iter
20818                .next()
20819                .unwrap()
20820                .node
20821                .write_to(writer)
20822                .map_err(SerializeError::from)?;
20823        }
20824        #[cfg(feature = "wml-styling")]
20825        if let Some(ref val) = self.tbl_style_row_band_size {
20826            val.write_element("w:tblStyleRowBandSize", writer)?;
20827        }
20828        #[cfg(feature = "extra-children")]
20829        {
20830            emit_idx += 1;
20831        }
20832        #[cfg(feature = "extra-children")]
20833        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
20834            extra_iter
20835                .next()
20836                .unwrap()
20837                .node
20838                .write_to(writer)
20839                .map_err(SerializeError::from)?;
20840        }
20841        #[cfg(feature = "wml-styling")]
20842        if let Some(ref val) = self.tbl_style_col_band_size {
20843            val.write_element("w:tblStyleColBandSize", writer)?;
20844        }
20845        #[cfg(feature = "extra-children")]
20846        {
20847            emit_idx += 1;
20848        }
20849        #[cfg(feature = "extra-children")]
20850        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
20851            extra_iter
20852                .next()
20853                .unwrap()
20854                .node
20855                .write_to(writer)
20856                .map_err(SerializeError::from)?;
20857        }
20858        #[cfg(feature = "wml-tables")]
20859        if let Some(ref val) = self.tbl_w {
20860            val.write_element("w:tblW", writer)?;
20861        }
20862        #[cfg(feature = "extra-children")]
20863        {
20864            emit_idx += 1;
20865        }
20866        #[cfg(feature = "extra-children")]
20867        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
20868            extra_iter
20869                .next()
20870                .unwrap()
20871                .node
20872                .write_to(writer)
20873                .map_err(SerializeError::from)?;
20874        }
20875        #[cfg(feature = "wml-tables")]
20876        if let Some(ref val) = self.justification {
20877            val.write_element("w:jc", writer)?;
20878        }
20879        #[cfg(feature = "extra-children")]
20880        {
20881            emit_idx += 1;
20882        }
20883        #[cfg(feature = "extra-children")]
20884        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
20885            extra_iter
20886                .next()
20887                .unwrap()
20888                .node
20889                .write_to(writer)
20890                .map_err(SerializeError::from)?;
20891        }
20892        #[cfg(feature = "wml-tables")]
20893        if let Some(ref val) = self.tbl_cell_spacing {
20894            val.write_element("w:tblCellSpacing", writer)?;
20895        }
20896        #[cfg(feature = "extra-children")]
20897        {
20898            emit_idx += 1;
20899        }
20900        #[cfg(feature = "extra-children")]
20901        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
20902            extra_iter
20903                .next()
20904                .unwrap()
20905                .node
20906                .write_to(writer)
20907                .map_err(SerializeError::from)?;
20908        }
20909        #[cfg(feature = "wml-tables")]
20910        if let Some(ref val) = self.tbl_ind {
20911            val.write_element("w:tblInd", writer)?;
20912        }
20913        #[cfg(feature = "extra-children")]
20914        {
20915            emit_idx += 1;
20916        }
20917        #[cfg(feature = "extra-children")]
20918        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
20919            extra_iter
20920                .next()
20921                .unwrap()
20922                .node
20923                .write_to(writer)
20924                .map_err(SerializeError::from)?;
20925        }
20926        #[cfg(feature = "wml-tables")]
20927        if let Some(ref val) = self.tbl_borders {
20928            val.write_element("w:tblBorders", writer)?;
20929        }
20930        #[cfg(feature = "extra-children")]
20931        {
20932            emit_idx += 1;
20933        }
20934        #[cfg(feature = "extra-children")]
20935        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
20936            extra_iter
20937                .next()
20938                .unwrap()
20939                .node
20940                .write_to(writer)
20941                .map_err(SerializeError::from)?;
20942        }
20943        #[cfg(feature = "wml-tables")]
20944        if let Some(ref val) = self.shading {
20945            val.write_element("w:shd", writer)?;
20946        }
20947        #[cfg(feature = "extra-children")]
20948        {
20949            emit_idx += 1;
20950        }
20951        #[cfg(feature = "extra-children")]
20952        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
20953            extra_iter
20954                .next()
20955                .unwrap()
20956                .node
20957                .write_to(writer)
20958                .map_err(SerializeError::from)?;
20959        }
20960        #[cfg(feature = "wml-tables")]
20961        if let Some(ref val) = self.tbl_layout {
20962            val.write_element("w:tblLayout", writer)?;
20963        }
20964        #[cfg(feature = "extra-children")]
20965        {
20966            emit_idx += 1;
20967        }
20968        #[cfg(feature = "extra-children")]
20969        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
20970            extra_iter
20971                .next()
20972                .unwrap()
20973                .node
20974                .write_to(writer)
20975                .map_err(SerializeError::from)?;
20976        }
20977        #[cfg(feature = "wml-tables")]
20978        if let Some(ref val) = self.tbl_cell_mar {
20979            val.write_element("w:tblCellMar", writer)?;
20980        }
20981        #[cfg(feature = "extra-children")]
20982        {
20983            emit_idx += 1;
20984        }
20985        #[cfg(feature = "extra-children")]
20986        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
20987            extra_iter
20988                .next()
20989                .unwrap()
20990                .node
20991                .write_to(writer)
20992                .map_err(SerializeError::from)?;
20993        }
20994        #[cfg(feature = "wml-tables")]
20995        if let Some(ref val) = self.tbl_look {
20996            val.write_element("w:tblLook", writer)?;
20997        }
20998        #[cfg(feature = "extra-children")]
20999        {
21000            emit_idx += 1;
21001        }
21002        #[cfg(feature = "extra-children")]
21003        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21004            extra_iter
21005                .next()
21006                .unwrap()
21007                .node
21008                .write_to(writer)
21009                .map_err(SerializeError::from)?;
21010        }
21011        #[cfg(feature = "wml-tables")]
21012        if let Some(ref val) = self.tbl_caption {
21013            val.write_element("w:tblCaption", writer)?;
21014        }
21015        #[cfg(feature = "extra-children")]
21016        {
21017            emit_idx += 1;
21018        }
21019        #[cfg(feature = "extra-children")]
21020        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21021            extra_iter
21022                .next()
21023                .unwrap()
21024                .node
21025                .write_to(writer)
21026                .map_err(SerializeError::from)?;
21027        }
21028        #[cfg(feature = "wml-tables")]
21029        if let Some(ref val) = self.tbl_description {
21030            val.write_element("w:tblDescription", writer)?;
21031        }
21032        #[cfg(feature = "extra-children")]
21033        {
21034            emit_idx += 1;
21035        }
21036        #[cfg(feature = "extra-children")]
21037        for extra in extra_iter {
21038            extra.node.write_to(writer).map_err(SerializeError::from)?;
21039        }
21040        Ok(())
21041    }
21042
21043    fn is_empty_element(&self) -> bool {
21044        #[cfg(feature = "wml-styling")]
21045        if self.tbl_style.is_some() {
21046            return false;
21047        }
21048        #[cfg(feature = "wml-tables")]
21049        if self.tblp_pr.is_some() {
21050            return false;
21051        }
21052        #[cfg(feature = "wml-tables")]
21053        if self.tbl_overlap.is_some() {
21054            return false;
21055        }
21056        #[cfg(feature = "wml-tables")]
21057        if self.bidi_visual.is_some() {
21058            return false;
21059        }
21060        #[cfg(feature = "wml-styling")]
21061        if self.tbl_style_row_band_size.is_some() {
21062            return false;
21063        }
21064        #[cfg(feature = "wml-styling")]
21065        if self.tbl_style_col_band_size.is_some() {
21066            return false;
21067        }
21068        #[cfg(feature = "wml-tables")]
21069        if self.tbl_w.is_some() {
21070            return false;
21071        }
21072        #[cfg(feature = "wml-tables")]
21073        if self.justification.is_some() {
21074            return false;
21075        }
21076        #[cfg(feature = "wml-tables")]
21077        if self.tbl_cell_spacing.is_some() {
21078            return false;
21079        }
21080        #[cfg(feature = "wml-tables")]
21081        if self.tbl_ind.is_some() {
21082            return false;
21083        }
21084        #[cfg(feature = "wml-tables")]
21085        if self.tbl_borders.is_some() {
21086            return false;
21087        }
21088        #[cfg(feature = "wml-tables")]
21089        if self.shading.is_some() {
21090            return false;
21091        }
21092        #[cfg(feature = "wml-tables")]
21093        if self.tbl_layout.is_some() {
21094            return false;
21095        }
21096        #[cfg(feature = "wml-tables")]
21097        if self.tbl_cell_mar.is_some() {
21098            return false;
21099        }
21100        #[cfg(feature = "wml-tables")]
21101        if self.tbl_look.is_some() {
21102            return false;
21103        }
21104        #[cfg(feature = "wml-tables")]
21105        if self.tbl_caption.is_some() {
21106            return false;
21107        }
21108        #[cfg(feature = "wml-tables")]
21109        if self.tbl_description.is_some() {
21110            return false;
21111        }
21112        #[cfg(feature = "extra-children")]
21113        if !self.extra_children.is_empty() {
21114            return false;
21115        }
21116        true
21117    }
21118}
21119
21120impl ToXml for TableProperties {
21121    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
21122        #[cfg(feature = "extra-children")]
21123        let mut extra_iter = self.extra_children.iter().peekable();
21124        #[cfg(feature = "extra-children")]
21125        let mut emit_idx: usize = 0;
21126        #[cfg(feature = "extra-children")]
21127        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21128            extra_iter
21129                .next()
21130                .unwrap()
21131                .node
21132                .write_to(writer)
21133                .map_err(SerializeError::from)?;
21134        }
21135        #[cfg(feature = "wml-styling")]
21136        if let Some(ref val) = self.tbl_style {
21137            val.write_element("w:tblStyle", writer)?;
21138        }
21139        #[cfg(feature = "extra-children")]
21140        {
21141            emit_idx += 1;
21142        }
21143        #[cfg(feature = "extra-children")]
21144        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21145            extra_iter
21146                .next()
21147                .unwrap()
21148                .node
21149                .write_to(writer)
21150                .map_err(SerializeError::from)?;
21151        }
21152        #[cfg(feature = "wml-tables")]
21153        if let Some(ref val) = self.tblp_pr {
21154            val.write_element("w:tblpPr", writer)?;
21155        }
21156        #[cfg(feature = "extra-children")]
21157        {
21158            emit_idx += 1;
21159        }
21160        #[cfg(feature = "extra-children")]
21161        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21162            extra_iter
21163                .next()
21164                .unwrap()
21165                .node
21166                .write_to(writer)
21167                .map_err(SerializeError::from)?;
21168        }
21169        #[cfg(feature = "wml-tables")]
21170        if let Some(ref val) = self.tbl_overlap {
21171            val.write_element("w:tblOverlap", writer)?;
21172        }
21173        #[cfg(feature = "extra-children")]
21174        {
21175            emit_idx += 1;
21176        }
21177        #[cfg(feature = "extra-children")]
21178        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21179            extra_iter
21180                .next()
21181                .unwrap()
21182                .node
21183                .write_to(writer)
21184                .map_err(SerializeError::from)?;
21185        }
21186        #[cfg(feature = "wml-tables")]
21187        if let Some(ref val) = self.bidi_visual {
21188            val.write_element("w:bidiVisual", writer)?;
21189        }
21190        #[cfg(feature = "extra-children")]
21191        {
21192            emit_idx += 1;
21193        }
21194        #[cfg(feature = "extra-children")]
21195        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21196            extra_iter
21197                .next()
21198                .unwrap()
21199                .node
21200                .write_to(writer)
21201                .map_err(SerializeError::from)?;
21202        }
21203        #[cfg(feature = "wml-styling")]
21204        if let Some(ref val) = self.tbl_style_row_band_size {
21205            val.write_element("w:tblStyleRowBandSize", writer)?;
21206        }
21207        #[cfg(feature = "extra-children")]
21208        {
21209            emit_idx += 1;
21210        }
21211        #[cfg(feature = "extra-children")]
21212        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21213            extra_iter
21214                .next()
21215                .unwrap()
21216                .node
21217                .write_to(writer)
21218                .map_err(SerializeError::from)?;
21219        }
21220        #[cfg(feature = "wml-styling")]
21221        if let Some(ref val) = self.tbl_style_col_band_size {
21222            val.write_element("w:tblStyleColBandSize", writer)?;
21223        }
21224        #[cfg(feature = "extra-children")]
21225        {
21226            emit_idx += 1;
21227        }
21228        #[cfg(feature = "extra-children")]
21229        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21230            extra_iter
21231                .next()
21232                .unwrap()
21233                .node
21234                .write_to(writer)
21235                .map_err(SerializeError::from)?;
21236        }
21237        #[cfg(feature = "wml-tables")]
21238        if let Some(ref val) = self.tbl_w {
21239            val.write_element("w:tblW", writer)?;
21240        }
21241        #[cfg(feature = "extra-children")]
21242        {
21243            emit_idx += 1;
21244        }
21245        #[cfg(feature = "extra-children")]
21246        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21247            extra_iter
21248                .next()
21249                .unwrap()
21250                .node
21251                .write_to(writer)
21252                .map_err(SerializeError::from)?;
21253        }
21254        #[cfg(feature = "wml-tables")]
21255        if let Some(ref val) = self.justification {
21256            val.write_element("w:jc", writer)?;
21257        }
21258        #[cfg(feature = "extra-children")]
21259        {
21260            emit_idx += 1;
21261        }
21262        #[cfg(feature = "extra-children")]
21263        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21264            extra_iter
21265                .next()
21266                .unwrap()
21267                .node
21268                .write_to(writer)
21269                .map_err(SerializeError::from)?;
21270        }
21271        #[cfg(feature = "wml-tables")]
21272        if let Some(ref val) = self.tbl_cell_spacing {
21273            val.write_element("w:tblCellSpacing", writer)?;
21274        }
21275        #[cfg(feature = "extra-children")]
21276        {
21277            emit_idx += 1;
21278        }
21279        #[cfg(feature = "extra-children")]
21280        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21281            extra_iter
21282                .next()
21283                .unwrap()
21284                .node
21285                .write_to(writer)
21286                .map_err(SerializeError::from)?;
21287        }
21288        #[cfg(feature = "wml-tables")]
21289        if let Some(ref val) = self.tbl_ind {
21290            val.write_element("w:tblInd", writer)?;
21291        }
21292        #[cfg(feature = "extra-children")]
21293        {
21294            emit_idx += 1;
21295        }
21296        #[cfg(feature = "extra-children")]
21297        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21298            extra_iter
21299                .next()
21300                .unwrap()
21301                .node
21302                .write_to(writer)
21303                .map_err(SerializeError::from)?;
21304        }
21305        #[cfg(feature = "wml-tables")]
21306        if let Some(ref val) = self.tbl_borders {
21307            val.write_element("w:tblBorders", writer)?;
21308        }
21309        #[cfg(feature = "extra-children")]
21310        {
21311            emit_idx += 1;
21312        }
21313        #[cfg(feature = "extra-children")]
21314        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21315            extra_iter
21316                .next()
21317                .unwrap()
21318                .node
21319                .write_to(writer)
21320                .map_err(SerializeError::from)?;
21321        }
21322        #[cfg(feature = "wml-tables")]
21323        if let Some(ref val) = self.shading {
21324            val.write_element("w:shd", writer)?;
21325        }
21326        #[cfg(feature = "extra-children")]
21327        {
21328            emit_idx += 1;
21329        }
21330        #[cfg(feature = "extra-children")]
21331        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21332            extra_iter
21333                .next()
21334                .unwrap()
21335                .node
21336                .write_to(writer)
21337                .map_err(SerializeError::from)?;
21338        }
21339        #[cfg(feature = "wml-tables")]
21340        if let Some(ref val) = self.tbl_layout {
21341            val.write_element("w:tblLayout", writer)?;
21342        }
21343        #[cfg(feature = "extra-children")]
21344        {
21345            emit_idx += 1;
21346        }
21347        #[cfg(feature = "extra-children")]
21348        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21349            extra_iter
21350                .next()
21351                .unwrap()
21352                .node
21353                .write_to(writer)
21354                .map_err(SerializeError::from)?;
21355        }
21356        #[cfg(feature = "wml-tables")]
21357        if let Some(ref val) = self.tbl_cell_mar {
21358            val.write_element("w:tblCellMar", writer)?;
21359        }
21360        #[cfg(feature = "extra-children")]
21361        {
21362            emit_idx += 1;
21363        }
21364        #[cfg(feature = "extra-children")]
21365        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21366            extra_iter
21367                .next()
21368                .unwrap()
21369                .node
21370                .write_to(writer)
21371                .map_err(SerializeError::from)?;
21372        }
21373        #[cfg(feature = "wml-tables")]
21374        if let Some(ref val) = self.tbl_look {
21375            val.write_element("w:tblLook", writer)?;
21376        }
21377        #[cfg(feature = "extra-children")]
21378        {
21379            emit_idx += 1;
21380        }
21381        #[cfg(feature = "extra-children")]
21382        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21383            extra_iter
21384                .next()
21385                .unwrap()
21386                .node
21387                .write_to(writer)
21388                .map_err(SerializeError::from)?;
21389        }
21390        #[cfg(feature = "wml-tables")]
21391        if let Some(ref val) = self.tbl_caption {
21392            val.write_element("w:tblCaption", writer)?;
21393        }
21394        #[cfg(feature = "extra-children")]
21395        {
21396            emit_idx += 1;
21397        }
21398        #[cfg(feature = "extra-children")]
21399        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21400            extra_iter
21401                .next()
21402                .unwrap()
21403                .node
21404                .write_to(writer)
21405                .map_err(SerializeError::from)?;
21406        }
21407        #[cfg(feature = "wml-tables")]
21408        if let Some(ref val) = self.tbl_description {
21409            val.write_element("w:tblDescription", writer)?;
21410        }
21411        #[cfg(feature = "extra-children")]
21412        {
21413            emit_idx += 1;
21414        }
21415        #[cfg(feature = "extra-children")]
21416        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21417            extra_iter
21418                .next()
21419                .unwrap()
21420                .node
21421                .write_to(writer)
21422                .map_err(SerializeError::from)?;
21423        }
21424        #[cfg(feature = "wml-track-changes")]
21425        if let Some(ref val) = self.tbl_pr_change {
21426            val.write_element("w:tblPrChange", writer)?;
21427        }
21428        #[cfg(feature = "extra-children")]
21429        {
21430            emit_idx += 1;
21431        }
21432        #[cfg(feature = "extra-children")]
21433        for extra in extra_iter {
21434            extra.node.write_to(writer).map_err(SerializeError::from)?;
21435        }
21436        Ok(())
21437    }
21438
21439    fn is_empty_element(&self) -> bool {
21440        #[cfg(feature = "wml-styling")]
21441        if self.tbl_style.is_some() {
21442            return false;
21443        }
21444        #[cfg(feature = "wml-tables")]
21445        if self.tblp_pr.is_some() {
21446            return false;
21447        }
21448        #[cfg(feature = "wml-tables")]
21449        if self.tbl_overlap.is_some() {
21450            return false;
21451        }
21452        #[cfg(feature = "wml-tables")]
21453        if self.bidi_visual.is_some() {
21454            return false;
21455        }
21456        #[cfg(feature = "wml-styling")]
21457        if self.tbl_style_row_band_size.is_some() {
21458            return false;
21459        }
21460        #[cfg(feature = "wml-styling")]
21461        if self.tbl_style_col_band_size.is_some() {
21462            return false;
21463        }
21464        #[cfg(feature = "wml-tables")]
21465        if self.tbl_w.is_some() {
21466            return false;
21467        }
21468        #[cfg(feature = "wml-tables")]
21469        if self.justification.is_some() {
21470            return false;
21471        }
21472        #[cfg(feature = "wml-tables")]
21473        if self.tbl_cell_spacing.is_some() {
21474            return false;
21475        }
21476        #[cfg(feature = "wml-tables")]
21477        if self.tbl_ind.is_some() {
21478            return false;
21479        }
21480        #[cfg(feature = "wml-tables")]
21481        if self.tbl_borders.is_some() {
21482            return false;
21483        }
21484        #[cfg(feature = "wml-tables")]
21485        if self.shading.is_some() {
21486            return false;
21487        }
21488        #[cfg(feature = "wml-tables")]
21489        if self.tbl_layout.is_some() {
21490            return false;
21491        }
21492        #[cfg(feature = "wml-tables")]
21493        if self.tbl_cell_mar.is_some() {
21494            return false;
21495        }
21496        #[cfg(feature = "wml-tables")]
21497        if self.tbl_look.is_some() {
21498            return false;
21499        }
21500        #[cfg(feature = "wml-tables")]
21501        if self.tbl_caption.is_some() {
21502            return false;
21503        }
21504        #[cfg(feature = "wml-tables")]
21505        if self.tbl_description.is_some() {
21506            return false;
21507        }
21508        #[cfg(feature = "wml-track-changes")]
21509        if self.tbl_pr_change.is_some() {
21510            return false;
21511        }
21512        #[cfg(feature = "extra-children")]
21513        if !self.extra_children.is_empty() {
21514            return false;
21515        }
21516        true
21517    }
21518}
21519
21520impl ToXml for CTTblPrExBase {
21521    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
21522        #[cfg(feature = "extra-children")]
21523        let mut extra_iter = self.extra_children.iter().peekable();
21524        #[cfg(feature = "extra-children")]
21525        let mut emit_idx: usize = 0;
21526        #[cfg(feature = "extra-children")]
21527        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21528            extra_iter
21529                .next()
21530                .unwrap()
21531                .node
21532                .write_to(writer)
21533                .map_err(SerializeError::from)?;
21534        }
21535        #[cfg(feature = "wml-tables")]
21536        if let Some(ref val) = self.tbl_w {
21537            val.write_element("w:tblW", writer)?;
21538        }
21539        #[cfg(feature = "extra-children")]
21540        {
21541            emit_idx += 1;
21542        }
21543        #[cfg(feature = "extra-children")]
21544        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21545            extra_iter
21546                .next()
21547                .unwrap()
21548                .node
21549                .write_to(writer)
21550                .map_err(SerializeError::from)?;
21551        }
21552        #[cfg(feature = "wml-tables")]
21553        if let Some(ref val) = self.justification {
21554            val.write_element("w:jc", writer)?;
21555        }
21556        #[cfg(feature = "extra-children")]
21557        {
21558            emit_idx += 1;
21559        }
21560        #[cfg(feature = "extra-children")]
21561        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21562            extra_iter
21563                .next()
21564                .unwrap()
21565                .node
21566                .write_to(writer)
21567                .map_err(SerializeError::from)?;
21568        }
21569        #[cfg(feature = "wml-tables")]
21570        if let Some(ref val) = self.tbl_cell_spacing {
21571            val.write_element("w:tblCellSpacing", writer)?;
21572        }
21573        #[cfg(feature = "extra-children")]
21574        {
21575            emit_idx += 1;
21576        }
21577        #[cfg(feature = "extra-children")]
21578        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21579            extra_iter
21580                .next()
21581                .unwrap()
21582                .node
21583                .write_to(writer)
21584                .map_err(SerializeError::from)?;
21585        }
21586        #[cfg(feature = "wml-tables")]
21587        if let Some(ref val) = self.tbl_ind {
21588            val.write_element("w:tblInd", writer)?;
21589        }
21590        #[cfg(feature = "extra-children")]
21591        {
21592            emit_idx += 1;
21593        }
21594        #[cfg(feature = "extra-children")]
21595        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21596            extra_iter
21597                .next()
21598                .unwrap()
21599                .node
21600                .write_to(writer)
21601                .map_err(SerializeError::from)?;
21602        }
21603        #[cfg(feature = "wml-tables")]
21604        if let Some(ref val) = self.tbl_borders {
21605            val.write_element("w:tblBorders", writer)?;
21606        }
21607        #[cfg(feature = "extra-children")]
21608        {
21609            emit_idx += 1;
21610        }
21611        #[cfg(feature = "extra-children")]
21612        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21613            extra_iter
21614                .next()
21615                .unwrap()
21616                .node
21617                .write_to(writer)
21618                .map_err(SerializeError::from)?;
21619        }
21620        #[cfg(feature = "wml-tables")]
21621        if let Some(ref val) = self.shading {
21622            val.write_element("w:shd", writer)?;
21623        }
21624        #[cfg(feature = "extra-children")]
21625        {
21626            emit_idx += 1;
21627        }
21628        #[cfg(feature = "extra-children")]
21629        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21630            extra_iter
21631                .next()
21632                .unwrap()
21633                .node
21634                .write_to(writer)
21635                .map_err(SerializeError::from)?;
21636        }
21637        #[cfg(feature = "wml-tables")]
21638        if let Some(ref val) = self.tbl_layout {
21639            val.write_element("w:tblLayout", writer)?;
21640        }
21641        #[cfg(feature = "extra-children")]
21642        {
21643            emit_idx += 1;
21644        }
21645        #[cfg(feature = "extra-children")]
21646        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21647            extra_iter
21648                .next()
21649                .unwrap()
21650                .node
21651                .write_to(writer)
21652                .map_err(SerializeError::from)?;
21653        }
21654        #[cfg(feature = "wml-tables")]
21655        if let Some(ref val) = self.tbl_cell_mar {
21656            val.write_element("w:tblCellMar", writer)?;
21657        }
21658        #[cfg(feature = "extra-children")]
21659        {
21660            emit_idx += 1;
21661        }
21662        #[cfg(feature = "extra-children")]
21663        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21664            extra_iter
21665                .next()
21666                .unwrap()
21667                .node
21668                .write_to(writer)
21669                .map_err(SerializeError::from)?;
21670        }
21671        #[cfg(feature = "wml-tables")]
21672        if let Some(ref val) = self.tbl_look {
21673            val.write_element("w:tblLook", writer)?;
21674        }
21675        #[cfg(feature = "extra-children")]
21676        {
21677            emit_idx += 1;
21678        }
21679        #[cfg(feature = "extra-children")]
21680        for extra in extra_iter {
21681            extra.node.write_to(writer).map_err(SerializeError::from)?;
21682        }
21683        Ok(())
21684    }
21685
21686    fn is_empty_element(&self) -> bool {
21687        #[cfg(feature = "wml-tables")]
21688        if self.tbl_w.is_some() {
21689            return false;
21690        }
21691        #[cfg(feature = "wml-tables")]
21692        if self.justification.is_some() {
21693            return false;
21694        }
21695        #[cfg(feature = "wml-tables")]
21696        if self.tbl_cell_spacing.is_some() {
21697            return false;
21698        }
21699        #[cfg(feature = "wml-tables")]
21700        if self.tbl_ind.is_some() {
21701            return false;
21702        }
21703        #[cfg(feature = "wml-tables")]
21704        if self.tbl_borders.is_some() {
21705            return false;
21706        }
21707        #[cfg(feature = "wml-tables")]
21708        if self.shading.is_some() {
21709            return false;
21710        }
21711        #[cfg(feature = "wml-tables")]
21712        if self.tbl_layout.is_some() {
21713            return false;
21714        }
21715        #[cfg(feature = "wml-tables")]
21716        if self.tbl_cell_mar.is_some() {
21717            return false;
21718        }
21719        #[cfg(feature = "wml-tables")]
21720        if self.tbl_look.is_some() {
21721            return false;
21722        }
21723        #[cfg(feature = "extra-children")]
21724        if !self.extra_children.is_empty() {
21725            return false;
21726        }
21727        true
21728    }
21729}
21730
21731impl ToXml for CTTblPrEx {
21732    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
21733        #[cfg(feature = "extra-children")]
21734        let mut extra_iter = self.extra_children.iter().peekable();
21735        #[cfg(feature = "extra-children")]
21736        let mut emit_idx: usize = 0;
21737        #[cfg(feature = "extra-children")]
21738        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21739            extra_iter
21740                .next()
21741                .unwrap()
21742                .node
21743                .write_to(writer)
21744                .map_err(SerializeError::from)?;
21745        }
21746        if let Some(ref val) = self.tbl_w {
21747            val.write_element("w:tblW", writer)?;
21748        }
21749        #[cfg(feature = "extra-children")]
21750        {
21751            emit_idx += 1;
21752        }
21753        #[cfg(feature = "extra-children")]
21754        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21755            extra_iter
21756                .next()
21757                .unwrap()
21758                .node
21759                .write_to(writer)
21760                .map_err(SerializeError::from)?;
21761        }
21762        if let Some(ref val) = self.justification {
21763            val.write_element("w:jc", writer)?;
21764        }
21765        #[cfg(feature = "extra-children")]
21766        {
21767            emit_idx += 1;
21768        }
21769        #[cfg(feature = "extra-children")]
21770        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21771            extra_iter
21772                .next()
21773                .unwrap()
21774                .node
21775                .write_to(writer)
21776                .map_err(SerializeError::from)?;
21777        }
21778        if let Some(ref val) = self.tbl_cell_spacing {
21779            val.write_element("w:tblCellSpacing", writer)?;
21780        }
21781        #[cfg(feature = "extra-children")]
21782        {
21783            emit_idx += 1;
21784        }
21785        #[cfg(feature = "extra-children")]
21786        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21787            extra_iter
21788                .next()
21789                .unwrap()
21790                .node
21791                .write_to(writer)
21792                .map_err(SerializeError::from)?;
21793        }
21794        if let Some(ref val) = self.tbl_ind {
21795            val.write_element("w:tblInd", writer)?;
21796        }
21797        #[cfg(feature = "extra-children")]
21798        {
21799            emit_idx += 1;
21800        }
21801        #[cfg(feature = "extra-children")]
21802        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21803            extra_iter
21804                .next()
21805                .unwrap()
21806                .node
21807                .write_to(writer)
21808                .map_err(SerializeError::from)?;
21809        }
21810        if let Some(ref val) = self.tbl_borders {
21811            val.write_element("w:tblBorders", writer)?;
21812        }
21813        #[cfg(feature = "extra-children")]
21814        {
21815            emit_idx += 1;
21816        }
21817        #[cfg(feature = "extra-children")]
21818        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21819            extra_iter
21820                .next()
21821                .unwrap()
21822                .node
21823                .write_to(writer)
21824                .map_err(SerializeError::from)?;
21825        }
21826        if let Some(ref val) = self.shading {
21827            val.write_element("w:shd", writer)?;
21828        }
21829        #[cfg(feature = "extra-children")]
21830        {
21831            emit_idx += 1;
21832        }
21833        #[cfg(feature = "extra-children")]
21834        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21835            extra_iter
21836                .next()
21837                .unwrap()
21838                .node
21839                .write_to(writer)
21840                .map_err(SerializeError::from)?;
21841        }
21842        if let Some(ref val) = self.tbl_layout {
21843            val.write_element("w:tblLayout", writer)?;
21844        }
21845        #[cfg(feature = "extra-children")]
21846        {
21847            emit_idx += 1;
21848        }
21849        #[cfg(feature = "extra-children")]
21850        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21851            extra_iter
21852                .next()
21853                .unwrap()
21854                .node
21855                .write_to(writer)
21856                .map_err(SerializeError::from)?;
21857        }
21858        if let Some(ref val) = self.tbl_cell_mar {
21859            val.write_element("w:tblCellMar", writer)?;
21860        }
21861        #[cfg(feature = "extra-children")]
21862        {
21863            emit_idx += 1;
21864        }
21865        #[cfg(feature = "extra-children")]
21866        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21867            extra_iter
21868                .next()
21869                .unwrap()
21870                .node
21871                .write_to(writer)
21872                .map_err(SerializeError::from)?;
21873        }
21874        if let Some(ref val) = self.tbl_look {
21875            val.write_element("w:tblLook", writer)?;
21876        }
21877        #[cfg(feature = "extra-children")]
21878        {
21879            emit_idx += 1;
21880        }
21881        #[cfg(feature = "extra-children")]
21882        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21883            extra_iter
21884                .next()
21885                .unwrap()
21886                .node
21887                .write_to(writer)
21888                .map_err(SerializeError::from)?;
21889        }
21890        #[cfg(feature = "wml-track-changes")]
21891        if let Some(ref val) = self.tbl_pr_ex_change {
21892            val.write_element("w:tblPrExChange", writer)?;
21893        }
21894        #[cfg(feature = "extra-children")]
21895        {
21896            emit_idx += 1;
21897        }
21898        #[cfg(feature = "extra-children")]
21899        for extra in extra_iter {
21900            extra.node.write_to(writer).map_err(SerializeError::from)?;
21901        }
21902        Ok(())
21903    }
21904
21905    fn is_empty_element(&self) -> bool {
21906        if self.tbl_w.is_some() {
21907            return false;
21908        }
21909        if self.justification.is_some() {
21910            return false;
21911        }
21912        if self.tbl_cell_spacing.is_some() {
21913            return false;
21914        }
21915        if self.tbl_ind.is_some() {
21916            return false;
21917        }
21918        if self.tbl_borders.is_some() {
21919            return false;
21920        }
21921        if self.shading.is_some() {
21922            return false;
21923        }
21924        if self.tbl_layout.is_some() {
21925            return false;
21926        }
21927        if self.tbl_cell_mar.is_some() {
21928            return false;
21929        }
21930        if self.tbl_look.is_some() {
21931            return false;
21932        }
21933        #[cfg(feature = "wml-track-changes")]
21934        if self.tbl_pr_ex_change.is_some() {
21935            return false;
21936        }
21937        #[cfg(feature = "extra-children")]
21938        if !self.extra_children.is_empty() {
21939            return false;
21940        }
21941        true
21942    }
21943}
21944
21945impl ToXml for Table {
21946    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
21947        #[cfg(feature = "extra-children")]
21948        let mut extra_iter = self.extra_children.iter().peekable();
21949        #[cfg(feature = "extra-children")]
21950        let mut emit_idx: usize = 0;
21951        for item in &self.range_markup {
21952            #[cfg(feature = "extra-children")]
21953            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21954                extra_iter
21955                    .next()
21956                    .unwrap()
21957                    .node
21958                    .write_to(writer)
21959                    .map_err(SerializeError::from)?;
21960            }
21961            item.write_element("", writer)?;
21962            #[cfg(feature = "extra-children")]
21963            {
21964                emit_idx += 1;
21965            }
21966        }
21967        #[cfg(feature = "extra-children")]
21968        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21969            extra_iter
21970                .next()
21971                .unwrap()
21972                .node
21973                .write_to(writer)
21974                .map_err(SerializeError::from)?;
21975        }
21976        {
21977            let val = &self.table_properties;
21978            val.write_element("w:tblPr", writer)?;
21979        }
21980        #[cfg(feature = "extra-children")]
21981        {
21982            emit_idx += 1;
21983        }
21984        #[cfg(feature = "extra-children")]
21985        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21986            extra_iter
21987                .next()
21988                .unwrap()
21989                .node
21990                .write_to(writer)
21991                .map_err(SerializeError::from)?;
21992        }
21993        {
21994            let val = &self.tbl_grid;
21995            val.write_element("w:tblGrid", writer)?;
21996        }
21997        #[cfg(feature = "extra-children")]
21998        {
21999            emit_idx += 1;
22000        }
22001        for item in &self.rows {
22002            #[cfg(feature = "extra-children")]
22003            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
22004                extra_iter
22005                    .next()
22006                    .unwrap()
22007                    .node
22008                    .write_to(writer)
22009                    .map_err(SerializeError::from)?;
22010            }
22011            item.write_element("", writer)?;
22012            #[cfg(feature = "extra-children")]
22013            {
22014                emit_idx += 1;
22015            }
22016        }
22017        #[cfg(feature = "extra-children")]
22018        for extra in extra_iter {
22019            extra.node.write_to(writer).map_err(SerializeError::from)?;
22020        }
22021        Ok(())
22022    }
22023
22024    fn is_empty_element(&self) -> bool {
22025        if !self.range_markup.is_empty() {
22026            return false;
22027        }
22028        false
22029    }
22030}
22031
22032impl ToXml for CTTblLook {
22033    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
22034        #[allow(unused_mut)]
22035        let mut start = start;
22036        #[cfg(feature = "wml-tables")]
22037        if let Some(ref val) = self.first_row {
22038            {
22039                let s = val.to_string();
22040                start.push_attribute(("w:firstRow", s.as_str()));
22041            }
22042        }
22043        #[cfg(feature = "wml-tables")]
22044        if let Some(ref val) = self.last_row {
22045            {
22046                let s = val.to_string();
22047                start.push_attribute(("w:lastRow", s.as_str()));
22048            }
22049        }
22050        #[cfg(feature = "wml-tables")]
22051        if let Some(ref val) = self.first_column {
22052            {
22053                let s = val.to_string();
22054                start.push_attribute(("w:firstColumn", s.as_str()));
22055            }
22056        }
22057        #[cfg(feature = "wml-tables")]
22058        if let Some(ref val) = self.last_column {
22059            {
22060                let s = val.to_string();
22061                start.push_attribute(("w:lastColumn", s.as_str()));
22062            }
22063        }
22064        #[cfg(feature = "wml-tables")]
22065        if let Some(ref val) = self.no_h_band {
22066            {
22067                let s = val.to_string();
22068                start.push_attribute(("w:noHBand", s.as_str()));
22069            }
22070        }
22071        #[cfg(feature = "wml-tables")]
22072        if let Some(ref val) = self.no_v_band {
22073            {
22074                let s = val.to_string();
22075                start.push_attribute(("w:noVBand", s.as_str()));
22076            }
22077        }
22078        #[cfg(feature = "wml-tables")]
22079        if let Some(ref val) = self.value {
22080            {
22081                let hex = encode_hex(val);
22082                start.push_attribute(("w:val", hex.as_str()));
22083            }
22084        }
22085        #[cfg(feature = "extra-attrs")]
22086        for (key, value) in &self.extra_attrs {
22087            start.push_attribute((key.as_str(), value.as_str()));
22088        }
22089        start
22090    }
22091
22092    fn is_empty_element(&self) -> bool {
22093        true
22094    }
22095}
22096
22097impl ToXml for CTFtnPos {
22098    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
22099        #[allow(unused_mut)]
22100        let mut start = start;
22101        {
22102            let val = &self.value;
22103            {
22104                let s = val.to_string();
22105                start.push_attribute(("w:val", s.as_str()));
22106            }
22107        }
22108        #[cfg(feature = "extra-attrs")]
22109        for (key, value) in &self.extra_attrs {
22110            start.push_attribute((key.as_str(), value.as_str()));
22111        }
22112        start
22113    }
22114
22115    fn is_empty_element(&self) -> bool {
22116        true
22117    }
22118}
22119
22120impl ToXml for CTEdnPos {
22121    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
22122        #[allow(unused_mut)]
22123        let mut start = start;
22124        {
22125            let val = &self.value;
22126            {
22127                let s = val.to_string();
22128                start.push_attribute(("w:val", s.as_str()));
22129            }
22130        }
22131        #[cfg(feature = "extra-attrs")]
22132        for (key, value) in &self.extra_attrs {
22133            start.push_attribute((key.as_str(), value.as_str()));
22134        }
22135        start
22136    }
22137
22138    fn is_empty_element(&self) -> bool {
22139        true
22140    }
22141}
22142
22143impl ToXml for CTNumFmt {
22144    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
22145        #[allow(unused_mut)]
22146        let mut start = start;
22147        {
22148            let val = &self.value;
22149            {
22150                let s = val.to_string();
22151                start.push_attribute(("w:val", s.as_str()));
22152            }
22153        }
22154        #[cfg(feature = "wml-numbering")]
22155        if let Some(ref val) = self.format {
22156            start.push_attribute(("w:format", val.as_str()));
22157        }
22158        #[cfg(feature = "extra-attrs")]
22159        for (key, value) in &self.extra_attrs {
22160            start.push_attribute((key.as_str(), value.as_str()));
22161        }
22162        start
22163    }
22164
22165    fn is_empty_element(&self) -> bool {
22166        true
22167    }
22168}
22169
22170impl ToXml for CTNumRestart {
22171    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
22172        #[allow(unused_mut)]
22173        let mut start = start;
22174        {
22175            let val = &self.value;
22176            {
22177                let s = val.to_string();
22178                start.push_attribute(("w:val", s.as_str()));
22179            }
22180        }
22181        #[cfg(feature = "extra-attrs")]
22182        for (key, value) in &self.extra_attrs {
22183            start.push_attribute((key.as_str(), value.as_str()));
22184        }
22185        start
22186    }
22187
22188    fn is_empty_element(&self) -> bool {
22189        true
22190    }
22191}
22192
22193impl ToXml for FootnoteEndnoteRef {
22194    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
22195        #[allow(unused_mut)]
22196        let mut start = start;
22197        #[cfg(feature = "wml-comments")]
22198        if let Some(ref val) = self.custom_mark_follows {
22199            {
22200                let s = val.to_string();
22201                start.push_attribute(("w:customMarkFollows", s.as_str()));
22202            }
22203        }
22204        {
22205            let val = &self.id;
22206            {
22207                let s = val.to_string();
22208                start.push_attribute(("w:id", s.as_str()));
22209            }
22210        }
22211        #[cfg(feature = "extra-attrs")]
22212        for (key, value) in &self.extra_attrs {
22213            start.push_attribute((key.as_str(), value.as_str()));
22214        }
22215        start
22216    }
22217
22218    fn is_empty_element(&self) -> bool {
22219        true
22220    }
22221}
22222
22223impl ToXml for CTFtnEdnSepRef {
22224    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
22225        #[allow(unused_mut)]
22226        let mut start = start;
22227        {
22228            let val = &self.id;
22229            {
22230                let s = val.to_string();
22231                start.push_attribute(("w:id", s.as_str()));
22232            }
22233        }
22234        #[cfg(feature = "extra-attrs")]
22235        for (key, value) in &self.extra_attrs {
22236            start.push_attribute((key.as_str(), value.as_str()));
22237        }
22238        start
22239    }
22240
22241    fn is_empty_element(&self) -> bool {
22242        true
22243    }
22244}
22245
22246impl ToXml for FootnoteEndnote {
22247    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
22248        #[allow(unused_mut)]
22249        let mut start = start;
22250        #[cfg(feature = "wml-comments")]
22251        if let Some(ref val) = self.r#type {
22252            {
22253                let s = val.to_string();
22254                start.push_attribute(("w:type", s.as_str()));
22255            }
22256        }
22257        {
22258            let val = &self.id;
22259            {
22260                let s = val.to_string();
22261                start.push_attribute(("w:id", s.as_str()));
22262            }
22263        }
22264        #[cfg(feature = "extra-attrs")]
22265        for (key, value) in &self.extra_attrs {
22266            start.push_attribute((key.as_str(), value.as_str()));
22267        }
22268        start
22269    }
22270
22271    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
22272        #[cfg(feature = "extra-children")]
22273        let mut extra_iter = self.extra_children.iter().peekable();
22274        #[cfg(feature = "extra-children")]
22275        let mut emit_idx: usize = 0;
22276        for item in &self.block_content {
22277            #[cfg(feature = "extra-children")]
22278            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
22279                extra_iter
22280                    .next()
22281                    .unwrap()
22282                    .node
22283                    .write_to(writer)
22284                    .map_err(SerializeError::from)?;
22285            }
22286            item.write_element("", writer)?;
22287            #[cfg(feature = "extra-children")]
22288            {
22289                emit_idx += 1;
22290            }
22291        }
22292        #[cfg(feature = "extra-children")]
22293        for extra in extra_iter {
22294            extra.node.write_to(writer).map_err(SerializeError::from)?;
22295        }
22296        Ok(())
22297    }
22298
22299    fn is_empty_element(&self) -> bool {
22300        if !self.block_content.is_empty() {
22301            return false;
22302        }
22303        #[cfg(feature = "extra-children")]
22304        if !self.extra_children.is_empty() {
22305            return false;
22306        }
22307        true
22308    }
22309}
22310
22311impl ToXml for EGFtnEdnNumProps {
22312    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
22313        #[cfg(feature = "extra-children")]
22314        let mut extra_iter = self.extra_children.iter().peekable();
22315        #[cfg(feature = "extra-children")]
22316        let mut emit_idx: usize = 0;
22317        #[cfg(feature = "extra-children")]
22318        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
22319            extra_iter
22320                .next()
22321                .unwrap()
22322                .node
22323                .write_to(writer)
22324                .map_err(SerializeError::from)?;
22325        }
22326        if let Some(ref val) = self.num_start {
22327            val.write_element("w:numStart", writer)?;
22328        }
22329        #[cfg(feature = "extra-children")]
22330        {
22331            emit_idx += 1;
22332        }
22333        #[cfg(feature = "extra-children")]
22334        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
22335            extra_iter
22336                .next()
22337                .unwrap()
22338                .node
22339                .write_to(writer)
22340                .map_err(SerializeError::from)?;
22341        }
22342        if let Some(ref val) = self.num_restart {
22343            val.write_element("w:numRestart", writer)?;
22344        }
22345        #[cfg(feature = "extra-children")]
22346        {
22347            emit_idx += 1;
22348        }
22349        #[cfg(feature = "extra-children")]
22350        for extra in extra_iter {
22351            extra.node.write_to(writer).map_err(SerializeError::from)?;
22352        }
22353        Ok(())
22354    }
22355
22356    fn is_empty_element(&self) -> bool {
22357        if self.num_start.is_some() {
22358            return false;
22359        }
22360        if self.num_restart.is_some() {
22361            return false;
22362        }
22363        #[cfg(feature = "extra-children")]
22364        if !self.extra_children.is_empty() {
22365            return false;
22366        }
22367        true
22368    }
22369}
22370
22371impl ToXml for CTFtnProps {
22372    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
22373        #[cfg(feature = "extra-children")]
22374        let mut extra_iter = self.extra_children.iter().peekable();
22375        #[cfg(feature = "extra-children")]
22376        let mut emit_idx: usize = 0;
22377        #[cfg(feature = "extra-children")]
22378        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
22379            extra_iter
22380                .next()
22381                .unwrap()
22382                .node
22383                .write_to(writer)
22384                .map_err(SerializeError::from)?;
22385        }
22386        #[cfg(feature = "wml-comments")]
22387        if let Some(ref val) = self.pos {
22388            val.write_element("w:pos", writer)?;
22389        }
22390        #[cfg(feature = "extra-children")]
22391        {
22392            emit_idx += 1;
22393        }
22394        #[cfg(feature = "extra-children")]
22395        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
22396            extra_iter
22397                .next()
22398                .unwrap()
22399                .node
22400                .write_to(writer)
22401                .map_err(SerializeError::from)?;
22402        }
22403        #[cfg(feature = "wml-comments")]
22404        if let Some(ref val) = self.num_fmt {
22405            val.write_element("w:numFmt", writer)?;
22406        }
22407        #[cfg(feature = "extra-children")]
22408        {
22409            emit_idx += 1;
22410        }
22411        #[cfg(feature = "extra-children")]
22412        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
22413            extra_iter
22414                .next()
22415                .unwrap()
22416                .node
22417                .write_to(writer)
22418                .map_err(SerializeError::from)?;
22419        }
22420        if let Some(ref val) = self.num_start {
22421            val.write_element("w:numStart", writer)?;
22422        }
22423        #[cfg(feature = "extra-children")]
22424        {
22425            emit_idx += 1;
22426        }
22427        #[cfg(feature = "extra-children")]
22428        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
22429            extra_iter
22430                .next()
22431                .unwrap()
22432                .node
22433                .write_to(writer)
22434                .map_err(SerializeError::from)?;
22435        }
22436        if let Some(ref val) = self.num_restart {
22437            val.write_element("w:numRestart", writer)?;
22438        }
22439        #[cfg(feature = "extra-children")]
22440        {
22441            emit_idx += 1;
22442        }
22443        #[cfg(feature = "extra-children")]
22444        for extra in extra_iter {
22445            extra.node.write_to(writer).map_err(SerializeError::from)?;
22446        }
22447        Ok(())
22448    }
22449
22450    fn is_empty_element(&self) -> bool {
22451        #[cfg(feature = "wml-comments")]
22452        if self.pos.is_some() {
22453            return false;
22454        }
22455        #[cfg(feature = "wml-comments")]
22456        if self.num_fmt.is_some() {
22457            return false;
22458        }
22459        if self.num_start.is_some() {
22460            return false;
22461        }
22462        if self.num_restart.is_some() {
22463            return false;
22464        }
22465        #[cfg(feature = "extra-children")]
22466        if !self.extra_children.is_empty() {
22467            return false;
22468        }
22469        true
22470    }
22471}
22472
22473impl ToXml for CTEdnProps {
22474    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
22475        #[cfg(feature = "extra-children")]
22476        let mut extra_iter = self.extra_children.iter().peekable();
22477        #[cfg(feature = "extra-children")]
22478        let mut emit_idx: usize = 0;
22479        #[cfg(feature = "extra-children")]
22480        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
22481            extra_iter
22482                .next()
22483                .unwrap()
22484                .node
22485                .write_to(writer)
22486                .map_err(SerializeError::from)?;
22487        }
22488        #[cfg(feature = "wml-comments")]
22489        if let Some(ref val) = self.pos {
22490            val.write_element("w:pos", writer)?;
22491        }
22492        #[cfg(feature = "extra-children")]
22493        {
22494            emit_idx += 1;
22495        }
22496        #[cfg(feature = "extra-children")]
22497        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
22498            extra_iter
22499                .next()
22500                .unwrap()
22501                .node
22502                .write_to(writer)
22503                .map_err(SerializeError::from)?;
22504        }
22505        #[cfg(feature = "wml-comments")]
22506        if let Some(ref val) = self.num_fmt {
22507            val.write_element("w:numFmt", writer)?;
22508        }
22509        #[cfg(feature = "extra-children")]
22510        {
22511            emit_idx += 1;
22512        }
22513        #[cfg(feature = "extra-children")]
22514        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
22515            extra_iter
22516                .next()
22517                .unwrap()
22518                .node
22519                .write_to(writer)
22520                .map_err(SerializeError::from)?;
22521        }
22522        if let Some(ref val) = self.num_start {
22523            val.write_element("w:numStart", writer)?;
22524        }
22525        #[cfg(feature = "extra-children")]
22526        {
22527            emit_idx += 1;
22528        }
22529        #[cfg(feature = "extra-children")]
22530        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
22531            extra_iter
22532                .next()
22533                .unwrap()
22534                .node
22535                .write_to(writer)
22536                .map_err(SerializeError::from)?;
22537        }
22538        if let Some(ref val) = self.num_restart {
22539            val.write_element("w:numRestart", writer)?;
22540        }
22541        #[cfg(feature = "extra-children")]
22542        {
22543            emit_idx += 1;
22544        }
22545        #[cfg(feature = "extra-children")]
22546        for extra in extra_iter {
22547            extra.node.write_to(writer).map_err(SerializeError::from)?;
22548        }
22549        Ok(())
22550    }
22551
22552    fn is_empty_element(&self) -> bool {
22553        #[cfg(feature = "wml-comments")]
22554        if self.pos.is_some() {
22555            return false;
22556        }
22557        #[cfg(feature = "wml-comments")]
22558        if self.num_fmt.is_some() {
22559            return false;
22560        }
22561        if self.num_start.is_some() {
22562            return false;
22563        }
22564        if self.num_restart.is_some() {
22565            return false;
22566        }
22567        #[cfg(feature = "extra-children")]
22568        if !self.extra_children.is_empty() {
22569            return false;
22570        }
22571        true
22572    }
22573}
22574
22575impl ToXml for CTFtnDocProps {
22576    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
22577        #[cfg(feature = "extra-children")]
22578        let mut extra_iter = self.extra_children.iter().peekable();
22579        #[cfg(feature = "extra-children")]
22580        let mut emit_idx: usize = 0;
22581        #[cfg(feature = "extra-children")]
22582        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
22583            extra_iter
22584                .next()
22585                .unwrap()
22586                .node
22587                .write_to(writer)
22588                .map_err(SerializeError::from)?;
22589        }
22590        if let Some(ref val) = self.pos {
22591            val.write_element("w:pos", writer)?;
22592        }
22593        #[cfg(feature = "extra-children")]
22594        {
22595            emit_idx += 1;
22596        }
22597        #[cfg(feature = "extra-children")]
22598        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
22599            extra_iter
22600                .next()
22601                .unwrap()
22602                .node
22603                .write_to(writer)
22604                .map_err(SerializeError::from)?;
22605        }
22606        if let Some(ref val) = self.num_fmt {
22607            val.write_element("w:numFmt", writer)?;
22608        }
22609        #[cfg(feature = "extra-children")]
22610        {
22611            emit_idx += 1;
22612        }
22613        #[cfg(feature = "extra-children")]
22614        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
22615            extra_iter
22616                .next()
22617                .unwrap()
22618                .node
22619                .write_to(writer)
22620                .map_err(SerializeError::from)?;
22621        }
22622        if let Some(ref val) = self.num_start {
22623            val.write_element("w:numStart", writer)?;
22624        }
22625        #[cfg(feature = "extra-children")]
22626        {
22627            emit_idx += 1;
22628        }
22629        #[cfg(feature = "extra-children")]
22630        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
22631            extra_iter
22632                .next()
22633                .unwrap()
22634                .node
22635                .write_to(writer)
22636                .map_err(SerializeError::from)?;
22637        }
22638        if let Some(ref val) = self.num_restart {
22639            val.write_element("w:numRestart", writer)?;
22640        }
22641        #[cfg(feature = "extra-children")]
22642        {
22643            emit_idx += 1;
22644        }
22645        #[cfg(feature = "wml-comments")]
22646        for item in &self.footnote {
22647            #[cfg(feature = "extra-children")]
22648            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
22649                extra_iter
22650                    .next()
22651                    .unwrap()
22652                    .node
22653                    .write_to(writer)
22654                    .map_err(SerializeError::from)?;
22655            }
22656            item.write_element("w:footnote", writer)?;
22657            #[cfg(feature = "extra-children")]
22658            {
22659                emit_idx += 1;
22660            }
22661        }
22662        #[cfg(feature = "extra-children")]
22663        for extra in extra_iter {
22664            extra.node.write_to(writer).map_err(SerializeError::from)?;
22665        }
22666        Ok(())
22667    }
22668
22669    fn is_empty_element(&self) -> bool {
22670        if self.pos.is_some() {
22671            return false;
22672        }
22673        if self.num_fmt.is_some() {
22674            return false;
22675        }
22676        if self.num_start.is_some() {
22677            return false;
22678        }
22679        if self.num_restart.is_some() {
22680            return false;
22681        }
22682        #[cfg(feature = "wml-comments")]
22683        if !self.footnote.is_empty() {
22684            return false;
22685        }
22686        #[cfg(feature = "extra-children")]
22687        if !self.extra_children.is_empty() {
22688            return false;
22689        }
22690        true
22691    }
22692}
22693
22694impl ToXml for CTEdnDocProps {
22695    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
22696        #[cfg(feature = "extra-children")]
22697        let mut extra_iter = self.extra_children.iter().peekable();
22698        #[cfg(feature = "extra-children")]
22699        let mut emit_idx: usize = 0;
22700        #[cfg(feature = "extra-children")]
22701        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
22702            extra_iter
22703                .next()
22704                .unwrap()
22705                .node
22706                .write_to(writer)
22707                .map_err(SerializeError::from)?;
22708        }
22709        if let Some(ref val) = self.pos {
22710            val.write_element("w:pos", writer)?;
22711        }
22712        #[cfg(feature = "extra-children")]
22713        {
22714            emit_idx += 1;
22715        }
22716        #[cfg(feature = "extra-children")]
22717        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
22718            extra_iter
22719                .next()
22720                .unwrap()
22721                .node
22722                .write_to(writer)
22723                .map_err(SerializeError::from)?;
22724        }
22725        if let Some(ref val) = self.num_fmt {
22726            val.write_element("w:numFmt", writer)?;
22727        }
22728        #[cfg(feature = "extra-children")]
22729        {
22730            emit_idx += 1;
22731        }
22732        #[cfg(feature = "extra-children")]
22733        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
22734            extra_iter
22735                .next()
22736                .unwrap()
22737                .node
22738                .write_to(writer)
22739                .map_err(SerializeError::from)?;
22740        }
22741        if let Some(ref val) = self.num_start {
22742            val.write_element("w:numStart", writer)?;
22743        }
22744        #[cfg(feature = "extra-children")]
22745        {
22746            emit_idx += 1;
22747        }
22748        #[cfg(feature = "extra-children")]
22749        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
22750            extra_iter
22751                .next()
22752                .unwrap()
22753                .node
22754                .write_to(writer)
22755                .map_err(SerializeError::from)?;
22756        }
22757        if let Some(ref val) = self.num_restart {
22758            val.write_element("w:numRestart", writer)?;
22759        }
22760        #[cfg(feature = "extra-children")]
22761        {
22762            emit_idx += 1;
22763        }
22764        #[cfg(feature = "wml-comments")]
22765        for item in &self.endnote {
22766            #[cfg(feature = "extra-children")]
22767            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
22768                extra_iter
22769                    .next()
22770                    .unwrap()
22771                    .node
22772                    .write_to(writer)
22773                    .map_err(SerializeError::from)?;
22774            }
22775            item.write_element("w:endnote", writer)?;
22776            #[cfg(feature = "extra-children")]
22777            {
22778                emit_idx += 1;
22779            }
22780        }
22781        #[cfg(feature = "extra-children")]
22782        for extra in extra_iter {
22783            extra.node.write_to(writer).map_err(SerializeError::from)?;
22784        }
22785        Ok(())
22786    }
22787
22788    fn is_empty_element(&self) -> bool {
22789        if self.pos.is_some() {
22790            return false;
22791        }
22792        if self.num_fmt.is_some() {
22793            return false;
22794        }
22795        if self.num_start.is_some() {
22796            return false;
22797        }
22798        if self.num_restart.is_some() {
22799            return false;
22800        }
22801        #[cfg(feature = "wml-comments")]
22802        if !self.endnote.is_empty() {
22803            return false;
22804        }
22805        #[cfg(feature = "extra-children")]
22806        if !self.extra_children.is_empty() {
22807            return false;
22808        }
22809        true
22810    }
22811}
22812
22813impl ToXml for CTRecipientData {
22814    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
22815        #[cfg(feature = "extra-children")]
22816        let mut extra_iter = self.extra_children.iter().peekable();
22817        #[cfg(feature = "extra-children")]
22818        let mut emit_idx: usize = 0;
22819        #[cfg(feature = "extra-children")]
22820        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
22821            extra_iter
22822                .next()
22823                .unwrap()
22824                .node
22825                .write_to(writer)
22826                .map_err(SerializeError::from)?;
22827        }
22828        #[cfg(feature = "wml-settings")]
22829        if let Some(ref val) = self.active {
22830            val.write_element("w:active", writer)?;
22831        }
22832        #[cfg(feature = "extra-children")]
22833        {
22834            emit_idx += 1;
22835        }
22836        #[cfg(feature = "extra-children")]
22837        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
22838            extra_iter
22839                .next()
22840                .unwrap()
22841                .node
22842                .write_to(writer)
22843                .map_err(SerializeError::from)?;
22844        }
22845        #[cfg(feature = "wml-settings")]
22846        {
22847            let val = &self.column;
22848            val.write_element("w:column", writer)?;
22849        }
22850        #[cfg(feature = "extra-children")]
22851        {
22852            emit_idx += 1;
22853        }
22854        #[cfg(feature = "extra-children")]
22855        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
22856            extra_iter
22857                .next()
22858                .unwrap()
22859                .node
22860                .write_to(writer)
22861                .map_err(SerializeError::from)?;
22862        }
22863        #[cfg(feature = "wml-settings")]
22864        {
22865            let val = &self.unique_tag;
22866            val.write_element("w:uniqueTag", writer)?;
22867        }
22868        #[cfg(feature = "extra-children")]
22869        {
22870            emit_idx += 1;
22871        }
22872        #[cfg(feature = "extra-children")]
22873        for extra in extra_iter {
22874            extra.node.write_to(writer).map_err(SerializeError::from)?;
22875        }
22876        Ok(())
22877    }
22878
22879    fn is_empty_element(&self) -> bool {
22880        #[cfg(feature = "wml-settings")]
22881        if self.active.is_some() {
22882            return false;
22883        }
22884        #[cfg(feature = "wml-settings")]
22885        return false;
22886        #[cfg(feature = "wml-settings")]
22887        return false;
22888        #[cfg(feature = "extra-children")]
22889        if !self.extra_children.is_empty() {
22890            return false;
22891        }
22892        true
22893    }
22894}
22895
22896impl ToXml for CTBase64Binary {
22897    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
22898        #[allow(unused_mut)]
22899        let mut start = start;
22900        {
22901            let val = &self.value;
22902            {
22903                let b64 = encode_base64(val);
22904                start.push_attribute(("w:val", b64.as_str()));
22905            }
22906        }
22907        #[cfg(feature = "extra-attrs")]
22908        for (key, value) in &self.extra_attrs {
22909            start.push_attribute((key.as_str(), value.as_str()));
22910        }
22911        start
22912    }
22913
22914    fn is_empty_element(&self) -> bool {
22915        true
22916    }
22917}
22918
22919impl ToXml for CTRecipients {
22920    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
22921        #[cfg(feature = "extra-children")]
22922        let mut extra_iter = self.extra_children.iter().peekable();
22923        #[cfg(feature = "extra-children")]
22924        let mut emit_idx: usize = 0;
22925        #[cfg(feature = "wml-settings")]
22926        for item in &self.recipient_data {
22927            #[cfg(feature = "extra-children")]
22928            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
22929                extra_iter
22930                    .next()
22931                    .unwrap()
22932                    .node
22933                    .write_to(writer)
22934                    .map_err(SerializeError::from)?;
22935            }
22936            item.write_element("w:recipientData", writer)?;
22937            #[cfg(feature = "extra-children")]
22938            {
22939                emit_idx += 1;
22940            }
22941        }
22942        #[cfg(feature = "extra-children")]
22943        for extra in extra_iter {
22944            extra.node.write_to(writer).map_err(SerializeError::from)?;
22945        }
22946        Ok(())
22947    }
22948
22949    fn is_empty_element(&self) -> bool {
22950        #[cfg(feature = "wml-settings")]
22951        if !self.recipient_data.is_empty() {
22952            return false;
22953        }
22954        #[cfg(feature = "extra-children")]
22955        if !self.extra_children.is_empty() {
22956            return false;
22957        }
22958        true
22959    }
22960}
22961
22962impl ToXml for CTOdsoFieldMapData {
22963    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
22964        #[cfg(feature = "extra-children")]
22965        let mut extra_iter = self.extra_children.iter().peekable();
22966        #[cfg(feature = "extra-children")]
22967        let mut emit_idx: usize = 0;
22968        #[cfg(feature = "extra-children")]
22969        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
22970            extra_iter
22971                .next()
22972                .unwrap()
22973                .node
22974                .write_to(writer)
22975                .map_err(SerializeError::from)?;
22976        }
22977        #[cfg(feature = "wml-settings")]
22978        if let Some(ref val) = self.r#type {
22979            val.write_element("w:type", writer)?;
22980        }
22981        #[cfg(feature = "extra-children")]
22982        {
22983            emit_idx += 1;
22984        }
22985        #[cfg(feature = "extra-children")]
22986        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
22987            extra_iter
22988                .next()
22989                .unwrap()
22990                .node
22991                .write_to(writer)
22992                .map_err(SerializeError::from)?;
22993        }
22994        #[cfg(feature = "wml-settings")]
22995        if let Some(ref val) = self.name {
22996            val.write_element("w:name", writer)?;
22997        }
22998        #[cfg(feature = "extra-children")]
22999        {
23000            emit_idx += 1;
23001        }
23002        #[cfg(feature = "extra-children")]
23003        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23004            extra_iter
23005                .next()
23006                .unwrap()
23007                .node
23008                .write_to(writer)
23009                .map_err(SerializeError::from)?;
23010        }
23011        #[cfg(feature = "wml-settings")]
23012        if let Some(ref val) = self.mapped_name {
23013            val.write_element("w:mappedName", writer)?;
23014        }
23015        #[cfg(feature = "extra-children")]
23016        {
23017            emit_idx += 1;
23018        }
23019        #[cfg(feature = "extra-children")]
23020        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23021            extra_iter
23022                .next()
23023                .unwrap()
23024                .node
23025                .write_to(writer)
23026                .map_err(SerializeError::from)?;
23027        }
23028        #[cfg(feature = "wml-settings")]
23029        if let Some(ref val) = self.column {
23030            val.write_element("w:column", writer)?;
23031        }
23032        #[cfg(feature = "extra-children")]
23033        {
23034            emit_idx += 1;
23035        }
23036        #[cfg(feature = "extra-children")]
23037        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23038            extra_iter
23039                .next()
23040                .unwrap()
23041                .node
23042                .write_to(writer)
23043                .map_err(SerializeError::from)?;
23044        }
23045        #[cfg(feature = "wml-settings")]
23046        if let Some(ref val) = self.lid {
23047            val.write_element("w:lid", writer)?;
23048        }
23049        #[cfg(feature = "extra-children")]
23050        {
23051            emit_idx += 1;
23052        }
23053        #[cfg(feature = "extra-children")]
23054        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23055            extra_iter
23056                .next()
23057                .unwrap()
23058                .node
23059                .write_to(writer)
23060                .map_err(SerializeError::from)?;
23061        }
23062        #[cfg(feature = "wml-settings")]
23063        if let Some(ref val) = self.dynamic_address {
23064            val.write_element("w:dynamicAddress", writer)?;
23065        }
23066        #[cfg(feature = "extra-children")]
23067        {
23068            emit_idx += 1;
23069        }
23070        #[cfg(feature = "extra-children")]
23071        for extra in extra_iter {
23072            extra.node.write_to(writer).map_err(SerializeError::from)?;
23073        }
23074        Ok(())
23075    }
23076
23077    fn is_empty_element(&self) -> bool {
23078        #[cfg(feature = "wml-settings")]
23079        if self.r#type.is_some() {
23080            return false;
23081        }
23082        #[cfg(feature = "wml-settings")]
23083        if self.name.is_some() {
23084            return false;
23085        }
23086        #[cfg(feature = "wml-settings")]
23087        if self.mapped_name.is_some() {
23088            return false;
23089        }
23090        #[cfg(feature = "wml-settings")]
23091        if self.column.is_some() {
23092            return false;
23093        }
23094        #[cfg(feature = "wml-settings")]
23095        if self.lid.is_some() {
23096            return false;
23097        }
23098        #[cfg(feature = "wml-settings")]
23099        if self.dynamic_address.is_some() {
23100            return false;
23101        }
23102        #[cfg(feature = "extra-children")]
23103        if !self.extra_children.is_empty() {
23104            return false;
23105        }
23106        true
23107    }
23108}
23109
23110impl ToXml for CTMailMergeSourceType {
23111    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
23112        #[allow(unused_mut)]
23113        let mut start = start;
23114        {
23115            let val = &self.value;
23116            {
23117                let s = val.to_string();
23118                start.push_attribute(("w:val", s.as_str()));
23119            }
23120        }
23121        #[cfg(feature = "extra-attrs")]
23122        for (key, value) in &self.extra_attrs {
23123            start.push_attribute((key.as_str(), value.as_str()));
23124        }
23125        start
23126    }
23127
23128    fn is_empty_element(&self) -> bool {
23129        true
23130    }
23131}
23132
23133impl ToXml for CTOdso {
23134    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
23135        #[cfg(feature = "extra-children")]
23136        let mut extra_iter = self.extra_children.iter().peekable();
23137        #[cfg(feature = "extra-children")]
23138        let mut emit_idx: usize = 0;
23139        #[cfg(feature = "extra-children")]
23140        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23141            extra_iter
23142                .next()
23143                .unwrap()
23144                .node
23145                .write_to(writer)
23146                .map_err(SerializeError::from)?;
23147        }
23148        #[cfg(feature = "wml-settings")]
23149        if let Some(ref val) = self.udl {
23150            val.write_element("w:udl", writer)?;
23151        }
23152        #[cfg(feature = "extra-children")]
23153        {
23154            emit_idx += 1;
23155        }
23156        #[cfg(feature = "extra-children")]
23157        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23158            extra_iter
23159                .next()
23160                .unwrap()
23161                .node
23162                .write_to(writer)
23163                .map_err(SerializeError::from)?;
23164        }
23165        #[cfg(feature = "wml-settings")]
23166        if let Some(ref val) = self.table {
23167            val.write_element("w:table", writer)?;
23168        }
23169        #[cfg(feature = "extra-children")]
23170        {
23171            emit_idx += 1;
23172        }
23173        #[cfg(feature = "extra-children")]
23174        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23175            extra_iter
23176                .next()
23177                .unwrap()
23178                .node
23179                .write_to(writer)
23180                .map_err(SerializeError::from)?;
23181        }
23182        #[cfg(feature = "wml-settings")]
23183        if let Some(ref val) = self.src {
23184            val.write_element("w:src", writer)?;
23185        }
23186        #[cfg(feature = "extra-children")]
23187        {
23188            emit_idx += 1;
23189        }
23190        #[cfg(feature = "extra-children")]
23191        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23192            extra_iter
23193                .next()
23194                .unwrap()
23195                .node
23196                .write_to(writer)
23197                .map_err(SerializeError::from)?;
23198        }
23199        #[cfg(feature = "wml-settings")]
23200        if let Some(ref val) = self.col_delim {
23201            val.write_element("w:colDelim", writer)?;
23202        }
23203        #[cfg(feature = "extra-children")]
23204        {
23205            emit_idx += 1;
23206        }
23207        #[cfg(feature = "extra-children")]
23208        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23209            extra_iter
23210                .next()
23211                .unwrap()
23212                .node
23213                .write_to(writer)
23214                .map_err(SerializeError::from)?;
23215        }
23216        #[cfg(feature = "wml-settings")]
23217        if let Some(ref val) = self.r#type {
23218            val.write_element("w:type", writer)?;
23219        }
23220        #[cfg(feature = "extra-children")]
23221        {
23222            emit_idx += 1;
23223        }
23224        #[cfg(feature = "extra-children")]
23225        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23226            extra_iter
23227                .next()
23228                .unwrap()
23229                .node
23230                .write_to(writer)
23231                .map_err(SerializeError::from)?;
23232        }
23233        #[cfg(feature = "wml-settings")]
23234        if let Some(ref val) = self.f_hdr {
23235            val.write_element("w:fHdr", writer)?;
23236        }
23237        #[cfg(feature = "extra-children")]
23238        {
23239            emit_idx += 1;
23240        }
23241        #[cfg(feature = "wml-settings")]
23242        for item in &self.field_map_data {
23243            #[cfg(feature = "extra-children")]
23244            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23245                extra_iter
23246                    .next()
23247                    .unwrap()
23248                    .node
23249                    .write_to(writer)
23250                    .map_err(SerializeError::from)?;
23251            }
23252            item.write_element("w:fieldMapData", writer)?;
23253            #[cfg(feature = "extra-children")]
23254            {
23255                emit_idx += 1;
23256            }
23257        }
23258        #[cfg(feature = "wml-settings")]
23259        for item in &self.recipient_data {
23260            #[cfg(feature = "extra-children")]
23261            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23262                extra_iter
23263                    .next()
23264                    .unwrap()
23265                    .node
23266                    .write_to(writer)
23267                    .map_err(SerializeError::from)?;
23268            }
23269            item.write_element("w:recipientData", writer)?;
23270            #[cfg(feature = "extra-children")]
23271            {
23272                emit_idx += 1;
23273            }
23274        }
23275        #[cfg(feature = "extra-children")]
23276        for extra in extra_iter {
23277            extra.node.write_to(writer).map_err(SerializeError::from)?;
23278        }
23279        Ok(())
23280    }
23281
23282    fn is_empty_element(&self) -> bool {
23283        #[cfg(feature = "wml-settings")]
23284        if self.udl.is_some() {
23285            return false;
23286        }
23287        #[cfg(feature = "wml-settings")]
23288        if self.table.is_some() {
23289            return false;
23290        }
23291        #[cfg(feature = "wml-settings")]
23292        if self.src.is_some() {
23293            return false;
23294        }
23295        #[cfg(feature = "wml-settings")]
23296        if self.col_delim.is_some() {
23297            return false;
23298        }
23299        #[cfg(feature = "wml-settings")]
23300        if self.r#type.is_some() {
23301            return false;
23302        }
23303        #[cfg(feature = "wml-settings")]
23304        if self.f_hdr.is_some() {
23305            return false;
23306        }
23307        #[cfg(feature = "wml-settings")]
23308        if !self.field_map_data.is_empty() {
23309            return false;
23310        }
23311        #[cfg(feature = "wml-settings")]
23312        if !self.recipient_data.is_empty() {
23313            return false;
23314        }
23315        #[cfg(feature = "extra-children")]
23316        if !self.extra_children.is_empty() {
23317            return false;
23318        }
23319        true
23320    }
23321}
23322
23323impl ToXml for CTMailMerge {
23324    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
23325        #[cfg(feature = "extra-children")]
23326        let mut extra_iter = self.extra_children.iter().peekable();
23327        #[cfg(feature = "extra-children")]
23328        let mut emit_idx: usize = 0;
23329        #[cfg(feature = "extra-children")]
23330        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23331            extra_iter
23332                .next()
23333                .unwrap()
23334                .node
23335                .write_to(writer)
23336                .map_err(SerializeError::from)?;
23337        }
23338        #[cfg(feature = "wml-settings")]
23339        {
23340            let val = &self.main_document_type;
23341            val.write_element("w:mainDocumentType", writer)?;
23342        }
23343        #[cfg(feature = "extra-children")]
23344        {
23345            emit_idx += 1;
23346        }
23347        #[cfg(feature = "extra-children")]
23348        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23349            extra_iter
23350                .next()
23351                .unwrap()
23352                .node
23353                .write_to(writer)
23354                .map_err(SerializeError::from)?;
23355        }
23356        #[cfg(feature = "wml-settings")]
23357        if let Some(ref val) = self.link_to_query {
23358            val.write_element("w:linkToQuery", writer)?;
23359        }
23360        #[cfg(feature = "extra-children")]
23361        {
23362            emit_idx += 1;
23363        }
23364        #[cfg(feature = "extra-children")]
23365        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23366            extra_iter
23367                .next()
23368                .unwrap()
23369                .node
23370                .write_to(writer)
23371                .map_err(SerializeError::from)?;
23372        }
23373        #[cfg(feature = "wml-settings")]
23374        {
23375            let val = &self.data_type;
23376            val.write_element("w:dataType", writer)?;
23377        }
23378        #[cfg(feature = "extra-children")]
23379        {
23380            emit_idx += 1;
23381        }
23382        #[cfg(feature = "extra-children")]
23383        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23384            extra_iter
23385                .next()
23386                .unwrap()
23387                .node
23388                .write_to(writer)
23389                .map_err(SerializeError::from)?;
23390        }
23391        #[cfg(feature = "wml-settings")]
23392        if let Some(ref val) = self.connect_string {
23393            val.write_element("w:connectString", writer)?;
23394        }
23395        #[cfg(feature = "extra-children")]
23396        {
23397            emit_idx += 1;
23398        }
23399        #[cfg(feature = "extra-children")]
23400        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23401            extra_iter
23402                .next()
23403                .unwrap()
23404                .node
23405                .write_to(writer)
23406                .map_err(SerializeError::from)?;
23407        }
23408        #[cfg(feature = "wml-settings")]
23409        if let Some(ref val) = self.query {
23410            val.write_element("w:query", writer)?;
23411        }
23412        #[cfg(feature = "extra-children")]
23413        {
23414            emit_idx += 1;
23415        }
23416        #[cfg(feature = "extra-children")]
23417        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23418            extra_iter
23419                .next()
23420                .unwrap()
23421                .node
23422                .write_to(writer)
23423                .map_err(SerializeError::from)?;
23424        }
23425        #[cfg(feature = "wml-settings")]
23426        if let Some(ref val) = self.data_source {
23427            val.write_element("w:dataSource", writer)?;
23428        }
23429        #[cfg(feature = "extra-children")]
23430        {
23431            emit_idx += 1;
23432        }
23433        #[cfg(feature = "extra-children")]
23434        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23435            extra_iter
23436                .next()
23437                .unwrap()
23438                .node
23439                .write_to(writer)
23440                .map_err(SerializeError::from)?;
23441        }
23442        #[cfg(feature = "wml-settings")]
23443        if let Some(ref val) = self.header_source {
23444            val.write_element("w:headerSource", writer)?;
23445        }
23446        #[cfg(feature = "extra-children")]
23447        {
23448            emit_idx += 1;
23449        }
23450        #[cfg(feature = "extra-children")]
23451        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23452            extra_iter
23453                .next()
23454                .unwrap()
23455                .node
23456                .write_to(writer)
23457                .map_err(SerializeError::from)?;
23458        }
23459        #[cfg(feature = "wml-settings")]
23460        if let Some(ref val) = self.do_not_suppress_blank_lines {
23461            val.write_element("w:doNotSuppressBlankLines", writer)?;
23462        }
23463        #[cfg(feature = "extra-children")]
23464        {
23465            emit_idx += 1;
23466        }
23467        #[cfg(feature = "extra-children")]
23468        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23469            extra_iter
23470                .next()
23471                .unwrap()
23472                .node
23473                .write_to(writer)
23474                .map_err(SerializeError::from)?;
23475        }
23476        #[cfg(feature = "wml-settings")]
23477        if let Some(ref val) = self.destination {
23478            val.write_element("w:destination", writer)?;
23479        }
23480        #[cfg(feature = "extra-children")]
23481        {
23482            emit_idx += 1;
23483        }
23484        #[cfg(feature = "extra-children")]
23485        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23486            extra_iter
23487                .next()
23488                .unwrap()
23489                .node
23490                .write_to(writer)
23491                .map_err(SerializeError::from)?;
23492        }
23493        #[cfg(feature = "wml-settings")]
23494        if let Some(ref val) = self.address_field_name {
23495            val.write_element("w:addressFieldName", writer)?;
23496        }
23497        #[cfg(feature = "extra-children")]
23498        {
23499            emit_idx += 1;
23500        }
23501        #[cfg(feature = "extra-children")]
23502        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23503            extra_iter
23504                .next()
23505                .unwrap()
23506                .node
23507                .write_to(writer)
23508                .map_err(SerializeError::from)?;
23509        }
23510        #[cfg(feature = "wml-settings")]
23511        if let Some(ref val) = self.mail_subject {
23512            val.write_element("w:mailSubject", writer)?;
23513        }
23514        #[cfg(feature = "extra-children")]
23515        {
23516            emit_idx += 1;
23517        }
23518        #[cfg(feature = "extra-children")]
23519        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23520            extra_iter
23521                .next()
23522                .unwrap()
23523                .node
23524                .write_to(writer)
23525                .map_err(SerializeError::from)?;
23526        }
23527        #[cfg(feature = "wml-settings")]
23528        if let Some(ref val) = self.mail_as_attachment {
23529            val.write_element("w:mailAsAttachment", writer)?;
23530        }
23531        #[cfg(feature = "extra-children")]
23532        {
23533            emit_idx += 1;
23534        }
23535        #[cfg(feature = "extra-children")]
23536        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23537            extra_iter
23538                .next()
23539                .unwrap()
23540                .node
23541                .write_to(writer)
23542                .map_err(SerializeError::from)?;
23543        }
23544        #[cfg(feature = "wml-settings")]
23545        if let Some(ref val) = self.view_merged_data {
23546            val.write_element("w:viewMergedData", writer)?;
23547        }
23548        #[cfg(feature = "extra-children")]
23549        {
23550            emit_idx += 1;
23551        }
23552        #[cfg(feature = "extra-children")]
23553        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23554            extra_iter
23555                .next()
23556                .unwrap()
23557                .node
23558                .write_to(writer)
23559                .map_err(SerializeError::from)?;
23560        }
23561        #[cfg(feature = "wml-settings")]
23562        if let Some(ref val) = self.active_record {
23563            val.write_element("w:activeRecord", writer)?;
23564        }
23565        #[cfg(feature = "extra-children")]
23566        {
23567            emit_idx += 1;
23568        }
23569        #[cfg(feature = "extra-children")]
23570        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23571            extra_iter
23572                .next()
23573                .unwrap()
23574                .node
23575                .write_to(writer)
23576                .map_err(SerializeError::from)?;
23577        }
23578        #[cfg(feature = "wml-settings")]
23579        if let Some(ref val) = self.check_errors {
23580            val.write_element("w:checkErrors", writer)?;
23581        }
23582        #[cfg(feature = "extra-children")]
23583        {
23584            emit_idx += 1;
23585        }
23586        #[cfg(feature = "extra-children")]
23587        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23588            extra_iter
23589                .next()
23590                .unwrap()
23591                .node
23592                .write_to(writer)
23593                .map_err(SerializeError::from)?;
23594        }
23595        #[cfg(feature = "wml-settings")]
23596        if let Some(ref val) = self.odso {
23597            val.write_element("w:odso", writer)?;
23598        }
23599        #[cfg(feature = "extra-children")]
23600        {
23601            emit_idx += 1;
23602        }
23603        #[cfg(feature = "extra-children")]
23604        for extra in extra_iter {
23605            extra.node.write_to(writer).map_err(SerializeError::from)?;
23606        }
23607        Ok(())
23608    }
23609
23610    fn is_empty_element(&self) -> bool {
23611        #[cfg(feature = "wml-settings")]
23612        return false;
23613        #[cfg(feature = "wml-settings")]
23614        if self.link_to_query.is_some() {
23615            return false;
23616        }
23617        #[cfg(feature = "wml-settings")]
23618        return false;
23619        #[cfg(feature = "wml-settings")]
23620        if self.connect_string.is_some() {
23621            return false;
23622        }
23623        #[cfg(feature = "wml-settings")]
23624        if self.query.is_some() {
23625            return false;
23626        }
23627        #[cfg(feature = "wml-settings")]
23628        if self.data_source.is_some() {
23629            return false;
23630        }
23631        #[cfg(feature = "wml-settings")]
23632        if self.header_source.is_some() {
23633            return false;
23634        }
23635        #[cfg(feature = "wml-settings")]
23636        if self.do_not_suppress_blank_lines.is_some() {
23637            return false;
23638        }
23639        #[cfg(feature = "wml-settings")]
23640        if self.destination.is_some() {
23641            return false;
23642        }
23643        #[cfg(feature = "wml-settings")]
23644        if self.address_field_name.is_some() {
23645            return false;
23646        }
23647        #[cfg(feature = "wml-settings")]
23648        if self.mail_subject.is_some() {
23649            return false;
23650        }
23651        #[cfg(feature = "wml-settings")]
23652        if self.mail_as_attachment.is_some() {
23653            return false;
23654        }
23655        #[cfg(feature = "wml-settings")]
23656        if self.view_merged_data.is_some() {
23657            return false;
23658        }
23659        #[cfg(feature = "wml-settings")]
23660        if self.active_record.is_some() {
23661            return false;
23662        }
23663        #[cfg(feature = "wml-settings")]
23664        if self.check_errors.is_some() {
23665            return false;
23666        }
23667        #[cfg(feature = "wml-settings")]
23668        if self.odso.is_some() {
23669            return false;
23670        }
23671        #[cfg(feature = "extra-children")]
23672        if !self.extra_children.is_empty() {
23673            return false;
23674        }
23675        true
23676    }
23677}
23678
23679impl ToXml for CTTargetScreenSz {
23680    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
23681        #[allow(unused_mut)]
23682        let mut start = start;
23683        {
23684            let val = &self.value;
23685            {
23686                let s = val.to_string();
23687                start.push_attribute(("w:val", s.as_str()));
23688            }
23689        }
23690        #[cfg(feature = "extra-attrs")]
23691        for (key, value) in &self.extra_attrs {
23692            start.push_attribute((key.as_str(), value.as_str()));
23693        }
23694        start
23695    }
23696
23697    fn is_empty_element(&self) -> bool {
23698        true
23699    }
23700}
23701
23702impl ToXml for Compatibility {
23703    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
23704        #[cfg(feature = "extra-children")]
23705        let mut extra_iter = self.extra_children.iter().peekable();
23706        #[cfg(feature = "extra-children")]
23707        let mut emit_idx: usize = 0;
23708        #[cfg(feature = "extra-children")]
23709        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23710            extra_iter
23711                .next()
23712                .unwrap()
23713                .node
23714                .write_to(writer)
23715                .map_err(SerializeError::from)?;
23716        }
23717        #[cfg(feature = "wml-settings")]
23718        if let Some(ref val) = self.use_single_borderfor_contiguous_cells {
23719            val.write_element("w:useSingleBorderforContiguousCells", writer)?;
23720        }
23721        #[cfg(feature = "extra-children")]
23722        {
23723            emit_idx += 1;
23724        }
23725        #[cfg(feature = "extra-children")]
23726        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23727            extra_iter
23728                .next()
23729                .unwrap()
23730                .node
23731                .write_to(writer)
23732                .map_err(SerializeError::from)?;
23733        }
23734        #[cfg(feature = "wml-settings")]
23735        if let Some(ref val) = self.wp_justification {
23736            val.write_element("w:wpJustification", writer)?;
23737        }
23738        #[cfg(feature = "extra-children")]
23739        {
23740            emit_idx += 1;
23741        }
23742        #[cfg(feature = "extra-children")]
23743        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23744            extra_iter
23745                .next()
23746                .unwrap()
23747                .node
23748                .write_to(writer)
23749                .map_err(SerializeError::from)?;
23750        }
23751        #[cfg(feature = "wml-settings")]
23752        if let Some(ref val) = self.no_tab_hang_ind {
23753            val.write_element("w:noTabHangInd", writer)?;
23754        }
23755        #[cfg(feature = "extra-children")]
23756        {
23757            emit_idx += 1;
23758        }
23759        #[cfg(feature = "extra-children")]
23760        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23761            extra_iter
23762                .next()
23763                .unwrap()
23764                .node
23765                .write_to(writer)
23766                .map_err(SerializeError::from)?;
23767        }
23768        #[cfg(feature = "wml-settings")]
23769        if let Some(ref val) = self.no_leading {
23770            val.write_element("w:noLeading", writer)?;
23771        }
23772        #[cfg(feature = "extra-children")]
23773        {
23774            emit_idx += 1;
23775        }
23776        #[cfg(feature = "extra-children")]
23777        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23778            extra_iter
23779                .next()
23780                .unwrap()
23781                .node
23782                .write_to(writer)
23783                .map_err(SerializeError::from)?;
23784        }
23785        #[cfg(feature = "wml-settings")]
23786        if let Some(ref val) = self.space_for_u_l {
23787            val.write_element("w:spaceForUL", writer)?;
23788        }
23789        #[cfg(feature = "extra-children")]
23790        {
23791            emit_idx += 1;
23792        }
23793        #[cfg(feature = "extra-children")]
23794        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23795            extra_iter
23796                .next()
23797                .unwrap()
23798                .node
23799                .write_to(writer)
23800                .map_err(SerializeError::from)?;
23801        }
23802        #[cfg(feature = "wml-settings")]
23803        if let Some(ref val) = self.no_column_balance {
23804            val.write_element("w:noColumnBalance", writer)?;
23805        }
23806        #[cfg(feature = "extra-children")]
23807        {
23808            emit_idx += 1;
23809        }
23810        #[cfg(feature = "extra-children")]
23811        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23812            extra_iter
23813                .next()
23814                .unwrap()
23815                .node
23816                .write_to(writer)
23817                .map_err(SerializeError::from)?;
23818        }
23819        #[cfg(feature = "wml-settings")]
23820        if let Some(ref val) = self.balance_single_byte_double_byte_width {
23821            val.write_element("w:balanceSingleByteDoubleByteWidth", writer)?;
23822        }
23823        #[cfg(feature = "extra-children")]
23824        {
23825            emit_idx += 1;
23826        }
23827        #[cfg(feature = "extra-children")]
23828        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23829            extra_iter
23830                .next()
23831                .unwrap()
23832                .node
23833                .write_to(writer)
23834                .map_err(SerializeError::from)?;
23835        }
23836        #[cfg(feature = "wml-settings")]
23837        if let Some(ref val) = self.no_extra_line_spacing {
23838            val.write_element("w:noExtraLineSpacing", writer)?;
23839        }
23840        #[cfg(feature = "extra-children")]
23841        {
23842            emit_idx += 1;
23843        }
23844        #[cfg(feature = "extra-children")]
23845        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23846            extra_iter
23847                .next()
23848                .unwrap()
23849                .node
23850                .write_to(writer)
23851                .map_err(SerializeError::from)?;
23852        }
23853        #[cfg(feature = "wml-settings")]
23854        if let Some(ref val) = self.do_not_leave_backslash_alone {
23855            val.write_element("w:doNotLeaveBackslashAlone", writer)?;
23856        }
23857        #[cfg(feature = "extra-children")]
23858        {
23859            emit_idx += 1;
23860        }
23861        #[cfg(feature = "extra-children")]
23862        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23863            extra_iter
23864                .next()
23865                .unwrap()
23866                .node
23867                .write_to(writer)
23868                .map_err(SerializeError::from)?;
23869        }
23870        #[cfg(feature = "wml-settings")]
23871        if let Some(ref val) = self.ul_trail_space {
23872            val.write_element("w:ulTrailSpace", writer)?;
23873        }
23874        #[cfg(feature = "extra-children")]
23875        {
23876            emit_idx += 1;
23877        }
23878        #[cfg(feature = "extra-children")]
23879        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23880            extra_iter
23881                .next()
23882                .unwrap()
23883                .node
23884                .write_to(writer)
23885                .map_err(SerializeError::from)?;
23886        }
23887        #[cfg(feature = "wml-settings")]
23888        if let Some(ref val) = self.do_not_expand_shift_return {
23889            val.write_element("w:doNotExpandShiftReturn", writer)?;
23890        }
23891        #[cfg(feature = "extra-children")]
23892        {
23893            emit_idx += 1;
23894        }
23895        #[cfg(feature = "extra-children")]
23896        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23897            extra_iter
23898                .next()
23899                .unwrap()
23900                .node
23901                .write_to(writer)
23902                .map_err(SerializeError::from)?;
23903        }
23904        #[cfg(feature = "wml-settings")]
23905        if let Some(ref val) = self.spacing_in_whole_points {
23906            val.write_element("w:spacingInWholePoints", writer)?;
23907        }
23908        #[cfg(feature = "extra-children")]
23909        {
23910            emit_idx += 1;
23911        }
23912        #[cfg(feature = "extra-children")]
23913        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23914            extra_iter
23915                .next()
23916                .unwrap()
23917                .node
23918                .write_to(writer)
23919                .map_err(SerializeError::from)?;
23920        }
23921        #[cfg(feature = "wml-settings")]
23922        if let Some(ref val) = self.line_wrap_like_word6 {
23923            val.write_element("w:lineWrapLikeWord6", writer)?;
23924        }
23925        #[cfg(feature = "extra-children")]
23926        {
23927            emit_idx += 1;
23928        }
23929        #[cfg(feature = "extra-children")]
23930        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23931            extra_iter
23932                .next()
23933                .unwrap()
23934                .node
23935                .write_to(writer)
23936                .map_err(SerializeError::from)?;
23937        }
23938        #[cfg(feature = "wml-settings")]
23939        if let Some(ref val) = self.print_body_text_before_header {
23940            val.write_element("w:printBodyTextBeforeHeader", writer)?;
23941        }
23942        #[cfg(feature = "extra-children")]
23943        {
23944            emit_idx += 1;
23945        }
23946        #[cfg(feature = "extra-children")]
23947        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23948            extra_iter
23949                .next()
23950                .unwrap()
23951                .node
23952                .write_to(writer)
23953                .map_err(SerializeError::from)?;
23954        }
23955        #[cfg(feature = "wml-settings")]
23956        if let Some(ref val) = self.print_col_black {
23957            val.write_element("w:printColBlack", writer)?;
23958        }
23959        #[cfg(feature = "extra-children")]
23960        {
23961            emit_idx += 1;
23962        }
23963        #[cfg(feature = "extra-children")]
23964        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23965            extra_iter
23966                .next()
23967                .unwrap()
23968                .node
23969                .write_to(writer)
23970                .map_err(SerializeError::from)?;
23971        }
23972        #[cfg(feature = "wml-settings")]
23973        if let Some(ref val) = self.wp_space_width {
23974            val.write_element("w:wpSpaceWidth", writer)?;
23975        }
23976        #[cfg(feature = "extra-children")]
23977        {
23978            emit_idx += 1;
23979        }
23980        #[cfg(feature = "extra-children")]
23981        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23982            extra_iter
23983                .next()
23984                .unwrap()
23985                .node
23986                .write_to(writer)
23987                .map_err(SerializeError::from)?;
23988        }
23989        #[cfg(feature = "wml-settings")]
23990        if let Some(ref val) = self.show_breaks_in_frames {
23991            val.write_element("w:showBreaksInFrames", writer)?;
23992        }
23993        #[cfg(feature = "extra-children")]
23994        {
23995            emit_idx += 1;
23996        }
23997        #[cfg(feature = "extra-children")]
23998        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23999            extra_iter
24000                .next()
24001                .unwrap()
24002                .node
24003                .write_to(writer)
24004                .map_err(SerializeError::from)?;
24005        }
24006        #[cfg(feature = "wml-settings")]
24007        if let Some(ref val) = self.sub_font_by_size {
24008            val.write_element("w:subFontBySize", writer)?;
24009        }
24010        #[cfg(feature = "extra-children")]
24011        {
24012            emit_idx += 1;
24013        }
24014        #[cfg(feature = "extra-children")]
24015        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24016            extra_iter
24017                .next()
24018                .unwrap()
24019                .node
24020                .write_to(writer)
24021                .map_err(SerializeError::from)?;
24022        }
24023        #[cfg(feature = "wml-settings")]
24024        if let Some(ref val) = self.suppress_bottom_spacing {
24025            val.write_element("w:suppressBottomSpacing", writer)?;
24026        }
24027        #[cfg(feature = "extra-children")]
24028        {
24029            emit_idx += 1;
24030        }
24031        #[cfg(feature = "extra-children")]
24032        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24033            extra_iter
24034                .next()
24035                .unwrap()
24036                .node
24037                .write_to(writer)
24038                .map_err(SerializeError::from)?;
24039        }
24040        #[cfg(feature = "wml-settings")]
24041        if let Some(ref val) = self.suppress_top_spacing {
24042            val.write_element("w:suppressTopSpacing", writer)?;
24043        }
24044        #[cfg(feature = "extra-children")]
24045        {
24046            emit_idx += 1;
24047        }
24048        #[cfg(feature = "extra-children")]
24049        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24050            extra_iter
24051                .next()
24052                .unwrap()
24053                .node
24054                .write_to(writer)
24055                .map_err(SerializeError::from)?;
24056        }
24057        #[cfg(feature = "wml-settings")]
24058        if let Some(ref val) = self.suppress_spacing_at_top_of_page {
24059            val.write_element("w:suppressSpacingAtTopOfPage", writer)?;
24060        }
24061        #[cfg(feature = "extra-children")]
24062        {
24063            emit_idx += 1;
24064        }
24065        #[cfg(feature = "extra-children")]
24066        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24067            extra_iter
24068                .next()
24069                .unwrap()
24070                .node
24071                .write_to(writer)
24072                .map_err(SerializeError::from)?;
24073        }
24074        #[cfg(feature = "wml-settings")]
24075        if let Some(ref val) = self.suppress_top_spacing_w_p {
24076            val.write_element("w:suppressTopSpacingWP", writer)?;
24077        }
24078        #[cfg(feature = "extra-children")]
24079        {
24080            emit_idx += 1;
24081        }
24082        #[cfg(feature = "extra-children")]
24083        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24084            extra_iter
24085                .next()
24086                .unwrap()
24087                .node
24088                .write_to(writer)
24089                .map_err(SerializeError::from)?;
24090        }
24091        #[cfg(feature = "wml-settings")]
24092        if let Some(ref val) = self.suppress_sp_bf_after_pg_brk {
24093            val.write_element("w:suppressSpBfAfterPgBrk", writer)?;
24094        }
24095        #[cfg(feature = "extra-children")]
24096        {
24097            emit_idx += 1;
24098        }
24099        #[cfg(feature = "extra-children")]
24100        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24101            extra_iter
24102                .next()
24103                .unwrap()
24104                .node
24105                .write_to(writer)
24106                .map_err(SerializeError::from)?;
24107        }
24108        #[cfg(feature = "wml-settings")]
24109        if let Some(ref val) = self.swap_borders_facing_pages {
24110            val.write_element("w:swapBordersFacingPages", writer)?;
24111        }
24112        #[cfg(feature = "extra-children")]
24113        {
24114            emit_idx += 1;
24115        }
24116        #[cfg(feature = "extra-children")]
24117        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24118            extra_iter
24119                .next()
24120                .unwrap()
24121                .node
24122                .write_to(writer)
24123                .map_err(SerializeError::from)?;
24124        }
24125        #[cfg(feature = "wml-settings")]
24126        if let Some(ref val) = self.conv_mail_merge_esc {
24127            val.write_element("w:convMailMergeEsc", writer)?;
24128        }
24129        #[cfg(feature = "extra-children")]
24130        {
24131            emit_idx += 1;
24132        }
24133        #[cfg(feature = "extra-children")]
24134        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24135            extra_iter
24136                .next()
24137                .unwrap()
24138                .node
24139                .write_to(writer)
24140                .map_err(SerializeError::from)?;
24141        }
24142        #[cfg(feature = "wml-settings")]
24143        if let Some(ref val) = self.truncate_font_heights_like_w_p6 {
24144            val.write_element("w:truncateFontHeightsLikeWP6", writer)?;
24145        }
24146        #[cfg(feature = "extra-children")]
24147        {
24148            emit_idx += 1;
24149        }
24150        #[cfg(feature = "extra-children")]
24151        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24152            extra_iter
24153                .next()
24154                .unwrap()
24155                .node
24156                .write_to(writer)
24157                .map_err(SerializeError::from)?;
24158        }
24159        #[cfg(feature = "wml-settings")]
24160        if let Some(ref val) = self.mw_small_caps {
24161            val.write_element("w:mwSmallCaps", writer)?;
24162        }
24163        #[cfg(feature = "extra-children")]
24164        {
24165            emit_idx += 1;
24166        }
24167        #[cfg(feature = "extra-children")]
24168        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24169            extra_iter
24170                .next()
24171                .unwrap()
24172                .node
24173                .write_to(writer)
24174                .map_err(SerializeError::from)?;
24175        }
24176        #[cfg(feature = "wml-settings")]
24177        if let Some(ref val) = self.use_printer_metrics {
24178            val.write_element("w:usePrinterMetrics", writer)?;
24179        }
24180        #[cfg(feature = "extra-children")]
24181        {
24182            emit_idx += 1;
24183        }
24184        #[cfg(feature = "extra-children")]
24185        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24186            extra_iter
24187                .next()
24188                .unwrap()
24189                .node
24190                .write_to(writer)
24191                .map_err(SerializeError::from)?;
24192        }
24193        #[cfg(feature = "wml-settings")]
24194        if let Some(ref val) = self.do_not_suppress_paragraph_borders {
24195            val.write_element("w:doNotSuppressParagraphBorders", writer)?;
24196        }
24197        #[cfg(feature = "extra-children")]
24198        {
24199            emit_idx += 1;
24200        }
24201        #[cfg(feature = "extra-children")]
24202        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24203            extra_iter
24204                .next()
24205                .unwrap()
24206                .node
24207                .write_to(writer)
24208                .map_err(SerializeError::from)?;
24209        }
24210        #[cfg(feature = "wml-settings")]
24211        if let Some(ref val) = self.wrap_trail_spaces {
24212            val.write_element("w:wrapTrailSpaces", writer)?;
24213        }
24214        #[cfg(feature = "extra-children")]
24215        {
24216            emit_idx += 1;
24217        }
24218        #[cfg(feature = "extra-children")]
24219        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24220            extra_iter
24221                .next()
24222                .unwrap()
24223                .node
24224                .write_to(writer)
24225                .map_err(SerializeError::from)?;
24226        }
24227        #[cfg(feature = "wml-settings")]
24228        if let Some(ref val) = self.footnote_layout_like_w_w8 {
24229            val.write_element("w:footnoteLayoutLikeWW8", writer)?;
24230        }
24231        #[cfg(feature = "extra-children")]
24232        {
24233            emit_idx += 1;
24234        }
24235        #[cfg(feature = "extra-children")]
24236        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24237            extra_iter
24238                .next()
24239                .unwrap()
24240                .node
24241                .write_to(writer)
24242                .map_err(SerializeError::from)?;
24243        }
24244        #[cfg(feature = "wml-settings")]
24245        if let Some(ref val) = self.shape_layout_like_w_w8 {
24246            val.write_element("w:shapeLayoutLikeWW8", writer)?;
24247        }
24248        #[cfg(feature = "extra-children")]
24249        {
24250            emit_idx += 1;
24251        }
24252        #[cfg(feature = "extra-children")]
24253        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24254            extra_iter
24255                .next()
24256                .unwrap()
24257                .node
24258                .write_to(writer)
24259                .map_err(SerializeError::from)?;
24260        }
24261        #[cfg(feature = "wml-settings")]
24262        if let Some(ref val) = self.align_tables_row_by_row {
24263            val.write_element("w:alignTablesRowByRow", writer)?;
24264        }
24265        #[cfg(feature = "extra-children")]
24266        {
24267            emit_idx += 1;
24268        }
24269        #[cfg(feature = "extra-children")]
24270        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24271            extra_iter
24272                .next()
24273                .unwrap()
24274                .node
24275                .write_to(writer)
24276                .map_err(SerializeError::from)?;
24277        }
24278        #[cfg(feature = "wml-settings")]
24279        if let Some(ref val) = self.forget_last_tab_alignment {
24280            val.write_element("w:forgetLastTabAlignment", writer)?;
24281        }
24282        #[cfg(feature = "extra-children")]
24283        {
24284            emit_idx += 1;
24285        }
24286        #[cfg(feature = "extra-children")]
24287        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24288            extra_iter
24289                .next()
24290                .unwrap()
24291                .node
24292                .write_to(writer)
24293                .map_err(SerializeError::from)?;
24294        }
24295        #[cfg(feature = "wml-settings")]
24296        if let Some(ref val) = self.adjust_line_height_in_table {
24297            val.write_element("w:adjustLineHeightInTable", writer)?;
24298        }
24299        #[cfg(feature = "extra-children")]
24300        {
24301            emit_idx += 1;
24302        }
24303        #[cfg(feature = "extra-children")]
24304        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24305            extra_iter
24306                .next()
24307                .unwrap()
24308                .node
24309                .write_to(writer)
24310                .map_err(SerializeError::from)?;
24311        }
24312        #[cfg(feature = "wml-settings")]
24313        if let Some(ref val) = self.auto_space_like_word95 {
24314            val.write_element("w:autoSpaceLikeWord95", writer)?;
24315        }
24316        #[cfg(feature = "extra-children")]
24317        {
24318            emit_idx += 1;
24319        }
24320        #[cfg(feature = "extra-children")]
24321        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24322            extra_iter
24323                .next()
24324                .unwrap()
24325                .node
24326                .write_to(writer)
24327                .map_err(SerializeError::from)?;
24328        }
24329        #[cfg(feature = "wml-settings")]
24330        if let Some(ref val) = self.no_space_raise_lower {
24331            val.write_element("w:noSpaceRaiseLower", writer)?;
24332        }
24333        #[cfg(feature = "extra-children")]
24334        {
24335            emit_idx += 1;
24336        }
24337        #[cfg(feature = "extra-children")]
24338        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24339            extra_iter
24340                .next()
24341                .unwrap()
24342                .node
24343                .write_to(writer)
24344                .map_err(SerializeError::from)?;
24345        }
24346        #[cfg(feature = "wml-settings")]
24347        if let Some(ref val) = self.do_not_use_h_t_m_l_paragraph_auto_spacing {
24348            val.write_element("w:doNotUseHTMLParagraphAutoSpacing", writer)?;
24349        }
24350        #[cfg(feature = "extra-children")]
24351        {
24352            emit_idx += 1;
24353        }
24354        #[cfg(feature = "extra-children")]
24355        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24356            extra_iter
24357                .next()
24358                .unwrap()
24359                .node
24360                .write_to(writer)
24361                .map_err(SerializeError::from)?;
24362        }
24363        #[cfg(feature = "wml-settings")]
24364        if let Some(ref val) = self.layout_raw_table_width {
24365            val.write_element("w:layoutRawTableWidth", writer)?;
24366        }
24367        #[cfg(feature = "extra-children")]
24368        {
24369            emit_idx += 1;
24370        }
24371        #[cfg(feature = "extra-children")]
24372        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24373            extra_iter
24374                .next()
24375                .unwrap()
24376                .node
24377                .write_to(writer)
24378                .map_err(SerializeError::from)?;
24379        }
24380        #[cfg(feature = "wml-settings")]
24381        if let Some(ref val) = self.layout_table_rows_apart {
24382            val.write_element("w:layoutTableRowsApart", writer)?;
24383        }
24384        #[cfg(feature = "extra-children")]
24385        {
24386            emit_idx += 1;
24387        }
24388        #[cfg(feature = "extra-children")]
24389        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24390            extra_iter
24391                .next()
24392                .unwrap()
24393                .node
24394                .write_to(writer)
24395                .map_err(SerializeError::from)?;
24396        }
24397        #[cfg(feature = "wml-settings")]
24398        if let Some(ref val) = self.use_word97_line_break_rules {
24399            val.write_element("w:useWord97LineBreakRules", writer)?;
24400        }
24401        #[cfg(feature = "extra-children")]
24402        {
24403            emit_idx += 1;
24404        }
24405        #[cfg(feature = "extra-children")]
24406        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24407            extra_iter
24408                .next()
24409                .unwrap()
24410                .node
24411                .write_to(writer)
24412                .map_err(SerializeError::from)?;
24413        }
24414        #[cfg(feature = "wml-settings")]
24415        if let Some(ref val) = self.do_not_break_wrapped_tables {
24416            val.write_element("w:doNotBreakWrappedTables", writer)?;
24417        }
24418        #[cfg(feature = "extra-children")]
24419        {
24420            emit_idx += 1;
24421        }
24422        #[cfg(feature = "extra-children")]
24423        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24424            extra_iter
24425                .next()
24426                .unwrap()
24427                .node
24428                .write_to(writer)
24429                .map_err(SerializeError::from)?;
24430        }
24431        #[cfg(feature = "wml-settings")]
24432        if let Some(ref val) = self.do_not_snap_to_grid_in_cell {
24433            val.write_element("w:doNotSnapToGridInCell", writer)?;
24434        }
24435        #[cfg(feature = "extra-children")]
24436        {
24437            emit_idx += 1;
24438        }
24439        #[cfg(feature = "extra-children")]
24440        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24441            extra_iter
24442                .next()
24443                .unwrap()
24444                .node
24445                .write_to(writer)
24446                .map_err(SerializeError::from)?;
24447        }
24448        #[cfg(feature = "wml-settings")]
24449        if let Some(ref val) = self.select_fld_with_first_or_last_char {
24450            val.write_element("w:selectFldWithFirstOrLastChar", writer)?;
24451        }
24452        #[cfg(feature = "extra-children")]
24453        {
24454            emit_idx += 1;
24455        }
24456        #[cfg(feature = "extra-children")]
24457        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24458            extra_iter
24459                .next()
24460                .unwrap()
24461                .node
24462                .write_to(writer)
24463                .map_err(SerializeError::from)?;
24464        }
24465        #[cfg(feature = "wml-settings")]
24466        if let Some(ref val) = self.apply_breaking_rules {
24467            val.write_element("w:applyBreakingRules", writer)?;
24468        }
24469        #[cfg(feature = "extra-children")]
24470        {
24471            emit_idx += 1;
24472        }
24473        #[cfg(feature = "extra-children")]
24474        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24475            extra_iter
24476                .next()
24477                .unwrap()
24478                .node
24479                .write_to(writer)
24480                .map_err(SerializeError::from)?;
24481        }
24482        #[cfg(feature = "wml-settings")]
24483        if let Some(ref val) = self.do_not_wrap_text_with_punct {
24484            val.write_element("w:doNotWrapTextWithPunct", writer)?;
24485        }
24486        #[cfg(feature = "extra-children")]
24487        {
24488            emit_idx += 1;
24489        }
24490        #[cfg(feature = "extra-children")]
24491        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24492            extra_iter
24493                .next()
24494                .unwrap()
24495                .node
24496                .write_to(writer)
24497                .map_err(SerializeError::from)?;
24498        }
24499        #[cfg(feature = "wml-settings")]
24500        if let Some(ref val) = self.do_not_use_east_asian_break_rules {
24501            val.write_element("w:doNotUseEastAsianBreakRules", writer)?;
24502        }
24503        #[cfg(feature = "extra-children")]
24504        {
24505            emit_idx += 1;
24506        }
24507        #[cfg(feature = "extra-children")]
24508        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24509            extra_iter
24510                .next()
24511                .unwrap()
24512                .node
24513                .write_to(writer)
24514                .map_err(SerializeError::from)?;
24515        }
24516        #[cfg(feature = "wml-settings")]
24517        if let Some(ref val) = self.use_word2002_table_style_rules {
24518            val.write_element("w:useWord2002TableStyleRules", writer)?;
24519        }
24520        #[cfg(feature = "extra-children")]
24521        {
24522            emit_idx += 1;
24523        }
24524        #[cfg(feature = "extra-children")]
24525        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24526            extra_iter
24527                .next()
24528                .unwrap()
24529                .node
24530                .write_to(writer)
24531                .map_err(SerializeError::from)?;
24532        }
24533        #[cfg(feature = "wml-settings")]
24534        if let Some(ref val) = self.grow_autofit {
24535            val.write_element("w:growAutofit", writer)?;
24536        }
24537        #[cfg(feature = "extra-children")]
24538        {
24539            emit_idx += 1;
24540        }
24541        #[cfg(feature = "extra-children")]
24542        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24543            extra_iter
24544                .next()
24545                .unwrap()
24546                .node
24547                .write_to(writer)
24548                .map_err(SerializeError::from)?;
24549        }
24550        #[cfg(feature = "wml-settings")]
24551        if let Some(ref val) = self.use_f_e_layout {
24552            val.write_element("w:useFELayout", writer)?;
24553        }
24554        #[cfg(feature = "extra-children")]
24555        {
24556            emit_idx += 1;
24557        }
24558        #[cfg(feature = "extra-children")]
24559        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24560            extra_iter
24561                .next()
24562                .unwrap()
24563                .node
24564                .write_to(writer)
24565                .map_err(SerializeError::from)?;
24566        }
24567        #[cfg(feature = "wml-settings")]
24568        if let Some(ref val) = self.use_normal_style_for_list {
24569            val.write_element("w:useNormalStyleForList", writer)?;
24570        }
24571        #[cfg(feature = "extra-children")]
24572        {
24573            emit_idx += 1;
24574        }
24575        #[cfg(feature = "extra-children")]
24576        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24577            extra_iter
24578                .next()
24579                .unwrap()
24580                .node
24581                .write_to(writer)
24582                .map_err(SerializeError::from)?;
24583        }
24584        #[cfg(feature = "wml-settings")]
24585        if let Some(ref val) = self.do_not_use_indent_as_numbering_tab_stop {
24586            val.write_element("w:doNotUseIndentAsNumberingTabStop", writer)?;
24587        }
24588        #[cfg(feature = "extra-children")]
24589        {
24590            emit_idx += 1;
24591        }
24592        #[cfg(feature = "extra-children")]
24593        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24594            extra_iter
24595                .next()
24596                .unwrap()
24597                .node
24598                .write_to(writer)
24599                .map_err(SerializeError::from)?;
24600        }
24601        #[cfg(feature = "wml-settings")]
24602        if let Some(ref val) = self.use_alt_kinsoku_line_break_rules {
24603            val.write_element("w:useAltKinsokuLineBreakRules", writer)?;
24604        }
24605        #[cfg(feature = "extra-children")]
24606        {
24607            emit_idx += 1;
24608        }
24609        #[cfg(feature = "extra-children")]
24610        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24611            extra_iter
24612                .next()
24613                .unwrap()
24614                .node
24615                .write_to(writer)
24616                .map_err(SerializeError::from)?;
24617        }
24618        #[cfg(feature = "wml-settings")]
24619        if let Some(ref val) = self.allow_space_of_same_style_in_table {
24620            val.write_element("w:allowSpaceOfSameStyleInTable", writer)?;
24621        }
24622        #[cfg(feature = "extra-children")]
24623        {
24624            emit_idx += 1;
24625        }
24626        #[cfg(feature = "extra-children")]
24627        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24628            extra_iter
24629                .next()
24630                .unwrap()
24631                .node
24632                .write_to(writer)
24633                .map_err(SerializeError::from)?;
24634        }
24635        #[cfg(feature = "wml-settings")]
24636        if let Some(ref val) = self.do_not_suppress_indentation {
24637            val.write_element("w:doNotSuppressIndentation", writer)?;
24638        }
24639        #[cfg(feature = "extra-children")]
24640        {
24641            emit_idx += 1;
24642        }
24643        #[cfg(feature = "extra-children")]
24644        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24645            extra_iter
24646                .next()
24647                .unwrap()
24648                .node
24649                .write_to(writer)
24650                .map_err(SerializeError::from)?;
24651        }
24652        #[cfg(feature = "wml-settings")]
24653        if let Some(ref val) = self.do_not_autofit_constrained_tables {
24654            val.write_element("w:doNotAutofitConstrainedTables", writer)?;
24655        }
24656        #[cfg(feature = "extra-children")]
24657        {
24658            emit_idx += 1;
24659        }
24660        #[cfg(feature = "extra-children")]
24661        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24662            extra_iter
24663                .next()
24664                .unwrap()
24665                .node
24666                .write_to(writer)
24667                .map_err(SerializeError::from)?;
24668        }
24669        #[cfg(feature = "wml-settings")]
24670        if let Some(ref val) = self.autofit_to_first_fixed_width_cell {
24671            val.write_element("w:autofitToFirstFixedWidthCell", writer)?;
24672        }
24673        #[cfg(feature = "extra-children")]
24674        {
24675            emit_idx += 1;
24676        }
24677        #[cfg(feature = "extra-children")]
24678        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24679            extra_iter
24680                .next()
24681                .unwrap()
24682                .node
24683                .write_to(writer)
24684                .map_err(SerializeError::from)?;
24685        }
24686        #[cfg(feature = "wml-settings")]
24687        if let Some(ref val) = self.underline_tab_in_num_list {
24688            val.write_element("w:underlineTabInNumList", writer)?;
24689        }
24690        #[cfg(feature = "extra-children")]
24691        {
24692            emit_idx += 1;
24693        }
24694        #[cfg(feature = "extra-children")]
24695        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24696            extra_iter
24697                .next()
24698                .unwrap()
24699                .node
24700                .write_to(writer)
24701                .map_err(SerializeError::from)?;
24702        }
24703        #[cfg(feature = "wml-settings")]
24704        if let Some(ref val) = self.display_hangul_fixed_width {
24705            val.write_element("w:displayHangulFixedWidth", writer)?;
24706        }
24707        #[cfg(feature = "extra-children")]
24708        {
24709            emit_idx += 1;
24710        }
24711        #[cfg(feature = "extra-children")]
24712        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24713            extra_iter
24714                .next()
24715                .unwrap()
24716                .node
24717                .write_to(writer)
24718                .map_err(SerializeError::from)?;
24719        }
24720        #[cfg(feature = "wml-settings")]
24721        if let Some(ref val) = self.split_pg_break_and_para_mark {
24722            val.write_element("w:splitPgBreakAndParaMark", writer)?;
24723        }
24724        #[cfg(feature = "extra-children")]
24725        {
24726            emit_idx += 1;
24727        }
24728        #[cfg(feature = "extra-children")]
24729        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24730            extra_iter
24731                .next()
24732                .unwrap()
24733                .node
24734                .write_to(writer)
24735                .map_err(SerializeError::from)?;
24736        }
24737        #[cfg(feature = "wml-settings")]
24738        if let Some(ref val) = self.do_not_vert_align_cell_with_sp {
24739            val.write_element("w:doNotVertAlignCellWithSp", writer)?;
24740        }
24741        #[cfg(feature = "extra-children")]
24742        {
24743            emit_idx += 1;
24744        }
24745        #[cfg(feature = "extra-children")]
24746        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24747            extra_iter
24748                .next()
24749                .unwrap()
24750                .node
24751                .write_to(writer)
24752                .map_err(SerializeError::from)?;
24753        }
24754        #[cfg(feature = "wml-settings")]
24755        if let Some(ref val) = self.do_not_break_constrained_forced_table {
24756            val.write_element("w:doNotBreakConstrainedForcedTable", writer)?;
24757        }
24758        #[cfg(feature = "extra-children")]
24759        {
24760            emit_idx += 1;
24761        }
24762        #[cfg(feature = "extra-children")]
24763        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24764            extra_iter
24765                .next()
24766                .unwrap()
24767                .node
24768                .write_to(writer)
24769                .map_err(SerializeError::from)?;
24770        }
24771        #[cfg(feature = "wml-settings")]
24772        if let Some(ref val) = self.do_not_vert_align_in_txbx {
24773            val.write_element("w:doNotVertAlignInTxbx", writer)?;
24774        }
24775        #[cfg(feature = "extra-children")]
24776        {
24777            emit_idx += 1;
24778        }
24779        #[cfg(feature = "extra-children")]
24780        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24781            extra_iter
24782                .next()
24783                .unwrap()
24784                .node
24785                .write_to(writer)
24786                .map_err(SerializeError::from)?;
24787        }
24788        #[cfg(feature = "wml-settings")]
24789        if let Some(ref val) = self.use_ansi_kerning_pairs {
24790            val.write_element("w:useAnsiKerningPairs", writer)?;
24791        }
24792        #[cfg(feature = "extra-children")]
24793        {
24794            emit_idx += 1;
24795        }
24796        #[cfg(feature = "extra-children")]
24797        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24798            extra_iter
24799                .next()
24800                .unwrap()
24801                .node
24802                .write_to(writer)
24803                .map_err(SerializeError::from)?;
24804        }
24805        #[cfg(feature = "wml-settings")]
24806        if let Some(ref val) = self.cached_col_balance {
24807            val.write_element("w:cachedColBalance", writer)?;
24808        }
24809        #[cfg(feature = "extra-children")]
24810        {
24811            emit_idx += 1;
24812        }
24813        #[cfg(feature = "wml-settings")]
24814        for item in &self.compat_setting {
24815            #[cfg(feature = "extra-children")]
24816            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24817                extra_iter
24818                    .next()
24819                    .unwrap()
24820                    .node
24821                    .write_to(writer)
24822                    .map_err(SerializeError::from)?;
24823            }
24824            item.write_element("w:compatSetting", writer)?;
24825            #[cfg(feature = "extra-children")]
24826            {
24827                emit_idx += 1;
24828            }
24829        }
24830        #[cfg(feature = "extra-children")]
24831        for extra in extra_iter {
24832            extra.node.write_to(writer).map_err(SerializeError::from)?;
24833        }
24834        Ok(())
24835    }
24836
24837    fn is_empty_element(&self) -> bool {
24838        #[cfg(feature = "wml-settings")]
24839        if self.use_single_borderfor_contiguous_cells.is_some() {
24840            return false;
24841        }
24842        #[cfg(feature = "wml-settings")]
24843        if self.wp_justification.is_some() {
24844            return false;
24845        }
24846        #[cfg(feature = "wml-settings")]
24847        if self.no_tab_hang_ind.is_some() {
24848            return false;
24849        }
24850        #[cfg(feature = "wml-settings")]
24851        if self.no_leading.is_some() {
24852            return false;
24853        }
24854        #[cfg(feature = "wml-settings")]
24855        if self.space_for_u_l.is_some() {
24856            return false;
24857        }
24858        #[cfg(feature = "wml-settings")]
24859        if self.no_column_balance.is_some() {
24860            return false;
24861        }
24862        #[cfg(feature = "wml-settings")]
24863        if self.balance_single_byte_double_byte_width.is_some() {
24864            return false;
24865        }
24866        #[cfg(feature = "wml-settings")]
24867        if self.no_extra_line_spacing.is_some() {
24868            return false;
24869        }
24870        #[cfg(feature = "wml-settings")]
24871        if self.do_not_leave_backslash_alone.is_some() {
24872            return false;
24873        }
24874        #[cfg(feature = "wml-settings")]
24875        if self.ul_trail_space.is_some() {
24876            return false;
24877        }
24878        #[cfg(feature = "wml-settings")]
24879        if self.do_not_expand_shift_return.is_some() {
24880            return false;
24881        }
24882        #[cfg(feature = "wml-settings")]
24883        if self.spacing_in_whole_points.is_some() {
24884            return false;
24885        }
24886        #[cfg(feature = "wml-settings")]
24887        if self.line_wrap_like_word6.is_some() {
24888            return false;
24889        }
24890        #[cfg(feature = "wml-settings")]
24891        if self.print_body_text_before_header.is_some() {
24892            return false;
24893        }
24894        #[cfg(feature = "wml-settings")]
24895        if self.print_col_black.is_some() {
24896            return false;
24897        }
24898        #[cfg(feature = "wml-settings")]
24899        if self.wp_space_width.is_some() {
24900            return false;
24901        }
24902        #[cfg(feature = "wml-settings")]
24903        if self.show_breaks_in_frames.is_some() {
24904            return false;
24905        }
24906        #[cfg(feature = "wml-settings")]
24907        if self.sub_font_by_size.is_some() {
24908            return false;
24909        }
24910        #[cfg(feature = "wml-settings")]
24911        if self.suppress_bottom_spacing.is_some() {
24912            return false;
24913        }
24914        #[cfg(feature = "wml-settings")]
24915        if self.suppress_top_spacing.is_some() {
24916            return false;
24917        }
24918        #[cfg(feature = "wml-settings")]
24919        if self.suppress_spacing_at_top_of_page.is_some() {
24920            return false;
24921        }
24922        #[cfg(feature = "wml-settings")]
24923        if self.suppress_top_spacing_w_p.is_some() {
24924            return false;
24925        }
24926        #[cfg(feature = "wml-settings")]
24927        if self.suppress_sp_bf_after_pg_brk.is_some() {
24928            return false;
24929        }
24930        #[cfg(feature = "wml-settings")]
24931        if self.swap_borders_facing_pages.is_some() {
24932            return false;
24933        }
24934        #[cfg(feature = "wml-settings")]
24935        if self.conv_mail_merge_esc.is_some() {
24936            return false;
24937        }
24938        #[cfg(feature = "wml-settings")]
24939        if self.truncate_font_heights_like_w_p6.is_some() {
24940            return false;
24941        }
24942        #[cfg(feature = "wml-settings")]
24943        if self.mw_small_caps.is_some() {
24944            return false;
24945        }
24946        #[cfg(feature = "wml-settings")]
24947        if self.use_printer_metrics.is_some() {
24948            return false;
24949        }
24950        #[cfg(feature = "wml-settings")]
24951        if self.do_not_suppress_paragraph_borders.is_some() {
24952            return false;
24953        }
24954        #[cfg(feature = "wml-settings")]
24955        if self.wrap_trail_spaces.is_some() {
24956            return false;
24957        }
24958        #[cfg(feature = "wml-settings")]
24959        if self.footnote_layout_like_w_w8.is_some() {
24960            return false;
24961        }
24962        #[cfg(feature = "wml-settings")]
24963        if self.shape_layout_like_w_w8.is_some() {
24964            return false;
24965        }
24966        #[cfg(feature = "wml-settings")]
24967        if self.align_tables_row_by_row.is_some() {
24968            return false;
24969        }
24970        #[cfg(feature = "wml-settings")]
24971        if self.forget_last_tab_alignment.is_some() {
24972            return false;
24973        }
24974        #[cfg(feature = "wml-settings")]
24975        if self.adjust_line_height_in_table.is_some() {
24976            return false;
24977        }
24978        #[cfg(feature = "wml-settings")]
24979        if self.auto_space_like_word95.is_some() {
24980            return false;
24981        }
24982        #[cfg(feature = "wml-settings")]
24983        if self.no_space_raise_lower.is_some() {
24984            return false;
24985        }
24986        #[cfg(feature = "wml-settings")]
24987        if self.do_not_use_h_t_m_l_paragraph_auto_spacing.is_some() {
24988            return false;
24989        }
24990        #[cfg(feature = "wml-settings")]
24991        if self.layout_raw_table_width.is_some() {
24992            return false;
24993        }
24994        #[cfg(feature = "wml-settings")]
24995        if self.layout_table_rows_apart.is_some() {
24996            return false;
24997        }
24998        #[cfg(feature = "wml-settings")]
24999        if self.use_word97_line_break_rules.is_some() {
25000            return false;
25001        }
25002        #[cfg(feature = "wml-settings")]
25003        if self.do_not_break_wrapped_tables.is_some() {
25004            return false;
25005        }
25006        #[cfg(feature = "wml-settings")]
25007        if self.do_not_snap_to_grid_in_cell.is_some() {
25008            return false;
25009        }
25010        #[cfg(feature = "wml-settings")]
25011        if self.select_fld_with_first_or_last_char.is_some() {
25012            return false;
25013        }
25014        #[cfg(feature = "wml-settings")]
25015        if self.apply_breaking_rules.is_some() {
25016            return false;
25017        }
25018        #[cfg(feature = "wml-settings")]
25019        if self.do_not_wrap_text_with_punct.is_some() {
25020            return false;
25021        }
25022        #[cfg(feature = "wml-settings")]
25023        if self.do_not_use_east_asian_break_rules.is_some() {
25024            return false;
25025        }
25026        #[cfg(feature = "wml-settings")]
25027        if self.use_word2002_table_style_rules.is_some() {
25028            return false;
25029        }
25030        #[cfg(feature = "wml-settings")]
25031        if self.grow_autofit.is_some() {
25032            return false;
25033        }
25034        #[cfg(feature = "wml-settings")]
25035        if self.use_f_e_layout.is_some() {
25036            return false;
25037        }
25038        #[cfg(feature = "wml-settings")]
25039        if self.use_normal_style_for_list.is_some() {
25040            return false;
25041        }
25042        #[cfg(feature = "wml-settings")]
25043        if self.do_not_use_indent_as_numbering_tab_stop.is_some() {
25044            return false;
25045        }
25046        #[cfg(feature = "wml-settings")]
25047        if self.use_alt_kinsoku_line_break_rules.is_some() {
25048            return false;
25049        }
25050        #[cfg(feature = "wml-settings")]
25051        if self.allow_space_of_same_style_in_table.is_some() {
25052            return false;
25053        }
25054        #[cfg(feature = "wml-settings")]
25055        if self.do_not_suppress_indentation.is_some() {
25056            return false;
25057        }
25058        #[cfg(feature = "wml-settings")]
25059        if self.do_not_autofit_constrained_tables.is_some() {
25060            return false;
25061        }
25062        #[cfg(feature = "wml-settings")]
25063        if self.autofit_to_first_fixed_width_cell.is_some() {
25064            return false;
25065        }
25066        #[cfg(feature = "wml-settings")]
25067        if self.underline_tab_in_num_list.is_some() {
25068            return false;
25069        }
25070        #[cfg(feature = "wml-settings")]
25071        if self.display_hangul_fixed_width.is_some() {
25072            return false;
25073        }
25074        #[cfg(feature = "wml-settings")]
25075        if self.split_pg_break_and_para_mark.is_some() {
25076            return false;
25077        }
25078        #[cfg(feature = "wml-settings")]
25079        if self.do_not_vert_align_cell_with_sp.is_some() {
25080            return false;
25081        }
25082        #[cfg(feature = "wml-settings")]
25083        if self.do_not_break_constrained_forced_table.is_some() {
25084            return false;
25085        }
25086        #[cfg(feature = "wml-settings")]
25087        if self.do_not_vert_align_in_txbx.is_some() {
25088            return false;
25089        }
25090        #[cfg(feature = "wml-settings")]
25091        if self.use_ansi_kerning_pairs.is_some() {
25092            return false;
25093        }
25094        #[cfg(feature = "wml-settings")]
25095        if self.cached_col_balance.is_some() {
25096            return false;
25097        }
25098        #[cfg(feature = "wml-settings")]
25099        if !self.compat_setting.is_empty() {
25100            return false;
25101        }
25102        #[cfg(feature = "extra-children")]
25103        if !self.extra_children.is_empty() {
25104            return false;
25105        }
25106        true
25107    }
25108}
25109
25110impl ToXml for CTCompatSetting {
25111    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
25112        #[allow(unused_mut)]
25113        let mut start = start;
25114        if let Some(ref val) = self.name {
25115            start.push_attribute(("w:name", val.as_str()));
25116        }
25117        if let Some(ref val) = self.uri {
25118            start.push_attribute(("w:uri", val.as_str()));
25119        }
25120        if let Some(ref val) = self.value {
25121            start.push_attribute(("w:val", val.as_str()));
25122        }
25123        #[cfg(feature = "extra-attrs")]
25124        for (key, value) in &self.extra_attrs {
25125            start.push_attribute((key.as_str(), value.as_str()));
25126        }
25127        start
25128    }
25129
25130    fn is_empty_element(&self) -> bool {
25131        true
25132    }
25133}
25134
25135impl ToXml for CTDocVar {
25136    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
25137        #[allow(unused_mut)]
25138        let mut start = start;
25139        {
25140            let val = &self.name;
25141            start.push_attribute(("w:name", val.as_str()));
25142        }
25143        {
25144            let val = &self.value;
25145            start.push_attribute(("w:val", val.as_str()));
25146        }
25147        #[cfg(feature = "extra-attrs")]
25148        for (key, value) in &self.extra_attrs {
25149            start.push_attribute((key.as_str(), value.as_str()));
25150        }
25151        start
25152    }
25153
25154    fn is_empty_element(&self) -> bool {
25155        true
25156    }
25157}
25158
25159impl ToXml for CTDocVars {
25160    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
25161        #[cfg(feature = "extra-children")]
25162        let mut extra_iter = self.extra_children.iter().peekable();
25163        #[cfg(feature = "extra-children")]
25164        let mut emit_idx: usize = 0;
25165        #[cfg(feature = "wml-settings")]
25166        for item in &self.doc_var {
25167            #[cfg(feature = "extra-children")]
25168            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
25169                extra_iter
25170                    .next()
25171                    .unwrap()
25172                    .node
25173                    .write_to(writer)
25174                    .map_err(SerializeError::from)?;
25175            }
25176            item.write_element("w:docVar", writer)?;
25177            #[cfg(feature = "extra-children")]
25178            {
25179                emit_idx += 1;
25180            }
25181        }
25182        #[cfg(feature = "extra-children")]
25183        for extra in extra_iter {
25184            extra.node.write_to(writer).map_err(SerializeError::from)?;
25185        }
25186        Ok(())
25187    }
25188
25189    fn is_empty_element(&self) -> bool {
25190        #[cfg(feature = "wml-settings")]
25191        if !self.doc_var.is_empty() {
25192            return false;
25193        }
25194        #[cfg(feature = "extra-children")]
25195        if !self.extra_children.is_empty() {
25196            return false;
25197        }
25198        true
25199    }
25200}
25201
25202impl ToXml for CTDocRsids {
25203    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
25204        #[cfg(feature = "extra-children")]
25205        let mut extra_iter = self.extra_children.iter().peekable();
25206        #[cfg(feature = "extra-children")]
25207        let mut emit_idx: usize = 0;
25208        #[cfg(feature = "extra-children")]
25209        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
25210            extra_iter
25211                .next()
25212                .unwrap()
25213                .node
25214                .write_to(writer)
25215                .map_err(SerializeError::from)?;
25216        }
25217        #[cfg(feature = "wml-track-changes")]
25218        if let Some(ref val) = self.rsid_root {
25219            val.write_element("w:rsidRoot", writer)?;
25220        }
25221        #[cfg(feature = "extra-children")]
25222        {
25223            emit_idx += 1;
25224        }
25225        #[cfg(feature = "wml-track-changes")]
25226        for item in &self.rsid {
25227            #[cfg(feature = "extra-children")]
25228            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
25229                extra_iter
25230                    .next()
25231                    .unwrap()
25232                    .node
25233                    .write_to(writer)
25234                    .map_err(SerializeError::from)?;
25235            }
25236            item.write_element("w:rsid", writer)?;
25237            #[cfg(feature = "extra-children")]
25238            {
25239                emit_idx += 1;
25240            }
25241        }
25242        #[cfg(feature = "extra-children")]
25243        for extra in extra_iter {
25244            extra.node.write_to(writer).map_err(SerializeError::from)?;
25245        }
25246        Ok(())
25247    }
25248
25249    fn is_empty_element(&self) -> bool {
25250        #[cfg(feature = "wml-track-changes")]
25251        if self.rsid_root.is_some() {
25252            return false;
25253        }
25254        #[cfg(feature = "wml-track-changes")]
25255        if !self.rsid.is_empty() {
25256            return false;
25257        }
25258        #[cfg(feature = "extra-children")]
25259        if !self.extra_children.is_empty() {
25260            return false;
25261        }
25262        true
25263    }
25264}
25265
25266impl ToXml for CTCharacterSpacing {
25267    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
25268        #[allow(unused_mut)]
25269        let mut start = start;
25270        {
25271            let val = &self.value;
25272            {
25273                let s = val.to_string();
25274                start.push_attribute(("w:val", s.as_str()));
25275            }
25276        }
25277        #[cfg(feature = "extra-attrs")]
25278        for (key, value) in &self.extra_attrs {
25279            start.push_attribute((key.as_str(), value.as_str()));
25280        }
25281        start
25282    }
25283
25284    fn is_empty_element(&self) -> bool {
25285        true
25286    }
25287}
25288
25289impl ToXml for CTSaveThroughXslt {
25290    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
25291        #[allow(unused_mut)]
25292        let mut start = start;
25293        #[cfg(feature = "wml-settings")]
25294        if let Some(ref val) = self.id {
25295            start.push_attribute(("r:id", val.as_str()));
25296        }
25297        #[cfg(feature = "wml-settings")]
25298        if let Some(ref val) = self.solution_i_d {
25299            start.push_attribute(("w:solutionID", val.as_str()));
25300        }
25301        #[cfg(feature = "extra-attrs")]
25302        for (key, value) in &self.extra_attrs {
25303            start.push_attribute((key.as_str(), value.as_str()));
25304        }
25305        start
25306    }
25307
25308    fn is_empty_element(&self) -> bool {
25309        true
25310    }
25311}
25312
25313impl ToXml for RunPropertiesDefault {
25314    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
25315        #[cfg(feature = "extra-children")]
25316        let mut extra_iter = self.extra_children.iter().peekable();
25317        #[cfg(feature = "extra-children")]
25318        let mut emit_idx: usize = 0;
25319        #[cfg(feature = "extra-children")]
25320        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
25321            extra_iter
25322                .next()
25323                .unwrap()
25324                .node
25325                .write_to(writer)
25326                .map_err(SerializeError::from)?;
25327        }
25328        if let Some(ref val) = self.r_pr {
25329            val.write_element("w:rPr", writer)?;
25330        }
25331        #[cfg(feature = "extra-children")]
25332        {
25333            emit_idx += 1;
25334        }
25335        #[cfg(feature = "extra-children")]
25336        for extra in extra_iter {
25337            extra.node.write_to(writer).map_err(SerializeError::from)?;
25338        }
25339        Ok(())
25340    }
25341
25342    fn is_empty_element(&self) -> bool {
25343        if self.r_pr.is_some() {
25344            return false;
25345        }
25346        #[cfg(feature = "extra-children")]
25347        if !self.extra_children.is_empty() {
25348            return false;
25349        }
25350        true
25351    }
25352}
25353
25354impl ToXml for ParagraphPropertiesDefault {
25355    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
25356        #[cfg(feature = "extra-children")]
25357        let mut extra_iter = self.extra_children.iter().peekable();
25358        #[cfg(feature = "extra-children")]
25359        let mut emit_idx: usize = 0;
25360        #[cfg(feature = "extra-children")]
25361        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
25362            extra_iter
25363                .next()
25364                .unwrap()
25365                .node
25366                .write_to(writer)
25367                .map_err(SerializeError::from)?;
25368        }
25369        if let Some(ref val) = self.p_pr {
25370            val.write_element("w:pPr", writer)?;
25371        }
25372        #[cfg(feature = "extra-children")]
25373        {
25374            emit_idx += 1;
25375        }
25376        #[cfg(feature = "extra-children")]
25377        for extra in extra_iter {
25378            extra.node.write_to(writer).map_err(SerializeError::from)?;
25379        }
25380        Ok(())
25381    }
25382
25383    fn is_empty_element(&self) -> bool {
25384        if self.p_pr.is_some() {
25385            return false;
25386        }
25387        #[cfg(feature = "extra-children")]
25388        if !self.extra_children.is_empty() {
25389            return false;
25390        }
25391        true
25392    }
25393}
25394
25395impl ToXml for DocumentDefaults {
25396    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
25397        #[cfg(feature = "extra-children")]
25398        let mut extra_iter = self.extra_children.iter().peekable();
25399        #[cfg(feature = "extra-children")]
25400        let mut emit_idx: usize = 0;
25401        #[cfg(feature = "extra-children")]
25402        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
25403            extra_iter
25404                .next()
25405                .unwrap()
25406                .node
25407                .write_to(writer)
25408                .map_err(SerializeError::from)?;
25409        }
25410        if let Some(ref val) = self.r_pr_default {
25411            val.write_element("w:rPrDefault", writer)?;
25412        }
25413        #[cfg(feature = "extra-children")]
25414        {
25415            emit_idx += 1;
25416        }
25417        #[cfg(feature = "extra-children")]
25418        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
25419            extra_iter
25420                .next()
25421                .unwrap()
25422                .node
25423                .write_to(writer)
25424                .map_err(SerializeError::from)?;
25425        }
25426        if let Some(ref val) = self.p_pr_default {
25427            val.write_element("w:pPrDefault", writer)?;
25428        }
25429        #[cfg(feature = "extra-children")]
25430        {
25431            emit_idx += 1;
25432        }
25433        #[cfg(feature = "extra-children")]
25434        for extra in extra_iter {
25435            extra.node.write_to(writer).map_err(SerializeError::from)?;
25436        }
25437        Ok(())
25438    }
25439
25440    fn is_empty_element(&self) -> bool {
25441        if self.r_pr_default.is_some() {
25442            return false;
25443        }
25444        if self.p_pr_default.is_some() {
25445            return false;
25446        }
25447        #[cfg(feature = "extra-children")]
25448        if !self.extra_children.is_empty() {
25449            return false;
25450        }
25451        true
25452    }
25453}
25454
25455impl ToXml for CTColorSchemeMapping {
25456    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
25457        #[allow(unused_mut)]
25458        let mut start = start;
25459        #[cfg(feature = "wml-settings")]
25460        if let Some(ref val) = self.bg1 {
25461            {
25462                let s = val.to_string();
25463                start.push_attribute(("w:bg1", s.as_str()));
25464            }
25465        }
25466        #[cfg(feature = "wml-settings")]
25467        if let Some(ref val) = self.t1 {
25468            {
25469                let s = val.to_string();
25470                start.push_attribute(("w:t1", s.as_str()));
25471            }
25472        }
25473        #[cfg(feature = "wml-settings")]
25474        if let Some(ref val) = self.bg2 {
25475            {
25476                let s = val.to_string();
25477                start.push_attribute(("w:bg2", s.as_str()));
25478            }
25479        }
25480        #[cfg(feature = "wml-settings")]
25481        if let Some(ref val) = self.t2 {
25482            {
25483                let s = val.to_string();
25484                start.push_attribute(("w:t2", s.as_str()));
25485            }
25486        }
25487        #[cfg(feature = "wml-settings")]
25488        if let Some(ref val) = self.accent1 {
25489            {
25490                let s = val.to_string();
25491                start.push_attribute(("w:accent1", s.as_str()));
25492            }
25493        }
25494        #[cfg(feature = "wml-settings")]
25495        if let Some(ref val) = self.accent2 {
25496            {
25497                let s = val.to_string();
25498                start.push_attribute(("w:accent2", s.as_str()));
25499            }
25500        }
25501        #[cfg(feature = "wml-settings")]
25502        if let Some(ref val) = self.accent3 {
25503            {
25504                let s = val.to_string();
25505                start.push_attribute(("w:accent3", s.as_str()));
25506            }
25507        }
25508        #[cfg(feature = "wml-settings")]
25509        if let Some(ref val) = self.accent4 {
25510            {
25511                let s = val.to_string();
25512                start.push_attribute(("w:accent4", s.as_str()));
25513            }
25514        }
25515        #[cfg(feature = "wml-settings")]
25516        if let Some(ref val) = self.accent5 {
25517            {
25518                let s = val.to_string();
25519                start.push_attribute(("w:accent5", s.as_str()));
25520            }
25521        }
25522        #[cfg(feature = "wml-settings")]
25523        if let Some(ref val) = self.accent6 {
25524            {
25525                let s = val.to_string();
25526                start.push_attribute(("w:accent6", s.as_str()));
25527            }
25528        }
25529        #[cfg(feature = "wml-settings")]
25530        if let Some(ref val) = self.hyperlink {
25531            {
25532                let s = val.to_string();
25533                start.push_attribute(("w:hyperlink", s.as_str()));
25534            }
25535        }
25536        #[cfg(feature = "wml-settings")]
25537        if let Some(ref val) = self.followed_hyperlink {
25538            {
25539                let s = val.to_string();
25540                start.push_attribute(("w:followedHyperlink", s.as_str()));
25541            }
25542        }
25543        #[cfg(feature = "extra-attrs")]
25544        for (key, value) in &self.extra_attrs {
25545            start.push_attribute((key.as_str(), value.as_str()));
25546        }
25547        start
25548    }
25549
25550    fn is_empty_element(&self) -> bool {
25551        true
25552    }
25553}
25554
25555impl ToXml for CTReadingModeInkLockDown {
25556    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
25557        #[allow(unused_mut)]
25558        let mut start = start;
25559        #[cfg(feature = "wml-settings")]
25560        {
25561            let val = &self.actual_pg;
25562            {
25563                let s = val.to_string();
25564                start.push_attribute(("w:actualPg", s.as_str()));
25565            }
25566        }
25567        #[cfg(feature = "wml-settings")]
25568        {
25569            let val = &self.width;
25570            {
25571                let s = val.to_string();
25572                start.push_attribute(("w:w", s.as_str()));
25573            }
25574        }
25575        #[cfg(feature = "wml-settings")]
25576        {
25577            let val = &self.height;
25578            {
25579                let s = val.to_string();
25580                start.push_attribute(("w:h", s.as_str()));
25581            }
25582        }
25583        #[cfg(feature = "wml-settings")]
25584        {
25585            let val = &self.font_sz;
25586            {
25587                let s = val.to_string();
25588                start.push_attribute(("w:fontSz", s.as_str()));
25589            }
25590        }
25591        #[cfg(feature = "extra-attrs")]
25592        for (key, value) in &self.extra_attrs {
25593            start.push_attribute((key.as_str(), value.as_str()));
25594        }
25595        start
25596    }
25597
25598    fn is_empty_element(&self) -> bool {
25599        true
25600    }
25601}
25602
25603impl ToXml for CTWriteProtection {
25604    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
25605        #[allow(unused_mut)]
25606        let mut start = start;
25607        #[cfg(feature = "wml-settings")]
25608        if let Some(ref val) = self.recommended {
25609            {
25610                let s = val.to_string();
25611                start.push_attribute(("w:recommended", s.as_str()));
25612            }
25613        }
25614        #[cfg(feature = "wml-settings")]
25615        if let Some(ref val) = self.algorithm_name {
25616            start.push_attribute(("w:algorithmName", val.as_str()));
25617        }
25618        #[cfg(feature = "wml-settings")]
25619        if let Some(ref val) = self.hash_value {
25620            {
25621                let b64 = encode_base64(val);
25622                start.push_attribute(("w:hashValue", b64.as_str()));
25623            }
25624        }
25625        #[cfg(feature = "wml-settings")]
25626        if let Some(ref val) = self.salt_value {
25627            {
25628                let b64 = encode_base64(val);
25629                start.push_attribute(("w:saltValue", b64.as_str()));
25630            }
25631        }
25632        #[cfg(feature = "wml-settings")]
25633        if let Some(ref val) = self.spin_count {
25634            {
25635                let s = val.to_string();
25636                start.push_attribute(("w:spinCount", s.as_str()));
25637            }
25638        }
25639        #[cfg(feature = "wml-settings")]
25640        if let Some(ref val) = self.crypt_provider_type {
25641            {
25642                let s = val.to_string();
25643                start.push_attribute(("w:cryptProviderType", s.as_str()));
25644            }
25645        }
25646        #[cfg(feature = "wml-settings")]
25647        if let Some(ref val) = self.crypt_algorithm_class {
25648            {
25649                let s = val.to_string();
25650                start.push_attribute(("w:cryptAlgorithmClass", s.as_str()));
25651            }
25652        }
25653        #[cfg(feature = "wml-settings")]
25654        if let Some(ref val) = self.crypt_algorithm_type {
25655            {
25656                let s = val.to_string();
25657                start.push_attribute(("w:cryptAlgorithmType", s.as_str()));
25658            }
25659        }
25660        #[cfg(feature = "wml-settings")]
25661        if let Some(ref val) = self.crypt_algorithm_sid {
25662            {
25663                let s = val.to_string();
25664                start.push_attribute(("w:cryptAlgorithmSid", s.as_str()));
25665            }
25666        }
25667        #[cfg(feature = "wml-settings")]
25668        if let Some(ref val) = self.crypt_spin_count {
25669            {
25670                let s = val.to_string();
25671                start.push_attribute(("w:cryptSpinCount", s.as_str()));
25672            }
25673        }
25674        #[cfg(feature = "wml-settings")]
25675        if let Some(ref val) = self.crypt_provider {
25676            start.push_attribute(("w:cryptProvider", val.as_str()));
25677        }
25678        #[cfg(feature = "wml-settings")]
25679        if let Some(ref val) = self.alg_id_ext {
25680            {
25681                let hex = encode_hex(val);
25682                start.push_attribute(("w:algIdExt", hex.as_str()));
25683            }
25684        }
25685        #[cfg(feature = "wml-settings")]
25686        if let Some(ref val) = self.alg_id_ext_source {
25687            start.push_attribute(("w:algIdExtSource", val.as_str()));
25688        }
25689        #[cfg(feature = "wml-settings")]
25690        if let Some(ref val) = self.crypt_provider_type_ext {
25691            {
25692                let hex = encode_hex(val);
25693                start.push_attribute(("w:cryptProviderTypeExt", hex.as_str()));
25694            }
25695        }
25696        #[cfg(feature = "wml-settings")]
25697        if let Some(ref val) = self.crypt_provider_type_ext_source {
25698            start.push_attribute(("w:cryptProviderTypeExtSource", val.as_str()));
25699        }
25700        #[cfg(feature = "wml-settings")]
25701        if let Some(ref val) = self.hash {
25702            {
25703                let b64 = encode_base64(val);
25704                start.push_attribute(("w:hash", b64.as_str()));
25705            }
25706        }
25707        #[cfg(feature = "wml-settings")]
25708        if let Some(ref val) = self.salt {
25709            {
25710                let b64 = encode_base64(val);
25711                start.push_attribute(("w:salt", b64.as_str()));
25712            }
25713        }
25714        #[cfg(feature = "extra-attrs")]
25715        for (key, value) in &self.extra_attrs {
25716            start.push_attribute((key.as_str(), value.as_str()));
25717        }
25718        start
25719    }
25720
25721    fn is_empty_element(&self) -> bool {
25722        true
25723    }
25724}
25725
25726impl ToXml for Settings {
25727    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
25728        #[cfg(feature = "extra-children")]
25729        let mut extra_iter = self.extra_children.iter().peekable();
25730        #[cfg(feature = "extra-children")]
25731        let mut emit_idx: usize = 0;
25732        #[cfg(feature = "extra-children")]
25733        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
25734            extra_iter
25735                .next()
25736                .unwrap()
25737                .node
25738                .write_to(writer)
25739                .map_err(SerializeError::from)?;
25740        }
25741        #[cfg(feature = "wml-settings")]
25742        if let Some(ref val) = self.write_protection {
25743            val.write_element("w:writeProtection", writer)?;
25744        }
25745        #[cfg(feature = "extra-children")]
25746        {
25747            emit_idx += 1;
25748        }
25749        #[cfg(feature = "extra-children")]
25750        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
25751            extra_iter
25752                .next()
25753                .unwrap()
25754                .node
25755                .write_to(writer)
25756                .map_err(SerializeError::from)?;
25757        }
25758        #[cfg(feature = "wml-settings")]
25759        if let Some(ref val) = self.view {
25760            val.write_element("w:view", writer)?;
25761        }
25762        #[cfg(feature = "extra-children")]
25763        {
25764            emit_idx += 1;
25765        }
25766        #[cfg(feature = "extra-children")]
25767        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
25768            extra_iter
25769                .next()
25770                .unwrap()
25771                .node
25772                .write_to(writer)
25773                .map_err(SerializeError::from)?;
25774        }
25775        #[cfg(feature = "wml-settings")]
25776        if let Some(ref val) = self.zoom {
25777            val.write_element("w:zoom", writer)?;
25778        }
25779        #[cfg(feature = "extra-children")]
25780        {
25781            emit_idx += 1;
25782        }
25783        #[cfg(feature = "extra-children")]
25784        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
25785            extra_iter
25786                .next()
25787                .unwrap()
25788                .node
25789                .write_to(writer)
25790                .map_err(SerializeError::from)?;
25791        }
25792        #[cfg(feature = "wml-settings")]
25793        if let Some(ref val) = self.remove_personal_information {
25794            val.write_element("w:removePersonalInformation", writer)?;
25795        }
25796        #[cfg(feature = "extra-children")]
25797        {
25798            emit_idx += 1;
25799        }
25800        #[cfg(feature = "extra-children")]
25801        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
25802            extra_iter
25803                .next()
25804                .unwrap()
25805                .node
25806                .write_to(writer)
25807                .map_err(SerializeError::from)?;
25808        }
25809        #[cfg(feature = "wml-settings")]
25810        if let Some(ref val) = self.remove_date_and_time {
25811            val.write_element("w:removeDateAndTime", writer)?;
25812        }
25813        #[cfg(feature = "extra-children")]
25814        {
25815            emit_idx += 1;
25816        }
25817        #[cfg(feature = "extra-children")]
25818        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
25819            extra_iter
25820                .next()
25821                .unwrap()
25822                .node
25823                .write_to(writer)
25824                .map_err(SerializeError::from)?;
25825        }
25826        #[cfg(feature = "wml-settings")]
25827        if let Some(ref val) = self.do_not_display_page_boundaries {
25828            val.write_element("w:doNotDisplayPageBoundaries", writer)?;
25829        }
25830        #[cfg(feature = "extra-children")]
25831        {
25832            emit_idx += 1;
25833        }
25834        #[cfg(feature = "extra-children")]
25835        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
25836            extra_iter
25837                .next()
25838                .unwrap()
25839                .node
25840                .write_to(writer)
25841                .map_err(SerializeError::from)?;
25842        }
25843        #[cfg(feature = "wml-settings")]
25844        if let Some(ref val) = self.display_background_shape {
25845            val.write_element("w:displayBackgroundShape", writer)?;
25846        }
25847        #[cfg(feature = "extra-children")]
25848        {
25849            emit_idx += 1;
25850        }
25851        #[cfg(feature = "extra-children")]
25852        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
25853            extra_iter
25854                .next()
25855                .unwrap()
25856                .node
25857                .write_to(writer)
25858                .map_err(SerializeError::from)?;
25859        }
25860        #[cfg(feature = "wml-settings")]
25861        if let Some(ref val) = self.print_post_script_over_text {
25862            val.write_element("w:printPostScriptOverText", writer)?;
25863        }
25864        #[cfg(feature = "extra-children")]
25865        {
25866            emit_idx += 1;
25867        }
25868        #[cfg(feature = "extra-children")]
25869        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
25870            extra_iter
25871                .next()
25872                .unwrap()
25873                .node
25874                .write_to(writer)
25875                .map_err(SerializeError::from)?;
25876        }
25877        #[cfg(feature = "wml-settings")]
25878        if let Some(ref val) = self.print_fractional_character_width {
25879            val.write_element("w:printFractionalCharacterWidth", writer)?;
25880        }
25881        #[cfg(feature = "extra-children")]
25882        {
25883            emit_idx += 1;
25884        }
25885        #[cfg(feature = "extra-children")]
25886        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
25887            extra_iter
25888                .next()
25889                .unwrap()
25890                .node
25891                .write_to(writer)
25892                .map_err(SerializeError::from)?;
25893        }
25894        #[cfg(feature = "wml-settings")]
25895        if let Some(ref val) = self.print_forms_data {
25896            val.write_element("w:printFormsData", writer)?;
25897        }
25898        #[cfg(feature = "extra-children")]
25899        {
25900            emit_idx += 1;
25901        }
25902        #[cfg(feature = "extra-children")]
25903        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
25904            extra_iter
25905                .next()
25906                .unwrap()
25907                .node
25908                .write_to(writer)
25909                .map_err(SerializeError::from)?;
25910        }
25911        #[cfg(feature = "wml-settings")]
25912        if let Some(ref val) = self.embed_true_type_fonts {
25913            val.write_element("w:embedTrueTypeFonts", writer)?;
25914        }
25915        #[cfg(feature = "extra-children")]
25916        {
25917            emit_idx += 1;
25918        }
25919        #[cfg(feature = "extra-children")]
25920        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
25921            extra_iter
25922                .next()
25923                .unwrap()
25924                .node
25925                .write_to(writer)
25926                .map_err(SerializeError::from)?;
25927        }
25928        #[cfg(feature = "wml-settings")]
25929        if let Some(ref val) = self.embed_system_fonts {
25930            val.write_element("w:embedSystemFonts", writer)?;
25931        }
25932        #[cfg(feature = "extra-children")]
25933        {
25934            emit_idx += 1;
25935        }
25936        #[cfg(feature = "extra-children")]
25937        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
25938            extra_iter
25939                .next()
25940                .unwrap()
25941                .node
25942                .write_to(writer)
25943                .map_err(SerializeError::from)?;
25944        }
25945        #[cfg(feature = "wml-settings")]
25946        if let Some(ref val) = self.save_subset_fonts {
25947            val.write_element("w:saveSubsetFonts", writer)?;
25948        }
25949        #[cfg(feature = "extra-children")]
25950        {
25951            emit_idx += 1;
25952        }
25953        #[cfg(feature = "extra-children")]
25954        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
25955            extra_iter
25956                .next()
25957                .unwrap()
25958                .node
25959                .write_to(writer)
25960                .map_err(SerializeError::from)?;
25961        }
25962        #[cfg(feature = "wml-settings")]
25963        if let Some(ref val) = self.save_forms_data {
25964            val.write_element("w:saveFormsData", writer)?;
25965        }
25966        #[cfg(feature = "extra-children")]
25967        {
25968            emit_idx += 1;
25969        }
25970        #[cfg(feature = "extra-children")]
25971        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
25972            extra_iter
25973                .next()
25974                .unwrap()
25975                .node
25976                .write_to(writer)
25977                .map_err(SerializeError::from)?;
25978        }
25979        #[cfg(feature = "wml-settings")]
25980        if let Some(ref val) = self.mirror_margins {
25981            val.write_element("w:mirrorMargins", writer)?;
25982        }
25983        #[cfg(feature = "extra-children")]
25984        {
25985            emit_idx += 1;
25986        }
25987        #[cfg(feature = "extra-children")]
25988        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
25989            extra_iter
25990                .next()
25991                .unwrap()
25992                .node
25993                .write_to(writer)
25994                .map_err(SerializeError::from)?;
25995        }
25996        #[cfg(feature = "wml-settings")]
25997        if let Some(ref val) = self.align_borders_and_edges {
25998            val.write_element("w:alignBordersAndEdges", writer)?;
25999        }
26000        #[cfg(feature = "extra-children")]
26001        {
26002            emit_idx += 1;
26003        }
26004        #[cfg(feature = "extra-children")]
26005        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26006            extra_iter
26007                .next()
26008                .unwrap()
26009                .node
26010                .write_to(writer)
26011                .map_err(SerializeError::from)?;
26012        }
26013        #[cfg(feature = "wml-settings")]
26014        if let Some(ref val) = self.borders_do_not_surround_header {
26015            val.write_element("w:bordersDoNotSurroundHeader", writer)?;
26016        }
26017        #[cfg(feature = "extra-children")]
26018        {
26019            emit_idx += 1;
26020        }
26021        #[cfg(feature = "extra-children")]
26022        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26023            extra_iter
26024                .next()
26025                .unwrap()
26026                .node
26027                .write_to(writer)
26028                .map_err(SerializeError::from)?;
26029        }
26030        #[cfg(feature = "wml-settings")]
26031        if let Some(ref val) = self.borders_do_not_surround_footer {
26032            val.write_element("w:bordersDoNotSurroundFooter", writer)?;
26033        }
26034        #[cfg(feature = "extra-children")]
26035        {
26036            emit_idx += 1;
26037        }
26038        #[cfg(feature = "extra-children")]
26039        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26040            extra_iter
26041                .next()
26042                .unwrap()
26043                .node
26044                .write_to(writer)
26045                .map_err(SerializeError::from)?;
26046        }
26047        #[cfg(feature = "wml-settings")]
26048        if let Some(ref val) = self.gutter_at_top {
26049            val.write_element("w:gutterAtTop", writer)?;
26050        }
26051        #[cfg(feature = "extra-children")]
26052        {
26053            emit_idx += 1;
26054        }
26055        #[cfg(feature = "extra-children")]
26056        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26057            extra_iter
26058                .next()
26059                .unwrap()
26060                .node
26061                .write_to(writer)
26062                .map_err(SerializeError::from)?;
26063        }
26064        #[cfg(feature = "wml-settings")]
26065        if let Some(ref val) = self.hide_spelling_errors {
26066            val.write_element("w:hideSpellingErrors", writer)?;
26067        }
26068        #[cfg(feature = "extra-children")]
26069        {
26070            emit_idx += 1;
26071        }
26072        #[cfg(feature = "extra-children")]
26073        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26074            extra_iter
26075                .next()
26076                .unwrap()
26077                .node
26078                .write_to(writer)
26079                .map_err(SerializeError::from)?;
26080        }
26081        #[cfg(feature = "wml-settings")]
26082        if let Some(ref val) = self.hide_grammatical_errors {
26083            val.write_element("w:hideGrammaticalErrors", writer)?;
26084        }
26085        #[cfg(feature = "extra-children")]
26086        {
26087            emit_idx += 1;
26088        }
26089        #[cfg(feature = "wml-settings")]
26090        for item in &self.active_writing_style {
26091            #[cfg(feature = "extra-children")]
26092            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26093                extra_iter
26094                    .next()
26095                    .unwrap()
26096                    .node
26097                    .write_to(writer)
26098                    .map_err(SerializeError::from)?;
26099            }
26100            item.write_element("w:activeWritingStyle", writer)?;
26101            #[cfg(feature = "extra-children")]
26102            {
26103                emit_idx += 1;
26104            }
26105        }
26106        #[cfg(feature = "extra-children")]
26107        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26108            extra_iter
26109                .next()
26110                .unwrap()
26111                .node
26112                .write_to(writer)
26113                .map_err(SerializeError::from)?;
26114        }
26115        #[cfg(feature = "wml-settings")]
26116        if let Some(ref val) = self.proof_state {
26117            val.write_element("w:proofState", writer)?;
26118        }
26119        #[cfg(feature = "extra-children")]
26120        {
26121            emit_idx += 1;
26122        }
26123        #[cfg(feature = "extra-children")]
26124        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26125            extra_iter
26126                .next()
26127                .unwrap()
26128                .node
26129                .write_to(writer)
26130                .map_err(SerializeError::from)?;
26131        }
26132        #[cfg(feature = "wml-settings")]
26133        if let Some(ref val) = self.forms_design {
26134            val.write_element("w:formsDesign", writer)?;
26135        }
26136        #[cfg(feature = "extra-children")]
26137        {
26138            emit_idx += 1;
26139        }
26140        #[cfg(feature = "extra-children")]
26141        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26142            extra_iter
26143                .next()
26144                .unwrap()
26145                .node
26146                .write_to(writer)
26147                .map_err(SerializeError::from)?;
26148        }
26149        #[cfg(feature = "wml-settings")]
26150        if let Some(ref val) = self.attached_template {
26151            val.write_element("w:attachedTemplate", writer)?;
26152        }
26153        #[cfg(feature = "extra-children")]
26154        {
26155            emit_idx += 1;
26156        }
26157        #[cfg(feature = "extra-children")]
26158        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26159            extra_iter
26160                .next()
26161                .unwrap()
26162                .node
26163                .write_to(writer)
26164                .map_err(SerializeError::from)?;
26165        }
26166        #[cfg(feature = "wml-settings")]
26167        if let Some(ref val) = self.link_styles {
26168            val.write_element("w:linkStyles", writer)?;
26169        }
26170        #[cfg(feature = "extra-children")]
26171        {
26172            emit_idx += 1;
26173        }
26174        #[cfg(feature = "extra-children")]
26175        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26176            extra_iter
26177                .next()
26178                .unwrap()
26179                .node
26180                .write_to(writer)
26181                .map_err(SerializeError::from)?;
26182        }
26183        #[cfg(feature = "wml-settings")]
26184        if let Some(ref val) = self.style_pane_format_filter {
26185            val.write_element("w:stylePaneFormatFilter", writer)?;
26186        }
26187        #[cfg(feature = "extra-children")]
26188        {
26189            emit_idx += 1;
26190        }
26191        #[cfg(feature = "extra-children")]
26192        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26193            extra_iter
26194                .next()
26195                .unwrap()
26196                .node
26197                .write_to(writer)
26198                .map_err(SerializeError::from)?;
26199        }
26200        #[cfg(feature = "wml-settings")]
26201        if let Some(ref val) = self.style_pane_sort_method {
26202            val.write_element("w:stylePaneSortMethod", writer)?;
26203        }
26204        #[cfg(feature = "extra-children")]
26205        {
26206            emit_idx += 1;
26207        }
26208        #[cfg(feature = "extra-children")]
26209        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26210            extra_iter
26211                .next()
26212                .unwrap()
26213                .node
26214                .write_to(writer)
26215                .map_err(SerializeError::from)?;
26216        }
26217        #[cfg(feature = "wml-settings")]
26218        if let Some(ref val) = self.document_type {
26219            val.write_element("w:documentType", writer)?;
26220        }
26221        #[cfg(feature = "extra-children")]
26222        {
26223            emit_idx += 1;
26224        }
26225        #[cfg(feature = "extra-children")]
26226        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26227            extra_iter
26228                .next()
26229                .unwrap()
26230                .node
26231                .write_to(writer)
26232                .map_err(SerializeError::from)?;
26233        }
26234        #[cfg(feature = "wml-settings")]
26235        if let Some(ref val) = self.mail_merge {
26236            val.write_element("w:mailMerge", writer)?;
26237        }
26238        #[cfg(feature = "extra-children")]
26239        {
26240            emit_idx += 1;
26241        }
26242        #[cfg(feature = "extra-children")]
26243        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26244            extra_iter
26245                .next()
26246                .unwrap()
26247                .node
26248                .write_to(writer)
26249                .map_err(SerializeError::from)?;
26250        }
26251        #[cfg(feature = "wml-settings")]
26252        if let Some(ref val) = self.revision_view {
26253            val.write_element("w:revisionView", writer)?;
26254        }
26255        #[cfg(feature = "extra-children")]
26256        {
26257            emit_idx += 1;
26258        }
26259        #[cfg(feature = "extra-children")]
26260        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26261            extra_iter
26262                .next()
26263                .unwrap()
26264                .node
26265                .write_to(writer)
26266                .map_err(SerializeError::from)?;
26267        }
26268        #[cfg(feature = "wml-settings")]
26269        if let Some(ref val) = self.track_revisions {
26270            val.write_element("w:trackRevisions", writer)?;
26271        }
26272        #[cfg(feature = "extra-children")]
26273        {
26274            emit_idx += 1;
26275        }
26276        #[cfg(feature = "extra-children")]
26277        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26278            extra_iter
26279                .next()
26280                .unwrap()
26281                .node
26282                .write_to(writer)
26283                .map_err(SerializeError::from)?;
26284        }
26285        #[cfg(feature = "wml-track-changes")]
26286        if let Some(ref val) = self.do_not_track_moves {
26287            val.write_element("w:doNotTrackMoves", writer)?;
26288        }
26289        #[cfg(feature = "extra-children")]
26290        {
26291            emit_idx += 1;
26292        }
26293        #[cfg(feature = "extra-children")]
26294        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26295            extra_iter
26296                .next()
26297                .unwrap()
26298                .node
26299                .write_to(writer)
26300                .map_err(SerializeError::from)?;
26301        }
26302        #[cfg(feature = "wml-track-changes")]
26303        if let Some(ref val) = self.do_not_track_formatting {
26304            val.write_element("w:doNotTrackFormatting", writer)?;
26305        }
26306        #[cfg(feature = "extra-children")]
26307        {
26308            emit_idx += 1;
26309        }
26310        #[cfg(feature = "extra-children")]
26311        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26312            extra_iter
26313                .next()
26314                .unwrap()
26315                .node
26316                .write_to(writer)
26317                .map_err(SerializeError::from)?;
26318        }
26319        #[cfg(feature = "wml-settings")]
26320        if let Some(ref val) = self.document_protection {
26321            val.write_element("w:documentProtection", writer)?;
26322        }
26323        #[cfg(feature = "extra-children")]
26324        {
26325            emit_idx += 1;
26326        }
26327        #[cfg(feature = "extra-children")]
26328        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26329            extra_iter
26330                .next()
26331                .unwrap()
26332                .node
26333                .write_to(writer)
26334                .map_err(SerializeError::from)?;
26335        }
26336        #[cfg(feature = "wml-settings")]
26337        if let Some(ref val) = self.auto_format_override {
26338            val.write_element("w:autoFormatOverride", writer)?;
26339        }
26340        #[cfg(feature = "extra-children")]
26341        {
26342            emit_idx += 1;
26343        }
26344        #[cfg(feature = "extra-children")]
26345        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26346            extra_iter
26347                .next()
26348                .unwrap()
26349                .node
26350                .write_to(writer)
26351                .map_err(SerializeError::from)?;
26352        }
26353        #[cfg(feature = "wml-settings")]
26354        if let Some(ref val) = self.style_lock_theme {
26355            val.write_element("w:styleLockTheme", writer)?;
26356        }
26357        #[cfg(feature = "extra-children")]
26358        {
26359            emit_idx += 1;
26360        }
26361        #[cfg(feature = "extra-children")]
26362        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26363            extra_iter
26364                .next()
26365                .unwrap()
26366                .node
26367                .write_to(writer)
26368                .map_err(SerializeError::from)?;
26369        }
26370        #[cfg(feature = "wml-settings")]
26371        if let Some(ref val) = self.style_lock_q_f_set {
26372            val.write_element("w:styleLockQFSet", writer)?;
26373        }
26374        #[cfg(feature = "extra-children")]
26375        {
26376            emit_idx += 1;
26377        }
26378        #[cfg(feature = "extra-children")]
26379        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26380            extra_iter
26381                .next()
26382                .unwrap()
26383                .node
26384                .write_to(writer)
26385                .map_err(SerializeError::from)?;
26386        }
26387        #[cfg(feature = "wml-settings")]
26388        if let Some(ref val) = self.default_tab_stop {
26389            val.write_element("w:defaultTabStop", writer)?;
26390        }
26391        #[cfg(feature = "extra-children")]
26392        {
26393            emit_idx += 1;
26394        }
26395        #[cfg(feature = "extra-children")]
26396        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26397            extra_iter
26398                .next()
26399                .unwrap()
26400                .node
26401                .write_to(writer)
26402                .map_err(SerializeError::from)?;
26403        }
26404        #[cfg(feature = "wml-settings")]
26405        if let Some(ref val) = self.auto_hyphenation {
26406            val.write_element("w:autoHyphenation", writer)?;
26407        }
26408        #[cfg(feature = "extra-children")]
26409        {
26410            emit_idx += 1;
26411        }
26412        #[cfg(feature = "extra-children")]
26413        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26414            extra_iter
26415                .next()
26416                .unwrap()
26417                .node
26418                .write_to(writer)
26419                .map_err(SerializeError::from)?;
26420        }
26421        #[cfg(feature = "wml-settings")]
26422        if let Some(ref val) = self.consecutive_hyphen_limit {
26423            val.write_element("w:consecutiveHyphenLimit", writer)?;
26424        }
26425        #[cfg(feature = "extra-children")]
26426        {
26427            emit_idx += 1;
26428        }
26429        #[cfg(feature = "extra-children")]
26430        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26431            extra_iter
26432                .next()
26433                .unwrap()
26434                .node
26435                .write_to(writer)
26436                .map_err(SerializeError::from)?;
26437        }
26438        #[cfg(feature = "wml-settings")]
26439        if let Some(ref val) = self.hyphenation_zone {
26440            val.write_element("w:hyphenationZone", writer)?;
26441        }
26442        #[cfg(feature = "extra-children")]
26443        {
26444            emit_idx += 1;
26445        }
26446        #[cfg(feature = "extra-children")]
26447        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26448            extra_iter
26449                .next()
26450                .unwrap()
26451                .node
26452                .write_to(writer)
26453                .map_err(SerializeError::from)?;
26454        }
26455        #[cfg(feature = "wml-settings")]
26456        if let Some(ref val) = self.do_not_hyphenate_caps {
26457            val.write_element("w:doNotHyphenateCaps", writer)?;
26458        }
26459        #[cfg(feature = "extra-children")]
26460        {
26461            emit_idx += 1;
26462        }
26463        #[cfg(feature = "extra-children")]
26464        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26465            extra_iter
26466                .next()
26467                .unwrap()
26468                .node
26469                .write_to(writer)
26470                .map_err(SerializeError::from)?;
26471        }
26472        #[cfg(feature = "wml-settings")]
26473        if let Some(ref val) = self.show_envelope {
26474            val.write_element("w:showEnvelope", writer)?;
26475        }
26476        #[cfg(feature = "extra-children")]
26477        {
26478            emit_idx += 1;
26479        }
26480        #[cfg(feature = "extra-children")]
26481        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26482            extra_iter
26483                .next()
26484                .unwrap()
26485                .node
26486                .write_to(writer)
26487                .map_err(SerializeError::from)?;
26488        }
26489        #[cfg(feature = "wml-settings")]
26490        if let Some(ref val) = self.summary_length {
26491            val.write_element("w:summaryLength", writer)?;
26492        }
26493        #[cfg(feature = "extra-children")]
26494        {
26495            emit_idx += 1;
26496        }
26497        #[cfg(feature = "extra-children")]
26498        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26499            extra_iter
26500                .next()
26501                .unwrap()
26502                .node
26503                .write_to(writer)
26504                .map_err(SerializeError::from)?;
26505        }
26506        #[cfg(feature = "wml-settings")]
26507        if let Some(ref val) = self.click_and_type_style {
26508            val.write_element("w:clickAndTypeStyle", writer)?;
26509        }
26510        #[cfg(feature = "extra-children")]
26511        {
26512            emit_idx += 1;
26513        }
26514        #[cfg(feature = "extra-children")]
26515        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26516            extra_iter
26517                .next()
26518                .unwrap()
26519                .node
26520                .write_to(writer)
26521                .map_err(SerializeError::from)?;
26522        }
26523        #[cfg(feature = "wml-settings")]
26524        if let Some(ref val) = self.default_table_style {
26525            val.write_element("w:defaultTableStyle", writer)?;
26526        }
26527        #[cfg(feature = "extra-children")]
26528        {
26529            emit_idx += 1;
26530        }
26531        #[cfg(feature = "extra-children")]
26532        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26533            extra_iter
26534                .next()
26535                .unwrap()
26536                .node
26537                .write_to(writer)
26538                .map_err(SerializeError::from)?;
26539        }
26540        #[cfg(feature = "wml-settings")]
26541        if let Some(ref val) = self.even_and_odd_headers {
26542            val.write_element("w:evenAndOddHeaders", writer)?;
26543        }
26544        #[cfg(feature = "extra-children")]
26545        {
26546            emit_idx += 1;
26547        }
26548        #[cfg(feature = "extra-children")]
26549        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26550            extra_iter
26551                .next()
26552                .unwrap()
26553                .node
26554                .write_to(writer)
26555                .map_err(SerializeError::from)?;
26556        }
26557        #[cfg(feature = "wml-settings")]
26558        if let Some(ref val) = self.book_fold_rev_printing {
26559            val.write_element("w:bookFoldRevPrinting", writer)?;
26560        }
26561        #[cfg(feature = "extra-children")]
26562        {
26563            emit_idx += 1;
26564        }
26565        #[cfg(feature = "extra-children")]
26566        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26567            extra_iter
26568                .next()
26569                .unwrap()
26570                .node
26571                .write_to(writer)
26572                .map_err(SerializeError::from)?;
26573        }
26574        #[cfg(feature = "wml-settings")]
26575        if let Some(ref val) = self.book_fold_printing {
26576            val.write_element("w:bookFoldPrinting", writer)?;
26577        }
26578        #[cfg(feature = "extra-children")]
26579        {
26580            emit_idx += 1;
26581        }
26582        #[cfg(feature = "extra-children")]
26583        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26584            extra_iter
26585                .next()
26586                .unwrap()
26587                .node
26588                .write_to(writer)
26589                .map_err(SerializeError::from)?;
26590        }
26591        #[cfg(feature = "wml-settings")]
26592        if let Some(ref val) = self.book_fold_printing_sheets {
26593            val.write_element("w:bookFoldPrintingSheets", writer)?;
26594        }
26595        #[cfg(feature = "extra-children")]
26596        {
26597            emit_idx += 1;
26598        }
26599        #[cfg(feature = "extra-children")]
26600        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26601            extra_iter
26602                .next()
26603                .unwrap()
26604                .node
26605                .write_to(writer)
26606                .map_err(SerializeError::from)?;
26607        }
26608        #[cfg(feature = "wml-settings")]
26609        if let Some(ref val) = self.drawing_grid_horizontal_spacing {
26610            val.write_element("w:drawingGridHorizontalSpacing", writer)?;
26611        }
26612        #[cfg(feature = "extra-children")]
26613        {
26614            emit_idx += 1;
26615        }
26616        #[cfg(feature = "extra-children")]
26617        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26618            extra_iter
26619                .next()
26620                .unwrap()
26621                .node
26622                .write_to(writer)
26623                .map_err(SerializeError::from)?;
26624        }
26625        #[cfg(feature = "wml-settings")]
26626        if let Some(ref val) = self.drawing_grid_vertical_spacing {
26627            val.write_element("w:drawingGridVerticalSpacing", writer)?;
26628        }
26629        #[cfg(feature = "extra-children")]
26630        {
26631            emit_idx += 1;
26632        }
26633        #[cfg(feature = "extra-children")]
26634        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26635            extra_iter
26636                .next()
26637                .unwrap()
26638                .node
26639                .write_to(writer)
26640                .map_err(SerializeError::from)?;
26641        }
26642        #[cfg(feature = "wml-settings")]
26643        if let Some(ref val) = self.display_horizontal_drawing_grid_every {
26644            val.write_element("w:displayHorizontalDrawingGridEvery", writer)?;
26645        }
26646        #[cfg(feature = "extra-children")]
26647        {
26648            emit_idx += 1;
26649        }
26650        #[cfg(feature = "extra-children")]
26651        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26652            extra_iter
26653                .next()
26654                .unwrap()
26655                .node
26656                .write_to(writer)
26657                .map_err(SerializeError::from)?;
26658        }
26659        #[cfg(feature = "wml-settings")]
26660        if let Some(ref val) = self.display_vertical_drawing_grid_every {
26661            val.write_element("w:displayVerticalDrawingGridEvery", writer)?;
26662        }
26663        #[cfg(feature = "extra-children")]
26664        {
26665            emit_idx += 1;
26666        }
26667        #[cfg(feature = "extra-children")]
26668        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26669            extra_iter
26670                .next()
26671                .unwrap()
26672                .node
26673                .write_to(writer)
26674                .map_err(SerializeError::from)?;
26675        }
26676        #[cfg(feature = "wml-settings")]
26677        if let Some(ref val) = self.do_not_use_margins_for_drawing_grid_origin {
26678            val.write_element("w:doNotUseMarginsForDrawingGridOrigin", writer)?;
26679        }
26680        #[cfg(feature = "extra-children")]
26681        {
26682            emit_idx += 1;
26683        }
26684        #[cfg(feature = "extra-children")]
26685        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26686            extra_iter
26687                .next()
26688                .unwrap()
26689                .node
26690                .write_to(writer)
26691                .map_err(SerializeError::from)?;
26692        }
26693        #[cfg(feature = "wml-settings")]
26694        if let Some(ref val) = self.drawing_grid_horizontal_origin {
26695            val.write_element("w:drawingGridHorizontalOrigin", writer)?;
26696        }
26697        #[cfg(feature = "extra-children")]
26698        {
26699            emit_idx += 1;
26700        }
26701        #[cfg(feature = "extra-children")]
26702        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26703            extra_iter
26704                .next()
26705                .unwrap()
26706                .node
26707                .write_to(writer)
26708                .map_err(SerializeError::from)?;
26709        }
26710        #[cfg(feature = "wml-settings")]
26711        if let Some(ref val) = self.drawing_grid_vertical_origin {
26712            val.write_element("w:drawingGridVerticalOrigin", writer)?;
26713        }
26714        #[cfg(feature = "extra-children")]
26715        {
26716            emit_idx += 1;
26717        }
26718        #[cfg(feature = "extra-children")]
26719        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26720            extra_iter
26721                .next()
26722                .unwrap()
26723                .node
26724                .write_to(writer)
26725                .map_err(SerializeError::from)?;
26726        }
26727        #[cfg(feature = "wml-settings")]
26728        if let Some(ref val) = self.do_not_shade_form_data {
26729            val.write_element("w:doNotShadeFormData", writer)?;
26730        }
26731        #[cfg(feature = "extra-children")]
26732        {
26733            emit_idx += 1;
26734        }
26735        #[cfg(feature = "extra-children")]
26736        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26737            extra_iter
26738                .next()
26739                .unwrap()
26740                .node
26741                .write_to(writer)
26742                .map_err(SerializeError::from)?;
26743        }
26744        #[cfg(feature = "wml-settings")]
26745        if let Some(ref val) = self.no_punctuation_kerning {
26746            val.write_element("w:noPunctuationKerning", writer)?;
26747        }
26748        #[cfg(feature = "extra-children")]
26749        {
26750            emit_idx += 1;
26751        }
26752        #[cfg(feature = "extra-children")]
26753        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26754            extra_iter
26755                .next()
26756                .unwrap()
26757                .node
26758                .write_to(writer)
26759                .map_err(SerializeError::from)?;
26760        }
26761        #[cfg(feature = "wml-settings")]
26762        if let Some(ref val) = self.character_spacing_control {
26763            val.write_element("w:characterSpacingControl", writer)?;
26764        }
26765        #[cfg(feature = "extra-children")]
26766        {
26767            emit_idx += 1;
26768        }
26769        #[cfg(feature = "extra-children")]
26770        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26771            extra_iter
26772                .next()
26773                .unwrap()
26774                .node
26775                .write_to(writer)
26776                .map_err(SerializeError::from)?;
26777        }
26778        #[cfg(feature = "wml-settings")]
26779        if let Some(ref val) = self.print_two_on_one {
26780            val.write_element("w:printTwoOnOne", writer)?;
26781        }
26782        #[cfg(feature = "extra-children")]
26783        {
26784            emit_idx += 1;
26785        }
26786        #[cfg(feature = "extra-children")]
26787        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26788            extra_iter
26789                .next()
26790                .unwrap()
26791                .node
26792                .write_to(writer)
26793                .map_err(SerializeError::from)?;
26794        }
26795        #[cfg(feature = "wml-settings")]
26796        if let Some(ref val) = self.strict_first_and_last_chars {
26797            val.write_element("w:strictFirstAndLastChars", writer)?;
26798        }
26799        #[cfg(feature = "extra-children")]
26800        {
26801            emit_idx += 1;
26802        }
26803        #[cfg(feature = "extra-children")]
26804        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26805            extra_iter
26806                .next()
26807                .unwrap()
26808                .node
26809                .write_to(writer)
26810                .map_err(SerializeError::from)?;
26811        }
26812        #[cfg(feature = "wml-settings")]
26813        if let Some(ref val) = self.no_line_breaks_after {
26814            val.write_element("w:noLineBreaksAfter", writer)?;
26815        }
26816        #[cfg(feature = "extra-children")]
26817        {
26818            emit_idx += 1;
26819        }
26820        #[cfg(feature = "extra-children")]
26821        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26822            extra_iter
26823                .next()
26824                .unwrap()
26825                .node
26826                .write_to(writer)
26827                .map_err(SerializeError::from)?;
26828        }
26829        #[cfg(feature = "wml-settings")]
26830        if let Some(ref val) = self.no_line_breaks_before {
26831            val.write_element("w:noLineBreaksBefore", writer)?;
26832        }
26833        #[cfg(feature = "extra-children")]
26834        {
26835            emit_idx += 1;
26836        }
26837        #[cfg(feature = "extra-children")]
26838        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26839            extra_iter
26840                .next()
26841                .unwrap()
26842                .node
26843                .write_to(writer)
26844                .map_err(SerializeError::from)?;
26845        }
26846        #[cfg(feature = "wml-settings")]
26847        if let Some(ref val) = self.save_preview_picture {
26848            val.write_element("w:savePreviewPicture", writer)?;
26849        }
26850        #[cfg(feature = "extra-children")]
26851        {
26852            emit_idx += 1;
26853        }
26854        #[cfg(feature = "extra-children")]
26855        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26856            extra_iter
26857                .next()
26858                .unwrap()
26859                .node
26860                .write_to(writer)
26861                .map_err(SerializeError::from)?;
26862        }
26863        #[cfg(feature = "wml-settings")]
26864        if let Some(ref val) = self.do_not_validate_against_schema {
26865            val.write_element("w:doNotValidateAgainstSchema", writer)?;
26866        }
26867        #[cfg(feature = "extra-children")]
26868        {
26869            emit_idx += 1;
26870        }
26871        #[cfg(feature = "extra-children")]
26872        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26873            extra_iter
26874                .next()
26875                .unwrap()
26876                .node
26877                .write_to(writer)
26878                .map_err(SerializeError::from)?;
26879        }
26880        #[cfg(feature = "wml-settings")]
26881        if let Some(ref val) = self.save_invalid_xml {
26882            val.write_element("w:saveInvalidXml", writer)?;
26883        }
26884        #[cfg(feature = "extra-children")]
26885        {
26886            emit_idx += 1;
26887        }
26888        #[cfg(feature = "extra-children")]
26889        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26890            extra_iter
26891                .next()
26892                .unwrap()
26893                .node
26894                .write_to(writer)
26895                .map_err(SerializeError::from)?;
26896        }
26897        #[cfg(feature = "wml-settings")]
26898        if let Some(ref val) = self.ignore_mixed_content {
26899            val.write_element("w:ignoreMixedContent", writer)?;
26900        }
26901        #[cfg(feature = "extra-children")]
26902        {
26903            emit_idx += 1;
26904        }
26905        #[cfg(feature = "extra-children")]
26906        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26907            extra_iter
26908                .next()
26909                .unwrap()
26910                .node
26911                .write_to(writer)
26912                .map_err(SerializeError::from)?;
26913        }
26914        #[cfg(feature = "wml-settings")]
26915        if let Some(ref val) = self.always_show_placeholder_text {
26916            val.write_element("w:alwaysShowPlaceholderText", writer)?;
26917        }
26918        #[cfg(feature = "extra-children")]
26919        {
26920            emit_idx += 1;
26921        }
26922        #[cfg(feature = "extra-children")]
26923        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26924            extra_iter
26925                .next()
26926                .unwrap()
26927                .node
26928                .write_to(writer)
26929                .map_err(SerializeError::from)?;
26930        }
26931        #[cfg(feature = "wml-settings")]
26932        if let Some(ref val) = self.do_not_demarcate_invalid_xml {
26933            val.write_element("w:doNotDemarcateInvalidXml", writer)?;
26934        }
26935        #[cfg(feature = "extra-children")]
26936        {
26937            emit_idx += 1;
26938        }
26939        #[cfg(feature = "extra-children")]
26940        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26941            extra_iter
26942                .next()
26943                .unwrap()
26944                .node
26945                .write_to(writer)
26946                .map_err(SerializeError::from)?;
26947        }
26948        #[cfg(feature = "wml-settings")]
26949        if let Some(ref val) = self.save_xml_data_only {
26950            val.write_element("w:saveXmlDataOnly", writer)?;
26951        }
26952        #[cfg(feature = "extra-children")]
26953        {
26954            emit_idx += 1;
26955        }
26956        #[cfg(feature = "extra-children")]
26957        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26958            extra_iter
26959                .next()
26960                .unwrap()
26961                .node
26962                .write_to(writer)
26963                .map_err(SerializeError::from)?;
26964        }
26965        #[cfg(feature = "wml-settings")]
26966        if let Some(ref val) = self.use_x_s_l_t_when_saving {
26967            val.write_element("w:useXSLTWhenSaving", writer)?;
26968        }
26969        #[cfg(feature = "extra-children")]
26970        {
26971            emit_idx += 1;
26972        }
26973        #[cfg(feature = "extra-children")]
26974        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26975            extra_iter
26976                .next()
26977                .unwrap()
26978                .node
26979                .write_to(writer)
26980                .map_err(SerializeError::from)?;
26981        }
26982        #[cfg(feature = "wml-settings")]
26983        if let Some(ref val) = self.save_through_xslt {
26984            val.write_element("w:saveThroughXslt", writer)?;
26985        }
26986        #[cfg(feature = "extra-children")]
26987        {
26988            emit_idx += 1;
26989        }
26990        #[cfg(feature = "extra-children")]
26991        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26992            extra_iter
26993                .next()
26994                .unwrap()
26995                .node
26996                .write_to(writer)
26997                .map_err(SerializeError::from)?;
26998        }
26999        #[cfg(feature = "wml-settings")]
27000        if let Some(ref val) = self.show_x_m_l_tags {
27001            val.write_element("w:showXMLTags", writer)?;
27002        }
27003        #[cfg(feature = "extra-children")]
27004        {
27005            emit_idx += 1;
27006        }
27007        #[cfg(feature = "extra-children")]
27008        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
27009            extra_iter
27010                .next()
27011                .unwrap()
27012                .node
27013                .write_to(writer)
27014                .map_err(SerializeError::from)?;
27015        }
27016        #[cfg(feature = "wml-settings")]
27017        if let Some(ref val) = self.always_merge_empty_namespace {
27018            val.write_element("w:alwaysMergeEmptyNamespace", writer)?;
27019        }
27020        #[cfg(feature = "extra-children")]
27021        {
27022            emit_idx += 1;
27023        }
27024        #[cfg(feature = "extra-children")]
27025        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
27026            extra_iter
27027                .next()
27028                .unwrap()
27029                .node
27030                .write_to(writer)
27031                .map_err(SerializeError::from)?;
27032        }
27033        #[cfg(feature = "wml-settings")]
27034        if let Some(ref val) = self.update_fields {
27035            val.write_element("w:updateFields", writer)?;
27036        }
27037        #[cfg(feature = "extra-children")]
27038        {
27039            emit_idx += 1;
27040        }
27041        #[cfg(feature = "extra-children")]
27042        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
27043            extra_iter
27044                .next()
27045                .unwrap()
27046                .node
27047                .write_to(writer)
27048                .map_err(SerializeError::from)?;
27049        }
27050        #[cfg(feature = "wml-drawings")]
27051        if let Some(ref val) = self.hdr_shape_defaults {
27052            val.write_element("w:hdrShapeDefaults", writer)?;
27053        }
27054        #[cfg(feature = "extra-children")]
27055        {
27056            emit_idx += 1;
27057        }
27058        #[cfg(feature = "extra-children")]
27059        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
27060            extra_iter
27061                .next()
27062                .unwrap()
27063                .node
27064                .write_to(writer)
27065                .map_err(SerializeError::from)?;
27066        }
27067        #[cfg(feature = "wml-comments")]
27068        if let Some(ref val) = self.footnote_pr {
27069            val.write_element("w:footnotePr", writer)?;
27070        }
27071        #[cfg(feature = "extra-children")]
27072        {
27073            emit_idx += 1;
27074        }
27075        #[cfg(feature = "extra-children")]
27076        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
27077            extra_iter
27078                .next()
27079                .unwrap()
27080                .node
27081                .write_to(writer)
27082                .map_err(SerializeError::from)?;
27083        }
27084        #[cfg(feature = "wml-comments")]
27085        if let Some(ref val) = self.endnote_pr {
27086            val.write_element("w:endnotePr", writer)?;
27087        }
27088        #[cfg(feature = "extra-children")]
27089        {
27090            emit_idx += 1;
27091        }
27092        #[cfg(feature = "extra-children")]
27093        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
27094            extra_iter
27095                .next()
27096                .unwrap()
27097                .node
27098                .write_to(writer)
27099                .map_err(SerializeError::from)?;
27100        }
27101        #[cfg(feature = "wml-settings")]
27102        if let Some(ref val) = self.compat {
27103            val.write_element("w:compat", writer)?;
27104        }
27105        #[cfg(feature = "extra-children")]
27106        {
27107            emit_idx += 1;
27108        }
27109        #[cfg(feature = "extra-children")]
27110        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
27111            extra_iter
27112                .next()
27113                .unwrap()
27114                .node
27115                .write_to(writer)
27116                .map_err(SerializeError::from)?;
27117        }
27118        #[cfg(feature = "wml-settings")]
27119        if let Some(ref val) = self.doc_vars {
27120            val.write_element("w:docVars", writer)?;
27121        }
27122        #[cfg(feature = "extra-children")]
27123        {
27124            emit_idx += 1;
27125        }
27126        #[cfg(feature = "extra-children")]
27127        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
27128            extra_iter
27129                .next()
27130                .unwrap()
27131                .node
27132                .write_to(writer)
27133                .map_err(SerializeError::from)?;
27134        }
27135        #[cfg(feature = "wml-settings")]
27136        if let Some(ref val) = self.rsids {
27137            val.write_element("w:rsids", writer)?;
27138        }
27139        #[cfg(feature = "extra-children")]
27140        {
27141            emit_idx += 1;
27142        }
27143        #[cfg(feature = "wml-settings")]
27144        for item in &self.attached_schema {
27145            #[cfg(feature = "extra-children")]
27146            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
27147                extra_iter
27148                    .next()
27149                    .unwrap()
27150                    .node
27151                    .write_to(writer)
27152                    .map_err(SerializeError::from)?;
27153            }
27154            item.write_element("w:attachedSchema", writer)?;
27155            #[cfg(feature = "extra-children")]
27156            {
27157                emit_idx += 1;
27158            }
27159        }
27160        #[cfg(feature = "extra-children")]
27161        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
27162            extra_iter
27163                .next()
27164                .unwrap()
27165                .node
27166                .write_to(writer)
27167                .map_err(SerializeError::from)?;
27168        }
27169        #[cfg(feature = "wml-settings")]
27170        if let Some(ref val) = self.theme_font_lang {
27171            val.write_element("w:themeFontLang", writer)?;
27172        }
27173        #[cfg(feature = "extra-children")]
27174        {
27175            emit_idx += 1;
27176        }
27177        #[cfg(feature = "extra-children")]
27178        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
27179            extra_iter
27180                .next()
27181                .unwrap()
27182                .node
27183                .write_to(writer)
27184                .map_err(SerializeError::from)?;
27185        }
27186        #[cfg(feature = "wml-settings")]
27187        if let Some(ref val) = self.clr_scheme_mapping {
27188            val.write_element("w:clrSchemeMapping", writer)?;
27189        }
27190        #[cfg(feature = "extra-children")]
27191        {
27192            emit_idx += 1;
27193        }
27194        #[cfg(feature = "extra-children")]
27195        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
27196            extra_iter
27197                .next()
27198                .unwrap()
27199                .node
27200                .write_to(writer)
27201                .map_err(SerializeError::from)?;
27202        }
27203        #[cfg(feature = "wml-settings")]
27204        if let Some(ref val) = self.do_not_include_subdocs_in_stats {
27205            val.write_element("w:doNotIncludeSubdocsInStats", writer)?;
27206        }
27207        #[cfg(feature = "extra-children")]
27208        {
27209            emit_idx += 1;
27210        }
27211        #[cfg(feature = "extra-children")]
27212        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
27213            extra_iter
27214                .next()
27215                .unwrap()
27216                .node
27217                .write_to(writer)
27218                .map_err(SerializeError::from)?;
27219        }
27220        #[cfg(feature = "wml-settings")]
27221        if let Some(ref val) = self.do_not_auto_compress_pictures {
27222            val.write_element("w:doNotAutoCompressPictures", writer)?;
27223        }
27224        #[cfg(feature = "extra-children")]
27225        {
27226            emit_idx += 1;
27227        }
27228        #[cfg(feature = "extra-children")]
27229        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
27230            extra_iter
27231                .next()
27232                .unwrap()
27233                .node
27234                .write_to(writer)
27235                .map_err(SerializeError::from)?;
27236        }
27237        #[cfg(feature = "wml-settings")]
27238        if let Some(ref val) = self.force_upgrade {
27239            val.write_element("w:forceUpgrade", writer)?;
27240        }
27241        #[cfg(feature = "extra-children")]
27242        {
27243            emit_idx += 1;
27244        }
27245        #[cfg(feature = "extra-children")]
27246        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
27247            extra_iter
27248                .next()
27249                .unwrap()
27250                .node
27251                .write_to(writer)
27252                .map_err(SerializeError::from)?;
27253        }
27254        #[cfg(feature = "wml-settings")]
27255        if let Some(ref val) = self.captions {
27256            val.write_element("w:captions", writer)?;
27257        }
27258        #[cfg(feature = "extra-children")]
27259        {
27260            emit_idx += 1;
27261        }
27262        #[cfg(feature = "extra-children")]
27263        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
27264            extra_iter
27265                .next()
27266                .unwrap()
27267                .node
27268                .write_to(writer)
27269                .map_err(SerializeError::from)?;
27270        }
27271        #[cfg(feature = "wml-settings")]
27272        if let Some(ref val) = self.read_mode_ink_lock_down {
27273            val.write_element("w:readModeInkLockDown", writer)?;
27274        }
27275        #[cfg(feature = "extra-children")]
27276        {
27277            emit_idx += 1;
27278        }
27279        #[cfg(feature = "wml-settings")]
27280        for item in &self.smart_tag_type {
27281            #[cfg(feature = "extra-children")]
27282            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
27283                extra_iter
27284                    .next()
27285                    .unwrap()
27286                    .node
27287                    .write_to(writer)
27288                    .map_err(SerializeError::from)?;
27289            }
27290            item.write_element("w:smartTagType", writer)?;
27291            #[cfg(feature = "extra-children")]
27292            {
27293                emit_idx += 1;
27294            }
27295        }
27296        #[cfg(feature = "extra-children")]
27297        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
27298            extra_iter
27299                .next()
27300                .unwrap()
27301                .node
27302                .write_to(writer)
27303                .map_err(SerializeError::from)?;
27304        }
27305        #[cfg(feature = "wml-drawings")]
27306        if let Some(ref val) = self.shape_defaults {
27307            val.write_element("w:shapeDefaults", writer)?;
27308        }
27309        #[cfg(feature = "extra-children")]
27310        {
27311            emit_idx += 1;
27312        }
27313        #[cfg(feature = "extra-children")]
27314        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
27315            extra_iter
27316                .next()
27317                .unwrap()
27318                .node
27319                .write_to(writer)
27320                .map_err(SerializeError::from)?;
27321        }
27322        #[cfg(feature = "wml-settings")]
27323        if let Some(ref val) = self.do_not_embed_smart_tags {
27324            val.write_element("w:doNotEmbedSmartTags", writer)?;
27325        }
27326        #[cfg(feature = "extra-children")]
27327        {
27328            emit_idx += 1;
27329        }
27330        #[cfg(feature = "extra-children")]
27331        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
27332            extra_iter
27333                .next()
27334                .unwrap()
27335                .node
27336                .write_to(writer)
27337                .map_err(SerializeError::from)?;
27338        }
27339        #[cfg(feature = "wml-settings")]
27340        if let Some(ref val) = self.decimal_symbol {
27341            val.write_element("w:decimalSymbol", writer)?;
27342        }
27343        #[cfg(feature = "extra-children")]
27344        {
27345            emit_idx += 1;
27346        }
27347        #[cfg(feature = "extra-children")]
27348        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
27349            extra_iter
27350                .next()
27351                .unwrap()
27352                .node
27353                .write_to(writer)
27354                .map_err(SerializeError::from)?;
27355        }
27356        #[cfg(feature = "wml-settings")]
27357        if let Some(ref val) = self.list_separator {
27358            val.write_element("w:listSeparator", writer)?;
27359        }
27360        #[cfg(feature = "extra-children")]
27361        {
27362            emit_idx += 1;
27363        }
27364        #[cfg(feature = "extra-children")]
27365        for extra in extra_iter {
27366            extra.node.write_to(writer).map_err(SerializeError::from)?;
27367        }
27368        Ok(())
27369    }
27370
27371    fn is_empty_element(&self) -> bool {
27372        #[cfg(feature = "wml-settings")]
27373        if self.write_protection.is_some() {
27374            return false;
27375        }
27376        #[cfg(feature = "wml-settings")]
27377        if self.view.is_some() {
27378            return false;
27379        }
27380        #[cfg(feature = "wml-settings")]
27381        if self.zoom.is_some() {
27382            return false;
27383        }
27384        #[cfg(feature = "wml-settings")]
27385        if self.remove_personal_information.is_some() {
27386            return false;
27387        }
27388        #[cfg(feature = "wml-settings")]
27389        if self.remove_date_and_time.is_some() {
27390            return false;
27391        }
27392        #[cfg(feature = "wml-settings")]
27393        if self.do_not_display_page_boundaries.is_some() {
27394            return false;
27395        }
27396        #[cfg(feature = "wml-settings")]
27397        if self.display_background_shape.is_some() {
27398            return false;
27399        }
27400        #[cfg(feature = "wml-settings")]
27401        if self.print_post_script_over_text.is_some() {
27402            return false;
27403        }
27404        #[cfg(feature = "wml-settings")]
27405        if self.print_fractional_character_width.is_some() {
27406            return false;
27407        }
27408        #[cfg(feature = "wml-settings")]
27409        if self.print_forms_data.is_some() {
27410            return false;
27411        }
27412        #[cfg(feature = "wml-settings")]
27413        if self.embed_true_type_fonts.is_some() {
27414            return false;
27415        }
27416        #[cfg(feature = "wml-settings")]
27417        if self.embed_system_fonts.is_some() {
27418            return false;
27419        }
27420        #[cfg(feature = "wml-settings")]
27421        if self.save_subset_fonts.is_some() {
27422            return false;
27423        }
27424        #[cfg(feature = "wml-settings")]
27425        if self.save_forms_data.is_some() {
27426            return false;
27427        }
27428        #[cfg(feature = "wml-settings")]
27429        if self.mirror_margins.is_some() {
27430            return false;
27431        }
27432        #[cfg(feature = "wml-settings")]
27433        if self.align_borders_and_edges.is_some() {
27434            return false;
27435        }
27436        #[cfg(feature = "wml-settings")]
27437        if self.borders_do_not_surround_header.is_some() {
27438            return false;
27439        }
27440        #[cfg(feature = "wml-settings")]
27441        if self.borders_do_not_surround_footer.is_some() {
27442            return false;
27443        }
27444        #[cfg(feature = "wml-settings")]
27445        if self.gutter_at_top.is_some() {
27446            return false;
27447        }
27448        #[cfg(feature = "wml-settings")]
27449        if self.hide_spelling_errors.is_some() {
27450            return false;
27451        }
27452        #[cfg(feature = "wml-settings")]
27453        if self.hide_grammatical_errors.is_some() {
27454            return false;
27455        }
27456        #[cfg(feature = "wml-settings")]
27457        if !self.active_writing_style.is_empty() {
27458            return false;
27459        }
27460        #[cfg(feature = "wml-settings")]
27461        if self.proof_state.is_some() {
27462            return false;
27463        }
27464        #[cfg(feature = "wml-settings")]
27465        if self.forms_design.is_some() {
27466            return false;
27467        }
27468        #[cfg(feature = "wml-settings")]
27469        if self.attached_template.is_some() {
27470            return false;
27471        }
27472        #[cfg(feature = "wml-settings")]
27473        if self.link_styles.is_some() {
27474            return false;
27475        }
27476        #[cfg(feature = "wml-settings")]
27477        if self.style_pane_format_filter.is_some() {
27478            return false;
27479        }
27480        #[cfg(feature = "wml-settings")]
27481        if self.style_pane_sort_method.is_some() {
27482            return false;
27483        }
27484        #[cfg(feature = "wml-settings")]
27485        if self.document_type.is_some() {
27486            return false;
27487        }
27488        #[cfg(feature = "wml-settings")]
27489        if self.mail_merge.is_some() {
27490            return false;
27491        }
27492        #[cfg(feature = "wml-settings")]
27493        if self.revision_view.is_some() {
27494            return false;
27495        }
27496        #[cfg(feature = "wml-settings")]
27497        if self.track_revisions.is_some() {
27498            return false;
27499        }
27500        #[cfg(feature = "wml-track-changes")]
27501        if self.do_not_track_moves.is_some() {
27502            return false;
27503        }
27504        #[cfg(feature = "wml-track-changes")]
27505        if self.do_not_track_formatting.is_some() {
27506            return false;
27507        }
27508        #[cfg(feature = "wml-settings")]
27509        if self.document_protection.is_some() {
27510            return false;
27511        }
27512        #[cfg(feature = "wml-settings")]
27513        if self.auto_format_override.is_some() {
27514            return false;
27515        }
27516        #[cfg(feature = "wml-settings")]
27517        if self.style_lock_theme.is_some() {
27518            return false;
27519        }
27520        #[cfg(feature = "wml-settings")]
27521        if self.style_lock_q_f_set.is_some() {
27522            return false;
27523        }
27524        #[cfg(feature = "wml-settings")]
27525        if self.default_tab_stop.is_some() {
27526            return false;
27527        }
27528        #[cfg(feature = "wml-settings")]
27529        if self.auto_hyphenation.is_some() {
27530            return false;
27531        }
27532        #[cfg(feature = "wml-settings")]
27533        if self.consecutive_hyphen_limit.is_some() {
27534            return false;
27535        }
27536        #[cfg(feature = "wml-settings")]
27537        if self.hyphenation_zone.is_some() {
27538            return false;
27539        }
27540        #[cfg(feature = "wml-settings")]
27541        if self.do_not_hyphenate_caps.is_some() {
27542            return false;
27543        }
27544        #[cfg(feature = "wml-settings")]
27545        if self.show_envelope.is_some() {
27546            return false;
27547        }
27548        #[cfg(feature = "wml-settings")]
27549        if self.summary_length.is_some() {
27550            return false;
27551        }
27552        #[cfg(feature = "wml-settings")]
27553        if self.click_and_type_style.is_some() {
27554            return false;
27555        }
27556        #[cfg(feature = "wml-settings")]
27557        if self.default_table_style.is_some() {
27558            return false;
27559        }
27560        #[cfg(feature = "wml-settings")]
27561        if self.even_and_odd_headers.is_some() {
27562            return false;
27563        }
27564        #[cfg(feature = "wml-settings")]
27565        if self.book_fold_rev_printing.is_some() {
27566            return false;
27567        }
27568        #[cfg(feature = "wml-settings")]
27569        if self.book_fold_printing.is_some() {
27570            return false;
27571        }
27572        #[cfg(feature = "wml-settings")]
27573        if self.book_fold_printing_sheets.is_some() {
27574            return false;
27575        }
27576        #[cfg(feature = "wml-settings")]
27577        if self.drawing_grid_horizontal_spacing.is_some() {
27578            return false;
27579        }
27580        #[cfg(feature = "wml-settings")]
27581        if self.drawing_grid_vertical_spacing.is_some() {
27582            return false;
27583        }
27584        #[cfg(feature = "wml-settings")]
27585        if self.display_horizontal_drawing_grid_every.is_some() {
27586            return false;
27587        }
27588        #[cfg(feature = "wml-settings")]
27589        if self.display_vertical_drawing_grid_every.is_some() {
27590            return false;
27591        }
27592        #[cfg(feature = "wml-settings")]
27593        if self.do_not_use_margins_for_drawing_grid_origin.is_some() {
27594            return false;
27595        }
27596        #[cfg(feature = "wml-settings")]
27597        if self.drawing_grid_horizontal_origin.is_some() {
27598            return false;
27599        }
27600        #[cfg(feature = "wml-settings")]
27601        if self.drawing_grid_vertical_origin.is_some() {
27602            return false;
27603        }
27604        #[cfg(feature = "wml-settings")]
27605        if self.do_not_shade_form_data.is_some() {
27606            return false;
27607        }
27608        #[cfg(feature = "wml-settings")]
27609        if self.no_punctuation_kerning.is_some() {
27610            return false;
27611        }
27612        #[cfg(feature = "wml-settings")]
27613        if self.character_spacing_control.is_some() {
27614            return false;
27615        }
27616        #[cfg(feature = "wml-settings")]
27617        if self.print_two_on_one.is_some() {
27618            return false;
27619        }
27620        #[cfg(feature = "wml-settings")]
27621        if self.strict_first_and_last_chars.is_some() {
27622            return false;
27623        }
27624        #[cfg(feature = "wml-settings")]
27625        if self.no_line_breaks_after.is_some() {
27626            return false;
27627        }
27628        #[cfg(feature = "wml-settings")]
27629        if self.no_line_breaks_before.is_some() {
27630            return false;
27631        }
27632        #[cfg(feature = "wml-settings")]
27633        if self.save_preview_picture.is_some() {
27634            return false;
27635        }
27636        #[cfg(feature = "wml-settings")]
27637        if self.do_not_validate_against_schema.is_some() {
27638            return false;
27639        }
27640        #[cfg(feature = "wml-settings")]
27641        if self.save_invalid_xml.is_some() {
27642            return false;
27643        }
27644        #[cfg(feature = "wml-settings")]
27645        if self.ignore_mixed_content.is_some() {
27646            return false;
27647        }
27648        #[cfg(feature = "wml-settings")]
27649        if self.always_show_placeholder_text.is_some() {
27650            return false;
27651        }
27652        #[cfg(feature = "wml-settings")]
27653        if self.do_not_demarcate_invalid_xml.is_some() {
27654            return false;
27655        }
27656        #[cfg(feature = "wml-settings")]
27657        if self.save_xml_data_only.is_some() {
27658            return false;
27659        }
27660        #[cfg(feature = "wml-settings")]
27661        if self.use_x_s_l_t_when_saving.is_some() {
27662            return false;
27663        }
27664        #[cfg(feature = "wml-settings")]
27665        if self.save_through_xslt.is_some() {
27666            return false;
27667        }
27668        #[cfg(feature = "wml-settings")]
27669        if self.show_x_m_l_tags.is_some() {
27670            return false;
27671        }
27672        #[cfg(feature = "wml-settings")]
27673        if self.always_merge_empty_namespace.is_some() {
27674            return false;
27675        }
27676        #[cfg(feature = "wml-settings")]
27677        if self.update_fields.is_some() {
27678            return false;
27679        }
27680        #[cfg(feature = "wml-drawings")]
27681        if self.hdr_shape_defaults.is_some() {
27682            return false;
27683        }
27684        #[cfg(feature = "wml-comments")]
27685        if self.footnote_pr.is_some() {
27686            return false;
27687        }
27688        #[cfg(feature = "wml-comments")]
27689        if self.endnote_pr.is_some() {
27690            return false;
27691        }
27692        #[cfg(feature = "wml-settings")]
27693        if self.compat.is_some() {
27694            return false;
27695        }
27696        #[cfg(feature = "wml-settings")]
27697        if self.doc_vars.is_some() {
27698            return false;
27699        }
27700        #[cfg(feature = "wml-settings")]
27701        if self.rsids.is_some() {
27702            return false;
27703        }
27704        #[cfg(feature = "wml-settings")]
27705        if !self.attached_schema.is_empty() {
27706            return false;
27707        }
27708        #[cfg(feature = "wml-settings")]
27709        if self.theme_font_lang.is_some() {
27710            return false;
27711        }
27712        #[cfg(feature = "wml-settings")]
27713        if self.clr_scheme_mapping.is_some() {
27714            return false;
27715        }
27716        #[cfg(feature = "wml-settings")]
27717        if self.do_not_include_subdocs_in_stats.is_some() {
27718            return false;
27719        }
27720        #[cfg(feature = "wml-settings")]
27721        if self.do_not_auto_compress_pictures.is_some() {
27722            return false;
27723        }
27724        #[cfg(feature = "wml-settings")]
27725        if self.force_upgrade.is_some() {
27726            return false;
27727        }
27728        #[cfg(feature = "wml-settings")]
27729        if self.captions.is_some() {
27730            return false;
27731        }
27732        #[cfg(feature = "wml-settings")]
27733        if self.read_mode_ink_lock_down.is_some() {
27734            return false;
27735        }
27736        #[cfg(feature = "wml-settings")]
27737        if !self.smart_tag_type.is_empty() {
27738            return false;
27739        }
27740        #[cfg(feature = "wml-drawings")]
27741        if self.shape_defaults.is_some() {
27742            return false;
27743        }
27744        #[cfg(feature = "wml-settings")]
27745        if self.do_not_embed_smart_tags.is_some() {
27746            return false;
27747        }
27748        #[cfg(feature = "wml-settings")]
27749        if self.decimal_symbol.is_some() {
27750            return false;
27751        }
27752        #[cfg(feature = "wml-settings")]
27753        if self.list_separator.is_some() {
27754            return false;
27755        }
27756        #[cfg(feature = "extra-children")]
27757        if !self.extra_children.is_empty() {
27758            return false;
27759        }
27760        true
27761    }
27762}
27763
27764impl ToXml for CTStyleSort {
27765    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
27766        #[allow(unused_mut)]
27767        let mut start = start;
27768        {
27769            let val = &self.value;
27770            {
27771                let s = val.to_string();
27772                start.push_attribute(("w:val", s.as_str()));
27773            }
27774        }
27775        #[cfg(feature = "extra-attrs")]
27776        for (key, value) in &self.extra_attrs {
27777            start.push_attribute((key.as_str(), value.as_str()));
27778        }
27779        start
27780    }
27781
27782    fn is_empty_element(&self) -> bool {
27783        true
27784    }
27785}
27786
27787impl ToXml for CTStylePaneFilter {
27788    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
27789        #[allow(unused_mut)]
27790        let mut start = start;
27791        #[cfg(feature = "wml-settings")]
27792        if let Some(ref val) = self.all_styles {
27793            {
27794                let s = val.to_string();
27795                start.push_attribute(("w:allStyles", s.as_str()));
27796            }
27797        }
27798        #[cfg(feature = "wml-settings")]
27799        if let Some(ref val) = self.custom_styles {
27800            {
27801                let s = val.to_string();
27802                start.push_attribute(("w:customStyles", s.as_str()));
27803            }
27804        }
27805        #[cfg(feature = "wml-settings")]
27806        if let Some(ref val) = self.latent_styles {
27807            {
27808                let s = val.to_string();
27809                start.push_attribute(("w:latentStyles", s.as_str()));
27810            }
27811        }
27812        #[cfg(feature = "wml-settings")]
27813        if let Some(ref val) = self.styles_in_use {
27814            {
27815                let s = val.to_string();
27816                start.push_attribute(("w:stylesInUse", s.as_str()));
27817            }
27818        }
27819        #[cfg(feature = "wml-settings")]
27820        if let Some(ref val) = self.heading_styles {
27821            {
27822                let s = val.to_string();
27823                start.push_attribute(("w:headingStyles", s.as_str()));
27824            }
27825        }
27826        #[cfg(feature = "wml-settings")]
27827        if let Some(ref val) = self.numbering_styles {
27828            {
27829                let s = val.to_string();
27830                start.push_attribute(("w:numberingStyles", s.as_str()));
27831            }
27832        }
27833        #[cfg(feature = "wml-settings")]
27834        if let Some(ref val) = self.table_styles {
27835            {
27836                let s = val.to_string();
27837                start.push_attribute(("w:tableStyles", s.as_str()));
27838            }
27839        }
27840        #[cfg(feature = "wml-settings")]
27841        if let Some(ref val) = self.direct_formatting_on_runs {
27842            {
27843                let s = val.to_string();
27844                start.push_attribute(("w:directFormattingOnRuns", s.as_str()));
27845            }
27846        }
27847        #[cfg(feature = "wml-settings")]
27848        if let Some(ref val) = self.direct_formatting_on_paragraphs {
27849            {
27850                let s = val.to_string();
27851                start.push_attribute(("w:directFormattingOnParagraphs", s.as_str()));
27852            }
27853        }
27854        #[cfg(feature = "wml-settings")]
27855        if let Some(ref val) = self.direct_formatting_on_numbering {
27856            {
27857                let s = val.to_string();
27858                start.push_attribute(("w:directFormattingOnNumbering", s.as_str()));
27859            }
27860        }
27861        #[cfg(feature = "wml-settings")]
27862        if let Some(ref val) = self.direct_formatting_on_tables {
27863            {
27864                let s = val.to_string();
27865                start.push_attribute(("w:directFormattingOnTables", s.as_str()));
27866            }
27867        }
27868        #[cfg(feature = "wml-settings")]
27869        if let Some(ref val) = self.clear_formatting {
27870            {
27871                let s = val.to_string();
27872                start.push_attribute(("w:clearFormatting", s.as_str()));
27873            }
27874        }
27875        #[cfg(feature = "wml-settings")]
27876        if let Some(ref val) = self.top3_heading_styles {
27877            {
27878                let s = val.to_string();
27879                start.push_attribute(("w:top3HeadingStyles", s.as_str()));
27880            }
27881        }
27882        #[cfg(feature = "wml-settings")]
27883        if let Some(ref val) = self.visible_styles {
27884            {
27885                let s = val.to_string();
27886                start.push_attribute(("w:visibleStyles", s.as_str()));
27887            }
27888        }
27889        #[cfg(feature = "wml-settings")]
27890        if let Some(ref val) = self.alternate_style_names {
27891            {
27892                let s = val.to_string();
27893                start.push_attribute(("w:alternateStyleNames", s.as_str()));
27894            }
27895        }
27896        #[cfg(feature = "wml-settings")]
27897        if let Some(ref val) = self.value {
27898            {
27899                let hex = encode_hex(val);
27900                start.push_attribute(("w:val", hex.as_str()));
27901            }
27902        }
27903        #[cfg(feature = "extra-attrs")]
27904        for (key, value) in &self.extra_attrs {
27905            start.push_attribute((key.as_str(), value.as_str()));
27906        }
27907        start
27908    }
27909
27910    fn is_empty_element(&self) -> bool {
27911        true
27912    }
27913}
27914
27915impl ToXml for CTWebSettings {
27916    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
27917        #[cfg(feature = "extra-children")]
27918        let mut extra_iter = self.extra_children.iter().peekable();
27919        #[cfg(feature = "extra-children")]
27920        let mut emit_idx: usize = 0;
27921        #[cfg(feature = "extra-children")]
27922        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
27923            extra_iter
27924                .next()
27925                .unwrap()
27926                .node
27927                .write_to(writer)
27928                .map_err(SerializeError::from)?;
27929        }
27930        #[cfg(feature = "wml-settings")]
27931        if let Some(ref val) = self.frameset {
27932            val.write_element("w:frameset", writer)?;
27933        }
27934        #[cfg(feature = "extra-children")]
27935        {
27936            emit_idx += 1;
27937        }
27938        #[cfg(feature = "extra-children")]
27939        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
27940            extra_iter
27941                .next()
27942                .unwrap()
27943                .node
27944                .write_to(writer)
27945                .map_err(SerializeError::from)?;
27946        }
27947        #[cfg(feature = "wml-settings")]
27948        if let Some(ref val) = self.divs {
27949            val.write_element("w:divs", writer)?;
27950        }
27951        #[cfg(feature = "extra-children")]
27952        {
27953            emit_idx += 1;
27954        }
27955        #[cfg(feature = "extra-children")]
27956        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
27957            extra_iter
27958                .next()
27959                .unwrap()
27960                .node
27961                .write_to(writer)
27962                .map_err(SerializeError::from)?;
27963        }
27964        #[cfg(feature = "wml-settings")]
27965        if let Some(ref val) = self.encoding {
27966            val.write_element("w:encoding", writer)?;
27967        }
27968        #[cfg(feature = "extra-children")]
27969        {
27970            emit_idx += 1;
27971        }
27972        #[cfg(feature = "extra-children")]
27973        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
27974            extra_iter
27975                .next()
27976                .unwrap()
27977                .node
27978                .write_to(writer)
27979                .map_err(SerializeError::from)?;
27980        }
27981        #[cfg(feature = "wml-settings")]
27982        if let Some(ref val) = self.optimize_for_browser {
27983            val.write_element("w:optimizeForBrowser", writer)?;
27984        }
27985        #[cfg(feature = "extra-children")]
27986        {
27987            emit_idx += 1;
27988        }
27989        #[cfg(feature = "extra-children")]
27990        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
27991            extra_iter
27992                .next()
27993                .unwrap()
27994                .node
27995                .write_to(writer)
27996                .map_err(SerializeError::from)?;
27997        }
27998        #[cfg(feature = "wml-settings")]
27999        if let Some(ref val) = self.rely_on_v_m_l {
28000            val.write_element("w:relyOnVML", writer)?;
28001        }
28002        #[cfg(feature = "extra-children")]
28003        {
28004            emit_idx += 1;
28005        }
28006        #[cfg(feature = "extra-children")]
28007        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
28008            extra_iter
28009                .next()
28010                .unwrap()
28011                .node
28012                .write_to(writer)
28013                .map_err(SerializeError::from)?;
28014        }
28015        #[cfg(feature = "wml-settings")]
28016        if let Some(ref val) = self.allow_p_n_g {
28017            val.write_element("w:allowPNG", writer)?;
28018        }
28019        #[cfg(feature = "extra-children")]
28020        {
28021            emit_idx += 1;
28022        }
28023        #[cfg(feature = "extra-children")]
28024        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
28025            extra_iter
28026                .next()
28027                .unwrap()
28028                .node
28029                .write_to(writer)
28030                .map_err(SerializeError::from)?;
28031        }
28032        #[cfg(feature = "wml-settings")]
28033        if let Some(ref val) = self.do_not_rely_on_c_s_s {
28034            val.write_element("w:doNotRelyOnCSS", writer)?;
28035        }
28036        #[cfg(feature = "extra-children")]
28037        {
28038            emit_idx += 1;
28039        }
28040        #[cfg(feature = "extra-children")]
28041        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
28042            extra_iter
28043                .next()
28044                .unwrap()
28045                .node
28046                .write_to(writer)
28047                .map_err(SerializeError::from)?;
28048        }
28049        #[cfg(feature = "wml-settings")]
28050        if let Some(ref val) = self.do_not_save_as_single_file {
28051            val.write_element("w:doNotSaveAsSingleFile", writer)?;
28052        }
28053        #[cfg(feature = "extra-children")]
28054        {
28055            emit_idx += 1;
28056        }
28057        #[cfg(feature = "extra-children")]
28058        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
28059            extra_iter
28060                .next()
28061                .unwrap()
28062                .node
28063                .write_to(writer)
28064                .map_err(SerializeError::from)?;
28065        }
28066        #[cfg(feature = "wml-settings")]
28067        if let Some(ref val) = self.do_not_organize_in_folder {
28068            val.write_element("w:doNotOrganizeInFolder", writer)?;
28069        }
28070        #[cfg(feature = "extra-children")]
28071        {
28072            emit_idx += 1;
28073        }
28074        #[cfg(feature = "extra-children")]
28075        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
28076            extra_iter
28077                .next()
28078                .unwrap()
28079                .node
28080                .write_to(writer)
28081                .map_err(SerializeError::from)?;
28082        }
28083        #[cfg(feature = "wml-settings")]
28084        if let Some(ref val) = self.do_not_use_long_file_names {
28085            val.write_element("w:doNotUseLongFileNames", writer)?;
28086        }
28087        #[cfg(feature = "extra-children")]
28088        {
28089            emit_idx += 1;
28090        }
28091        #[cfg(feature = "extra-children")]
28092        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
28093            extra_iter
28094                .next()
28095                .unwrap()
28096                .node
28097                .write_to(writer)
28098                .map_err(SerializeError::from)?;
28099        }
28100        #[cfg(feature = "wml-settings")]
28101        if let Some(ref val) = self.pixels_per_inch {
28102            val.write_element("w:pixelsPerInch", writer)?;
28103        }
28104        #[cfg(feature = "extra-children")]
28105        {
28106            emit_idx += 1;
28107        }
28108        #[cfg(feature = "extra-children")]
28109        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
28110            extra_iter
28111                .next()
28112                .unwrap()
28113                .node
28114                .write_to(writer)
28115                .map_err(SerializeError::from)?;
28116        }
28117        #[cfg(feature = "wml-settings")]
28118        if let Some(ref val) = self.target_screen_sz {
28119            val.write_element("w:targetScreenSz", writer)?;
28120        }
28121        #[cfg(feature = "extra-children")]
28122        {
28123            emit_idx += 1;
28124        }
28125        #[cfg(feature = "extra-children")]
28126        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
28127            extra_iter
28128                .next()
28129                .unwrap()
28130                .node
28131                .write_to(writer)
28132                .map_err(SerializeError::from)?;
28133        }
28134        #[cfg(feature = "wml-settings")]
28135        if let Some(ref val) = self.save_smart_tags_as_xml {
28136            val.write_element("w:saveSmartTagsAsXml", writer)?;
28137        }
28138        #[cfg(feature = "extra-children")]
28139        {
28140            emit_idx += 1;
28141        }
28142        #[cfg(feature = "extra-children")]
28143        for extra in extra_iter {
28144            extra.node.write_to(writer).map_err(SerializeError::from)?;
28145        }
28146        Ok(())
28147    }
28148
28149    fn is_empty_element(&self) -> bool {
28150        #[cfg(feature = "wml-settings")]
28151        if self.frameset.is_some() {
28152            return false;
28153        }
28154        #[cfg(feature = "wml-settings")]
28155        if self.divs.is_some() {
28156            return false;
28157        }
28158        #[cfg(feature = "wml-settings")]
28159        if self.encoding.is_some() {
28160            return false;
28161        }
28162        #[cfg(feature = "wml-settings")]
28163        if self.optimize_for_browser.is_some() {
28164            return false;
28165        }
28166        #[cfg(feature = "wml-settings")]
28167        if self.rely_on_v_m_l.is_some() {
28168            return false;
28169        }
28170        #[cfg(feature = "wml-settings")]
28171        if self.allow_p_n_g.is_some() {
28172            return false;
28173        }
28174        #[cfg(feature = "wml-settings")]
28175        if self.do_not_rely_on_c_s_s.is_some() {
28176            return false;
28177        }
28178        #[cfg(feature = "wml-settings")]
28179        if self.do_not_save_as_single_file.is_some() {
28180            return false;
28181        }
28182        #[cfg(feature = "wml-settings")]
28183        if self.do_not_organize_in_folder.is_some() {
28184            return false;
28185        }
28186        #[cfg(feature = "wml-settings")]
28187        if self.do_not_use_long_file_names.is_some() {
28188            return false;
28189        }
28190        #[cfg(feature = "wml-settings")]
28191        if self.pixels_per_inch.is_some() {
28192            return false;
28193        }
28194        #[cfg(feature = "wml-settings")]
28195        if self.target_screen_sz.is_some() {
28196            return false;
28197        }
28198        #[cfg(feature = "wml-settings")]
28199        if self.save_smart_tags_as_xml.is_some() {
28200            return false;
28201        }
28202        #[cfg(feature = "extra-children")]
28203        if !self.extra_children.is_empty() {
28204            return false;
28205        }
28206        true
28207    }
28208}
28209
28210impl ToXml for CTFrameScrollbar {
28211    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
28212        #[allow(unused_mut)]
28213        let mut start = start;
28214        {
28215            let val = &self.value;
28216            {
28217                let s = val.to_string();
28218                start.push_attribute(("w:val", s.as_str()));
28219            }
28220        }
28221        #[cfg(feature = "extra-attrs")]
28222        for (key, value) in &self.extra_attrs {
28223            start.push_attribute((key.as_str(), value.as_str()));
28224        }
28225        start
28226    }
28227
28228    fn is_empty_element(&self) -> bool {
28229        true
28230    }
28231}
28232
28233impl ToXml for CTOptimizeForBrowser {
28234    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
28235        #[allow(unused_mut)]
28236        let mut start = start;
28237        if let Some(ref val) = self.value {
28238            {
28239                let s = val.to_string();
28240                start.push_attribute(("w:val", s.as_str()));
28241            }
28242        }
28243        #[cfg(feature = "wml-settings")]
28244        if let Some(ref val) = self.target {
28245            start.push_attribute(("w:target", val.as_str()));
28246        }
28247        #[cfg(feature = "extra-attrs")]
28248        for (key, value) in &self.extra_attrs {
28249            start.push_attribute((key.as_str(), value.as_str()));
28250        }
28251        start
28252    }
28253
28254    fn is_empty_element(&self) -> bool {
28255        true
28256    }
28257}
28258
28259impl ToXml for CTFrame {
28260    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
28261        #[cfg(feature = "extra-children")]
28262        let mut extra_iter = self.extra_children.iter().peekable();
28263        #[cfg(feature = "extra-children")]
28264        let mut emit_idx: usize = 0;
28265        #[cfg(feature = "extra-children")]
28266        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
28267            extra_iter
28268                .next()
28269                .unwrap()
28270                .node
28271                .write_to(writer)
28272                .map_err(SerializeError::from)?;
28273        }
28274        #[cfg(feature = "wml-settings")]
28275        if let Some(ref val) = self.size {
28276            val.write_element("w:sz", writer)?;
28277        }
28278        #[cfg(feature = "extra-children")]
28279        {
28280            emit_idx += 1;
28281        }
28282        #[cfg(feature = "extra-children")]
28283        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
28284            extra_iter
28285                .next()
28286                .unwrap()
28287                .node
28288                .write_to(writer)
28289                .map_err(SerializeError::from)?;
28290        }
28291        #[cfg(feature = "wml-settings")]
28292        if let Some(ref val) = self.name {
28293            val.write_element("w:name", writer)?;
28294        }
28295        #[cfg(feature = "extra-children")]
28296        {
28297            emit_idx += 1;
28298        }
28299        #[cfg(feature = "extra-children")]
28300        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
28301            extra_iter
28302                .next()
28303                .unwrap()
28304                .node
28305                .write_to(writer)
28306                .map_err(SerializeError::from)?;
28307        }
28308        #[cfg(feature = "wml-settings")]
28309        if let Some(ref val) = self.title {
28310            val.write_element("w:title", writer)?;
28311        }
28312        #[cfg(feature = "extra-children")]
28313        {
28314            emit_idx += 1;
28315        }
28316        #[cfg(feature = "extra-children")]
28317        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
28318            extra_iter
28319                .next()
28320                .unwrap()
28321                .node
28322                .write_to(writer)
28323                .map_err(SerializeError::from)?;
28324        }
28325        #[cfg(feature = "wml-settings")]
28326        if let Some(ref val) = self.long_desc {
28327            val.write_element("w:longDesc", writer)?;
28328        }
28329        #[cfg(feature = "extra-children")]
28330        {
28331            emit_idx += 1;
28332        }
28333        #[cfg(feature = "extra-children")]
28334        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
28335            extra_iter
28336                .next()
28337                .unwrap()
28338                .node
28339                .write_to(writer)
28340                .map_err(SerializeError::from)?;
28341        }
28342        #[cfg(feature = "wml-settings")]
28343        if let Some(ref val) = self.source_file_name {
28344            val.write_element("w:sourceFileName", writer)?;
28345        }
28346        #[cfg(feature = "extra-children")]
28347        {
28348            emit_idx += 1;
28349        }
28350        #[cfg(feature = "extra-children")]
28351        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
28352            extra_iter
28353                .next()
28354                .unwrap()
28355                .node
28356                .write_to(writer)
28357                .map_err(SerializeError::from)?;
28358        }
28359        #[cfg(feature = "wml-settings")]
28360        if let Some(ref val) = self.mar_w {
28361            val.write_element("w:marW", writer)?;
28362        }
28363        #[cfg(feature = "extra-children")]
28364        {
28365            emit_idx += 1;
28366        }
28367        #[cfg(feature = "extra-children")]
28368        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
28369            extra_iter
28370                .next()
28371                .unwrap()
28372                .node
28373                .write_to(writer)
28374                .map_err(SerializeError::from)?;
28375        }
28376        #[cfg(feature = "wml-settings")]
28377        if let Some(ref val) = self.mar_h {
28378            val.write_element("w:marH", writer)?;
28379        }
28380        #[cfg(feature = "extra-children")]
28381        {
28382            emit_idx += 1;
28383        }
28384        #[cfg(feature = "extra-children")]
28385        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
28386            extra_iter
28387                .next()
28388                .unwrap()
28389                .node
28390                .write_to(writer)
28391                .map_err(SerializeError::from)?;
28392        }
28393        #[cfg(feature = "wml-settings")]
28394        if let Some(ref val) = self.scrollbar {
28395            val.write_element("w:scrollbar", writer)?;
28396        }
28397        #[cfg(feature = "extra-children")]
28398        {
28399            emit_idx += 1;
28400        }
28401        #[cfg(feature = "extra-children")]
28402        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
28403            extra_iter
28404                .next()
28405                .unwrap()
28406                .node
28407                .write_to(writer)
28408                .map_err(SerializeError::from)?;
28409        }
28410        #[cfg(feature = "wml-settings")]
28411        if let Some(ref val) = self.no_resize_allowed {
28412            val.write_element("w:noResizeAllowed", writer)?;
28413        }
28414        #[cfg(feature = "extra-children")]
28415        {
28416            emit_idx += 1;
28417        }
28418        #[cfg(feature = "extra-children")]
28419        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
28420            extra_iter
28421                .next()
28422                .unwrap()
28423                .node
28424                .write_to(writer)
28425                .map_err(SerializeError::from)?;
28426        }
28427        #[cfg(feature = "wml-settings")]
28428        if let Some(ref val) = self.linked_to_file {
28429            val.write_element("w:linkedToFile", writer)?;
28430        }
28431        #[cfg(feature = "extra-children")]
28432        {
28433            emit_idx += 1;
28434        }
28435        #[cfg(feature = "extra-children")]
28436        for extra in extra_iter {
28437            extra.node.write_to(writer).map_err(SerializeError::from)?;
28438        }
28439        Ok(())
28440    }
28441
28442    fn is_empty_element(&self) -> bool {
28443        #[cfg(feature = "wml-settings")]
28444        if self.size.is_some() {
28445            return false;
28446        }
28447        #[cfg(feature = "wml-settings")]
28448        if self.name.is_some() {
28449            return false;
28450        }
28451        #[cfg(feature = "wml-settings")]
28452        if self.title.is_some() {
28453            return false;
28454        }
28455        #[cfg(feature = "wml-settings")]
28456        if self.long_desc.is_some() {
28457            return false;
28458        }
28459        #[cfg(feature = "wml-settings")]
28460        if self.source_file_name.is_some() {
28461            return false;
28462        }
28463        #[cfg(feature = "wml-settings")]
28464        if self.mar_w.is_some() {
28465            return false;
28466        }
28467        #[cfg(feature = "wml-settings")]
28468        if self.mar_h.is_some() {
28469            return false;
28470        }
28471        #[cfg(feature = "wml-settings")]
28472        if self.scrollbar.is_some() {
28473            return false;
28474        }
28475        #[cfg(feature = "wml-settings")]
28476        if self.no_resize_allowed.is_some() {
28477            return false;
28478        }
28479        #[cfg(feature = "wml-settings")]
28480        if self.linked_to_file.is_some() {
28481            return false;
28482        }
28483        #[cfg(feature = "extra-children")]
28484        if !self.extra_children.is_empty() {
28485            return false;
28486        }
28487        true
28488    }
28489}
28490
28491impl ToXml for CTFrameLayout {
28492    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
28493        #[allow(unused_mut)]
28494        let mut start = start;
28495        {
28496            let val = &self.value;
28497            {
28498                let s = val.to_string();
28499                start.push_attribute(("w:val", s.as_str()));
28500            }
28501        }
28502        #[cfg(feature = "extra-attrs")]
28503        for (key, value) in &self.extra_attrs {
28504            start.push_attribute((key.as_str(), value.as_str()));
28505        }
28506        start
28507    }
28508
28509    fn is_empty_element(&self) -> bool {
28510        true
28511    }
28512}
28513
28514impl ToXml for CTFramesetSplitbar {
28515    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
28516        #[cfg(feature = "extra-children")]
28517        let mut extra_iter = self.extra_children.iter().peekable();
28518        #[cfg(feature = "extra-children")]
28519        let mut emit_idx: usize = 0;
28520        #[cfg(feature = "extra-children")]
28521        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
28522            extra_iter
28523                .next()
28524                .unwrap()
28525                .node
28526                .write_to(writer)
28527                .map_err(SerializeError::from)?;
28528        }
28529        #[cfg(feature = "wml-settings")]
28530        if let Some(ref val) = self.width {
28531            val.write_element("w:w", writer)?;
28532        }
28533        #[cfg(feature = "extra-children")]
28534        {
28535            emit_idx += 1;
28536        }
28537        #[cfg(feature = "extra-children")]
28538        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
28539            extra_iter
28540                .next()
28541                .unwrap()
28542                .node
28543                .write_to(writer)
28544                .map_err(SerializeError::from)?;
28545        }
28546        #[cfg(feature = "wml-settings")]
28547        if let Some(ref val) = self.color {
28548            val.write_element("w:color", writer)?;
28549        }
28550        #[cfg(feature = "extra-children")]
28551        {
28552            emit_idx += 1;
28553        }
28554        #[cfg(feature = "extra-children")]
28555        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
28556            extra_iter
28557                .next()
28558                .unwrap()
28559                .node
28560                .write_to(writer)
28561                .map_err(SerializeError::from)?;
28562        }
28563        #[cfg(feature = "wml-settings")]
28564        if let Some(ref val) = self.no_border {
28565            val.write_element("w:noBorder", writer)?;
28566        }
28567        #[cfg(feature = "extra-children")]
28568        {
28569            emit_idx += 1;
28570        }
28571        #[cfg(feature = "extra-children")]
28572        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
28573            extra_iter
28574                .next()
28575                .unwrap()
28576                .node
28577                .write_to(writer)
28578                .map_err(SerializeError::from)?;
28579        }
28580        #[cfg(feature = "wml-settings")]
28581        if let Some(ref val) = self.flat_borders {
28582            val.write_element("w:flatBorders", writer)?;
28583        }
28584        #[cfg(feature = "extra-children")]
28585        {
28586            emit_idx += 1;
28587        }
28588        #[cfg(feature = "extra-children")]
28589        for extra in extra_iter {
28590            extra.node.write_to(writer).map_err(SerializeError::from)?;
28591        }
28592        Ok(())
28593    }
28594
28595    fn is_empty_element(&self) -> bool {
28596        #[cfg(feature = "wml-settings")]
28597        if self.width.is_some() {
28598            return false;
28599        }
28600        #[cfg(feature = "wml-settings")]
28601        if self.color.is_some() {
28602            return false;
28603        }
28604        #[cfg(feature = "wml-settings")]
28605        if self.no_border.is_some() {
28606            return false;
28607        }
28608        #[cfg(feature = "wml-settings")]
28609        if self.flat_borders.is_some() {
28610            return false;
28611        }
28612        #[cfg(feature = "extra-children")]
28613        if !self.extra_children.is_empty() {
28614            return false;
28615        }
28616        true
28617    }
28618}
28619
28620impl ToXml for CTFrameset {
28621    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
28622        #[cfg(feature = "extra-children")]
28623        let mut extra_iter = self.extra_children.iter().peekable();
28624        #[cfg(feature = "extra-children")]
28625        let mut emit_idx: usize = 0;
28626        #[cfg(feature = "extra-children")]
28627        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
28628            extra_iter
28629                .next()
28630                .unwrap()
28631                .node
28632                .write_to(writer)
28633                .map_err(SerializeError::from)?;
28634        }
28635        #[cfg(feature = "wml-settings")]
28636        if let Some(ref val) = self.size {
28637            val.write_element("w:sz", writer)?;
28638        }
28639        #[cfg(feature = "extra-children")]
28640        {
28641            emit_idx += 1;
28642        }
28643        #[cfg(feature = "extra-children")]
28644        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
28645            extra_iter
28646                .next()
28647                .unwrap()
28648                .node
28649                .write_to(writer)
28650                .map_err(SerializeError::from)?;
28651        }
28652        #[cfg(feature = "wml-settings")]
28653        if let Some(ref val) = self.frameset_splitbar {
28654            val.write_element("w:framesetSplitbar", writer)?;
28655        }
28656        #[cfg(feature = "extra-children")]
28657        {
28658            emit_idx += 1;
28659        }
28660        #[cfg(feature = "extra-children")]
28661        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
28662            extra_iter
28663                .next()
28664                .unwrap()
28665                .node
28666                .write_to(writer)
28667                .map_err(SerializeError::from)?;
28668        }
28669        #[cfg(feature = "wml-settings")]
28670        if let Some(ref val) = self.frame_layout {
28671            val.write_element("w:frameLayout", writer)?;
28672        }
28673        #[cfg(feature = "extra-children")]
28674        {
28675            emit_idx += 1;
28676        }
28677        #[cfg(feature = "extra-children")]
28678        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
28679            extra_iter
28680                .next()
28681                .unwrap()
28682                .node
28683                .write_to(writer)
28684                .map_err(SerializeError::from)?;
28685        }
28686        #[cfg(feature = "wml-settings")]
28687        if let Some(ref val) = self.title {
28688            val.write_element("w:title", writer)?;
28689        }
28690        #[cfg(feature = "extra-children")]
28691        {
28692            emit_idx += 1;
28693        }
28694        #[cfg(feature = "extra-children")]
28695        for extra in extra_iter {
28696            extra.node.write_to(writer).map_err(SerializeError::from)?;
28697        }
28698        Ok(())
28699    }
28700
28701    fn is_empty_element(&self) -> bool {
28702        #[cfg(feature = "wml-settings")]
28703        if self.size.is_some() {
28704            return false;
28705        }
28706        #[cfg(feature = "wml-settings")]
28707        if self.frameset_splitbar.is_some() {
28708            return false;
28709        }
28710        #[cfg(feature = "wml-settings")]
28711        if self.frame_layout.is_some() {
28712            return false;
28713        }
28714        #[cfg(feature = "wml-settings")]
28715        if self.title.is_some() {
28716            return false;
28717        }
28718        #[cfg(feature = "extra-children")]
28719        if !self.extra_children.is_empty() {
28720            return false;
28721        }
28722        true
28723    }
28724}
28725
28726impl ToXml for CTNumPicBullet {
28727    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
28728        #[allow(unused_mut)]
28729        let mut start = start;
28730        {
28731            let val = &self.num_pic_bullet_id;
28732            {
28733                let s = val.to_string();
28734                start.push_attribute(("w:numPicBulletId", s.as_str()));
28735            }
28736        }
28737        #[cfg(feature = "extra-attrs")]
28738        for (key, value) in &self.extra_attrs {
28739            start.push_attribute((key.as_str(), value.as_str()));
28740        }
28741        start
28742    }
28743
28744    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
28745        #[cfg(feature = "extra-children")]
28746        let mut extra_iter = self.extra_children.iter().peekable();
28747        #[cfg(feature = "extra-children")]
28748        let mut emit_idx: usize = 0;
28749        #[cfg(feature = "extra-children")]
28750        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
28751            extra_iter
28752                .next()
28753                .unwrap()
28754                .node
28755                .write_to(writer)
28756                .map_err(SerializeError::from)?;
28757        }
28758        #[cfg(feature = "wml-numbering")]
28759        if let Some(ref val) = self.pict {
28760            val.write_element("w:pict", writer)?;
28761        }
28762        #[cfg(feature = "extra-children")]
28763        {
28764            emit_idx += 1;
28765        }
28766        #[cfg(feature = "extra-children")]
28767        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
28768            extra_iter
28769                .next()
28770                .unwrap()
28771                .node
28772                .write_to(writer)
28773                .map_err(SerializeError::from)?;
28774        }
28775        #[cfg(feature = "wml-numbering")]
28776        if let Some(ref val) = self.drawing {
28777            val.write_element("w:drawing", writer)?;
28778        }
28779        #[cfg(feature = "extra-children")]
28780        {
28781            emit_idx += 1;
28782        }
28783        #[cfg(feature = "extra-children")]
28784        for extra in extra_iter {
28785            extra.node.write_to(writer).map_err(SerializeError::from)?;
28786        }
28787        Ok(())
28788    }
28789
28790    fn is_empty_element(&self) -> bool {
28791        #[cfg(feature = "wml-numbering")]
28792        if self.pict.is_some() {
28793            return false;
28794        }
28795        #[cfg(feature = "wml-numbering")]
28796        if self.drawing.is_some() {
28797            return false;
28798        }
28799        #[cfg(feature = "extra-children")]
28800        if !self.extra_children.is_empty() {
28801            return false;
28802        }
28803        true
28804    }
28805}
28806
28807impl ToXml for CTLevelSuffix {
28808    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
28809        #[allow(unused_mut)]
28810        let mut start = start;
28811        {
28812            let val = &self.value;
28813            {
28814                let s = val.to_string();
28815                start.push_attribute(("w:val", s.as_str()));
28816            }
28817        }
28818        #[cfg(feature = "extra-attrs")]
28819        for (key, value) in &self.extra_attrs {
28820            start.push_attribute((key.as_str(), value.as_str()));
28821        }
28822        start
28823    }
28824
28825    fn is_empty_element(&self) -> bool {
28826        true
28827    }
28828}
28829
28830impl ToXml for CTLevelText {
28831    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
28832        #[allow(unused_mut)]
28833        let mut start = start;
28834        if let Some(ref val) = self.value {
28835            start.push_attribute(("w:val", val.as_str()));
28836        }
28837        #[cfg(feature = "wml-numbering")]
28838        if let Some(ref val) = self.null {
28839            {
28840                let s = val.to_string();
28841                start.push_attribute(("w:null", s.as_str()));
28842            }
28843        }
28844        #[cfg(feature = "extra-attrs")]
28845        for (key, value) in &self.extra_attrs {
28846            start.push_attribute((key.as_str(), value.as_str()));
28847        }
28848        start
28849    }
28850
28851    fn is_empty_element(&self) -> bool {
28852        true
28853    }
28854}
28855
28856impl ToXml for CTLvlLegacy {
28857    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
28858        #[allow(unused_mut)]
28859        let mut start = start;
28860        #[cfg(feature = "wml-numbering")]
28861        if let Some(ref val) = self.legacy {
28862            {
28863                let s = val.to_string();
28864                start.push_attribute(("w:legacy", s.as_str()));
28865            }
28866        }
28867        #[cfg(feature = "wml-numbering")]
28868        if let Some(ref val) = self.legacy_space {
28869            {
28870                let s = val.to_string();
28871                start.push_attribute(("w:legacySpace", s.as_str()));
28872            }
28873        }
28874        #[cfg(feature = "wml-numbering")]
28875        if let Some(ref val) = self.legacy_indent {
28876            {
28877                let s = val.to_string();
28878                start.push_attribute(("w:legacyIndent", s.as_str()));
28879            }
28880        }
28881        #[cfg(feature = "extra-attrs")]
28882        for (key, value) in &self.extra_attrs {
28883            start.push_attribute((key.as_str(), value.as_str()));
28884        }
28885        start
28886    }
28887
28888    fn is_empty_element(&self) -> bool {
28889        true
28890    }
28891}
28892
28893impl ToXml for Level {
28894    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
28895        #[allow(unused_mut)]
28896        let mut start = start;
28897        {
28898            let val = &self.ilvl;
28899            {
28900                let s = val.to_string();
28901                start.push_attribute(("w:ilvl", s.as_str()));
28902            }
28903        }
28904        #[cfg(feature = "wml-numbering")]
28905        if let Some(ref val) = self.tplc {
28906            {
28907                let hex = encode_hex(val);
28908                start.push_attribute(("w:tplc", hex.as_str()));
28909            }
28910        }
28911        #[cfg(feature = "wml-numbering")]
28912        if let Some(ref val) = self.tentative {
28913            {
28914                let s = val.to_string();
28915                start.push_attribute(("w:tentative", s.as_str()));
28916            }
28917        }
28918        #[cfg(feature = "extra-attrs")]
28919        for (key, value) in &self.extra_attrs {
28920            start.push_attribute((key.as_str(), value.as_str()));
28921        }
28922        start
28923    }
28924
28925    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
28926        #[cfg(feature = "extra-children")]
28927        let mut extra_iter = self.extra_children.iter().peekable();
28928        #[cfg(feature = "extra-children")]
28929        let mut emit_idx: usize = 0;
28930        #[cfg(feature = "extra-children")]
28931        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
28932            extra_iter
28933                .next()
28934                .unwrap()
28935                .node
28936                .write_to(writer)
28937                .map_err(SerializeError::from)?;
28938        }
28939        #[cfg(feature = "wml-numbering")]
28940        if let Some(ref val) = self.start {
28941            val.write_element("w:start", writer)?;
28942        }
28943        #[cfg(feature = "extra-children")]
28944        {
28945            emit_idx += 1;
28946        }
28947        #[cfg(feature = "extra-children")]
28948        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
28949            extra_iter
28950                .next()
28951                .unwrap()
28952                .node
28953                .write_to(writer)
28954                .map_err(SerializeError::from)?;
28955        }
28956        #[cfg(feature = "wml-numbering")]
28957        if let Some(ref val) = self.num_fmt {
28958            val.write_element("w:numFmt", writer)?;
28959        }
28960        #[cfg(feature = "extra-children")]
28961        {
28962            emit_idx += 1;
28963        }
28964        #[cfg(feature = "extra-children")]
28965        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
28966            extra_iter
28967                .next()
28968                .unwrap()
28969                .node
28970                .write_to(writer)
28971                .map_err(SerializeError::from)?;
28972        }
28973        #[cfg(feature = "wml-numbering")]
28974        if let Some(ref val) = self.lvl_restart {
28975            val.write_element("w:lvlRestart", writer)?;
28976        }
28977        #[cfg(feature = "extra-children")]
28978        {
28979            emit_idx += 1;
28980        }
28981        #[cfg(feature = "extra-children")]
28982        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
28983            extra_iter
28984                .next()
28985                .unwrap()
28986                .node
28987                .write_to(writer)
28988                .map_err(SerializeError::from)?;
28989        }
28990        #[cfg(feature = "wml-numbering")]
28991        if let Some(ref val) = self.paragraph_style {
28992            val.write_element("w:pStyle", writer)?;
28993        }
28994        #[cfg(feature = "extra-children")]
28995        {
28996            emit_idx += 1;
28997        }
28998        #[cfg(feature = "extra-children")]
28999        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29000            extra_iter
29001                .next()
29002                .unwrap()
29003                .node
29004                .write_to(writer)
29005                .map_err(SerializeError::from)?;
29006        }
29007        #[cfg(feature = "wml-numbering")]
29008        if let Some(ref val) = self.is_lgl {
29009            val.write_element("w:isLgl", writer)?;
29010        }
29011        #[cfg(feature = "extra-children")]
29012        {
29013            emit_idx += 1;
29014        }
29015        #[cfg(feature = "extra-children")]
29016        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29017            extra_iter
29018                .next()
29019                .unwrap()
29020                .node
29021                .write_to(writer)
29022                .map_err(SerializeError::from)?;
29023        }
29024        #[cfg(feature = "wml-numbering")]
29025        if let Some(ref val) = self.suff {
29026            val.write_element("w:suff", writer)?;
29027        }
29028        #[cfg(feature = "extra-children")]
29029        {
29030            emit_idx += 1;
29031        }
29032        #[cfg(feature = "extra-children")]
29033        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29034            extra_iter
29035                .next()
29036                .unwrap()
29037                .node
29038                .write_to(writer)
29039                .map_err(SerializeError::from)?;
29040        }
29041        #[cfg(feature = "wml-numbering")]
29042        if let Some(ref val) = self.lvl_text {
29043            val.write_element("w:lvlText", writer)?;
29044        }
29045        #[cfg(feature = "extra-children")]
29046        {
29047            emit_idx += 1;
29048        }
29049        #[cfg(feature = "extra-children")]
29050        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29051            extra_iter
29052                .next()
29053                .unwrap()
29054                .node
29055                .write_to(writer)
29056                .map_err(SerializeError::from)?;
29057        }
29058        #[cfg(feature = "wml-numbering")]
29059        if let Some(ref val) = self.lvl_pic_bullet_id {
29060            val.write_element("w:lvlPicBulletId", writer)?;
29061        }
29062        #[cfg(feature = "extra-children")]
29063        {
29064            emit_idx += 1;
29065        }
29066        #[cfg(feature = "extra-children")]
29067        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29068            extra_iter
29069                .next()
29070                .unwrap()
29071                .node
29072                .write_to(writer)
29073                .map_err(SerializeError::from)?;
29074        }
29075        #[cfg(feature = "wml-numbering")]
29076        if let Some(ref val) = self.legacy {
29077            val.write_element("w:legacy", writer)?;
29078        }
29079        #[cfg(feature = "extra-children")]
29080        {
29081            emit_idx += 1;
29082        }
29083        #[cfg(feature = "extra-children")]
29084        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29085            extra_iter
29086                .next()
29087                .unwrap()
29088                .node
29089                .write_to(writer)
29090                .map_err(SerializeError::from)?;
29091        }
29092        #[cfg(feature = "wml-numbering")]
29093        if let Some(ref val) = self.lvl_jc {
29094            val.write_element("w:lvlJc", writer)?;
29095        }
29096        #[cfg(feature = "extra-children")]
29097        {
29098            emit_idx += 1;
29099        }
29100        #[cfg(feature = "extra-children")]
29101        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29102            extra_iter
29103                .next()
29104                .unwrap()
29105                .node
29106                .write_to(writer)
29107                .map_err(SerializeError::from)?;
29108        }
29109        #[cfg(feature = "wml-numbering")]
29110        if let Some(ref val) = self.p_pr {
29111            val.write_element("w:pPr", writer)?;
29112        }
29113        #[cfg(feature = "extra-children")]
29114        {
29115            emit_idx += 1;
29116        }
29117        #[cfg(feature = "extra-children")]
29118        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29119            extra_iter
29120                .next()
29121                .unwrap()
29122                .node
29123                .write_to(writer)
29124                .map_err(SerializeError::from)?;
29125        }
29126        #[cfg(feature = "wml-numbering")]
29127        if let Some(ref val) = self.r_pr {
29128            val.write_element("w:rPr", writer)?;
29129        }
29130        #[cfg(feature = "extra-children")]
29131        {
29132            emit_idx += 1;
29133        }
29134        #[cfg(feature = "extra-children")]
29135        for extra in extra_iter {
29136            extra.node.write_to(writer).map_err(SerializeError::from)?;
29137        }
29138        Ok(())
29139    }
29140
29141    fn is_empty_element(&self) -> bool {
29142        #[cfg(feature = "wml-numbering")]
29143        if self.start.is_some() {
29144            return false;
29145        }
29146        #[cfg(feature = "wml-numbering")]
29147        if self.num_fmt.is_some() {
29148            return false;
29149        }
29150        #[cfg(feature = "wml-numbering")]
29151        if self.lvl_restart.is_some() {
29152            return false;
29153        }
29154        #[cfg(feature = "wml-numbering")]
29155        if self.paragraph_style.is_some() {
29156            return false;
29157        }
29158        #[cfg(feature = "wml-numbering")]
29159        if self.is_lgl.is_some() {
29160            return false;
29161        }
29162        #[cfg(feature = "wml-numbering")]
29163        if self.suff.is_some() {
29164            return false;
29165        }
29166        #[cfg(feature = "wml-numbering")]
29167        if self.lvl_text.is_some() {
29168            return false;
29169        }
29170        #[cfg(feature = "wml-numbering")]
29171        if self.lvl_pic_bullet_id.is_some() {
29172            return false;
29173        }
29174        #[cfg(feature = "wml-numbering")]
29175        if self.legacy.is_some() {
29176            return false;
29177        }
29178        #[cfg(feature = "wml-numbering")]
29179        if self.lvl_jc.is_some() {
29180            return false;
29181        }
29182        #[cfg(feature = "wml-numbering")]
29183        if self.p_pr.is_some() {
29184            return false;
29185        }
29186        #[cfg(feature = "wml-numbering")]
29187        if self.r_pr.is_some() {
29188            return false;
29189        }
29190        #[cfg(feature = "extra-children")]
29191        if !self.extra_children.is_empty() {
29192            return false;
29193        }
29194        true
29195    }
29196}
29197
29198impl ToXml for CTMultiLevelType {
29199    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
29200        #[allow(unused_mut)]
29201        let mut start = start;
29202        {
29203            let val = &self.value;
29204            {
29205                let s = val.to_string();
29206                start.push_attribute(("w:val", s.as_str()));
29207            }
29208        }
29209        #[cfg(feature = "extra-attrs")]
29210        for (key, value) in &self.extra_attrs {
29211            start.push_attribute((key.as_str(), value.as_str()));
29212        }
29213        start
29214    }
29215
29216    fn is_empty_element(&self) -> bool {
29217        true
29218    }
29219}
29220
29221impl ToXml for AbstractNumbering {
29222    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
29223        #[allow(unused_mut)]
29224        let mut start = start;
29225        {
29226            let val = &self.abstract_num_id;
29227            {
29228                let s = val.to_string();
29229                start.push_attribute(("w:abstractNumId", s.as_str()));
29230            }
29231        }
29232        #[cfg(feature = "extra-attrs")]
29233        for (key, value) in &self.extra_attrs {
29234            start.push_attribute((key.as_str(), value.as_str()));
29235        }
29236        start
29237    }
29238
29239    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
29240        #[cfg(feature = "extra-children")]
29241        let mut extra_iter = self.extra_children.iter().peekable();
29242        #[cfg(feature = "extra-children")]
29243        let mut emit_idx: usize = 0;
29244        #[cfg(feature = "extra-children")]
29245        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29246            extra_iter
29247                .next()
29248                .unwrap()
29249                .node
29250                .write_to(writer)
29251                .map_err(SerializeError::from)?;
29252        }
29253        #[cfg(feature = "wml-numbering")]
29254        if let Some(ref val) = self.nsid {
29255            val.write_element("w:nsid", writer)?;
29256        }
29257        #[cfg(feature = "extra-children")]
29258        {
29259            emit_idx += 1;
29260        }
29261        #[cfg(feature = "extra-children")]
29262        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29263            extra_iter
29264                .next()
29265                .unwrap()
29266                .node
29267                .write_to(writer)
29268                .map_err(SerializeError::from)?;
29269        }
29270        #[cfg(feature = "wml-numbering")]
29271        if let Some(ref val) = self.multi_level_type {
29272            val.write_element("w:multiLevelType", writer)?;
29273        }
29274        #[cfg(feature = "extra-children")]
29275        {
29276            emit_idx += 1;
29277        }
29278        #[cfg(feature = "extra-children")]
29279        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29280            extra_iter
29281                .next()
29282                .unwrap()
29283                .node
29284                .write_to(writer)
29285                .map_err(SerializeError::from)?;
29286        }
29287        #[cfg(feature = "wml-numbering")]
29288        if let Some(ref val) = self.tmpl {
29289            val.write_element("w:tmpl", writer)?;
29290        }
29291        #[cfg(feature = "extra-children")]
29292        {
29293            emit_idx += 1;
29294        }
29295        #[cfg(feature = "extra-children")]
29296        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29297            extra_iter
29298                .next()
29299                .unwrap()
29300                .node
29301                .write_to(writer)
29302                .map_err(SerializeError::from)?;
29303        }
29304        #[cfg(feature = "wml-numbering")]
29305        if let Some(ref val) = self.name {
29306            val.write_element("w:name", writer)?;
29307        }
29308        #[cfg(feature = "extra-children")]
29309        {
29310            emit_idx += 1;
29311        }
29312        #[cfg(feature = "extra-children")]
29313        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29314            extra_iter
29315                .next()
29316                .unwrap()
29317                .node
29318                .write_to(writer)
29319                .map_err(SerializeError::from)?;
29320        }
29321        #[cfg(feature = "wml-numbering")]
29322        if let Some(ref val) = self.style_link {
29323            val.write_element("w:styleLink", writer)?;
29324        }
29325        #[cfg(feature = "extra-children")]
29326        {
29327            emit_idx += 1;
29328        }
29329        #[cfg(feature = "extra-children")]
29330        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29331            extra_iter
29332                .next()
29333                .unwrap()
29334                .node
29335                .write_to(writer)
29336                .map_err(SerializeError::from)?;
29337        }
29338        #[cfg(feature = "wml-numbering")]
29339        if let Some(ref val) = self.num_style_link {
29340            val.write_element("w:numStyleLink", writer)?;
29341        }
29342        #[cfg(feature = "extra-children")]
29343        {
29344            emit_idx += 1;
29345        }
29346        for item in &self.lvl {
29347            #[cfg(feature = "extra-children")]
29348            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29349                extra_iter
29350                    .next()
29351                    .unwrap()
29352                    .node
29353                    .write_to(writer)
29354                    .map_err(SerializeError::from)?;
29355            }
29356            item.write_element("w:lvl", writer)?;
29357            #[cfg(feature = "extra-children")]
29358            {
29359                emit_idx += 1;
29360            }
29361        }
29362        #[cfg(feature = "extra-children")]
29363        for extra in extra_iter {
29364            extra.node.write_to(writer).map_err(SerializeError::from)?;
29365        }
29366        Ok(())
29367    }
29368
29369    fn is_empty_element(&self) -> bool {
29370        #[cfg(feature = "wml-numbering")]
29371        if self.nsid.is_some() {
29372            return false;
29373        }
29374        #[cfg(feature = "wml-numbering")]
29375        if self.multi_level_type.is_some() {
29376            return false;
29377        }
29378        #[cfg(feature = "wml-numbering")]
29379        if self.tmpl.is_some() {
29380            return false;
29381        }
29382        #[cfg(feature = "wml-numbering")]
29383        if self.name.is_some() {
29384            return false;
29385        }
29386        #[cfg(feature = "wml-numbering")]
29387        if self.style_link.is_some() {
29388            return false;
29389        }
29390        #[cfg(feature = "wml-numbering")]
29391        if self.num_style_link.is_some() {
29392            return false;
29393        }
29394        if !self.lvl.is_empty() {
29395            return false;
29396        }
29397        #[cfg(feature = "extra-children")]
29398        if !self.extra_children.is_empty() {
29399            return false;
29400        }
29401        true
29402    }
29403}
29404
29405impl ToXml for CTNumLvl {
29406    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
29407        #[allow(unused_mut)]
29408        let mut start = start;
29409        {
29410            let val = &self.ilvl;
29411            {
29412                let s = val.to_string();
29413                start.push_attribute(("w:ilvl", s.as_str()));
29414            }
29415        }
29416        #[cfg(feature = "extra-attrs")]
29417        for (key, value) in &self.extra_attrs {
29418            start.push_attribute((key.as_str(), value.as_str()));
29419        }
29420        start
29421    }
29422
29423    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
29424        #[cfg(feature = "extra-children")]
29425        let mut extra_iter = self.extra_children.iter().peekable();
29426        #[cfg(feature = "extra-children")]
29427        let mut emit_idx: usize = 0;
29428        #[cfg(feature = "extra-children")]
29429        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29430            extra_iter
29431                .next()
29432                .unwrap()
29433                .node
29434                .write_to(writer)
29435                .map_err(SerializeError::from)?;
29436        }
29437        #[cfg(feature = "wml-numbering")]
29438        if let Some(ref val) = self.start_override {
29439            val.write_element("w:startOverride", writer)?;
29440        }
29441        #[cfg(feature = "extra-children")]
29442        {
29443            emit_idx += 1;
29444        }
29445        #[cfg(feature = "extra-children")]
29446        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29447            extra_iter
29448                .next()
29449                .unwrap()
29450                .node
29451                .write_to(writer)
29452                .map_err(SerializeError::from)?;
29453        }
29454        #[cfg(feature = "wml-numbering")]
29455        if let Some(ref val) = self.lvl {
29456            val.write_element("w:lvl", writer)?;
29457        }
29458        #[cfg(feature = "extra-children")]
29459        {
29460            emit_idx += 1;
29461        }
29462        #[cfg(feature = "extra-children")]
29463        for extra in extra_iter {
29464            extra.node.write_to(writer).map_err(SerializeError::from)?;
29465        }
29466        Ok(())
29467    }
29468
29469    fn is_empty_element(&self) -> bool {
29470        #[cfg(feature = "wml-numbering")]
29471        if self.start_override.is_some() {
29472            return false;
29473        }
29474        #[cfg(feature = "wml-numbering")]
29475        if self.lvl.is_some() {
29476            return false;
29477        }
29478        #[cfg(feature = "extra-children")]
29479        if !self.extra_children.is_empty() {
29480            return false;
29481        }
29482        true
29483    }
29484}
29485
29486impl ToXml for NumberingInstance {
29487    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
29488        #[allow(unused_mut)]
29489        let mut start = start;
29490        {
29491            let val = &self.num_id;
29492            {
29493                let s = val.to_string();
29494                start.push_attribute(("w:numId", s.as_str()));
29495            }
29496        }
29497        #[cfg(feature = "extra-attrs")]
29498        for (key, value) in &self.extra_attrs {
29499            start.push_attribute((key.as_str(), value.as_str()));
29500        }
29501        start
29502    }
29503
29504    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
29505        #[cfg(feature = "extra-children")]
29506        let mut extra_iter = self.extra_children.iter().peekable();
29507        #[cfg(feature = "extra-children")]
29508        let mut emit_idx: usize = 0;
29509        #[cfg(feature = "extra-children")]
29510        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29511            extra_iter
29512                .next()
29513                .unwrap()
29514                .node
29515                .write_to(writer)
29516                .map_err(SerializeError::from)?;
29517        }
29518        {
29519            let val = &self.abstract_num_id;
29520            val.write_element("w:abstractNumId", writer)?;
29521        }
29522        #[cfg(feature = "extra-children")]
29523        {
29524            emit_idx += 1;
29525        }
29526        #[cfg(feature = "wml-numbering")]
29527        for item in &self.lvl_override {
29528            #[cfg(feature = "extra-children")]
29529            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29530                extra_iter
29531                    .next()
29532                    .unwrap()
29533                    .node
29534                    .write_to(writer)
29535                    .map_err(SerializeError::from)?;
29536            }
29537            item.write_element("w:lvlOverride", writer)?;
29538            #[cfg(feature = "extra-children")]
29539            {
29540                emit_idx += 1;
29541            }
29542        }
29543        #[cfg(feature = "extra-children")]
29544        for extra in extra_iter {
29545            extra.node.write_to(writer).map_err(SerializeError::from)?;
29546        }
29547        Ok(())
29548    }
29549
29550    fn is_empty_element(&self) -> bool {
29551        false
29552    }
29553}
29554
29555impl ToXml for Numbering {
29556    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
29557        #[cfg(feature = "extra-children")]
29558        let mut extra_iter = self.extra_children.iter().peekable();
29559        #[cfg(feature = "extra-children")]
29560        let mut emit_idx: usize = 0;
29561        #[cfg(feature = "wml-numbering")]
29562        for item in &self.num_pic_bullet {
29563            #[cfg(feature = "extra-children")]
29564            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29565                extra_iter
29566                    .next()
29567                    .unwrap()
29568                    .node
29569                    .write_to(writer)
29570                    .map_err(SerializeError::from)?;
29571            }
29572            item.write_element("w:numPicBullet", writer)?;
29573            #[cfg(feature = "extra-children")]
29574            {
29575                emit_idx += 1;
29576            }
29577        }
29578        for item in &self.abstract_num {
29579            #[cfg(feature = "extra-children")]
29580            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29581                extra_iter
29582                    .next()
29583                    .unwrap()
29584                    .node
29585                    .write_to(writer)
29586                    .map_err(SerializeError::from)?;
29587            }
29588            item.write_element("w:abstractNum", writer)?;
29589            #[cfg(feature = "extra-children")]
29590            {
29591                emit_idx += 1;
29592            }
29593        }
29594        for item in &self.num {
29595            #[cfg(feature = "extra-children")]
29596            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29597                extra_iter
29598                    .next()
29599                    .unwrap()
29600                    .node
29601                    .write_to(writer)
29602                    .map_err(SerializeError::from)?;
29603            }
29604            item.write_element("w:num", writer)?;
29605            #[cfg(feature = "extra-children")]
29606            {
29607                emit_idx += 1;
29608            }
29609        }
29610        #[cfg(feature = "extra-children")]
29611        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29612            extra_iter
29613                .next()
29614                .unwrap()
29615                .node
29616                .write_to(writer)
29617                .map_err(SerializeError::from)?;
29618        }
29619        #[cfg(feature = "wml-numbering")]
29620        if let Some(ref val) = self.num_id_mac_at_cleanup {
29621            val.write_element("w:numIdMacAtCleanup", writer)?;
29622        }
29623        #[cfg(feature = "extra-children")]
29624        {
29625            emit_idx += 1;
29626        }
29627        #[cfg(feature = "extra-children")]
29628        for extra in extra_iter {
29629            extra.node.write_to(writer).map_err(SerializeError::from)?;
29630        }
29631        Ok(())
29632    }
29633
29634    fn is_empty_element(&self) -> bool {
29635        #[cfg(feature = "wml-numbering")]
29636        if !self.num_pic_bullet.is_empty() {
29637            return false;
29638        }
29639        if !self.abstract_num.is_empty() {
29640            return false;
29641        }
29642        if !self.num.is_empty() {
29643            return false;
29644        }
29645        #[cfg(feature = "wml-numbering")]
29646        if self.num_id_mac_at_cleanup.is_some() {
29647            return false;
29648        }
29649        #[cfg(feature = "extra-children")]
29650        if !self.extra_children.is_empty() {
29651            return false;
29652        }
29653        true
29654    }
29655}
29656
29657impl ToXml for TableStyleProperties {
29658    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
29659        #[allow(unused_mut)]
29660        let mut start = start;
29661        {
29662            let val = &self.r#type;
29663            {
29664                let s = val.to_string();
29665                start.push_attribute(("w:type", s.as_str()));
29666            }
29667        }
29668        #[cfg(feature = "extra-attrs")]
29669        for (key, value) in &self.extra_attrs {
29670            start.push_attribute((key.as_str(), value.as_str()));
29671        }
29672        start
29673    }
29674
29675    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
29676        #[cfg(feature = "extra-children")]
29677        let mut extra_iter = self.extra_children.iter().peekable();
29678        #[cfg(feature = "extra-children")]
29679        let mut emit_idx: usize = 0;
29680        #[cfg(feature = "extra-children")]
29681        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29682            extra_iter
29683                .next()
29684                .unwrap()
29685                .node
29686                .write_to(writer)
29687                .map_err(SerializeError::from)?;
29688        }
29689        #[cfg(feature = "wml-styling")]
29690        if let Some(ref val) = self.p_pr {
29691            val.write_element("w:pPr", writer)?;
29692        }
29693        #[cfg(feature = "extra-children")]
29694        {
29695            emit_idx += 1;
29696        }
29697        #[cfg(feature = "extra-children")]
29698        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29699            extra_iter
29700                .next()
29701                .unwrap()
29702                .node
29703                .write_to(writer)
29704                .map_err(SerializeError::from)?;
29705        }
29706        #[cfg(feature = "wml-styling")]
29707        if let Some(ref val) = self.r_pr {
29708            val.write_element("w:rPr", writer)?;
29709        }
29710        #[cfg(feature = "extra-children")]
29711        {
29712            emit_idx += 1;
29713        }
29714        #[cfg(feature = "extra-children")]
29715        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29716            extra_iter
29717                .next()
29718                .unwrap()
29719                .node
29720                .write_to(writer)
29721                .map_err(SerializeError::from)?;
29722        }
29723        #[cfg(feature = "wml-styling")]
29724        if let Some(ref val) = self.table_properties {
29725            val.write_element("w:tblPr", writer)?;
29726        }
29727        #[cfg(feature = "extra-children")]
29728        {
29729            emit_idx += 1;
29730        }
29731        #[cfg(feature = "extra-children")]
29732        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29733            extra_iter
29734                .next()
29735                .unwrap()
29736                .node
29737                .write_to(writer)
29738                .map_err(SerializeError::from)?;
29739        }
29740        #[cfg(feature = "wml-styling")]
29741        if let Some(ref val) = self.row_properties {
29742            val.write_element("w:trPr", writer)?;
29743        }
29744        #[cfg(feature = "extra-children")]
29745        {
29746            emit_idx += 1;
29747        }
29748        #[cfg(feature = "extra-children")]
29749        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29750            extra_iter
29751                .next()
29752                .unwrap()
29753                .node
29754                .write_to(writer)
29755                .map_err(SerializeError::from)?;
29756        }
29757        #[cfg(feature = "wml-styling")]
29758        if let Some(ref val) = self.cell_properties {
29759            val.write_element("w:tcPr", writer)?;
29760        }
29761        #[cfg(feature = "extra-children")]
29762        {
29763            emit_idx += 1;
29764        }
29765        #[cfg(feature = "extra-children")]
29766        for extra in extra_iter {
29767            extra.node.write_to(writer).map_err(SerializeError::from)?;
29768        }
29769        Ok(())
29770    }
29771
29772    fn is_empty_element(&self) -> bool {
29773        #[cfg(feature = "wml-styling")]
29774        if self.p_pr.is_some() {
29775            return false;
29776        }
29777        #[cfg(feature = "wml-styling")]
29778        if self.r_pr.is_some() {
29779            return false;
29780        }
29781        #[cfg(feature = "wml-styling")]
29782        if self.table_properties.is_some() {
29783            return false;
29784        }
29785        #[cfg(feature = "wml-styling")]
29786        if self.row_properties.is_some() {
29787            return false;
29788        }
29789        #[cfg(feature = "wml-styling")]
29790        if self.cell_properties.is_some() {
29791            return false;
29792        }
29793        #[cfg(feature = "extra-children")]
29794        if !self.extra_children.is_empty() {
29795            return false;
29796        }
29797        true
29798    }
29799}
29800
29801impl ToXml for Style {
29802    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
29803        #[allow(unused_mut)]
29804        let mut start = start;
29805        if let Some(ref val) = self.r#type {
29806            {
29807                let s = val.to_string();
29808                start.push_attribute(("w:type", s.as_str()));
29809            }
29810        }
29811        if let Some(ref val) = self.style_id {
29812            start.push_attribute(("w:styleId", val.as_str()));
29813        }
29814        if let Some(ref val) = self.default {
29815            {
29816                let s = val.to_string();
29817                start.push_attribute(("w:default", s.as_str()));
29818            }
29819        }
29820        if let Some(ref val) = self.custom_style {
29821            {
29822                let s = val.to_string();
29823                start.push_attribute(("w:customStyle", s.as_str()));
29824            }
29825        }
29826        #[cfg(feature = "extra-attrs")]
29827        for (key, value) in &self.extra_attrs {
29828            start.push_attribute((key.as_str(), value.as_str()));
29829        }
29830        start
29831    }
29832
29833    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
29834        #[cfg(feature = "extra-children")]
29835        let mut extra_iter = self.extra_children.iter().peekable();
29836        #[cfg(feature = "extra-children")]
29837        let mut emit_idx: usize = 0;
29838        #[cfg(feature = "extra-children")]
29839        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29840            extra_iter
29841                .next()
29842                .unwrap()
29843                .node
29844                .write_to(writer)
29845                .map_err(SerializeError::from)?;
29846        }
29847        if let Some(ref val) = self.name {
29848            val.write_element("w:name", writer)?;
29849        }
29850        #[cfg(feature = "extra-children")]
29851        {
29852            emit_idx += 1;
29853        }
29854        #[cfg(feature = "extra-children")]
29855        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29856            extra_iter
29857                .next()
29858                .unwrap()
29859                .node
29860                .write_to(writer)
29861                .map_err(SerializeError::from)?;
29862        }
29863        if let Some(ref val) = self.aliases {
29864            val.write_element("w:aliases", writer)?;
29865        }
29866        #[cfg(feature = "extra-children")]
29867        {
29868            emit_idx += 1;
29869        }
29870        #[cfg(feature = "extra-children")]
29871        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29872            extra_iter
29873                .next()
29874                .unwrap()
29875                .node
29876                .write_to(writer)
29877                .map_err(SerializeError::from)?;
29878        }
29879        if let Some(ref val) = self.based_on {
29880            val.write_element("w:basedOn", writer)?;
29881        }
29882        #[cfg(feature = "extra-children")]
29883        {
29884            emit_idx += 1;
29885        }
29886        #[cfg(feature = "extra-children")]
29887        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29888            extra_iter
29889                .next()
29890                .unwrap()
29891                .node
29892                .write_to(writer)
29893                .map_err(SerializeError::from)?;
29894        }
29895        #[cfg(feature = "wml-styling")]
29896        if let Some(ref val) = self.next {
29897            val.write_element("w:next", writer)?;
29898        }
29899        #[cfg(feature = "extra-children")]
29900        {
29901            emit_idx += 1;
29902        }
29903        #[cfg(feature = "extra-children")]
29904        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29905            extra_iter
29906                .next()
29907                .unwrap()
29908                .node
29909                .write_to(writer)
29910                .map_err(SerializeError::from)?;
29911        }
29912        #[cfg(feature = "wml-styling")]
29913        if let Some(ref val) = self.link {
29914            val.write_element("w:link", writer)?;
29915        }
29916        #[cfg(feature = "extra-children")]
29917        {
29918            emit_idx += 1;
29919        }
29920        #[cfg(feature = "extra-children")]
29921        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29922            extra_iter
29923                .next()
29924                .unwrap()
29925                .node
29926                .write_to(writer)
29927                .map_err(SerializeError::from)?;
29928        }
29929        #[cfg(feature = "wml-styling")]
29930        if let Some(ref val) = self.auto_redefine {
29931            val.write_element("w:autoRedefine", writer)?;
29932        }
29933        #[cfg(feature = "extra-children")]
29934        {
29935            emit_idx += 1;
29936        }
29937        #[cfg(feature = "extra-children")]
29938        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29939            extra_iter
29940                .next()
29941                .unwrap()
29942                .node
29943                .write_to(writer)
29944                .map_err(SerializeError::from)?;
29945        }
29946        #[cfg(feature = "wml-styling")]
29947        if let Some(ref val) = self.hidden {
29948            val.write_element("w:hidden", writer)?;
29949        }
29950        #[cfg(feature = "extra-children")]
29951        {
29952            emit_idx += 1;
29953        }
29954        #[cfg(feature = "extra-children")]
29955        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29956            extra_iter
29957                .next()
29958                .unwrap()
29959                .node
29960                .write_to(writer)
29961                .map_err(SerializeError::from)?;
29962        }
29963        #[cfg(feature = "wml-styling")]
29964        if let Some(ref val) = self.ui_priority {
29965            val.write_element("w:uiPriority", writer)?;
29966        }
29967        #[cfg(feature = "extra-children")]
29968        {
29969            emit_idx += 1;
29970        }
29971        #[cfg(feature = "extra-children")]
29972        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29973            extra_iter
29974                .next()
29975                .unwrap()
29976                .node
29977                .write_to(writer)
29978                .map_err(SerializeError::from)?;
29979        }
29980        #[cfg(feature = "wml-styling")]
29981        if let Some(ref val) = self.semi_hidden {
29982            val.write_element("w:semiHidden", writer)?;
29983        }
29984        #[cfg(feature = "extra-children")]
29985        {
29986            emit_idx += 1;
29987        }
29988        #[cfg(feature = "extra-children")]
29989        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29990            extra_iter
29991                .next()
29992                .unwrap()
29993                .node
29994                .write_to(writer)
29995                .map_err(SerializeError::from)?;
29996        }
29997        #[cfg(feature = "wml-styling")]
29998        if let Some(ref val) = self.unhide_when_used {
29999            val.write_element("w:unhideWhenUsed", writer)?;
30000        }
30001        #[cfg(feature = "extra-children")]
30002        {
30003            emit_idx += 1;
30004        }
30005        #[cfg(feature = "extra-children")]
30006        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
30007            extra_iter
30008                .next()
30009                .unwrap()
30010                .node
30011                .write_to(writer)
30012                .map_err(SerializeError::from)?;
30013        }
30014        #[cfg(feature = "wml-styling")]
30015        if let Some(ref val) = self.q_format {
30016            val.write_element("w:qFormat", writer)?;
30017        }
30018        #[cfg(feature = "extra-children")]
30019        {
30020            emit_idx += 1;
30021        }
30022        #[cfg(feature = "extra-children")]
30023        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
30024            extra_iter
30025                .next()
30026                .unwrap()
30027                .node
30028                .write_to(writer)
30029                .map_err(SerializeError::from)?;
30030        }
30031        #[cfg(feature = "wml-settings")]
30032        if let Some(ref val) = self.locked {
30033            val.write_element("w:locked", writer)?;
30034        }
30035        #[cfg(feature = "extra-children")]
30036        {
30037            emit_idx += 1;
30038        }
30039        #[cfg(feature = "extra-children")]
30040        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
30041            extra_iter
30042                .next()
30043                .unwrap()
30044                .node
30045                .write_to(writer)
30046                .map_err(SerializeError::from)?;
30047        }
30048        #[cfg(feature = "wml-settings")]
30049        if let Some(ref val) = self.personal {
30050            val.write_element("w:personal", writer)?;
30051        }
30052        #[cfg(feature = "extra-children")]
30053        {
30054            emit_idx += 1;
30055        }
30056        #[cfg(feature = "extra-children")]
30057        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
30058            extra_iter
30059                .next()
30060                .unwrap()
30061                .node
30062                .write_to(writer)
30063                .map_err(SerializeError::from)?;
30064        }
30065        #[cfg(feature = "wml-settings")]
30066        if let Some(ref val) = self.personal_compose {
30067            val.write_element("w:personalCompose", writer)?;
30068        }
30069        #[cfg(feature = "extra-children")]
30070        {
30071            emit_idx += 1;
30072        }
30073        #[cfg(feature = "extra-children")]
30074        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
30075            extra_iter
30076                .next()
30077                .unwrap()
30078                .node
30079                .write_to(writer)
30080                .map_err(SerializeError::from)?;
30081        }
30082        #[cfg(feature = "wml-settings")]
30083        if let Some(ref val) = self.personal_reply {
30084            val.write_element("w:personalReply", writer)?;
30085        }
30086        #[cfg(feature = "extra-children")]
30087        {
30088            emit_idx += 1;
30089        }
30090        #[cfg(feature = "extra-children")]
30091        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
30092            extra_iter
30093                .next()
30094                .unwrap()
30095                .node
30096                .write_to(writer)
30097                .map_err(SerializeError::from)?;
30098        }
30099        #[cfg(feature = "wml-track-changes")]
30100        if let Some(ref val) = self.rsid {
30101            val.write_element("w:rsid", writer)?;
30102        }
30103        #[cfg(feature = "extra-children")]
30104        {
30105            emit_idx += 1;
30106        }
30107        #[cfg(feature = "extra-children")]
30108        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
30109            extra_iter
30110                .next()
30111                .unwrap()
30112                .node
30113                .write_to(writer)
30114                .map_err(SerializeError::from)?;
30115        }
30116        #[cfg(feature = "wml-styling")]
30117        if let Some(ref val) = self.p_pr {
30118            val.write_element("w:pPr", writer)?;
30119        }
30120        #[cfg(feature = "extra-children")]
30121        {
30122            emit_idx += 1;
30123        }
30124        #[cfg(feature = "extra-children")]
30125        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
30126            extra_iter
30127                .next()
30128                .unwrap()
30129                .node
30130                .write_to(writer)
30131                .map_err(SerializeError::from)?;
30132        }
30133        #[cfg(feature = "wml-styling")]
30134        if let Some(ref val) = self.r_pr {
30135            val.write_element("w:rPr", writer)?;
30136        }
30137        #[cfg(feature = "extra-children")]
30138        {
30139            emit_idx += 1;
30140        }
30141        #[cfg(feature = "extra-children")]
30142        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
30143            extra_iter
30144                .next()
30145                .unwrap()
30146                .node
30147                .write_to(writer)
30148                .map_err(SerializeError::from)?;
30149        }
30150        #[cfg(feature = "wml-styling")]
30151        if let Some(ref val) = self.table_properties {
30152            val.write_element("w:tblPr", writer)?;
30153        }
30154        #[cfg(feature = "extra-children")]
30155        {
30156            emit_idx += 1;
30157        }
30158        #[cfg(feature = "extra-children")]
30159        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
30160            extra_iter
30161                .next()
30162                .unwrap()
30163                .node
30164                .write_to(writer)
30165                .map_err(SerializeError::from)?;
30166        }
30167        #[cfg(feature = "wml-styling")]
30168        if let Some(ref val) = self.row_properties {
30169            val.write_element("w:trPr", writer)?;
30170        }
30171        #[cfg(feature = "extra-children")]
30172        {
30173            emit_idx += 1;
30174        }
30175        #[cfg(feature = "extra-children")]
30176        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
30177            extra_iter
30178                .next()
30179                .unwrap()
30180                .node
30181                .write_to(writer)
30182                .map_err(SerializeError::from)?;
30183        }
30184        #[cfg(feature = "wml-styling")]
30185        if let Some(ref val) = self.cell_properties {
30186            val.write_element("w:tcPr", writer)?;
30187        }
30188        #[cfg(feature = "extra-children")]
30189        {
30190            emit_idx += 1;
30191        }
30192        #[cfg(feature = "wml-styling")]
30193        for item in &self.tbl_style_pr {
30194            #[cfg(feature = "extra-children")]
30195            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
30196                extra_iter
30197                    .next()
30198                    .unwrap()
30199                    .node
30200                    .write_to(writer)
30201                    .map_err(SerializeError::from)?;
30202            }
30203            item.write_element("w:tblStylePr", writer)?;
30204            #[cfg(feature = "extra-children")]
30205            {
30206                emit_idx += 1;
30207            }
30208        }
30209        #[cfg(feature = "extra-children")]
30210        for extra in extra_iter {
30211            extra.node.write_to(writer).map_err(SerializeError::from)?;
30212        }
30213        Ok(())
30214    }
30215
30216    fn is_empty_element(&self) -> bool {
30217        if self.name.is_some() {
30218            return false;
30219        }
30220        if self.aliases.is_some() {
30221            return false;
30222        }
30223        if self.based_on.is_some() {
30224            return false;
30225        }
30226        #[cfg(feature = "wml-styling")]
30227        if self.next.is_some() {
30228            return false;
30229        }
30230        #[cfg(feature = "wml-styling")]
30231        if self.link.is_some() {
30232            return false;
30233        }
30234        #[cfg(feature = "wml-styling")]
30235        if self.auto_redefine.is_some() {
30236            return false;
30237        }
30238        #[cfg(feature = "wml-styling")]
30239        if self.hidden.is_some() {
30240            return false;
30241        }
30242        #[cfg(feature = "wml-styling")]
30243        if self.ui_priority.is_some() {
30244            return false;
30245        }
30246        #[cfg(feature = "wml-styling")]
30247        if self.semi_hidden.is_some() {
30248            return false;
30249        }
30250        #[cfg(feature = "wml-styling")]
30251        if self.unhide_when_used.is_some() {
30252            return false;
30253        }
30254        #[cfg(feature = "wml-styling")]
30255        if self.q_format.is_some() {
30256            return false;
30257        }
30258        #[cfg(feature = "wml-settings")]
30259        if self.locked.is_some() {
30260            return false;
30261        }
30262        #[cfg(feature = "wml-settings")]
30263        if self.personal.is_some() {
30264            return false;
30265        }
30266        #[cfg(feature = "wml-settings")]
30267        if self.personal_compose.is_some() {
30268            return false;
30269        }
30270        #[cfg(feature = "wml-settings")]
30271        if self.personal_reply.is_some() {
30272            return false;
30273        }
30274        #[cfg(feature = "wml-track-changes")]
30275        if self.rsid.is_some() {
30276            return false;
30277        }
30278        #[cfg(feature = "wml-styling")]
30279        if self.p_pr.is_some() {
30280            return false;
30281        }
30282        #[cfg(feature = "wml-styling")]
30283        if self.r_pr.is_some() {
30284            return false;
30285        }
30286        #[cfg(feature = "wml-styling")]
30287        if self.table_properties.is_some() {
30288            return false;
30289        }
30290        #[cfg(feature = "wml-styling")]
30291        if self.row_properties.is_some() {
30292            return false;
30293        }
30294        #[cfg(feature = "wml-styling")]
30295        if self.cell_properties.is_some() {
30296            return false;
30297        }
30298        #[cfg(feature = "wml-styling")]
30299        if !self.tbl_style_pr.is_empty() {
30300            return false;
30301        }
30302        #[cfg(feature = "extra-children")]
30303        if !self.extra_children.is_empty() {
30304            return false;
30305        }
30306        true
30307    }
30308}
30309
30310impl ToXml for LatentStyleException {
30311    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
30312        #[allow(unused_mut)]
30313        let mut start = start;
30314        {
30315            let val = &self.name;
30316            start.push_attribute(("w:name", val.as_str()));
30317        }
30318        #[cfg(feature = "wml-styling")]
30319        if let Some(ref val) = self.locked {
30320            {
30321                let s = val.to_string();
30322                start.push_attribute(("w:locked", s.as_str()));
30323            }
30324        }
30325        #[cfg(feature = "wml-styling")]
30326        if let Some(ref val) = self.ui_priority {
30327            {
30328                let s = val.to_string();
30329                start.push_attribute(("w:uiPriority", s.as_str()));
30330            }
30331        }
30332        #[cfg(feature = "wml-styling")]
30333        if let Some(ref val) = self.semi_hidden {
30334            {
30335                let s = val.to_string();
30336                start.push_attribute(("w:semiHidden", s.as_str()));
30337            }
30338        }
30339        #[cfg(feature = "wml-styling")]
30340        if let Some(ref val) = self.unhide_when_used {
30341            {
30342                let s = val.to_string();
30343                start.push_attribute(("w:unhideWhenUsed", s.as_str()));
30344            }
30345        }
30346        #[cfg(feature = "wml-styling")]
30347        if let Some(ref val) = self.q_format {
30348            {
30349                let s = val.to_string();
30350                start.push_attribute(("w:qFormat", s.as_str()));
30351            }
30352        }
30353        #[cfg(feature = "extra-attrs")]
30354        for (key, value) in &self.extra_attrs {
30355            start.push_attribute((key.as_str(), value.as_str()));
30356        }
30357        start
30358    }
30359
30360    fn is_empty_element(&self) -> bool {
30361        true
30362    }
30363}
30364
30365impl ToXml for LatentStyles {
30366    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
30367        #[allow(unused_mut)]
30368        let mut start = start;
30369        #[cfg(feature = "wml-styling")]
30370        if let Some(ref val) = self.def_locked_state {
30371            {
30372                let s = val.to_string();
30373                start.push_attribute(("w:defLockedState", s.as_str()));
30374            }
30375        }
30376        #[cfg(feature = "wml-styling")]
30377        if let Some(ref val) = self.def_u_i_priority {
30378            {
30379                let s = val.to_string();
30380                start.push_attribute(("w:defUIPriority", s.as_str()));
30381            }
30382        }
30383        #[cfg(feature = "wml-styling")]
30384        if let Some(ref val) = self.def_semi_hidden {
30385            {
30386                let s = val.to_string();
30387                start.push_attribute(("w:defSemiHidden", s.as_str()));
30388            }
30389        }
30390        #[cfg(feature = "wml-styling")]
30391        if let Some(ref val) = self.def_unhide_when_used {
30392            {
30393                let s = val.to_string();
30394                start.push_attribute(("w:defUnhideWhenUsed", s.as_str()));
30395            }
30396        }
30397        #[cfg(feature = "wml-styling")]
30398        if let Some(ref val) = self.def_q_format {
30399            {
30400                let s = val.to_string();
30401                start.push_attribute(("w:defQFormat", s.as_str()));
30402            }
30403        }
30404        #[cfg(feature = "wml-styling")]
30405        if let Some(ref val) = self.count {
30406            {
30407                let s = val.to_string();
30408                start.push_attribute(("w:count", s.as_str()));
30409            }
30410        }
30411        #[cfg(feature = "extra-attrs")]
30412        for (key, value) in &self.extra_attrs {
30413            start.push_attribute((key.as_str(), value.as_str()));
30414        }
30415        start
30416    }
30417
30418    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
30419        #[cfg(feature = "extra-children")]
30420        let mut extra_iter = self.extra_children.iter().peekable();
30421        #[cfg(feature = "extra-children")]
30422        let mut emit_idx: usize = 0;
30423        for item in &self.lsd_exception {
30424            #[cfg(feature = "extra-children")]
30425            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
30426                extra_iter
30427                    .next()
30428                    .unwrap()
30429                    .node
30430                    .write_to(writer)
30431                    .map_err(SerializeError::from)?;
30432            }
30433            item.write_element("w:lsdException", writer)?;
30434            #[cfg(feature = "extra-children")]
30435            {
30436                emit_idx += 1;
30437            }
30438        }
30439        #[cfg(feature = "extra-children")]
30440        for extra in extra_iter {
30441            extra.node.write_to(writer).map_err(SerializeError::from)?;
30442        }
30443        Ok(())
30444    }
30445
30446    fn is_empty_element(&self) -> bool {
30447        if !self.lsd_exception.is_empty() {
30448            return false;
30449        }
30450        #[cfg(feature = "extra-children")]
30451        if !self.extra_children.is_empty() {
30452            return false;
30453        }
30454        true
30455    }
30456}
30457
30458impl ToXml for Styles {
30459    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
30460        #[cfg(feature = "extra-children")]
30461        let mut extra_iter = self.extra_children.iter().peekable();
30462        #[cfg(feature = "extra-children")]
30463        let mut emit_idx: usize = 0;
30464        #[cfg(feature = "extra-children")]
30465        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
30466            extra_iter
30467                .next()
30468                .unwrap()
30469                .node
30470                .write_to(writer)
30471                .map_err(SerializeError::from)?;
30472        }
30473        if let Some(ref val) = self.doc_defaults {
30474            val.write_element("w:docDefaults", writer)?;
30475        }
30476        #[cfg(feature = "extra-children")]
30477        {
30478            emit_idx += 1;
30479        }
30480        #[cfg(feature = "extra-children")]
30481        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
30482            extra_iter
30483                .next()
30484                .unwrap()
30485                .node
30486                .write_to(writer)
30487                .map_err(SerializeError::from)?;
30488        }
30489        #[cfg(feature = "wml-styling")]
30490        if let Some(ref val) = self.latent_styles {
30491            val.write_element("w:latentStyles", writer)?;
30492        }
30493        #[cfg(feature = "extra-children")]
30494        {
30495            emit_idx += 1;
30496        }
30497        for item in &self.style {
30498            #[cfg(feature = "extra-children")]
30499            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
30500                extra_iter
30501                    .next()
30502                    .unwrap()
30503                    .node
30504                    .write_to(writer)
30505                    .map_err(SerializeError::from)?;
30506            }
30507            item.write_element("w:style", writer)?;
30508            #[cfg(feature = "extra-children")]
30509            {
30510                emit_idx += 1;
30511            }
30512        }
30513        #[cfg(feature = "extra-children")]
30514        for extra in extra_iter {
30515            extra.node.write_to(writer).map_err(SerializeError::from)?;
30516        }
30517        Ok(())
30518    }
30519
30520    fn is_empty_element(&self) -> bool {
30521        if self.doc_defaults.is_some() {
30522            return false;
30523        }
30524        #[cfg(feature = "wml-styling")]
30525        if self.latent_styles.is_some() {
30526            return false;
30527        }
30528        if !self.style.is_empty() {
30529            return false;
30530        }
30531        #[cfg(feature = "extra-children")]
30532        if !self.extra_children.is_empty() {
30533            return false;
30534        }
30535        true
30536    }
30537}
30538
30539impl ToXml for PanoseElement {
30540    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
30541        #[allow(unused_mut)]
30542        let mut start = start;
30543        {
30544            let val = &self.value;
30545            {
30546                let hex = encode_hex(val);
30547                start.push_attribute(("w:val", hex.as_str()));
30548            }
30549        }
30550        #[cfg(feature = "extra-attrs")]
30551        for (key, value) in &self.extra_attrs {
30552            start.push_attribute((key.as_str(), value.as_str()));
30553        }
30554        start
30555    }
30556
30557    fn is_empty_element(&self) -> bool {
30558        true
30559    }
30560}
30561
30562impl ToXml for CTFontFamily {
30563    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
30564        #[allow(unused_mut)]
30565        let mut start = start;
30566        {
30567            let val = &self.value;
30568            {
30569                let s = val.to_string();
30570                start.push_attribute(("w:val", s.as_str()));
30571            }
30572        }
30573        #[cfg(feature = "extra-attrs")]
30574        for (key, value) in &self.extra_attrs {
30575            start.push_attribute((key.as_str(), value.as_str()));
30576        }
30577        start
30578    }
30579
30580    fn is_empty_element(&self) -> bool {
30581        true
30582    }
30583}
30584
30585impl ToXml for CTPitch {
30586    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
30587        #[allow(unused_mut)]
30588        let mut start = start;
30589        {
30590            let val = &self.value;
30591            {
30592                let s = val.to_string();
30593                start.push_attribute(("w:val", s.as_str()));
30594            }
30595        }
30596        #[cfg(feature = "extra-attrs")]
30597        for (key, value) in &self.extra_attrs {
30598            start.push_attribute((key.as_str(), value.as_str()));
30599        }
30600        start
30601    }
30602
30603    fn is_empty_element(&self) -> bool {
30604        true
30605    }
30606}
30607
30608impl ToXml for CTFontSig {
30609    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
30610        #[allow(unused_mut)]
30611        let mut start = start;
30612        #[cfg(feature = "wml-styling")]
30613        {
30614            let val = &self.usb0;
30615            {
30616                let hex = encode_hex(val);
30617                start.push_attribute(("w:usb0", hex.as_str()));
30618            }
30619        }
30620        #[cfg(feature = "wml-styling")]
30621        {
30622            let val = &self.usb1;
30623            {
30624                let hex = encode_hex(val);
30625                start.push_attribute(("w:usb1", hex.as_str()));
30626            }
30627        }
30628        #[cfg(feature = "wml-styling")]
30629        {
30630            let val = &self.usb2;
30631            {
30632                let hex = encode_hex(val);
30633                start.push_attribute(("w:usb2", hex.as_str()));
30634            }
30635        }
30636        #[cfg(feature = "wml-styling")]
30637        {
30638            let val = &self.usb3;
30639            {
30640                let hex = encode_hex(val);
30641                start.push_attribute(("w:usb3", hex.as_str()));
30642            }
30643        }
30644        #[cfg(feature = "wml-styling")]
30645        {
30646            let val = &self.csb0;
30647            {
30648                let hex = encode_hex(val);
30649                start.push_attribute(("w:csb0", hex.as_str()));
30650            }
30651        }
30652        #[cfg(feature = "wml-styling")]
30653        {
30654            let val = &self.csb1;
30655            {
30656                let hex = encode_hex(val);
30657                start.push_attribute(("w:csb1", hex.as_str()));
30658            }
30659        }
30660        #[cfg(feature = "extra-attrs")]
30661        for (key, value) in &self.extra_attrs {
30662            start.push_attribute((key.as_str(), value.as_str()));
30663        }
30664        start
30665    }
30666
30667    fn is_empty_element(&self) -> bool {
30668        true
30669    }
30670}
30671
30672impl ToXml for CTFontRel {
30673    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
30674        #[allow(unused_mut)]
30675        let mut start = start;
30676        #[cfg(feature = "wml-styling")]
30677        {
30678            let val = &self.id;
30679            start.push_attribute(("r:id", val.as_str()));
30680        }
30681        #[cfg(feature = "wml-styling")]
30682        if let Some(ref val) = self.font_key {
30683            start.push_attribute(("w:fontKey", val.as_str()));
30684        }
30685        #[cfg(feature = "wml-styling")]
30686        if let Some(ref val) = self.subsetted {
30687            {
30688                let s = val.to_string();
30689                start.push_attribute(("w:subsetted", s.as_str()));
30690            }
30691        }
30692        #[cfg(feature = "extra-attrs")]
30693        for (key, value) in &self.extra_attrs {
30694            start.push_attribute((key.as_str(), value.as_str()));
30695        }
30696        start
30697    }
30698
30699    fn is_empty_element(&self) -> bool {
30700        true
30701    }
30702}
30703
30704impl ToXml for Font {
30705    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
30706        #[allow(unused_mut)]
30707        let mut start = start;
30708        {
30709            let val = &self.name;
30710            start.push_attribute(("w:name", val.as_str()));
30711        }
30712        #[cfg(feature = "extra-attrs")]
30713        for (key, value) in &self.extra_attrs {
30714            start.push_attribute((key.as_str(), value.as_str()));
30715        }
30716        start
30717    }
30718
30719    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
30720        #[cfg(feature = "extra-children")]
30721        let mut extra_iter = self.extra_children.iter().peekable();
30722        #[cfg(feature = "extra-children")]
30723        let mut emit_idx: usize = 0;
30724        #[cfg(feature = "extra-children")]
30725        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
30726            extra_iter
30727                .next()
30728                .unwrap()
30729                .node
30730                .write_to(writer)
30731                .map_err(SerializeError::from)?;
30732        }
30733        #[cfg(feature = "wml-styling")]
30734        if let Some(ref val) = self.alt_name {
30735            val.write_element("w:altName", writer)?;
30736        }
30737        #[cfg(feature = "extra-children")]
30738        {
30739            emit_idx += 1;
30740        }
30741        #[cfg(feature = "extra-children")]
30742        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
30743            extra_iter
30744                .next()
30745                .unwrap()
30746                .node
30747                .write_to(writer)
30748                .map_err(SerializeError::from)?;
30749        }
30750        #[cfg(feature = "wml-styling")]
30751        if let Some(ref val) = self.panose1 {
30752            val.write_element("w:panose1", writer)?;
30753        }
30754        #[cfg(feature = "extra-children")]
30755        {
30756            emit_idx += 1;
30757        }
30758        #[cfg(feature = "extra-children")]
30759        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
30760            extra_iter
30761                .next()
30762                .unwrap()
30763                .node
30764                .write_to(writer)
30765                .map_err(SerializeError::from)?;
30766        }
30767        #[cfg(feature = "wml-styling")]
30768        if let Some(ref val) = self.charset {
30769            val.write_element("w:charset", writer)?;
30770        }
30771        #[cfg(feature = "extra-children")]
30772        {
30773            emit_idx += 1;
30774        }
30775        #[cfg(feature = "extra-children")]
30776        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
30777            extra_iter
30778                .next()
30779                .unwrap()
30780                .node
30781                .write_to(writer)
30782                .map_err(SerializeError::from)?;
30783        }
30784        #[cfg(feature = "wml-styling")]
30785        if let Some(ref val) = self.family {
30786            val.write_element("w:family", writer)?;
30787        }
30788        #[cfg(feature = "extra-children")]
30789        {
30790            emit_idx += 1;
30791        }
30792        #[cfg(feature = "extra-children")]
30793        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
30794            extra_iter
30795                .next()
30796                .unwrap()
30797                .node
30798                .write_to(writer)
30799                .map_err(SerializeError::from)?;
30800        }
30801        #[cfg(feature = "wml-styling")]
30802        if let Some(ref val) = self.not_true_type {
30803            val.write_element("w:notTrueType", writer)?;
30804        }
30805        #[cfg(feature = "extra-children")]
30806        {
30807            emit_idx += 1;
30808        }
30809        #[cfg(feature = "extra-children")]
30810        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
30811            extra_iter
30812                .next()
30813                .unwrap()
30814                .node
30815                .write_to(writer)
30816                .map_err(SerializeError::from)?;
30817        }
30818        #[cfg(feature = "wml-styling")]
30819        if let Some(ref val) = self.pitch {
30820            val.write_element("w:pitch", writer)?;
30821        }
30822        #[cfg(feature = "extra-children")]
30823        {
30824            emit_idx += 1;
30825        }
30826        #[cfg(feature = "extra-children")]
30827        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
30828            extra_iter
30829                .next()
30830                .unwrap()
30831                .node
30832                .write_to(writer)
30833                .map_err(SerializeError::from)?;
30834        }
30835        #[cfg(feature = "wml-styling")]
30836        if let Some(ref val) = self.sig {
30837            val.write_element("w:sig", writer)?;
30838        }
30839        #[cfg(feature = "extra-children")]
30840        {
30841            emit_idx += 1;
30842        }
30843        #[cfg(feature = "extra-children")]
30844        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
30845            extra_iter
30846                .next()
30847                .unwrap()
30848                .node
30849                .write_to(writer)
30850                .map_err(SerializeError::from)?;
30851        }
30852        #[cfg(feature = "wml-styling")]
30853        if let Some(ref val) = self.embed_regular {
30854            val.write_element("w:embedRegular", writer)?;
30855        }
30856        #[cfg(feature = "extra-children")]
30857        {
30858            emit_idx += 1;
30859        }
30860        #[cfg(feature = "extra-children")]
30861        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
30862            extra_iter
30863                .next()
30864                .unwrap()
30865                .node
30866                .write_to(writer)
30867                .map_err(SerializeError::from)?;
30868        }
30869        #[cfg(feature = "wml-styling")]
30870        if let Some(ref val) = self.embed_bold {
30871            val.write_element("w:embedBold", writer)?;
30872        }
30873        #[cfg(feature = "extra-children")]
30874        {
30875            emit_idx += 1;
30876        }
30877        #[cfg(feature = "extra-children")]
30878        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
30879            extra_iter
30880                .next()
30881                .unwrap()
30882                .node
30883                .write_to(writer)
30884                .map_err(SerializeError::from)?;
30885        }
30886        #[cfg(feature = "wml-styling")]
30887        if let Some(ref val) = self.embed_italic {
30888            val.write_element("w:embedItalic", writer)?;
30889        }
30890        #[cfg(feature = "extra-children")]
30891        {
30892            emit_idx += 1;
30893        }
30894        #[cfg(feature = "extra-children")]
30895        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
30896            extra_iter
30897                .next()
30898                .unwrap()
30899                .node
30900                .write_to(writer)
30901                .map_err(SerializeError::from)?;
30902        }
30903        #[cfg(feature = "wml-styling")]
30904        if let Some(ref val) = self.embed_bold_italic {
30905            val.write_element("w:embedBoldItalic", writer)?;
30906        }
30907        #[cfg(feature = "extra-children")]
30908        {
30909            emit_idx += 1;
30910        }
30911        #[cfg(feature = "extra-children")]
30912        for extra in extra_iter {
30913            extra.node.write_to(writer).map_err(SerializeError::from)?;
30914        }
30915        Ok(())
30916    }
30917
30918    fn is_empty_element(&self) -> bool {
30919        #[cfg(feature = "wml-styling")]
30920        if self.alt_name.is_some() {
30921            return false;
30922        }
30923        #[cfg(feature = "wml-styling")]
30924        if self.panose1.is_some() {
30925            return false;
30926        }
30927        #[cfg(feature = "wml-styling")]
30928        if self.charset.is_some() {
30929            return false;
30930        }
30931        #[cfg(feature = "wml-styling")]
30932        if self.family.is_some() {
30933            return false;
30934        }
30935        #[cfg(feature = "wml-styling")]
30936        if self.not_true_type.is_some() {
30937            return false;
30938        }
30939        #[cfg(feature = "wml-styling")]
30940        if self.pitch.is_some() {
30941            return false;
30942        }
30943        #[cfg(feature = "wml-styling")]
30944        if self.sig.is_some() {
30945            return false;
30946        }
30947        #[cfg(feature = "wml-styling")]
30948        if self.embed_regular.is_some() {
30949            return false;
30950        }
30951        #[cfg(feature = "wml-styling")]
30952        if self.embed_bold.is_some() {
30953            return false;
30954        }
30955        #[cfg(feature = "wml-styling")]
30956        if self.embed_italic.is_some() {
30957            return false;
30958        }
30959        #[cfg(feature = "wml-styling")]
30960        if self.embed_bold_italic.is_some() {
30961            return false;
30962        }
30963        #[cfg(feature = "extra-children")]
30964        if !self.extra_children.is_empty() {
30965            return false;
30966        }
30967        true
30968    }
30969}
30970
30971impl ToXml for CTFontsList {
30972    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
30973        #[cfg(feature = "extra-children")]
30974        let mut extra_iter = self.extra_children.iter().peekable();
30975        #[cfg(feature = "extra-children")]
30976        let mut emit_idx: usize = 0;
30977        for item in &self.font {
30978            #[cfg(feature = "extra-children")]
30979            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
30980                extra_iter
30981                    .next()
30982                    .unwrap()
30983                    .node
30984                    .write_to(writer)
30985                    .map_err(SerializeError::from)?;
30986            }
30987            item.write_element("w:font", writer)?;
30988            #[cfg(feature = "extra-children")]
30989            {
30990                emit_idx += 1;
30991            }
30992        }
30993        #[cfg(feature = "extra-children")]
30994        for extra in extra_iter {
30995            extra.node.write_to(writer).map_err(SerializeError::from)?;
30996        }
30997        Ok(())
30998    }
30999
31000    fn is_empty_element(&self) -> bool {
31001        if !self.font.is_empty() {
31002            return false;
31003        }
31004        #[cfg(feature = "extra-children")]
31005        if !self.extra_children.is_empty() {
31006            return false;
31007        }
31008        true
31009    }
31010}
31011
31012impl ToXml for CTDivBdr {
31013    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
31014        #[cfg(feature = "extra-children")]
31015        let mut extra_iter = self.extra_children.iter().peekable();
31016        #[cfg(feature = "extra-children")]
31017        let mut emit_idx: usize = 0;
31018        #[cfg(feature = "extra-children")]
31019        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
31020            extra_iter
31021                .next()
31022                .unwrap()
31023                .node
31024                .write_to(writer)
31025                .map_err(SerializeError::from)?;
31026        }
31027        #[cfg(feature = "wml-settings")]
31028        if let Some(ref val) = self.top {
31029            val.write_element("w:top", writer)?;
31030        }
31031        #[cfg(feature = "extra-children")]
31032        {
31033            emit_idx += 1;
31034        }
31035        #[cfg(feature = "extra-children")]
31036        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
31037            extra_iter
31038                .next()
31039                .unwrap()
31040                .node
31041                .write_to(writer)
31042                .map_err(SerializeError::from)?;
31043        }
31044        #[cfg(feature = "wml-settings")]
31045        if let Some(ref val) = self.left {
31046            val.write_element("w:left", writer)?;
31047        }
31048        #[cfg(feature = "extra-children")]
31049        {
31050            emit_idx += 1;
31051        }
31052        #[cfg(feature = "extra-children")]
31053        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
31054            extra_iter
31055                .next()
31056                .unwrap()
31057                .node
31058                .write_to(writer)
31059                .map_err(SerializeError::from)?;
31060        }
31061        #[cfg(feature = "wml-settings")]
31062        if let Some(ref val) = self.bottom {
31063            val.write_element("w:bottom", writer)?;
31064        }
31065        #[cfg(feature = "extra-children")]
31066        {
31067            emit_idx += 1;
31068        }
31069        #[cfg(feature = "extra-children")]
31070        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
31071            extra_iter
31072                .next()
31073                .unwrap()
31074                .node
31075                .write_to(writer)
31076                .map_err(SerializeError::from)?;
31077        }
31078        #[cfg(feature = "wml-settings")]
31079        if let Some(ref val) = self.right {
31080            val.write_element("w:right", writer)?;
31081        }
31082        #[cfg(feature = "extra-children")]
31083        {
31084            emit_idx += 1;
31085        }
31086        #[cfg(feature = "extra-children")]
31087        for extra in extra_iter {
31088            extra.node.write_to(writer).map_err(SerializeError::from)?;
31089        }
31090        Ok(())
31091    }
31092
31093    fn is_empty_element(&self) -> bool {
31094        #[cfg(feature = "wml-settings")]
31095        if self.top.is_some() {
31096            return false;
31097        }
31098        #[cfg(feature = "wml-settings")]
31099        if self.left.is_some() {
31100            return false;
31101        }
31102        #[cfg(feature = "wml-settings")]
31103        if self.bottom.is_some() {
31104            return false;
31105        }
31106        #[cfg(feature = "wml-settings")]
31107        if self.right.is_some() {
31108            return false;
31109        }
31110        #[cfg(feature = "extra-children")]
31111        if !self.extra_children.is_empty() {
31112            return false;
31113        }
31114        true
31115    }
31116}
31117
31118impl ToXml for CTDiv {
31119    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
31120        #[allow(unused_mut)]
31121        let mut start = start;
31122        #[cfg(feature = "wml-settings")]
31123        {
31124            let val = &self.id;
31125            {
31126                let s = val.to_string();
31127                start.push_attribute(("w:id", s.as_str()));
31128            }
31129        }
31130        #[cfg(feature = "extra-attrs")]
31131        for (key, value) in &self.extra_attrs {
31132            start.push_attribute((key.as_str(), value.as_str()));
31133        }
31134        start
31135    }
31136
31137    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
31138        #[cfg(feature = "extra-children")]
31139        let mut extra_iter = self.extra_children.iter().peekable();
31140        #[cfg(feature = "extra-children")]
31141        let mut emit_idx: usize = 0;
31142        #[cfg(feature = "extra-children")]
31143        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
31144            extra_iter
31145                .next()
31146                .unwrap()
31147                .node
31148                .write_to(writer)
31149                .map_err(SerializeError::from)?;
31150        }
31151        #[cfg(feature = "wml-settings")]
31152        if let Some(ref val) = self.block_quote {
31153            val.write_element("w:blockQuote", writer)?;
31154        }
31155        #[cfg(feature = "extra-children")]
31156        {
31157            emit_idx += 1;
31158        }
31159        #[cfg(feature = "extra-children")]
31160        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
31161            extra_iter
31162                .next()
31163                .unwrap()
31164                .node
31165                .write_to(writer)
31166                .map_err(SerializeError::from)?;
31167        }
31168        #[cfg(feature = "wml-settings")]
31169        if let Some(ref val) = self.body_div {
31170            val.write_element("w:bodyDiv", writer)?;
31171        }
31172        #[cfg(feature = "extra-children")]
31173        {
31174            emit_idx += 1;
31175        }
31176        #[cfg(feature = "extra-children")]
31177        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
31178            extra_iter
31179                .next()
31180                .unwrap()
31181                .node
31182                .write_to(writer)
31183                .map_err(SerializeError::from)?;
31184        }
31185        #[cfg(feature = "wml-settings")]
31186        {
31187            let val = &self.mar_left;
31188            val.write_element("w:marLeft", writer)?;
31189        }
31190        #[cfg(feature = "extra-children")]
31191        {
31192            emit_idx += 1;
31193        }
31194        #[cfg(feature = "extra-children")]
31195        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
31196            extra_iter
31197                .next()
31198                .unwrap()
31199                .node
31200                .write_to(writer)
31201                .map_err(SerializeError::from)?;
31202        }
31203        #[cfg(feature = "wml-settings")]
31204        {
31205            let val = &self.mar_right;
31206            val.write_element("w:marRight", writer)?;
31207        }
31208        #[cfg(feature = "extra-children")]
31209        {
31210            emit_idx += 1;
31211        }
31212        #[cfg(feature = "extra-children")]
31213        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
31214            extra_iter
31215                .next()
31216                .unwrap()
31217                .node
31218                .write_to(writer)
31219                .map_err(SerializeError::from)?;
31220        }
31221        #[cfg(feature = "wml-settings")]
31222        {
31223            let val = &self.mar_top;
31224            val.write_element("w:marTop", writer)?;
31225        }
31226        #[cfg(feature = "extra-children")]
31227        {
31228            emit_idx += 1;
31229        }
31230        #[cfg(feature = "extra-children")]
31231        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
31232            extra_iter
31233                .next()
31234                .unwrap()
31235                .node
31236                .write_to(writer)
31237                .map_err(SerializeError::from)?;
31238        }
31239        #[cfg(feature = "wml-settings")]
31240        {
31241            let val = &self.mar_bottom;
31242            val.write_element("w:marBottom", writer)?;
31243        }
31244        #[cfg(feature = "extra-children")]
31245        {
31246            emit_idx += 1;
31247        }
31248        #[cfg(feature = "extra-children")]
31249        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
31250            extra_iter
31251                .next()
31252                .unwrap()
31253                .node
31254                .write_to(writer)
31255                .map_err(SerializeError::from)?;
31256        }
31257        #[cfg(feature = "wml-settings")]
31258        if let Some(ref val) = self.div_bdr {
31259            val.write_element("w:divBdr", writer)?;
31260        }
31261        #[cfg(feature = "extra-children")]
31262        {
31263            emit_idx += 1;
31264        }
31265        #[cfg(feature = "wml-settings")]
31266        for item in &self.divs_child {
31267            #[cfg(feature = "extra-children")]
31268            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
31269                extra_iter
31270                    .next()
31271                    .unwrap()
31272                    .node
31273                    .write_to(writer)
31274                    .map_err(SerializeError::from)?;
31275            }
31276            item.write_element("w:divsChild", writer)?;
31277            #[cfg(feature = "extra-children")]
31278            {
31279                emit_idx += 1;
31280            }
31281        }
31282        #[cfg(feature = "extra-children")]
31283        for extra in extra_iter {
31284            extra.node.write_to(writer).map_err(SerializeError::from)?;
31285        }
31286        Ok(())
31287    }
31288
31289    fn is_empty_element(&self) -> bool {
31290        #[cfg(feature = "wml-settings")]
31291        if self.block_quote.is_some() {
31292            return false;
31293        }
31294        #[cfg(feature = "wml-settings")]
31295        if self.body_div.is_some() {
31296            return false;
31297        }
31298        #[cfg(feature = "wml-settings")]
31299        return false;
31300        #[cfg(feature = "wml-settings")]
31301        return false;
31302        #[cfg(feature = "wml-settings")]
31303        return false;
31304        #[cfg(feature = "wml-settings")]
31305        return false;
31306        #[cfg(feature = "wml-settings")]
31307        if self.div_bdr.is_some() {
31308            return false;
31309        }
31310        #[cfg(feature = "wml-settings")]
31311        if !self.divs_child.is_empty() {
31312            return false;
31313        }
31314        #[cfg(feature = "extra-children")]
31315        if !self.extra_children.is_empty() {
31316            return false;
31317        }
31318        true
31319    }
31320}
31321
31322impl ToXml for CTDivs {
31323    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
31324        #[cfg(feature = "extra-children")]
31325        let mut extra_iter = self.extra_children.iter().peekable();
31326        #[cfg(feature = "extra-children")]
31327        let mut emit_idx: usize = 0;
31328        #[cfg(feature = "wml-settings")]
31329        for item in &self.div {
31330            #[cfg(feature = "extra-children")]
31331            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
31332                extra_iter
31333                    .next()
31334                    .unwrap()
31335                    .node
31336                    .write_to(writer)
31337                    .map_err(SerializeError::from)?;
31338            }
31339            item.write_element("w:div", writer)?;
31340            #[cfg(feature = "extra-children")]
31341            {
31342                emit_idx += 1;
31343            }
31344        }
31345        #[cfg(feature = "extra-children")]
31346        for extra in extra_iter {
31347            extra.node.write_to(writer).map_err(SerializeError::from)?;
31348        }
31349        Ok(())
31350    }
31351
31352    fn is_empty_element(&self) -> bool {
31353        #[cfg(feature = "wml-settings")]
31354        if !self.div.is_empty() {
31355            return false;
31356        }
31357        #[cfg(feature = "extra-children")]
31358        if !self.extra_children.is_empty() {
31359            return false;
31360        }
31361        true
31362    }
31363}
31364
31365impl ToXml for CTTxbxContent {
31366    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
31367        #[cfg(feature = "extra-children")]
31368        let mut extra_iter = self.extra_children.iter().peekable();
31369        #[cfg(feature = "extra-children")]
31370        let mut emit_idx: usize = 0;
31371        for item in &self.block_content {
31372            #[cfg(feature = "extra-children")]
31373            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
31374                extra_iter
31375                    .next()
31376                    .unwrap()
31377                    .node
31378                    .write_to(writer)
31379                    .map_err(SerializeError::from)?;
31380            }
31381            item.write_element("", writer)?;
31382            #[cfg(feature = "extra-children")]
31383            {
31384                emit_idx += 1;
31385            }
31386        }
31387        #[cfg(feature = "extra-children")]
31388        for extra in extra_iter {
31389            extra.node.write_to(writer).map_err(SerializeError::from)?;
31390        }
31391        Ok(())
31392    }
31393
31394    fn is_empty_element(&self) -> bool {
31395        if !self.block_content.is_empty() {
31396            return false;
31397        }
31398        #[cfg(feature = "extra-children")]
31399        if !self.extra_children.is_empty() {
31400            return false;
31401        }
31402        true
31403    }
31404}
31405
31406impl ToXml for EGMathContent {
31407    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
31408        #[cfg(feature = "extra-children")]
31409        for child in &self.extra_children {
31410            child.node.write_to(writer).map_err(SerializeError::from)?;
31411        }
31412        Ok(())
31413    }
31414
31415    fn is_empty_element(&self) -> bool {
31416        #[cfg(feature = "extra-children")]
31417        if !self.extra_children.is_empty() {
31418            return false;
31419        }
31420        true
31421    }
31422}
31423
31424impl ToXml for EGBlockLevelChunkElts {
31425    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
31426        #[cfg(feature = "extra-children")]
31427        let mut extra_iter = self.extra_children.iter().peekable();
31428        #[cfg(feature = "extra-children")]
31429        let mut emit_idx: usize = 0;
31430        for item in &self.block_content {
31431            #[cfg(feature = "extra-children")]
31432            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
31433                extra_iter
31434                    .next()
31435                    .unwrap()
31436                    .node
31437                    .write_to(writer)
31438                    .map_err(SerializeError::from)?;
31439            }
31440            item.write_element("", writer)?;
31441            #[cfg(feature = "extra-children")]
31442            {
31443                emit_idx += 1;
31444            }
31445        }
31446        #[cfg(feature = "extra-children")]
31447        for extra in extra_iter {
31448            extra.node.write_to(writer).map_err(SerializeError::from)?;
31449        }
31450        Ok(())
31451    }
31452
31453    fn is_empty_element(&self) -> bool {
31454        if !self.block_content.is_empty() {
31455            return false;
31456        }
31457        #[cfg(feature = "extra-children")]
31458        if !self.extra_children.is_empty() {
31459            return false;
31460        }
31461        true
31462    }
31463}
31464
31465impl ToXml for BlockContent {
31466    fn write_element<W: Write>(
31467        &self,
31468        _tag: &str,
31469        writer: &mut Writer<W>,
31470    ) -> Result<(), SerializeError> {
31471        match self {
31472            Self::CustomXml(inner) => inner.write_element("w:customXml", writer)?,
31473            Self::Sdt(inner) => inner.write_element("w:sdt", writer)?,
31474            Self::P(inner) => inner.write_element("w:p", writer)?,
31475            Self::Tbl(inner) => inner.write_element("w:tbl", writer)?,
31476            Self::ProofErr(inner) => inner.write_element("w:proofErr", writer)?,
31477            Self::PermStart(inner) => inner.write_element("w:permStart", writer)?,
31478            Self::PermEnd(inner) => inner.write_element("w:permEnd", writer)?,
31479            Self::BookmarkStart(inner) => inner.write_element("w:bookmarkStart", writer)?,
31480            Self::BookmarkEnd(inner) => inner.write_element("w:bookmarkEnd", writer)?,
31481            Self::MoveFromRangeStart(inner) => {
31482                inner.write_element("w:moveFromRangeStart", writer)?
31483            }
31484            Self::MoveFromRangeEnd(inner) => inner.write_element("w:moveFromRangeEnd", writer)?,
31485            Self::MoveToRangeStart(inner) => inner.write_element("w:moveToRangeStart", writer)?,
31486            Self::MoveToRangeEnd(inner) => inner.write_element("w:moveToRangeEnd", writer)?,
31487            Self::CommentRangeStart(inner) => inner.write_element("w:commentRangeStart", writer)?,
31488            Self::CommentRangeEnd(inner) => inner.write_element("w:commentRangeEnd", writer)?,
31489            Self::CustomXmlInsRangeStart(inner) => {
31490                inner.write_element("w:customXmlInsRangeStart", writer)?
31491            }
31492            Self::CustomXmlInsRangeEnd(inner) => {
31493                inner.write_element("w:customXmlInsRangeEnd", writer)?
31494            }
31495            Self::CustomXmlDelRangeStart(inner) => {
31496                inner.write_element("w:customXmlDelRangeStart", writer)?
31497            }
31498            Self::CustomXmlDelRangeEnd(inner) => {
31499                inner.write_element("w:customXmlDelRangeEnd", writer)?
31500            }
31501            Self::CustomXmlMoveFromRangeStart(inner) => {
31502                inner.write_element("w:customXmlMoveFromRangeStart", writer)?
31503            }
31504            Self::CustomXmlMoveFromRangeEnd(inner) => {
31505                inner.write_element("w:customXmlMoveFromRangeEnd", writer)?
31506            }
31507            Self::CustomXmlMoveToRangeStart(inner) => {
31508                inner.write_element("w:customXmlMoveToRangeStart", writer)?
31509            }
31510            Self::CustomXmlMoveToRangeEnd(inner) => {
31511                inner.write_element("w:customXmlMoveToRangeEnd", writer)?
31512            }
31513            Self::Ins(inner) => inner.write_element("w:ins", writer)?,
31514            Self::Del(inner) => inner.write_element("w:del", writer)?,
31515            Self::MoveFrom(inner) => inner.write_element("w:moveFrom", writer)?,
31516            Self::MoveTo(inner) => inner.write_element("w:moveTo", writer)?,
31517            Self::AltChunk(inner) => inner.write_element("w:altChunk", writer)?,
31518        }
31519        Ok(())
31520    }
31521}
31522
31523impl ToXml for RunLevelContent {
31524    fn write_element<W: Write>(
31525        &self,
31526        _tag: &str,
31527        writer: &mut Writer<W>,
31528    ) -> Result<(), SerializeError> {
31529        match self {
31530            Self::ProofErr(inner) => inner.write_element("w:proofErr", writer)?,
31531            Self::PermStart(inner) => inner.write_element("w:permStart", writer)?,
31532            Self::PermEnd(inner) => inner.write_element("w:permEnd", writer)?,
31533            Self::BookmarkStart(inner) => inner.write_element("w:bookmarkStart", writer)?,
31534            Self::BookmarkEnd(inner) => inner.write_element("w:bookmarkEnd", writer)?,
31535            Self::MoveFromRangeStart(inner) => {
31536                inner.write_element("w:moveFromRangeStart", writer)?
31537            }
31538            Self::MoveFromRangeEnd(inner) => inner.write_element("w:moveFromRangeEnd", writer)?,
31539            Self::MoveToRangeStart(inner) => inner.write_element("w:moveToRangeStart", writer)?,
31540            Self::MoveToRangeEnd(inner) => inner.write_element("w:moveToRangeEnd", writer)?,
31541            Self::CommentRangeStart(inner) => inner.write_element("w:commentRangeStart", writer)?,
31542            Self::CommentRangeEnd(inner) => inner.write_element("w:commentRangeEnd", writer)?,
31543            Self::CustomXmlInsRangeStart(inner) => {
31544                inner.write_element("w:customXmlInsRangeStart", writer)?
31545            }
31546            Self::CustomXmlInsRangeEnd(inner) => {
31547                inner.write_element("w:customXmlInsRangeEnd", writer)?
31548            }
31549            Self::CustomXmlDelRangeStart(inner) => {
31550                inner.write_element("w:customXmlDelRangeStart", writer)?
31551            }
31552            Self::CustomXmlDelRangeEnd(inner) => {
31553                inner.write_element("w:customXmlDelRangeEnd", writer)?
31554            }
31555            Self::CustomXmlMoveFromRangeStart(inner) => {
31556                inner.write_element("w:customXmlMoveFromRangeStart", writer)?
31557            }
31558            Self::CustomXmlMoveFromRangeEnd(inner) => {
31559                inner.write_element("w:customXmlMoveFromRangeEnd", writer)?
31560            }
31561            Self::CustomXmlMoveToRangeStart(inner) => {
31562                inner.write_element("w:customXmlMoveToRangeStart", writer)?
31563            }
31564            Self::CustomXmlMoveToRangeEnd(inner) => {
31565                inner.write_element("w:customXmlMoveToRangeEnd", writer)?
31566            }
31567            Self::Ins(inner) => inner.write_element("w:ins", writer)?,
31568            Self::Del(inner) => inner.write_element("w:del", writer)?,
31569            Self::MoveFrom(inner) => inner.write_element("w:moveFrom", writer)?,
31570            Self::MoveTo(inner) => inner.write_element("w:moveTo", writer)?,
31571        }
31572        Ok(())
31573    }
31574}
31575
31576impl ToXml for Body {
31577    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
31578        #[cfg(feature = "extra-children")]
31579        let mut extra_iter = self.extra_children.iter().peekable();
31580        #[cfg(feature = "extra-children")]
31581        let mut emit_idx: usize = 0;
31582        for item in &self.block_content {
31583            #[cfg(feature = "extra-children")]
31584            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
31585                extra_iter
31586                    .next()
31587                    .unwrap()
31588                    .node
31589                    .write_to(writer)
31590                    .map_err(SerializeError::from)?;
31591            }
31592            item.write_element("", writer)?;
31593            #[cfg(feature = "extra-children")]
31594            {
31595                emit_idx += 1;
31596            }
31597        }
31598        #[cfg(feature = "extra-children")]
31599        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
31600            extra_iter
31601                .next()
31602                .unwrap()
31603                .node
31604                .write_to(writer)
31605                .map_err(SerializeError::from)?;
31606        }
31607        #[cfg(feature = "wml-layout")]
31608        if let Some(ref val) = self.sect_pr {
31609            val.write_element("w:sectPr", writer)?;
31610        }
31611        #[cfg(feature = "extra-children")]
31612        {
31613            emit_idx += 1;
31614        }
31615        #[cfg(feature = "extra-children")]
31616        for extra in extra_iter {
31617            extra.node.write_to(writer).map_err(SerializeError::from)?;
31618        }
31619        Ok(())
31620    }
31621
31622    fn is_empty_element(&self) -> bool {
31623        if !self.block_content.is_empty() {
31624            return false;
31625        }
31626        #[cfg(feature = "wml-layout")]
31627        if self.sect_pr.is_some() {
31628            return false;
31629        }
31630        #[cfg(feature = "extra-children")]
31631        if !self.extra_children.is_empty() {
31632            return false;
31633        }
31634        true
31635    }
31636}
31637
31638impl ToXml for CTShapeDefaults {
31639    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
31640        #[cfg(feature = "extra-children")]
31641        for child in &self.extra_children {
31642            child.node.write_to(writer).map_err(SerializeError::from)?;
31643        }
31644        Ok(())
31645    }
31646
31647    fn is_empty_element(&self) -> bool {
31648        #[cfg(feature = "extra-children")]
31649        if !self.extra_children.is_empty() {
31650            return false;
31651        }
31652        true
31653    }
31654}
31655
31656impl ToXml for Comments {
31657    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
31658        #[cfg(feature = "extra-children")]
31659        let mut extra_iter = self.extra_children.iter().peekable();
31660        #[cfg(feature = "extra-children")]
31661        let mut emit_idx: usize = 0;
31662        for item in &self.comment {
31663            #[cfg(feature = "extra-children")]
31664            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
31665                extra_iter
31666                    .next()
31667                    .unwrap()
31668                    .node
31669                    .write_to(writer)
31670                    .map_err(SerializeError::from)?;
31671            }
31672            item.write_element("w:comment", writer)?;
31673            #[cfg(feature = "extra-children")]
31674            {
31675                emit_idx += 1;
31676            }
31677        }
31678        #[cfg(feature = "extra-children")]
31679        for extra in extra_iter {
31680            extra.node.write_to(writer).map_err(SerializeError::from)?;
31681        }
31682        Ok(())
31683    }
31684
31685    fn is_empty_element(&self) -> bool {
31686        if !self.comment.is_empty() {
31687            return false;
31688        }
31689        #[cfg(feature = "extra-children")]
31690        if !self.extra_children.is_empty() {
31691            return false;
31692        }
31693        true
31694    }
31695}
31696
31697impl ToXml for Footnotes {
31698    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
31699        #[cfg(feature = "extra-children")]
31700        let mut extra_iter = self.extra_children.iter().peekable();
31701        #[cfg(feature = "extra-children")]
31702        let mut emit_idx: usize = 0;
31703        for item in &self.footnote {
31704            #[cfg(feature = "extra-children")]
31705            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
31706                extra_iter
31707                    .next()
31708                    .unwrap()
31709                    .node
31710                    .write_to(writer)
31711                    .map_err(SerializeError::from)?;
31712            }
31713            item.write_element("w:footnote", writer)?;
31714            #[cfg(feature = "extra-children")]
31715            {
31716                emit_idx += 1;
31717            }
31718        }
31719        #[cfg(feature = "extra-children")]
31720        for extra in extra_iter {
31721            extra.node.write_to(writer).map_err(SerializeError::from)?;
31722        }
31723        Ok(())
31724    }
31725
31726    fn is_empty_element(&self) -> bool {
31727        if !self.footnote.is_empty() {
31728            return false;
31729        }
31730        #[cfg(feature = "extra-children")]
31731        if !self.extra_children.is_empty() {
31732            return false;
31733        }
31734        true
31735    }
31736}
31737
31738impl ToXml for Endnotes {
31739    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
31740        #[cfg(feature = "extra-children")]
31741        let mut extra_iter = self.extra_children.iter().peekable();
31742        #[cfg(feature = "extra-children")]
31743        let mut emit_idx: usize = 0;
31744        for item in &self.endnote {
31745            #[cfg(feature = "extra-children")]
31746            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
31747                extra_iter
31748                    .next()
31749                    .unwrap()
31750                    .node
31751                    .write_to(writer)
31752                    .map_err(SerializeError::from)?;
31753            }
31754            item.write_element("w:endnote", writer)?;
31755            #[cfg(feature = "extra-children")]
31756            {
31757                emit_idx += 1;
31758            }
31759        }
31760        #[cfg(feature = "extra-children")]
31761        for extra in extra_iter {
31762            extra.node.write_to(writer).map_err(SerializeError::from)?;
31763        }
31764        Ok(())
31765    }
31766
31767    fn is_empty_element(&self) -> bool {
31768        if !self.endnote.is_empty() {
31769            return false;
31770        }
31771        #[cfg(feature = "extra-children")]
31772        if !self.extra_children.is_empty() {
31773            return false;
31774        }
31775        true
31776    }
31777}
31778
31779impl ToXml for CTSmartTagType {
31780    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
31781        #[allow(unused_mut)]
31782        let mut start = start;
31783        #[cfg(feature = "wml-settings")]
31784        if let Some(ref val) = self.namespaceuri {
31785            start.push_attribute(("w:namespaceuri", val.as_str()));
31786        }
31787        #[cfg(feature = "wml-settings")]
31788        if let Some(ref val) = self.name {
31789            start.push_attribute(("w:name", val.as_str()));
31790        }
31791        #[cfg(feature = "wml-settings")]
31792        if let Some(ref val) = self.url {
31793            start.push_attribute(("w:url", val.as_str()));
31794        }
31795        #[cfg(feature = "extra-attrs")]
31796        for (key, value) in &self.extra_attrs {
31797            start.push_attribute((key.as_str(), value.as_str()));
31798        }
31799        start
31800    }
31801
31802    fn is_empty_element(&self) -> bool {
31803        true
31804    }
31805}
31806
31807impl ToXml for CTDocPartBehavior {
31808    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
31809        #[allow(unused_mut)]
31810        let mut start = start;
31811        {
31812            let val = &self.value;
31813            {
31814                let s = val.to_string();
31815                start.push_attribute(("w:val", s.as_str()));
31816            }
31817        }
31818        #[cfg(feature = "extra-attrs")]
31819        for (key, value) in &self.extra_attrs {
31820            start.push_attribute((key.as_str(), value.as_str()));
31821        }
31822        start
31823    }
31824
31825    fn is_empty_element(&self) -> bool {
31826        true
31827    }
31828}
31829
31830impl ToXml for CTDocPartBehaviors {
31831    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
31832        #[cfg(feature = "extra-children")]
31833        let mut extra_iter = self.extra_children.iter().peekable();
31834        #[cfg(feature = "extra-children")]
31835        let mut emit_idx: usize = 0;
31836        #[cfg(feature = "wml-settings")]
31837        for item in &self.behavior {
31838            #[cfg(feature = "extra-children")]
31839            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
31840                extra_iter
31841                    .next()
31842                    .unwrap()
31843                    .node
31844                    .write_to(writer)
31845                    .map_err(SerializeError::from)?;
31846            }
31847            item.write_element("w:behavior", writer)?;
31848            #[cfg(feature = "extra-children")]
31849            {
31850                emit_idx += 1;
31851            }
31852        }
31853        #[cfg(feature = "extra-children")]
31854        for extra in extra_iter {
31855            extra.node.write_to(writer).map_err(SerializeError::from)?;
31856        }
31857        Ok(())
31858    }
31859
31860    fn is_empty_element(&self) -> bool {
31861        #[cfg(feature = "wml-settings")]
31862        if !self.behavior.is_empty() {
31863            return false;
31864        }
31865        #[cfg(feature = "extra-children")]
31866        if !self.extra_children.is_empty() {
31867            return false;
31868        }
31869        true
31870    }
31871}
31872
31873impl ToXml for CTDocPartType {
31874    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
31875        #[allow(unused_mut)]
31876        let mut start = start;
31877        {
31878            let val = &self.value;
31879            {
31880                let s = val.to_string();
31881                start.push_attribute(("w:val", s.as_str()));
31882            }
31883        }
31884        #[cfg(feature = "extra-attrs")]
31885        for (key, value) in &self.extra_attrs {
31886            start.push_attribute((key.as_str(), value.as_str()));
31887        }
31888        start
31889    }
31890
31891    fn is_empty_element(&self) -> bool {
31892        true
31893    }
31894}
31895
31896impl ToXml for CTDocPartTypes {
31897    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
31898        #[allow(unused_mut)]
31899        let mut start = start;
31900        #[cfg(feature = "wml-settings")]
31901        if let Some(ref val) = self.all {
31902            {
31903                let s = val.to_string();
31904                start.push_attribute(("w:all", s.as_str()));
31905            }
31906        }
31907        #[cfg(feature = "extra-attrs")]
31908        for (key, value) in &self.extra_attrs {
31909            start.push_attribute((key.as_str(), value.as_str()));
31910        }
31911        start
31912    }
31913
31914    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
31915        #[cfg(feature = "extra-children")]
31916        let mut extra_iter = self.extra_children.iter().peekable();
31917        #[cfg(feature = "extra-children")]
31918        let mut emit_idx: usize = 0;
31919        #[cfg(feature = "wml-settings")]
31920        for item in &self.r#type {
31921            #[cfg(feature = "extra-children")]
31922            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
31923                extra_iter
31924                    .next()
31925                    .unwrap()
31926                    .node
31927                    .write_to(writer)
31928                    .map_err(SerializeError::from)?;
31929            }
31930            item.write_element("w:type", writer)?;
31931            #[cfg(feature = "extra-children")]
31932            {
31933                emit_idx += 1;
31934            }
31935        }
31936        #[cfg(feature = "extra-children")]
31937        for extra in extra_iter {
31938            extra.node.write_to(writer).map_err(SerializeError::from)?;
31939        }
31940        Ok(())
31941    }
31942
31943    fn is_empty_element(&self) -> bool {
31944        #[cfg(feature = "wml-settings")]
31945        if !self.r#type.is_empty() {
31946            return false;
31947        }
31948        #[cfg(feature = "extra-children")]
31949        if !self.extra_children.is_empty() {
31950            return false;
31951        }
31952        true
31953    }
31954}
31955
31956impl ToXml for CTDocPartGallery {
31957    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
31958        #[allow(unused_mut)]
31959        let mut start = start;
31960        {
31961            let val = &self.value;
31962            {
31963                let s = val.to_string();
31964                start.push_attribute(("w:val", s.as_str()));
31965            }
31966        }
31967        #[cfg(feature = "extra-attrs")]
31968        for (key, value) in &self.extra_attrs {
31969            start.push_attribute((key.as_str(), value.as_str()));
31970        }
31971        start
31972    }
31973
31974    fn is_empty_element(&self) -> bool {
31975        true
31976    }
31977}
31978
31979impl ToXml for CTDocPartCategory {
31980    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
31981        #[cfg(feature = "extra-children")]
31982        let mut extra_iter = self.extra_children.iter().peekable();
31983        #[cfg(feature = "extra-children")]
31984        let mut emit_idx: usize = 0;
31985        #[cfg(feature = "extra-children")]
31986        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
31987            extra_iter
31988                .next()
31989                .unwrap()
31990                .node
31991                .write_to(writer)
31992                .map_err(SerializeError::from)?;
31993        }
31994        {
31995            let val = &self.name;
31996            val.write_element("w:name", writer)?;
31997        }
31998        #[cfg(feature = "extra-children")]
31999        {
32000            emit_idx += 1;
32001        }
32002        #[cfg(feature = "extra-children")]
32003        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
32004            extra_iter
32005                .next()
32006                .unwrap()
32007                .node
32008                .write_to(writer)
32009                .map_err(SerializeError::from)?;
32010        }
32011        #[cfg(feature = "wml-settings")]
32012        {
32013            let val = &self.gallery;
32014            val.write_element("w:gallery", writer)?;
32015        }
32016        #[cfg(feature = "extra-children")]
32017        {
32018            emit_idx += 1;
32019        }
32020        #[cfg(feature = "extra-children")]
32021        for extra in extra_iter {
32022            extra.node.write_to(writer).map_err(SerializeError::from)?;
32023        }
32024        Ok(())
32025    }
32026
32027    fn is_empty_element(&self) -> bool {
32028        false
32029    }
32030}
32031
32032impl ToXml for CTDocPartName {
32033    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
32034        #[allow(unused_mut)]
32035        let mut start = start;
32036        {
32037            let val = &self.value;
32038            start.push_attribute(("w:val", val.as_str()));
32039        }
32040        #[cfg(feature = "wml-settings")]
32041        if let Some(ref val) = self.decorated {
32042            {
32043                let s = val.to_string();
32044                start.push_attribute(("w:decorated", s.as_str()));
32045            }
32046        }
32047        #[cfg(feature = "extra-attrs")]
32048        for (key, value) in &self.extra_attrs {
32049            start.push_attribute((key.as_str(), value.as_str()));
32050        }
32051        start
32052    }
32053
32054    fn is_empty_element(&self) -> bool {
32055        true
32056    }
32057}
32058
32059impl ToXml for CTDocPartPr {
32060    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
32061        #[cfg(feature = "extra-children")]
32062        let mut extra_iter = self.extra_children.iter().peekable();
32063        #[cfg(feature = "extra-children")]
32064        let mut emit_idx: usize = 0;
32065        #[cfg(feature = "extra-children")]
32066        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
32067            extra_iter
32068                .next()
32069                .unwrap()
32070                .node
32071                .write_to(writer)
32072                .map_err(SerializeError::from)?;
32073        }
32074        #[cfg(feature = "wml-settings")]
32075        {
32076            let val = &self.name;
32077            val.write_element("w:name", writer)?;
32078        }
32079        #[cfg(feature = "extra-children")]
32080        {
32081            emit_idx += 1;
32082        }
32083        #[cfg(feature = "extra-children")]
32084        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
32085            extra_iter
32086                .next()
32087                .unwrap()
32088                .node
32089                .write_to(writer)
32090                .map_err(SerializeError::from)?;
32091        }
32092        #[cfg(feature = "wml-settings")]
32093        if let Some(ref val) = self.style {
32094            val.write_element("w:style", writer)?;
32095        }
32096        #[cfg(feature = "extra-children")]
32097        {
32098            emit_idx += 1;
32099        }
32100        #[cfg(feature = "extra-children")]
32101        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
32102            extra_iter
32103                .next()
32104                .unwrap()
32105                .node
32106                .write_to(writer)
32107                .map_err(SerializeError::from)?;
32108        }
32109        #[cfg(feature = "wml-settings")]
32110        if let Some(ref val) = self.category {
32111            val.write_element("w:category", writer)?;
32112        }
32113        #[cfg(feature = "extra-children")]
32114        {
32115            emit_idx += 1;
32116        }
32117        #[cfg(feature = "extra-children")]
32118        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
32119            extra_iter
32120                .next()
32121                .unwrap()
32122                .node
32123                .write_to(writer)
32124                .map_err(SerializeError::from)?;
32125        }
32126        #[cfg(feature = "wml-settings")]
32127        if let Some(ref val) = self.types {
32128            val.write_element("w:types", writer)?;
32129        }
32130        #[cfg(feature = "extra-children")]
32131        {
32132            emit_idx += 1;
32133        }
32134        #[cfg(feature = "extra-children")]
32135        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
32136            extra_iter
32137                .next()
32138                .unwrap()
32139                .node
32140                .write_to(writer)
32141                .map_err(SerializeError::from)?;
32142        }
32143        #[cfg(feature = "wml-settings")]
32144        if let Some(ref val) = self.behaviors {
32145            val.write_element("w:behaviors", writer)?;
32146        }
32147        #[cfg(feature = "extra-children")]
32148        {
32149            emit_idx += 1;
32150        }
32151        #[cfg(feature = "extra-children")]
32152        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
32153            extra_iter
32154                .next()
32155                .unwrap()
32156                .node
32157                .write_to(writer)
32158                .map_err(SerializeError::from)?;
32159        }
32160        #[cfg(feature = "wml-settings")]
32161        if let Some(ref val) = self.description {
32162            val.write_element("w:description", writer)?;
32163        }
32164        #[cfg(feature = "extra-children")]
32165        {
32166            emit_idx += 1;
32167        }
32168        #[cfg(feature = "extra-children")]
32169        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
32170            extra_iter
32171                .next()
32172                .unwrap()
32173                .node
32174                .write_to(writer)
32175                .map_err(SerializeError::from)?;
32176        }
32177        #[cfg(feature = "wml-settings")]
32178        if let Some(ref val) = self.guid {
32179            val.write_element("w:guid", writer)?;
32180        }
32181        #[cfg(feature = "extra-children")]
32182        {
32183            emit_idx += 1;
32184        }
32185        #[cfg(feature = "extra-children")]
32186        for extra in extra_iter {
32187            extra.node.write_to(writer).map_err(SerializeError::from)?;
32188        }
32189        Ok(())
32190    }
32191
32192    fn is_empty_element(&self) -> bool {
32193        #[cfg(feature = "wml-settings")]
32194        return false;
32195        #[cfg(feature = "wml-settings")]
32196        if self.style.is_some() {
32197            return false;
32198        }
32199        #[cfg(feature = "wml-settings")]
32200        if self.category.is_some() {
32201            return false;
32202        }
32203        #[cfg(feature = "wml-settings")]
32204        if self.types.is_some() {
32205            return false;
32206        }
32207        #[cfg(feature = "wml-settings")]
32208        if self.behaviors.is_some() {
32209            return false;
32210        }
32211        #[cfg(feature = "wml-settings")]
32212        if self.description.is_some() {
32213            return false;
32214        }
32215        #[cfg(feature = "wml-settings")]
32216        if self.guid.is_some() {
32217            return false;
32218        }
32219        #[cfg(feature = "extra-children")]
32220        if !self.extra_children.is_empty() {
32221            return false;
32222        }
32223        true
32224    }
32225}
32226
32227impl ToXml for CTDocPart {
32228    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
32229        #[cfg(feature = "extra-children")]
32230        let mut extra_iter = self.extra_children.iter().peekable();
32231        #[cfg(feature = "extra-children")]
32232        let mut emit_idx: usize = 0;
32233        #[cfg(feature = "extra-children")]
32234        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
32235            extra_iter
32236                .next()
32237                .unwrap()
32238                .node
32239                .write_to(writer)
32240                .map_err(SerializeError::from)?;
32241        }
32242        #[cfg(feature = "wml-settings")]
32243        if let Some(ref val) = self.doc_part_pr {
32244            val.write_element("w:docPartPr", writer)?;
32245        }
32246        #[cfg(feature = "extra-children")]
32247        {
32248            emit_idx += 1;
32249        }
32250        #[cfg(feature = "extra-children")]
32251        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
32252            extra_iter
32253                .next()
32254                .unwrap()
32255                .node
32256                .write_to(writer)
32257                .map_err(SerializeError::from)?;
32258        }
32259        #[cfg(feature = "wml-settings")]
32260        if let Some(ref val) = self.doc_part_body {
32261            val.write_element("w:docPartBody", writer)?;
32262        }
32263        #[cfg(feature = "extra-children")]
32264        {
32265            emit_idx += 1;
32266        }
32267        #[cfg(feature = "extra-children")]
32268        for extra in extra_iter {
32269            extra.node.write_to(writer).map_err(SerializeError::from)?;
32270        }
32271        Ok(())
32272    }
32273
32274    fn is_empty_element(&self) -> bool {
32275        #[cfg(feature = "wml-settings")]
32276        if self.doc_part_pr.is_some() {
32277            return false;
32278        }
32279        #[cfg(feature = "wml-settings")]
32280        if self.doc_part_body.is_some() {
32281            return false;
32282        }
32283        #[cfg(feature = "extra-children")]
32284        if !self.extra_children.is_empty() {
32285            return false;
32286        }
32287        true
32288    }
32289}
32290
32291impl ToXml for CTDocParts {
32292    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
32293        #[cfg(feature = "extra-children")]
32294        let mut extra_iter = self.extra_children.iter().peekable();
32295        #[cfg(feature = "extra-children")]
32296        let mut emit_idx: usize = 0;
32297        #[cfg(feature = "wml-settings")]
32298        for item in &self.doc_part {
32299            #[cfg(feature = "extra-children")]
32300            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
32301                extra_iter
32302                    .next()
32303                    .unwrap()
32304                    .node
32305                    .write_to(writer)
32306                    .map_err(SerializeError::from)?;
32307            }
32308            item.write_element("w:docPart", writer)?;
32309            #[cfg(feature = "extra-children")]
32310            {
32311                emit_idx += 1;
32312            }
32313        }
32314        #[cfg(feature = "extra-children")]
32315        for extra in extra_iter {
32316            extra.node.write_to(writer).map_err(SerializeError::from)?;
32317        }
32318        Ok(())
32319    }
32320
32321    fn is_empty_element(&self) -> bool {
32322        #[cfg(feature = "wml-settings")]
32323        if !self.doc_part.is_empty() {
32324            return false;
32325        }
32326        #[cfg(feature = "extra-children")]
32327        if !self.extra_children.is_empty() {
32328            return false;
32329        }
32330        true
32331    }
32332}
32333
32334impl ToXml for CTCaption {
32335    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
32336        #[allow(unused_mut)]
32337        let mut start = start;
32338        #[cfg(feature = "wml-settings")]
32339        {
32340            let val = &self.name;
32341            start.push_attribute(("w:name", val.as_str()));
32342        }
32343        #[cfg(feature = "wml-settings")]
32344        if let Some(ref val) = self.pos {
32345            {
32346                let s = val.to_string();
32347                start.push_attribute(("w:pos", s.as_str()));
32348            }
32349        }
32350        #[cfg(feature = "wml-settings")]
32351        if let Some(ref val) = self.chap_num {
32352            {
32353                let s = val.to_string();
32354                start.push_attribute(("w:chapNum", s.as_str()));
32355            }
32356        }
32357        #[cfg(feature = "wml-settings")]
32358        if let Some(ref val) = self.heading {
32359            {
32360                let s = val.to_string();
32361                start.push_attribute(("w:heading", s.as_str()));
32362            }
32363        }
32364        #[cfg(feature = "wml-settings")]
32365        if let Some(ref val) = self.no_label {
32366            {
32367                let s = val.to_string();
32368                start.push_attribute(("w:noLabel", s.as_str()));
32369            }
32370        }
32371        #[cfg(feature = "wml-settings")]
32372        if let Some(ref val) = self.num_fmt {
32373            {
32374                let s = val.to_string();
32375                start.push_attribute(("w:numFmt", s.as_str()));
32376            }
32377        }
32378        #[cfg(feature = "wml-settings")]
32379        if let Some(ref val) = self.sep {
32380            {
32381                let s = val.to_string();
32382                start.push_attribute(("w:sep", s.as_str()));
32383            }
32384        }
32385        #[cfg(feature = "extra-attrs")]
32386        for (key, value) in &self.extra_attrs {
32387            start.push_attribute((key.as_str(), value.as_str()));
32388        }
32389        start
32390    }
32391
32392    fn is_empty_element(&self) -> bool {
32393        true
32394    }
32395}
32396
32397impl ToXml for CTAutoCaption {
32398    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
32399        #[allow(unused_mut)]
32400        let mut start = start;
32401        #[cfg(feature = "wml-settings")]
32402        {
32403            let val = &self.name;
32404            start.push_attribute(("w:name", val.as_str()));
32405        }
32406        #[cfg(feature = "wml-settings")]
32407        {
32408            let val = &self.caption;
32409            start.push_attribute(("w:caption", val.as_str()));
32410        }
32411        #[cfg(feature = "extra-attrs")]
32412        for (key, value) in &self.extra_attrs {
32413            start.push_attribute((key.as_str(), value.as_str()));
32414        }
32415        start
32416    }
32417
32418    fn is_empty_element(&self) -> bool {
32419        true
32420    }
32421}
32422
32423impl ToXml for CTAutoCaptions {
32424    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
32425        #[cfg(feature = "extra-children")]
32426        let mut extra_iter = self.extra_children.iter().peekable();
32427        #[cfg(feature = "extra-children")]
32428        let mut emit_idx: usize = 0;
32429        #[cfg(feature = "wml-settings")]
32430        for item in &self.auto_caption {
32431            #[cfg(feature = "extra-children")]
32432            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
32433                extra_iter
32434                    .next()
32435                    .unwrap()
32436                    .node
32437                    .write_to(writer)
32438                    .map_err(SerializeError::from)?;
32439            }
32440            item.write_element("w:autoCaption", writer)?;
32441            #[cfg(feature = "extra-children")]
32442            {
32443                emit_idx += 1;
32444            }
32445        }
32446        #[cfg(feature = "extra-children")]
32447        for extra in extra_iter {
32448            extra.node.write_to(writer).map_err(SerializeError::from)?;
32449        }
32450        Ok(())
32451    }
32452
32453    fn is_empty_element(&self) -> bool {
32454        #[cfg(feature = "wml-settings")]
32455        if !self.auto_caption.is_empty() {
32456            return false;
32457        }
32458        #[cfg(feature = "extra-children")]
32459        if !self.extra_children.is_empty() {
32460            return false;
32461        }
32462        true
32463    }
32464}
32465
32466impl ToXml for CTCaptions {
32467    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
32468        #[cfg(feature = "extra-children")]
32469        let mut extra_iter = self.extra_children.iter().peekable();
32470        #[cfg(feature = "extra-children")]
32471        let mut emit_idx: usize = 0;
32472        #[cfg(feature = "wml-settings")]
32473        for item in &self.caption {
32474            #[cfg(feature = "extra-children")]
32475            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
32476                extra_iter
32477                    .next()
32478                    .unwrap()
32479                    .node
32480                    .write_to(writer)
32481                    .map_err(SerializeError::from)?;
32482            }
32483            item.write_element("w:caption", writer)?;
32484            #[cfg(feature = "extra-children")]
32485            {
32486                emit_idx += 1;
32487            }
32488        }
32489        #[cfg(feature = "extra-children")]
32490        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
32491            extra_iter
32492                .next()
32493                .unwrap()
32494                .node
32495                .write_to(writer)
32496                .map_err(SerializeError::from)?;
32497        }
32498        #[cfg(feature = "wml-settings")]
32499        if let Some(ref val) = self.auto_captions {
32500            val.write_element("w:autoCaptions", writer)?;
32501        }
32502        #[cfg(feature = "extra-children")]
32503        {
32504            emit_idx += 1;
32505        }
32506        #[cfg(feature = "extra-children")]
32507        for extra in extra_iter {
32508            extra.node.write_to(writer).map_err(SerializeError::from)?;
32509        }
32510        Ok(())
32511    }
32512
32513    fn is_empty_element(&self) -> bool {
32514        #[cfg(feature = "wml-settings")]
32515        if !self.caption.is_empty() {
32516            return false;
32517        }
32518        #[cfg(feature = "wml-settings")]
32519        if self.auto_captions.is_some() {
32520            return false;
32521        }
32522        #[cfg(feature = "extra-children")]
32523        if !self.extra_children.is_empty() {
32524            return false;
32525        }
32526        true
32527    }
32528}
32529
32530impl ToXml for CTDocumentBase {
32531    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
32532        #[cfg(feature = "extra-children")]
32533        let mut extra_iter = self.extra_children.iter().peekable();
32534        #[cfg(feature = "extra-children")]
32535        let mut emit_idx: usize = 0;
32536        #[cfg(feature = "extra-children")]
32537        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
32538            extra_iter
32539                .next()
32540                .unwrap()
32541                .node
32542                .write_to(writer)
32543                .map_err(SerializeError::from)?;
32544        }
32545        #[cfg(feature = "wml-styling")]
32546        if let Some(ref val) = self.background {
32547            val.write_element("w:background", writer)?;
32548        }
32549        #[cfg(feature = "extra-children")]
32550        {
32551            emit_idx += 1;
32552        }
32553        #[cfg(feature = "extra-children")]
32554        for extra in extra_iter {
32555            extra.node.write_to(writer).map_err(SerializeError::from)?;
32556        }
32557        Ok(())
32558    }
32559
32560    fn is_empty_element(&self) -> bool {
32561        #[cfg(feature = "wml-styling")]
32562        if self.background.is_some() {
32563            return false;
32564        }
32565        #[cfg(feature = "extra-children")]
32566        if !self.extra_children.is_empty() {
32567            return false;
32568        }
32569        true
32570    }
32571}
32572
32573impl ToXml for Document {
32574    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
32575        #[allow(unused_mut)]
32576        let mut start = start;
32577        if let Some(ref val) = self.conformance {
32578            {
32579                let s = val.to_string();
32580                start.push_attribute(("w:conformance", s.as_str()));
32581            }
32582        }
32583        #[cfg(feature = "extra-attrs")]
32584        for (key, value) in &self.extra_attrs {
32585            start.push_attribute((key.as_str(), value.as_str()));
32586        }
32587        start
32588    }
32589
32590    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
32591        #[cfg(feature = "extra-children")]
32592        let mut extra_iter = self.extra_children.iter().peekable();
32593        #[cfg(feature = "extra-children")]
32594        let mut emit_idx: usize = 0;
32595        #[cfg(feature = "extra-children")]
32596        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
32597            extra_iter
32598                .next()
32599                .unwrap()
32600                .node
32601                .write_to(writer)
32602                .map_err(SerializeError::from)?;
32603        }
32604        #[cfg(feature = "wml-styling")]
32605        if let Some(ref val) = self.background {
32606            val.write_element("w:background", writer)?;
32607        }
32608        #[cfg(feature = "extra-children")]
32609        {
32610            emit_idx += 1;
32611        }
32612        #[cfg(feature = "extra-children")]
32613        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
32614            extra_iter
32615                .next()
32616                .unwrap()
32617                .node
32618                .write_to(writer)
32619                .map_err(SerializeError::from)?;
32620        }
32621        if let Some(ref val) = self.body {
32622            val.write_element("w:body", writer)?;
32623        }
32624        #[cfg(feature = "extra-children")]
32625        {
32626            emit_idx += 1;
32627        }
32628        #[cfg(feature = "extra-children")]
32629        for extra in extra_iter {
32630            extra.node.write_to(writer).map_err(SerializeError::from)?;
32631        }
32632        Ok(())
32633    }
32634
32635    fn is_empty_element(&self) -> bool {
32636        #[cfg(feature = "wml-styling")]
32637        if self.background.is_some() {
32638            return false;
32639        }
32640        if self.body.is_some() {
32641            return false;
32642        }
32643        #[cfg(feature = "extra-children")]
32644        if !self.extra_children.is_empty() {
32645            return false;
32646        }
32647        true
32648    }
32649}
32650
32651impl ToXml for CTGlossaryDocument {
32652    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
32653        #[cfg(feature = "extra-children")]
32654        let mut extra_iter = self.extra_children.iter().peekable();
32655        #[cfg(feature = "extra-children")]
32656        let mut emit_idx: usize = 0;
32657        #[cfg(feature = "extra-children")]
32658        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
32659            extra_iter
32660                .next()
32661                .unwrap()
32662                .node
32663                .write_to(writer)
32664                .map_err(SerializeError::from)?;
32665        }
32666        if let Some(ref val) = self.background {
32667            val.write_element("w:background", writer)?;
32668        }
32669        #[cfg(feature = "extra-children")]
32670        {
32671            emit_idx += 1;
32672        }
32673        #[cfg(feature = "extra-children")]
32674        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
32675            extra_iter
32676                .next()
32677                .unwrap()
32678                .node
32679                .write_to(writer)
32680                .map_err(SerializeError::from)?;
32681        }
32682        #[cfg(feature = "wml-settings")]
32683        if let Some(ref val) = self.doc_parts {
32684            val.write_element("w:docParts", writer)?;
32685        }
32686        #[cfg(feature = "extra-children")]
32687        {
32688            emit_idx += 1;
32689        }
32690        #[cfg(feature = "extra-children")]
32691        for extra in extra_iter {
32692            extra.node.write_to(writer).map_err(SerializeError::from)?;
32693        }
32694        Ok(())
32695    }
32696
32697    fn is_empty_element(&self) -> bool {
32698        if self.background.is_some() {
32699            return false;
32700        }
32701        #[cfg(feature = "wml-settings")]
32702        if self.doc_parts.is_some() {
32703            return false;
32704        }
32705        #[cfg(feature = "extra-children")]
32706        if !self.extra_children.is_empty() {
32707            return false;
32708        }
32709        true
32710    }
32711}
32712
32713impl ToXml for WAnyVmlOffice {
32714    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
32715        #[cfg(feature = "extra-children")]
32716        for child in &self.extra_children {
32717            child.node.write_to(writer).map_err(SerializeError::from)?;
32718        }
32719        Ok(())
32720    }
32721
32722    fn is_empty_element(&self) -> bool {
32723        #[cfg(feature = "extra-children")]
32724        if !self.extra_children.is_empty() {
32725            return false;
32726        }
32727        true
32728    }
32729}
32730
32731impl ToXml for WAnyVmlVml {
32732    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
32733        #[cfg(feature = "extra-children")]
32734        for child in &self.extra_children {
32735            child.node.write_to(writer).map_err(SerializeError::from)?;
32736        }
32737        Ok(())
32738    }
32739
32740    fn is_empty_element(&self) -> bool {
32741        #[cfg(feature = "extra-children")]
32742        if !self.extra_children.is_empty() {
32743            return false;
32744        }
32745        true
32746    }
32747}