Skip to main content

fidl_next_common_fuchsia_component_decl/
fidl_next_common_fuchsia_component_decl.rs

1// DO NOT EDIT: This file is machine-generated by fidlgen
2#![warn(clippy::all)]
3#![allow(unused_parens, unused_variables, unused_mut, unused_imports, unreachable_code)]
4
5pub mod natural {
6
7    #[doc = " The kinds of offers that can target the children in a collection.\n"]
8    #[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
9    #[repr(u32)]
10    pub enum AllowedOffers {
11        StaticOnly = 1,
12        StaticAndDynamic = 2,
13    }
14    impl ::core::convert::TryFrom<u32> for AllowedOffers {
15        type Error = ::fidl_next::UnknownStrictEnumMemberError;
16        fn try_from(
17            value: u32,
18        ) -> ::core::result::Result<Self, ::fidl_next::UnknownStrictEnumMemberError> {
19            match value {
20                1 => Ok(Self::StaticOnly),
21                2 => Ok(Self::StaticAndDynamic),
22
23                _ => Err(::fidl_next::UnknownStrictEnumMemberError::new(value.into())),
24            }
25        }
26    }
27
28    unsafe impl<___E> ::fidl_next::Encode<crate::wire::AllowedOffers, ___E> for AllowedOffers
29    where
30        ___E: ?Sized,
31    {
32        #[inline]
33        fn encode(
34            self,
35            encoder: &mut ___E,
36            out: &mut ::core::mem::MaybeUninit<crate::wire::AllowedOffers>,
37            _: (),
38        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
39            ::fidl_next::Encode::encode(&self, encoder, out, ())
40        }
41    }
42
43    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::AllowedOffers, ___E> for &'a AllowedOffers
44    where
45        ___E: ?Sized,
46    {
47        #[inline]
48        fn encode(
49            self,
50            encoder: &mut ___E,
51            out: &mut ::core::mem::MaybeUninit<crate::wire::AllowedOffers>,
52            _: (),
53        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
54            ::fidl_next::munge!(let crate::wire::AllowedOffers { value } = out);
55            let _ = value.write(::fidl_next::wire::Uint32::from(match *self {
56                AllowedOffers::StaticOnly => 1,
57
58                AllowedOffers::StaticAndDynamic => 2,
59            }));
60
61            Ok(())
62        }
63    }
64
65    impl ::core::convert::From<crate::wire::AllowedOffers> for AllowedOffers {
66        fn from(wire: crate::wire::AllowedOffers) -> Self {
67            match u32::from(wire.value) {
68                1 => Self::StaticOnly,
69
70                2 => Self::StaticAndDynamic,
71
72                _ => unsafe { ::core::hint::unreachable_unchecked() },
73            }
74        }
75    }
76
77    impl ::fidl_next::FromWire<crate::wire::AllowedOffers> for AllowedOffers {
78        #[inline]
79        fn from_wire(wire: crate::wire::AllowedOffers) -> Self {
80            Self::from(wire)
81        }
82    }
83
84    impl ::fidl_next::FromWireRef<crate::wire::AllowedOffers> for AllowedOffers {
85        #[inline]
86        fn from_wire_ref(wire: &crate::wire::AllowedOffers) -> Self {
87            Self::from(*wire)
88        }
89    }
90
91    #[doc = " Describes the expected availability of the capability.\n\n Some capabilities may not be present on all system configurations. In those\n cases, the availability will be declared as `OPTIONAL` along the chains of\n exposes/offers/uses, and the capability would be routed from `void` on\n system configurations where it does not make sense to route or provide a\n particular capability (e.g. graphical capabilities on a headless system).\n"]
92    #[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
93    #[repr(u32)]
94    pub enum Availability {
95        Required = 1,
96        Optional = 2,
97        SameAsTarget = 3,
98        Transitional = 4,
99    }
100    impl ::core::convert::TryFrom<u32> for Availability {
101        type Error = ::fidl_next::UnknownStrictEnumMemberError;
102        fn try_from(
103            value: u32,
104        ) -> ::core::result::Result<Self, ::fidl_next::UnknownStrictEnumMemberError> {
105            match value {
106                1 => Ok(Self::Required),
107                2 => Ok(Self::Optional),
108                3 => Ok(Self::SameAsTarget),
109                4 => Ok(Self::Transitional),
110
111                _ => Err(::fidl_next::UnknownStrictEnumMemberError::new(value.into())),
112            }
113        }
114    }
115
116    unsafe impl<___E> ::fidl_next::Encode<crate::wire::Availability, ___E> for Availability
117    where
118        ___E: ?Sized,
119    {
120        #[inline]
121        fn encode(
122            self,
123            encoder: &mut ___E,
124            out: &mut ::core::mem::MaybeUninit<crate::wire::Availability>,
125            _: (),
126        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
127            ::fidl_next::Encode::encode(&self, encoder, out, ())
128        }
129    }
130
131    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::Availability, ___E> for &'a Availability
132    where
133        ___E: ?Sized,
134    {
135        #[inline]
136        fn encode(
137            self,
138            encoder: &mut ___E,
139            out: &mut ::core::mem::MaybeUninit<crate::wire::Availability>,
140            _: (),
141        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
142            ::fidl_next::munge!(let crate::wire::Availability { value } = out);
143            let _ = value.write(::fidl_next::wire::Uint32::from(match *self {
144                Availability::Required => 1,
145
146                Availability::Optional => 2,
147
148                Availability::SameAsTarget => 3,
149
150                Availability::Transitional => 4,
151            }));
152
153            Ok(())
154        }
155    }
156
157    impl ::core::convert::From<crate::wire::Availability> for Availability {
158        fn from(wire: crate::wire::Availability) -> Self {
159            match u32::from(wire.value) {
160                1 => Self::Required,
161
162                2 => Self::Optional,
163
164                3 => Self::SameAsTarget,
165
166                4 => Self::Transitional,
167
168                _ => unsafe { ::core::hint::unreachable_unchecked() },
169            }
170        }
171    }
172
173    impl ::fidl_next::FromWire<crate::wire::Availability> for Availability {
174        #[inline]
175        fn from_wire(wire: crate::wire::Availability) -> Self {
176            Self::from(wire)
177        }
178    }
179
180    impl ::fidl_next::FromWireRef<crate::wire::Availability> for Availability {
181        #[inline]
182        fn from_wire_ref(wire: &crate::wire::Availability) -> Self {
183            Self::from(*wire)
184        }
185    }
186
187    pub type Name = ::std::string::String;
188
189    #[doc = " Declares a service capability backed by this component.\n\n To learn more about services, see:\n https://fuchsia.dev/fuchsia-src/glossary#service\n"]
190    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
191    pub struct Service {
192        pub name: ::core::option::Option<::std::string::String>,
193
194        pub source_path: ::core::option::Option<::std::string::String>,
195    }
196
197    impl Service {
198        fn __max_ordinal(&self) -> usize {
199            if self.source_path.is_some() {
200                return 2;
201            }
202
203            if self.name.is_some() {
204                return 1;
205            }
206
207            0
208        }
209    }
210
211    unsafe impl<___E> ::fidl_next::Encode<crate::wire::Service<'static>, ___E> for Service
212    where
213        ___E: ::fidl_next::Encoder + ?Sized,
214    {
215        #[inline]
216        fn encode(
217            mut self,
218            encoder: &mut ___E,
219            out: &mut ::core::mem::MaybeUninit<crate::wire::Service<'static>>,
220            _: (),
221        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
222            ::fidl_next::munge!(let crate::wire::Service { table } = out);
223
224            let max_ord = self.__max_ordinal();
225
226            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
227            ::fidl_next::Wire::zero_padding(&mut out);
228
229            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
230                ::fidl_next::wire::Envelope,
231            >(encoder, max_ord);
232
233            for i in 1..=max_ord {
234                match i {
235                    2 => {
236                        if let Some(value) = self.source_path.take() {
237                            ::fidl_next::wire::Envelope::encode_value::<
238                                ::fidl_next::wire::String<'static>,
239                                ___E,
240                            >(
241                                value, preallocated.encoder, &mut out, 1024
242                            )?;
243                        } else {
244                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
245                        }
246                    }
247
248                    1 => {
249                        if let Some(value) = self.name.take() {
250                            ::fidl_next::wire::Envelope::encode_value::<
251                                ::fidl_next::wire::String<'static>,
252                                ___E,
253                            >(
254                                value, preallocated.encoder, &mut out, 100
255                            )?;
256                        } else {
257                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
258                        }
259                    }
260
261                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
262                }
263                unsafe {
264                    preallocated.write_next(out.assume_init_ref());
265                }
266            }
267
268            ::fidl_next::wire::Table::encode_len(table, max_ord);
269
270            Ok(())
271        }
272    }
273
274    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::Service<'static>, ___E> for &'a Service
275    where
276        ___E: ::fidl_next::Encoder + ?Sized,
277    {
278        #[inline]
279        fn encode(
280            self,
281            encoder: &mut ___E,
282            out: &mut ::core::mem::MaybeUninit<crate::wire::Service<'static>>,
283            _: (),
284        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
285            ::fidl_next::munge!(let crate::wire::Service { table } = out);
286
287            let max_ord = self.__max_ordinal();
288
289            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
290            ::fidl_next::Wire::zero_padding(&mut out);
291
292            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
293                ::fidl_next::wire::Envelope,
294            >(encoder, max_ord);
295
296            for i in 1..=max_ord {
297                match i {
298                    2 => {
299                        if let Some(value) = &self.source_path {
300                            ::fidl_next::wire::Envelope::encode_value::<
301                                ::fidl_next::wire::String<'static>,
302                                ___E,
303                            >(
304                                value, preallocated.encoder, &mut out, 1024
305                            )?;
306                        } else {
307                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
308                        }
309                    }
310
311                    1 => {
312                        if let Some(value) = &self.name {
313                            ::fidl_next::wire::Envelope::encode_value::<
314                                ::fidl_next::wire::String<'static>,
315                                ___E,
316                            >(
317                                value, preallocated.encoder, &mut out, 100
318                            )?;
319                        } else {
320                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
321                        }
322                    }
323
324                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
325                }
326                unsafe {
327                    preallocated.write_next(out.assume_init_ref());
328                }
329            }
330
331            ::fidl_next::wire::Table::encode_len(table, max_ord);
332
333            Ok(())
334        }
335    }
336
337    impl<'de> ::fidl_next::FromWire<crate::wire::Service<'de>> for Service {
338        #[inline]
339        fn from_wire(wire_: crate::wire::Service<'de>) -> Self {
340            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
341
342            let name = wire_.table.get(1);
343
344            let source_path = wire_.table.get(2);
345
346            Self {
347                name: name.map(|envelope| {
348                    ::fidl_next::FromWire::from_wire(unsafe {
349                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
350                    })
351                }),
352
353                source_path: source_path.map(|envelope| {
354                    ::fidl_next::FromWire::from_wire(unsafe {
355                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
356                    })
357                }),
358            }
359        }
360    }
361
362    impl<'de> ::fidl_next::FromWireRef<crate::wire::Service<'de>> for Service {
363        #[inline]
364        fn from_wire_ref(wire: &crate::wire::Service<'de>) -> Self {
365            Self {
366                name: wire.table.get(1).map(|envelope| {
367                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
368                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
369                    })
370                }),
371
372                source_path: wire.table.get(2).map(|envelope| {
373                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
374                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
375                    })
376                }),
377            }
378        }
379    }
380
381    #[doc = " Declares a directory capability backed by this component.\n\n To learn more about directories, see:\n https://fuchsia.dev/fuchsia-src/glossary#directory\n"]
382    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
383    pub struct Directory {
384        pub name: ::core::option::Option<::std::string::String>,
385
386        pub source_path: ::core::option::Option<::std::string::String>,
387
388        pub rights: ::core::option::Option<::fidl_next_common_fuchsia_io::natural::Operations>,
389    }
390
391    impl Directory {
392        fn __max_ordinal(&self) -> usize {
393            if self.rights.is_some() {
394                return 3;
395            }
396
397            if self.source_path.is_some() {
398                return 2;
399            }
400
401            if self.name.is_some() {
402                return 1;
403            }
404
405            0
406        }
407    }
408
409    unsafe impl<___E> ::fidl_next::Encode<crate::wire::Directory<'static>, ___E> for Directory
410    where
411        ___E: ::fidl_next::Encoder + ?Sized,
412    {
413        #[inline]
414        fn encode(
415            mut self,
416            encoder: &mut ___E,
417            out: &mut ::core::mem::MaybeUninit<crate::wire::Directory<'static>>,
418            _: (),
419        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
420            ::fidl_next::munge!(let crate::wire::Directory { table } = out);
421
422            let max_ord = self.__max_ordinal();
423
424            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
425            ::fidl_next::Wire::zero_padding(&mut out);
426
427            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
428                ::fidl_next::wire::Envelope,
429            >(encoder, max_ord);
430
431            for i in 1..=max_ord {
432                match i {
433                    3 => {
434                        if let Some(value) = self.rights.take() {
435                            ::fidl_next::wire::Envelope::encode_value::<
436                                ::fidl_next_common_fuchsia_io::wire::Operations,
437                                ___E,
438                            >(
439                                value, preallocated.encoder, &mut out, ()
440                            )?;
441                        } else {
442                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
443                        }
444                    }
445
446                    2 => {
447                        if let Some(value) = self.source_path.take() {
448                            ::fidl_next::wire::Envelope::encode_value::<
449                                ::fidl_next::wire::String<'static>,
450                                ___E,
451                            >(
452                                value, preallocated.encoder, &mut out, 1024
453                            )?;
454                        } else {
455                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
456                        }
457                    }
458
459                    1 => {
460                        if let Some(value) = self.name.take() {
461                            ::fidl_next::wire::Envelope::encode_value::<
462                                ::fidl_next::wire::String<'static>,
463                                ___E,
464                            >(
465                                value, preallocated.encoder, &mut out, 100
466                            )?;
467                        } else {
468                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
469                        }
470                    }
471
472                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
473                }
474                unsafe {
475                    preallocated.write_next(out.assume_init_ref());
476                }
477            }
478
479            ::fidl_next::wire::Table::encode_len(table, max_ord);
480
481            Ok(())
482        }
483    }
484
485    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::Directory<'static>, ___E> for &'a Directory
486    where
487        ___E: ::fidl_next::Encoder + ?Sized,
488    {
489        #[inline]
490        fn encode(
491            self,
492            encoder: &mut ___E,
493            out: &mut ::core::mem::MaybeUninit<crate::wire::Directory<'static>>,
494            _: (),
495        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
496            ::fidl_next::munge!(let crate::wire::Directory { table } = out);
497
498            let max_ord = self.__max_ordinal();
499
500            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
501            ::fidl_next::Wire::zero_padding(&mut out);
502
503            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
504                ::fidl_next::wire::Envelope,
505            >(encoder, max_ord);
506
507            for i in 1..=max_ord {
508                match i {
509                    3 => {
510                        if let Some(value) = &self.rights {
511                            ::fidl_next::wire::Envelope::encode_value::<
512                                ::fidl_next_common_fuchsia_io::wire::Operations,
513                                ___E,
514                            >(
515                                value, preallocated.encoder, &mut out, ()
516                            )?;
517                        } else {
518                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
519                        }
520                    }
521
522                    2 => {
523                        if let Some(value) = &self.source_path {
524                            ::fidl_next::wire::Envelope::encode_value::<
525                                ::fidl_next::wire::String<'static>,
526                                ___E,
527                            >(
528                                value, preallocated.encoder, &mut out, 1024
529                            )?;
530                        } else {
531                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
532                        }
533                    }
534
535                    1 => {
536                        if let Some(value) = &self.name {
537                            ::fidl_next::wire::Envelope::encode_value::<
538                                ::fidl_next::wire::String<'static>,
539                                ___E,
540                            >(
541                                value, preallocated.encoder, &mut out, 100
542                            )?;
543                        } else {
544                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
545                        }
546                    }
547
548                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
549                }
550                unsafe {
551                    preallocated.write_next(out.assume_init_ref());
552                }
553            }
554
555            ::fidl_next::wire::Table::encode_len(table, max_ord);
556
557            Ok(())
558        }
559    }
560
561    impl<'de> ::fidl_next::FromWire<crate::wire::Directory<'de>> for Directory {
562        #[inline]
563        fn from_wire(wire_: crate::wire::Directory<'de>) -> Self {
564            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
565
566            let name = wire_.table.get(1);
567
568            let source_path = wire_.table.get(2);
569
570            let rights = wire_.table.get(3);
571
572            Self {
573                name: name.map(|envelope| {
574                    ::fidl_next::FromWire::from_wire(unsafe {
575                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
576                    })
577                }),
578
579                source_path: source_path.map(|envelope| {
580                    ::fidl_next::FromWire::from_wire(unsafe {
581                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
582                    })
583                }),
584
585                rights: rights.map(|envelope| {
586                    ::fidl_next::FromWire::from_wire(unsafe {
587                        envelope.read_unchecked::<::fidl_next_common_fuchsia_io::wire::Operations>()
588                    })
589                }),
590            }
591        }
592    }
593
594    impl<'de> ::fidl_next::FromWireRef<crate::wire::Directory<'de>> for Directory {
595        #[inline]
596        fn from_wire_ref(wire: &crate::wire::Directory<'de>) -> Self {
597            Self {
598                name: wire.table.get(1).map(|envelope| {
599                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
600                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
601                    })
602                }),
603
604                source_path: wire.table.get(2).map(|envelope| {
605                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
606                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
607                    })
608                }),
609
610                rights: wire.table.get(3).map(|envelope| {
611                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
612                        envelope
613                            .deref_unchecked::<::fidl_next_common_fuchsia_io::wire::Operations>()
614                    })
615                }),
616            }
617        }
618    }
619
620    #[doc = " A reference to a component\'s parent instance.\n"]
621    pub type ParentRef = ();
622
623    #[doc = " A reference to the component itself.\n"]
624    pub type SelfRef = ();
625
626    pub type ChildName = ::std::string::String;
627
628    #[doc = " A reference to one of the component\'s child instances.\n"]
629    #[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
630    pub struct ChildRef {
631        pub name: ::std::string::String,
632
633        pub collection: ::core::option::Option<::std::string::String>,
634    }
635
636    unsafe impl<___E> ::fidl_next::Encode<crate::wire::ChildRef<'static>, ___E> for ChildRef
637    where
638        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
639        ___E: ::fidl_next::Encoder,
640    {
641        #[inline]
642        fn encode(
643            self,
644            encoder_: &mut ___E,
645            out_: &mut ::core::mem::MaybeUninit<crate::wire::ChildRef<'static>>,
646            _: (),
647        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
648            ::fidl_next::munge! {
649                let crate::wire::ChildRef {
650                    name,
651                    collection,
652
653                } = out_;
654            }
655
656            ::fidl_next::Encode::encode(self.name, encoder_, name, 1024)?;
657
658            let mut _field = unsafe { ::fidl_next::Slot::new_unchecked(name.as_mut_ptr()) };
659            ::fidl_next::Constrained::validate(_field, 1024)?;
660
661            ::fidl_next::Encode::encode(self.collection, encoder_, collection, 100)?;
662
663            let mut _field = unsafe { ::fidl_next::Slot::new_unchecked(collection.as_mut_ptr()) };
664            ::fidl_next::Constrained::validate(_field, 100)?;
665
666            Ok(())
667        }
668    }
669
670    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::ChildRef<'static>, ___E> for &'a ChildRef
671    where
672        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
673        ___E: ::fidl_next::Encoder,
674    {
675        #[inline]
676        fn encode(
677            self,
678            encoder_: &mut ___E,
679            out_: &mut ::core::mem::MaybeUninit<crate::wire::ChildRef<'static>>,
680            _: (),
681        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
682            ::fidl_next::munge! {
683                let crate::wire::ChildRef {
684                    name,
685                    collection,
686
687                } = out_;
688            }
689
690            ::fidl_next::Encode::encode(&self.name, encoder_, name, 1024)?;
691
692            let mut _field = unsafe { ::fidl_next::Slot::new_unchecked(name.as_mut_ptr()) };
693            ::fidl_next::Constrained::validate(_field, 1024)?;
694
695            ::fidl_next::Encode::encode(&self.collection, encoder_, collection, 100)?;
696
697            let mut _field = unsafe { ::fidl_next::Slot::new_unchecked(collection.as_mut_ptr()) };
698            ::fidl_next::Constrained::validate(_field, 100)?;
699
700            Ok(())
701        }
702    }
703
704    unsafe impl<___E>
705        ::fidl_next::EncodeOption<
706            ::fidl_next::wire::Box<'static, crate::wire::ChildRef<'static>>,
707            ___E,
708        > for ChildRef
709    where
710        ___E: ::fidl_next::Encoder + ?Sized,
711        ChildRef: ::fidl_next::Encode<crate::wire::ChildRef<'static>, ___E>,
712    {
713        #[inline]
714        fn encode_option(
715            this: ::core::option::Option<Self>,
716            encoder: &mut ___E,
717            out: &mut ::core::mem::MaybeUninit<
718                ::fidl_next::wire::Box<'static, crate::wire::ChildRef<'static>>,
719            >,
720            _: (),
721        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
722            if let Some(inner) = this {
723                ::fidl_next::EncoderExt::encode_next(encoder, inner)?;
724                ::fidl_next::wire::Box::encode_present(out);
725            } else {
726                ::fidl_next::wire::Box::encode_absent(out);
727            }
728
729            Ok(())
730        }
731    }
732
733    unsafe impl<'a, ___E>
734        ::fidl_next::EncodeOption<
735            ::fidl_next::wire::Box<'static, crate::wire::ChildRef<'static>>,
736            ___E,
737        > for &'a ChildRef
738    where
739        ___E: ::fidl_next::Encoder + ?Sized,
740        &'a ChildRef: ::fidl_next::Encode<crate::wire::ChildRef<'static>, ___E>,
741    {
742        #[inline]
743        fn encode_option(
744            this: ::core::option::Option<Self>,
745            encoder: &mut ___E,
746            out: &mut ::core::mem::MaybeUninit<
747                ::fidl_next::wire::Box<'static, crate::wire::ChildRef<'static>>,
748            >,
749            _: (),
750        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
751            if let Some(inner) = this {
752                ::fidl_next::EncoderExt::encode_next(encoder, inner)?;
753                ::fidl_next::wire::Box::encode_present(out);
754            } else {
755                ::fidl_next::wire::Box::encode_absent(out);
756            }
757
758            Ok(())
759        }
760    }
761
762    impl<'de> ::fidl_next::FromWire<crate::wire::ChildRef<'de>> for ChildRef {
763        #[inline]
764        fn from_wire(wire: crate::wire::ChildRef<'de>) -> Self {
765            Self {
766                name: ::fidl_next::FromWire::from_wire(wire.name),
767
768                collection: ::fidl_next::FromWire::from_wire(wire.collection),
769            }
770        }
771    }
772
773    impl<'de> ::fidl_next::FromWireRef<crate::wire::ChildRef<'de>> for ChildRef {
774        #[inline]
775        fn from_wire_ref(wire: &crate::wire::ChildRef<'de>) -> Self {
776            Self {
777                name: ::fidl_next::FromWireRef::from_wire_ref(&wire.name),
778
779                collection: ::fidl_next::FromWireRef::from_wire_ref(&wire.collection),
780            }
781        }
782    }
783
784    #[doc = " A reference to one of the component\'s collections.\n"]
785    #[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
786    pub struct CollectionRef {
787        pub name: ::std::string::String,
788    }
789
790    unsafe impl<___E> ::fidl_next::Encode<crate::wire::CollectionRef<'static>, ___E> for CollectionRef
791    where
792        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
793        ___E: ::fidl_next::Encoder,
794    {
795        #[inline]
796        fn encode(
797            self,
798            encoder_: &mut ___E,
799            out_: &mut ::core::mem::MaybeUninit<crate::wire::CollectionRef<'static>>,
800            _: (),
801        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
802            ::fidl_next::munge! {
803                let crate::wire::CollectionRef {
804                    name,
805
806                } = out_;
807            }
808
809            ::fidl_next::Encode::encode(self.name, encoder_, name, 100)?;
810
811            let mut _field = unsafe { ::fidl_next::Slot::new_unchecked(name.as_mut_ptr()) };
812            ::fidl_next::Constrained::validate(_field, 100)?;
813
814            Ok(())
815        }
816    }
817
818    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::CollectionRef<'static>, ___E>
819        for &'a CollectionRef
820    where
821        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
822        ___E: ::fidl_next::Encoder,
823    {
824        #[inline]
825        fn encode(
826            self,
827            encoder_: &mut ___E,
828            out_: &mut ::core::mem::MaybeUninit<crate::wire::CollectionRef<'static>>,
829            _: (),
830        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
831            ::fidl_next::munge! {
832                let crate::wire::CollectionRef {
833                    name,
834
835                } = out_;
836            }
837
838            ::fidl_next::Encode::encode(&self.name, encoder_, name, 100)?;
839
840            let mut _field = unsafe { ::fidl_next::Slot::new_unchecked(name.as_mut_ptr()) };
841            ::fidl_next::Constrained::validate(_field, 100)?;
842
843            Ok(())
844        }
845    }
846
847    unsafe impl<___E>
848        ::fidl_next::EncodeOption<
849            ::fidl_next::wire::Box<'static, crate::wire::CollectionRef<'static>>,
850            ___E,
851        > for CollectionRef
852    where
853        ___E: ::fidl_next::Encoder + ?Sized,
854        CollectionRef: ::fidl_next::Encode<crate::wire::CollectionRef<'static>, ___E>,
855    {
856        #[inline]
857        fn encode_option(
858            this: ::core::option::Option<Self>,
859            encoder: &mut ___E,
860            out: &mut ::core::mem::MaybeUninit<
861                ::fidl_next::wire::Box<'static, crate::wire::CollectionRef<'static>>,
862            >,
863            _: (),
864        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
865            if let Some(inner) = this {
866                ::fidl_next::EncoderExt::encode_next(encoder, inner)?;
867                ::fidl_next::wire::Box::encode_present(out);
868            } else {
869                ::fidl_next::wire::Box::encode_absent(out);
870            }
871
872            Ok(())
873        }
874    }
875
876    unsafe impl<'a, ___E>
877        ::fidl_next::EncodeOption<
878            ::fidl_next::wire::Box<'static, crate::wire::CollectionRef<'static>>,
879            ___E,
880        > for &'a CollectionRef
881    where
882        ___E: ::fidl_next::Encoder + ?Sized,
883        &'a CollectionRef: ::fidl_next::Encode<crate::wire::CollectionRef<'static>, ___E>,
884    {
885        #[inline]
886        fn encode_option(
887            this: ::core::option::Option<Self>,
888            encoder: &mut ___E,
889            out: &mut ::core::mem::MaybeUninit<
890                ::fidl_next::wire::Box<'static, crate::wire::CollectionRef<'static>>,
891            >,
892            _: (),
893        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
894            if let Some(inner) = this {
895                ::fidl_next::EncoderExt::encode_next(encoder, inner)?;
896                ::fidl_next::wire::Box::encode_present(out);
897            } else {
898                ::fidl_next::wire::Box::encode_absent(out);
899            }
900
901            Ok(())
902        }
903    }
904
905    impl<'de> ::fidl_next::FromWire<crate::wire::CollectionRef<'de>> for CollectionRef {
906        #[inline]
907        fn from_wire(wire: crate::wire::CollectionRef<'de>) -> Self {
908            Self { name: ::fidl_next::FromWire::from_wire(wire.name) }
909        }
910    }
911
912    impl<'de> ::fidl_next::FromWireRef<crate::wire::CollectionRef<'de>> for CollectionRef {
913        #[inline]
914        fn from_wire_ref(wire: &crate::wire::CollectionRef<'de>) -> Self {
915            Self { name: ::fidl_next::FromWireRef::from_wire_ref(&wire.name) }
916        }
917    }
918
919    #[doc = " A reference to the component framework itself.\n"]
920    pub type FrameworkRef = ();
921
922    #[doc = " A reference to a capability declared in this component.\n"]
923    #[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
924    pub struct CapabilityRef {
925        pub name: ::std::string::String,
926    }
927
928    unsafe impl<___E> ::fidl_next::Encode<crate::wire::CapabilityRef<'static>, ___E> for CapabilityRef
929    where
930        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
931        ___E: ::fidl_next::Encoder,
932    {
933        #[inline]
934        fn encode(
935            self,
936            encoder_: &mut ___E,
937            out_: &mut ::core::mem::MaybeUninit<crate::wire::CapabilityRef<'static>>,
938            _: (),
939        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
940            ::fidl_next::munge! {
941                let crate::wire::CapabilityRef {
942                    name,
943
944                } = out_;
945            }
946
947            ::fidl_next::Encode::encode(self.name, encoder_, name, 100)?;
948
949            let mut _field = unsafe { ::fidl_next::Slot::new_unchecked(name.as_mut_ptr()) };
950            ::fidl_next::Constrained::validate(_field, 100)?;
951
952            Ok(())
953        }
954    }
955
956    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::CapabilityRef<'static>, ___E>
957        for &'a CapabilityRef
958    where
959        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
960        ___E: ::fidl_next::Encoder,
961    {
962        #[inline]
963        fn encode(
964            self,
965            encoder_: &mut ___E,
966            out_: &mut ::core::mem::MaybeUninit<crate::wire::CapabilityRef<'static>>,
967            _: (),
968        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
969            ::fidl_next::munge! {
970                let crate::wire::CapabilityRef {
971                    name,
972
973                } = out_;
974            }
975
976            ::fidl_next::Encode::encode(&self.name, encoder_, name, 100)?;
977
978            let mut _field = unsafe { ::fidl_next::Slot::new_unchecked(name.as_mut_ptr()) };
979            ::fidl_next::Constrained::validate(_field, 100)?;
980
981            Ok(())
982        }
983    }
984
985    unsafe impl<___E>
986        ::fidl_next::EncodeOption<
987            ::fidl_next::wire::Box<'static, crate::wire::CapabilityRef<'static>>,
988            ___E,
989        > for CapabilityRef
990    where
991        ___E: ::fidl_next::Encoder + ?Sized,
992        CapabilityRef: ::fidl_next::Encode<crate::wire::CapabilityRef<'static>, ___E>,
993    {
994        #[inline]
995        fn encode_option(
996            this: ::core::option::Option<Self>,
997            encoder: &mut ___E,
998            out: &mut ::core::mem::MaybeUninit<
999                ::fidl_next::wire::Box<'static, crate::wire::CapabilityRef<'static>>,
1000            >,
1001            _: (),
1002        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
1003            if let Some(inner) = this {
1004                ::fidl_next::EncoderExt::encode_next(encoder, inner)?;
1005                ::fidl_next::wire::Box::encode_present(out);
1006            } else {
1007                ::fidl_next::wire::Box::encode_absent(out);
1008            }
1009
1010            Ok(())
1011        }
1012    }
1013
1014    unsafe impl<'a, ___E>
1015        ::fidl_next::EncodeOption<
1016            ::fidl_next::wire::Box<'static, crate::wire::CapabilityRef<'static>>,
1017            ___E,
1018        > for &'a CapabilityRef
1019    where
1020        ___E: ::fidl_next::Encoder + ?Sized,
1021        &'a CapabilityRef: ::fidl_next::Encode<crate::wire::CapabilityRef<'static>, ___E>,
1022    {
1023        #[inline]
1024        fn encode_option(
1025            this: ::core::option::Option<Self>,
1026            encoder: &mut ___E,
1027            out: &mut ::core::mem::MaybeUninit<
1028                ::fidl_next::wire::Box<'static, crate::wire::CapabilityRef<'static>>,
1029            >,
1030            _: (),
1031        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
1032            if let Some(inner) = this {
1033                ::fidl_next::EncoderExt::encode_next(encoder, inner)?;
1034                ::fidl_next::wire::Box::encode_present(out);
1035            } else {
1036                ::fidl_next::wire::Box::encode_absent(out);
1037            }
1038
1039            Ok(())
1040        }
1041    }
1042
1043    impl<'de> ::fidl_next::FromWire<crate::wire::CapabilityRef<'de>> for CapabilityRef {
1044        #[inline]
1045        fn from_wire(wire: crate::wire::CapabilityRef<'de>) -> Self {
1046            Self { name: ::fidl_next::FromWire::from_wire(wire.name) }
1047        }
1048    }
1049
1050    impl<'de> ::fidl_next::FromWireRef<crate::wire::CapabilityRef<'de>> for CapabilityRef {
1051        #[inline]
1052        fn from_wire_ref(wire: &crate::wire::CapabilityRef<'de>) -> Self {
1053            Self { name: ::fidl_next::FromWireRef::from_wire_ref(&wire.name) }
1054        }
1055    }
1056
1057    #[doc = " A reference to the environment\'s debug capabilities.\n"]
1058    pub type DebugRef = ();
1059
1060    #[doc = " A reference to an intentionally missing offer source.\n"]
1061    pub type VoidRef = ();
1062
1063    #[doc = " Declares which identifier to use to key a component\'s isolated storage\n directory.\n"]
1064    #[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
1065    #[repr(u32)]
1066    pub enum StorageId {
1067        StaticInstanceId = 1,
1068        StaticInstanceIdOrMoniker = 2,
1069    }
1070    impl ::core::convert::TryFrom<u32> for StorageId {
1071        type Error = ::fidl_next::UnknownStrictEnumMemberError;
1072        fn try_from(
1073            value: u32,
1074        ) -> ::core::result::Result<Self, ::fidl_next::UnknownStrictEnumMemberError> {
1075            match value {
1076                1 => Ok(Self::StaticInstanceId),
1077                2 => Ok(Self::StaticInstanceIdOrMoniker),
1078
1079                _ => Err(::fidl_next::UnknownStrictEnumMemberError::new(value.into())),
1080            }
1081        }
1082    }
1083
1084    unsafe impl<___E> ::fidl_next::Encode<crate::wire::StorageId, ___E> for StorageId
1085    where
1086        ___E: ?Sized,
1087    {
1088        #[inline]
1089        fn encode(
1090            self,
1091            encoder: &mut ___E,
1092            out: &mut ::core::mem::MaybeUninit<crate::wire::StorageId>,
1093            _: (),
1094        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
1095            ::fidl_next::Encode::encode(&self, encoder, out, ())
1096        }
1097    }
1098
1099    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::StorageId, ___E> for &'a StorageId
1100    where
1101        ___E: ?Sized,
1102    {
1103        #[inline]
1104        fn encode(
1105            self,
1106            encoder: &mut ___E,
1107            out: &mut ::core::mem::MaybeUninit<crate::wire::StorageId>,
1108            _: (),
1109        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
1110            ::fidl_next::munge!(let crate::wire::StorageId { value } = out);
1111            let _ = value.write(::fidl_next::wire::Uint32::from(match *self {
1112                StorageId::StaticInstanceId => 1,
1113
1114                StorageId::StaticInstanceIdOrMoniker => 2,
1115            }));
1116
1117            Ok(())
1118        }
1119    }
1120
1121    impl ::core::convert::From<crate::wire::StorageId> for StorageId {
1122        fn from(wire: crate::wire::StorageId) -> Self {
1123            match u32::from(wire.value) {
1124                1 => Self::StaticInstanceId,
1125
1126                2 => Self::StaticInstanceIdOrMoniker,
1127
1128                _ => unsafe { ::core::hint::unreachable_unchecked() },
1129            }
1130        }
1131    }
1132
1133    impl ::fidl_next::FromWire<crate::wire::StorageId> for StorageId {
1134        #[inline]
1135        fn from_wire(wire: crate::wire::StorageId) -> Self {
1136            Self::from(wire)
1137        }
1138    }
1139
1140    impl ::fidl_next::FromWireRef<crate::wire::StorageId> for StorageId {
1141        #[inline]
1142        fn from_wire_ref(wire: &crate::wire::StorageId) -> Self {
1143            Self::from(*wire)
1144        }
1145    }
1146
1147    #[doc = " Declares a runner capability backed by a service.\n"]
1148    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
1149    pub struct Runner {
1150        pub name: ::core::option::Option<::std::string::String>,
1151
1152        pub source_path: ::core::option::Option<::std::string::String>,
1153    }
1154
1155    impl Runner {
1156        fn __max_ordinal(&self) -> usize {
1157            if self.source_path.is_some() {
1158                return 2;
1159            }
1160
1161            if self.name.is_some() {
1162                return 1;
1163            }
1164
1165            0
1166        }
1167    }
1168
1169    unsafe impl<___E> ::fidl_next::Encode<crate::wire::Runner<'static>, ___E> for Runner
1170    where
1171        ___E: ::fidl_next::Encoder + ?Sized,
1172    {
1173        #[inline]
1174        fn encode(
1175            mut self,
1176            encoder: &mut ___E,
1177            out: &mut ::core::mem::MaybeUninit<crate::wire::Runner<'static>>,
1178            _: (),
1179        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
1180            ::fidl_next::munge!(let crate::wire::Runner { table } = out);
1181
1182            let max_ord = self.__max_ordinal();
1183
1184            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
1185            ::fidl_next::Wire::zero_padding(&mut out);
1186
1187            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
1188                ::fidl_next::wire::Envelope,
1189            >(encoder, max_ord);
1190
1191            for i in 1..=max_ord {
1192                match i {
1193                    2 => {
1194                        if let Some(value) = self.source_path.take() {
1195                            ::fidl_next::wire::Envelope::encode_value::<
1196                                ::fidl_next::wire::String<'static>,
1197                                ___E,
1198                            >(
1199                                value, preallocated.encoder, &mut out, 1024
1200                            )?;
1201                        } else {
1202                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
1203                        }
1204                    }
1205
1206                    1 => {
1207                        if let Some(value) = self.name.take() {
1208                            ::fidl_next::wire::Envelope::encode_value::<
1209                                ::fidl_next::wire::String<'static>,
1210                                ___E,
1211                            >(
1212                                value, preallocated.encoder, &mut out, 100
1213                            )?;
1214                        } else {
1215                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
1216                        }
1217                    }
1218
1219                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
1220                }
1221                unsafe {
1222                    preallocated.write_next(out.assume_init_ref());
1223                }
1224            }
1225
1226            ::fidl_next::wire::Table::encode_len(table, max_ord);
1227
1228            Ok(())
1229        }
1230    }
1231
1232    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::Runner<'static>, ___E> for &'a Runner
1233    where
1234        ___E: ::fidl_next::Encoder + ?Sized,
1235    {
1236        #[inline]
1237        fn encode(
1238            self,
1239            encoder: &mut ___E,
1240            out: &mut ::core::mem::MaybeUninit<crate::wire::Runner<'static>>,
1241            _: (),
1242        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
1243            ::fidl_next::munge!(let crate::wire::Runner { table } = out);
1244
1245            let max_ord = self.__max_ordinal();
1246
1247            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
1248            ::fidl_next::Wire::zero_padding(&mut out);
1249
1250            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
1251                ::fidl_next::wire::Envelope,
1252            >(encoder, max_ord);
1253
1254            for i in 1..=max_ord {
1255                match i {
1256                    2 => {
1257                        if let Some(value) = &self.source_path {
1258                            ::fidl_next::wire::Envelope::encode_value::<
1259                                ::fidl_next::wire::String<'static>,
1260                                ___E,
1261                            >(
1262                                value, preallocated.encoder, &mut out, 1024
1263                            )?;
1264                        } else {
1265                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
1266                        }
1267                    }
1268
1269                    1 => {
1270                        if let Some(value) = &self.name {
1271                            ::fidl_next::wire::Envelope::encode_value::<
1272                                ::fidl_next::wire::String<'static>,
1273                                ___E,
1274                            >(
1275                                value, preallocated.encoder, &mut out, 100
1276                            )?;
1277                        } else {
1278                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
1279                        }
1280                    }
1281
1282                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
1283                }
1284                unsafe {
1285                    preallocated.write_next(out.assume_init_ref());
1286                }
1287            }
1288
1289            ::fidl_next::wire::Table::encode_len(table, max_ord);
1290
1291            Ok(())
1292        }
1293    }
1294
1295    impl<'de> ::fidl_next::FromWire<crate::wire::Runner<'de>> for Runner {
1296        #[inline]
1297        fn from_wire(wire_: crate::wire::Runner<'de>) -> Self {
1298            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
1299
1300            let name = wire_.table.get(1);
1301
1302            let source_path = wire_.table.get(2);
1303
1304            Self {
1305                name: name.map(|envelope| {
1306                    ::fidl_next::FromWire::from_wire(unsafe {
1307                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
1308                    })
1309                }),
1310
1311                source_path: source_path.map(|envelope| {
1312                    ::fidl_next::FromWire::from_wire(unsafe {
1313                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
1314                    })
1315                }),
1316            }
1317        }
1318    }
1319
1320    impl<'de> ::fidl_next::FromWireRef<crate::wire::Runner<'de>> for Runner {
1321        #[inline]
1322        fn from_wire_ref(wire: &crate::wire::Runner<'de>) -> Self {
1323            Self {
1324                name: wire.table.get(1).map(|envelope| {
1325                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
1326                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
1327                    })
1328                }),
1329
1330                source_path: wire.table.get(2).map(|envelope| {
1331                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
1332                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
1333                    })
1334                }),
1335            }
1336        }
1337    }
1338
1339    #[doc = " Declares a resolver which is responsible for resolving component URLs to\n actual components. See `fuchsia.component.resolution.Resolver` for the\n protocol resolvers are expected to implement.\n"]
1340    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
1341    pub struct Resolver {
1342        pub name: ::core::option::Option<::std::string::String>,
1343
1344        pub source_path: ::core::option::Option<::std::string::String>,
1345    }
1346
1347    impl Resolver {
1348        fn __max_ordinal(&self) -> usize {
1349            if self.source_path.is_some() {
1350                return 2;
1351            }
1352
1353            if self.name.is_some() {
1354                return 1;
1355            }
1356
1357            0
1358        }
1359    }
1360
1361    unsafe impl<___E> ::fidl_next::Encode<crate::wire::Resolver<'static>, ___E> for Resolver
1362    where
1363        ___E: ::fidl_next::Encoder + ?Sized,
1364    {
1365        #[inline]
1366        fn encode(
1367            mut self,
1368            encoder: &mut ___E,
1369            out: &mut ::core::mem::MaybeUninit<crate::wire::Resolver<'static>>,
1370            _: (),
1371        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
1372            ::fidl_next::munge!(let crate::wire::Resolver { table } = out);
1373
1374            let max_ord = self.__max_ordinal();
1375
1376            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
1377            ::fidl_next::Wire::zero_padding(&mut out);
1378
1379            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
1380                ::fidl_next::wire::Envelope,
1381            >(encoder, max_ord);
1382
1383            for i in 1..=max_ord {
1384                match i {
1385                    2 => {
1386                        if let Some(value) = self.source_path.take() {
1387                            ::fidl_next::wire::Envelope::encode_value::<
1388                                ::fidl_next::wire::String<'static>,
1389                                ___E,
1390                            >(
1391                                value, preallocated.encoder, &mut out, 1024
1392                            )?;
1393                        } else {
1394                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
1395                        }
1396                    }
1397
1398                    1 => {
1399                        if let Some(value) = self.name.take() {
1400                            ::fidl_next::wire::Envelope::encode_value::<
1401                                ::fidl_next::wire::String<'static>,
1402                                ___E,
1403                            >(
1404                                value, preallocated.encoder, &mut out, 100
1405                            )?;
1406                        } else {
1407                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
1408                        }
1409                    }
1410
1411                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
1412                }
1413                unsafe {
1414                    preallocated.write_next(out.assume_init_ref());
1415                }
1416            }
1417
1418            ::fidl_next::wire::Table::encode_len(table, max_ord);
1419
1420            Ok(())
1421        }
1422    }
1423
1424    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::Resolver<'static>, ___E> for &'a Resolver
1425    where
1426        ___E: ::fidl_next::Encoder + ?Sized,
1427    {
1428        #[inline]
1429        fn encode(
1430            self,
1431            encoder: &mut ___E,
1432            out: &mut ::core::mem::MaybeUninit<crate::wire::Resolver<'static>>,
1433            _: (),
1434        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
1435            ::fidl_next::munge!(let crate::wire::Resolver { table } = out);
1436
1437            let max_ord = self.__max_ordinal();
1438
1439            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
1440            ::fidl_next::Wire::zero_padding(&mut out);
1441
1442            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
1443                ::fidl_next::wire::Envelope,
1444            >(encoder, max_ord);
1445
1446            for i in 1..=max_ord {
1447                match i {
1448                    2 => {
1449                        if let Some(value) = &self.source_path {
1450                            ::fidl_next::wire::Envelope::encode_value::<
1451                                ::fidl_next::wire::String<'static>,
1452                                ___E,
1453                            >(
1454                                value, preallocated.encoder, &mut out, 1024
1455                            )?;
1456                        } else {
1457                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
1458                        }
1459                    }
1460
1461                    1 => {
1462                        if let Some(value) = &self.name {
1463                            ::fidl_next::wire::Envelope::encode_value::<
1464                                ::fidl_next::wire::String<'static>,
1465                                ___E,
1466                            >(
1467                                value, preallocated.encoder, &mut out, 100
1468                            )?;
1469                        } else {
1470                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
1471                        }
1472                    }
1473
1474                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
1475                }
1476                unsafe {
1477                    preallocated.write_next(out.assume_init_ref());
1478                }
1479            }
1480
1481            ::fidl_next::wire::Table::encode_len(table, max_ord);
1482
1483            Ok(())
1484        }
1485    }
1486
1487    impl<'de> ::fidl_next::FromWire<crate::wire::Resolver<'de>> for Resolver {
1488        #[inline]
1489        fn from_wire(wire_: crate::wire::Resolver<'de>) -> Self {
1490            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
1491
1492            let name = wire_.table.get(1);
1493
1494            let source_path = wire_.table.get(2);
1495
1496            Self {
1497                name: name.map(|envelope| {
1498                    ::fidl_next::FromWire::from_wire(unsafe {
1499                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
1500                    })
1501                }),
1502
1503                source_path: source_path.map(|envelope| {
1504                    ::fidl_next::FromWire::from_wire(unsafe {
1505                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
1506                    })
1507                }),
1508            }
1509        }
1510    }
1511
1512    impl<'de> ::fidl_next::FromWireRef<crate::wire::Resolver<'de>> for Resolver {
1513        #[inline]
1514        fn from_wire_ref(wire: &crate::wire::Resolver<'de>) -> Self {
1515            Self {
1516                name: wire.table.get(1).map(|envelope| {
1517                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
1518                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
1519                    })
1520                }),
1521
1522                source_path: wire.table.get(2).map(|envelope| {
1523                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
1524                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
1525                    })
1526                }),
1527            }
1528        }
1529    }
1530
1531    #[doc = " Declares an event_stream capability\n\n This type cannot be used in `fuchsia.component.decl.Component`. It is only\n used for the framework\'s built-in capabilities declared in\n `internal.Config`.\n"]
1532    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
1533    pub struct EventStream {
1534        pub name: ::core::option::Option<::std::string::String>,
1535    }
1536
1537    impl EventStream {
1538        fn __max_ordinal(&self) -> usize {
1539            if self.name.is_some() {
1540                return 1;
1541            }
1542
1543            0
1544        }
1545    }
1546
1547    unsafe impl<___E> ::fidl_next::Encode<crate::wire::EventStream<'static>, ___E> for EventStream
1548    where
1549        ___E: ::fidl_next::Encoder + ?Sized,
1550    {
1551        #[inline]
1552        fn encode(
1553            mut self,
1554            encoder: &mut ___E,
1555            out: &mut ::core::mem::MaybeUninit<crate::wire::EventStream<'static>>,
1556            _: (),
1557        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
1558            ::fidl_next::munge!(let crate::wire::EventStream { table } = out);
1559
1560            let max_ord = self.__max_ordinal();
1561
1562            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
1563            ::fidl_next::Wire::zero_padding(&mut out);
1564
1565            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
1566                ::fidl_next::wire::Envelope,
1567            >(encoder, max_ord);
1568
1569            for i in 1..=max_ord {
1570                match i {
1571                    1 => {
1572                        if let Some(value) = self.name.take() {
1573                            ::fidl_next::wire::Envelope::encode_value::<
1574                                ::fidl_next::wire::String<'static>,
1575                                ___E,
1576                            >(
1577                                value, preallocated.encoder, &mut out, 100
1578                            )?;
1579                        } else {
1580                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
1581                        }
1582                    }
1583
1584                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
1585                }
1586                unsafe {
1587                    preallocated.write_next(out.assume_init_ref());
1588                }
1589            }
1590
1591            ::fidl_next::wire::Table::encode_len(table, max_ord);
1592
1593            Ok(())
1594        }
1595    }
1596
1597    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::EventStream<'static>, ___E>
1598        for &'a EventStream
1599    where
1600        ___E: ::fidl_next::Encoder + ?Sized,
1601    {
1602        #[inline]
1603        fn encode(
1604            self,
1605            encoder: &mut ___E,
1606            out: &mut ::core::mem::MaybeUninit<crate::wire::EventStream<'static>>,
1607            _: (),
1608        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
1609            ::fidl_next::munge!(let crate::wire::EventStream { table } = out);
1610
1611            let max_ord = self.__max_ordinal();
1612
1613            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
1614            ::fidl_next::Wire::zero_padding(&mut out);
1615
1616            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
1617                ::fidl_next::wire::Envelope,
1618            >(encoder, max_ord);
1619
1620            for i in 1..=max_ord {
1621                match i {
1622                    1 => {
1623                        if let Some(value) = &self.name {
1624                            ::fidl_next::wire::Envelope::encode_value::<
1625                                ::fidl_next::wire::String<'static>,
1626                                ___E,
1627                            >(
1628                                value, preallocated.encoder, &mut out, 100
1629                            )?;
1630                        } else {
1631                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
1632                        }
1633                    }
1634
1635                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
1636                }
1637                unsafe {
1638                    preallocated.write_next(out.assume_init_ref());
1639                }
1640            }
1641
1642            ::fidl_next::wire::Table::encode_len(table, max_ord);
1643
1644            Ok(())
1645        }
1646    }
1647
1648    impl<'de> ::fidl_next::FromWire<crate::wire::EventStream<'de>> for EventStream {
1649        #[inline]
1650        fn from_wire(wire_: crate::wire::EventStream<'de>) -> Self {
1651            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
1652
1653            let name = wire_.table.get(1);
1654
1655            Self {
1656                name: name.map(|envelope| {
1657                    ::fidl_next::FromWire::from_wire(unsafe {
1658                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
1659                    })
1660                }),
1661            }
1662        }
1663    }
1664
1665    impl<'de> ::fidl_next::FromWireRef<crate::wire::EventStream<'de>> for EventStream {
1666        #[inline]
1667        fn from_wire_ref(wire: &crate::wire::EventStream<'de>) -> Self {
1668            Self {
1669                name: wire.table.get(1).map(|envelope| {
1670                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
1671                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
1672                    })
1673                }),
1674            }
1675        }
1676    }
1677
1678    #[doc = " A single configuration value.\n"]
1679    #[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
1680    pub enum ConfigSingleValue {
1681        Bool(bool),
1682
1683        Uint8(u8),
1684
1685        Uint16(u16),
1686
1687        Uint32(u32),
1688
1689        Uint64(u64),
1690
1691        Int8(i8),
1692
1693        Int16(i16),
1694
1695        Int32(i32),
1696
1697        Int64(i64),
1698
1699        String(::std::string::String),
1700
1701        UnknownOrdinal_(u64),
1702    }
1703
1704    impl ConfigSingleValue {
1705        pub fn is_unknown(&self) -> bool {
1706            #[allow(unreachable_patterns)]
1707            match self {
1708                Self::UnknownOrdinal_(_) => true,
1709                _ => false,
1710            }
1711        }
1712    }
1713
1714    unsafe impl<___E> ::fidl_next::Encode<crate::wire::ConfigSingleValue<'static>, ___E>
1715        for ConfigSingleValue
1716    where
1717        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
1718        ___E: ::fidl_next::Encoder,
1719    {
1720        #[inline]
1721        fn encode(
1722            self,
1723            encoder: &mut ___E,
1724            out: &mut ::core::mem::MaybeUninit<crate::wire::ConfigSingleValue<'static>>,
1725            _: (),
1726        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
1727            ::fidl_next::munge!(let crate::wire::ConfigSingleValue { raw, _phantom: _ } = out);
1728
1729            match self {
1730                Self::Bool(value) => {
1731                    ::fidl_next::wire::Union::encode_as::<___E, bool>(value, 1, encoder, raw, ())?
1732                }
1733
1734                Self::Uint8(value) => {
1735                    ::fidl_next::wire::Union::encode_as::<___E, u8>(value, 2, encoder, raw, ())?
1736                }
1737
1738                Self::Uint16(value) => ::fidl_next::wire::Union::encode_as::<
1739                    ___E,
1740                    ::fidl_next::wire::Uint16,
1741                >(value, 3, encoder, raw, ())?,
1742
1743                Self::Uint32(value) => ::fidl_next::wire::Union::encode_as::<
1744                    ___E,
1745                    ::fidl_next::wire::Uint32,
1746                >(value, 4, encoder, raw, ())?,
1747
1748                Self::Uint64(value) => ::fidl_next::wire::Union::encode_as::<
1749                    ___E,
1750                    ::fidl_next::wire::Uint64,
1751                >(value, 5, encoder, raw, ())?,
1752
1753                Self::Int8(value) => {
1754                    ::fidl_next::wire::Union::encode_as::<___E, i8>(value, 6, encoder, raw, ())?
1755                }
1756
1757                Self::Int16(value) => ::fidl_next::wire::Union::encode_as::<
1758                    ___E,
1759                    ::fidl_next::wire::Int16,
1760                >(value, 7, encoder, raw, ())?,
1761
1762                Self::Int32(value) => ::fidl_next::wire::Union::encode_as::<
1763                    ___E,
1764                    ::fidl_next::wire::Int32,
1765                >(value, 8, encoder, raw, ())?,
1766
1767                Self::Int64(value) => ::fidl_next::wire::Union::encode_as::<
1768                    ___E,
1769                    ::fidl_next::wire::Int64,
1770                >(value, 9, encoder, raw, ())?,
1771
1772                Self::String(value) => ::fidl_next::wire::Union::encode_as::<
1773                    ___E,
1774                    ::fidl_next::wire::String<'static>,
1775                >(value, 10, encoder, raw, 4294967295)?,
1776
1777                Self::UnknownOrdinal_(ordinal) => {
1778                    return Err(::fidl_next::EncodeError::UnknownUnionOrdinal(ordinal as usize));
1779                }
1780            }
1781
1782            Ok(())
1783        }
1784    }
1785
1786    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::ConfigSingleValue<'static>, ___E>
1787        for &'a ConfigSingleValue
1788    where
1789        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
1790        ___E: ::fidl_next::Encoder,
1791    {
1792        #[inline]
1793        fn encode(
1794            self,
1795            encoder: &mut ___E,
1796            out: &mut ::core::mem::MaybeUninit<crate::wire::ConfigSingleValue<'static>>,
1797            _: (),
1798        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
1799            ::fidl_next::munge!(let crate::wire::ConfigSingleValue { raw, _phantom: _ } = out);
1800
1801            match self {
1802                ConfigSingleValue::Bool(value) => {
1803                    ::fidl_next::wire::Union::encode_as::<___E, bool>(value, 1, encoder, raw, ())?
1804                }
1805
1806                ConfigSingleValue::Uint8(value) => {
1807                    ::fidl_next::wire::Union::encode_as::<___E, u8>(value, 2, encoder, raw, ())?
1808                }
1809
1810                ConfigSingleValue::Uint16(value) => ::fidl_next::wire::Union::encode_as::<
1811                    ___E,
1812                    ::fidl_next::wire::Uint16,
1813                >(value, 3, encoder, raw, ())?,
1814
1815                ConfigSingleValue::Uint32(value) => ::fidl_next::wire::Union::encode_as::<
1816                    ___E,
1817                    ::fidl_next::wire::Uint32,
1818                >(value, 4, encoder, raw, ())?,
1819
1820                ConfigSingleValue::Uint64(value) => ::fidl_next::wire::Union::encode_as::<
1821                    ___E,
1822                    ::fidl_next::wire::Uint64,
1823                >(value, 5, encoder, raw, ())?,
1824
1825                ConfigSingleValue::Int8(value) => {
1826                    ::fidl_next::wire::Union::encode_as::<___E, i8>(value, 6, encoder, raw, ())?
1827                }
1828
1829                ConfigSingleValue::Int16(value) => ::fidl_next::wire::Union::encode_as::<
1830                    ___E,
1831                    ::fidl_next::wire::Int16,
1832                >(value, 7, encoder, raw, ())?,
1833
1834                ConfigSingleValue::Int32(value) => ::fidl_next::wire::Union::encode_as::<
1835                    ___E,
1836                    ::fidl_next::wire::Int32,
1837                >(value, 8, encoder, raw, ())?,
1838
1839                ConfigSingleValue::Int64(value) => ::fidl_next::wire::Union::encode_as::<
1840                    ___E,
1841                    ::fidl_next::wire::Int64,
1842                >(value, 9, encoder, raw, ())?,
1843
1844                ConfigSingleValue::String(value) => {
1845                    ::fidl_next::wire::Union::encode_as::<___E, ::fidl_next::wire::String<'static>>(
1846                        value, 10, encoder, raw, 4294967295,
1847                    )?
1848                }
1849
1850                ConfigSingleValue::UnknownOrdinal_(ordinal) => {
1851                    return Err(::fidl_next::EncodeError::UnknownUnionOrdinal(*ordinal as usize));
1852                }
1853            }
1854
1855            Ok(())
1856        }
1857    }
1858
1859    unsafe impl<___E>
1860        ::fidl_next::EncodeOption<crate::wire_optional::ConfigSingleValue<'static>, ___E>
1861        for ConfigSingleValue
1862    where
1863        ___E: ?Sized,
1864        ConfigSingleValue: ::fidl_next::Encode<crate::wire::ConfigSingleValue<'static>, ___E>,
1865    {
1866        #[inline]
1867        fn encode_option(
1868            this: ::core::option::Option<Self>,
1869            encoder: &mut ___E,
1870            out: &mut ::core::mem::MaybeUninit<crate::wire_optional::ConfigSingleValue<'static>>,
1871            _: (),
1872        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
1873            ::fidl_next::munge!(let crate::wire_optional::ConfigSingleValue { raw, _phantom: _ } = &mut *out);
1874
1875            if let Some(inner) = this {
1876                let value_out = unsafe { &mut *out.as_mut_ptr().cast() };
1877                ::fidl_next::Encode::encode(inner, encoder, value_out, ())?;
1878            } else {
1879                ::fidl_next::wire::Union::encode_absent(raw);
1880            }
1881
1882            Ok(())
1883        }
1884    }
1885
1886    unsafe impl<'a, ___E>
1887        ::fidl_next::EncodeOption<crate::wire_optional::ConfigSingleValue<'static>, ___E>
1888        for &'a ConfigSingleValue
1889    where
1890        ___E: ?Sized,
1891        &'a ConfigSingleValue: ::fidl_next::Encode<crate::wire::ConfigSingleValue<'static>, ___E>,
1892    {
1893        #[inline]
1894        fn encode_option(
1895            this: ::core::option::Option<Self>,
1896            encoder: &mut ___E,
1897            out: &mut ::core::mem::MaybeUninit<crate::wire_optional::ConfigSingleValue<'static>>,
1898            _: (),
1899        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
1900            ::fidl_next::munge!(let crate::wire_optional::ConfigSingleValue { raw, _phantom: _ } = &mut *out);
1901
1902            if let Some(inner) = this {
1903                let value_out = unsafe { &mut *out.as_mut_ptr().cast() };
1904                ::fidl_next::Encode::encode(inner, encoder, value_out, ())?;
1905            } else {
1906                ::fidl_next::wire::Union::encode_absent(raw);
1907            }
1908
1909            Ok(())
1910        }
1911    }
1912
1913    impl<'de> ::fidl_next::FromWire<crate::wire::ConfigSingleValue<'de>> for ConfigSingleValue {
1914        #[inline]
1915        fn from_wire(wire: crate::wire::ConfigSingleValue<'de>) -> Self {
1916            let wire = ::core::mem::ManuallyDrop::new(wire);
1917            match wire.raw.ordinal() {
1918                1 => Self::Bool(::fidl_next::FromWire::from_wire(unsafe {
1919                    wire.raw.get().read_unchecked::<bool>()
1920                })),
1921
1922                2 => Self::Uint8(::fidl_next::FromWire::from_wire(unsafe {
1923                    wire.raw.get().read_unchecked::<u8>()
1924                })),
1925
1926                3 => Self::Uint16(::fidl_next::FromWire::from_wire(unsafe {
1927                    wire.raw.get().read_unchecked::<::fidl_next::wire::Uint16>()
1928                })),
1929
1930                4 => Self::Uint32(::fidl_next::FromWire::from_wire(unsafe {
1931                    wire.raw.get().read_unchecked::<::fidl_next::wire::Uint32>()
1932                })),
1933
1934                5 => Self::Uint64(::fidl_next::FromWire::from_wire(unsafe {
1935                    wire.raw.get().read_unchecked::<::fidl_next::wire::Uint64>()
1936                })),
1937
1938                6 => Self::Int8(::fidl_next::FromWire::from_wire(unsafe {
1939                    wire.raw.get().read_unchecked::<i8>()
1940                })),
1941
1942                7 => Self::Int16(::fidl_next::FromWire::from_wire(unsafe {
1943                    wire.raw.get().read_unchecked::<::fidl_next::wire::Int16>()
1944                })),
1945
1946                8 => Self::Int32(::fidl_next::FromWire::from_wire(unsafe {
1947                    wire.raw.get().read_unchecked::<::fidl_next::wire::Int32>()
1948                })),
1949
1950                9 => Self::Int64(::fidl_next::FromWire::from_wire(unsafe {
1951                    wire.raw.get().read_unchecked::<::fidl_next::wire::Int64>()
1952                })),
1953
1954                10 => Self::String(::fidl_next::FromWire::from_wire(unsafe {
1955                    wire.raw.get().read_unchecked::<::fidl_next::wire::String<'de>>()
1956                })),
1957
1958                ord => return Self::UnknownOrdinal_(ord as u64),
1959            }
1960        }
1961    }
1962
1963    impl<'de> ::fidl_next::FromWireRef<crate::wire::ConfigSingleValue<'de>> for ConfigSingleValue {
1964        #[inline]
1965        fn from_wire_ref(wire: &crate::wire::ConfigSingleValue<'de>) -> Self {
1966            match wire.raw.ordinal() {
1967                1 => Self::Bool(::fidl_next::FromWireRef::from_wire_ref(unsafe {
1968                    wire.raw.get().deref_unchecked::<bool>()
1969                })),
1970
1971                2 => Self::Uint8(::fidl_next::FromWireRef::from_wire_ref(unsafe {
1972                    wire.raw.get().deref_unchecked::<u8>()
1973                })),
1974
1975                3 => Self::Uint16(::fidl_next::FromWireRef::from_wire_ref(unsafe {
1976                    wire.raw.get().deref_unchecked::<::fidl_next::wire::Uint16>()
1977                })),
1978
1979                4 => Self::Uint32(::fidl_next::FromWireRef::from_wire_ref(unsafe {
1980                    wire.raw.get().deref_unchecked::<::fidl_next::wire::Uint32>()
1981                })),
1982
1983                5 => Self::Uint64(::fidl_next::FromWireRef::from_wire_ref(unsafe {
1984                    wire.raw.get().deref_unchecked::<::fidl_next::wire::Uint64>()
1985                })),
1986
1987                6 => Self::Int8(::fidl_next::FromWireRef::from_wire_ref(unsafe {
1988                    wire.raw.get().deref_unchecked::<i8>()
1989                })),
1990
1991                7 => Self::Int16(::fidl_next::FromWireRef::from_wire_ref(unsafe {
1992                    wire.raw.get().deref_unchecked::<::fidl_next::wire::Int16>()
1993                })),
1994
1995                8 => Self::Int32(::fidl_next::FromWireRef::from_wire_ref(unsafe {
1996                    wire.raw.get().deref_unchecked::<::fidl_next::wire::Int32>()
1997                })),
1998
1999                9 => Self::Int64(::fidl_next::FromWireRef::from_wire_ref(unsafe {
2000                    wire.raw.get().deref_unchecked::<::fidl_next::wire::Int64>()
2001                })),
2002
2003                10 => Self::String(::fidl_next::FromWireRef::from_wire_ref(unsafe {
2004                    wire.raw.get().deref_unchecked::<::fidl_next::wire::String<'de>>()
2005                })),
2006
2007                ord => return Self::UnknownOrdinal_(ord as u64),
2008            }
2009        }
2010    }
2011
2012    impl<'de> ::fidl_next::FromWireOption<crate::wire_optional::ConfigSingleValue<'de>>
2013        for ConfigSingleValue
2014    {
2015        #[inline]
2016        fn from_wire_option(
2017            wire: crate::wire_optional::ConfigSingleValue<'de>,
2018        ) -> ::core::option::Option<Self> {
2019            if let Some(inner) = wire.into_option() {
2020                Some(::fidl_next::FromWire::from_wire(inner))
2021            } else {
2022                None
2023            }
2024        }
2025    }
2026
2027    impl<'de> ::fidl_next::FromWireOption<crate::wire_optional::ConfigSingleValue<'de>>
2028        for Box<ConfigSingleValue>
2029    {
2030        #[inline]
2031        fn from_wire_option(
2032            wire: crate::wire_optional::ConfigSingleValue<'de>,
2033        ) -> ::core::option::Option<Self> {
2034            <ConfigSingleValue as ::fidl_next::FromWireOption<
2035                crate::wire_optional::ConfigSingleValue<'de>,
2036            >>::from_wire_option(wire)
2037            .map(Box::new)
2038        }
2039    }
2040
2041    impl<'de> ::fidl_next::FromWireOptionRef<crate::wire_optional::ConfigSingleValue<'de>>
2042        for Box<ConfigSingleValue>
2043    {
2044        #[inline]
2045        fn from_wire_option_ref(
2046            wire: &crate::wire_optional::ConfigSingleValue<'de>,
2047        ) -> ::core::option::Option<Self> {
2048            if let Some(inner) = wire.as_ref() {
2049                Some(Box::new(::fidl_next::FromWireRef::from_wire_ref(inner)))
2050            } else {
2051                None
2052            }
2053        }
2054    }
2055
2056    #[doc = " A vector configuration value.\n"]
2057    #[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
2058    pub enum ConfigVectorValue {
2059        BoolVector(::std::vec::Vec<bool>),
2060
2061        Uint8Vector(::std::vec::Vec<u8>),
2062
2063        Uint16Vector(::std::vec::Vec<u16>),
2064
2065        Uint32Vector(::std::vec::Vec<u32>),
2066
2067        Uint64Vector(::std::vec::Vec<u64>),
2068
2069        Int8Vector(::std::vec::Vec<i8>),
2070
2071        Int16Vector(::std::vec::Vec<i16>),
2072
2073        Int32Vector(::std::vec::Vec<i32>),
2074
2075        Int64Vector(::std::vec::Vec<i64>),
2076
2077        StringVector(::std::vec::Vec<::std::string::String>),
2078
2079        UnknownOrdinal_(u64),
2080    }
2081
2082    impl ConfigVectorValue {
2083        pub fn is_unknown(&self) -> bool {
2084            #[allow(unreachable_patterns)]
2085            match self {
2086                Self::UnknownOrdinal_(_) => true,
2087                _ => false,
2088            }
2089        }
2090    }
2091
2092    unsafe impl<___E> ::fidl_next::Encode<crate::wire::ConfigVectorValue<'static>, ___E>
2093        for ConfigVectorValue
2094    where
2095        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
2096        ___E: ::fidl_next::Encoder,
2097    {
2098        #[inline]
2099        fn encode(
2100            self,
2101            encoder: &mut ___E,
2102            out: &mut ::core::mem::MaybeUninit<crate::wire::ConfigVectorValue<'static>>,
2103            _: (),
2104        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
2105            ::fidl_next::munge!(let crate::wire::ConfigVectorValue { raw, _phantom: _ } = out);
2106
2107            match self {
2108                Self::BoolVector(value) => {
2109                    ::fidl_next::wire::Union::encode_as::<
2110                        ___E,
2111                        ::fidl_next::wire::Vector<'static, bool>,
2112                    >(value, 1, encoder, raw, (4294967295, ()))?
2113                }
2114
2115                Self::Uint8Vector(value) => {
2116                    ::fidl_next::wire::Union::encode_as::<
2117                        ___E,
2118                        ::fidl_next::wire::Vector<'static, u8>,
2119                    >(value, 2, encoder, raw, (4294967295, ()))?
2120                }
2121
2122                Self::Uint16Vector(value) => {
2123                    ::fidl_next::wire::Union::encode_as::<
2124                        ___E,
2125                        ::fidl_next::wire::Vector<'static, ::fidl_next::wire::Uint16>,
2126                    >(value, 3, encoder, raw, (4294967295, ()))?
2127                }
2128
2129                Self::Uint32Vector(value) => {
2130                    ::fidl_next::wire::Union::encode_as::<
2131                        ___E,
2132                        ::fidl_next::wire::Vector<'static, ::fidl_next::wire::Uint32>,
2133                    >(value, 4, encoder, raw, (4294967295, ()))?
2134                }
2135
2136                Self::Uint64Vector(value) => {
2137                    ::fidl_next::wire::Union::encode_as::<
2138                        ___E,
2139                        ::fidl_next::wire::Vector<'static, ::fidl_next::wire::Uint64>,
2140                    >(value, 5, encoder, raw, (4294967295, ()))?
2141                }
2142
2143                Self::Int8Vector(value) => {
2144                    ::fidl_next::wire::Union::encode_as::<
2145                        ___E,
2146                        ::fidl_next::wire::Vector<'static, i8>,
2147                    >(value, 6, encoder, raw, (4294967295, ()))?
2148                }
2149
2150                Self::Int16Vector(value) => {
2151                    ::fidl_next::wire::Union::encode_as::<
2152                        ___E,
2153                        ::fidl_next::wire::Vector<'static, ::fidl_next::wire::Int16>,
2154                    >(value, 7, encoder, raw, (4294967295, ()))?
2155                }
2156
2157                Self::Int32Vector(value) => {
2158                    ::fidl_next::wire::Union::encode_as::<
2159                        ___E,
2160                        ::fidl_next::wire::Vector<'static, ::fidl_next::wire::Int32>,
2161                    >(value, 8, encoder, raw, (4294967295, ()))?
2162                }
2163
2164                Self::Int64Vector(value) => {
2165                    ::fidl_next::wire::Union::encode_as::<
2166                        ___E,
2167                        ::fidl_next::wire::Vector<'static, ::fidl_next::wire::Int64>,
2168                    >(value, 9, encoder, raw, (4294967295, ()))?
2169                }
2170
2171                Self::StringVector(value) => {
2172                    ::fidl_next::wire::Union::encode_as::<
2173                        ___E,
2174                        ::fidl_next::wire::Vector<'static, ::fidl_next::wire::String<'static>>,
2175                    >(value, 10, encoder, raw, (4294967295, 4294967295))?
2176                }
2177
2178                Self::UnknownOrdinal_(ordinal) => {
2179                    return Err(::fidl_next::EncodeError::UnknownUnionOrdinal(ordinal as usize));
2180                }
2181            }
2182
2183            Ok(())
2184        }
2185    }
2186
2187    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::ConfigVectorValue<'static>, ___E>
2188        for &'a ConfigVectorValue
2189    where
2190        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
2191        ___E: ::fidl_next::Encoder,
2192    {
2193        #[inline]
2194        fn encode(
2195            self,
2196            encoder: &mut ___E,
2197            out: &mut ::core::mem::MaybeUninit<crate::wire::ConfigVectorValue<'static>>,
2198            _: (),
2199        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
2200            ::fidl_next::munge!(let crate::wire::ConfigVectorValue { raw, _phantom: _ } = out);
2201
2202            match self {
2203                ConfigVectorValue::BoolVector(value) => {
2204                    ::fidl_next::wire::Union::encode_as::<
2205                        ___E,
2206                        ::fidl_next::wire::Vector<'static, bool>,
2207                    >(value, 1, encoder, raw, (4294967295, ()))?
2208                }
2209
2210                ConfigVectorValue::Uint8Vector(value) => {
2211                    ::fidl_next::wire::Union::encode_as::<
2212                        ___E,
2213                        ::fidl_next::wire::Vector<'static, u8>,
2214                    >(value, 2, encoder, raw, (4294967295, ()))?
2215                }
2216
2217                ConfigVectorValue::Uint16Vector(value) => {
2218                    ::fidl_next::wire::Union::encode_as::<
2219                        ___E,
2220                        ::fidl_next::wire::Vector<'static, ::fidl_next::wire::Uint16>,
2221                    >(value, 3, encoder, raw, (4294967295, ()))?
2222                }
2223
2224                ConfigVectorValue::Uint32Vector(value) => {
2225                    ::fidl_next::wire::Union::encode_as::<
2226                        ___E,
2227                        ::fidl_next::wire::Vector<'static, ::fidl_next::wire::Uint32>,
2228                    >(value, 4, encoder, raw, (4294967295, ()))?
2229                }
2230
2231                ConfigVectorValue::Uint64Vector(value) => {
2232                    ::fidl_next::wire::Union::encode_as::<
2233                        ___E,
2234                        ::fidl_next::wire::Vector<'static, ::fidl_next::wire::Uint64>,
2235                    >(value, 5, encoder, raw, (4294967295, ()))?
2236                }
2237
2238                ConfigVectorValue::Int8Vector(value) => {
2239                    ::fidl_next::wire::Union::encode_as::<
2240                        ___E,
2241                        ::fidl_next::wire::Vector<'static, i8>,
2242                    >(value, 6, encoder, raw, (4294967295, ()))?
2243                }
2244
2245                ConfigVectorValue::Int16Vector(value) => {
2246                    ::fidl_next::wire::Union::encode_as::<
2247                        ___E,
2248                        ::fidl_next::wire::Vector<'static, ::fidl_next::wire::Int16>,
2249                    >(value, 7, encoder, raw, (4294967295, ()))?
2250                }
2251
2252                ConfigVectorValue::Int32Vector(value) => {
2253                    ::fidl_next::wire::Union::encode_as::<
2254                        ___E,
2255                        ::fidl_next::wire::Vector<'static, ::fidl_next::wire::Int32>,
2256                    >(value, 8, encoder, raw, (4294967295, ()))?
2257                }
2258
2259                ConfigVectorValue::Int64Vector(value) => {
2260                    ::fidl_next::wire::Union::encode_as::<
2261                        ___E,
2262                        ::fidl_next::wire::Vector<'static, ::fidl_next::wire::Int64>,
2263                    >(value, 9, encoder, raw, (4294967295, ()))?
2264                }
2265
2266                ConfigVectorValue::StringVector(value) => {
2267                    ::fidl_next::wire::Union::encode_as::<
2268                        ___E,
2269                        ::fidl_next::wire::Vector<'static, ::fidl_next::wire::String<'static>>,
2270                    >(value, 10, encoder, raw, (4294967295, 4294967295))?
2271                }
2272
2273                ConfigVectorValue::UnknownOrdinal_(ordinal) => {
2274                    return Err(::fidl_next::EncodeError::UnknownUnionOrdinal(*ordinal as usize));
2275                }
2276            }
2277
2278            Ok(())
2279        }
2280    }
2281
2282    unsafe impl<___E>
2283        ::fidl_next::EncodeOption<crate::wire_optional::ConfigVectorValue<'static>, ___E>
2284        for ConfigVectorValue
2285    where
2286        ___E: ?Sized,
2287        ConfigVectorValue: ::fidl_next::Encode<crate::wire::ConfigVectorValue<'static>, ___E>,
2288    {
2289        #[inline]
2290        fn encode_option(
2291            this: ::core::option::Option<Self>,
2292            encoder: &mut ___E,
2293            out: &mut ::core::mem::MaybeUninit<crate::wire_optional::ConfigVectorValue<'static>>,
2294            _: (),
2295        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
2296            ::fidl_next::munge!(let crate::wire_optional::ConfigVectorValue { raw, _phantom: _ } = &mut *out);
2297
2298            if let Some(inner) = this {
2299                let value_out = unsafe { &mut *out.as_mut_ptr().cast() };
2300                ::fidl_next::Encode::encode(inner, encoder, value_out, ())?;
2301            } else {
2302                ::fidl_next::wire::Union::encode_absent(raw);
2303            }
2304
2305            Ok(())
2306        }
2307    }
2308
2309    unsafe impl<'a, ___E>
2310        ::fidl_next::EncodeOption<crate::wire_optional::ConfigVectorValue<'static>, ___E>
2311        for &'a ConfigVectorValue
2312    where
2313        ___E: ?Sized,
2314        &'a ConfigVectorValue: ::fidl_next::Encode<crate::wire::ConfigVectorValue<'static>, ___E>,
2315    {
2316        #[inline]
2317        fn encode_option(
2318            this: ::core::option::Option<Self>,
2319            encoder: &mut ___E,
2320            out: &mut ::core::mem::MaybeUninit<crate::wire_optional::ConfigVectorValue<'static>>,
2321            _: (),
2322        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
2323            ::fidl_next::munge!(let crate::wire_optional::ConfigVectorValue { raw, _phantom: _ } = &mut *out);
2324
2325            if let Some(inner) = this {
2326                let value_out = unsafe { &mut *out.as_mut_ptr().cast() };
2327                ::fidl_next::Encode::encode(inner, encoder, value_out, ())?;
2328            } else {
2329                ::fidl_next::wire::Union::encode_absent(raw);
2330            }
2331
2332            Ok(())
2333        }
2334    }
2335
2336    impl<'de> ::fidl_next::FromWire<crate::wire::ConfigVectorValue<'de>> for ConfigVectorValue {
2337        #[inline]
2338        fn from_wire(wire: crate::wire::ConfigVectorValue<'de>) -> Self {
2339            let wire = ::core::mem::ManuallyDrop::new(wire);
2340            match wire.raw.ordinal() {
2341                1 => Self::BoolVector(::fidl_next::FromWire::from_wire(unsafe {
2342                    wire.raw.get().read_unchecked::<::fidl_next::wire::Vector<'de, bool>>()
2343                })),
2344
2345                2 => Self::Uint8Vector(::fidl_next::FromWire::from_wire(unsafe {
2346                    wire.raw.get().read_unchecked::<::fidl_next::wire::Vector<'de, u8>>()
2347                })),
2348
2349                3 => Self::Uint16Vector(::fidl_next::FromWire::from_wire(unsafe {
2350                    wire.raw.get().read_unchecked::<::fidl_next::wire::Vector<'de, ::fidl_next::wire::Uint16>>()
2351                })),
2352
2353                4 => Self::Uint32Vector(::fidl_next::FromWire::from_wire(unsafe {
2354                    wire.raw.get().read_unchecked::<::fidl_next::wire::Vector<'de, ::fidl_next::wire::Uint32>>()
2355                })),
2356
2357                5 => Self::Uint64Vector(::fidl_next::FromWire::from_wire(unsafe {
2358                    wire.raw.get().read_unchecked::<::fidl_next::wire::Vector<'de, ::fidl_next::wire::Uint64>>()
2359                })),
2360
2361                6 => Self::Int8Vector(::fidl_next::FromWire::from_wire(unsafe {
2362                    wire.raw.get().read_unchecked::<::fidl_next::wire::Vector<'de, i8>>()
2363                })),
2364
2365                7 => {
2366                    Self::Int16Vector(::fidl_next::FromWire::from_wire(unsafe {
2367                        wire.raw.get().read_unchecked::<::fidl_next::wire::Vector<'de, ::fidl_next::wire::Int16>>()
2368                    }))
2369                }
2370
2371                8 => {
2372                    Self::Int32Vector(::fidl_next::FromWire::from_wire(unsafe {
2373                        wire.raw.get().read_unchecked::<::fidl_next::wire::Vector<'de, ::fidl_next::wire::Int32>>()
2374                    }))
2375                }
2376
2377                9 => {
2378                    Self::Int64Vector(::fidl_next::FromWire::from_wire(unsafe {
2379                        wire.raw.get().read_unchecked::<::fidl_next::wire::Vector<'de, ::fidl_next::wire::Int64>>()
2380                    }))
2381                }
2382
2383                10 => Self::StringVector(::fidl_next::FromWire::from_wire(unsafe {
2384                    wire.raw.get().read_unchecked::<::fidl_next::wire::Vector<'de, ::fidl_next::wire::String<'de>>>()
2385                })),
2386
2387                ord => return Self::UnknownOrdinal_(ord as u64),
2388            }
2389        }
2390    }
2391
2392    impl<'de> ::fidl_next::FromWireRef<crate::wire::ConfigVectorValue<'de>> for ConfigVectorValue {
2393        #[inline]
2394        fn from_wire_ref(wire: &crate::wire::ConfigVectorValue<'de>) -> Self {
2395            match wire.raw.ordinal() {
2396                1 => Self::BoolVector(::fidl_next::FromWireRef::from_wire_ref(unsafe {
2397                    wire.raw.get().deref_unchecked::<::fidl_next::wire::Vector<'de, bool>>()
2398                })),
2399
2400                2 => Self::Uint8Vector(::fidl_next::FromWireRef::from_wire_ref(unsafe {
2401                    wire.raw.get().deref_unchecked::<::fidl_next::wire::Vector<'de, u8>>()
2402                })),
2403
2404                3 => Self::Uint16Vector(::fidl_next::FromWireRef::from_wire_ref(unsafe {
2405                    wire.raw.get().deref_unchecked::<::fidl_next::wire::Vector<'de, ::fidl_next::wire::Uint16>>()
2406                })),
2407
2408                4 => Self::Uint32Vector(::fidl_next::FromWireRef::from_wire_ref(unsafe {
2409                    wire.raw.get().deref_unchecked::<::fidl_next::wire::Vector<'de, ::fidl_next::wire::Uint32>>()
2410                })),
2411
2412                5 => Self::Uint64Vector(::fidl_next::FromWireRef::from_wire_ref(unsafe {
2413                    wire.raw.get().deref_unchecked::<::fidl_next::wire::Vector<'de, ::fidl_next::wire::Uint64>>()
2414                })),
2415
2416                6 => Self::Int8Vector(::fidl_next::FromWireRef::from_wire_ref(unsafe {
2417                    wire.raw.get().deref_unchecked::<::fidl_next::wire::Vector<'de, i8>>()
2418                })),
2419
2420                7 => Self::Int16Vector(::fidl_next::FromWireRef::from_wire_ref(unsafe {
2421                    wire.raw.get().deref_unchecked::<::fidl_next::wire::Vector<'de, ::fidl_next::wire::Int16>>()
2422                })),
2423
2424                8 => Self::Int32Vector(::fidl_next::FromWireRef::from_wire_ref(unsafe {
2425                    wire.raw.get().deref_unchecked::<::fidl_next::wire::Vector<'de, ::fidl_next::wire::Int32>>()
2426                })),
2427
2428                9 => Self::Int64Vector(::fidl_next::FromWireRef::from_wire_ref(unsafe {
2429                    wire.raw.get().deref_unchecked::<::fidl_next::wire::Vector<'de, ::fidl_next::wire::Int64>>()
2430                })),
2431
2432                10 => Self::StringVector(::fidl_next::FromWireRef::from_wire_ref(unsafe {
2433                    wire.raw.get().deref_unchecked::<::fidl_next::wire::Vector<'de, ::fidl_next::wire::String<'de>>>()
2434                })),
2435
2436                ord => return Self::UnknownOrdinal_(ord as u64),
2437            }
2438        }
2439    }
2440
2441    impl<'de> ::fidl_next::FromWireOption<crate::wire_optional::ConfigVectorValue<'de>>
2442        for ConfigVectorValue
2443    {
2444        #[inline]
2445        fn from_wire_option(
2446            wire: crate::wire_optional::ConfigVectorValue<'de>,
2447        ) -> ::core::option::Option<Self> {
2448            if let Some(inner) = wire.into_option() {
2449                Some(::fidl_next::FromWire::from_wire(inner))
2450            } else {
2451                None
2452            }
2453        }
2454    }
2455
2456    impl<'de> ::fidl_next::FromWireOption<crate::wire_optional::ConfigVectorValue<'de>>
2457        for Box<ConfigVectorValue>
2458    {
2459        #[inline]
2460        fn from_wire_option(
2461            wire: crate::wire_optional::ConfigVectorValue<'de>,
2462        ) -> ::core::option::Option<Self> {
2463            <ConfigVectorValue as ::fidl_next::FromWireOption<
2464                crate::wire_optional::ConfigVectorValue<'de>,
2465            >>::from_wire_option(wire)
2466            .map(Box::new)
2467        }
2468    }
2469
2470    impl<'de> ::fidl_next::FromWireOptionRef<crate::wire_optional::ConfigVectorValue<'de>>
2471        for Box<ConfigVectorValue>
2472    {
2473        #[inline]
2474        fn from_wire_option_ref(
2475            wire: &crate::wire_optional::ConfigVectorValue<'de>,
2476        ) -> ::core::option::Option<Self> {
2477            if let Some(inner) = wire.as_ref() {
2478                Some(Box::new(::fidl_next::FromWireRef::from_wire_ref(inner)))
2479            } else {
2480                None
2481            }
2482        }
2483    }
2484
2485    #[doc = " A configuration value which can be provided to a component.\n\n Used both for storing configuration at-rest and in runtime configuration APIs.\n"]
2486    #[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
2487    pub enum ConfigValue {
2488        Single(crate::natural::ConfigSingleValue),
2489
2490        Vector(crate::natural::ConfigVectorValue),
2491
2492        UnknownOrdinal_(u64),
2493    }
2494
2495    impl ConfigValue {
2496        pub fn is_unknown(&self) -> bool {
2497            #[allow(unreachable_patterns)]
2498            match self {
2499                Self::UnknownOrdinal_(_) => true,
2500                _ => false,
2501            }
2502        }
2503    }
2504
2505    unsafe impl<___E> ::fidl_next::Encode<crate::wire::ConfigValue<'static>, ___E> for ConfigValue
2506    where
2507        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
2508        ___E: ::fidl_next::Encoder,
2509    {
2510        #[inline]
2511        fn encode(
2512            self,
2513            encoder: &mut ___E,
2514            out: &mut ::core::mem::MaybeUninit<crate::wire::ConfigValue<'static>>,
2515            _: (),
2516        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
2517            ::fidl_next::munge!(let crate::wire::ConfigValue { raw, _phantom: _ } = out);
2518
2519            match self {
2520                Self::Single(value) => ::fidl_next::wire::Union::encode_as::<
2521                    ___E,
2522                    crate::wire::ConfigSingleValue<'static>,
2523                >(value, 1, encoder, raw, ())?,
2524
2525                Self::Vector(value) => ::fidl_next::wire::Union::encode_as::<
2526                    ___E,
2527                    crate::wire::ConfigVectorValue<'static>,
2528                >(value, 2, encoder, raw, ())?,
2529
2530                Self::UnknownOrdinal_(ordinal) => {
2531                    return Err(::fidl_next::EncodeError::UnknownUnionOrdinal(ordinal as usize));
2532                }
2533            }
2534
2535            Ok(())
2536        }
2537    }
2538
2539    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::ConfigValue<'static>, ___E>
2540        for &'a ConfigValue
2541    where
2542        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
2543        ___E: ::fidl_next::Encoder,
2544    {
2545        #[inline]
2546        fn encode(
2547            self,
2548            encoder: &mut ___E,
2549            out: &mut ::core::mem::MaybeUninit<crate::wire::ConfigValue<'static>>,
2550            _: (),
2551        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
2552            ::fidl_next::munge!(let crate::wire::ConfigValue { raw, _phantom: _ } = out);
2553
2554            match self {
2555                ConfigValue::Single(value) => ::fidl_next::wire::Union::encode_as::<
2556                    ___E,
2557                    crate::wire::ConfigSingleValue<'static>,
2558                >(value, 1, encoder, raw, ())?,
2559
2560                ConfigValue::Vector(value) => ::fidl_next::wire::Union::encode_as::<
2561                    ___E,
2562                    crate::wire::ConfigVectorValue<'static>,
2563                >(value, 2, encoder, raw, ())?,
2564
2565                ConfigValue::UnknownOrdinal_(ordinal) => {
2566                    return Err(::fidl_next::EncodeError::UnknownUnionOrdinal(*ordinal as usize));
2567                }
2568            }
2569
2570            Ok(())
2571        }
2572    }
2573
2574    unsafe impl<___E> ::fidl_next::EncodeOption<crate::wire_optional::ConfigValue<'static>, ___E>
2575        for ConfigValue
2576    where
2577        ___E: ?Sized,
2578        ConfigValue: ::fidl_next::Encode<crate::wire::ConfigValue<'static>, ___E>,
2579    {
2580        #[inline]
2581        fn encode_option(
2582            this: ::core::option::Option<Self>,
2583            encoder: &mut ___E,
2584            out: &mut ::core::mem::MaybeUninit<crate::wire_optional::ConfigValue<'static>>,
2585            _: (),
2586        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
2587            ::fidl_next::munge!(let crate::wire_optional::ConfigValue { raw, _phantom: _ } = &mut *out);
2588
2589            if let Some(inner) = this {
2590                let value_out = unsafe { &mut *out.as_mut_ptr().cast() };
2591                ::fidl_next::Encode::encode(inner, encoder, value_out, ())?;
2592            } else {
2593                ::fidl_next::wire::Union::encode_absent(raw);
2594            }
2595
2596            Ok(())
2597        }
2598    }
2599
2600    unsafe impl<'a, ___E>
2601        ::fidl_next::EncodeOption<crate::wire_optional::ConfigValue<'static>, ___E>
2602        for &'a ConfigValue
2603    where
2604        ___E: ?Sized,
2605        &'a ConfigValue: ::fidl_next::Encode<crate::wire::ConfigValue<'static>, ___E>,
2606    {
2607        #[inline]
2608        fn encode_option(
2609            this: ::core::option::Option<Self>,
2610            encoder: &mut ___E,
2611            out: &mut ::core::mem::MaybeUninit<crate::wire_optional::ConfigValue<'static>>,
2612            _: (),
2613        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
2614            ::fidl_next::munge!(let crate::wire_optional::ConfigValue { raw, _phantom: _ } = &mut *out);
2615
2616            if let Some(inner) = this {
2617                let value_out = unsafe { &mut *out.as_mut_ptr().cast() };
2618                ::fidl_next::Encode::encode(inner, encoder, value_out, ())?;
2619            } else {
2620                ::fidl_next::wire::Union::encode_absent(raw);
2621            }
2622
2623            Ok(())
2624        }
2625    }
2626
2627    impl<'de> ::fidl_next::FromWire<crate::wire::ConfigValue<'de>> for ConfigValue {
2628        #[inline]
2629        fn from_wire(wire: crate::wire::ConfigValue<'de>) -> Self {
2630            let wire = ::core::mem::ManuallyDrop::new(wire);
2631            match wire.raw.ordinal() {
2632                1 => Self::Single(::fidl_next::FromWire::from_wire(unsafe {
2633                    wire.raw.get().read_unchecked::<crate::wire::ConfigSingleValue<'de>>()
2634                })),
2635
2636                2 => Self::Vector(::fidl_next::FromWire::from_wire(unsafe {
2637                    wire.raw.get().read_unchecked::<crate::wire::ConfigVectorValue<'de>>()
2638                })),
2639
2640                ord => return Self::UnknownOrdinal_(ord as u64),
2641            }
2642        }
2643    }
2644
2645    impl<'de> ::fidl_next::FromWireRef<crate::wire::ConfigValue<'de>> for ConfigValue {
2646        #[inline]
2647        fn from_wire_ref(wire: &crate::wire::ConfigValue<'de>) -> Self {
2648            match wire.raw.ordinal() {
2649                1 => Self::Single(::fidl_next::FromWireRef::from_wire_ref(unsafe {
2650                    wire.raw.get().deref_unchecked::<crate::wire::ConfigSingleValue<'de>>()
2651                })),
2652
2653                2 => Self::Vector(::fidl_next::FromWireRef::from_wire_ref(unsafe {
2654                    wire.raw.get().deref_unchecked::<crate::wire::ConfigVectorValue<'de>>()
2655                })),
2656
2657                ord => return Self::UnknownOrdinal_(ord as u64),
2658            }
2659        }
2660    }
2661
2662    impl<'de> ::fidl_next::FromWireOption<crate::wire_optional::ConfigValue<'de>> for ConfigValue {
2663        #[inline]
2664        fn from_wire_option(
2665            wire: crate::wire_optional::ConfigValue<'de>,
2666        ) -> ::core::option::Option<Self> {
2667            if let Some(inner) = wire.into_option() {
2668                Some(::fidl_next::FromWire::from_wire(inner))
2669            } else {
2670                None
2671            }
2672        }
2673    }
2674
2675    impl<'de> ::fidl_next::FromWireOption<crate::wire_optional::ConfigValue<'de>> for Box<ConfigValue> {
2676        #[inline]
2677        fn from_wire_option(
2678            wire: crate::wire_optional::ConfigValue<'de>,
2679        ) -> ::core::option::Option<Self> {
2680            <
2681            ConfigValue as ::fidl_next::FromWireOption<crate::wire_optional::ConfigValue<'de>>
2682        >::from_wire_option(wire).map(Box::new)
2683        }
2684    }
2685
2686    impl<'de> ::fidl_next::FromWireOptionRef<crate::wire_optional::ConfigValue<'de>>
2687        for Box<ConfigValue>
2688    {
2689        #[inline]
2690        fn from_wire_option_ref(
2691            wire: &crate::wire_optional::ConfigValue<'de>,
2692        ) -> ::core::option::Option<Self> {
2693            if let Some(inner) = wire.as_ref() {
2694                Some(Box::new(::fidl_next::FromWireRef::from_wire_ref(inner)))
2695            } else {
2696                None
2697            }
2698        }
2699    }
2700
2701    #[doc = " Declares a configuration capability.\n\n To learn more about configuration capabilities, see:\n https://fuchsia.dev/fuchsia-src/glossary#configuration-capability\n or:\n https://fuchsia.dev/fuchsia-src/docs/concepts/components/v2/capabilities/configuration\n"]
2702    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
2703    pub struct Configuration {
2704        pub name: ::core::option::Option<::std::string::String>,
2705
2706        pub value: ::core::option::Option<crate::natural::ConfigValue>,
2707    }
2708
2709    impl Configuration {
2710        fn __max_ordinal(&self) -> usize {
2711            if self.value.is_some() {
2712                return 2;
2713            }
2714
2715            if self.name.is_some() {
2716                return 1;
2717            }
2718
2719            0
2720        }
2721    }
2722
2723    unsafe impl<___E> ::fidl_next::Encode<crate::wire::Configuration<'static>, ___E> for Configuration
2724    where
2725        ___E: ::fidl_next::Encoder + ?Sized,
2726    {
2727        #[inline]
2728        fn encode(
2729            mut self,
2730            encoder: &mut ___E,
2731            out: &mut ::core::mem::MaybeUninit<crate::wire::Configuration<'static>>,
2732            _: (),
2733        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
2734            ::fidl_next::munge!(let crate::wire::Configuration { table } = out);
2735
2736            let max_ord = self.__max_ordinal();
2737
2738            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
2739            ::fidl_next::Wire::zero_padding(&mut out);
2740
2741            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
2742                ::fidl_next::wire::Envelope,
2743            >(encoder, max_ord);
2744
2745            for i in 1..=max_ord {
2746                match i {
2747                    2 => {
2748                        if let Some(value) = self.value.take() {
2749                            ::fidl_next::wire::Envelope::encode_value::<
2750                                crate::wire::ConfigValue<'static>,
2751                                ___E,
2752                            >(
2753                                value, preallocated.encoder, &mut out, ()
2754                            )?;
2755                        } else {
2756                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
2757                        }
2758                    }
2759
2760                    1 => {
2761                        if let Some(value) = self.name.take() {
2762                            ::fidl_next::wire::Envelope::encode_value::<
2763                                ::fidl_next::wire::String<'static>,
2764                                ___E,
2765                            >(
2766                                value, preallocated.encoder, &mut out, 100
2767                            )?;
2768                        } else {
2769                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
2770                        }
2771                    }
2772
2773                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
2774                }
2775                unsafe {
2776                    preallocated.write_next(out.assume_init_ref());
2777                }
2778            }
2779
2780            ::fidl_next::wire::Table::encode_len(table, max_ord);
2781
2782            Ok(())
2783        }
2784    }
2785
2786    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::Configuration<'static>, ___E>
2787        for &'a Configuration
2788    where
2789        ___E: ::fidl_next::Encoder + ?Sized,
2790    {
2791        #[inline]
2792        fn encode(
2793            self,
2794            encoder: &mut ___E,
2795            out: &mut ::core::mem::MaybeUninit<crate::wire::Configuration<'static>>,
2796            _: (),
2797        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
2798            ::fidl_next::munge!(let crate::wire::Configuration { table } = out);
2799
2800            let max_ord = self.__max_ordinal();
2801
2802            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
2803            ::fidl_next::Wire::zero_padding(&mut out);
2804
2805            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
2806                ::fidl_next::wire::Envelope,
2807            >(encoder, max_ord);
2808
2809            for i in 1..=max_ord {
2810                match i {
2811                    2 => {
2812                        if let Some(value) = &self.value {
2813                            ::fidl_next::wire::Envelope::encode_value::<
2814                                crate::wire::ConfigValue<'static>,
2815                                ___E,
2816                            >(
2817                                value, preallocated.encoder, &mut out, ()
2818                            )?;
2819                        } else {
2820                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
2821                        }
2822                    }
2823
2824                    1 => {
2825                        if let Some(value) = &self.name {
2826                            ::fidl_next::wire::Envelope::encode_value::<
2827                                ::fidl_next::wire::String<'static>,
2828                                ___E,
2829                            >(
2830                                value, preallocated.encoder, &mut out, 100
2831                            )?;
2832                        } else {
2833                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
2834                        }
2835                    }
2836
2837                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
2838                }
2839                unsafe {
2840                    preallocated.write_next(out.assume_init_ref());
2841                }
2842            }
2843
2844            ::fidl_next::wire::Table::encode_len(table, max_ord);
2845
2846            Ok(())
2847        }
2848    }
2849
2850    impl<'de> ::fidl_next::FromWire<crate::wire::Configuration<'de>> for Configuration {
2851        #[inline]
2852        fn from_wire(wire_: crate::wire::Configuration<'de>) -> Self {
2853            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
2854
2855            let name = wire_.table.get(1);
2856
2857            let value = wire_.table.get(2);
2858
2859            Self {
2860                name: name.map(|envelope| {
2861                    ::fidl_next::FromWire::from_wire(unsafe {
2862                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
2863                    })
2864                }),
2865
2866                value: value.map(|envelope| {
2867                    ::fidl_next::FromWire::from_wire(unsafe {
2868                        envelope.read_unchecked::<crate::wire::ConfigValue<'de>>()
2869                    })
2870                }),
2871            }
2872        }
2873    }
2874
2875    impl<'de> ::fidl_next::FromWireRef<crate::wire::Configuration<'de>> for Configuration {
2876        #[inline]
2877        fn from_wire_ref(wire: &crate::wire::Configuration<'de>) -> Self {
2878            Self {
2879                name: wire.table.get(1).map(|envelope| {
2880                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
2881                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
2882                    })
2883                }),
2884
2885                value: wire.table.get(2).map(|envelope| {
2886                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
2887                        envelope.deref_unchecked::<crate::wire::ConfigValue<'de>>()
2888                    })
2889                }),
2890            }
2891        }
2892    }
2893
2894    #[doc = " Path in a dictionary. The format is similar to a directory path, except no `.` or `..`.\n is allowed and each path segment must conform to the format of the `name` type.\n\n The \"dirname\" (first to the penultimate segment, or empty if there is one\n segment) represents a sequence of nested dictionaries.\n The \"basename\" (last segment) identifies a capability in the last nested\n dictionary.\n"]
2895    pub type DictionaryPath = ::std::string::String;
2896
2897    #[doc = " `DeliveryType` may be used when declaring a capability, and specifies under\n what conditions the framework will open the capability from the provider\n component\'s outgoing directory when there is a request for this capability.\n"]
2898    #[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
2899    #[repr(u32)]
2900    pub enum DeliveryType {
2901        Immediate = 0,
2902        OnReadable = 1,
2903        UnknownOrdinal_(u32) = 2,
2904    }
2905    impl ::std::convert::From<u32> for DeliveryType {
2906        fn from(value: u32) -> Self {
2907            match value {
2908                0 => Self::Immediate,
2909                1 => Self::OnReadable,
2910
2911                _ => Self::UnknownOrdinal_(value),
2912            }
2913        }
2914    }
2915
2916    unsafe impl<___E> ::fidl_next::Encode<crate::wire::DeliveryType, ___E> for DeliveryType
2917    where
2918        ___E: ?Sized,
2919    {
2920        #[inline]
2921        fn encode(
2922            self,
2923            encoder: &mut ___E,
2924            out: &mut ::core::mem::MaybeUninit<crate::wire::DeliveryType>,
2925            _: (),
2926        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
2927            ::fidl_next::Encode::encode(&self, encoder, out, ())
2928        }
2929    }
2930
2931    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::DeliveryType, ___E> for &'a DeliveryType
2932    where
2933        ___E: ?Sized,
2934    {
2935        #[inline]
2936        fn encode(
2937            self,
2938            encoder: &mut ___E,
2939            out: &mut ::core::mem::MaybeUninit<crate::wire::DeliveryType>,
2940            _: (),
2941        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
2942            ::fidl_next::munge!(let crate::wire::DeliveryType { value } = out);
2943            let _ = value.write(::fidl_next::wire::Uint32::from(match *self {
2944                DeliveryType::Immediate => 0,
2945
2946                DeliveryType::OnReadable => 1,
2947
2948                DeliveryType::UnknownOrdinal_(value) => value,
2949            }));
2950
2951            Ok(())
2952        }
2953    }
2954
2955    impl ::core::convert::From<crate::wire::DeliveryType> for DeliveryType {
2956        fn from(wire: crate::wire::DeliveryType) -> Self {
2957            match u32::from(wire.value) {
2958                0 => Self::Immediate,
2959
2960                1 => Self::OnReadable,
2961
2962                value => Self::UnknownOrdinal_(value),
2963            }
2964        }
2965    }
2966
2967    impl ::fidl_next::FromWire<crate::wire::DeliveryType> for DeliveryType {
2968        #[inline]
2969        fn from_wire(wire: crate::wire::DeliveryType) -> Self {
2970            Self::from(wire)
2971        }
2972    }
2973
2974    impl ::fidl_next::FromWireRef<crate::wire::DeliveryType> for DeliveryType {
2975        #[inline]
2976        fn from_wire_ref(wire: &crate::wire::DeliveryType) -> Self {
2977            Self::from(*wire)
2978        }
2979    }
2980
2981    #[doc = " Declares a protocol capability backed by this component.\n\n To learn more about protocols, see:\n https://fuchsia.dev/fuchsia-src/glossary#protocol\n"]
2982    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
2983    pub struct Protocol {
2984        pub name: ::core::option::Option<::std::string::String>,
2985
2986        pub source_path: ::core::option::Option<::std::string::String>,
2987
2988        pub delivery: ::core::option::Option<crate::natural::DeliveryType>,
2989    }
2990
2991    impl Protocol {
2992        fn __max_ordinal(&self) -> usize {
2993            if self.delivery.is_some() {
2994                return 3;
2995            }
2996
2997            if self.source_path.is_some() {
2998                return 2;
2999            }
3000
3001            if self.name.is_some() {
3002                return 1;
3003            }
3004
3005            0
3006        }
3007    }
3008
3009    unsafe impl<___E> ::fidl_next::Encode<crate::wire::Protocol<'static>, ___E> for Protocol
3010    where
3011        ___E: ::fidl_next::Encoder + ?Sized,
3012    {
3013        #[inline]
3014        fn encode(
3015            mut self,
3016            encoder: &mut ___E,
3017            out: &mut ::core::mem::MaybeUninit<crate::wire::Protocol<'static>>,
3018            _: (),
3019        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
3020            ::fidl_next::munge!(let crate::wire::Protocol { table } = out);
3021
3022            let max_ord = self.__max_ordinal();
3023
3024            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
3025            ::fidl_next::Wire::zero_padding(&mut out);
3026
3027            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
3028                ::fidl_next::wire::Envelope,
3029            >(encoder, max_ord);
3030
3031            for i in 1..=max_ord {
3032                match i {
3033                    3 => {
3034                        if let Some(value) = self.delivery.take() {
3035                            ::fidl_next::wire::Envelope::encode_value::<
3036                                crate::wire::DeliveryType,
3037                                ___E,
3038                            >(
3039                                value, preallocated.encoder, &mut out, ()
3040                            )?;
3041                        } else {
3042                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
3043                        }
3044                    }
3045
3046                    2 => {
3047                        if let Some(value) = self.source_path.take() {
3048                            ::fidl_next::wire::Envelope::encode_value::<
3049                                ::fidl_next::wire::String<'static>,
3050                                ___E,
3051                            >(
3052                                value, preallocated.encoder, &mut out, 1024
3053                            )?;
3054                        } else {
3055                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
3056                        }
3057                    }
3058
3059                    1 => {
3060                        if let Some(value) = self.name.take() {
3061                            ::fidl_next::wire::Envelope::encode_value::<
3062                                ::fidl_next::wire::String<'static>,
3063                                ___E,
3064                            >(
3065                                value, preallocated.encoder, &mut out, 100
3066                            )?;
3067                        } else {
3068                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
3069                        }
3070                    }
3071
3072                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
3073                }
3074                unsafe {
3075                    preallocated.write_next(out.assume_init_ref());
3076                }
3077            }
3078
3079            ::fidl_next::wire::Table::encode_len(table, max_ord);
3080
3081            Ok(())
3082        }
3083    }
3084
3085    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::Protocol<'static>, ___E> for &'a Protocol
3086    where
3087        ___E: ::fidl_next::Encoder + ?Sized,
3088    {
3089        #[inline]
3090        fn encode(
3091            self,
3092            encoder: &mut ___E,
3093            out: &mut ::core::mem::MaybeUninit<crate::wire::Protocol<'static>>,
3094            _: (),
3095        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
3096            ::fidl_next::munge!(let crate::wire::Protocol { table } = out);
3097
3098            let max_ord = self.__max_ordinal();
3099
3100            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
3101            ::fidl_next::Wire::zero_padding(&mut out);
3102
3103            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
3104                ::fidl_next::wire::Envelope,
3105            >(encoder, max_ord);
3106
3107            for i in 1..=max_ord {
3108                match i {
3109                    3 => {
3110                        if let Some(value) = &self.delivery {
3111                            ::fidl_next::wire::Envelope::encode_value::<
3112                                crate::wire::DeliveryType,
3113                                ___E,
3114                            >(
3115                                value, preallocated.encoder, &mut out, ()
3116                            )?;
3117                        } else {
3118                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
3119                        }
3120                    }
3121
3122                    2 => {
3123                        if let Some(value) = &self.source_path {
3124                            ::fidl_next::wire::Envelope::encode_value::<
3125                                ::fidl_next::wire::String<'static>,
3126                                ___E,
3127                            >(
3128                                value, preallocated.encoder, &mut out, 1024
3129                            )?;
3130                        } else {
3131                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
3132                        }
3133                    }
3134
3135                    1 => {
3136                        if let Some(value) = &self.name {
3137                            ::fidl_next::wire::Envelope::encode_value::<
3138                                ::fidl_next::wire::String<'static>,
3139                                ___E,
3140                            >(
3141                                value, preallocated.encoder, &mut out, 100
3142                            )?;
3143                        } else {
3144                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
3145                        }
3146                    }
3147
3148                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
3149                }
3150                unsafe {
3151                    preallocated.write_next(out.assume_init_ref());
3152                }
3153            }
3154
3155            ::fidl_next::wire::Table::encode_len(table, max_ord);
3156
3157            Ok(())
3158        }
3159    }
3160
3161    impl<'de> ::fidl_next::FromWire<crate::wire::Protocol<'de>> for Protocol {
3162        #[inline]
3163        fn from_wire(wire_: crate::wire::Protocol<'de>) -> Self {
3164            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
3165
3166            let name = wire_.table.get(1);
3167
3168            let source_path = wire_.table.get(2);
3169
3170            let delivery = wire_.table.get(3);
3171
3172            Self {
3173                name: name.map(|envelope| {
3174                    ::fidl_next::FromWire::from_wire(unsafe {
3175                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
3176                    })
3177                }),
3178
3179                source_path: source_path.map(|envelope| {
3180                    ::fidl_next::FromWire::from_wire(unsafe {
3181                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
3182                    })
3183                }),
3184
3185                delivery: delivery.map(|envelope| {
3186                    ::fidl_next::FromWire::from_wire(unsafe {
3187                        envelope.read_unchecked::<crate::wire::DeliveryType>()
3188                    })
3189                }),
3190            }
3191        }
3192    }
3193
3194    impl<'de> ::fidl_next::FromWireRef<crate::wire::Protocol<'de>> for Protocol {
3195        #[inline]
3196        fn from_wire_ref(wire: &crate::wire::Protocol<'de>) -> Self {
3197            Self {
3198                name: wire.table.get(1).map(|envelope| {
3199                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
3200                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
3201                    })
3202                }),
3203
3204                source_path: wire.table.get(2).map(|envelope| {
3205                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
3206                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
3207                    })
3208                }),
3209
3210                delivery: wire.table.get(3).map(|envelope| {
3211                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
3212                        envelope.deref_unchecked::<crate::wire::DeliveryType>()
3213                    })
3214                }),
3215            }
3216        }
3217    }
3218
3219    #[doc = " A reference to the environment.\n"]
3220    pub type EnvironmentRef = ();
3221
3222    #[doc = " A reference to a capability source or destination relative to this\n component.\n"]
3223    #[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
3224    pub enum Ref {
3225        Parent(crate::natural::ParentRef),
3226
3227        Self_(crate::natural::SelfRef),
3228
3229        Child(crate::natural::ChildRef),
3230
3231        Collection(crate::natural::CollectionRef),
3232
3233        Framework(crate::natural::FrameworkRef),
3234
3235        Capability(crate::natural::CapabilityRef),
3236
3237        Debug(crate::natural::DebugRef),
3238
3239        VoidType(crate::natural::VoidRef),
3240
3241        Environment(crate::natural::EnvironmentRef),
3242
3243        UnknownOrdinal_(u64),
3244    }
3245
3246    impl Ref {
3247        pub fn is_unknown(&self) -> bool {
3248            #[allow(unreachable_patterns)]
3249            match self {
3250                Self::UnknownOrdinal_(_) => true,
3251                _ => false,
3252            }
3253        }
3254    }
3255
3256    unsafe impl<___E> ::fidl_next::Encode<crate::wire::Ref<'static>, ___E> for Ref
3257    where
3258        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
3259        ___E: ::fidl_next::Encoder,
3260    {
3261        #[inline]
3262        fn encode(
3263            self,
3264            encoder: &mut ___E,
3265            out: &mut ::core::mem::MaybeUninit<crate::wire::Ref<'static>>,
3266            _: (),
3267        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
3268            ::fidl_next::munge!(let crate::wire::Ref { raw, _phantom: _ } = out);
3269
3270            match self {
3271                Self::Parent(value) => ::fidl_next::wire::Union::encode_as::<
3272                    ___E,
3273                    crate::wire::ParentRef,
3274                >(value, 1, encoder, raw, ())?,
3275
3276                Self::Self_(value) => ::fidl_next::wire::Union::encode_as::<
3277                    ___E,
3278                    crate::wire::SelfRef,
3279                >(value, 2, encoder, raw, ())?,
3280
3281                Self::Child(value) => ::fidl_next::wire::Union::encode_as::<
3282                    ___E,
3283                    crate::wire::ChildRef<'static>,
3284                >(value, 3, encoder, raw, ())?,
3285
3286                Self::Collection(value) => ::fidl_next::wire::Union::encode_as::<
3287                    ___E,
3288                    crate::wire::CollectionRef<'static>,
3289                >(value, 4, encoder, raw, ())?,
3290
3291                Self::Framework(value) => ::fidl_next::wire::Union::encode_as::<
3292                    ___E,
3293                    crate::wire::FrameworkRef,
3294                >(value, 5, encoder, raw, ())?,
3295
3296                Self::Capability(value) => ::fidl_next::wire::Union::encode_as::<
3297                    ___E,
3298                    crate::wire::CapabilityRef<'static>,
3299                >(value, 6, encoder, raw, ())?,
3300
3301                Self::Debug(value) => ::fidl_next::wire::Union::encode_as::<
3302                    ___E,
3303                    crate::wire::DebugRef,
3304                >(value, 7, encoder, raw, ())?,
3305
3306                Self::VoidType(value) => ::fidl_next::wire::Union::encode_as::<
3307                    ___E,
3308                    crate::wire::VoidRef,
3309                >(value, 8, encoder, raw, ())?,
3310
3311                Self::Environment(value) => ::fidl_next::wire::Union::encode_as::<
3312                    ___E,
3313                    crate::wire::EnvironmentRef,
3314                >(value, 9, encoder, raw, ())?,
3315
3316                Self::UnknownOrdinal_(ordinal) => {
3317                    return Err(::fidl_next::EncodeError::UnknownUnionOrdinal(ordinal as usize));
3318                }
3319            }
3320
3321            Ok(())
3322        }
3323    }
3324
3325    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::Ref<'static>, ___E> for &'a Ref
3326    where
3327        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
3328        ___E: ::fidl_next::Encoder,
3329    {
3330        #[inline]
3331        fn encode(
3332            self,
3333            encoder: &mut ___E,
3334            out: &mut ::core::mem::MaybeUninit<crate::wire::Ref<'static>>,
3335            _: (),
3336        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
3337            ::fidl_next::munge!(let crate::wire::Ref { raw, _phantom: _ } = out);
3338
3339            match self {
3340                Ref::Parent(value) => ::fidl_next::wire::Union::encode_as::<
3341                    ___E,
3342                    crate::wire::ParentRef,
3343                >(value, 1, encoder, raw, ())?,
3344
3345                Ref::Self_(value) => ::fidl_next::wire::Union::encode_as::<
3346                    ___E,
3347                    crate::wire::SelfRef,
3348                >(value, 2, encoder, raw, ())?,
3349
3350                Ref::Child(value) => ::fidl_next::wire::Union::encode_as::<
3351                    ___E,
3352                    crate::wire::ChildRef<'static>,
3353                >(value, 3, encoder, raw, ())?,
3354
3355                Ref::Collection(value) => ::fidl_next::wire::Union::encode_as::<
3356                    ___E,
3357                    crate::wire::CollectionRef<'static>,
3358                >(value, 4, encoder, raw, ())?,
3359
3360                Ref::Framework(value) => ::fidl_next::wire::Union::encode_as::<
3361                    ___E,
3362                    crate::wire::FrameworkRef,
3363                >(value, 5, encoder, raw, ())?,
3364
3365                Ref::Capability(value) => ::fidl_next::wire::Union::encode_as::<
3366                    ___E,
3367                    crate::wire::CapabilityRef<'static>,
3368                >(value, 6, encoder, raw, ())?,
3369
3370                Ref::Debug(value) => ::fidl_next::wire::Union::encode_as::<
3371                    ___E,
3372                    crate::wire::DebugRef,
3373                >(value, 7, encoder, raw, ())?,
3374
3375                Ref::VoidType(value) => ::fidl_next::wire::Union::encode_as::<
3376                    ___E,
3377                    crate::wire::VoidRef,
3378                >(value, 8, encoder, raw, ())?,
3379
3380                Ref::Environment(value) => ::fidl_next::wire::Union::encode_as::<
3381                    ___E,
3382                    crate::wire::EnvironmentRef,
3383                >(value, 9, encoder, raw, ())?,
3384
3385                Ref::UnknownOrdinal_(ordinal) => {
3386                    return Err(::fidl_next::EncodeError::UnknownUnionOrdinal(*ordinal as usize));
3387                }
3388            }
3389
3390            Ok(())
3391        }
3392    }
3393
3394    unsafe impl<___E> ::fidl_next::EncodeOption<crate::wire_optional::Ref<'static>, ___E> for Ref
3395    where
3396        ___E: ?Sized,
3397        Ref: ::fidl_next::Encode<crate::wire::Ref<'static>, ___E>,
3398    {
3399        #[inline]
3400        fn encode_option(
3401            this: ::core::option::Option<Self>,
3402            encoder: &mut ___E,
3403            out: &mut ::core::mem::MaybeUninit<crate::wire_optional::Ref<'static>>,
3404            _: (),
3405        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
3406            ::fidl_next::munge!(let crate::wire_optional::Ref { raw, _phantom: _ } = &mut *out);
3407
3408            if let Some(inner) = this {
3409                let value_out = unsafe { &mut *out.as_mut_ptr().cast() };
3410                ::fidl_next::Encode::encode(inner, encoder, value_out, ())?;
3411            } else {
3412                ::fidl_next::wire::Union::encode_absent(raw);
3413            }
3414
3415            Ok(())
3416        }
3417    }
3418
3419    unsafe impl<'a, ___E> ::fidl_next::EncodeOption<crate::wire_optional::Ref<'static>, ___E>
3420        for &'a Ref
3421    where
3422        ___E: ?Sized,
3423        &'a Ref: ::fidl_next::Encode<crate::wire::Ref<'static>, ___E>,
3424    {
3425        #[inline]
3426        fn encode_option(
3427            this: ::core::option::Option<Self>,
3428            encoder: &mut ___E,
3429            out: &mut ::core::mem::MaybeUninit<crate::wire_optional::Ref<'static>>,
3430            _: (),
3431        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
3432            ::fidl_next::munge!(let crate::wire_optional::Ref { raw, _phantom: _ } = &mut *out);
3433
3434            if let Some(inner) = this {
3435                let value_out = unsafe { &mut *out.as_mut_ptr().cast() };
3436                ::fidl_next::Encode::encode(inner, encoder, value_out, ())?;
3437            } else {
3438                ::fidl_next::wire::Union::encode_absent(raw);
3439            }
3440
3441            Ok(())
3442        }
3443    }
3444
3445    impl<'de> ::fidl_next::FromWire<crate::wire::Ref<'de>> for Ref {
3446        #[inline]
3447        fn from_wire(wire: crate::wire::Ref<'de>) -> Self {
3448            let wire = ::core::mem::ManuallyDrop::new(wire);
3449            match wire.raw.ordinal() {
3450                1 => Self::Parent(::fidl_next::FromWire::from_wire(unsafe {
3451                    wire.raw.get().read_unchecked::<crate::wire::ParentRef>()
3452                })),
3453
3454                2 => Self::Self_(::fidl_next::FromWire::from_wire(unsafe {
3455                    wire.raw.get().read_unchecked::<crate::wire::SelfRef>()
3456                })),
3457
3458                3 => Self::Child(::fidl_next::FromWire::from_wire(unsafe {
3459                    wire.raw.get().read_unchecked::<crate::wire::ChildRef<'de>>()
3460                })),
3461
3462                4 => Self::Collection(::fidl_next::FromWire::from_wire(unsafe {
3463                    wire.raw.get().read_unchecked::<crate::wire::CollectionRef<'de>>()
3464                })),
3465
3466                5 => Self::Framework(::fidl_next::FromWire::from_wire(unsafe {
3467                    wire.raw.get().read_unchecked::<crate::wire::FrameworkRef>()
3468                })),
3469
3470                6 => Self::Capability(::fidl_next::FromWire::from_wire(unsafe {
3471                    wire.raw.get().read_unchecked::<crate::wire::CapabilityRef<'de>>()
3472                })),
3473
3474                7 => Self::Debug(::fidl_next::FromWire::from_wire(unsafe {
3475                    wire.raw.get().read_unchecked::<crate::wire::DebugRef>()
3476                })),
3477
3478                8 => Self::VoidType(::fidl_next::FromWire::from_wire(unsafe {
3479                    wire.raw.get().read_unchecked::<crate::wire::VoidRef>()
3480                })),
3481
3482                9 => Self::Environment(::fidl_next::FromWire::from_wire(unsafe {
3483                    wire.raw.get().read_unchecked::<crate::wire::EnvironmentRef>()
3484                })),
3485
3486                ord => return Self::UnknownOrdinal_(ord as u64),
3487            }
3488        }
3489    }
3490
3491    impl<'de> ::fidl_next::FromWireRef<crate::wire::Ref<'de>> for Ref {
3492        #[inline]
3493        fn from_wire_ref(wire: &crate::wire::Ref<'de>) -> Self {
3494            match wire.raw.ordinal() {
3495                1 => Self::Parent(::fidl_next::FromWireRef::from_wire_ref(unsafe {
3496                    wire.raw.get().deref_unchecked::<crate::wire::ParentRef>()
3497                })),
3498
3499                2 => Self::Self_(::fidl_next::FromWireRef::from_wire_ref(unsafe {
3500                    wire.raw.get().deref_unchecked::<crate::wire::SelfRef>()
3501                })),
3502
3503                3 => Self::Child(::fidl_next::FromWireRef::from_wire_ref(unsafe {
3504                    wire.raw.get().deref_unchecked::<crate::wire::ChildRef<'de>>()
3505                })),
3506
3507                4 => Self::Collection(::fidl_next::FromWireRef::from_wire_ref(unsafe {
3508                    wire.raw.get().deref_unchecked::<crate::wire::CollectionRef<'de>>()
3509                })),
3510
3511                5 => Self::Framework(::fidl_next::FromWireRef::from_wire_ref(unsafe {
3512                    wire.raw.get().deref_unchecked::<crate::wire::FrameworkRef>()
3513                })),
3514
3515                6 => Self::Capability(::fidl_next::FromWireRef::from_wire_ref(unsafe {
3516                    wire.raw.get().deref_unchecked::<crate::wire::CapabilityRef<'de>>()
3517                })),
3518
3519                7 => Self::Debug(::fidl_next::FromWireRef::from_wire_ref(unsafe {
3520                    wire.raw.get().deref_unchecked::<crate::wire::DebugRef>()
3521                })),
3522
3523                8 => Self::VoidType(::fidl_next::FromWireRef::from_wire_ref(unsafe {
3524                    wire.raw.get().deref_unchecked::<crate::wire::VoidRef>()
3525                })),
3526
3527                9 => Self::Environment(::fidl_next::FromWireRef::from_wire_ref(unsafe {
3528                    wire.raw.get().deref_unchecked::<crate::wire::EnvironmentRef>()
3529                })),
3530
3531                ord => return Self::UnknownOrdinal_(ord as u64),
3532            }
3533        }
3534    }
3535
3536    impl<'de> ::fidl_next::FromWireOption<crate::wire_optional::Ref<'de>> for Ref {
3537        #[inline]
3538        fn from_wire_option(wire: crate::wire_optional::Ref<'de>) -> ::core::option::Option<Self> {
3539            if let Some(inner) = wire.into_option() {
3540                Some(::fidl_next::FromWire::from_wire(inner))
3541            } else {
3542                None
3543            }
3544        }
3545    }
3546
3547    impl<'de> ::fidl_next::FromWireOption<crate::wire_optional::Ref<'de>> for Box<Ref> {
3548        #[inline]
3549        fn from_wire_option(wire: crate::wire_optional::Ref<'de>) -> ::core::option::Option<Self> {
3550            <Ref as ::fidl_next::FromWireOption<crate::wire_optional::Ref<'de>>>::from_wire_option(
3551                wire,
3552            )
3553            .map(Box::new)
3554        }
3555    }
3556
3557    impl<'de> ::fidl_next::FromWireOptionRef<crate::wire_optional::Ref<'de>> for Box<Ref> {
3558        #[inline]
3559        fn from_wire_option_ref(
3560            wire: &crate::wire_optional::Ref<'de>,
3561        ) -> ::core::option::Option<Self> {
3562            if let Some(inner) = wire.as_ref() {
3563                Some(Box::new(::fidl_next::FromWireRef::from_wire_ref(inner)))
3564            } else {
3565                None
3566            }
3567        }
3568    }
3569
3570    #[doc = " Declares a storage capability backed by a directory from which data, cache,\n or meta storage can be offered.\n"]
3571    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
3572    pub struct Storage {
3573        pub name: ::core::option::Option<::std::string::String>,
3574
3575        pub source: ::core::option::Option<crate::natural::Ref>,
3576
3577        pub backing_dir: ::core::option::Option<::std::string::String>,
3578
3579        pub subdir: ::core::option::Option<::std::string::String>,
3580
3581        pub storage_id: ::core::option::Option<crate::natural::StorageId>,
3582    }
3583
3584    impl Storage {
3585        fn __max_ordinal(&self) -> usize {
3586            if self.storage_id.is_some() {
3587                return 5;
3588            }
3589
3590            if self.subdir.is_some() {
3591                return 4;
3592            }
3593
3594            if self.backing_dir.is_some() {
3595                return 3;
3596            }
3597
3598            if self.source.is_some() {
3599                return 2;
3600            }
3601
3602            if self.name.is_some() {
3603                return 1;
3604            }
3605
3606            0
3607        }
3608    }
3609
3610    unsafe impl<___E> ::fidl_next::Encode<crate::wire::Storage<'static>, ___E> for Storage
3611    where
3612        ___E: ::fidl_next::Encoder + ?Sized,
3613    {
3614        #[inline]
3615        fn encode(
3616            mut self,
3617            encoder: &mut ___E,
3618            out: &mut ::core::mem::MaybeUninit<crate::wire::Storage<'static>>,
3619            _: (),
3620        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
3621            ::fidl_next::munge!(let crate::wire::Storage { table } = out);
3622
3623            let max_ord = self.__max_ordinal();
3624
3625            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
3626            ::fidl_next::Wire::zero_padding(&mut out);
3627
3628            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
3629                ::fidl_next::wire::Envelope,
3630            >(encoder, max_ord);
3631
3632            for i in 1..=max_ord {
3633                match i {
3634                    5 => {
3635                        if let Some(value) = self.storage_id.take() {
3636                            ::fidl_next::wire::Envelope::encode_value::<
3637                                crate::wire::StorageId,
3638                                ___E,
3639                            >(
3640                                value, preallocated.encoder, &mut out, ()
3641                            )?;
3642                        } else {
3643                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
3644                        }
3645                    }
3646
3647                    4 => {
3648                        if let Some(value) = self.subdir.take() {
3649                            ::fidl_next::wire::Envelope::encode_value::<
3650                                ::fidl_next::wire::String<'static>,
3651                                ___E,
3652                            >(
3653                                value, preallocated.encoder, &mut out, 1024
3654                            )?;
3655                        } else {
3656                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
3657                        }
3658                    }
3659
3660                    3 => {
3661                        if let Some(value) = self.backing_dir.take() {
3662                            ::fidl_next::wire::Envelope::encode_value::<
3663                                ::fidl_next::wire::String<'static>,
3664                                ___E,
3665                            >(
3666                                value, preallocated.encoder, &mut out, 100
3667                            )?;
3668                        } else {
3669                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
3670                        }
3671                    }
3672
3673                    2 => {
3674                        if let Some(value) = self.source.take() {
3675                            ::fidl_next::wire::Envelope::encode_value::<
3676                                crate::wire::Ref<'static>,
3677                                ___E,
3678                            >(
3679                                value, preallocated.encoder, &mut out, ()
3680                            )?;
3681                        } else {
3682                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
3683                        }
3684                    }
3685
3686                    1 => {
3687                        if let Some(value) = self.name.take() {
3688                            ::fidl_next::wire::Envelope::encode_value::<
3689                                ::fidl_next::wire::String<'static>,
3690                                ___E,
3691                            >(
3692                                value, preallocated.encoder, &mut out, 100
3693                            )?;
3694                        } else {
3695                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
3696                        }
3697                    }
3698
3699                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
3700                }
3701                unsafe {
3702                    preallocated.write_next(out.assume_init_ref());
3703                }
3704            }
3705
3706            ::fidl_next::wire::Table::encode_len(table, max_ord);
3707
3708            Ok(())
3709        }
3710    }
3711
3712    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::Storage<'static>, ___E> for &'a Storage
3713    where
3714        ___E: ::fidl_next::Encoder + ?Sized,
3715    {
3716        #[inline]
3717        fn encode(
3718            self,
3719            encoder: &mut ___E,
3720            out: &mut ::core::mem::MaybeUninit<crate::wire::Storage<'static>>,
3721            _: (),
3722        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
3723            ::fidl_next::munge!(let crate::wire::Storage { table } = out);
3724
3725            let max_ord = self.__max_ordinal();
3726
3727            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
3728            ::fidl_next::Wire::zero_padding(&mut out);
3729
3730            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
3731                ::fidl_next::wire::Envelope,
3732            >(encoder, max_ord);
3733
3734            for i in 1..=max_ord {
3735                match i {
3736                    5 => {
3737                        if let Some(value) = &self.storage_id {
3738                            ::fidl_next::wire::Envelope::encode_value::<
3739                                crate::wire::StorageId,
3740                                ___E,
3741                            >(
3742                                value, preallocated.encoder, &mut out, ()
3743                            )?;
3744                        } else {
3745                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
3746                        }
3747                    }
3748
3749                    4 => {
3750                        if let Some(value) = &self.subdir {
3751                            ::fidl_next::wire::Envelope::encode_value::<
3752                                ::fidl_next::wire::String<'static>,
3753                                ___E,
3754                            >(
3755                                value, preallocated.encoder, &mut out, 1024
3756                            )?;
3757                        } else {
3758                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
3759                        }
3760                    }
3761
3762                    3 => {
3763                        if let Some(value) = &self.backing_dir {
3764                            ::fidl_next::wire::Envelope::encode_value::<
3765                                ::fidl_next::wire::String<'static>,
3766                                ___E,
3767                            >(
3768                                value, preallocated.encoder, &mut out, 100
3769                            )?;
3770                        } else {
3771                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
3772                        }
3773                    }
3774
3775                    2 => {
3776                        if let Some(value) = &self.source {
3777                            ::fidl_next::wire::Envelope::encode_value::<
3778                                crate::wire::Ref<'static>,
3779                                ___E,
3780                            >(
3781                                value, preallocated.encoder, &mut out, ()
3782                            )?;
3783                        } else {
3784                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
3785                        }
3786                    }
3787
3788                    1 => {
3789                        if let Some(value) = &self.name {
3790                            ::fidl_next::wire::Envelope::encode_value::<
3791                                ::fidl_next::wire::String<'static>,
3792                                ___E,
3793                            >(
3794                                value, preallocated.encoder, &mut out, 100
3795                            )?;
3796                        } else {
3797                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
3798                        }
3799                    }
3800
3801                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
3802                }
3803                unsafe {
3804                    preallocated.write_next(out.assume_init_ref());
3805                }
3806            }
3807
3808            ::fidl_next::wire::Table::encode_len(table, max_ord);
3809
3810            Ok(())
3811        }
3812    }
3813
3814    impl<'de> ::fidl_next::FromWire<crate::wire::Storage<'de>> for Storage {
3815        #[inline]
3816        fn from_wire(wire_: crate::wire::Storage<'de>) -> Self {
3817            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
3818
3819            let name = wire_.table.get(1);
3820
3821            let source = wire_.table.get(2);
3822
3823            let backing_dir = wire_.table.get(3);
3824
3825            let subdir = wire_.table.get(4);
3826
3827            let storage_id = wire_.table.get(5);
3828
3829            Self {
3830                name: name.map(|envelope| {
3831                    ::fidl_next::FromWire::from_wire(unsafe {
3832                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
3833                    })
3834                }),
3835
3836                source: source.map(|envelope| {
3837                    ::fidl_next::FromWire::from_wire(unsafe {
3838                        envelope.read_unchecked::<crate::wire::Ref<'de>>()
3839                    })
3840                }),
3841
3842                backing_dir: backing_dir.map(|envelope| {
3843                    ::fidl_next::FromWire::from_wire(unsafe {
3844                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
3845                    })
3846                }),
3847
3848                subdir: subdir.map(|envelope| {
3849                    ::fidl_next::FromWire::from_wire(unsafe {
3850                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
3851                    })
3852                }),
3853
3854                storage_id: storage_id.map(|envelope| {
3855                    ::fidl_next::FromWire::from_wire(unsafe {
3856                        envelope.read_unchecked::<crate::wire::StorageId>()
3857                    })
3858                }),
3859            }
3860        }
3861    }
3862
3863    impl<'de> ::fidl_next::FromWireRef<crate::wire::Storage<'de>> for Storage {
3864        #[inline]
3865        fn from_wire_ref(wire: &crate::wire::Storage<'de>) -> Self {
3866            Self {
3867                name: wire.table.get(1).map(|envelope| {
3868                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
3869                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
3870                    })
3871                }),
3872
3873                source: wire.table.get(2).map(|envelope| {
3874                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
3875                        envelope.deref_unchecked::<crate::wire::Ref<'de>>()
3876                    })
3877                }),
3878
3879                backing_dir: wire.table.get(3).map(|envelope| {
3880                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
3881                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
3882                    })
3883                }),
3884
3885                subdir: wire.table.get(4).map(|envelope| {
3886                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
3887                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
3888                    })
3889                }),
3890
3891                storage_id: wire.table.get(5).map(|envelope| {
3892                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
3893                        envelope.deref_unchecked::<crate::wire::StorageId>()
3894                    })
3895                }),
3896            }
3897        }
3898    }
3899
3900    #[doc = " Declares a dictionary capability.\n"]
3901    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
3902    pub struct Dictionary {
3903        pub name: ::core::option::Option<::std::string::String>,
3904
3905        pub source: ::core::option::Option<crate::natural::Ref>,
3906
3907        pub source_dictionary: ::core::option::Option<::std::string::String>,
3908
3909        pub source_path: ::core::option::Option<::std::string::String>,
3910    }
3911
3912    impl Dictionary {
3913        fn __max_ordinal(&self) -> usize {
3914            if self.source_path.is_some() {
3915                return 4;
3916            }
3917
3918            if self.source_dictionary.is_some() {
3919                return 3;
3920            }
3921
3922            if self.source.is_some() {
3923                return 2;
3924            }
3925
3926            if self.name.is_some() {
3927                return 1;
3928            }
3929
3930            0
3931        }
3932    }
3933
3934    unsafe impl<___E> ::fidl_next::Encode<crate::wire::Dictionary<'static>, ___E> for Dictionary
3935    where
3936        ___E: ::fidl_next::Encoder + ?Sized,
3937    {
3938        #[inline]
3939        fn encode(
3940            mut self,
3941            encoder: &mut ___E,
3942            out: &mut ::core::mem::MaybeUninit<crate::wire::Dictionary<'static>>,
3943            _: (),
3944        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
3945            ::fidl_next::munge!(let crate::wire::Dictionary { table } = out);
3946
3947            let max_ord = self.__max_ordinal();
3948
3949            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
3950            ::fidl_next::Wire::zero_padding(&mut out);
3951
3952            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
3953                ::fidl_next::wire::Envelope,
3954            >(encoder, max_ord);
3955
3956            for i in 1..=max_ord {
3957                match i {
3958                    4 => {
3959                        if let Some(value) = self.source_path.take() {
3960                            ::fidl_next::wire::Envelope::encode_value::<
3961                                ::fidl_next::wire::String<'static>,
3962                                ___E,
3963                            >(
3964                                value, preallocated.encoder, &mut out, 1024
3965                            )?;
3966                        } else {
3967                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
3968                        }
3969                    }
3970
3971                    3 => {
3972                        if let Some(value) = self.source_dictionary.take() {
3973                            ::fidl_next::wire::Envelope::encode_value::<
3974                                ::fidl_next::wire::String<'static>,
3975                                ___E,
3976                            >(
3977                                value, preallocated.encoder, &mut out, 1024
3978                            )?;
3979                        } else {
3980                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
3981                        }
3982                    }
3983
3984                    2 => {
3985                        if let Some(value) = self.source.take() {
3986                            ::fidl_next::wire::Envelope::encode_value::<
3987                                crate::wire::Ref<'static>,
3988                                ___E,
3989                            >(
3990                                value, preallocated.encoder, &mut out, ()
3991                            )?;
3992                        } else {
3993                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
3994                        }
3995                    }
3996
3997                    1 => {
3998                        if let Some(value) = self.name.take() {
3999                            ::fidl_next::wire::Envelope::encode_value::<
4000                                ::fidl_next::wire::String<'static>,
4001                                ___E,
4002                            >(
4003                                value, preallocated.encoder, &mut out, 100
4004                            )?;
4005                        } else {
4006                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
4007                        }
4008                    }
4009
4010                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
4011                }
4012                unsafe {
4013                    preallocated.write_next(out.assume_init_ref());
4014                }
4015            }
4016
4017            ::fidl_next::wire::Table::encode_len(table, max_ord);
4018
4019            Ok(())
4020        }
4021    }
4022
4023    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::Dictionary<'static>, ___E> for &'a Dictionary
4024    where
4025        ___E: ::fidl_next::Encoder + ?Sized,
4026    {
4027        #[inline]
4028        fn encode(
4029            self,
4030            encoder: &mut ___E,
4031            out: &mut ::core::mem::MaybeUninit<crate::wire::Dictionary<'static>>,
4032            _: (),
4033        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
4034            ::fidl_next::munge!(let crate::wire::Dictionary { table } = out);
4035
4036            let max_ord = self.__max_ordinal();
4037
4038            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
4039            ::fidl_next::Wire::zero_padding(&mut out);
4040
4041            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
4042                ::fidl_next::wire::Envelope,
4043            >(encoder, max_ord);
4044
4045            for i in 1..=max_ord {
4046                match i {
4047                    4 => {
4048                        if let Some(value) = &self.source_path {
4049                            ::fidl_next::wire::Envelope::encode_value::<
4050                                ::fidl_next::wire::String<'static>,
4051                                ___E,
4052                            >(
4053                                value, preallocated.encoder, &mut out, 1024
4054                            )?;
4055                        } else {
4056                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
4057                        }
4058                    }
4059
4060                    3 => {
4061                        if let Some(value) = &self.source_dictionary {
4062                            ::fidl_next::wire::Envelope::encode_value::<
4063                                ::fidl_next::wire::String<'static>,
4064                                ___E,
4065                            >(
4066                                value, preallocated.encoder, &mut out, 1024
4067                            )?;
4068                        } else {
4069                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
4070                        }
4071                    }
4072
4073                    2 => {
4074                        if let Some(value) = &self.source {
4075                            ::fidl_next::wire::Envelope::encode_value::<
4076                                crate::wire::Ref<'static>,
4077                                ___E,
4078                            >(
4079                                value, preallocated.encoder, &mut out, ()
4080                            )?;
4081                        } else {
4082                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
4083                        }
4084                    }
4085
4086                    1 => {
4087                        if let Some(value) = &self.name {
4088                            ::fidl_next::wire::Envelope::encode_value::<
4089                                ::fidl_next::wire::String<'static>,
4090                                ___E,
4091                            >(
4092                                value, preallocated.encoder, &mut out, 100
4093                            )?;
4094                        } else {
4095                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
4096                        }
4097                    }
4098
4099                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
4100                }
4101                unsafe {
4102                    preallocated.write_next(out.assume_init_ref());
4103                }
4104            }
4105
4106            ::fidl_next::wire::Table::encode_len(table, max_ord);
4107
4108            Ok(())
4109        }
4110    }
4111
4112    impl<'de> ::fidl_next::FromWire<crate::wire::Dictionary<'de>> for Dictionary {
4113        #[inline]
4114        fn from_wire(wire_: crate::wire::Dictionary<'de>) -> Self {
4115            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
4116
4117            let name = wire_.table.get(1);
4118
4119            let source = wire_.table.get(2);
4120
4121            let source_dictionary = wire_.table.get(3);
4122
4123            let source_path = wire_.table.get(4);
4124
4125            Self {
4126                name: name.map(|envelope| {
4127                    ::fidl_next::FromWire::from_wire(unsafe {
4128                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
4129                    })
4130                }),
4131
4132                source: source.map(|envelope| {
4133                    ::fidl_next::FromWire::from_wire(unsafe {
4134                        envelope.read_unchecked::<crate::wire::Ref<'de>>()
4135                    })
4136                }),
4137
4138                source_dictionary: source_dictionary.map(|envelope| {
4139                    ::fidl_next::FromWire::from_wire(unsafe {
4140                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
4141                    })
4142                }),
4143
4144                source_path: source_path.map(|envelope| {
4145                    ::fidl_next::FromWire::from_wire(unsafe {
4146                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
4147                    })
4148                }),
4149            }
4150        }
4151    }
4152
4153    impl<'de> ::fidl_next::FromWireRef<crate::wire::Dictionary<'de>> for Dictionary {
4154        #[inline]
4155        fn from_wire_ref(wire: &crate::wire::Dictionary<'de>) -> Self {
4156            Self {
4157                name: wire.table.get(1).map(|envelope| {
4158                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
4159                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
4160                    })
4161                }),
4162
4163                source: wire.table.get(2).map(|envelope| {
4164                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
4165                        envelope.deref_unchecked::<crate::wire::Ref<'de>>()
4166                    })
4167                }),
4168
4169                source_dictionary: wire.table.get(3).map(|envelope| {
4170                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
4171                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
4172                    })
4173                }),
4174
4175                source_path: wire.table.get(4).map(|envelope| {
4176                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
4177                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
4178                    })
4179                }),
4180            }
4181        }
4182    }
4183
4184    #[doc = " Declares a capability defined by this component.\n"]
4185    #[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
4186    pub enum Capability {
4187        Service(crate::natural::Service),
4188
4189        Protocol(crate::natural::Protocol),
4190
4191        Directory(crate::natural::Directory),
4192
4193        Storage(crate::natural::Storage),
4194
4195        Runner(crate::natural::Runner),
4196
4197        Resolver(crate::natural::Resolver),
4198
4199        EventStream(crate::natural::EventStream),
4200
4201        Dictionary(crate::natural::Dictionary),
4202
4203        Config(crate::natural::Configuration),
4204
4205        UnknownOrdinal_(u64),
4206    }
4207
4208    impl Capability {
4209        pub fn is_unknown(&self) -> bool {
4210            #[allow(unreachable_patterns)]
4211            match self {
4212                Self::UnknownOrdinal_(_) => true,
4213                _ => false,
4214            }
4215        }
4216    }
4217
4218    unsafe impl<___E> ::fidl_next::Encode<crate::wire::Capability<'static>, ___E> for Capability
4219    where
4220        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
4221        ___E: ::fidl_next::Encoder,
4222    {
4223        #[inline]
4224        fn encode(
4225            self,
4226            encoder: &mut ___E,
4227            out: &mut ::core::mem::MaybeUninit<crate::wire::Capability<'static>>,
4228            _: (),
4229        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
4230            ::fidl_next::munge!(let crate::wire::Capability { raw, _phantom: _ } = out);
4231
4232            match self {
4233                Self::Service(value) => ::fidl_next::wire::Union::encode_as::<
4234                    ___E,
4235                    crate::wire::Service<'static>,
4236                >(value, 1, encoder, raw, ())?,
4237
4238                Self::Protocol(value) => ::fidl_next::wire::Union::encode_as::<
4239                    ___E,
4240                    crate::wire::Protocol<'static>,
4241                >(value, 2, encoder, raw, ())?,
4242
4243                Self::Directory(value) => ::fidl_next::wire::Union::encode_as::<
4244                    ___E,
4245                    crate::wire::Directory<'static>,
4246                >(value, 3, encoder, raw, ())?,
4247
4248                Self::Storage(value) => ::fidl_next::wire::Union::encode_as::<
4249                    ___E,
4250                    crate::wire::Storage<'static>,
4251                >(value, 4, encoder, raw, ())?,
4252
4253                Self::Runner(value) => ::fidl_next::wire::Union::encode_as::<
4254                    ___E,
4255                    crate::wire::Runner<'static>,
4256                >(value, 5, encoder, raw, ())?,
4257
4258                Self::Resolver(value) => ::fidl_next::wire::Union::encode_as::<
4259                    ___E,
4260                    crate::wire::Resolver<'static>,
4261                >(value, 6, encoder, raw, ())?,
4262
4263                Self::EventStream(value) => ::fidl_next::wire::Union::encode_as::<
4264                    ___E,
4265                    crate::wire::EventStream<'static>,
4266                >(value, 8, encoder, raw, ())?,
4267
4268                Self::Dictionary(value) => ::fidl_next::wire::Union::encode_as::<
4269                    ___E,
4270                    crate::wire::Dictionary<'static>,
4271                >(value, 9, encoder, raw, ())?,
4272
4273                Self::Config(value) => ::fidl_next::wire::Union::encode_as::<
4274                    ___E,
4275                    crate::wire::Configuration<'static>,
4276                >(value, 10, encoder, raw, ())?,
4277
4278                Self::UnknownOrdinal_(ordinal) => {
4279                    return Err(::fidl_next::EncodeError::UnknownUnionOrdinal(ordinal as usize));
4280                }
4281            }
4282
4283            Ok(())
4284        }
4285    }
4286
4287    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::Capability<'static>, ___E> for &'a Capability
4288    where
4289        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
4290        ___E: ::fidl_next::Encoder,
4291    {
4292        #[inline]
4293        fn encode(
4294            self,
4295            encoder: &mut ___E,
4296            out: &mut ::core::mem::MaybeUninit<crate::wire::Capability<'static>>,
4297            _: (),
4298        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
4299            ::fidl_next::munge!(let crate::wire::Capability { raw, _phantom: _ } = out);
4300
4301            match self {
4302                Capability::Service(value) => ::fidl_next::wire::Union::encode_as::<
4303                    ___E,
4304                    crate::wire::Service<'static>,
4305                >(value, 1, encoder, raw, ())?,
4306
4307                Capability::Protocol(value) => ::fidl_next::wire::Union::encode_as::<
4308                    ___E,
4309                    crate::wire::Protocol<'static>,
4310                >(value, 2, encoder, raw, ())?,
4311
4312                Capability::Directory(value) => ::fidl_next::wire::Union::encode_as::<
4313                    ___E,
4314                    crate::wire::Directory<'static>,
4315                >(value, 3, encoder, raw, ())?,
4316
4317                Capability::Storage(value) => ::fidl_next::wire::Union::encode_as::<
4318                    ___E,
4319                    crate::wire::Storage<'static>,
4320                >(value, 4, encoder, raw, ())?,
4321
4322                Capability::Runner(value) => ::fidl_next::wire::Union::encode_as::<
4323                    ___E,
4324                    crate::wire::Runner<'static>,
4325                >(value, 5, encoder, raw, ())?,
4326
4327                Capability::Resolver(value) => ::fidl_next::wire::Union::encode_as::<
4328                    ___E,
4329                    crate::wire::Resolver<'static>,
4330                >(value, 6, encoder, raw, ())?,
4331
4332                Capability::EventStream(value) => ::fidl_next::wire::Union::encode_as::<
4333                    ___E,
4334                    crate::wire::EventStream<'static>,
4335                >(value, 8, encoder, raw, ())?,
4336
4337                Capability::Dictionary(value) => ::fidl_next::wire::Union::encode_as::<
4338                    ___E,
4339                    crate::wire::Dictionary<'static>,
4340                >(value, 9, encoder, raw, ())?,
4341
4342                Capability::Config(value) => ::fidl_next::wire::Union::encode_as::<
4343                    ___E,
4344                    crate::wire::Configuration<'static>,
4345                >(value, 10, encoder, raw, ())?,
4346
4347                Capability::UnknownOrdinal_(ordinal) => {
4348                    return Err(::fidl_next::EncodeError::UnknownUnionOrdinal(*ordinal as usize));
4349                }
4350            }
4351
4352            Ok(())
4353        }
4354    }
4355
4356    unsafe impl<___E> ::fidl_next::EncodeOption<crate::wire_optional::Capability<'static>, ___E>
4357        for Capability
4358    where
4359        ___E: ?Sized,
4360        Capability: ::fidl_next::Encode<crate::wire::Capability<'static>, ___E>,
4361    {
4362        #[inline]
4363        fn encode_option(
4364            this: ::core::option::Option<Self>,
4365            encoder: &mut ___E,
4366            out: &mut ::core::mem::MaybeUninit<crate::wire_optional::Capability<'static>>,
4367            _: (),
4368        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
4369            ::fidl_next::munge!(let crate::wire_optional::Capability { raw, _phantom: _ } = &mut *out);
4370
4371            if let Some(inner) = this {
4372                let value_out = unsafe { &mut *out.as_mut_ptr().cast() };
4373                ::fidl_next::Encode::encode(inner, encoder, value_out, ())?;
4374            } else {
4375                ::fidl_next::wire::Union::encode_absent(raw);
4376            }
4377
4378            Ok(())
4379        }
4380    }
4381
4382    unsafe impl<'a, ___E> ::fidl_next::EncodeOption<crate::wire_optional::Capability<'static>, ___E>
4383        for &'a Capability
4384    where
4385        ___E: ?Sized,
4386        &'a Capability: ::fidl_next::Encode<crate::wire::Capability<'static>, ___E>,
4387    {
4388        #[inline]
4389        fn encode_option(
4390            this: ::core::option::Option<Self>,
4391            encoder: &mut ___E,
4392            out: &mut ::core::mem::MaybeUninit<crate::wire_optional::Capability<'static>>,
4393            _: (),
4394        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
4395            ::fidl_next::munge!(let crate::wire_optional::Capability { raw, _phantom: _ } = &mut *out);
4396
4397            if let Some(inner) = this {
4398                let value_out = unsafe { &mut *out.as_mut_ptr().cast() };
4399                ::fidl_next::Encode::encode(inner, encoder, value_out, ())?;
4400            } else {
4401                ::fidl_next::wire::Union::encode_absent(raw);
4402            }
4403
4404            Ok(())
4405        }
4406    }
4407
4408    impl<'de> ::fidl_next::FromWire<crate::wire::Capability<'de>> for Capability {
4409        #[inline]
4410        fn from_wire(wire: crate::wire::Capability<'de>) -> Self {
4411            let wire = ::core::mem::ManuallyDrop::new(wire);
4412            match wire.raw.ordinal() {
4413                1 => Self::Service(::fidl_next::FromWire::from_wire(unsafe {
4414                    wire.raw.get().read_unchecked::<crate::wire::Service<'de>>()
4415                })),
4416
4417                2 => Self::Protocol(::fidl_next::FromWire::from_wire(unsafe {
4418                    wire.raw.get().read_unchecked::<crate::wire::Protocol<'de>>()
4419                })),
4420
4421                3 => Self::Directory(::fidl_next::FromWire::from_wire(unsafe {
4422                    wire.raw.get().read_unchecked::<crate::wire::Directory<'de>>()
4423                })),
4424
4425                4 => Self::Storage(::fidl_next::FromWire::from_wire(unsafe {
4426                    wire.raw.get().read_unchecked::<crate::wire::Storage<'de>>()
4427                })),
4428
4429                5 => Self::Runner(::fidl_next::FromWire::from_wire(unsafe {
4430                    wire.raw.get().read_unchecked::<crate::wire::Runner<'de>>()
4431                })),
4432
4433                6 => Self::Resolver(::fidl_next::FromWire::from_wire(unsafe {
4434                    wire.raw.get().read_unchecked::<crate::wire::Resolver<'de>>()
4435                })),
4436
4437                8 => Self::EventStream(::fidl_next::FromWire::from_wire(unsafe {
4438                    wire.raw.get().read_unchecked::<crate::wire::EventStream<'de>>()
4439                })),
4440
4441                9 => Self::Dictionary(::fidl_next::FromWire::from_wire(unsafe {
4442                    wire.raw.get().read_unchecked::<crate::wire::Dictionary<'de>>()
4443                })),
4444
4445                10 => Self::Config(::fidl_next::FromWire::from_wire(unsafe {
4446                    wire.raw.get().read_unchecked::<crate::wire::Configuration<'de>>()
4447                })),
4448
4449                ord => return Self::UnknownOrdinal_(ord as u64),
4450            }
4451        }
4452    }
4453
4454    impl<'de> ::fidl_next::FromWireRef<crate::wire::Capability<'de>> for Capability {
4455        #[inline]
4456        fn from_wire_ref(wire: &crate::wire::Capability<'de>) -> Self {
4457            match wire.raw.ordinal() {
4458                1 => Self::Service(::fidl_next::FromWireRef::from_wire_ref(unsafe {
4459                    wire.raw.get().deref_unchecked::<crate::wire::Service<'de>>()
4460                })),
4461
4462                2 => Self::Protocol(::fidl_next::FromWireRef::from_wire_ref(unsafe {
4463                    wire.raw.get().deref_unchecked::<crate::wire::Protocol<'de>>()
4464                })),
4465
4466                3 => Self::Directory(::fidl_next::FromWireRef::from_wire_ref(unsafe {
4467                    wire.raw.get().deref_unchecked::<crate::wire::Directory<'de>>()
4468                })),
4469
4470                4 => Self::Storage(::fidl_next::FromWireRef::from_wire_ref(unsafe {
4471                    wire.raw.get().deref_unchecked::<crate::wire::Storage<'de>>()
4472                })),
4473
4474                5 => Self::Runner(::fidl_next::FromWireRef::from_wire_ref(unsafe {
4475                    wire.raw.get().deref_unchecked::<crate::wire::Runner<'de>>()
4476                })),
4477
4478                6 => Self::Resolver(::fidl_next::FromWireRef::from_wire_ref(unsafe {
4479                    wire.raw.get().deref_unchecked::<crate::wire::Resolver<'de>>()
4480                })),
4481
4482                8 => Self::EventStream(::fidl_next::FromWireRef::from_wire_ref(unsafe {
4483                    wire.raw.get().deref_unchecked::<crate::wire::EventStream<'de>>()
4484                })),
4485
4486                9 => Self::Dictionary(::fidl_next::FromWireRef::from_wire_ref(unsafe {
4487                    wire.raw.get().deref_unchecked::<crate::wire::Dictionary<'de>>()
4488                })),
4489
4490                10 => Self::Config(::fidl_next::FromWireRef::from_wire_ref(unsafe {
4491                    wire.raw.get().deref_unchecked::<crate::wire::Configuration<'de>>()
4492                })),
4493
4494                ord => return Self::UnknownOrdinal_(ord as u64),
4495            }
4496        }
4497    }
4498
4499    impl<'de> ::fidl_next::FromWireOption<crate::wire_optional::Capability<'de>> for Capability {
4500        #[inline]
4501        fn from_wire_option(
4502            wire: crate::wire_optional::Capability<'de>,
4503        ) -> ::core::option::Option<Self> {
4504            if let Some(inner) = wire.into_option() {
4505                Some(::fidl_next::FromWire::from_wire(inner))
4506            } else {
4507                None
4508            }
4509        }
4510    }
4511
4512    impl<'de> ::fidl_next::FromWireOption<crate::wire_optional::Capability<'de>> for Box<Capability> {
4513        #[inline]
4514        fn from_wire_option(
4515            wire: crate::wire_optional::Capability<'de>,
4516        ) -> ::core::option::Option<Self> {
4517            <
4518            Capability as ::fidl_next::FromWireOption<crate::wire_optional::Capability<'de>>
4519        >::from_wire_option(wire).map(Box::new)
4520        }
4521    }
4522
4523    impl<'de> ::fidl_next::FromWireOptionRef<crate::wire_optional::Capability<'de>>
4524        for Box<Capability>
4525    {
4526        #[inline]
4527        fn from_wire_option_ref(
4528            wire: &crate::wire_optional::Capability<'de>,
4529        ) -> ::core::option::Option<Self> {
4530            if let Some(inner) = wire.as_ref() {
4531                Some(Box::new(::fidl_next::FromWireRef::from_wire_ref(inner)))
4532            } else {
4533                None
4534            }
4535        }
4536    }
4537
4538    #[doc = " Describes under what conditions the component may be started.\n"]
4539    #[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
4540    #[repr(u32)]
4541    pub enum StartupMode {
4542        Lazy = 0,
4543        Eager = 1,
4544    }
4545    impl ::core::convert::TryFrom<u32> for StartupMode {
4546        type Error = ::fidl_next::UnknownStrictEnumMemberError;
4547        fn try_from(
4548            value: u32,
4549        ) -> ::core::result::Result<Self, ::fidl_next::UnknownStrictEnumMemberError> {
4550            match value {
4551                0 => Ok(Self::Lazy),
4552                1 => Ok(Self::Eager),
4553
4554                _ => Err(::fidl_next::UnknownStrictEnumMemberError::new(value.into())),
4555            }
4556        }
4557    }
4558
4559    unsafe impl<___E> ::fidl_next::Encode<crate::wire::StartupMode, ___E> for StartupMode
4560    where
4561        ___E: ?Sized,
4562    {
4563        #[inline]
4564        fn encode(
4565            self,
4566            encoder: &mut ___E,
4567            out: &mut ::core::mem::MaybeUninit<crate::wire::StartupMode>,
4568            _: (),
4569        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
4570            ::fidl_next::Encode::encode(&self, encoder, out, ())
4571        }
4572    }
4573
4574    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::StartupMode, ___E> for &'a StartupMode
4575    where
4576        ___E: ?Sized,
4577    {
4578        #[inline]
4579        fn encode(
4580            self,
4581            encoder: &mut ___E,
4582            out: &mut ::core::mem::MaybeUninit<crate::wire::StartupMode>,
4583            _: (),
4584        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
4585            ::fidl_next::munge!(let crate::wire::StartupMode { value } = out);
4586            let _ = value.write(::fidl_next::wire::Uint32::from(match *self {
4587                StartupMode::Lazy => 0,
4588
4589                StartupMode::Eager => 1,
4590            }));
4591
4592            Ok(())
4593        }
4594    }
4595
4596    impl ::core::convert::From<crate::wire::StartupMode> for StartupMode {
4597        fn from(wire: crate::wire::StartupMode) -> Self {
4598            match u32::from(wire.value) {
4599                0 => Self::Lazy,
4600
4601                1 => Self::Eager,
4602
4603                _ => unsafe { ::core::hint::unreachable_unchecked() },
4604            }
4605        }
4606    }
4607
4608    impl ::fidl_next::FromWire<crate::wire::StartupMode> for StartupMode {
4609        #[inline]
4610        fn from_wire(wire: crate::wire::StartupMode) -> Self {
4611            Self::from(wire)
4612        }
4613    }
4614
4615    impl ::fidl_next::FromWireRef<crate::wire::StartupMode> for StartupMode {
4616        #[inline]
4617        fn from_wire_ref(wire: &crate::wire::StartupMode) -> Self {
4618            Self::from(*wire)
4619        }
4620    }
4621
4622    #[doc = " Describes the action to take if this component instance terminates\n unexpectedly.\n"]
4623    #[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
4624    #[repr(u32)]
4625    pub enum OnTerminate {
4626        None = 0,
4627        Reboot = 1,
4628    }
4629    impl ::core::convert::TryFrom<u32> for OnTerminate {
4630        type Error = ::fidl_next::UnknownStrictEnumMemberError;
4631        fn try_from(
4632            value: u32,
4633        ) -> ::core::result::Result<Self, ::fidl_next::UnknownStrictEnumMemberError> {
4634            match value {
4635                0 => Ok(Self::None),
4636                1 => Ok(Self::Reboot),
4637
4638                _ => Err(::fidl_next::UnknownStrictEnumMemberError::new(value.into())),
4639            }
4640        }
4641    }
4642
4643    unsafe impl<___E> ::fidl_next::Encode<crate::wire::OnTerminate, ___E> for OnTerminate
4644    where
4645        ___E: ?Sized,
4646    {
4647        #[inline]
4648        fn encode(
4649            self,
4650            encoder: &mut ___E,
4651            out: &mut ::core::mem::MaybeUninit<crate::wire::OnTerminate>,
4652            _: (),
4653        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
4654            ::fidl_next::Encode::encode(&self, encoder, out, ())
4655        }
4656    }
4657
4658    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::OnTerminate, ___E> for &'a OnTerminate
4659    where
4660        ___E: ?Sized,
4661    {
4662        #[inline]
4663        fn encode(
4664            self,
4665            encoder: &mut ___E,
4666            out: &mut ::core::mem::MaybeUninit<crate::wire::OnTerminate>,
4667            _: (),
4668        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
4669            ::fidl_next::munge!(let crate::wire::OnTerminate { value } = out);
4670            let _ = value.write(::fidl_next::wire::Uint32::from(match *self {
4671                OnTerminate::None => 0,
4672
4673                OnTerminate::Reboot => 1,
4674            }));
4675
4676            Ok(())
4677        }
4678    }
4679
4680    impl ::core::convert::From<crate::wire::OnTerminate> for OnTerminate {
4681        fn from(wire: crate::wire::OnTerminate) -> Self {
4682            match u32::from(wire.value) {
4683                0 => Self::None,
4684
4685                1 => Self::Reboot,
4686
4687                _ => unsafe { ::core::hint::unreachable_unchecked() },
4688            }
4689        }
4690    }
4691
4692    impl ::fidl_next::FromWire<crate::wire::OnTerminate> for OnTerminate {
4693        #[inline]
4694        fn from_wire(wire: crate::wire::OnTerminate) -> Self {
4695            Self::from(wire)
4696        }
4697    }
4698
4699    impl ::fidl_next::FromWireRef<crate::wire::OnTerminate> for OnTerminate {
4700        #[inline]
4701        fn from_wire_ref(wire: &crate::wire::OnTerminate) -> Self {
4702            Self::from(*wire)
4703        }
4704    }
4705
4706    #[doc = " The string identifier for a config field.\n"]
4707    pub type ConfigKey = ::std::string::String;
4708
4709    #[doc = " A directive to override the value of a particular configuration field in the child.\n"]
4710    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
4711    pub struct ConfigOverride {
4712        pub key: ::core::option::Option<::std::string::String>,
4713
4714        pub value: ::core::option::Option<crate::natural::ConfigValue>,
4715    }
4716
4717    impl ConfigOverride {
4718        fn __max_ordinal(&self) -> usize {
4719            if self.value.is_some() {
4720                return 2;
4721            }
4722
4723            if self.key.is_some() {
4724                return 1;
4725            }
4726
4727            0
4728        }
4729    }
4730
4731    unsafe impl<___E> ::fidl_next::Encode<crate::wire::ConfigOverride<'static>, ___E> for ConfigOverride
4732    where
4733        ___E: ::fidl_next::Encoder + ?Sized,
4734    {
4735        #[inline]
4736        fn encode(
4737            mut self,
4738            encoder: &mut ___E,
4739            out: &mut ::core::mem::MaybeUninit<crate::wire::ConfigOverride<'static>>,
4740            _: (),
4741        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
4742            ::fidl_next::munge!(let crate::wire::ConfigOverride { table } = out);
4743
4744            let max_ord = self.__max_ordinal();
4745
4746            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
4747            ::fidl_next::Wire::zero_padding(&mut out);
4748
4749            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
4750                ::fidl_next::wire::Envelope,
4751            >(encoder, max_ord);
4752
4753            for i in 1..=max_ord {
4754                match i {
4755                    2 => {
4756                        if let Some(value) = self.value.take() {
4757                            ::fidl_next::wire::Envelope::encode_value::<
4758                                crate::wire::ConfigValue<'static>,
4759                                ___E,
4760                            >(
4761                                value, preallocated.encoder, &mut out, ()
4762                            )?;
4763                        } else {
4764                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
4765                        }
4766                    }
4767
4768                    1 => {
4769                        if let Some(value) = self.key.take() {
4770                            ::fidl_next::wire::Envelope::encode_value::<
4771                                ::fidl_next::wire::String<'static>,
4772                                ___E,
4773                            >(
4774                                value, preallocated.encoder, &mut out, 64
4775                            )?;
4776                        } else {
4777                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
4778                        }
4779                    }
4780
4781                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
4782                }
4783                unsafe {
4784                    preallocated.write_next(out.assume_init_ref());
4785                }
4786            }
4787
4788            ::fidl_next::wire::Table::encode_len(table, max_ord);
4789
4790            Ok(())
4791        }
4792    }
4793
4794    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::ConfigOverride<'static>, ___E>
4795        for &'a ConfigOverride
4796    where
4797        ___E: ::fidl_next::Encoder + ?Sized,
4798    {
4799        #[inline]
4800        fn encode(
4801            self,
4802            encoder: &mut ___E,
4803            out: &mut ::core::mem::MaybeUninit<crate::wire::ConfigOverride<'static>>,
4804            _: (),
4805        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
4806            ::fidl_next::munge!(let crate::wire::ConfigOverride { table } = out);
4807
4808            let max_ord = self.__max_ordinal();
4809
4810            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
4811            ::fidl_next::Wire::zero_padding(&mut out);
4812
4813            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
4814                ::fidl_next::wire::Envelope,
4815            >(encoder, max_ord);
4816
4817            for i in 1..=max_ord {
4818                match i {
4819                    2 => {
4820                        if let Some(value) = &self.value {
4821                            ::fidl_next::wire::Envelope::encode_value::<
4822                                crate::wire::ConfigValue<'static>,
4823                                ___E,
4824                            >(
4825                                value, preallocated.encoder, &mut out, ()
4826                            )?;
4827                        } else {
4828                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
4829                        }
4830                    }
4831
4832                    1 => {
4833                        if let Some(value) = &self.key {
4834                            ::fidl_next::wire::Envelope::encode_value::<
4835                                ::fidl_next::wire::String<'static>,
4836                                ___E,
4837                            >(
4838                                value, preallocated.encoder, &mut out, 64
4839                            )?;
4840                        } else {
4841                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
4842                        }
4843                    }
4844
4845                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
4846                }
4847                unsafe {
4848                    preallocated.write_next(out.assume_init_ref());
4849                }
4850            }
4851
4852            ::fidl_next::wire::Table::encode_len(table, max_ord);
4853
4854            Ok(())
4855        }
4856    }
4857
4858    impl<'de> ::fidl_next::FromWire<crate::wire::ConfigOverride<'de>> for ConfigOverride {
4859        #[inline]
4860        fn from_wire(wire_: crate::wire::ConfigOverride<'de>) -> Self {
4861            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
4862
4863            let key = wire_.table.get(1);
4864
4865            let value = wire_.table.get(2);
4866
4867            Self {
4868                key: key.map(|envelope| {
4869                    ::fidl_next::FromWire::from_wire(unsafe {
4870                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
4871                    })
4872                }),
4873
4874                value: value.map(|envelope| {
4875                    ::fidl_next::FromWire::from_wire(unsafe {
4876                        envelope.read_unchecked::<crate::wire::ConfigValue<'de>>()
4877                    })
4878                }),
4879            }
4880        }
4881    }
4882
4883    impl<'de> ::fidl_next::FromWireRef<crate::wire::ConfigOverride<'de>> for ConfigOverride {
4884        #[inline]
4885        fn from_wire_ref(wire: &crate::wire::ConfigOverride<'de>) -> Self {
4886            Self {
4887                key: wire.table.get(1).map(|envelope| {
4888                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
4889                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
4890                    })
4891                }),
4892
4893                value: wire.table.get(2).map(|envelope| {
4894                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
4895                        envelope.deref_unchecked::<crate::wire::ConfigValue<'de>>()
4896                    })
4897                }),
4898            }
4899        }
4900    }
4901
4902    #[doc = " Statically declares a child component instance.\n"]
4903    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
4904    pub struct Child {
4905        pub name: ::core::option::Option<::std::string::String>,
4906
4907        pub url: ::core::option::Option<::std::string::String>,
4908
4909        pub startup: ::core::option::Option<crate::natural::StartupMode>,
4910
4911        pub environment: ::core::option::Option<::std::string::String>,
4912
4913        pub on_terminate: ::core::option::Option<crate::natural::OnTerminate>,
4914
4915        pub config_overrides:
4916            ::core::option::Option<::std::vec::Vec<crate::natural::ConfigOverride>>,
4917    }
4918
4919    impl Child {
4920        fn __max_ordinal(&self) -> usize {
4921            if self.config_overrides.is_some() {
4922                return 6;
4923            }
4924
4925            if self.on_terminate.is_some() {
4926                return 5;
4927            }
4928
4929            if self.environment.is_some() {
4930                return 4;
4931            }
4932
4933            if self.startup.is_some() {
4934                return 3;
4935            }
4936
4937            if self.url.is_some() {
4938                return 2;
4939            }
4940
4941            if self.name.is_some() {
4942                return 1;
4943            }
4944
4945            0
4946        }
4947    }
4948
4949    unsafe impl<___E> ::fidl_next::Encode<crate::wire::Child<'static>, ___E> for Child
4950    where
4951        ___E: ::fidl_next::Encoder + ?Sized,
4952    {
4953        #[inline]
4954        fn encode(
4955            mut self,
4956            encoder: &mut ___E,
4957            out: &mut ::core::mem::MaybeUninit<crate::wire::Child<'static>>,
4958            _: (),
4959        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
4960            ::fidl_next::munge!(let crate::wire::Child { table } = out);
4961
4962            let max_ord = self.__max_ordinal();
4963
4964            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
4965            ::fidl_next::Wire::zero_padding(&mut out);
4966
4967            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
4968                ::fidl_next::wire::Envelope,
4969            >(encoder, max_ord);
4970
4971            for i in 1..=max_ord {
4972                match i {
4973                    6 => {
4974                        if let Some(value) = self.config_overrides.take() {
4975                            ::fidl_next::wire::Envelope::encode_value::<
4976                                ::fidl_next::wire::Vector<
4977                                    'static,
4978                                    crate::wire::ConfigOverride<'static>,
4979                                >,
4980                                ___E,
4981                            >(
4982                                value, preallocated.encoder, &mut out, (4294967295, ())
4983                            )?;
4984                        } else {
4985                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
4986                        }
4987                    }
4988
4989                    5 => {
4990                        if let Some(value) = self.on_terminate.take() {
4991                            ::fidl_next::wire::Envelope::encode_value::<
4992                                crate::wire::OnTerminate,
4993                                ___E,
4994                            >(
4995                                value, preallocated.encoder, &mut out, ()
4996                            )?;
4997                        } else {
4998                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
4999                        }
5000                    }
5001
5002                    4 => {
5003                        if let Some(value) = self.environment.take() {
5004                            ::fidl_next::wire::Envelope::encode_value::<
5005                                ::fidl_next::wire::String<'static>,
5006                                ___E,
5007                            >(
5008                                value, preallocated.encoder, &mut out, 100
5009                            )?;
5010                        } else {
5011                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
5012                        }
5013                    }
5014
5015                    3 => {
5016                        if let Some(value) = self.startup.take() {
5017                            ::fidl_next::wire::Envelope::encode_value::<
5018                                crate::wire::StartupMode,
5019                                ___E,
5020                            >(
5021                                value, preallocated.encoder, &mut out, ()
5022                            )?;
5023                        } else {
5024                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
5025                        }
5026                    }
5027
5028                    2 => {
5029                        if let Some(value) = self.url.take() {
5030                            ::fidl_next::wire::Envelope::encode_value::<
5031                                ::fidl_next::wire::String<'static>,
5032                                ___E,
5033                            >(
5034                                value, preallocated.encoder, &mut out, 4096
5035                            )?;
5036                        } else {
5037                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
5038                        }
5039                    }
5040
5041                    1 => {
5042                        if let Some(value) = self.name.take() {
5043                            ::fidl_next::wire::Envelope::encode_value::<
5044                                ::fidl_next::wire::String<'static>,
5045                                ___E,
5046                            >(
5047                                value, preallocated.encoder, &mut out, 1024
5048                            )?;
5049                        } else {
5050                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
5051                        }
5052                    }
5053
5054                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
5055                }
5056                unsafe {
5057                    preallocated.write_next(out.assume_init_ref());
5058                }
5059            }
5060
5061            ::fidl_next::wire::Table::encode_len(table, max_ord);
5062
5063            Ok(())
5064        }
5065    }
5066
5067    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::Child<'static>, ___E> for &'a Child
5068    where
5069        ___E: ::fidl_next::Encoder + ?Sized,
5070    {
5071        #[inline]
5072        fn encode(
5073            self,
5074            encoder: &mut ___E,
5075            out: &mut ::core::mem::MaybeUninit<crate::wire::Child<'static>>,
5076            _: (),
5077        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
5078            ::fidl_next::munge!(let crate::wire::Child { table } = out);
5079
5080            let max_ord = self.__max_ordinal();
5081
5082            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
5083            ::fidl_next::Wire::zero_padding(&mut out);
5084
5085            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
5086                ::fidl_next::wire::Envelope,
5087            >(encoder, max_ord);
5088
5089            for i in 1..=max_ord {
5090                match i {
5091                    6 => {
5092                        if let Some(value) = &self.config_overrides {
5093                            ::fidl_next::wire::Envelope::encode_value::<
5094                                ::fidl_next::wire::Vector<
5095                                    'static,
5096                                    crate::wire::ConfigOverride<'static>,
5097                                >,
5098                                ___E,
5099                            >(
5100                                value, preallocated.encoder, &mut out, (4294967295, ())
5101                            )?;
5102                        } else {
5103                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
5104                        }
5105                    }
5106
5107                    5 => {
5108                        if let Some(value) = &self.on_terminate {
5109                            ::fidl_next::wire::Envelope::encode_value::<
5110                                crate::wire::OnTerminate,
5111                                ___E,
5112                            >(
5113                                value, preallocated.encoder, &mut out, ()
5114                            )?;
5115                        } else {
5116                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
5117                        }
5118                    }
5119
5120                    4 => {
5121                        if let Some(value) = &self.environment {
5122                            ::fidl_next::wire::Envelope::encode_value::<
5123                                ::fidl_next::wire::String<'static>,
5124                                ___E,
5125                            >(
5126                                value, preallocated.encoder, &mut out, 100
5127                            )?;
5128                        } else {
5129                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
5130                        }
5131                    }
5132
5133                    3 => {
5134                        if let Some(value) = &self.startup {
5135                            ::fidl_next::wire::Envelope::encode_value::<
5136                                crate::wire::StartupMode,
5137                                ___E,
5138                            >(
5139                                value, preallocated.encoder, &mut out, ()
5140                            )?;
5141                        } else {
5142                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
5143                        }
5144                    }
5145
5146                    2 => {
5147                        if let Some(value) = &self.url {
5148                            ::fidl_next::wire::Envelope::encode_value::<
5149                                ::fidl_next::wire::String<'static>,
5150                                ___E,
5151                            >(
5152                                value, preallocated.encoder, &mut out, 4096
5153                            )?;
5154                        } else {
5155                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
5156                        }
5157                    }
5158
5159                    1 => {
5160                        if let Some(value) = &self.name {
5161                            ::fidl_next::wire::Envelope::encode_value::<
5162                                ::fidl_next::wire::String<'static>,
5163                                ___E,
5164                            >(
5165                                value, preallocated.encoder, &mut out, 1024
5166                            )?;
5167                        } else {
5168                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
5169                        }
5170                    }
5171
5172                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
5173                }
5174                unsafe {
5175                    preallocated.write_next(out.assume_init_ref());
5176                }
5177            }
5178
5179            ::fidl_next::wire::Table::encode_len(table, max_ord);
5180
5181            Ok(())
5182        }
5183    }
5184
5185    impl<'de> ::fidl_next::FromWire<crate::wire::Child<'de>> for Child {
5186        #[inline]
5187        fn from_wire(wire_: crate::wire::Child<'de>) -> Self {
5188            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
5189
5190            let name = wire_.table.get(1);
5191
5192            let url = wire_.table.get(2);
5193
5194            let startup = wire_.table.get(3);
5195
5196            let environment = wire_.table.get(4);
5197
5198            let on_terminate = wire_.table.get(5);
5199
5200            let config_overrides = wire_.table.get(6);
5201
5202            Self {
5203
5204
5205                name: name.map(|envelope| ::fidl_next::FromWire::from_wire(
5206                    unsafe { envelope.read_unchecked::<::fidl_next::wire::String<'de>>() }
5207                )),
5208
5209
5210                url: url.map(|envelope| ::fidl_next::FromWire::from_wire(
5211                    unsafe { envelope.read_unchecked::<::fidl_next::wire::String<'de>>() }
5212                )),
5213
5214
5215                startup: startup.map(|envelope| ::fidl_next::FromWire::from_wire(
5216                    unsafe { envelope.read_unchecked::<crate::wire::StartupMode>() }
5217                )),
5218
5219
5220                environment: environment.map(|envelope| ::fidl_next::FromWire::from_wire(
5221                    unsafe { envelope.read_unchecked::<::fidl_next::wire::String<'de>>() }
5222                )),
5223
5224
5225                on_terminate: on_terminate.map(|envelope| ::fidl_next::FromWire::from_wire(
5226                    unsafe { envelope.read_unchecked::<crate::wire::OnTerminate>() }
5227                )),
5228
5229
5230                config_overrides: config_overrides.map(|envelope| ::fidl_next::FromWire::from_wire(
5231                    unsafe { envelope.read_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::ConfigOverride<'de>>>() }
5232                )),
5233
5234        }
5235        }
5236    }
5237
5238    impl<'de> ::fidl_next::FromWireRef<crate::wire::Child<'de>> for Child {
5239        #[inline]
5240        fn from_wire_ref(wire: &crate::wire::Child<'de>) -> Self {
5241            Self {
5242
5243
5244                name: wire.table.get(1)
5245                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
5246                        unsafe { envelope.deref_unchecked::<::fidl_next::wire::String<'de>>() }
5247                    )),
5248
5249
5250                url: wire.table.get(2)
5251                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
5252                        unsafe { envelope.deref_unchecked::<::fidl_next::wire::String<'de>>() }
5253                    )),
5254
5255
5256                startup: wire.table.get(3)
5257                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
5258                        unsafe { envelope.deref_unchecked::<crate::wire::StartupMode>() }
5259                    )),
5260
5261
5262                environment: wire.table.get(4)
5263                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
5264                        unsafe { envelope.deref_unchecked::<::fidl_next::wire::String<'de>>() }
5265                    )),
5266
5267
5268                on_terminate: wire.table.get(5)
5269                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
5270                        unsafe { envelope.deref_unchecked::<crate::wire::OnTerminate>() }
5271                    )),
5272
5273
5274                config_overrides: wire.table.get(6)
5275                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
5276                        unsafe { envelope.deref_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::ConfigOverride<'de>>>() }
5277                    )),
5278
5279        }
5280        }
5281    }
5282
5283    #[doc = " The durability of component instances created in a collection.\n"]
5284    #[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
5285    #[repr(u32)]
5286    pub enum Durability {
5287        Transient = 2,
5288        SingleRun = 3,
5289    }
5290    impl ::core::convert::TryFrom<u32> for Durability {
5291        type Error = ::fidl_next::UnknownStrictEnumMemberError;
5292        fn try_from(
5293            value: u32,
5294        ) -> ::core::result::Result<Self, ::fidl_next::UnknownStrictEnumMemberError> {
5295            match value {
5296                2 => Ok(Self::Transient),
5297                3 => Ok(Self::SingleRun),
5298
5299                _ => Err(::fidl_next::UnknownStrictEnumMemberError::new(value.into())),
5300            }
5301        }
5302    }
5303
5304    unsafe impl<___E> ::fidl_next::Encode<crate::wire::Durability, ___E> for Durability
5305    where
5306        ___E: ?Sized,
5307    {
5308        #[inline]
5309        fn encode(
5310            self,
5311            encoder: &mut ___E,
5312            out: &mut ::core::mem::MaybeUninit<crate::wire::Durability>,
5313            _: (),
5314        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
5315            ::fidl_next::Encode::encode(&self, encoder, out, ())
5316        }
5317    }
5318
5319    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::Durability, ___E> for &'a Durability
5320    where
5321        ___E: ?Sized,
5322    {
5323        #[inline]
5324        fn encode(
5325            self,
5326            encoder: &mut ___E,
5327            out: &mut ::core::mem::MaybeUninit<crate::wire::Durability>,
5328            _: (),
5329        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
5330            ::fidl_next::munge!(let crate::wire::Durability { value } = out);
5331            let _ = value.write(::fidl_next::wire::Uint32::from(match *self {
5332                Durability::Transient => 2,
5333
5334                Durability::SingleRun => 3,
5335            }));
5336
5337            Ok(())
5338        }
5339    }
5340
5341    impl ::core::convert::From<crate::wire::Durability> for Durability {
5342        fn from(wire: crate::wire::Durability) -> Self {
5343            match u32::from(wire.value) {
5344                2 => Self::Transient,
5345
5346                3 => Self::SingleRun,
5347
5348                _ => unsafe { ::core::hint::unreachable_unchecked() },
5349            }
5350        }
5351    }
5352
5353    impl ::fidl_next::FromWire<crate::wire::Durability> for Durability {
5354        #[inline]
5355        fn from_wire(wire: crate::wire::Durability) -> Self {
5356            Self::from(wire)
5357        }
5358    }
5359
5360    impl ::fidl_next::FromWireRef<crate::wire::Durability> for Durability {
5361        #[inline]
5362        fn from_wire_ref(wire: &crate::wire::Durability) -> Self {
5363            Self::from(*wire)
5364        }
5365    }
5366
5367    #[doc = " Statically declares a component instance collection.\n"]
5368    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
5369    pub struct Collection {
5370        pub name: ::core::option::Option<::std::string::String>,
5371
5372        pub durability: ::core::option::Option<crate::natural::Durability>,
5373
5374        pub environment: ::core::option::Option<::std::string::String>,
5375
5376        pub allowed_offers: ::core::option::Option<crate::natural::AllowedOffers>,
5377
5378        pub allow_long_names: ::core::option::Option<bool>,
5379
5380        pub persistent_storage: ::core::option::Option<bool>,
5381    }
5382
5383    impl Collection {
5384        fn __max_ordinal(&self) -> usize {
5385            if self.persistent_storage.is_some() {
5386                return 6;
5387            }
5388
5389            if self.allow_long_names.is_some() {
5390                return 5;
5391            }
5392
5393            if self.allowed_offers.is_some() {
5394                return 4;
5395            }
5396
5397            if self.environment.is_some() {
5398                return 3;
5399            }
5400
5401            if self.durability.is_some() {
5402                return 2;
5403            }
5404
5405            if self.name.is_some() {
5406                return 1;
5407            }
5408
5409            0
5410        }
5411    }
5412
5413    unsafe impl<___E> ::fidl_next::Encode<crate::wire::Collection<'static>, ___E> for Collection
5414    where
5415        ___E: ::fidl_next::Encoder + ?Sized,
5416    {
5417        #[inline]
5418        fn encode(
5419            mut self,
5420            encoder: &mut ___E,
5421            out: &mut ::core::mem::MaybeUninit<crate::wire::Collection<'static>>,
5422            _: (),
5423        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
5424            ::fidl_next::munge!(let crate::wire::Collection { table } = out);
5425
5426            let max_ord = self.__max_ordinal();
5427
5428            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
5429            ::fidl_next::Wire::zero_padding(&mut out);
5430
5431            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
5432                ::fidl_next::wire::Envelope,
5433            >(encoder, max_ord);
5434
5435            for i in 1..=max_ord {
5436                match i {
5437                    6 => {
5438                        if let Some(value) = self.persistent_storage.take() {
5439                            ::fidl_next::wire::Envelope::encode_value::<bool, ___E>(
5440                                value,
5441                                preallocated.encoder,
5442                                &mut out,
5443                                (),
5444                            )?;
5445                        } else {
5446                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
5447                        }
5448                    }
5449
5450                    5 => {
5451                        if let Some(value) = self.allow_long_names.take() {
5452                            ::fidl_next::wire::Envelope::encode_value::<bool, ___E>(
5453                                value,
5454                                preallocated.encoder,
5455                                &mut out,
5456                                (),
5457                            )?;
5458                        } else {
5459                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
5460                        }
5461                    }
5462
5463                    4 => {
5464                        if let Some(value) = self.allowed_offers.take() {
5465                            ::fidl_next::wire::Envelope::encode_value::<
5466                                crate::wire::AllowedOffers,
5467                                ___E,
5468                            >(
5469                                value, preallocated.encoder, &mut out, ()
5470                            )?;
5471                        } else {
5472                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
5473                        }
5474                    }
5475
5476                    3 => {
5477                        if let Some(value) = self.environment.take() {
5478                            ::fidl_next::wire::Envelope::encode_value::<
5479                                ::fidl_next::wire::String<'static>,
5480                                ___E,
5481                            >(
5482                                value, preallocated.encoder, &mut out, 100
5483                            )?;
5484                        } else {
5485                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
5486                        }
5487                    }
5488
5489                    2 => {
5490                        if let Some(value) = self.durability.take() {
5491                            ::fidl_next::wire::Envelope::encode_value::<
5492                                crate::wire::Durability,
5493                                ___E,
5494                            >(
5495                                value, preallocated.encoder, &mut out, ()
5496                            )?;
5497                        } else {
5498                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
5499                        }
5500                    }
5501
5502                    1 => {
5503                        if let Some(value) = self.name.take() {
5504                            ::fidl_next::wire::Envelope::encode_value::<
5505                                ::fidl_next::wire::String<'static>,
5506                                ___E,
5507                            >(
5508                                value, preallocated.encoder, &mut out, 100
5509                            )?;
5510                        } else {
5511                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
5512                        }
5513                    }
5514
5515                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
5516                }
5517                unsafe {
5518                    preallocated.write_next(out.assume_init_ref());
5519                }
5520            }
5521
5522            ::fidl_next::wire::Table::encode_len(table, max_ord);
5523
5524            Ok(())
5525        }
5526    }
5527
5528    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::Collection<'static>, ___E> for &'a Collection
5529    where
5530        ___E: ::fidl_next::Encoder + ?Sized,
5531    {
5532        #[inline]
5533        fn encode(
5534            self,
5535            encoder: &mut ___E,
5536            out: &mut ::core::mem::MaybeUninit<crate::wire::Collection<'static>>,
5537            _: (),
5538        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
5539            ::fidl_next::munge!(let crate::wire::Collection { table } = out);
5540
5541            let max_ord = self.__max_ordinal();
5542
5543            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
5544            ::fidl_next::Wire::zero_padding(&mut out);
5545
5546            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
5547                ::fidl_next::wire::Envelope,
5548            >(encoder, max_ord);
5549
5550            for i in 1..=max_ord {
5551                match i {
5552                    6 => {
5553                        if let Some(value) = &self.persistent_storage {
5554                            ::fidl_next::wire::Envelope::encode_value::<bool, ___E>(
5555                                value,
5556                                preallocated.encoder,
5557                                &mut out,
5558                                (),
5559                            )?;
5560                        } else {
5561                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
5562                        }
5563                    }
5564
5565                    5 => {
5566                        if let Some(value) = &self.allow_long_names {
5567                            ::fidl_next::wire::Envelope::encode_value::<bool, ___E>(
5568                                value,
5569                                preallocated.encoder,
5570                                &mut out,
5571                                (),
5572                            )?;
5573                        } else {
5574                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
5575                        }
5576                    }
5577
5578                    4 => {
5579                        if let Some(value) = &self.allowed_offers {
5580                            ::fidl_next::wire::Envelope::encode_value::<
5581                                crate::wire::AllowedOffers,
5582                                ___E,
5583                            >(
5584                                value, preallocated.encoder, &mut out, ()
5585                            )?;
5586                        } else {
5587                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
5588                        }
5589                    }
5590
5591                    3 => {
5592                        if let Some(value) = &self.environment {
5593                            ::fidl_next::wire::Envelope::encode_value::<
5594                                ::fidl_next::wire::String<'static>,
5595                                ___E,
5596                            >(
5597                                value, preallocated.encoder, &mut out, 100
5598                            )?;
5599                        } else {
5600                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
5601                        }
5602                    }
5603
5604                    2 => {
5605                        if let Some(value) = &self.durability {
5606                            ::fidl_next::wire::Envelope::encode_value::<
5607                                crate::wire::Durability,
5608                                ___E,
5609                            >(
5610                                value, preallocated.encoder, &mut out, ()
5611                            )?;
5612                        } else {
5613                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
5614                        }
5615                    }
5616
5617                    1 => {
5618                        if let Some(value) = &self.name {
5619                            ::fidl_next::wire::Envelope::encode_value::<
5620                                ::fidl_next::wire::String<'static>,
5621                                ___E,
5622                            >(
5623                                value, preallocated.encoder, &mut out, 100
5624                            )?;
5625                        } else {
5626                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
5627                        }
5628                    }
5629
5630                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
5631                }
5632                unsafe {
5633                    preallocated.write_next(out.assume_init_ref());
5634                }
5635            }
5636
5637            ::fidl_next::wire::Table::encode_len(table, max_ord);
5638
5639            Ok(())
5640        }
5641    }
5642
5643    impl<'de> ::fidl_next::FromWire<crate::wire::Collection<'de>> for Collection {
5644        #[inline]
5645        fn from_wire(wire_: crate::wire::Collection<'de>) -> Self {
5646            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
5647
5648            let name = wire_.table.get(1);
5649
5650            let durability = wire_.table.get(2);
5651
5652            let environment = wire_.table.get(3);
5653
5654            let allowed_offers = wire_.table.get(4);
5655
5656            let allow_long_names = wire_.table.get(5);
5657
5658            let persistent_storage = wire_.table.get(6);
5659
5660            Self {
5661                name: name.map(|envelope| {
5662                    ::fidl_next::FromWire::from_wire(unsafe {
5663                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
5664                    })
5665                }),
5666
5667                durability: durability.map(|envelope| {
5668                    ::fidl_next::FromWire::from_wire(unsafe {
5669                        envelope.read_unchecked::<crate::wire::Durability>()
5670                    })
5671                }),
5672
5673                environment: environment.map(|envelope| {
5674                    ::fidl_next::FromWire::from_wire(unsafe {
5675                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
5676                    })
5677                }),
5678
5679                allowed_offers: allowed_offers.map(|envelope| {
5680                    ::fidl_next::FromWire::from_wire(unsafe {
5681                        envelope.read_unchecked::<crate::wire::AllowedOffers>()
5682                    })
5683                }),
5684
5685                allow_long_names: allow_long_names.map(|envelope| {
5686                    ::fidl_next::FromWire::from_wire(unsafe { envelope.read_unchecked::<bool>() })
5687                }),
5688
5689                persistent_storage: persistent_storage.map(|envelope| {
5690                    ::fidl_next::FromWire::from_wire(unsafe { envelope.read_unchecked::<bool>() })
5691                }),
5692            }
5693        }
5694    }
5695
5696    impl<'de> ::fidl_next::FromWireRef<crate::wire::Collection<'de>> for Collection {
5697        #[inline]
5698        fn from_wire_ref(wire: &crate::wire::Collection<'de>) -> Self {
5699            Self {
5700                name: wire.table.get(1).map(|envelope| {
5701                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
5702                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
5703                    })
5704                }),
5705
5706                durability: wire.table.get(2).map(|envelope| {
5707                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
5708                        envelope.deref_unchecked::<crate::wire::Durability>()
5709                    })
5710                }),
5711
5712                environment: wire.table.get(3).map(|envelope| {
5713                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
5714                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
5715                    })
5716                }),
5717
5718                allowed_offers: wire.table.get(4).map(|envelope| {
5719                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
5720                        envelope.deref_unchecked::<crate::wire::AllowedOffers>()
5721                    })
5722                }),
5723
5724                allow_long_names: wire.table.get(5).map(|envelope| {
5725                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
5726                        envelope.deref_unchecked::<bool>()
5727                    })
5728                }),
5729
5730                persistent_storage: wire.table.get(6).map(|envelope| {
5731                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
5732                        envelope.deref_unchecked::<bool>()
5733                    })
5734                }),
5735            }
5736        }
5737    }
5738
5739    #[doc = " Describes the type of dependency implied by the capability.\n"]
5740    #[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
5741    #[repr(u32)]
5742    pub enum DependencyType {
5743        Strong = 1,
5744        Weak = 2,
5745    }
5746    impl ::core::convert::TryFrom<u32> for DependencyType {
5747        type Error = ::fidl_next::UnknownStrictEnumMemberError;
5748        fn try_from(
5749            value: u32,
5750        ) -> ::core::result::Result<Self, ::fidl_next::UnknownStrictEnumMemberError> {
5751            match value {
5752                1 => Ok(Self::Strong),
5753                2 => Ok(Self::Weak),
5754
5755                _ => Err(::fidl_next::UnknownStrictEnumMemberError::new(value.into())),
5756            }
5757        }
5758    }
5759
5760    unsafe impl<___E> ::fidl_next::Encode<crate::wire::DependencyType, ___E> for DependencyType
5761    where
5762        ___E: ?Sized,
5763    {
5764        #[inline]
5765        fn encode(
5766            self,
5767            encoder: &mut ___E,
5768            out: &mut ::core::mem::MaybeUninit<crate::wire::DependencyType>,
5769            _: (),
5770        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
5771            ::fidl_next::Encode::encode(&self, encoder, out, ())
5772        }
5773    }
5774
5775    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::DependencyType, ___E> for &'a DependencyType
5776    where
5777        ___E: ?Sized,
5778    {
5779        #[inline]
5780        fn encode(
5781            self,
5782            encoder: &mut ___E,
5783            out: &mut ::core::mem::MaybeUninit<crate::wire::DependencyType>,
5784            _: (),
5785        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
5786            ::fidl_next::munge!(let crate::wire::DependencyType { value } = out);
5787            let _ = value.write(::fidl_next::wire::Uint32::from(match *self {
5788                DependencyType::Strong => 1,
5789
5790                DependencyType::Weak => 2,
5791            }));
5792
5793            Ok(())
5794        }
5795    }
5796
5797    impl ::core::convert::From<crate::wire::DependencyType> for DependencyType {
5798        fn from(wire: crate::wire::DependencyType) -> Self {
5799            match u32::from(wire.value) {
5800                1 => Self::Strong,
5801
5802                2 => Self::Weak,
5803
5804                _ => unsafe { ::core::hint::unreachable_unchecked() },
5805            }
5806        }
5807    }
5808
5809    impl ::fidl_next::FromWire<crate::wire::DependencyType> for DependencyType {
5810        #[inline]
5811        fn from_wire(wire: crate::wire::DependencyType) -> Self {
5812            Self::from(wire)
5813        }
5814    }
5815
5816    impl ::fidl_next::FromWireRef<crate::wire::DependencyType> for DependencyType {
5817        #[inline]
5818        fn from_wire_ref(wire: &crate::wire::DependencyType) -> Self {
5819            Self::from(*wire)
5820        }
5821    }
5822
5823    #[doc = " Type used to create a mapping between 2 names. Used to rename service or component instances\n in FIDL declarations.\n"]
5824    #[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
5825    pub struct NameMapping {
5826        pub source_name: ::std::string::String,
5827
5828        pub target_name: ::std::string::String,
5829    }
5830
5831    unsafe impl<___E> ::fidl_next::Encode<crate::wire::NameMapping<'static>, ___E> for NameMapping
5832    where
5833        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
5834        ___E: ::fidl_next::Encoder,
5835    {
5836        #[inline]
5837        fn encode(
5838            self,
5839            encoder_: &mut ___E,
5840            out_: &mut ::core::mem::MaybeUninit<crate::wire::NameMapping<'static>>,
5841            _: (),
5842        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
5843            ::fidl_next::munge! {
5844                let crate::wire::NameMapping {
5845                    source_name,
5846                    target_name,
5847
5848                } = out_;
5849            }
5850
5851            ::fidl_next::Encode::encode(self.source_name, encoder_, source_name, 100)?;
5852
5853            let mut _field = unsafe { ::fidl_next::Slot::new_unchecked(source_name.as_mut_ptr()) };
5854            ::fidl_next::Constrained::validate(_field, 100)?;
5855
5856            ::fidl_next::Encode::encode(self.target_name, encoder_, target_name, 100)?;
5857
5858            let mut _field = unsafe { ::fidl_next::Slot::new_unchecked(target_name.as_mut_ptr()) };
5859            ::fidl_next::Constrained::validate(_field, 100)?;
5860
5861            Ok(())
5862        }
5863    }
5864
5865    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::NameMapping<'static>, ___E>
5866        for &'a NameMapping
5867    where
5868        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
5869        ___E: ::fidl_next::Encoder,
5870    {
5871        #[inline]
5872        fn encode(
5873            self,
5874            encoder_: &mut ___E,
5875            out_: &mut ::core::mem::MaybeUninit<crate::wire::NameMapping<'static>>,
5876            _: (),
5877        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
5878            ::fidl_next::munge! {
5879                let crate::wire::NameMapping {
5880                    source_name,
5881                    target_name,
5882
5883                } = out_;
5884            }
5885
5886            ::fidl_next::Encode::encode(&self.source_name, encoder_, source_name, 100)?;
5887
5888            let mut _field = unsafe { ::fidl_next::Slot::new_unchecked(source_name.as_mut_ptr()) };
5889            ::fidl_next::Constrained::validate(_field, 100)?;
5890
5891            ::fidl_next::Encode::encode(&self.target_name, encoder_, target_name, 100)?;
5892
5893            let mut _field = unsafe { ::fidl_next::Slot::new_unchecked(target_name.as_mut_ptr()) };
5894            ::fidl_next::Constrained::validate(_field, 100)?;
5895
5896            Ok(())
5897        }
5898    }
5899
5900    unsafe impl<___E>
5901        ::fidl_next::EncodeOption<
5902            ::fidl_next::wire::Box<'static, crate::wire::NameMapping<'static>>,
5903            ___E,
5904        > for NameMapping
5905    where
5906        ___E: ::fidl_next::Encoder + ?Sized,
5907        NameMapping: ::fidl_next::Encode<crate::wire::NameMapping<'static>, ___E>,
5908    {
5909        #[inline]
5910        fn encode_option(
5911            this: ::core::option::Option<Self>,
5912            encoder: &mut ___E,
5913            out: &mut ::core::mem::MaybeUninit<
5914                ::fidl_next::wire::Box<'static, crate::wire::NameMapping<'static>>,
5915            >,
5916            _: (),
5917        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
5918            if let Some(inner) = this {
5919                ::fidl_next::EncoderExt::encode_next(encoder, inner)?;
5920                ::fidl_next::wire::Box::encode_present(out);
5921            } else {
5922                ::fidl_next::wire::Box::encode_absent(out);
5923            }
5924
5925            Ok(())
5926        }
5927    }
5928
5929    unsafe impl<'a, ___E>
5930        ::fidl_next::EncodeOption<
5931            ::fidl_next::wire::Box<'static, crate::wire::NameMapping<'static>>,
5932            ___E,
5933        > for &'a NameMapping
5934    where
5935        ___E: ::fidl_next::Encoder + ?Sized,
5936        &'a NameMapping: ::fidl_next::Encode<crate::wire::NameMapping<'static>, ___E>,
5937    {
5938        #[inline]
5939        fn encode_option(
5940            this: ::core::option::Option<Self>,
5941            encoder: &mut ___E,
5942            out: &mut ::core::mem::MaybeUninit<
5943                ::fidl_next::wire::Box<'static, crate::wire::NameMapping<'static>>,
5944            >,
5945            _: (),
5946        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
5947            if let Some(inner) = this {
5948                ::fidl_next::EncoderExt::encode_next(encoder, inner)?;
5949                ::fidl_next::wire::Box::encode_present(out);
5950            } else {
5951                ::fidl_next::wire::Box::encode_absent(out);
5952            }
5953
5954            Ok(())
5955        }
5956    }
5957
5958    impl<'de> ::fidl_next::FromWire<crate::wire::NameMapping<'de>> for NameMapping {
5959        #[inline]
5960        fn from_wire(wire: crate::wire::NameMapping<'de>) -> Self {
5961            Self {
5962                source_name: ::fidl_next::FromWire::from_wire(wire.source_name),
5963
5964                target_name: ::fidl_next::FromWire::from_wire(wire.target_name),
5965            }
5966        }
5967    }
5968
5969    impl<'de> ::fidl_next::FromWireRef<crate::wire::NameMapping<'de>> for NameMapping {
5970        #[inline]
5971        fn from_wire_ref(wire: &crate::wire::NameMapping<'de>) -> Self {
5972            Self {
5973                source_name: ::fidl_next::FromWireRef::from_wire_ref(&wire.source_name),
5974
5975                target_name: ::fidl_next::FromWireRef::from_wire_ref(&wire.target_name),
5976            }
5977        }
5978    }
5979
5980    #[doc = " Specifies how a declared environment\'s initial set of properties are assigned.\n"]
5981    #[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
5982    #[repr(u32)]
5983    pub enum EnvironmentExtends {
5984        None = 0,
5985        Realm = 1,
5986    }
5987    impl ::core::convert::TryFrom<u32> for EnvironmentExtends {
5988        type Error = ::fidl_next::UnknownStrictEnumMemberError;
5989        fn try_from(
5990            value: u32,
5991        ) -> ::core::result::Result<Self, ::fidl_next::UnknownStrictEnumMemberError> {
5992            match value {
5993                0 => Ok(Self::None),
5994                1 => Ok(Self::Realm),
5995
5996                _ => Err(::fidl_next::UnknownStrictEnumMemberError::new(value.into())),
5997            }
5998        }
5999    }
6000
6001    unsafe impl<___E> ::fidl_next::Encode<crate::wire::EnvironmentExtends, ___E> for EnvironmentExtends
6002    where
6003        ___E: ?Sized,
6004    {
6005        #[inline]
6006        fn encode(
6007            self,
6008            encoder: &mut ___E,
6009            out: &mut ::core::mem::MaybeUninit<crate::wire::EnvironmentExtends>,
6010            _: (),
6011        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
6012            ::fidl_next::Encode::encode(&self, encoder, out, ())
6013        }
6014    }
6015
6016    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::EnvironmentExtends, ___E>
6017        for &'a EnvironmentExtends
6018    where
6019        ___E: ?Sized,
6020    {
6021        #[inline]
6022        fn encode(
6023            self,
6024            encoder: &mut ___E,
6025            out: &mut ::core::mem::MaybeUninit<crate::wire::EnvironmentExtends>,
6026            _: (),
6027        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
6028            ::fidl_next::munge!(let crate::wire::EnvironmentExtends { value } = out);
6029            let _ = value.write(::fidl_next::wire::Uint32::from(match *self {
6030                EnvironmentExtends::None => 0,
6031
6032                EnvironmentExtends::Realm => 1,
6033            }));
6034
6035            Ok(())
6036        }
6037    }
6038
6039    impl ::core::convert::From<crate::wire::EnvironmentExtends> for EnvironmentExtends {
6040        fn from(wire: crate::wire::EnvironmentExtends) -> Self {
6041            match u32::from(wire.value) {
6042                0 => Self::None,
6043
6044                1 => Self::Realm,
6045
6046                _ => unsafe { ::core::hint::unreachable_unchecked() },
6047            }
6048        }
6049    }
6050
6051    impl ::fidl_next::FromWire<crate::wire::EnvironmentExtends> for EnvironmentExtends {
6052        #[inline]
6053        fn from_wire(wire: crate::wire::EnvironmentExtends) -> Self {
6054            Self::from(wire)
6055        }
6056    }
6057
6058    impl ::fidl_next::FromWireRef<crate::wire::EnvironmentExtends> for EnvironmentExtends {
6059        #[inline]
6060        fn from_wire_ref(wire: &crate::wire::EnvironmentExtends) -> Self {
6061            Self::from(*wire)
6062        }
6063    }
6064
6065    pub type UrlScheme = ::std::string::String;
6066
6067    #[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
6068    #[repr(u32)]
6069    pub enum ConfigTypeLayout {
6070        Bool = 1,
6071        Uint8 = 2,
6072        Uint16 = 3,
6073        Uint32 = 4,
6074        Uint64 = 5,
6075        Int8 = 6,
6076        Int16 = 7,
6077        Int32 = 8,
6078        Int64 = 9,
6079        String = 10,
6080        Vector = 11,
6081        UnknownOrdinal_(u32) = 12,
6082    }
6083    impl ::std::convert::From<u32> for ConfigTypeLayout {
6084        fn from(value: u32) -> Self {
6085            match value {
6086                1 => Self::Bool,
6087                2 => Self::Uint8,
6088                3 => Self::Uint16,
6089                4 => Self::Uint32,
6090                5 => Self::Uint64,
6091                6 => Self::Int8,
6092                7 => Self::Int16,
6093                8 => Self::Int32,
6094                9 => Self::Int64,
6095                10 => Self::String,
6096                11 => Self::Vector,
6097
6098                _ => Self::UnknownOrdinal_(value),
6099            }
6100        }
6101    }
6102
6103    unsafe impl<___E> ::fidl_next::Encode<crate::wire::ConfigTypeLayout, ___E> for ConfigTypeLayout
6104    where
6105        ___E: ?Sized,
6106    {
6107        #[inline]
6108        fn encode(
6109            self,
6110            encoder: &mut ___E,
6111            out: &mut ::core::mem::MaybeUninit<crate::wire::ConfigTypeLayout>,
6112            _: (),
6113        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
6114            ::fidl_next::Encode::encode(&self, encoder, out, ())
6115        }
6116    }
6117
6118    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::ConfigTypeLayout, ___E>
6119        for &'a ConfigTypeLayout
6120    where
6121        ___E: ?Sized,
6122    {
6123        #[inline]
6124        fn encode(
6125            self,
6126            encoder: &mut ___E,
6127            out: &mut ::core::mem::MaybeUninit<crate::wire::ConfigTypeLayout>,
6128            _: (),
6129        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
6130            ::fidl_next::munge!(let crate::wire::ConfigTypeLayout { value } = out);
6131            let _ = value.write(::fidl_next::wire::Uint32::from(match *self {
6132                ConfigTypeLayout::Bool => 1,
6133
6134                ConfigTypeLayout::Uint8 => 2,
6135
6136                ConfigTypeLayout::Uint16 => 3,
6137
6138                ConfigTypeLayout::Uint32 => 4,
6139
6140                ConfigTypeLayout::Uint64 => 5,
6141
6142                ConfigTypeLayout::Int8 => 6,
6143
6144                ConfigTypeLayout::Int16 => 7,
6145
6146                ConfigTypeLayout::Int32 => 8,
6147
6148                ConfigTypeLayout::Int64 => 9,
6149
6150                ConfigTypeLayout::String => 10,
6151
6152                ConfigTypeLayout::Vector => 11,
6153
6154                ConfigTypeLayout::UnknownOrdinal_(value) => value,
6155            }));
6156
6157            Ok(())
6158        }
6159    }
6160
6161    impl ::core::convert::From<crate::wire::ConfigTypeLayout> for ConfigTypeLayout {
6162        fn from(wire: crate::wire::ConfigTypeLayout) -> Self {
6163            match u32::from(wire.value) {
6164                1 => Self::Bool,
6165
6166                2 => Self::Uint8,
6167
6168                3 => Self::Uint16,
6169
6170                4 => Self::Uint32,
6171
6172                5 => Self::Uint64,
6173
6174                6 => Self::Int8,
6175
6176                7 => Self::Int16,
6177
6178                8 => Self::Int32,
6179
6180                9 => Self::Int64,
6181
6182                10 => Self::String,
6183
6184                11 => Self::Vector,
6185
6186                value => Self::UnknownOrdinal_(value),
6187            }
6188        }
6189    }
6190
6191    impl ::fidl_next::FromWire<crate::wire::ConfigTypeLayout> for ConfigTypeLayout {
6192        #[inline]
6193        fn from_wire(wire: crate::wire::ConfigTypeLayout) -> Self {
6194            Self::from(wire)
6195        }
6196    }
6197
6198    impl ::fidl_next::FromWireRef<crate::wire::ConfigTypeLayout> for ConfigTypeLayout {
6199        #[inline]
6200        fn from_wire_ref(wire: &crate::wire::ConfigTypeLayout) -> Self {
6201            Self::from(*wire)
6202        }
6203    }
6204
6205    #[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
6206    pub enum LayoutConstraint {
6207        MaxSize(u32),
6208
6209        UnknownOrdinal_(u64),
6210    }
6211
6212    impl LayoutConstraint {
6213        pub fn is_unknown(&self) -> bool {
6214            #[allow(unreachable_patterns)]
6215            match self {
6216                Self::UnknownOrdinal_(_) => true,
6217                _ => false,
6218            }
6219        }
6220    }
6221
6222    unsafe impl<___E> ::fidl_next::Encode<crate::wire::LayoutConstraint<'static>, ___E>
6223        for LayoutConstraint
6224    where
6225        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
6226        ___E: ::fidl_next::Encoder,
6227    {
6228        #[inline]
6229        fn encode(
6230            self,
6231            encoder: &mut ___E,
6232            out: &mut ::core::mem::MaybeUninit<crate::wire::LayoutConstraint<'static>>,
6233            _: (),
6234        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
6235            ::fidl_next::munge!(let crate::wire::LayoutConstraint { raw, _phantom: _ } = out);
6236
6237            match self {
6238                Self::MaxSize(value) => ::fidl_next::wire::Union::encode_as::<
6239                    ___E,
6240                    ::fidl_next::wire::Uint32,
6241                >(value, 1, encoder, raw, ())?,
6242
6243                Self::UnknownOrdinal_(ordinal) => {
6244                    return Err(::fidl_next::EncodeError::UnknownUnionOrdinal(ordinal as usize));
6245                }
6246            }
6247
6248            Ok(())
6249        }
6250    }
6251
6252    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::LayoutConstraint<'static>, ___E>
6253        for &'a LayoutConstraint
6254    where
6255        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
6256        ___E: ::fidl_next::Encoder,
6257    {
6258        #[inline]
6259        fn encode(
6260            self,
6261            encoder: &mut ___E,
6262            out: &mut ::core::mem::MaybeUninit<crate::wire::LayoutConstraint<'static>>,
6263            _: (),
6264        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
6265            ::fidl_next::munge!(let crate::wire::LayoutConstraint { raw, _phantom: _ } = out);
6266
6267            match self {
6268                LayoutConstraint::MaxSize(value) => ::fidl_next::wire::Union::encode_as::<
6269                    ___E,
6270                    ::fidl_next::wire::Uint32,
6271                >(value, 1, encoder, raw, ())?,
6272
6273                LayoutConstraint::UnknownOrdinal_(ordinal) => {
6274                    return Err(::fidl_next::EncodeError::UnknownUnionOrdinal(*ordinal as usize));
6275                }
6276            }
6277
6278            Ok(())
6279        }
6280    }
6281
6282    unsafe impl<___E>
6283        ::fidl_next::EncodeOption<crate::wire_optional::LayoutConstraint<'static>, ___E>
6284        for LayoutConstraint
6285    where
6286        ___E: ?Sized,
6287        LayoutConstraint: ::fidl_next::Encode<crate::wire::LayoutConstraint<'static>, ___E>,
6288    {
6289        #[inline]
6290        fn encode_option(
6291            this: ::core::option::Option<Self>,
6292            encoder: &mut ___E,
6293            out: &mut ::core::mem::MaybeUninit<crate::wire_optional::LayoutConstraint<'static>>,
6294            _: (),
6295        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
6296            ::fidl_next::munge!(let crate::wire_optional::LayoutConstraint { raw, _phantom: _ } = &mut *out);
6297
6298            if let Some(inner) = this {
6299                let value_out = unsafe { &mut *out.as_mut_ptr().cast() };
6300                ::fidl_next::Encode::encode(inner, encoder, value_out, ())?;
6301            } else {
6302                ::fidl_next::wire::Union::encode_absent(raw);
6303            }
6304
6305            Ok(())
6306        }
6307    }
6308
6309    unsafe impl<'a, ___E>
6310        ::fidl_next::EncodeOption<crate::wire_optional::LayoutConstraint<'static>, ___E>
6311        for &'a LayoutConstraint
6312    where
6313        ___E: ?Sized,
6314        &'a LayoutConstraint: ::fidl_next::Encode<crate::wire::LayoutConstraint<'static>, ___E>,
6315    {
6316        #[inline]
6317        fn encode_option(
6318            this: ::core::option::Option<Self>,
6319            encoder: &mut ___E,
6320            out: &mut ::core::mem::MaybeUninit<crate::wire_optional::LayoutConstraint<'static>>,
6321            _: (),
6322        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
6323            ::fidl_next::munge!(let crate::wire_optional::LayoutConstraint { raw, _phantom: _ } = &mut *out);
6324
6325            if let Some(inner) = this {
6326                let value_out = unsafe { &mut *out.as_mut_ptr().cast() };
6327                ::fidl_next::Encode::encode(inner, encoder, value_out, ())?;
6328            } else {
6329                ::fidl_next::wire::Union::encode_absent(raw);
6330            }
6331
6332            Ok(())
6333        }
6334    }
6335
6336    impl<'de> ::fidl_next::FromWire<crate::wire::LayoutConstraint<'de>> for LayoutConstraint {
6337        #[inline]
6338        fn from_wire(wire: crate::wire::LayoutConstraint<'de>) -> Self {
6339            let wire = ::core::mem::ManuallyDrop::new(wire);
6340            match wire.raw.ordinal() {
6341                1 => Self::MaxSize(::fidl_next::FromWire::from_wire(unsafe {
6342                    wire.raw.get().read_unchecked::<::fidl_next::wire::Uint32>()
6343                })),
6344
6345                ord => return Self::UnknownOrdinal_(ord as u64),
6346            }
6347        }
6348    }
6349
6350    impl<'de> ::fidl_next::FromWireRef<crate::wire::LayoutConstraint<'de>> for LayoutConstraint {
6351        #[inline]
6352        fn from_wire_ref(wire: &crate::wire::LayoutConstraint<'de>) -> Self {
6353            match wire.raw.ordinal() {
6354                1 => Self::MaxSize(::fidl_next::FromWireRef::from_wire_ref(unsafe {
6355                    wire.raw.get().deref_unchecked::<::fidl_next::wire::Uint32>()
6356                })),
6357
6358                ord => return Self::UnknownOrdinal_(ord as u64),
6359            }
6360        }
6361    }
6362
6363    impl<'de> ::fidl_next::FromWireOption<crate::wire_optional::LayoutConstraint<'de>>
6364        for LayoutConstraint
6365    {
6366        #[inline]
6367        fn from_wire_option(
6368            wire: crate::wire_optional::LayoutConstraint<'de>,
6369        ) -> ::core::option::Option<Self> {
6370            if let Some(inner) = wire.into_option() {
6371                Some(::fidl_next::FromWire::from_wire(inner))
6372            } else {
6373                None
6374            }
6375        }
6376    }
6377
6378    impl<'de> ::fidl_next::FromWireOption<crate::wire_optional::LayoutConstraint<'de>>
6379        for Box<LayoutConstraint>
6380    {
6381        #[inline]
6382        fn from_wire_option(
6383            wire: crate::wire_optional::LayoutConstraint<'de>,
6384        ) -> ::core::option::Option<Self> {
6385            <LayoutConstraint as ::fidl_next::FromWireOption<
6386                crate::wire_optional::LayoutConstraint<'de>,
6387            >>::from_wire_option(wire)
6388            .map(Box::new)
6389        }
6390    }
6391
6392    impl<'de> ::fidl_next::FromWireOptionRef<crate::wire_optional::LayoutConstraint<'de>>
6393        for Box<LayoutConstraint>
6394    {
6395        #[inline]
6396        fn from_wire_option_ref(
6397            wire: &crate::wire_optional::LayoutConstraint<'de>,
6398        ) -> ::core::option::Option<Self> {
6399            if let Some(inner) = wire.as_ref() {
6400                Some(Box::new(::fidl_next::FromWireRef::from_wire_ref(inner)))
6401            } else {
6402                None
6403            }
6404        }
6405    }
6406
6407    #[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
6408    pub struct ConfigType {
6409        pub layout: crate::natural::ConfigTypeLayout,
6410
6411        pub parameters: ::core::option::Option<::std::vec::Vec<crate::natural::LayoutParameter>>,
6412
6413        pub constraints: ::std::vec::Vec<crate::natural::LayoutConstraint>,
6414    }
6415
6416    unsafe impl<___E> ::fidl_next::Encode<crate::wire::ConfigType<'static>, ___E> for ConfigType
6417    where
6418        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
6419        ___E: ::fidl_next::Encoder,
6420    {
6421        #[inline]
6422        fn encode(
6423            self,
6424            encoder_: &mut ___E,
6425            out_: &mut ::core::mem::MaybeUninit<crate::wire::ConfigType<'static>>,
6426            _: (),
6427        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
6428            ::fidl_next::munge! {
6429                let crate::wire::ConfigType {
6430                    layout,
6431                    parameters,
6432                    constraints,
6433
6434                } = out_;
6435            }
6436
6437            ::fidl_next::Encode::encode(self.layout, encoder_, layout, ())?;
6438
6439            let mut _field = unsafe { ::fidl_next::Slot::new_unchecked(layout.as_mut_ptr()) };
6440
6441            ::fidl_next::Encode::encode(self.parameters, encoder_, parameters, (4294967295, ()))?;
6442
6443            let mut _field = unsafe { ::fidl_next::Slot::new_unchecked(parameters.as_mut_ptr()) };
6444            ::fidl_next::Constrained::validate(_field, (4294967295, ()))?;
6445
6446            ::fidl_next::Encode::encode(self.constraints, encoder_, constraints, (4294967295, ()))?;
6447
6448            let mut _field = unsafe { ::fidl_next::Slot::new_unchecked(constraints.as_mut_ptr()) };
6449            ::fidl_next::Constrained::validate(_field, (4294967295, ()))?;
6450
6451            Ok(())
6452        }
6453    }
6454
6455    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::ConfigType<'static>, ___E> for &'a ConfigType
6456    where
6457        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
6458        ___E: ::fidl_next::Encoder,
6459    {
6460        #[inline]
6461        fn encode(
6462            self,
6463            encoder_: &mut ___E,
6464            out_: &mut ::core::mem::MaybeUninit<crate::wire::ConfigType<'static>>,
6465            _: (),
6466        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
6467            ::fidl_next::munge! {
6468                let crate::wire::ConfigType {
6469                    layout,
6470                    parameters,
6471                    constraints,
6472
6473                } = out_;
6474            }
6475
6476            ::fidl_next::Encode::encode(&self.layout, encoder_, layout, ())?;
6477
6478            let mut _field = unsafe { ::fidl_next::Slot::new_unchecked(layout.as_mut_ptr()) };
6479
6480            ::fidl_next::Encode::encode(&self.parameters, encoder_, parameters, (4294967295, ()))?;
6481
6482            let mut _field = unsafe { ::fidl_next::Slot::new_unchecked(parameters.as_mut_ptr()) };
6483            ::fidl_next::Constrained::validate(_field, (4294967295, ()))?;
6484
6485            ::fidl_next::Encode::encode(
6486                &self.constraints,
6487                encoder_,
6488                constraints,
6489                (4294967295, ()),
6490            )?;
6491
6492            let mut _field = unsafe { ::fidl_next::Slot::new_unchecked(constraints.as_mut_ptr()) };
6493            ::fidl_next::Constrained::validate(_field, (4294967295, ()))?;
6494
6495            Ok(())
6496        }
6497    }
6498
6499    unsafe impl<___E>
6500        ::fidl_next::EncodeOption<
6501            ::fidl_next::wire::Box<'static, crate::wire::ConfigType<'static>>,
6502            ___E,
6503        > for ConfigType
6504    where
6505        ___E: ::fidl_next::Encoder + ?Sized,
6506        ConfigType: ::fidl_next::Encode<crate::wire::ConfigType<'static>, ___E>,
6507    {
6508        #[inline]
6509        fn encode_option(
6510            this: ::core::option::Option<Self>,
6511            encoder: &mut ___E,
6512            out: &mut ::core::mem::MaybeUninit<
6513                ::fidl_next::wire::Box<'static, crate::wire::ConfigType<'static>>,
6514            >,
6515            _: (),
6516        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
6517            if let Some(inner) = this {
6518                ::fidl_next::EncoderExt::encode_next(encoder, inner)?;
6519                ::fidl_next::wire::Box::encode_present(out);
6520            } else {
6521                ::fidl_next::wire::Box::encode_absent(out);
6522            }
6523
6524            Ok(())
6525        }
6526    }
6527
6528    unsafe impl<'a, ___E>
6529        ::fidl_next::EncodeOption<
6530            ::fidl_next::wire::Box<'static, crate::wire::ConfigType<'static>>,
6531            ___E,
6532        > for &'a ConfigType
6533    where
6534        ___E: ::fidl_next::Encoder + ?Sized,
6535        &'a ConfigType: ::fidl_next::Encode<crate::wire::ConfigType<'static>, ___E>,
6536    {
6537        #[inline]
6538        fn encode_option(
6539            this: ::core::option::Option<Self>,
6540            encoder: &mut ___E,
6541            out: &mut ::core::mem::MaybeUninit<
6542                ::fidl_next::wire::Box<'static, crate::wire::ConfigType<'static>>,
6543            >,
6544            _: (),
6545        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
6546            if let Some(inner) = this {
6547                ::fidl_next::EncoderExt::encode_next(encoder, inner)?;
6548                ::fidl_next::wire::Box::encode_present(out);
6549            } else {
6550                ::fidl_next::wire::Box::encode_absent(out);
6551            }
6552
6553            Ok(())
6554        }
6555    }
6556
6557    impl<'de> ::fidl_next::FromWire<crate::wire::ConfigType<'de>> for ConfigType {
6558        #[inline]
6559        fn from_wire(wire: crate::wire::ConfigType<'de>) -> Self {
6560            Self {
6561                layout: ::fidl_next::FromWire::from_wire(wire.layout),
6562
6563                parameters: ::fidl_next::FromWire::from_wire(wire.parameters),
6564
6565                constraints: ::fidl_next::FromWire::from_wire(wire.constraints),
6566            }
6567        }
6568    }
6569
6570    impl<'de> ::fidl_next::FromWireRef<crate::wire::ConfigType<'de>> for ConfigType {
6571        #[inline]
6572        fn from_wire_ref(wire: &crate::wire::ConfigType<'de>) -> Self {
6573            Self {
6574                layout: ::fidl_next::FromWireRef::from_wire_ref(&wire.layout),
6575
6576                parameters: ::fidl_next::FromWireRef::from_wire_ref(&wire.parameters),
6577
6578                constraints: ::fidl_next::FromWireRef::from_wire_ref(&wire.constraints),
6579            }
6580        }
6581    }
6582
6583    #[doc = " The checksum produced for a configuration interface.\n Two configuration interfaces are the same if their checksums are the same.\n"]
6584    #[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
6585    pub enum ConfigChecksum {
6586        Sha256([u8; 32]),
6587
6588        UnknownOrdinal_(u64),
6589    }
6590
6591    impl ConfigChecksum {
6592        pub fn is_unknown(&self) -> bool {
6593            #[allow(unreachable_patterns)]
6594            match self {
6595                Self::UnknownOrdinal_(_) => true,
6596                _ => false,
6597            }
6598        }
6599    }
6600
6601    unsafe impl<___E> ::fidl_next::Encode<crate::wire::ConfigChecksum<'static>, ___E> for ConfigChecksum
6602    where
6603        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
6604        ___E: ::fidl_next::Encoder,
6605    {
6606        #[inline]
6607        fn encode(
6608            self,
6609            encoder: &mut ___E,
6610            out: &mut ::core::mem::MaybeUninit<crate::wire::ConfigChecksum<'static>>,
6611            _: (),
6612        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
6613            ::fidl_next::munge!(let crate::wire::ConfigChecksum { raw, _phantom: _ } = out);
6614
6615            match self {
6616                Self::Sha256(value) => ::fidl_next::wire::Union::encode_as::<___E, [u8; 32]>(
6617                    value,
6618                    1,
6619                    encoder,
6620                    raw,
6621                    (),
6622                )?,
6623
6624                Self::UnknownOrdinal_(ordinal) => {
6625                    return Err(::fidl_next::EncodeError::UnknownUnionOrdinal(ordinal as usize));
6626                }
6627            }
6628
6629            Ok(())
6630        }
6631    }
6632
6633    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::ConfigChecksum<'static>, ___E>
6634        for &'a ConfigChecksum
6635    where
6636        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
6637        ___E: ::fidl_next::Encoder,
6638    {
6639        #[inline]
6640        fn encode(
6641            self,
6642            encoder: &mut ___E,
6643            out: &mut ::core::mem::MaybeUninit<crate::wire::ConfigChecksum<'static>>,
6644            _: (),
6645        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
6646            ::fidl_next::munge!(let crate::wire::ConfigChecksum { raw, _phantom: _ } = out);
6647
6648            match self {
6649                ConfigChecksum::Sha256(value) => ::fidl_next::wire::Union::encode_as::<
6650                    ___E,
6651                    [u8; 32],
6652                >(value, 1, encoder, raw, ())?,
6653
6654                ConfigChecksum::UnknownOrdinal_(ordinal) => {
6655                    return Err(::fidl_next::EncodeError::UnknownUnionOrdinal(*ordinal as usize));
6656                }
6657            }
6658
6659            Ok(())
6660        }
6661    }
6662
6663    unsafe impl<___E> ::fidl_next::EncodeOption<crate::wire_optional::ConfigChecksum<'static>, ___E>
6664        for ConfigChecksum
6665    where
6666        ___E: ?Sized,
6667        ConfigChecksum: ::fidl_next::Encode<crate::wire::ConfigChecksum<'static>, ___E>,
6668    {
6669        #[inline]
6670        fn encode_option(
6671            this: ::core::option::Option<Self>,
6672            encoder: &mut ___E,
6673            out: &mut ::core::mem::MaybeUninit<crate::wire_optional::ConfigChecksum<'static>>,
6674            _: (),
6675        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
6676            ::fidl_next::munge!(let crate::wire_optional::ConfigChecksum { raw, _phantom: _ } = &mut *out);
6677
6678            if let Some(inner) = this {
6679                let value_out = unsafe { &mut *out.as_mut_ptr().cast() };
6680                ::fidl_next::Encode::encode(inner, encoder, value_out, ())?;
6681            } else {
6682                ::fidl_next::wire::Union::encode_absent(raw);
6683            }
6684
6685            Ok(())
6686        }
6687    }
6688
6689    unsafe impl<'a, ___E>
6690        ::fidl_next::EncodeOption<crate::wire_optional::ConfigChecksum<'static>, ___E>
6691        for &'a ConfigChecksum
6692    where
6693        ___E: ?Sized,
6694        &'a ConfigChecksum: ::fidl_next::Encode<crate::wire::ConfigChecksum<'static>, ___E>,
6695    {
6696        #[inline]
6697        fn encode_option(
6698            this: ::core::option::Option<Self>,
6699            encoder: &mut ___E,
6700            out: &mut ::core::mem::MaybeUninit<crate::wire_optional::ConfigChecksum<'static>>,
6701            _: (),
6702        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
6703            ::fidl_next::munge!(let crate::wire_optional::ConfigChecksum { raw, _phantom: _ } = &mut *out);
6704
6705            if let Some(inner) = this {
6706                let value_out = unsafe { &mut *out.as_mut_ptr().cast() };
6707                ::fidl_next::Encode::encode(inner, encoder, value_out, ())?;
6708            } else {
6709                ::fidl_next::wire::Union::encode_absent(raw);
6710            }
6711
6712            Ok(())
6713        }
6714    }
6715
6716    impl<'de> ::fidl_next::FromWire<crate::wire::ConfigChecksum<'de>> for ConfigChecksum {
6717        #[inline]
6718        fn from_wire(wire: crate::wire::ConfigChecksum<'de>) -> Self {
6719            let wire = ::core::mem::ManuallyDrop::new(wire);
6720            match wire.raw.ordinal() {
6721                1 => Self::Sha256(::fidl_next::FromWire::from_wire(unsafe {
6722                    wire.raw.get().read_unchecked::<[u8; 32]>()
6723                })),
6724
6725                ord => return Self::UnknownOrdinal_(ord as u64),
6726            }
6727        }
6728    }
6729
6730    impl<'de> ::fidl_next::FromWireRef<crate::wire::ConfigChecksum<'de>> for ConfigChecksum {
6731        #[inline]
6732        fn from_wire_ref(wire: &crate::wire::ConfigChecksum<'de>) -> Self {
6733            match wire.raw.ordinal() {
6734                1 => Self::Sha256(::fidl_next::FromWireRef::from_wire_ref(unsafe {
6735                    wire.raw.get().deref_unchecked::<[u8; 32]>()
6736                })),
6737
6738                ord => return Self::UnknownOrdinal_(ord as u64),
6739            }
6740        }
6741    }
6742
6743    impl<'de> ::fidl_next::FromWireOption<crate::wire_optional::ConfigChecksum<'de>>
6744        for ConfigChecksum
6745    {
6746        #[inline]
6747        fn from_wire_option(
6748            wire: crate::wire_optional::ConfigChecksum<'de>,
6749        ) -> ::core::option::Option<Self> {
6750            if let Some(inner) = wire.into_option() {
6751                Some(::fidl_next::FromWire::from_wire(inner))
6752            } else {
6753                None
6754            }
6755        }
6756    }
6757
6758    impl<'de> ::fidl_next::FromWireOption<crate::wire_optional::ConfigChecksum<'de>>
6759        for Box<ConfigChecksum>
6760    {
6761        #[inline]
6762        fn from_wire_option(
6763            wire: crate::wire_optional::ConfigChecksum<'de>,
6764        ) -> ::core::option::Option<Self> {
6765            <ConfigChecksum as ::fidl_next::FromWireOption<
6766                crate::wire_optional::ConfigChecksum<'de>,
6767            >>::from_wire_option(wire)
6768            .map(Box::new)
6769        }
6770    }
6771
6772    impl<'de> ::fidl_next::FromWireOptionRef<crate::wire_optional::ConfigChecksum<'de>>
6773        for Box<ConfigChecksum>
6774    {
6775        #[inline]
6776        fn from_wire_option_ref(
6777            wire: &crate::wire_optional::ConfigChecksum<'de>,
6778        ) -> ::core::option::Option<Self> {
6779            if let Some(inner) = wire.as_ref() {
6780                Some(Box::new(::fidl_next::FromWireRef::from_wire_ref(inner)))
6781            } else {
6782                None
6783            }
6784        }
6785    }
6786
6787    #[doc = " Declares storage used by a component, which was offered to it.\n"]
6788    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
6789    pub struct UseStorage {
6790        pub source_name: ::core::option::Option<::std::string::String>,
6791
6792        pub target_path: ::core::option::Option<::std::string::String>,
6793
6794        pub availability: ::core::option::Option<crate::natural::Availability>,
6795    }
6796
6797    impl UseStorage {
6798        fn __max_ordinal(&self) -> usize {
6799            if self.availability.is_some() {
6800                return 3;
6801            }
6802
6803            if self.target_path.is_some() {
6804                return 2;
6805            }
6806
6807            if self.source_name.is_some() {
6808                return 1;
6809            }
6810
6811            0
6812        }
6813    }
6814
6815    unsafe impl<___E> ::fidl_next::Encode<crate::wire::UseStorage<'static>, ___E> for UseStorage
6816    where
6817        ___E: ::fidl_next::Encoder + ?Sized,
6818    {
6819        #[inline]
6820        fn encode(
6821            mut self,
6822            encoder: &mut ___E,
6823            out: &mut ::core::mem::MaybeUninit<crate::wire::UseStorage<'static>>,
6824            _: (),
6825        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
6826            ::fidl_next::munge!(let crate::wire::UseStorage { table } = out);
6827
6828            let max_ord = self.__max_ordinal();
6829
6830            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
6831            ::fidl_next::Wire::zero_padding(&mut out);
6832
6833            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
6834                ::fidl_next::wire::Envelope,
6835            >(encoder, max_ord);
6836
6837            for i in 1..=max_ord {
6838                match i {
6839                    3 => {
6840                        if let Some(value) = self.availability.take() {
6841                            ::fidl_next::wire::Envelope::encode_value::<
6842                                crate::wire::Availability,
6843                                ___E,
6844                            >(
6845                                value, preallocated.encoder, &mut out, ()
6846                            )?;
6847                        } else {
6848                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
6849                        }
6850                    }
6851
6852                    2 => {
6853                        if let Some(value) = self.target_path.take() {
6854                            ::fidl_next::wire::Envelope::encode_value::<
6855                                ::fidl_next::wire::String<'static>,
6856                                ___E,
6857                            >(
6858                                value, preallocated.encoder, &mut out, 1024
6859                            )?;
6860                        } else {
6861                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
6862                        }
6863                    }
6864
6865                    1 => {
6866                        if let Some(value) = self.source_name.take() {
6867                            ::fidl_next::wire::Envelope::encode_value::<
6868                                ::fidl_next::wire::String<'static>,
6869                                ___E,
6870                            >(
6871                                value, preallocated.encoder, &mut out, 100
6872                            )?;
6873                        } else {
6874                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
6875                        }
6876                    }
6877
6878                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
6879                }
6880                unsafe {
6881                    preallocated.write_next(out.assume_init_ref());
6882                }
6883            }
6884
6885            ::fidl_next::wire::Table::encode_len(table, max_ord);
6886
6887            Ok(())
6888        }
6889    }
6890
6891    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::UseStorage<'static>, ___E> for &'a UseStorage
6892    where
6893        ___E: ::fidl_next::Encoder + ?Sized,
6894    {
6895        #[inline]
6896        fn encode(
6897            self,
6898            encoder: &mut ___E,
6899            out: &mut ::core::mem::MaybeUninit<crate::wire::UseStorage<'static>>,
6900            _: (),
6901        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
6902            ::fidl_next::munge!(let crate::wire::UseStorage { table } = out);
6903
6904            let max_ord = self.__max_ordinal();
6905
6906            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
6907            ::fidl_next::Wire::zero_padding(&mut out);
6908
6909            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
6910                ::fidl_next::wire::Envelope,
6911            >(encoder, max_ord);
6912
6913            for i in 1..=max_ord {
6914                match i {
6915                    3 => {
6916                        if let Some(value) = &self.availability {
6917                            ::fidl_next::wire::Envelope::encode_value::<
6918                                crate::wire::Availability,
6919                                ___E,
6920                            >(
6921                                value, preallocated.encoder, &mut out, ()
6922                            )?;
6923                        } else {
6924                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
6925                        }
6926                    }
6927
6928                    2 => {
6929                        if let Some(value) = &self.target_path {
6930                            ::fidl_next::wire::Envelope::encode_value::<
6931                                ::fidl_next::wire::String<'static>,
6932                                ___E,
6933                            >(
6934                                value, preallocated.encoder, &mut out, 1024
6935                            )?;
6936                        } else {
6937                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
6938                        }
6939                    }
6940
6941                    1 => {
6942                        if let Some(value) = &self.source_name {
6943                            ::fidl_next::wire::Envelope::encode_value::<
6944                                ::fidl_next::wire::String<'static>,
6945                                ___E,
6946                            >(
6947                                value, preallocated.encoder, &mut out, 100
6948                            )?;
6949                        } else {
6950                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
6951                        }
6952                    }
6953
6954                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
6955                }
6956                unsafe {
6957                    preallocated.write_next(out.assume_init_ref());
6958                }
6959            }
6960
6961            ::fidl_next::wire::Table::encode_len(table, max_ord);
6962
6963            Ok(())
6964        }
6965    }
6966
6967    impl<'de> ::fidl_next::FromWire<crate::wire::UseStorage<'de>> for UseStorage {
6968        #[inline]
6969        fn from_wire(wire_: crate::wire::UseStorage<'de>) -> Self {
6970            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
6971
6972            let source_name = wire_.table.get(1);
6973
6974            let target_path = wire_.table.get(2);
6975
6976            let availability = wire_.table.get(3);
6977
6978            Self {
6979                source_name: source_name.map(|envelope| {
6980                    ::fidl_next::FromWire::from_wire(unsafe {
6981                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
6982                    })
6983                }),
6984
6985                target_path: target_path.map(|envelope| {
6986                    ::fidl_next::FromWire::from_wire(unsafe {
6987                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
6988                    })
6989                }),
6990
6991                availability: availability.map(|envelope| {
6992                    ::fidl_next::FromWire::from_wire(unsafe {
6993                        envelope.read_unchecked::<crate::wire::Availability>()
6994                    })
6995                }),
6996            }
6997        }
6998    }
6999
7000    impl<'de> ::fidl_next::FromWireRef<crate::wire::UseStorage<'de>> for UseStorage {
7001        #[inline]
7002        fn from_wire_ref(wire: &crate::wire::UseStorage<'de>) -> Self {
7003            Self {
7004                source_name: wire.table.get(1).map(|envelope| {
7005                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
7006                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
7007                    })
7008                }),
7009
7010                target_path: wire.table.get(2).map(|envelope| {
7011                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
7012                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
7013                    })
7014                }),
7015
7016                availability: wire.table.get(3).map(|envelope| {
7017                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
7018                        envelope.deref_unchecked::<crate::wire::Availability>()
7019                    })
7020                }),
7021            }
7022        }
7023    }
7024
7025    ::fidl_next::bitflags::bitflags! {
7026        #[doc = " Allowed sources for runtime overrides of a config field\'s value.\n"]#[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, )]pub struct ConfigMutability: u32 {
7027            #[doc = " Allow parent components to provide overrides for the configuration field.\n"]const PARENT = 1;
7028            const _ = !0;
7029        }
7030    }
7031
7032    unsafe impl<___E> ::fidl_next::Encode<crate::wire::ConfigMutability, ___E> for ConfigMutability
7033    where
7034        ___E: ?Sized,
7035    {
7036        #[inline]
7037        fn encode(
7038            self,
7039            encoder: &mut ___E,
7040            out: &mut ::core::mem::MaybeUninit<crate::wire::ConfigMutability>,
7041            _: (),
7042        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
7043            ::fidl_next::Encode::encode(&self, encoder, out, ())
7044        }
7045    }
7046
7047    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::ConfigMutability, ___E>
7048        for &'a ConfigMutability
7049    where
7050        ___E: ?Sized,
7051    {
7052        #[inline]
7053        fn encode(
7054            self,
7055            _: &mut ___E,
7056            out: &mut ::core::mem::MaybeUninit<crate::wire::ConfigMutability>,
7057            _: (),
7058        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
7059            ::fidl_next::munge!(let crate::wire::ConfigMutability { value } = out);
7060
7061            let _ = value.write(::fidl_next::wire::Uint32::from(self.bits()));
7062            Ok(())
7063        }
7064    }
7065
7066    impl ::core::convert::From<crate::wire::ConfigMutability> for ConfigMutability {
7067        fn from(wire: crate::wire::ConfigMutability) -> Self {
7068            Self::from_bits_retain(u32::from(wire.value))
7069        }
7070    }
7071
7072    impl ::fidl_next::FromWire<crate::wire::ConfigMutability> for ConfigMutability {
7073        #[inline]
7074        fn from_wire(wire: crate::wire::ConfigMutability) -> Self {
7075            Self::from(wire)
7076        }
7077    }
7078
7079    impl ::fidl_next::FromWireRef<crate::wire::ConfigMutability> for ConfigMutability {
7080        #[inline]
7081        fn from_wire_ref(wire: &crate::wire::ConfigMutability) -> Self {
7082            Self::from(*wire)
7083        }
7084    }
7085
7086    #[doc = " Declares a single config field (key + type)\n"]
7087    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
7088    pub struct ConfigField {
7089        pub key: ::core::option::Option<::std::string::String>,
7090
7091        pub type_: ::core::option::Option<crate::natural::ConfigType>,
7092
7093        pub mutability: ::core::option::Option<crate::natural::ConfigMutability>,
7094    }
7095
7096    impl ConfigField {
7097        fn __max_ordinal(&self) -> usize {
7098            if self.mutability.is_some() {
7099                return 3;
7100            }
7101
7102            if self.type_.is_some() {
7103                return 2;
7104            }
7105
7106            if self.key.is_some() {
7107                return 1;
7108            }
7109
7110            0
7111        }
7112    }
7113
7114    unsafe impl<___E> ::fidl_next::Encode<crate::wire::ConfigField<'static>, ___E> for ConfigField
7115    where
7116        ___E: ::fidl_next::Encoder + ?Sized,
7117    {
7118        #[inline]
7119        fn encode(
7120            mut self,
7121            encoder: &mut ___E,
7122            out: &mut ::core::mem::MaybeUninit<crate::wire::ConfigField<'static>>,
7123            _: (),
7124        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
7125            ::fidl_next::munge!(let crate::wire::ConfigField { table } = out);
7126
7127            let max_ord = self.__max_ordinal();
7128
7129            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
7130            ::fidl_next::Wire::zero_padding(&mut out);
7131
7132            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
7133                ::fidl_next::wire::Envelope,
7134            >(encoder, max_ord);
7135
7136            for i in 1..=max_ord {
7137                match i {
7138                    3 => {
7139                        if let Some(value) = self.mutability.take() {
7140                            ::fidl_next::wire::Envelope::encode_value::<
7141                                crate::wire::ConfigMutability,
7142                                ___E,
7143                            >(
7144                                value, preallocated.encoder, &mut out, ()
7145                            )?;
7146                        } else {
7147                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
7148                        }
7149                    }
7150
7151                    2 => {
7152                        if let Some(value) = self.type_.take() {
7153                            ::fidl_next::wire::Envelope::encode_value::<
7154                                crate::wire::ConfigType<'static>,
7155                                ___E,
7156                            >(
7157                                value, preallocated.encoder, &mut out, ()
7158                            )?;
7159                        } else {
7160                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
7161                        }
7162                    }
7163
7164                    1 => {
7165                        if let Some(value) = self.key.take() {
7166                            ::fidl_next::wire::Envelope::encode_value::<
7167                                ::fidl_next::wire::String<'static>,
7168                                ___E,
7169                            >(
7170                                value, preallocated.encoder, &mut out, 64
7171                            )?;
7172                        } else {
7173                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
7174                        }
7175                    }
7176
7177                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
7178                }
7179                unsafe {
7180                    preallocated.write_next(out.assume_init_ref());
7181                }
7182            }
7183
7184            ::fidl_next::wire::Table::encode_len(table, max_ord);
7185
7186            Ok(())
7187        }
7188    }
7189
7190    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::ConfigField<'static>, ___E>
7191        for &'a ConfigField
7192    where
7193        ___E: ::fidl_next::Encoder + ?Sized,
7194    {
7195        #[inline]
7196        fn encode(
7197            self,
7198            encoder: &mut ___E,
7199            out: &mut ::core::mem::MaybeUninit<crate::wire::ConfigField<'static>>,
7200            _: (),
7201        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
7202            ::fidl_next::munge!(let crate::wire::ConfigField { table } = out);
7203
7204            let max_ord = self.__max_ordinal();
7205
7206            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
7207            ::fidl_next::Wire::zero_padding(&mut out);
7208
7209            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
7210                ::fidl_next::wire::Envelope,
7211            >(encoder, max_ord);
7212
7213            for i in 1..=max_ord {
7214                match i {
7215                    3 => {
7216                        if let Some(value) = &self.mutability {
7217                            ::fidl_next::wire::Envelope::encode_value::<
7218                                crate::wire::ConfigMutability,
7219                                ___E,
7220                            >(
7221                                value, preallocated.encoder, &mut out, ()
7222                            )?;
7223                        } else {
7224                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
7225                        }
7226                    }
7227
7228                    2 => {
7229                        if let Some(value) = &self.type_ {
7230                            ::fidl_next::wire::Envelope::encode_value::<
7231                                crate::wire::ConfigType<'static>,
7232                                ___E,
7233                            >(
7234                                value, preallocated.encoder, &mut out, ()
7235                            )?;
7236                        } else {
7237                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
7238                        }
7239                    }
7240
7241                    1 => {
7242                        if let Some(value) = &self.key {
7243                            ::fidl_next::wire::Envelope::encode_value::<
7244                                ::fidl_next::wire::String<'static>,
7245                                ___E,
7246                            >(
7247                                value, preallocated.encoder, &mut out, 64
7248                            )?;
7249                        } else {
7250                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
7251                        }
7252                    }
7253
7254                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
7255                }
7256                unsafe {
7257                    preallocated.write_next(out.assume_init_ref());
7258                }
7259            }
7260
7261            ::fidl_next::wire::Table::encode_len(table, max_ord);
7262
7263            Ok(())
7264        }
7265    }
7266
7267    impl<'de> ::fidl_next::FromWire<crate::wire::ConfigField<'de>> for ConfigField {
7268        #[inline]
7269        fn from_wire(wire_: crate::wire::ConfigField<'de>) -> Self {
7270            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
7271
7272            let key = wire_.table.get(1);
7273
7274            let type_ = wire_.table.get(2);
7275
7276            let mutability = wire_.table.get(3);
7277
7278            Self {
7279                key: key.map(|envelope| {
7280                    ::fidl_next::FromWire::from_wire(unsafe {
7281                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
7282                    })
7283                }),
7284
7285                type_: type_.map(|envelope| {
7286                    ::fidl_next::FromWire::from_wire(unsafe {
7287                        envelope.read_unchecked::<crate::wire::ConfigType<'de>>()
7288                    })
7289                }),
7290
7291                mutability: mutability.map(|envelope| {
7292                    ::fidl_next::FromWire::from_wire(unsafe {
7293                        envelope.read_unchecked::<crate::wire::ConfigMutability>()
7294                    })
7295                }),
7296            }
7297        }
7298    }
7299
7300    impl<'de> ::fidl_next::FromWireRef<crate::wire::ConfigField<'de>> for ConfigField {
7301        #[inline]
7302        fn from_wire_ref(wire: &crate::wire::ConfigField<'de>) -> Self {
7303            Self {
7304                key: wire.table.get(1).map(|envelope| {
7305                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
7306                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
7307                    })
7308                }),
7309
7310                type_: wire.table.get(2).map(|envelope| {
7311                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
7312                        envelope.deref_unchecked::<crate::wire::ConfigType<'de>>()
7313                    })
7314                }),
7315
7316                mutability: wire.table.get(3).map(|envelope| {
7317                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
7318                        envelope.deref_unchecked::<crate::wire::ConfigMutability>()
7319                    })
7320                }),
7321            }
7322        }
7323    }
7324
7325    #[doc = " A program declaration.\n\n This declaration is set by executable components to designate the runner to\n use and pass runner-specific program information to it.\n\n To learn more about runners, see:\n https://fuchsia.dev/fuchsia-src/glossary#runner\n"]
7326    #[derive(Debug, Default, Clone, PartialEq)]
7327    pub struct Program {
7328        pub runner: ::core::option::Option<::std::string::String>,
7329
7330        pub info: ::core::option::Option<::fidl_next_common_fuchsia_data::natural::Dictionary>,
7331    }
7332
7333    impl Program {
7334        fn __max_ordinal(&self) -> usize {
7335            if self.info.is_some() {
7336                return 2;
7337            }
7338
7339            if self.runner.is_some() {
7340                return 1;
7341            }
7342
7343            0
7344        }
7345    }
7346
7347    unsafe impl<___E> ::fidl_next::Encode<crate::wire::Program<'static>, ___E> for Program
7348    where
7349        ___E: ::fidl_next::Encoder + ?Sized,
7350    {
7351        #[inline]
7352        fn encode(
7353            mut self,
7354            encoder: &mut ___E,
7355            out: &mut ::core::mem::MaybeUninit<crate::wire::Program<'static>>,
7356            _: (),
7357        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
7358            ::fidl_next::munge!(let crate::wire::Program { table } = out);
7359
7360            let max_ord = self.__max_ordinal();
7361
7362            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
7363            ::fidl_next::Wire::zero_padding(&mut out);
7364
7365            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
7366                ::fidl_next::wire::Envelope,
7367            >(encoder, max_ord);
7368
7369            for i in 1..=max_ord {
7370                match i {
7371                    2 => {
7372                        if let Some(value) = self.info.take() {
7373                            ::fidl_next::wire::Envelope::encode_value::<
7374                                ::fidl_next_common_fuchsia_data::wire::Dictionary<'static>,
7375                                ___E,
7376                            >(
7377                                value, preallocated.encoder, &mut out, ()
7378                            )?;
7379                        } else {
7380                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
7381                        }
7382                    }
7383
7384                    1 => {
7385                        if let Some(value) = self.runner.take() {
7386                            ::fidl_next::wire::Envelope::encode_value::<
7387                                ::fidl_next::wire::String<'static>,
7388                                ___E,
7389                            >(
7390                                value, preallocated.encoder, &mut out, 100
7391                            )?;
7392                        } else {
7393                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
7394                        }
7395                    }
7396
7397                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
7398                }
7399                unsafe {
7400                    preallocated.write_next(out.assume_init_ref());
7401                }
7402            }
7403
7404            ::fidl_next::wire::Table::encode_len(table, max_ord);
7405
7406            Ok(())
7407        }
7408    }
7409
7410    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::Program<'static>, ___E> for &'a Program
7411    where
7412        ___E: ::fidl_next::Encoder + ?Sized,
7413    {
7414        #[inline]
7415        fn encode(
7416            self,
7417            encoder: &mut ___E,
7418            out: &mut ::core::mem::MaybeUninit<crate::wire::Program<'static>>,
7419            _: (),
7420        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
7421            ::fidl_next::munge!(let crate::wire::Program { table } = out);
7422
7423            let max_ord = self.__max_ordinal();
7424
7425            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
7426            ::fidl_next::Wire::zero_padding(&mut out);
7427
7428            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
7429                ::fidl_next::wire::Envelope,
7430            >(encoder, max_ord);
7431
7432            for i in 1..=max_ord {
7433                match i {
7434                    2 => {
7435                        if let Some(value) = &self.info {
7436                            ::fidl_next::wire::Envelope::encode_value::<
7437                                ::fidl_next_common_fuchsia_data::wire::Dictionary<'static>,
7438                                ___E,
7439                            >(
7440                                value, preallocated.encoder, &mut out, ()
7441                            )?;
7442                        } else {
7443                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
7444                        }
7445                    }
7446
7447                    1 => {
7448                        if let Some(value) = &self.runner {
7449                            ::fidl_next::wire::Envelope::encode_value::<
7450                                ::fidl_next::wire::String<'static>,
7451                                ___E,
7452                            >(
7453                                value, preallocated.encoder, &mut out, 100
7454                            )?;
7455                        } else {
7456                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
7457                        }
7458                    }
7459
7460                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
7461                }
7462                unsafe {
7463                    preallocated.write_next(out.assume_init_ref());
7464                }
7465            }
7466
7467            ::fidl_next::wire::Table::encode_len(table, max_ord);
7468
7469            Ok(())
7470        }
7471    }
7472
7473    impl<'de> ::fidl_next::FromWire<crate::wire::Program<'de>> for Program {
7474        #[inline]
7475        fn from_wire(wire_: crate::wire::Program<'de>) -> Self {
7476            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
7477
7478            let runner = wire_.table.get(1);
7479
7480            let info = wire_.table.get(2);
7481
7482            Self {
7483
7484
7485                runner: runner.map(|envelope| ::fidl_next::FromWire::from_wire(
7486                    unsafe { envelope.read_unchecked::<::fidl_next::wire::String<'de>>() }
7487                )),
7488
7489
7490                info: info.map(|envelope| ::fidl_next::FromWire::from_wire(
7491                    unsafe { envelope.read_unchecked::<::fidl_next_common_fuchsia_data::wire::Dictionary<'de>>() }
7492                )),
7493
7494        }
7495        }
7496    }
7497
7498    impl<'de> ::fidl_next::FromWireRef<crate::wire::Program<'de>> for Program {
7499        #[inline]
7500        fn from_wire_ref(wire: &crate::wire::Program<'de>) -> Self {
7501            Self {
7502
7503
7504                runner: wire.table.get(1)
7505                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
7506                        unsafe { envelope.deref_unchecked::<::fidl_next::wire::String<'de>>() }
7507                    )),
7508
7509
7510                info: wire.table.get(2)
7511                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
7512                        unsafe { envelope.deref_unchecked::<::fidl_next_common_fuchsia_data::wire::Dictionary<'de>>() }
7513                    )),
7514
7515        }
7516        }
7517    }
7518
7519    #[doc = " Debug information about the component.\n"]
7520    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
7521    pub struct DebugInfo {
7522        pub manifest_sources: ::core::option::Option<::std::vec::Vec<::std::string::String>>,
7523    }
7524
7525    impl DebugInfo {
7526        fn __max_ordinal(&self) -> usize {
7527            if self.manifest_sources.is_some() {
7528                return 1;
7529            }
7530
7531            0
7532        }
7533    }
7534
7535    unsafe impl<___E> ::fidl_next::Encode<crate::wire::DebugInfo<'static>, ___E> for DebugInfo
7536    where
7537        ___E: ::fidl_next::Encoder + ?Sized,
7538    {
7539        #[inline]
7540        fn encode(
7541            mut self,
7542            encoder: &mut ___E,
7543            out: &mut ::core::mem::MaybeUninit<crate::wire::DebugInfo<'static>>,
7544            _: (),
7545        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
7546            ::fidl_next::munge!(let crate::wire::DebugInfo { table } = out);
7547
7548            let max_ord = self.__max_ordinal();
7549
7550            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
7551            ::fidl_next::Wire::zero_padding(&mut out);
7552
7553            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
7554                ::fidl_next::wire::Envelope,
7555            >(encoder, max_ord);
7556
7557            for i in 1..=max_ord {
7558                match i {
7559                    1 => {
7560                        if let Some(value) = self.manifest_sources.take() {
7561                            ::fidl_next::wire::Envelope::encode_value::<
7562                                ::fidl_next::wire::Vector<
7563                                    'static,
7564                                    ::fidl_next::wire::String<'static>,
7565                                >,
7566                                ___E,
7567                            >(
7568                                value, preallocated.encoder, &mut out, (4294967295, 4294967295)
7569                            )?;
7570                        } else {
7571                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
7572                        }
7573                    }
7574
7575                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
7576                }
7577                unsafe {
7578                    preallocated.write_next(out.assume_init_ref());
7579                }
7580            }
7581
7582            ::fidl_next::wire::Table::encode_len(table, max_ord);
7583
7584            Ok(())
7585        }
7586    }
7587
7588    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::DebugInfo<'static>, ___E> for &'a DebugInfo
7589    where
7590        ___E: ::fidl_next::Encoder + ?Sized,
7591    {
7592        #[inline]
7593        fn encode(
7594            self,
7595            encoder: &mut ___E,
7596            out: &mut ::core::mem::MaybeUninit<crate::wire::DebugInfo<'static>>,
7597            _: (),
7598        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
7599            ::fidl_next::munge!(let crate::wire::DebugInfo { table } = out);
7600
7601            let max_ord = self.__max_ordinal();
7602
7603            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
7604            ::fidl_next::Wire::zero_padding(&mut out);
7605
7606            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
7607                ::fidl_next::wire::Envelope,
7608            >(encoder, max_ord);
7609
7610            for i in 1..=max_ord {
7611                match i {
7612                    1 => {
7613                        if let Some(value) = &self.manifest_sources {
7614                            ::fidl_next::wire::Envelope::encode_value::<
7615                                ::fidl_next::wire::Vector<
7616                                    'static,
7617                                    ::fidl_next::wire::String<'static>,
7618                                >,
7619                                ___E,
7620                            >(
7621                                value, preallocated.encoder, &mut out, (4294967295, 4294967295)
7622                            )?;
7623                        } else {
7624                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
7625                        }
7626                    }
7627
7628                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
7629                }
7630                unsafe {
7631                    preallocated.write_next(out.assume_init_ref());
7632                }
7633            }
7634
7635            ::fidl_next::wire::Table::encode_len(table, max_ord);
7636
7637            Ok(())
7638        }
7639    }
7640
7641    impl<'de> ::fidl_next::FromWire<crate::wire::DebugInfo<'de>> for DebugInfo {
7642        #[inline]
7643        fn from_wire(wire_: crate::wire::DebugInfo<'de>) -> Self {
7644            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
7645
7646            let manifest_sources = wire_.table.get(1);
7647
7648            Self {
7649
7650
7651                manifest_sources: manifest_sources.map(|envelope| ::fidl_next::FromWire::from_wire(
7652                    unsafe { envelope.read_unchecked::<::fidl_next::wire::Vector<'de, ::fidl_next::wire::String<'de>>>() }
7653                )),
7654
7655        }
7656        }
7657    }
7658
7659    impl<'de> ::fidl_next::FromWireRef<crate::wire::DebugInfo<'de>> for DebugInfo {
7660        #[inline]
7661        fn from_wire_ref(wire: &crate::wire::DebugInfo<'de>) -> Self {
7662            Self {
7663
7664
7665                manifest_sources: wire.table.get(1)
7666                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
7667                        unsafe { envelope.deref_unchecked::<::fidl_next::wire::Vector<'de, ::fidl_next::wire::String<'de>>>() }
7668                    )),
7669
7670        }
7671        }
7672    }
7673
7674    #[doc = " Declares a service used by a component, which was offered to it.\n\n To learn more about services, see:\n https://fuchsia.dev/fuchsia-src/glossary#service\n"]
7675    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
7676    pub struct UseService {
7677        pub source: ::core::option::Option<crate::natural::Ref>,
7678
7679        pub source_name: ::core::option::Option<::std::string::String>,
7680
7681        pub target_path: ::core::option::Option<::std::string::String>,
7682
7683        pub dependency_type: ::core::option::Option<crate::natural::DependencyType>,
7684
7685        pub availability: ::core::option::Option<crate::natural::Availability>,
7686
7687        pub source_dictionary: ::core::option::Option<::std::string::String>,
7688    }
7689
7690    impl UseService {
7691        fn __max_ordinal(&self) -> usize {
7692            if self.source_dictionary.is_some() {
7693                return 6;
7694            }
7695
7696            if self.availability.is_some() {
7697                return 5;
7698            }
7699
7700            if self.dependency_type.is_some() {
7701                return 4;
7702            }
7703
7704            if self.target_path.is_some() {
7705                return 3;
7706            }
7707
7708            if self.source_name.is_some() {
7709                return 2;
7710            }
7711
7712            if self.source.is_some() {
7713                return 1;
7714            }
7715
7716            0
7717        }
7718    }
7719
7720    unsafe impl<___E> ::fidl_next::Encode<crate::wire::UseService<'static>, ___E> for UseService
7721    where
7722        ___E: ::fidl_next::Encoder + ?Sized,
7723    {
7724        #[inline]
7725        fn encode(
7726            mut self,
7727            encoder: &mut ___E,
7728            out: &mut ::core::mem::MaybeUninit<crate::wire::UseService<'static>>,
7729            _: (),
7730        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
7731            ::fidl_next::munge!(let crate::wire::UseService { table } = out);
7732
7733            let max_ord = self.__max_ordinal();
7734
7735            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
7736            ::fidl_next::Wire::zero_padding(&mut out);
7737
7738            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
7739                ::fidl_next::wire::Envelope,
7740            >(encoder, max_ord);
7741
7742            for i in 1..=max_ord {
7743                match i {
7744                    6 => {
7745                        if let Some(value) = self.source_dictionary.take() {
7746                            ::fidl_next::wire::Envelope::encode_value::<
7747                                ::fidl_next::wire::String<'static>,
7748                                ___E,
7749                            >(
7750                                value, preallocated.encoder, &mut out, 1024
7751                            )?;
7752                        } else {
7753                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
7754                        }
7755                    }
7756
7757                    5 => {
7758                        if let Some(value) = self.availability.take() {
7759                            ::fidl_next::wire::Envelope::encode_value::<
7760                                crate::wire::Availability,
7761                                ___E,
7762                            >(
7763                                value, preallocated.encoder, &mut out, ()
7764                            )?;
7765                        } else {
7766                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
7767                        }
7768                    }
7769
7770                    4 => {
7771                        if let Some(value) = self.dependency_type.take() {
7772                            ::fidl_next::wire::Envelope::encode_value::<
7773                                crate::wire::DependencyType,
7774                                ___E,
7775                            >(
7776                                value, preallocated.encoder, &mut out, ()
7777                            )?;
7778                        } else {
7779                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
7780                        }
7781                    }
7782
7783                    3 => {
7784                        if let Some(value) = self.target_path.take() {
7785                            ::fidl_next::wire::Envelope::encode_value::<
7786                                ::fidl_next::wire::String<'static>,
7787                                ___E,
7788                            >(
7789                                value, preallocated.encoder, &mut out, 1024
7790                            )?;
7791                        } else {
7792                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
7793                        }
7794                    }
7795
7796                    2 => {
7797                        if let Some(value) = self.source_name.take() {
7798                            ::fidl_next::wire::Envelope::encode_value::<
7799                                ::fidl_next::wire::String<'static>,
7800                                ___E,
7801                            >(
7802                                value, preallocated.encoder, &mut out, 100
7803                            )?;
7804                        } else {
7805                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
7806                        }
7807                    }
7808
7809                    1 => {
7810                        if let Some(value) = self.source.take() {
7811                            ::fidl_next::wire::Envelope::encode_value::<
7812                                crate::wire::Ref<'static>,
7813                                ___E,
7814                            >(
7815                                value, preallocated.encoder, &mut out, ()
7816                            )?;
7817                        } else {
7818                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
7819                        }
7820                    }
7821
7822                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
7823                }
7824                unsafe {
7825                    preallocated.write_next(out.assume_init_ref());
7826                }
7827            }
7828
7829            ::fidl_next::wire::Table::encode_len(table, max_ord);
7830
7831            Ok(())
7832        }
7833    }
7834
7835    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::UseService<'static>, ___E> for &'a UseService
7836    where
7837        ___E: ::fidl_next::Encoder + ?Sized,
7838    {
7839        #[inline]
7840        fn encode(
7841            self,
7842            encoder: &mut ___E,
7843            out: &mut ::core::mem::MaybeUninit<crate::wire::UseService<'static>>,
7844            _: (),
7845        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
7846            ::fidl_next::munge!(let crate::wire::UseService { table } = out);
7847
7848            let max_ord = self.__max_ordinal();
7849
7850            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
7851            ::fidl_next::Wire::zero_padding(&mut out);
7852
7853            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
7854                ::fidl_next::wire::Envelope,
7855            >(encoder, max_ord);
7856
7857            for i in 1..=max_ord {
7858                match i {
7859                    6 => {
7860                        if let Some(value) = &self.source_dictionary {
7861                            ::fidl_next::wire::Envelope::encode_value::<
7862                                ::fidl_next::wire::String<'static>,
7863                                ___E,
7864                            >(
7865                                value, preallocated.encoder, &mut out, 1024
7866                            )?;
7867                        } else {
7868                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
7869                        }
7870                    }
7871
7872                    5 => {
7873                        if let Some(value) = &self.availability {
7874                            ::fidl_next::wire::Envelope::encode_value::<
7875                                crate::wire::Availability,
7876                                ___E,
7877                            >(
7878                                value, preallocated.encoder, &mut out, ()
7879                            )?;
7880                        } else {
7881                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
7882                        }
7883                    }
7884
7885                    4 => {
7886                        if let Some(value) = &self.dependency_type {
7887                            ::fidl_next::wire::Envelope::encode_value::<
7888                                crate::wire::DependencyType,
7889                                ___E,
7890                            >(
7891                                value, preallocated.encoder, &mut out, ()
7892                            )?;
7893                        } else {
7894                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
7895                        }
7896                    }
7897
7898                    3 => {
7899                        if let Some(value) = &self.target_path {
7900                            ::fidl_next::wire::Envelope::encode_value::<
7901                                ::fidl_next::wire::String<'static>,
7902                                ___E,
7903                            >(
7904                                value, preallocated.encoder, &mut out, 1024
7905                            )?;
7906                        } else {
7907                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
7908                        }
7909                    }
7910
7911                    2 => {
7912                        if let Some(value) = &self.source_name {
7913                            ::fidl_next::wire::Envelope::encode_value::<
7914                                ::fidl_next::wire::String<'static>,
7915                                ___E,
7916                            >(
7917                                value, preallocated.encoder, &mut out, 100
7918                            )?;
7919                        } else {
7920                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
7921                        }
7922                    }
7923
7924                    1 => {
7925                        if let Some(value) = &self.source {
7926                            ::fidl_next::wire::Envelope::encode_value::<
7927                                crate::wire::Ref<'static>,
7928                                ___E,
7929                            >(
7930                                value, preallocated.encoder, &mut out, ()
7931                            )?;
7932                        } else {
7933                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
7934                        }
7935                    }
7936
7937                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
7938                }
7939                unsafe {
7940                    preallocated.write_next(out.assume_init_ref());
7941                }
7942            }
7943
7944            ::fidl_next::wire::Table::encode_len(table, max_ord);
7945
7946            Ok(())
7947        }
7948    }
7949
7950    impl<'de> ::fidl_next::FromWire<crate::wire::UseService<'de>> for UseService {
7951        #[inline]
7952        fn from_wire(wire_: crate::wire::UseService<'de>) -> Self {
7953            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
7954
7955            let source = wire_.table.get(1);
7956
7957            let source_name = wire_.table.get(2);
7958
7959            let target_path = wire_.table.get(3);
7960
7961            let dependency_type = wire_.table.get(4);
7962
7963            let availability = wire_.table.get(5);
7964
7965            let source_dictionary = wire_.table.get(6);
7966
7967            Self {
7968                source: source.map(|envelope| {
7969                    ::fidl_next::FromWire::from_wire(unsafe {
7970                        envelope.read_unchecked::<crate::wire::Ref<'de>>()
7971                    })
7972                }),
7973
7974                source_name: source_name.map(|envelope| {
7975                    ::fidl_next::FromWire::from_wire(unsafe {
7976                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
7977                    })
7978                }),
7979
7980                target_path: target_path.map(|envelope| {
7981                    ::fidl_next::FromWire::from_wire(unsafe {
7982                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
7983                    })
7984                }),
7985
7986                dependency_type: dependency_type.map(|envelope| {
7987                    ::fidl_next::FromWire::from_wire(unsafe {
7988                        envelope.read_unchecked::<crate::wire::DependencyType>()
7989                    })
7990                }),
7991
7992                availability: availability.map(|envelope| {
7993                    ::fidl_next::FromWire::from_wire(unsafe {
7994                        envelope.read_unchecked::<crate::wire::Availability>()
7995                    })
7996                }),
7997
7998                source_dictionary: source_dictionary.map(|envelope| {
7999                    ::fidl_next::FromWire::from_wire(unsafe {
8000                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
8001                    })
8002                }),
8003            }
8004        }
8005    }
8006
8007    impl<'de> ::fidl_next::FromWireRef<crate::wire::UseService<'de>> for UseService {
8008        #[inline]
8009        fn from_wire_ref(wire: &crate::wire::UseService<'de>) -> Self {
8010            Self {
8011                source: wire.table.get(1).map(|envelope| {
8012                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
8013                        envelope.deref_unchecked::<crate::wire::Ref<'de>>()
8014                    })
8015                }),
8016
8017                source_name: wire.table.get(2).map(|envelope| {
8018                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
8019                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
8020                    })
8021                }),
8022
8023                target_path: wire.table.get(3).map(|envelope| {
8024                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
8025                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
8026                    })
8027                }),
8028
8029                dependency_type: wire.table.get(4).map(|envelope| {
8030                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
8031                        envelope.deref_unchecked::<crate::wire::DependencyType>()
8032                    })
8033                }),
8034
8035                availability: wire.table.get(5).map(|envelope| {
8036                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
8037                        envelope.deref_unchecked::<crate::wire::Availability>()
8038                    })
8039                }),
8040
8041                source_dictionary: wire.table.get(6).map(|envelope| {
8042                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
8043                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
8044                    })
8045                }),
8046            }
8047        }
8048    }
8049
8050    #[doc = " Declares a protocol used by a component, which was offered to it.\n\n A protocol is a service with a single instance, provided by a single FIDL\n protocol.\n"]
8051    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
8052    pub struct UseProtocol {
8053        pub source: ::core::option::Option<crate::natural::Ref>,
8054
8055        pub source_name: ::core::option::Option<::std::string::String>,
8056
8057        pub target_path: ::core::option::Option<::std::string::String>,
8058
8059        pub dependency_type: ::core::option::Option<crate::natural::DependencyType>,
8060
8061        pub availability: ::core::option::Option<crate::natural::Availability>,
8062
8063        pub source_dictionary: ::core::option::Option<::std::string::String>,
8064
8065        pub numbered_handle: ::core::option::Option<u8>,
8066    }
8067
8068    impl UseProtocol {
8069        fn __max_ordinal(&self) -> usize {
8070            if self.numbered_handle.is_some() {
8071                return 7;
8072            }
8073
8074            if self.source_dictionary.is_some() {
8075                return 6;
8076            }
8077
8078            if self.availability.is_some() {
8079                return 5;
8080            }
8081
8082            if self.dependency_type.is_some() {
8083                return 4;
8084            }
8085
8086            if self.target_path.is_some() {
8087                return 3;
8088            }
8089
8090            if self.source_name.is_some() {
8091                return 2;
8092            }
8093
8094            if self.source.is_some() {
8095                return 1;
8096            }
8097
8098            0
8099        }
8100    }
8101
8102    unsafe impl<___E> ::fidl_next::Encode<crate::wire::UseProtocol<'static>, ___E> for UseProtocol
8103    where
8104        ___E: ::fidl_next::Encoder + ?Sized,
8105    {
8106        #[inline]
8107        fn encode(
8108            mut self,
8109            encoder: &mut ___E,
8110            out: &mut ::core::mem::MaybeUninit<crate::wire::UseProtocol<'static>>,
8111            _: (),
8112        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
8113            ::fidl_next::munge!(let crate::wire::UseProtocol { table } = out);
8114
8115            let max_ord = self.__max_ordinal();
8116
8117            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
8118            ::fidl_next::Wire::zero_padding(&mut out);
8119
8120            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
8121                ::fidl_next::wire::Envelope,
8122            >(encoder, max_ord);
8123
8124            for i in 1..=max_ord {
8125                match i {
8126                    7 => {
8127                        if let Some(value) = self.numbered_handle.take() {
8128                            ::fidl_next::wire::Envelope::encode_value::<u8, ___E>(
8129                                value,
8130                                preallocated.encoder,
8131                                &mut out,
8132                                (),
8133                            )?;
8134                        } else {
8135                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
8136                        }
8137                    }
8138
8139                    6 => {
8140                        if let Some(value) = self.source_dictionary.take() {
8141                            ::fidl_next::wire::Envelope::encode_value::<
8142                                ::fidl_next::wire::String<'static>,
8143                                ___E,
8144                            >(
8145                                value, preallocated.encoder, &mut out, 1024
8146                            )?;
8147                        } else {
8148                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
8149                        }
8150                    }
8151
8152                    5 => {
8153                        if let Some(value) = self.availability.take() {
8154                            ::fidl_next::wire::Envelope::encode_value::<
8155                                crate::wire::Availability,
8156                                ___E,
8157                            >(
8158                                value, preallocated.encoder, &mut out, ()
8159                            )?;
8160                        } else {
8161                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
8162                        }
8163                    }
8164
8165                    4 => {
8166                        if let Some(value) = self.dependency_type.take() {
8167                            ::fidl_next::wire::Envelope::encode_value::<
8168                                crate::wire::DependencyType,
8169                                ___E,
8170                            >(
8171                                value, preallocated.encoder, &mut out, ()
8172                            )?;
8173                        } else {
8174                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
8175                        }
8176                    }
8177
8178                    3 => {
8179                        if let Some(value) = self.target_path.take() {
8180                            ::fidl_next::wire::Envelope::encode_value::<
8181                                ::fidl_next::wire::String<'static>,
8182                                ___E,
8183                            >(
8184                                value, preallocated.encoder, &mut out, 1024
8185                            )?;
8186                        } else {
8187                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
8188                        }
8189                    }
8190
8191                    2 => {
8192                        if let Some(value) = self.source_name.take() {
8193                            ::fidl_next::wire::Envelope::encode_value::<
8194                                ::fidl_next::wire::String<'static>,
8195                                ___E,
8196                            >(
8197                                value, preallocated.encoder, &mut out, 100
8198                            )?;
8199                        } else {
8200                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
8201                        }
8202                    }
8203
8204                    1 => {
8205                        if let Some(value) = self.source.take() {
8206                            ::fidl_next::wire::Envelope::encode_value::<
8207                                crate::wire::Ref<'static>,
8208                                ___E,
8209                            >(
8210                                value, preallocated.encoder, &mut out, ()
8211                            )?;
8212                        } else {
8213                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
8214                        }
8215                    }
8216
8217                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
8218                }
8219                unsafe {
8220                    preallocated.write_next(out.assume_init_ref());
8221                }
8222            }
8223
8224            ::fidl_next::wire::Table::encode_len(table, max_ord);
8225
8226            Ok(())
8227        }
8228    }
8229
8230    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::UseProtocol<'static>, ___E>
8231        for &'a UseProtocol
8232    where
8233        ___E: ::fidl_next::Encoder + ?Sized,
8234    {
8235        #[inline]
8236        fn encode(
8237            self,
8238            encoder: &mut ___E,
8239            out: &mut ::core::mem::MaybeUninit<crate::wire::UseProtocol<'static>>,
8240            _: (),
8241        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
8242            ::fidl_next::munge!(let crate::wire::UseProtocol { table } = out);
8243
8244            let max_ord = self.__max_ordinal();
8245
8246            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
8247            ::fidl_next::Wire::zero_padding(&mut out);
8248
8249            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
8250                ::fidl_next::wire::Envelope,
8251            >(encoder, max_ord);
8252
8253            for i in 1..=max_ord {
8254                match i {
8255                    7 => {
8256                        if let Some(value) = &self.numbered_handle {
8257                            ::fidl_next::wire::Envelope::encode_value::<u8, ___E>(
8258                                value,
8259                                preallocated.encoder,
8260                                &mut out,
8261                                (),
8262                            )?;
8263                        } else {
8264                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
8265                        }
8266                    }
8267
8268                    6 => {
8269                        if let Some(value) = &self.source_dictionary {
8270                            ::fidl_next::wire::Envelope::encode_value::<
8271                                ::fidl_next::wire::String<'static>,
8272                                ___E,
8273                            >(
8274                                value, preallocated.encoder, &mut out, 1024
8275                            )?;
8276                        } else {
8277                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
8278                        }
8279                    }
8280
8281                    5 => {
8282                        if let Some(value) = &self.availability {
8283                            ::fidl_next::wire::Envelope::encode_value::<
8284                                crate::wire::Availability,
8285                                ___E,
8286                            >(
8287                                value, preallocated.encoder, &mut out, ()
8288                            )?;
8289                        } else {
8290                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
8291                        }
8292                    }
8293
8294                    4 => {
8295                        if let Some(value) = &self.dependency_type {
8296                            ::fidl_next::wire::Envelope::encode_value::<
8297                                crate::wire::DependencyType,
8298                                ___E,
8299                            >(
8300                                value, preallocated.encoder, &mut out, ()
8301                            )?;
8302                        } else {
8303                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
8304                        }
8305                    }
8306
8307                    3 => {
8308                        if let Some(value) = &self.target_path {
8309                            ::fidl_next::wire::Envelope::encode_value::<
8310                                ::fidl_next::wire::String<'static>,
8311                                ___E,
8312                            >(
8313                                value, preallocated.encoder, &mut out, 1024
8314                            )?;
8315                        } else {
8316                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
8317                        }
8318                    }
8319
8320                    2 => {
8321                        if let Some(value) = &self.source_name {
8322                            ::fidl_next::wire::Envelope::encode_value::<
8323                                ::fidl_next::wire::String<'static>,
8324                                ___E,
8325                            >(
8326                                value, preallocated.encoder, &mut out, 100
8327                            )?;
8328                        } else {
8329                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
8330                        }
8331                    }
8332
8333                    1 => {
8334                        if let Some(value) = &self.source {
8335                            ::fidl_next::wire::Envelope::encode_value::<
8336                                crate::wire::Ref<'static>,
8337                                ___E,
8338                            >(
8339                                value, preallocated.encoder, &mut out, ()
8340                            )?;
8341                        } else {
8342                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
8343                        }
8344                    }
8345
8346                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
8347                }
8348                unsafe {
8349                    preallocated.write_next(out.assume_init_ref());
8350                }
8351            }
8352
8353            ::fidl_next::wire::Table::encode_len(table, max_ord);
8354
8355            Ok(())
8356        }
8357    }
8358
8359    impl<'de> ::fidl_next::FromWire<crate::wire::UseProtocol<'de>> for UseProtocol {
8360        #[inline]
8361        fn from_wire(wire_: crate::wire::UseProtocol<'de>) -> Self {
8362            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
8363
8364            let source = wire_.table.get(1);
8365
8366            let source_name = wire_.table.get(2);
8367
8368            let target_path = wire_.table.get(3);
8369
8370            let dependency_type = wire_.table.get(4);
8371
8372            let availability = wire_.table.get(5);
8373
8374            let source_dictionary = wire_.table.get(6);
8375
8376            let numbered_handle = wire_.table.get(7);
8377
8378            Self {
8379                source: source.map(|envelope| {
8380                    ::fidl_next::FromWire::from_wire(unsafe {
8381                        envelope.read_unchecked::<crate::wire::Ref<'de>>()
8382                    })
8383                }),
8384
8385                source_name: source_name.map(|envelope| {
8386                    ::fidl_next::FromWire::from_wire(unsafe {
8387                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
8388                    })
8389                }),
8390
8391                target_path: target_path.map(|envelope| {
8392                    ::fidl_next::FromWire::from_wire(unsafe {
8393                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
8394                    })
8395                }),
8396
8397                dependency_type: dependency_type.map(|envelope| {
8398                    ::fidl_next::FromWire::from_wire(unsafe {
8399                        envelope.read_unchecked::<crate::wire::DependencyType>()
8400                    })
8401                }),
8402
8403                availability: availability.map(|envelope| {
8404                    ::fidl_next::FromWire::from_wire(unsafe {
8405                        envelope.read_unchecked::<crate::wire::Availability>()
8406                    })
8407                }),
8408
8409                source_dictionary: source_dictionary.map(|envelope| {
8410                    ::fidl_next::FromWire::from_wire(unsafe {
8411                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
8412                    })
8413                }),
8414
8415                numbered_handle: numbered_handle.map(|envelope| {
8416                    ::fidl_next::FromWire::from_wire(unsafe { envelope.read_unchecked::<u8>() })
8417                }),
8418            }
8419        }
8420    }
8421
8422    impl<'de> ::fidl_next::FromWireRef<crate::wire::UseProtocol<'de>> for UseProtocol {
8423        #[inline]
8424        fn from_wire_ref(wire: &crate::wire::UseProtocol<'de>) -> Self {
8425            Self {
8426                source: wire.table.get(1).map(|envelope| {
8427                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
8428                        envelope.deref_unchecked::<crate::wire::Ref<'de>>()
8429                    })
8430                }),
8431
8432                source_name: wire.table.get(2).map(|envelope| {
8433                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
8434                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
8435                    })
8436                }),
8437
8438                target_path: wire.table.get(3).map(|envelope| {
8439                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
8440                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
8441                    })
8442                }),
8443
8444                dependency_type: wire.table.get(4).map(|envelope| {
8445                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
8446                        envelope.deref_unchecked::<crate::wire::DependencyType>()
8447                    })
8448                }),
8449
8450                availability: wire.table.get(5).map(|envelope| {
8451                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
8452                        envelope.deref_unchecked::<crate::wire::Availability>()
8453                    })
8454                }),
8455
8456                source_dictionary: wire.table.get(6).map(|envelope| {
8457                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
8458                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
8459                    })
8460                }),
8461
8462                numbered_handle: wire.table.get(7).map(|envelope| {
8463                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
8464                        envelope.deref_unchecked::<u8>()
8465                    })
8466                }),
8467            }
8468        }
8469    }
8470
8471    #[doc = " Declares a directory used by a component, which was offered to it.\n"]
8472    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
8473    pub struct UseDirectory {
8474        pub source: ::core::option::Option<crate::natural::Ref>,
8475
8476        pub source_name: ::core::option::Option<::std::string::String>,
8477
8478        pub target_path: ::core::option::Option<::std::string::String>,
8479
8480        pub rights: ::core::option::Option<::fidl_next_common_fuchsia_io::natural::Operations>,
8481
8482        pub subdir: ::core::option::Option<::std::string::String>,
8483
8484        pub dependency_type: ::core::option::Option<crate::natural::DependencyType>,
8485
8486        pub availability: ::core::option::Option<crate::natural::Availability>,
8487
8488        pub source_dictionary: ::core::option::Option<::std::string::String>,
8489    }
8490
8491    impl UseDirectory {
8492        fn __max_ordinal(&self) -> usize {
8493            if self.source_dictionary.is_some() {
8494                return 8;
8495            }
8496
8497            if self.availability.is_some() {
8498                return 7;
8499            }
8500
8501            if self.dependency_type.is_some() {
8502                return 6;
8503            }
8504
8505            if self.subdir.is_some() {
8506                return 5;
8507            }
8508
8509            if self.rights.is_some() {
8510                return 4;
8511            }
8512
8513            if self.target_path.is_some() {
8514                return 3;
8515            }
8516
8517            if self.source_name.is_some() {
8518                return 2;
8519            }
8520
8521            if self.source.is_some() {
8522                return 1;
8523            }
8524
8525            0
8526        }
8527    }
8528
8529    unsafe impl<___E> ::fidl_next::Encode<crate::wire::UseDirectory<'static>, ___E> for UseDirectory
8530    where
8531        ___E: ::fidl_next::Encoder + ?Sized,
8532    {
8533        #[inline]
8534        fn encode(
8535            mut self,
8536            encoder: &mut ___E,
8537            out: &mut ::core::mem::MaybeUninit<crate::wire::UseDirectory<'static>>,
8538            _: (),
8539        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
8540            ::fidl_next::munge!(let crate::wire::UseDirectory { table } = out);
8541
8542            let max_ord = self.__max_ordinal();
8543
8544            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
8545            ::fidl_next::Wire::zero_padding(&mut out);
8546
8547            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
8548                ::fidl_next::wire::Envelope,
8549            >(encoder, max_ord);
8550
8551            for i in 1..=max_ord {
8552                match i {
8553                    8 => {
8554                        if let Some(value) = self.source_dictionary.take() {
8555                            ::fidl_next::wire::Envelope::encode_value::<
8556                                ::fidl_next::wire::String<'static>,
8557                                ___E,
8558                            >(
8559                                value, preallocated.encoder, &mut out, 1024
8560                            )?;
8561                        } else {
8562                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
8563                        }
8564                    }
8565
8566                    7 => {
8567                        if let Some(value) = self.availability.take() {
8568                            ::fidl_next::wire::Envelope::encode_value::<
8569                                crate::wire::Availability,
8570                                ___E,
8571                            >(
8572                                value, preallocated.encoder, &mut out, ()
8573                            )?;
8574                        } else {
8575                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
8576                        }
8577                    }
8578
8579                    6 => {
8580                        if let Some(value) = self.dependency_type.take() {
8581                            ::fidl_next::wire::Envelope::encode_value::<
8582                                crate::wire::DependencyType,
8583                                ___E,
8584                            >(
8585                                value, preallocated.encoder, &mut out, ()
8586                            )?;
8587                        } else {
8588                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
8589                        }
8590                    }
8591
8592                    5 => {
8593                        if let Some(value) = self.subdir.take() {
8594                            ::fidl_next::wire::Envelope::encode_value::<
8595                                ::fidl_next::wire::String<'static>,
8596                                ___E,
8597                            >(
8598                                value, preallocated.encoder, &mut out, 1024
8599                            )?;
8600                        } else {
8601                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
8602                        }
8603                    }
8604
8605                    4 => {
8606                        if let Some(value) = self.rights.take() {
8607                            ::fidl_next::wire::Envelope::encode_value::<
8608                                ::fidl_next_common_fuchsia_io::wire::Operations,
8609                                ___E,
8610                            >(
8611                                value, preallocated.encoder, &mut out, ()
8612                            )?;
8613                        } else {
8614                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
8615                        }
8616                    }
8617
8618                    3 => {
8619                        if let Some(value) = self.target_path.take() {
8620                            ::fidl_next::wire::Envelope::encode_value::<
8621                                ::fidl_next::wire::String<'static>,
8622                                ___E,
8623                            >(
8624                                value, preallocated.encoder, &mut out, 1024
8625                            )?;
8626                        } else {
8627                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
8628                        }
8629                    }
8630
8631                    2 => {
8632                        if let Some(value) = self.source_name.take() {
8633                            ::fidl_next::wire::Envelope::encode_value::<
8634                                ::fidl_next::wire::String<'static>,
8635                                ___E,
8636                            >(
8637                                value, preallocated.encoder, &mut out, 100
8638                            )?;
8639                        } else {
8640                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
8641                        }
8642                    }
8643
8644                    1 => {
8645                        if let Some(value) = self.source.take() {
8646                            ::fidl_next::wire::Envelope::encode_value::<
8647                                crate::wire::Ref<'static>,
8648                                ___E,
8649                            >(
8650                                value, preallocated.encoder, &mut out, ()
8651                            )?;
8652                        } else {
8653                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
8654                        }
8655                    }
8656
8657                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
8658                }
8659                unsafe {
8660                    preallocated.write_next(out.assume_init_ref());
8661                }
8662            }
8663
8664            ::fidl_next::wire::Table::encode_len(table, max_ord);
8665
8666            Ok(())
8667        }
8668    }
8669
8670    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::UseDirectory<'static>, ___E>
8671        for &'a UseDirectory
8672    where
8673        ___E: ::fidl_next::Encoder + ?Sized,
8674    {
8675        #[inline]
8676        fn encode(
8677            self,
8678            encoder: &mut ___E,
8679            out: &mut ::core::mem::MaybeUninit<crate::wire::UseDirectory<'static>>,
8680            _: (),
8681        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
8682            ::fidl_next::munge!(let crate::wire::UseDirectory { table } = out);
8683
8684            let max_ord = self.__max_ordinal();
8685
8686            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
8687            ::fidl_next::Wire::zero_padding(&mut out);
8688
8689            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
8690                ::fidl_next::wire::Envelope,
8691            >(encoder, max_ord);
8692
8693            for i in 1..=max_ord {
8694                match i {
8695                    8 => {
8696                        if let Some(value) = &self.source_dictionary {
8697                            ::fidl_next::wire::Envelope::encode_value::<
8698                                ::fidl_next::wire::String<'static>,
8699                                ___E,
8700                            >(
8701                                value, preallocated.encoder, &mut out, 1024
8702                            )?;
8703                        } else {
8704                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
8705                        }
8706                    }
8707
8708                    7 => {
8709                        if let Some(value) = &self.availability {
8710                            ::fidl_next::wire::Envelope::encode_value::<
8711                                crate::wire::Availability,
8712                                ___E,
8713                            >(
8714                                value, preallocated.encoder, &mut out, ()
8715                            )?;
8716                        } else {
8717                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
8718                        }
8719                    }
8720
8721                    6 => {
8722                        if let Some(value) = &self.dependency_type {
8723                            ::fidl_next::wire::Envelope::encode_value::<
8724                                crate::wire::DependencyType,
8725                                ___E,
8726                            >(
8727                                value, preallocated.encoder, &mut out, ()
8728                            )?;
8729                        } else {
8730                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
8731                        }
8732                    }
8733
8734                    5 => {
8735                        if let Some(value) = &self.subdir {
8736                            ::fidl_next::wire::Envelope::encode_value::<
8737                                ::fidl_next::wire::String<'static>,
8738                                ___E,
8739                            >(
8740                                value, preallocated.encoder, &mut out, 1024
8741                            )?;
8742                        } else {
8743                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
8744                        }
8745                    }
8746
8747                    4 => {
8748                        if let Some(value) = &self.rights {
8749                            ::fidl_next::wire::Envelope::encode_value::<
8750                                ::fidl_next_common_fuchsia_io::wire::Operations,
8751                                ___E,
8752                            >(
8753                                value, preallocated.encoder, &mut out, ()
8754                            )?;
8755                        } else {
8756                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
8757                        }
8758                    }
8759
8760                    3 => {
8761                        if let Some(value) = &self.target_path {
8762                            ::fidl_next::wire::Envelope::encode_value::<
8763                                ::fidl_next::wire::String<'static>,
8764                                ___E,
8765                            >(
8766                                value, preallocated.encoder, &mut out, 1024
8767                            )?;
8768                        } else {
8769                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
8770                        }
8771                    }
8772
8773                    2 => {
8774                        if let Some(value) = &self.source_name {
8775                            ::fidl_next::wire::Envelope::encode_value::<
8776                                ::fidl_next::wire::String<'static>,
8777                                ___E,
8778                            >(
8779                                value, preallocated.encoder, &mut out, 100
8780                            )?;
8781                        } else {
8782                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
8783                        }
8784                    }
8785
8786                    1 => {
8787                        if let Some(value) = &self.source {
8788                            ::fidl_next::wire::Envelope::encode_value::<
8789                                crate::wire::Ref<'static>,
8790                                ___E,
8791                            >(
8792                                value, preallocated.encoder, &mut out, ()
8793                            )?;
8794                        } else {
8795                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
8796                        }
8797                    }
8798
8799                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
8800                }
8801                unsafe {
8802                    preallocated.write_next(out.assume_init_ref());
8803                }
8804            }
8805
8806            ::fidl_next::wire::Table::encode_len(table, max_ord);
8807
8808            Ok(())
8809        }
8810    }
8811
8812    impl<'de> ::fidl_next::FromWire<crate::wire::UseDirectory<'de>> for UseDirectory {
8813        #[inline]
8814        fn from_wire(wire_: crate::wire::UseDirectory<'de>) -> Self {
8815            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
8816
8817            let source = wire_.table.get(1);
8818
8819            let source_name = wire_.table.get(2);
8820
8821            let target_path = wire_.table.get(3);
8822
8823            let rights = wire_.table.get(4);
8824
8825            let subdir = wire_.table.get(5);
8826
8827            let dependency_type = wire_.table.get(6);
8828
8829            let availability = wire_.table.get(7);
8830
8831            let source_dictionary = wire_.table.get(8);
8832
8833            Self {
8834                source: source.map(|envelope| {
8835                    ::fidl_next::FromWire::from_wire(unsafe {
8836                        envelope.read_unchecked::<crate::wire::Ref<'de>>()
8837                    })
8838                }),
8839
8840                source_name: source_name.map(|envelope| {
8841                    ::fidl_next::FromWire::from_wire(unsafe {
8842                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
8843                    })
8844                }),
8845
8846                target_path: target_path.map(|envelope| {
8847                    ::fidl_next::FromWire::from_wire(unsafe {
8848                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
8849                    })
8850                }),
8851
8852                rights: rights.map(|envelope| {
8853                    ::fidl_next::FromWire::from_wire(unsafe {
8854                        envelope.read_unchecked::<::fidl_next_common_fuchsia_io::wire::Operations>()
8855                    })
8856                }),
8857
8858                subdir: subdir.map(|envelope| {
8859                    ::fidl_next::FromWire::from_wire(unsafe {
8860                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
8861                    })
8862                }),
8863
8864                dependency_type: dependency_type.map(|envelope| {
8865                    ::fidl_next::FromWire::from_wire(unsafe {
8866                        envelope.read_unchecked::<crate::wire::DependencyType>()
8867                    })
8868                }),
8869
8870                availability: availability.map(|envelope| {
8871                    ::fidl_next::FromWire::from_wire(unsafe {
8872                        envelope.read_unchecked::<crate::wire::Availability>()
8873                    })
8874                }),
8875
8876                source_dictionary: source_dictionary.map(|envelope| {
8877                    ::fidl_next::FromWire::from_wire(unsafe {
8878                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
8879                    })
8880                }),
8881            }
8882        }
8883    }
8884
8885    impl<'de> ::fidl_next::FromWireRef<crate::wire::UseDirectory<'de>> for UseDirectory {
8886        #[inline]
8887        fn from_wire_ref(wire: &crate::wire::UseDirectory<'de>) -> Self {
8888            Self {
8889                source: wire.table.get(1).map(|envelope| {
8890                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
8891                        envelope.deref_unchecked::<crate::wire::Ref<'de>>()
8892                    })
8893                }),
8894
8895                source_name: wire.table.get(2).map(|envelope| {
8896                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
8897                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
8898                    })
8899                }),
8900
8901                target_path: wire.table.get(3).map(|envelope| {
8902                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
8903                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
8904                    })
8905                }),
8906
8907                rights: wire.table.get(4).map(|envelope| {
8908                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
8909                        envelope
8910                            .deref_unchecked::<::fidl_next_common_fuchsia_io::wire::Operations>()
8911                    })
8912                }),
8913
8914                subdir: wire.table.get(5).map(|envelope| {
8915                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
8916                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
8917                    })
8918                }),
8919
8920                dependency_type: wire.table.get(6).map(|envelope| {
8921                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
8922                        envelope.deref_unchecked::<crate::wire::DependencyType>()
8923                    })
8924                }),
8925
8926                availability: wire.table.get(7).map(|envelope| {
8927                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
8928                        envelope.deref_unchecked::<crate::wire::Availability>()
8929                    })
8930                }),
8931
8932                source_dictionary: wire.table.get(8).map(|envelope| {
8933                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
8934                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
8935                    })
8936                }),
8937            }
8938        }
8939    }
8940
8941    #[doc = " Declares an EventStream used by a component.\n"]
8942    #[derive(Debug, Default, Clone, PartialEq)]
8943    pub struct UseEventStream {
8944        pub source_name: ::core::option::Option<::std::string::String>,
8945
8946        pub source: ::core::option::Option<crate::natural::Ref>,
8947
8948        pub scope: ::core::option::Option<::std::vec::Vec<crate::natural::Ref>>,
8949
8950        pub target_path: ::core::option::Option<::std::string::String>,
8951
8952        pub availability: ::core::option::Option<crate::natural::Availability>,
8953
8954        pub filter: ::core::option::Option<::fidl_next_common_fuchsia_data::natural::Dictionary>,
8955    }
8956
8957    impl UseEventStream {
8958        fn __max_ordinal(&self) -> usize {
8959            if self.filter.is_some() {
8960                return 6;
8961            }
8962
8963            if self.availability.is_some() {
8964                return 5;
8965            }
8966
8967            if self.target_path.is_some() {
8968                return 4;
8969            }
8970
8971            if self.scope.is_some() {
8972                return 3;
8973            }
8974
8975            if self.source.is_some() {
8976                return 2;
8977            }
8978
8979            if self.source_name.is_some() {
8980                return 1;
8981            }
8982
8983            0
8984        }
8985    }
8986
8987    unsafe impl<___E> ::fidl_next::Encode<crate::wire::UseEventStream<'static>, ___E> for UseEventStream
8988    where
8989        ___E: ::fidl_next::Encoder + ?Sized,
8990    {
8991        #[inline]
8992        fn encode(
8993            mut self,
8994            encoder: &mut ___E,
8995            out: &mut ::core::mem::MaybeUninit<crate::wire::UseEventStream<'static>>,
8996            _: (),
8997        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
8998            ::fidl_next::munge!(let crate::wire::UseEventStream { table } = out);
8999
9000            let max_ord = self.__max_ordinal();
9001
9002            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
9003            ::fidl_next::Wire::zero_padding(&mut out);
9004
9005            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
9006                ::fidl_next::wire::Envelope,
9007            >(encoder, max_ord);
9008
9009            for i in 1..=max_ord {
9010                match i {
9011                    6 => {
9012                        if let Some(value) = self.filter.take() {
9013                            ::fidl_next::wire::Envelope::encode_value::<
9014                                ::fidl_next_common_fuchsia_data::wire::Dictionary<'static>,
9015                                ___E,
9016                            >(
9017                                value, preallocated.encoder, &mut out, ()
9018                            )?;
9019                        } else {
9020                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
9021                        }
9022                    }
9023
9024                    5 => {
9025                        if let Some(value) = self.availability.take() {
9026                            ::fidl_next::wire::Envelope::encode_value::<
9027                                crate::wire::Availability,
9028                                ___E,
9029                            >(
9030                                value, preallocated.encoder, &mut out, ()
9031                            )?;
9032                        } else {
9033                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
9034                        }
9035                    }
9036
9037                    4 => {
9038                        if let Some(value) = self.target_path.take() {
9039                            ::fidl_next::wire::Envelope::encode_value::<
9040                                ::fidl_next::wire::String<'static>,
9041                                ___E,
9042                            >(
9043                                value, preallocated.encoder, &mut out, 100
9044                            )?;
9045                        } else {
9046                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
9047                        }
9048                    }
9049
9050                    3 => {
9051                        if let Some(value) = self.scope.take() {
9052                            ::fidl_next::wire::Envelope::encode_value::<
9053                                ::fidl_next::wire::Vector<'static, crate::wire::Ref<'static>>,
9054                                ___E,
9055                            >(
9056                                value, preallocated.encoder, &mut out, (4294967295, ())
9057                            )?;
9058                        } else {
9059                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
9060                        }
9061                    }
9062
9063                    2 => {
9064                        if let Some(value) = self.source.take() {
9065                            ::fidl_next::wire::Envelope::encode_value::<
9066                                crate::wire::Ref<'static>,
9067                                ___E,
9068                            >(
9069                                value, preallocated.encoder, &mut out, ()
9070                            )?;
9071                        } else {
9072                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
9073                        }
9074                    }
9075
9076                    1 => {
9077                        if let Some(value) = self.source_name.take() {
9078                            ::fidl_next::wire::Envelope::encode_value::<
9079                                ::fidl_next::wire::String<'static>,
9080                                ___E,
9081                            >(
9082                                value, preallocated.encoder, &mut out, 100
9083                            )?;
9084                        } else {
9085                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
9086                        }
9087                    }
9088
9089                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
9090                }
9091                unsafe {
9092                    preallocated.write_next(out.assume_init_ref());
9093                }
9094            }
9095
9096            ::fidl_next::wire::Table::encode_len(table, max_ord);
9097
9098            Ok(())
9099        }
9100    }
9101
9102    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::UseEventStream<'static>, ___E>
9103        for &'a UseEventStream
9104    where
9105        ___E: ::fidl_next::Encoder + ?Sized,
9106    {
9107        #[inline]
9108        fn encode(
9109            self,
9110            encoder: &mut ___E,
9111            out: &mut ::core::mem::MaybeUninit<crate::wire::UseEventStream<'static>>,
9112            _: (),
9113        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
9114            ::fidl_next::munge!(let crate::wire::UseEventStream { table } = out);
9115
9116            let max_ord = self.__max_ordinal();
9117
9118            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
9119            ::fidl_next::Wire::zero_padding(&mut out);
9120
9121            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
9122                ::fidl_next::wire::Envelope,
9123            >(encoder, max_ord);
9124
9125            for i in 1..=max_ord {
9126                match i {
9127                    6 => {
9128                        if let Some(value) = &self.filter {
9129                            ::fidl_next::wire::Envelope::encode_value::<
9130                                ::fidl_next_common_fuchsia_data::wire::Dictionary<'static>,
9131                                ___E,
9132                            >(
9133                                value, preallocated.encoder, &mut out, ()
9134                            )?;
9135                        } else {
9136                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
9137                        }
9138                    }
9139
9140                    5 => {
9141                        if let Some(value) = &self.availability {
9142                            ::fidl_next::wire::Envelope::encode_value::<
9143                                crate::wire::Availability,
9144                                ___E,
9145                            >(
9146                                value, preallocated.encoder, &mut out, ()
9147                            )?;
9148                        } else {
9149                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
9150                        }
9151                    }
9152
9153                    4 => {
9154                        if let Some(value) = &self.target_path {
9155                            ::fidl_next::wire::Envelope::encode_value::<
9156                                ::fidl_next::wire::String<'static>,
9157                                ___E,
9158                            >(
9159                                value, preallocated.encoder, &mut out, 100
9160                            )?;
9161                        } else {
9162                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
9163                        }
9164                    }
9165
9166                    3 => {
9167                        if let Some(value) = &self.scope {
9168                            ::fidl_next::wire::Envelope::encode_value::<
9169                                ::fidl_next::wire::Vector<'static, crate::wire::Ref<'static>>,
9170                                ___E,
9171                            >(
9172                                value, preallocated.encoder, &mut out, (4294967295, ())
9173                            )?;
9174                        } else {
9175                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
9176                        }
9177                    }
9178
9179                    2 => {
9180                        if let Some(value) = &self.source {
9181                            ::fidl_next::wire::Envelope::encode_value::<
9182                                crate::wire::Ref<'static>,
9183                                ___E,
9184                            >(
9185                                value, preallocated.encoder, &mut out, ()
9186                            )?;
9187                        } else {
9188                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
9189                        }
9190                    }
9191
9192                    1 => {
9193                        if let Some(value) = &self.source_name {
9194                            ::fidl_next::wire::Envelope::encode_value::<
9195                                ::fidl_next::wire::String<'static>,
9196                                ___E,
9197                            >(
9198                                value, preallocated.encoder, &mut out, 100
9199                            )?;
9200                        } else {
9201                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
9202                        }
9203                    }
9204
9205                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
9206                }
9207                unsafe {
9208                    preallocated.write_next(out.assume_init_ref());
9209                }
9210            }
9211
9212            ::fidl_next::wire::Table::encode_len(table, max_ord);
9213
9214            Ok(())
9215        }
9216    }
9217
9218    impl<'de> ::fidl_next::FromWire<crate::wire::UseEventStream<'de>> for UseEventStream {
9219        #[inline]
9220        fn from_wire(wire_: crate::wire::UseEventStream<'de>) -> Self {
9221            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
9222
9223            let source_name = wire_.table.get(1);
9224
9225            let source = wire_.table.get(2);
9226
9227            let scope = wire_.table.get(3);
9228
9229            let target_path = wire_.table.get(4);
9230
9231            let availability = wire_.table.get(5);
9232
9233            let filter = wire_.table.get(6);
9234
9235            Self {
9236
9237
9238                source_name: source_name.map(|envelope| ::fidl_next::FromWire::from_wire(
9239                    unsafe { envelope.read_unchecked::<::fidl_next::wire::String<'de>>() }
9240                )),
9241
9242
9243                source: source.map(|envelope| ::fidl_next::FromWire::from_wire(
9244                    unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() }
9245                )),
9246
9247
9248                scope: scope.map(|envelope| ::fidl_next::FromWire::from_wire(
9249                    unsafe { envelope.read_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::Ref<'de>>>() }
9250                )),
9251
9252
9253                target_path: target_path.map(|envelope| ::fidl_next::FromWire::from_wire(
9254                    unsafe { envelope.read_unchecked::<::fidl_next::wire::String<'de>>() }
9255                )),
9256
9257
9258                availability: availability.map(|envelope| ::fidl_next::FromWire::from_wire(
9259                    unsafe { envelope.read_unchecked::<crate::wire::Availability>() }
9260                )),
9261
9262
9263                filter: filter.map(|envelope| ::fidl_next::FromWire::from_wire(
9264                    unsafe { envelope.read_unchecked::<::fidl_next_common_fuchsia_data::wire::Dictionary<'de>>() }
9265                )),
9266
9267        }
9268        }
9269    }
9270
9271    impl<'de> ::fidl_next::FromWireRef<crate::wire::UseEventStream<'de>> for UseEventStream {
9272        #[inline]
9273        fn from_wire_ref(wire: &crate::wire::UseEventStream<'de>) -> Self {
9274            Self {
9275
9276
9277                source_name: wire.table.get(1)
9278                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
9279                        unsafe { envelope.deref_unchecked::<::fidl_next::wire::String<'de>>() }
9280                    )),
9281
9282
9283                source: wire.table.get(2)
9284                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
9285                        unsafe { envelope.deref_unchecked::<crate::wire::Ref<'de>>() }
9286                    )),
9287
9288
9289                scope: wire.table.get(3)
9290                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
9291                        unsafe { envelope.deref_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::Ref<'de>>>() }
9292                    )),
9293
9294
9295                target_path: wire.table.get(4)
9296                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
9297                        unsafe { envelope.deref_unchecked::<::fidl_next::wire::String<'de>>() }
9298                    )),
9299
9300
9301                availability: wire.table.get(5)
9302                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
9303                        unsafe { envelope.deref_unchecked::<crate::wire::Availability>() }
9304                    )),
9305
9306
9307                filter: wire.table.get(6)
9308                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
9309                        unsafe { envelope.deref_unchecked::<::fidl_next_common_fuchsia_data::wire::Dictionary<'de>>() }
9310                    )),
9311
9312        }
9313        }
9314    }
9315
9316    #[doc = " Declares runner used by a component.\n"]
9317    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
9318    pub struct UseRunner {
9319        pub source: ::core::option::Option<crate::natural::Ref>,
9320
9321        pub source_name: ::core::option::Option<::std::string::String>,
9322
9323        pub source_dictionary: ::core::option::Option<::std::string::String>,
9324    }
9325
9326    impl UseRunner {
9327        fn __max_ordinal(&self) -> usize {
9328            if self.source_dictionary.is_some() {
9329                return 3;
9330            }
9331
9332            if self.source_name.is_some() {
9333                return 2;
9334            }
9335
9336            if self.source.is_some() {
9337                return 1;
9338            }
9339
9340            0
9341        }
9342    }
9343
9344    unsafe impl<___E> ::fidl_next::Encode<crate::wire::UseRunner<'static>, ___E> for UseRunner
9345    where
9346        ___E: ::fidl_next::Encoder + ?Sized,
9347    {
9348        #[inline]
9349        fn encode(
9350            mut self,
9351            encoder: &mut ___E,
9352            out: &mut ::core::mem::MaybeUninit<crate::wire::UseRunner<'static>>,
9353            _: (),
9354        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
9355            ::fidl_next::munge!(let crate::wire::UseRunner { table } = out);
9356
9357            let max_ord = self.__max_ordinal();
9358
9359            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
9360            ::fidl_next::Wire::zero_padding(&mut out);
9361
9362            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
9363                ::fidl_next::wire::Envelope,
9364            >(encoder, max_ord);
9365
9366            for i in 1..=max_ord {
9367                match i {
9368                    3 => {
9369                        if let Some(value) = self.source_dictionary.take() {
9370                            ::fidl_next::wire::Envelope::encode_value::<
9371                                ::fidl_next::wire::String<'static>,
9372                                ___E,
9373                            >(
9374                                value, preallocated.encoder, &mut out, 1024
9375                            )?;
9376                        } else {
9377                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
9378                        }
9379                    }
9380
9381                    2 => {
9382                        if let Some(value) = self.source_name.take() {
9383                            ::fidl_next::wire::Envelope::encode_value::<
9384                                ::fidl_next::wire::String<'static>,
9385                                ___E,
9386                            >(
9387                                value, preallocated.encoder, &mut out, 100
9388                            )?;
9389                        } else {
9390                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
9391                        }
9392                    }
9393
9394                    1 => {
9395                        if let Some(value) = self.source.take() {
9396                            ::fidl_next::wire::Envelope::encode_value::<
9397                                crate::wire::Ref<'static>,
9398                                ___E,
9399                            >(
9400                                value, preallocated.encoder, &mut out, ()
9401                            )?;
9402                        } else {
9403                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
9404                        }
9405                    }
9406
9407                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
9408                }
9409                unsafe {
9410                    preallocated.write_next(out.assume_init_ref());
9411                }
9412            }
9413
9414            ::fidl_next::wire::Table::encode_len(table, max_ord);
9415
9416            Ok(())
9417        }
9418    }
9419
9420    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::UseRunner<'static>, ___E> for &'a UseRunner
9421    where
9422        ___E: ::fidl_next::Encoder + ?Sized,
9423    {
9424        #[inline]
9425        fn encode(
9426            self,
9427            encoder: &mut ___E,
9428            out: &mut ::core::mem::MaybeUninit<crate::wire::UseRunner<'static>>,
9429            _: (),
9430        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
9431            ::fidl_next::munge!(let crate::wire::UseRunner { table } = out);
9432
9433            let max_ord = self.__max_ordinal();
9434
9435            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
9436            ::fidl_next::Wire::zero_padding(&mut out);
9437
9438            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
9439                ::fidl_next::wire::Envelope,
9440            >(encoder, max_ord);
9441
9442            for i in 1..=max_ord {
9443                match i {
9444                    3 => {
9445                        if let Some(value) = &self.source_dictionary {
9446                            ::fidl_next::wire::Envelope::encode_value::<
9447                                ::fidl_next::wire::String<'static>,
9448                                ___E,
9449                            >(
9450                                value, preallocated.encoder, &mut out, 1024
9451                            )?;
9452                        } else {
9453                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
9454                        }
9455                    }
9456
9457                    2 => {
9458                        if let Some(value) = &self.source_name {
9459                            ::fidl_next::wire::Envelope::encode_value::<
9460                                ::fidl_next::wire::String<'static>,
9461                                ___E,
9462                            >(
9463                                value, preallocated.encoder, &mut out, 100
9464                            )?;
9465                        } else {
9466                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
9467                        }
9468                    }
9469
9470                    1 => {
9471                        if let Some(value) = &self.source {
9472                            ::fidl_next::wire::Envelope::encode_value::<
9473                                crate::wire::Ref<'static>,
9474                                ___E,
9475                            >(
9476                                value, preallocated.encoder, &mut out, ()
9477                            )?;
9478                        } else {
9479                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
9480                        }
9481                    }
9482
9483                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
9484                }
9485                unsafe {
9486                    preallocated.write_next(out.assume_init_ref());
9487                }
9488            }
9489
9490            ::fidl_next::wire::Table::encode_len(table, max_ord);
9491
9492            Ok(())
9493        }
9494    }
9495
9496    impl<'de> ::fidl_next::FromWire<crate::wire::UseRunner<'de>> for UseRunner {
9497        #[inline]
9498        fn from_wire(wire_: crate::wire::UseRunner<'de>) -> Self {
9499            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
9500
9501            let source = wire_.table.get(1);
9502
9503            let source_name = wire_.table.get(2);
9504
9505            let source_dictionary = wire_.table.get(3);
9506
9507            Self {
9508                source: source.map(|envelope| {
9509                    ::fidl_next::FromWire::from_wire(unsafe {
9510                        envelope.read_unchecked::<crate::wire::Ref<'de>>()
9511                    })
9512                }),
9513
9514                source_name: source_name.map(|envelope| {
9515                    ::fidl_next::FromWire::from_wire(unsafe {
9516                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
9517                    })
9518                }),
9519
9520                source_dictionary: source_dictionary.map(|envelope| {
9521                    ::fidl_next::FromWire::from_wire(unsafe {
9522                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
9523                    })
9524                }),
9525            }
9526        }
9527    }
9528
9529    impl<'de> ::fidl_next::FromWireRef<crate::wire::UseRunner<'de>> for UseRunner {
9530        #[inline]
9531        fn from_wire_ref(wire: &crate::wire::UseRunner<'de>) -> Self {
9532            Self {
9533                source: wire.table.get(1).map(|envelope| {
9534                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
9535                        envelope.deref_unchecked::<crate::wire::Ref<'de>>()
9536                    })
9537                }),
9538
9539                source_name: wire.table.get(2).map(|envelope| {
9540                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
9541                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
9542                    })
9543                }),
9544
9545                source_dictionary: wire.table.get(3).map(|envelope| {
9546                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
9547                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
9548                    })
9549                }),
9550            }
9551        }
9552    }
9553
9554    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
9555    pub struct UseConfiguration {
9556        pub source: ::core::option::Option<crate::natural::Ref>,
9557
9558        pub source_name: ::core::option::Option<::std::string::String>,
9559
9560        pub target_name: ::core::option::Option<::std::string::String>,
9561
9562        pub availability: ::core::option::Option<crate::natural::Availability>,
9563
9564        pub type_: ::core::option::Option<crate::natural::ConfigType>,
9565
9566        pub default: ::core::option::Option<crate::natural::ConfigValue>,
9567
9568        pub source_dictionary: ::core::option::Option<::std::string::String>,
9569    }
9570
9571    impl UseConfiguration {
9572        fn __max_ordinal(&self) -> usize {
9573            if self.source_dictionary.is_some() {
9574                return 7;
9575            }
9576
9577            if self.default.is_some() {
9578                return 6;
9579            }
9580
9581            if self.type_.is_some() {
9582                return 5;
9583            }
9584
9585            if self.availability.is_some() {
9586                return 4;
9587            }
9588
9589            if self.target_name.is_some() {
9590                return 3;
9591            }
9592
9593            if self.source_name.is_some() {
9594                return 2;
9595            }
9596
9597            if self.source.is_some() {
9598                return 1;
9599            }
9600
9601            0
9602        }
9603    }
9604
9605    unsafe impl<___E> ::fidl_next::Encode<crate::wire::UseConfiguration<'static>, ___E>
9606        for UseConfiguration
9607    where
9608        ___E: ::fidl_next::Encoder + ?Sized,
9609    {
9610        #[inline]
9611        fn encode(
9612            mut self,
9613            encoder: &mut ___E,
9614            out: &mut ::core::mem::MaybeUninit<crate::wire::UseConfiguration<'static>>,
9615            _: (),
9616        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
9617            ::fidl_next::munge!(let crate::wire::UseConfiguration { table } = out);
9618
9619            let max_ord = self.__max_ordinal();
9620
9621            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
9622            ::fidl_next::Wire::zero_padding(&mut out);
9623
9624            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
9625                ::fidl_next::wire::Envelope,
9626            >(encoder, max_ord);
9627
9628            for i in 1..=max_ord {
9629                match i {
9630                    7 => {
9631                        if let Some(value) = self.source_dictionary.take() {
9632                            ::fidl_next::wire::Envelope::encode_value::<
9633                                ::fidl_next::wire::String<'static>,
9634                                ___E,
9635                            >(
9636                                value, preallocated.encoder, &mut out, 1024
9637                            )?;
9638                        } else {
9639                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
9640                        }
9641                    }
9642
9643                    6 => {
9644                        if let Some(value) = self.default.take() {
9645                            ::fidl_next::wire::Envelope::encode_value::<
9646                                crate::wire::ConfigValue<'static>,
9647                                ___E,
9648                            >(
9649                                value, preallocated.encoder, &mut out, ()
9650                            )?;
9651                        } else {
9652                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
9653                        }
9654                    }
9655
9656                    5 => {
9657                        if let Some(value) = self.type_.take() {
9658                            ::fidl_next::wire::Envelope::encode_value::<
9659                                crate::wire::ConfigType<'static>,
9660                                ___E,
9661                            >(
9662                                value, preallocated.encoder, &mut out, ()
9663                            )?;
9664                        } else {
9665                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
9666                        }
9667                    }
9668
9669                    4 => {
9670                        if let Some(value) = self.availability.take() {
9671                            ::fidl_next::wire::Envelope::encode_value::<
9672                                crate::wire::Availability,
9673                                ___E,
9674                            >(
9675                                value, preallocated.encoder, &mut out, ()
9676                            )?;
9677                        } else {
9678                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
9679                        }
9680                    }
9681
9682                    3 => {
9683                        if let Some(value) = self.target_name.take() {
9684                            ::fidl_next::wire::Envelope::encode_value::<
9685                                ::fidl_next::wire::String<'static>,
9686                                ___E,
9687                            >(
9688                                value, preallocated.encoder, &mut out, 100
9689                            )?;
9690                        } else {
9691                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
9692                        }
9693                    }
9694
9695                    2 => {
9696                        if let Some(value) = self.source_name.take() {
9697                            ::fidl_next::wire::Envelope::encode_value::<
9698                                ::fidl_next::wire::String<'static>,
9699                                ___E,
9700                            >(
9701                                value, preallocated.encoder, &mut out, 100
9702                            )?;
9703                        } else {
9704                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
9705                        }
9706                    }
9707
9708                    1 => {
9709                        if let Some(value) = self.source.take() {
9710                            ::fidl_next::wire::Envelope::encode_value::<
9711                                crate::wire::Ref<'static>,
9712                                ___E,
9713                            >(
9714                                value, preallocated.encoder, &mut out, ()
9715                            )?;
9716                        } else {
9717                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
9718                        }
9719                    }
9720
9721                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
9722                }
9723                unsafe {
9724                    preallocated.write_next(out.assume_init_ref());
9725                }
9726            }
9727
9728            ::fidl_next::wire::Table::encode_len(table, max_ord);
9729
9730            Ok(())
9731        }
9732    }
9733
9734    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::UseConfiguration<'static>, ___E>
9735        for &'a UseConfiguration
9736    where
9737        ___E: ::fidl_next::Encoder + ?Sized,
9738    {
9739        #[inline]
9740        fn encode(
9741            self,
9742            encoder: &mut ___E,
9743            out: &mut ::core::mem::MaybeUninit<crate::wire::UseConfiguration<'static>>,
9744            _: (),
9745        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
9746            ::fidl_next::munge!(let crate::wire::UseConfiguration { table } = out);
9747
9748            let max_ord = self.__max_ordinal();
9749
9750            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
9751            ::fidl_next::Wire::zero_padding(&mut out);
9752
9753            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
9754                ::fidl_next::wire::Envelope,
9755            >(encoder, max_ord);
9756
9757            for i in 1..=max_ord {
9758                match i {
9759                    7 => {
9760                        if let Some(value) = &self.source_dictionary {
9761                            ::fidl_next::wire::Envelope::encode_value::<
9762                                ::fidl_next::wire::String<'static>,
9763                                ___E,
9764                            >(
9765                                value, preallocated.encoder, &mut out, 1024
9766                            )?;
9767                        } else {
9768                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
9769                        }
9770                    }
9771
9772                    6 => {
9773                        if let Some(value) = &self.default {
9774                            ::fidl_next::wire::Envelope::encode_value::<
9775                                crate::wire::ConfigValue<'static>,
9776                                ___E,
9777                            >(
9778                                value, preallocated.encoder, &mut out, ()
9779                            )?;
9780                        } else {
9781                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
9782                        }
9783                    }
9784
9785                    5 => {
9786                        if let Some(value) = &self.type_ {
9787                            ::fidl_next::wire::Envelope::encode_value::<
9788                                crate::wire::ConfigType<'static>,
9789                                ___E,
9790                            >(
9791                                value, preallocated.encoder, &mut out, ()
9792                            )?;
9793                        } else {
9794                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
9795                        }
9796                    }
9797
9798                    4 => {
9799                        if let Some(value) = &self.availability {
9800                            ::fidl_next::wire::Envelope::encode_value::<
9801                                crate::wire::Availability,
9802                                ___E,
9803                            >(
9804                                value, preallocated.encoder, &mut out, ()
9805                            )?;
9806                        } else {
9807                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
9808                        }
9809                    }
9810
9811                    3 => {
9812                        if let Some(value) = &self.target_name {
9813                            ::fidl_next::wire::Envelope::encode_value::<
9814                                ::fidl_next::wire::String<'static>,
9815                                ___E,
9816                            >(
9817                                value, preallocated.encoder, &mut out, 100
9818                            )?;
9819                        } else {
9820                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
9821                        }
9822                    }
9823
9824                    2 => {
9825                        if let Some(value) = &self.source_name {
9826                            ::fidl_next::wire::Envelope::encode_value::<
9827                                ::fidl_next::wire::String<'static>,
9828                                ___E,
9829                            >(
9830                                value, preallocated.encoder, &mut out, 100
9831                            )?;
9832                        } else {
9833                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
9834                        }
9835                    }
9836
9837                    1 => {
9838                        if let Some(value) = &self.source {
9839                            ::fidl_next::wire::Envelope::encode_value::<
9840                                crate::wire::Ref<'static>,
9841                                ___E,
9842                            >(
9843                                value, preallocated.encoder, &mut out, ()
9844                            )?;
9845                        } else {
9846                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
9847                        }
9848                    }
9849
9850                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
9851                }
9852                unsafe {
9853                    preallocated.write_next(out.assume_init_ref());
9854                }
9855            }
9856
9857            ::fidl_next::wire::Table::encode_len(table, max_ord);
9858
9859            Ok(())
9860        }
9861    }
9862
9863    impl<'de> ::fidl_next::FromWire<crate::wire::UseConfiguration<'de>> for UseConfiguration {
9864        #[inline]
9865        fn from_wire(wire_: crate::wire::UseConfiguration<'de>) -> Self {
9866            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
9867
9868            let source = wire_.table.get(1);
9869
9870            let source_name = wire_.table.get(2);
9871
9872            let target_name = wire_.table.get(3);
9873
9874            let availability = wire_.table.get(4);
9875
9876            let type_ = wire_.table.get(5);
9877
9878            let default = wire_.table.get(6);
9879
9880            let source_dictionary = wire_.table.get(7);
9881
9882            Self {
9883                source: source.map(|envelope| {
9884                    ::fidl_next::FromWire::from_wire(unsafe {
9885                        envelope.read_unchecked::<crate::wire::Ref<'de>>()
9886                    })
9887                }),
9888
9889                source_name: source_name.map(|envelope| {
9890                    ::fidl_next::FromWire::from_wire(unsafe {
9891                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
9892                    })
9893                }),
9894
9895                target_name: target_name.map(|envelope| {
9896                    ::fidl_next::FromWire::from_wire(unsafe {
9897                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
9898                    })
9899                }),
9900
9901                availability: availability.map(|envelope| {
9902                    ::fidl_next::FromWire::from_wire(unsafe {
9903                        envelope.read_unchecked::<crate::wire::Availability>()
9904                    })
9905                }),
9906
9907                type_: type_.map(|envelope| {
9908                    ::fidl_next::FromWire::from_wire(unsafe {
9909                        envelope.read_unchecked::<crate::wire::ConfigType<'de>>()
9910                    })
9911                }),
9912
9913                default: default.map(|envelope| {
9914                    ::fidl_next::FromWire::from_wire(unsafe {
9915                        envelope.read_unchecked::<crate::wire::ConfigValue<'de>>()
9916                    })
9917                }),
9918
9919                source_dictionary: source_dictionary.map(|envelope| {
9920                    ::fidl_next::FromWire::from_wire(unsafe {
9921                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
9922                    })
9923                }),
9924            }
9925        }
9926    }
9927
9928    impl<'de> ::fidl_next::FromWireRef<crate::wire::UseConfiguration<'de>> for UseConfiguration {
9929        #[inline]
9930        fn from_wire_ref(wire: &crate::wire::UseConfiguration<'de>) -> Self {
9931            Self {
9932                source: wire.table.get(1).map(|envelope| {
9933                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
9934                        envelope.deref_unchecked::<crate::wire::Ref<'de>>()
9935                    })
9936                }),
9937
9938                source_name: wire.table.get(2).map(|envelope| {
9939                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
9940                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
9941                    })
9942                }),
9943
9944                target_name: wire.table.get(3).map(|envelope| {
9945                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
9946                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
9947                    })
9948                }),
9949
9950                availability: wire.table.get(4).map(|envelope| {
9951                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
9952                        envelope.deref_unchecked::<crate::wire::Availability>()
9953                    })
9954                }),
9955
9956                type_: wire.table.get(5).map(|envelope| {
9957                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
9958                        envelope.deref_unchecked::<crate::wire::ConfigType<'de>>()
9959                    })
9960                }),
9961
9962                default: wire.table.get(6).map(|envelope| {
9963                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
9964                        envelope.deref_unchecked::<crate::wire::ConfigValue<'de>>()
9965                    })
9966                }),
9967
9968                source_dictionary: wire.table.get(7).map(|envelope| {
9969                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
9970                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
9971                    })
9972                }),
9973            }
9974        }
9975    }
9976
9977    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
9978    pub struct UseDictionary {
9979        pub source: ::core::option::Option<crate::natural::Ref>,
9980
9981        pub source_name: ::core::option::Option<::std::string::String>,
9982
9983        pub target_path: ::core::option::Option<::std::string::String>,
9984
9985        pub dependency_type: ::core::option::Option<crate::natural::DependencyType>,
9986
9987        pub availability: ::core::option::Option<crate::natural::Availability>,
9988
9989        pub source_dictionary: ::core::option::Option<::std::string::String>,
9990    }
9991
9992    impl UseDictionary {
9993        fn __max_ordinal(&self) -> usize {
9994            if self.source_dictionary.is_some() {
9995                return 8;
9996            }
9997
9998            if self.availability.is_some() {
9999                return 7;
10000            }
10001
10002            if self.dependency_type.is_some() {
10003                return 6;
10004            }
10005
10006            if self.target_path.is_some() {
10007                return 3;
10008            }
10009
10010            if self.source_name.is_some() {
10011                return 2;
10012            }
10013
10014            if self.source.is_some() {
10015                return 1;
10016            }
10017
10018            0
10019        }
10020    }
10021
10022    unsafe impl<___E> ::fidl_next::Encode<crate::wire::UseDictionary<'static>, ___E> for UseDictionary
10023    where
10024        ___E: ::fidl_next::Encoder + ?Sized,
10025    {
10026        #[inline]
10027        fn encode(
10028            mut self,
10029            encoder: &mut ___E,
10030            out: &mut ::core::mem::MaybeUninit<crate::wire::UseDictionary<'static>>,
10031            _: (),
10032        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
10033            ::fidl_next::munge!(let crate::wire::UseDictionary { table } = out);
10034
10035            let max_ord = self.__max_ordinal();
10036
10037            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
10038            ::fidl_next::Wire::zero_padding(&mut out);
10039
10040            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
10041                ::fidl_next::wire::Envelope,
10042            >(encoder, max_ord);
10043
10044            for i in 1..=max_ord {
10045                match i {
10046                    8 => {
10047                        if let Some(value) = self.source_dictionary.take() {
10048                            ::fidl_next::wire::Envelope::encode_value::<
10049                                ::fidl_next::wire::String<'static>,
10050                                ___E,
10051                            >(
10052                                value, preallocated.encoder, &mut out, 1024
10053                            )?;
10054                        } else {
10055                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
10056                        }
10057                    }
10058
10059                    7 => {
10060                        if let Some(value) = self.availability.take() {
10061                            ::fidl_next::wire::Envelope::encode_value::<
10062                                crate::wire::Availability,
10063                                ___E,
10064                            >(
10065                                value, preallocated.encoder, &mut out, ()
10066                            )?;
10067                        } else {
10068                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
10069                        }
10070                    }
10071
10072                    6 => {
10073                        if let Some(value) = self.dependency_type.take() {
10074                            ::fidl_next::wire::Envelope::encode_value::<
10075                                crate::wire::DependencyType,
10076                                ___E,
10077                            >(
10078                                value, preallocated.encoder, &mut out, ()
10079                            )?;
10080                        } else {
10081                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
10082                        }
10083                    }
10084
10085                    3 => {
10086                        if let Some(value) = self.target_path.take() {
10087                            ::fidl_next::wire::Envelope::encode_value::<
10088                                ::fidl_next::wire::String<'static>,
10089                                ___E,
10090                            >(
10091                                value, preallocated.encoder, &mut out, 1024
10092                            )?;
10093                        } else {
10094                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
10095                        }
10096                    }
10097
10098                    2 => {
10099                        if let Some(value) = self.source_name.take() {
10100                            ::fidl_next::wire::Envelope::encode_value::<
10101                                ::fidl_next::wire::String<'static>,
10102                                ___E,
10103                            >(
10104                                value, preallocated.encoder, &mut out, 100
10105                            )?;
10106                        } else {
10107                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
10108                        }
10109                    }
10110
10111                    1 => {
10112                        if let Some(value) = self.source.take() {
10113                            ::fidl_next::wire::Envelope::encode_value::<
10114                                crate::wire::Ref<'static>,
10115                                ___E,
10116                            >(
10117                                value, preallocated.encoder, &mut out, ()
10118                            )?;
10119                        } else {
10120                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
10121                        }
10122                    }
10123
10124                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
10125                }
10126                unsafe {
10127                    preallocated.write_next(out.assume_init_ref());
10128                }
10129            }
10130
10131            ::fidl_next::wire::Table::encode_len(table, max_ord);
10132
10133            Ok(())
10134        }
10135    }
10136
10137    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::UseDictionary<'static>, ___E>
10138        for &'a UseDictionary
10139    where
10140        ___E: ::fidl_next::Encoder + ?Sized,
10141    {
10142        #[inline]
10143        fn encode(
10144            self,
10145            encoder: &mut ___E,
10146            out: &mut ::core::mem::MaybeUninit<crate::wire::UseDictionary<'static>>,
10147            _: (),
10148        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
10149            ::fidl_next::munge!(let crate::wire::UseDictionary { table } = out);
10150
10151            let max_ord = self.__max_ordinal();
10152
10153            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
10154            ::fidl_next::Wire::zero_padding(&mut out);
10155
10156            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
10157                ::fidl_next::wire::Envelope,
10158            >(encoder, max_ord);
10159
10160            for i in 1..=max_ord {
10161                match i {
10162                    8 => {
10163                        if let Some(value) = &self.source_dictionary {
10164                            ::fidl_next::wire::Envelope::encode_value::<
10165                                ::fidl_next::wire::String<'static>,
10166                                ___E,
10167                            >(
10168                                value, preallocated.encoder, &mut out, 1024
10169                            )?;
10170                        } else {
10171                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
10172                        }
10173                    }
10174
10175                    7 => {
10176                        if let Some(value) = &self.availability {
10177                            ::fidl_next::wire::Envelope::encode_value::<
10178                                crate::wire::Availability,
10179                                ___E,
10180                            >(
10181                                value, preallocated.encoder, &mut out, ()
10182                            )?;
10183                        } else {
10184                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
10185                        }
10186                    }
10187
10188                    6 => {
10189                        if let Some(value) = &self.dependency_type {
10190                            ::fidl_next::wire::Envelope::encode_value::<
10191                                crate::wire::DependencyType,
10192                                ___E,
10193                            >(
10194                                value, preallocated.encoder, &mut out, ()
10195                            )?;
10196                        } else {
10197                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
10198                        }
10199                    }
10200
10201                    3 => {
10202                        if let Some(value) = &self.target_path {
10203                            ::fidl_next::wire::Envelope::encode_value::<
10204                                ::fidl_next::wire::String<'static>,
10205                                ___E,
10206                            >(
10207                                value, preallocated.encoder, &mut out, 1024
10208                            )?;
10209                        } else {
10210                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
10211                        }
10212                    }
10213
10214                    2 => {
10215                        if let Some(value) = &self.source_name {
10216                            ::fidl_next::wire::Envelope::encode_value::<
10217                                ::fidl_next::wire::String<'static>,
10218                                ___E,
10219                            >(
10220                                value, preallocated.encoder, &mut out, 100
10221                            )?;
10222                        } else {
10223                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
10224                        }
10225                    }
10226
10227                    1 => {
10228                        if let Some(value) = &self.source {
10229                            ::fidl_next::wire::Envelope::encode_value::<
10230                                crate::wire::Ref<'static>,
10231                                ___E,
10232                            >(
10233                                value, preallocated.encoder, &mut out, ()
10234                            )?;
10235                        } else {
10236                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
10237                        }
10238                    }
10239
10240                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
10241                }
10242                unsafe {
10243                    preallocated.write_next(out.assume_init_ref());
10244                }
10245            }
10246
10247            ::fidl_next::wire::Table::encode_len(table, max_ord);
10248
10249            Ok(())
10250        }
10251    }
10252
10253    impl<'de> ::fidl_next::FromWire<crate::wire::UseDictionary<'de>> for UseDictionary {
10254        #[inline]
10255        fn from_wire(wire_: crate::wire::UseDictionary<'de>) -> Self {
10256            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
10257
10258            let source = wire_.table.get(1);
10259
10260            let source_name = wire_.table.get(2);
10261
10262            let target_path = wire_.table.get(3);
10263
10264            let dependency_type = wire_.table.get(6);
10265
10266            let availability = wire_.table.get(7);
10267
10268            let source_dictionary = wire_.table.get(8);
10269
10270            Self {
10271                source: source.map(|envelope| {
10272                    ::fidl_next::FromWire::from_wire(unsafe {
10273                        envelope.read_unchecked::<crate::wire::Ref<'de>>()
10274                    })
10275                }),
10276
10277                source_name: source_name.map(|envelope| {
10278                    ::fidl_next::FromWire::from_wire(unsafe {
10279                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
10280                    })
10281                }),
10282
10283                target_path: target_path.map(|envelope| {
10284                    ::fidl_next::FromWire::from_wire(unsafe {
10285                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
10286                    })
10287                }),
10288
10289                dependency_type: dependency_type.map(|envelope| {
10290                    ::fidl_next::FromWire::from_wire(unsafe {
10291                        envelope.read_unchecked::<crate::wire::DependencyType>()
10292                    })
10293                }),
10294
10295                availability: availability.map(|envelope| {
10296                    ::fidl_next::FromWire::from_wire(unsafe {
10297                        envelope.read_unchecked::<crate::wire::Availability>()
10298                    })
10299                }),
10300
10301                source_dictionary: source_dictionary.map(|envelope| {
10302                    ::fidl_next::FromWire::from_wire(unsafe {
10303                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
10304                    })
10305                }),
10306            }
10307        }
10308    }
10309
10310    impl<'de> ::fidl_next::FromWireRef<crate::wire::UseDictionary<'de>> for UseDictionary {
10311        #[inline]
10312        fn from_wire_ref(wire: &crate::wire::UseDictionary<'de>) -> Self {
10313            Self {
10314                source: wire.table.get(1).map(|envelope| {
10315                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
10316                        envelope.deref_unchecked::<crate::wire::Ref<'de>>()
10317                    })
10318                }),
10319
10320                source_name: wire.table.get(2).map(|envelope| {
10321                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
10322                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
10323                    })
10324                }),
10325
10326                target_path: wire.table.get(3).map(|envelope| {
10327                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
10328                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
10329                    })
10330                }),
10331
10332                dependency_type: wire.table.get(6).map(|envelope| {
10333                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
10334                        envelope.deref_unchecked::<crate::wire::DependencyType>()
10335                    })
10336                }),
10337
10338                availability: wire.table.get(7).map(|envelope| {
10339                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
10340                        envelope.deref_unchecked::<crate::wire::Availability>()
10341                    })
10342                }),
10343
10344                source_dictionary: wire.table.get(8).map(|envelope| {
10345                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
10346                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
10347                    })
10348                }),
10349            }
10350        }
10351    }
10352
10353    #[doc = " Declares a capability used by a component, which was offered to it.\n"]
10354    #[derive(Debug, Clone, PartialEq)]
10355    pub enum Use {
10356        Service(crate::natural::UseService),
10357
10358        Protocol(crate::natural::UseProtocol),
10359
10360        Directory(crate::natural::UseDirectory),
10361
10362        Storage(crate::natural::UseStorage),
10363
10364        EventStream(crate::natural::UseEventStream),
10365
10366        Runner(crate::natural::UseRunner),
10367
10368        Config(crate::natural::UseConfiguration),
10369
10370        Dictionary(crate::natural::UseDictionary),
10371
10372        UnknownOrdinal_(u64),
10373    }
10374
10375    impl Use {
10376        pub fn is_unknown(&self) -> bool {
10377            #[allow(unreachable_patterns)]
10378            match self {
10379                Self::UnknownOrdinal_(_) => true,
10380                _ => false,
10381            }
10382        }
10383    }
10384
10385    unsafe impl<___E> ::fidl_next::Encode<crate::wire::Use<'static>, ___E> for Use
10386    where
10387        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
10388        ___E: ::fidl_next::Encoder,
10389    {
10390        #[inline]
10391        fn encode(
10392            self,
10393            encoder: &mut ___E,
10394            out: &mut ::core::mem::MaybeUninit<crate::wire::Use<'static>>,
10395            _: (),
10396        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
10397            ::fidl_next::munge!(let crate::wire::Use { raw, _phantom: _ } = out);
10398
10399            match self {
10400                Self::Service(value) => ::fidl_next::wire::Union::encode_as::<
10401                    ___E,
10402                    crate::wire::UseService<'static>,
10403                >(value, 1, encoder, raw, ())?,
10404
10405                Self::Protocol(value) => ::fidl_next::wire::Union::encode_as::<
10406                    ___E,
10407                    crate::wire::UseProtocol<'static>,
10408                >(value, 2, encoder, raw, ())?,
10409
10410                Self::Directory(value) => ::fidl_next::wire::Union::encode_as::<
10411                    ___E,
10412                    crate::wire::UseDirectory<'static>,
10413                >(value, 3, encoder, raw, ())?,
10414
10415                Self::Storage(value) => ::fidl_next::wire::Union::encode_as::<
10416                    ___E,
10417                    crate::wire::UseStorage<'static>,
10418                >(value, 4, encoder, raw, ())?,
10419
10420                Self::EventStream(value) => ::fidl_next::wire::Union::encode_as::<
10421                    ___E,
10422                    crate::wire::UseEventStream<'static>,
10423                >(value, 7, encoder, raw, ())?,
10424
10425                Self::Runner(value) => ::fidl_next::wire::Union::encode_as::<
10426                    ___E,
10427                    crate::wire::UseRunner<'static>,
10428                >(value, 8, encoder, raw, ())?,
10429
10430                Self::Config(value) => ::fidl_next::wire::Union::encode_as::<
10431                    ___E,
10432                    crate::wire::UseConfiguration<'static>,
10433                >(value, 9, encoder, raw, ())?,
10434
10435                Self::Dictionary(value) => ::fidl_next::wire::Union::encode_as::<
10436                    ___E,
10437                    crate::wire::UseDictionary<'static>,
10438                >(value, 10, encoder, raw, ())?,
10439
10440                Self::UnknownOrdinal_(ordinal) => {
10441                    return Err(::fidl_next::EncodeError::UnknownUnionOrdinal(ordinal as usize));
10442                }
10443            }
10444
10445            Ok(())
10446        }
10447    }
10448
10449    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::Use<'static>, ___E> for &'a Use
10450    where
10451        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
10452        ___E: ::fidl_next::Encoder,
10453    {
10454        #[inline]
10455        fn encode(
10456            self,
10457            encoder: &mut ___E,
10458            out: &mut ::core::mem::MaybeUninit<crate::wire::Use<'static>>,
10459            _: (),
10460        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
10461            ::fidl_next::munge!(let crate::wire::Use { raw, _phantom: _ } = out);
10462
10463            match self {
10464                Use::Service(value) => ::fidl_next::wire::Union::encode_as::<
10465                    ___E,
10466                    crate::wire::UseService<'static>,
10467                >(value, 1, encoder, raw, ())?,
10468
10469                Use::Protocol(value) => ::fidl_next::wire::Union::encode_as::<
10470                    ___E,
10471                    crate::wire::UseProtocol<'static>,
10472                >(value, 2, encoder, raw, ())?,
10473
10474                Use::Directory(value) => ::fidl_next::wire::Union::encode_as::<
10475                    ___E,
10476                    crate::wire::UseDirectory<'static>,
10477                >(value, 3, encoder, raw, ())?,
10478
10479                Use::Storage(value) => ::fidl_next::wire::Union::encode_as::<
10480                    ___E,
10481                    crate::wire::UseStorage<'static>,
10482                >(value, 4, encoder, raw, ())?,
10483
10484                Use::EventStream(value) => ::fidl_next::wire::Union::encode_as::<
10485                    ___E,
10486                    crate::wire::UseEventStream<'static>,
10487                >(value, 7, encoder, raw, ())?,
10488
10489                Use::Runner(value) => ::fidl_next::wire::Union::encode_as::<
10490                    ___E,
10491                    crate::wire::UseRunner<'static>,
10492                >(value, 8, encoder, raw, ())?,
10493
10494                Use::Config(value) => ::fidl_next::wire::Union::encode_as::<
10495                    ___E,
10496                    crate::wire::UseConfiguration<'static>,
10497                >(value, 9, encoder, raw, ())?,
10498
10499                Use::Dictionary(value) => ::fidl_next::wire::Union::encode_as::<
10500                    ___E,
10501                    crate::wire::UseDictionary<'static>,
10502                >(value, 10, encoder, raw, ())?,
10503
10504                Use::UnknownOrdinal_(ordinal) => {
10505                    return Err(::fidl_next::EncodeError::UnknownUnionOrdinal(*ordinal as usize));
10506                }
10507            }
10508
10509            Ok(())
10510        }
10511    }
10512
10513    unsafe impl<___E> ::fidl_next::EncodeOption<crate::wire_optional::Use<'static>, ___E> for Use
10514    where
10515        ___E: ?Sized,
10516        Use: ::fidl_next::Encode<crate::wire::Use<'static>, ___E>,
10517    {
10518        #[inline]
10519        fn encode_option(
10520            this: ::core::option::Option<Self>,
10521            encoder: &mut ___E,
10522            out: &mut ::core::mem::MaybeUninit<crate::wire_optional::Use<'static>>,
10523            _: (),
10524        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
10525            ::fidl_next::munge!(let crate::wire_optional::Use { raw, _phantom: _ } = &mut *out);
10526
10527            if let Some(inner) = this {
10528                let value_out = unsafe { &mut *out.as_mut_ptr().cast() };
10529                ::fidl_next::Encode::encode(inner, encoder, value_out, ())?;
10530            } else {
10531                ::fidl_next::wire::Union::encode_absent(raw);
10532            }
10533
10534            Ok(())
10535        }
10536    }
10537
10538    unsafe impl<'a, ___E> ::fidl_next::EncodeOption<crate::wire_optional::Use<'static>, ___E>
10539        for &'a Use
10540    where
10541        ___E: ?Sized,
10542        &'a Use: ::fidl_next::Encode<crate::wire::Use<'static>, ___E>,
10543    {
10544        #[inline]
10545        fn encode_option(
10546            this: ::core::option::Option<Self>,
10547            encoder: &mut ___E,
10548            out: &mut ::core::mem::MaybeUninit<crate::wire_optional::Use<'static>>,
10549            _: (),
10550        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
10551            ::fidl_next::munge!(let crate::wire_optional::Use { raw, _phantom: _ } = &mut *out);
10552
10553            if let Some(inner) = this {
10554                let value_out = unsafe { &mut *out.as_mut_ptr().cast() };
10555                ::fidl_next::Encode::encode(inner, encoder, value_out, ())?;
10556            } else {
10557                ::fidl_next::wire::Union::encode_absent(raw);
10558            }
10559
10560            Ok(())
10561        }
10562    }
10563
10564    impl<'de> ::fidl_next::FromWire<crate::wire::Use<'de>> for Use {
10565        #[inline]
10566        fn from_wire(wire: crate::wire::Use<'de>) -> Self {
10567            let wire = ::core::mem::ManuallyDrop::new(wire);
10568            match wire.raw.ordinal() {
10569                1 => Self::Service(::fidl_next::FromWire::from_wire(unsafe {
10570                    wire.raw.get().read_unchecked::<crate::wire::UseService<'de>>()
10571                })),
10572
10573                2 => Self::Protocol(::fidl_next::FromWire::from_wire(unsafe {
10574                    wire.raw.get().read_unchecked::<crate::wire::UseProtocol<'de>>()
10575                })),
10576
10577                3 => Self::Directory(::fidl_next::FromWire::from_wire(unsafe {
10578                    wire.raw.get().read_unchecked::<crate::wire::UseDirectory<'de>>()
10579                })),
10580
10581                4 => Self::Storage(::fidl_next::FromWire::from_wire(unsafe {
10582                    wire.raw.get().read_unchecked::<crate::wire::UseStorage<'de>>()
10583                })),
10584
10585                7 => Self::EventStream(::fidl_next::FromWire::from_wire(unsafe {
10586                    wire.raw.get().read_unchecked::<crate::wire::UseEventStream<'de>>()
10587                })),
10588
10589                8 => Self::Runner(::fidl_next::FromWire::from_wire(unsafe {
10590                    wire.raw.get().read_unchecked::<crate::wire::UseRunner<'de>>()
10591                })),
10592
10593                9 => Self::Config(::fidl_next::FromWire::from_wire(unsafe {
10594                    wire.raw.get().read_unchecked::<crate::wire::UseConfiguration<'de>>()
10595                })),
10596
10597                10 => Self::Dictionary(::fidl_next::FromWire::from_wire(unsafe {
10598                    wire.raw.get().read_unchecked::<crate::wire::UseDictionary<'de>>()
10599                })),
10600
10601                ord => return Self::UnknownOrdinal_(ord as u64),
10602            }
10603        }
10604    }
10605
10606    impl<'de> ::fidl_next::FromWireRef<crate::wire::Use<'de>> for Use {
10607        #[inline]
10608        fn from_wire_ref(wire: &crate::wire::Use<'de>) -> Self {
10609            match wire.raw.ordinal() {
10610                1 => Self::Service(::fidl_next::FromWireRef::from_wire_ref(unsafe {
10611                    wire.raw.get().deref_unchecked::<crate::wire::UseService<'de>>()
10612                })),
10613
10614                2 => Self::Protocol(::fidl_next::FromWireRef::from_wire_ref(unsafe {
10615                    wire.raw.get().deref_unchecked::<crate::wire::UseProtocol<'de>>()
10616                })),
10617
10618                3 => Self::Directory(::fidl_next::FromWireRef::from_wire_ref(unsafe {
10619                    wire.raw.get().deref_unchecked::<crate::wire::UseDirectory<'de>>()
10620                })),
10621
10622                4 => Self::Storage(::fidl_next::FromWireRef::from_wire_ref(unsafe {
10623                    wire.raw.get().deref_unchecked::<crate::wire::UseStorage<'de>>()
10624                })),
10625
10626                7 => Self::EventStream(::fidl_next::FromWireRef::from_wire_ref(unsafe {
10627                    wire.raw.get().deref_unchecked::<crate::wire::UseEventStream<'de>>()
10628                })),
10629
10630                8 => Self::Runner(::fidl_next::FromWireRef::from_wire_ref(unsafe {
10631                    wire.raw.get().deref_unchecked::<crate::wire::UseRunner<'de>>()
10632                })),
10633
10634                9 => Self::Config(::fidl_next::FromWireRef::from_wire_ref(unsafe {
10635                    wire.raw.get().deref_unchecked::<crate::wire::UseConfiguration<'de>>()
10636                })),
10637
10638                10 => Self::Dictionary(::fidl_next::FromWireRef::from_wire_ref(unsafe {
10639                    wire.raw.get().deref_unchecked::<crate::wire::UseDictionary<'de>>()
10640                })),
10641
10642                ord => return Self::UnknownOrdinal_(ord as u64),
10643            }
10644        }
10645    }
10646
10647    impl<'de> ::fidl_next::FromWireOption<crate::wire_optional::Use<'de>> for Use {
10648        #[inline]
10649        fn from_wire_option(wire: crate::wire_optional::Use<'de>) -> ::core::option::Option<Self> {
10650            if let Some(inner) = wire.into_option() {
10651                Some(::fidl_next::FromWire::from_wire(inner))
10652            } else {
10653                None
10654            }
10655        }
10656    }
10657
10658    impl<'de> ::fidl_next::FromWireOption<crate::wire_optional::Use<'de>> for Box<Use> {
10659        #[inline]
10660        fn from_wire_option(wire: crate::wire_optional::Use<'de>) -> ::core::option::Option<Self> {
10661            <Use as ::fidl_next::FromWireOption<crate::wire_optional::Use<'de>>>::from_wire_option(
10662                wire,
10663            )
10664            .map(Box::new)
10665        }
10666    }
10667
10668    impl<'de> ::fidl_next::FromWireOptionRef<crate::wire_optional::Use<'de>> for Box<Use> {
10669        #[inline]
10670        fn from_wire_option_ref(
10671            wire: &crate::wire_optional::Use<'de>,
10672        ) -> ::core::option::Option<Self> {
10673            if let Some(inner) = wire.as_ref() {
10674                Some(Box::new(::fidl_next::FromWireRef::from_wire_ref(inner)))
10675            } else {
10676                None
10677            }
10678        }
10679    }
10680
10681    #[doc = " Declares a service exposed to a component\'s containing realm, such as a\n service exposed by the component or one of its children at runtime.\n\n To learn more about services, see:\n https://fuchsia.dev/fuchsia-src/glossary#service\n"]
10682    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
10683    pub struct ExposeService {
10684        pub source: ::core::option::Option<crate::natural::Ref>,
10685
10686        pub source_name: ::core::option::Option<::std::string::String>,
10687
10688        pub target: ::core::option::Option<crate::natural::Ref>,
10689
10690        pub target_name: ::core::option::Option<::std::string::String>,
10691
10692        pub availability: ::core::option::Option<crate::natural::Availability>,
10693
10694        pub source_dictionary: ::core::option::Option<::std::string::String>,
10695    }
10696
10697    impl ExposeService {
10698        fn __max_ordinal(&self) -> usize {
10699            if self.source_dictionary.is_some() {
10700                return 6;
10701            }
10702
10703            if self.availability.is_some() {
10704                return 5;
10705            }
10706
10707            if self.target_name.is_some() {
10708                return 4;
10709            }
10710
10711            if self.target.is_some() {
10712                return 3;
10713            }
10714
10715            if self.source_name.is_some() {
10716                return 2;
10717            }
10718
10719            if self.source.is_some() {
10720                return 1;
10721            }
10722
10723            0
10724        }
10725    }
10726
10727    unsafe impl<___E> ::fidl_next::Encode<crate::wire::ExposeService<'static>, ___E> for ExposeService
10728    where
10729        ___E: ::fidl_next::Encoder + ?Sized,
10730    {
10731        #[inline]
10732        fn encode(
10733            mut self,
10734            encoder: &mut ___E,
10735            out: &mut ::core::mem::MaybeUninit<crate::wire::ExposeService<'static>>,
10736            _: (),
10737        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
10738            ::fidl_next::munge!(let crate::wire::ExposeService { table } = out);
10739
10740            let max_ord = self.__max_ordinal();
10741
10742            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
10743            ::fidl_next::Wire::zero_padding(&mut out);
10744
10745            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
10746                ::fidl_next::wire::Envelope,
10747            >(encoder, max_ord);
10748
10749            for i in 1..=max_ord {
10750                match i {
10751                    6 => {
10752                        if let Some(value) = self.source_dictionary.take() {
10753                            ::fidl_next::wire::Envelope::encode_value::<
10754                                ::fidl_next::wire::String<'static>,
10755                                ___E,
10756                            >(
10757                                value, preallocated.encoder, &mut out, 1024
10758                            )?;
10759                        } else {
10760                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
10761                        }
10762                    }
10763
10764                    5 => {
10765                        if let Some(value) = self.availability.take() {
10766                            ::fidl_next::wire::Envelope::encode_value::<
10767                                crate::wire::Availability,
10768                                ___E,
10769                            >(
10770                                value, preallocated.encoder, &mut out, ()
10771                            )?;
10772                        } else {
10773                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
10774                        }
10775                    }
10776
10777                    4 => {
10778                        if let Some(value) = self.target_name.take() {
10779                            ::fidl_next::wire::Envelope::encode_value::<
10780                                ::fidl_next::wire::String<'static>,
10781                                ___E,
10782                            >(
10783                                value, preallocated.encoder, &mut out, 100
10784                            )?;
10785                        } else {
10786                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
10787                        }
10788                    }
10789
10790                    3 => {
10791                        if let Some(value) = self.target.take() {
10792                            ::fidl_next::wire::Envelope::encode_value::<
10793                                crate::wire::Ref<'static>,
10794                                ___E,
10795                            >(
10796                                value, preallocated.encoder, &mut out, ()
10797                            )?;
10798                        } else {
10799                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
10800                        }
10801                    }
10802
10803                    2 => {
10804                        if let Some(value) = self.source_name.take() {
10805                            ::fidl_next::wire::Envelope::encode_value::<
10806                                ::fidl_next::wire::String<'static>,
10807                                ___E,
10808                            >(
10809                                value, preallocated.encoder, &mut out, 100
10810                            )?;
10811                        } else {
10812                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
10813                        }
10814                    }
10815
10816                    1 => {
10817                        if let Some(value) = self.source.take() {
10818                            ::fidl_next::wire::Envelope::encode_value::<
10819                                crate::wire::Ref<'static>,
10820                                ___E,
10821                            >(
10822                                value, preallocated.encoder, &mut out, ()
10823                            )?;
10824                        } else {
10825                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
10826                        }
10827                    }
10828
10829                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
10830                }
10831                unsafe {
10832                    preallocated.write_next(out.assume_init_ref());
10833                }
10834            }
10835
10836            ::fidl_next::wire::Table::encode_len(table, max_ord);
10837
10838            Ok(())
10839        }
10840    }
10841
10842    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::ExposeService<'static>, ___E>
10843        for &'a ExposeService
10844    where
10845        ___E: ::fidl_next::Encoder + ?Sized,
10846    {
10847        #[inline]
10848        fn encode(
10849            self,
10850            encoder: &mut ___E,
10851            out: &mut ::core::mem::MaybeUninit<crate::wire::ExposeService<'static>>,
10852            _: (),
10853        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
10854            ::fidl_next::munge!(let crate::wire::ExposeService { table } = out);
10855
10856            let max_ord = self.__max_ordinal();
10857
10858            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
10859            ::fidl_next::Wire::zero_padding(&mut out);
10860
10861            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
10862                ::fidl_next::wire::Envelope,
10863            >(encoder, max_ord);
10864
10865            for i in 1..=max_ord {
10866                match i {
10867                    6 => {
10868                        if let Some(value) = &self.source_dictionary {
10869                            ::fidl_next::wire::Envelope::encode_value::<
10870                                ::fidl_next::wire::String<'static>,
10871                                ___E,
10872                            >(
10873                                value, preallocated.encoder, &mut out, 1024
10874                            )?;
10875                        } else {
10876                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
10877                        }
10878                    }
10879
10880                    5 => {
10881                        if let Some(value) = &self.availability {
10882                            ::fidl_next::wire::Envelope::encode_value::<
10883                                crate::wire::Availability,
10884                                ___E,
10885                            >(
10886                                value, preallocated.encoder, &mut out, ()
10887                            )?;
10888                        } else {
10889                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
10890                        }
10891                    }
10892
10893                    4 => {
10894                        if let Some(value) = &self.target_name {
10895                            ::fidl_next::wire::Envelope::encode_value::<
10896                                ::fidl_next::wire::String<'static>,
10897                                ___E,
10898                            >(
10899                                value, preallocated.encoder, &mut out, 100
10900                            )?;
10901                        } else {
10902                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
10903                        }
10904                    }
10905
10906                    3 => {
10907                        if let Some(value) = &self.target {
10908                            ::fidl_next::wire::Envelope::encode_value::<
10909                                crate::wire::Ref<'static>,
10910                                ___E,
10911                            >(
10912                                value, preallocated.encoder, &mut out, ()
10913                            )?;
10914                        } else {
10915                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
10916                        }
10917                    }
10918
10919                    2 => {
10920                        if let Some(value) = &self.source_name {
10921                            ::fidl_next::wire::Envelope::encode_value::<
10922                                ::fidl_next::wire::String<'static>,
10923                                ___E,
10924                            >(
10925                                value, preallocated.encoder, &mut out, 100
10926                            )?;
10927                        } else {
10928                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
10929                        }
10930                    }
10931
10932                    1 => {
10933                        if let Some(value) = &self.source {
10934                            ::fidl_next::wire::Envelope::encode_value::<
10935                                crate::wire::Ref<'static>,
10936                                ___E,
10937                            >(
10938                                value, preallocated.encoder, &mut out, ()
10939                            )?;
10940                        } else {
10941                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
10942                        }
10943                    }
10944
10945                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
10946                }
10947                unsafe {
10948                    preallocated.write_next(out.assume_init_ref());
10949                }
10950            }
10951
10952            ::fidl_next::wire::Table::encode_len(table, max_ord);
10953
10954            Ok(())
10955        }
10956    }
10957
10958    impl<'de> ::fidl_next::FromWire<crate::wire::ExposeService<'de>> for ExposeService {
10959        #[inline]
10960        fn from_wire(wire_: crate::wire::ExposeService<'de>) -> Self {
10961            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
10962
10963            let source = wire_.table.get(1);
10964
10965            let source_name = wire_.table.get(2);
10966
10967            let target = wire_.table.get(3);
10968
10969            let target_name = wire_.table.get(4);
10970
10971            let availability = wire_.table.get(5);
10972
10973            let source_dictionary = wire_.table.get(6);
10974
10975            Self {
10976                source: source.map(|envelope| {
10977                    ::fidl_next::FromWire::from_wire(unsafe {
10978                        envelope.read_unchecked::<crate::wire::Ref<'de>>()
10979                    })
10980                }),
10981
10982                source_name: source_name.map(|envelope| {
10983                    ::fidl_next::FromWire::from_wire(unsafe {
10984                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
10985                    })
10986                }),
10987
10988                target: target.map(|envelope| {
10989                    ::fidl_next::FromWire::from_wire(unsafe {
10990                        envelope.read_unchecked::<crate::wire::Ref<'de>>()
10991                    })
10992                }),
10993
10994                target_name: target_name.map(|envelope| {
10995                    ::fidl_next::FromWire::from_wire(unsafe {
10996                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
10997                    })
10998                }),
10999
11000                availability: availability.map(|envelope| {
11001                    ::fidl_next::FromWire::from_wire(unsafe {
11002                        envelope.read_unchecked::<crate::wire::Availability>()
11003                    })
11004                }),
11005
11006                source_dictionary: source_dictionary.map(|envelope| {
11007                    ::fidl_next::FromWire::from_wire(unsafe {
11008                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
11009                    })
11010                }),
11011            }
11012        }
11013    }
11014
11015    impl<'de> ::fidl_next::FromWireRef<crate::wire::ExposeService<'de>> for ExposeService {
11016        #[inline]
11017        fn from_wire_ref(wire: &crate::wire::ExposeService<'de>) -> Self {
11018            Self {
11019                source: wire.table.get(1).map(|envelope| {
11020                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
11021                        envelope.deref_unchecked::<crate::wire::Ref<'de>>()
11022                    })
11023                }),
11024
11025                source_name: wire.table.get(2).map(|envelope| {
11026                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
11027                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
11028                    })
11029                }),
11030
11031                target: wire.table.get(3).map(|envelope| {
11032                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
11033                        envelope.deref_unchecked::<crate::wire::Ref<'de>>()
11034                    })
11035                }),
11036
11037                target_name: wire.table.get(4).map(|envelope| {
11038                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
11039                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
11040                    })
11041                }),
11042
11043                availability: wire.table.get(5).map(|envelope| {
11044                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
11045                        envelope.deref_unchecked::<crate::wire::Availability>()
11046                    })
11047                }),
11048
11049                source_dictionary: wire.table.get(6).map(|envelope| {
11050                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
11051                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
11052                    })
11053                }),
11054            }
11055        }
11056    }
11057
11058    #[doc = " Declares a protocol exposed to a component\'s containing realm, such as\n a protocol exposed by the component or one of its children at runtime.\n\n To learn more about protocols, see:\n https://fuchsia.dev/fuchsia-src/glossary#protocol\n"]
11059    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
11060    pub struct ExposeProtocol {
11061        pub source: ::core::option::Option<crate::natural::Ref>,
11062
11063        pub source_name: ::core::option::Option<::std::string::String>,
11064
11065        pub target: ::core::option::Option<crate::natural::Ref>,
11066
11067        pub target_name: ::core::option::Option<::std::string::String>,
11068
11069        pub availability: ::core::option::Option<crate::natural::Availability>,
11070
11071        pub source_dictionary: ::core::option::Option<::std::string::String>,
11072    }
11073
11074    impl ExposeProtocol {
11075        fn __max_ordinal(&self) -> usize {
11076            if self.source_dictionary.is_some() {
11077                return 6;
11078            }
11079
11080            if self.availability.is_some() {
11081                return 5;
11082            }
11083
11084            if self.target_name.is_some() {
11085                return 4;
11086            }
11087
11088            if self.target.is_some() {
11089                return 3;
11090            }
11091
11092            if self.source_name.is_some() {
11093                return 2;
11094            }
11095
11096            if self.source.is_some() {
11097                return 1;
11098            }
11099
11100            0
11101        }
11102    }
11103
11104    unsafe impl<___E> ::fidl_next::Encode<crate::wire::ExposeProtocol<'static>, ___E> for ExposeProtocol
11105    where
11106        ___E: ::fidl_next::Encoder + ?Sized,
11107    {
11108        #[inline]
11109        fn encode(
11110            mut self,
11111            encoder: &mut ___E,
11112            out: &mut ::core::mem::MaybeUninit<crate::wire::ExposeProtocol<'static>>,
11113            _: (),
11114        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
11115            ::fidl_next::munge!(let crate::wire::ExposeProtocol { table } = out);
11116
11117            let max_ord = self.__max_ordinal();
11118
11119            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
11120            ::fidl_next::Wire::zero_padding(&mut out);
11121
11122            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
11123                ::fidl_next::wire::Envelope,
11124            >(encoder, max_ord);
11125
11126            for i in 1..=max_ord {
11127                match i {
11128                    6 => {
11129                        if let Some(value) = self.source_dictionary.take() {
11130                            ::fidl_next::wire::Envelope::encode_value::<
11131                                ::fidl_next::wire::String<'static>,
11132                                ___E,
11133                            >(
11134                                value, preallocated.encoder, &mut out, 1024
11135                            )?;
11136                        } else {
11137                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
11138                        }
11139                    }
11140
11141                    5 => {
11142                        if let Some(value) = self.availability.take() {
11143                            ::fidl_next::wire::Envelope::encode_value::<
11144                                crate::wire::Availability,
11145                                ___E,
11146                            >(
11147                                value, preallocated.encoder, &mut out, ()
11148                            )?;
11149                        } else {
11150                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
11151                        }
11152                    }
11153
11154                    4 => {
11155                        if let Some(value) = self.target_name.take() {
11156                            ::fidl_next::wire::Envelope::encode_value::<
11157                                ::fidl_next::wire::String<'static>,
11158                                ___E,
11159                            >(
11160                                value, preallocated.encoder, &mut out, 100
11161                            )?;
11162                        } else {
11163                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
11164                        }
11165                    }
11166
11167                    3 => {
11168                        if let Some(value) = self.target.take() {
11169                            ::fidl_next::wire::Envelope::encode_value::<
11170                                crate::wire::Ref<'static>,
11171                                ___E,
11172                            >(
11173                                value, preallocated.encoder, &mut out, ()
11174                            )?;
11175                        } else {
11176                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
11177                        }
11178                    }
11179
11180                    2 => {
11181                        if let Some(value) = self.source_name.take() {
11182                            ::fidl_next::wire::Envelope::encode_value::<
11183                                ::fidl_next::wire::String<'static>,
11184                                ___E,
11185                            >(
11186                                value, preallocated.encoder, &mut out, 100
11187                            )?;
11188                        } else {
11189                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
11190                        }
11191                    }
11192
11193                    1 => {
11194                        if let Some(value) = self.source.take() {
11195                            ::fidl_next::wire::Envelope::encode_value::<
11196                                crate::wire::Ref<'static>,
11197                                ___E,
11198                            >(
11199                                value, preallocated.encoder, &mut out, ()
11200                            )?;
11201                        } else {
11202                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
11203                        }
11204                    }
11205
11206                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
11207                }
11208                unsafe {
11209                    preallocated.write_next(out.assume_init_ref());
11210                }
11211            }
11212
11213            ::fidl_next::wire::Table::encode_len(table, max_ord);
11214
11215            Ok(())
11216        }
11217    }
11218
11219    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::ExposeProtocol<'static>, ___E>
11220        for &'a ExposeProtocol
11221    where
11222        ___E: ::fidl_next::Encoder + ?Sized,
11223    {
11224        #[inline]
11225        fn encode(
11226            self,
11227            encoder: &mut ___E,
11228            out: &mut ::core::mem::MaybeUninit<crate::wire::ExposeProtocol<'static>>,
11229            _: (),
11230        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
11231            ::fidl_next::munge!(let crate::wire::ExposeProtocol { table } = out);
11232
11233            let max_ord = self.__max_ordinal();
11234
11235            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
11236            ::fidl_next::Wire::zero_padding(&mut out);
11237
11238            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
11239                ::fidl_next::wire::Envelope,
11240            >(encoder, max_ord);
11241
11242            for i in 1..=max_ord {
11243                match i {
11244                    6 => {
11245                        if let Some(value) = &self.source_dictionary {
11246                            ::fidl_next::wire::Envelope::encode_value::<
11247                                ::fidl_next::wire::String<'static>,
11248                                ___E,
11249                            >(
11250                                value, preallocated.encoder, &mut out, 1024
11251                            )?;
11252                        } else {
11253                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
11254                        }
11255                    }
11256
11257                    5 => {
11258                        if let Some(value) = &self.availability {
11259                            ::fidl_next::wire::Envelope::encode_value::<
11260                                crate::wire::Availability,
11261                                ___E,
11262                            >(
11263                                value, preallocated.encoder, &mut out, ()
11264                            )?;
11265                        } else {
11266                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
11267                        }
11268                    }
11269
11270                    4 => {
11271                        if let Some(value) = &self.target_name {
11272                            ::fidl_next::wire::Envelope::encode_value::<
11273                                ::fidl_next::wire::String<'static>,
11274                                ___E,
11275                            >(
11276                                value, preallocated.encoder, &mut out, 100
11277                            )?;
11278                        } else {
11279                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
11280                        }
11281                    }
11282
11283                    3 => {
11284                        if let Some(value) = &self.target {
11285                            ::fidl_next::wire::Envelope::encode_value::<
11286                                crate::wire::Ref<'static>,
11287                                ___E,
11288                            >(
11289                                value, preallocated.encoder, &mut out, ()
11290                            )?;
11291                        } else {
11292                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
11293                        }
11294                    }
11295
11296                    2 => {
11297                        if let Some(value) = &self.source_name {
11298                            ::fidl_next::wire::Envelope::encode_value::<
11299                                ::fidl_next::wire::String<'static>,
11300                                ___E,
11301                            >(
11302                                value, preallocated.encoder, &mut out, 100
11303                            )?;
11304                        } else {
11305                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
11306                        }
11307                    }
11308
11309                    1 => {
11310                        if let Some(value) = &self.source {
11311                            ::fidl_next::wire::Envelope::encode_value::<
11312                                crate::wire::Ref<'static>,
11313                                ___E,
11314                            >(
11315                                value, preallocated.encoder, &mut out, ()
11316                            )?;
11317                        } else {
11318                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
11319                        }
11320                    }
11321
11322                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
11323                }
11324                unsafe {
11325                    preallocated.write_next(out.assume_init_ref());
11326                }
11327            }
11328
11329            ::fidl_next::wire::Table::encode_len(table, max_ord);
11330
11331            Ok(())
11332        }
11333    }
11334
11335    impl<'de> ::fidl_next::FromWire<crate::wire::ExposeProtocol<'de>> for ExposeProtocol {
11336        #[inline]
11337        fn from_wire(wire_: crate::wire::ExposeProtocol<'de>) -> Self {
11338            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
11339
11340            let source = wire_.table.get(1);
11341
11342            let source_name = wire_.table.get(2);
11343
11344            let target = wire_.table.get(3);
11345
11346            let target_name = wire_.table.get(4);
11347
11348            let availability = wire_.table.get(5);
11349
11350            let source_dictionary = wire_.table.get(6);
11351
11352            Self {
11353                source: source.map(|envelope| {
11354                    ::fidl_next::FromWire::from_wire(unsafe {
11355                        envelope.read_unchecked::<crate::wire::Ref<'de>>()
11356                    })
11357                }),
11358
11359                source_name: source_name.map(|envelope| {
11360                    ::fidl_next::FromWire::from_wire(unsafe {
11361                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
11362                    })
11363                }),
11364
11365                target: target.map(|envelope| {
11366                    ::fidl_next::FromWire::from_wire(unsafe {
11367                        envelope.read_unchecked::<crate::wire::Ref<'de>>()
11368                    })
11369                }),
11370
11371                target_name: target_name.map(|envelope| {
11372                    ::fidl_next::FromWire::from_wire(unsafe {
11373                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
11374                    })
11375                }),
11376
11377                availability: availability.map(|envelope| {
11378                    ::fidl_next::FromWire::from_wire(unsafe {
11379                        envelope.read_unchecked::<crate::wire::Availability>()
11380                    })
11381                }),
11382
11383                source_dictionary: source_dictionary.map(|envelope| {
11384                    ::fidl_next::FromWire::from_wire(unsafe {
11385                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
11386                    })
11387                }),
11388            }
11389        }
11390    }
11391
11392    impl<'de> ::fidl_next::FromWireRef<crate::wire::ExposeProtocol<'de>> for ExposeProtocol {
11393        #[inline]
11394        fn from_wire_ref(wire: &crate::wire::ExposeProtocol<'de>) -> Self {
11395            Self {
11396                source: wire.table.get(1).map(|envelope| {
11397                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
11398                        envelope.deref_unchecked::<crate::wire::Ref<'de>>()
11399                    })
11400                }),
11401
11402                source_name: wire.table.get(2).map(|envelope| {
11403                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
11404                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
11405                    })
11406                }),
11407
11408                target: wire.table.get(3).map(|envelope| {
11409                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
11410                        envelope.deref_unchecked::<crate::wire::Ref<'de>>()
11411                    })
11412                }),
11413
11414                target_name: wire.table.get(4).map(|envelope| {
11415                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
11416                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
11417                    })
11418                }),
11419
11420                availability: wire.table.get(5).map(|envelope| {
11421                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
11422                        envelope.deref_unchecked::<crate::wire::Availability>()
11423                    })
11424                }),
11425
11426                source_dictionary: wire.table.get(6).map(|envelope| {
11427                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
11428                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
11429                    })
11430                }),
11431            }
11432        }
11433    }
11434
11435    #[doc = " Declares a directory exposed to a component\'s containing realm, such as a\n directory exposed by the component or one of its children at runtime.\n"]
11436    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
11437    pub struct ExposeDirectory {
11438        pub source: ::core::option::Option<crate::natural::Ref>,
11439
11440        pub source_name: ::core::option::Option<::std::string::String>,
11441
11442        pub target: ::core::option::Option<crate::natural::Ref>,
11443
11444        pub target_name: ::core::option::Option<::std::string::String>,
11445
11446        pub rights: ::core::option::Option<::fidl_next_common_fuchsia_io::natural::Operations>,
11447
11448        pub subdir: ::core::option::Option<::std::string::String>,
11449
11450        pub availability: ::core::option::Option<crate::natural::Availability>,
11451
11452        pub source_dictionary: ::core::option::Option<::std::string::String>,
11453    }
11454
11455    impl ExposeDirectory {
11456        fn __max_ordinal(&self) -> usize {
11457            if self.source_dictionary.is_some() {
11458                return 8;
11459            }
11460
11461            if self.availability.is_some() {
11462                return 7;
11463            }
11464
11465            if self.subdir.is_some() {
11466                return 6;
11467            }
11468
11469            if self.rights.is_some() {
11470                return 5;
11471            }
11472
11473            if self.target_name.is_some() {
11474                return 4;
11475            }
11476
11477            if self.target.is_some() {
11478                return 3;
11479            }
11480
11481            if self.source_name.is_some() {
11482                return 2;
11483            }
11484
11485            if self.source.is_some() {
11486                return 1;
11487            }
11488
11489            0
11490        }
11491    }
11492
11493    unsafe impl<___E> ::fidl_next::Encode<crate::wire::ExposeDirectory<'static>, ___E>
11494        for ExposeDirectory
11495    where
11496        ___E: ::fidl_next::Encoder + ?Sized,
11497    {
11498        #[inline]
11499        fn encode(
11500            mut self,
11501            encoder: &mut ___E,
11502            out: &mut ::core::mem::MaybeUninit<crate::wire::ExposeDirectory<'static>>,
11503            _: (),
11504        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
11505            ::fidl_next::munge!(let crate::wire::ExposeDirectory { table } = out);
11506
11507            let max_ord = self.__max_ordinal();
11508
11509            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
11510            ::fidl_next::Wire::zero_padding(&mut out);
11511
11512            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
11513                ::fidl_next::wire::Envelope,
11514            >(encoder, max_ord);
11515
11516            for i in 1..=max_ord {
11517                match i {
11518                    8 => {
11519                        if let Some(value) = self.source_dictionary.take() {
11520                            ::fidl_next::wire::Envelope::encode_value::<
11521                                ::fidl_next::wire::String<'static>,
11522                                ___E,
11523                            >(
11524                                value, preallocated.encoder, &mut out, 1024
11525                            )?;
11526                        } else {
11527                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
11528                        }
11529                    }
11530
11531                    7 => {
11532                        if let Some(value) = self.availability.take() {
11533                            ::fidl_next::wire::Envelope::encode_value::<
11534                                crate::wire::Availability,
11535                                ___E,
11536                            >(
11537                                value, preallocated.encoder, &mut out, ()
11538                            )?;
11539                        } else {
11540                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
11541                        }
11542                    }
11543
11544                    6 => {
11545                        if let Some(value) = self.subdir.take() {
11546                            ::fidl_next::wire::Envelope::encode_value::<
11547                                ::fidl_next::wire::String<'static>,
11548                                ___E,
11549                            >(
11550                                value, preallocated.encoder, &mut out, 1024
11551                            )?;
11552                        } else {
11553                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
11554                        }
11555                    }
11556
11557                    5 => {
11558                        if let Some(value) = self.rights.take() {
11559                            ::fidl_next::wire::Envelope::encode_value::<
11560                                ::fidl_next_common_fuchsia_io::wire::Operations,
11561                                ___E,
11562                            >(
11563                                value, preallocated.encoder, &mut out, ()
11564                            )?;
11565                        } else {
11566                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
11567                        }
11568                    }
11569
11570                    4 => {
11571                        if let Some(value) = self.target_name.take() {
11572                            ::fidl_next::wire::Envelope::encode_value::<
11573                                ::fidl_next::wire::String<'static>,
11574                                ___E,
11575                            >(
11576                                value, preallocated.encoder, &mut out, 100
11577                            )?;
11578                        } else {
11579                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
11580                        }
11581                    }
11582
11583                    3 => {
11584                        if let Some(value) = self.target.take() {
11585                            ::fidl_next::wire::Envelope::encode_value::<
11586                                crate::wire::Ref<'static>,
11587                                ___E,
11588                            >(
11589                                value, preallocated.encoder, &mut out, ()
11590                            )?;
11591                        } else {
11592                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
11593                        }
11594                    }
11595
11596                    2 => {
11597                        if let Some(value) = self.source_name.take() {
11598                            ::fidl_next::wire::Envelope::encode_value::<
11599                                ::fidl_next::wire::String<'static>,
11600                                ___E,
11601                            >(
11602                                value, preallocated.encoder, &mut out, 100
11603                            )?;
11604                        } else {
11605                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
11606                        }
11607                    }
11608
11609                    1 => {
11610                        if let Some(value) = self.source.take() {
11611                            ::fidl_next::wire::Envelope::encode_value::<
11612                                crate::wire::Ref<'static>,
11613                                ___E,
11614                            >(
11615                                value, preallocated.encoder, &mut out, ()
11616                            )?;
11617                        } else {
11618                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
11619                        }
11620                    }
11621
11622                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
11623                }
11624                unsafe {
11625                    preallocated.write_next(out.assume_init_ref());
11626                }
11627            }
11628
11629            ::fidl_next::wire::Table::encode_len(table, max_ord);
11630
11631            Ok(())
11632        }
11633    }
11634
11635    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::ExposeDirectory<'static>, ___E>
11636        for &'a ExposeDirectory
11637    where
11638        ___E: ::fidl_next::Encoder + ?Sized,
11639    {
11640        #[inline]
11641        fn encode(
11642            self,
11643            encoder: &mut ___E,
11644            out: &mut ::core::mem::MaybeUninit<crate::wire::ExposeDirectory<'static>>,
11645            _: (),
11646        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
11647            ::fidl_next::munge!(let crate::wire::ExposeDirectory { table } = out);
11648
11649            let max_ord = self.__max_ordinal();
11650
11651            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
11652            ::fidl_next::Wire::zero_padding(&mut out);
11653
11654            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
11655                ::fidl_next::wire::Envelope,
11656            >(encoder, max_ord);
11657
11658            for i in 1..=max_ord {
11659                match i {
11660                    8 => {
11661                        if let Some(value) = &self.source_dictionary {
11662                            ::fidl_next::wire::Envelope::encode_value::<
11663                                ::fidl_next::wire::String<'static>,
11664                                ___E,
11665                            >(
11666                                value, preallocated.encoder, &mut out, 1024
11667                            )?;
11668                        } else {
11669                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
11670                        }
11671                    }
11672
11673                    7 => {
11674                        if let Some(value) = &self.availability {
11675                            ::fidl_next::wire::Envelope::encode_value::<
11676                                crate::wire::Availability,
11677                                ___E,
11678                            >(
11679                                value, preallocated.encoder, &mut out, ()
11680                            )?;
11681                        } else {
11682                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
11683                        }
11684                    }
11685
11686                    6 => {
11687                        if let Some(value) = &self.subdir {
11688                            ::fidl_next::wire::Envelope::encode_value::<
11689                                ::fidl_next::wire::String<'static>,
11690                                ___E,
11691                            >(
11692                                value, preallocated.encoder, &mut out, 1024
11693                            )?;
11694                        } else {
11695                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
11696                        }
11697                    }
11698
11699                    5 => {
11700                        if let Some(value) = &self.rights {
11701                            ::fidl_next::wire::Envelope::encode_value::<
11702                                ::fidl_next_common_fuchsia_io::wire::Operations,
11703                                ___E,
11704                            >(
11705                                value, preallocated.encoder, &mut out, ()
11706                            )?;
11707                        } else {
11708                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
11709                        }
11710                    }
11711
11712                    4 => {
11713                        if let Some(value) = &self.target_name {
11714                            ::fidl_next::wire::Envelope::encode_value::<
11715                                ::fidl_next::wire::String<'static>,
11716                                ___E,
11717                            >(
11718                                value, preallocated.encoder, &mut out, 100
11719                            )?;
11720                        } else {
11721                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
11722                        }
11723                    }
11724
11725                    3 => {
11726                        if let Some(value) = &self.target {
11727                            ::fidl_next::wire::Envelope::encode_value::<
11728                                crate::wire::Ref<'static>,
11729                                ___E,
11730                            >(
11731                                value, preallocated.encoder, &mut out, ()
11732                            )?;
11733                        } else {
11734                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
11735                        }
11736                    }
11737
11738                    2 => {
11739                        if let Some(value) = &self.source_name {
11740                            ::fidl_next::wire::Envelope::encode_value::<
11741                                ::fidl_next::wire::String<'static>,
11742                                ___E,
11743                            >(
11744                                value, preallocated.encoder, &mut out, 100
11745                            )?;
11746                        } else {
11747                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
11748                        }
11749                    }
11750
11751                    1 => {
11752                        if let Some(value) = &self.source {
11753                            ::fidl_next::wire::Envelope::encode_value::<
11754                                crate::wire::Ref<'static>,
11755                                ___E,
11756                            >(
11757                                value, preallocated.encoder, &mut out, ()
11758                            )?;
11759                        } else {
11760                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
11761                        }
11762                    }
11763
11764                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
11765                }
11766                unsafe {
11767                    preallocated.write_next(out.assume_init_ref());
11768                }
11769            }
11770
11771            ::fidl_next::wire::Table::encode_len(table, max_ord);
11772
11773            Ok(())
11774        }
11775    }
11776
11777    impl<'de> ::fidl_next::FromWire<crate::wire::ExposeDirectory<'de>> for ExposeDirectory {
11778        #[inline]
11779        fn from_wire(wire_: crate::wire::ExposeDirectory<'de>) -> Self {
11780            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
11781
11782            let source = wire_.table.get(1);
11783
11784            let source_name = wire_.table.get(2);
11785
11786            let target = wire_.table.get(3);
11787
11788            let target_name = wire_.table.get(4);
11789
11790            let rights = wire_.table.get(5);
11791
11792            let subdir = wire_.table.get(6);
11793
11794            let availability = wire_.table.get(7);
11795
11796            let source_dictionary = wire_.table.get(8);
11797
11798            Self {
11799                source: source.map(|envelope| {
11800                    ::fidl_next::FromWire::from_wire(unsafe {
11801                        envelope.read_unchecked::<crate::wire::Ref<'de>>()
11802                    })
11803                }),
11804
11805                source_name: source_name.map(|envelope| {
11806                    ::fidl_next::FromWire::from_wire(unsafe {
11807                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
11808                    })
11809                }),
11810
11811                target: target.map(|envelope| {
11812                    ::fidl_next::FromWire::from_wire(unsafe {
11813                        envelope.read_unchecked::<crate::wire::Ref<'de>>()
11814                    })
11815                }),
11816
11817                target_name: target_name.map(|envelope| {
11818                    ::fidl_next::FromWire::from_wire(unsafe {
11819                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
11820                    })
11821                }),
11822
11823                rights: rights.map(|envelope| {
11824                    ::fidl_next::FromWire::from_wire(unsafe {
11825                        envelope.read_unchecked::<::fidl_next_common_fuchsia_io::wire::Operations>()
11826                    })
11827                }),
11828
11829                subdir: subdir.map(|envelope| {
11830                    ::fidl_next::FromWire::from_wire(unsafe {
11831                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
11832                    })
11833                }),
11834
11835                availability: availability.map(|envelope| {
11836                    ::fidl_next::FromWire::from_wire(unsafe {
11837                        envelope.read_unchecked::<crate::wire::Availability>()
11838                    })
11839                }),
11840
11841                source_dictionary: source_dictionary.map(|envelope| {
11842                    ::fidl_next::FromWire::from_wire(unsafe {
11843                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
11844                    })
11845                }),
11846            }
11847        }
11848    }
11849
11850    impl<'de> ::fidl_next::FromWireRef<crate::wire::ExposeDirectory<'de>> for ExposeDirectory {
11851        #[inline]
11852        fn from_wire_ref(wire: &crate::wire::ExposeDirectory<'de>) -> Self {
11853            Self {
11854                source: wire.table.get(1).map(|envelope| {
11855                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
11856                        envelope.deref_unchecked::<crate::wire::Ref<'de>>()
11857                    })
11858                }),
11859
11860                source_name: wire.table.get(2).map(|envelope| {
11861                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
11862                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
11863                    })
11864                }),
11865
11866                target: wire.table.get(3).map(|envelope| {
11867                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
11868                        envelope.deref_unchecked::<crate::wire::Ref<'de>>()
11869                    })
11870                }),
11871
11872                target_name: wire.table.get(4).map(|envelope| {
11873                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
11874                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
11875                    })
11876                }),
11877
11878                rights: wire.table.get(5).map(|envelope| {
11879                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
11880                        envelope
11881                            .deref_unchecked::<::fidl_next_common_fuchsia_io::wire::Operations>()
11882                    })
11883                }),
11884
11885                subdir: wire.table.get(6).map(|envelope| {
11886                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
11887                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
11888                    })
11889                }),
11890
11891                availability: wire.table.get(7).map(|envelope| {
11892                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
11893                        envelope.deref_unchecked::<crate::wire::Availability>()
11894                    })
11895                }),
11896
11897                source_dictionary: wire.table.get(8).map(|envelope| {
11898                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
11899                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
11900                    })
11901                }),
11902            }
11903        }
11904    }
11905
11906    #[doc = " Declares a runner exposed to a component\'s containing realm, such as a\n runner exposed by the component or one of its children at runtime.\n"]
11907    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
11908    pub struct ExposeRunner {
11909        pub source: ::core::option::Option<crate::natural::Ref>,
11910
11911        pub source_name: ::core::option::Option<::std::string::String>,
11912
11913        pub target: ::core::option::Option<crate::natural::Ref>,
11914
11915        pub target_name: ::core::option::Option<::std::string::String>,
11916
11917        pub source_dictionary: ::core::option::Option<::std::string::String>,
11918    }
11919
11920    impl ExposeRunner {
11921        fn __max_ordinal(&self) -> usize {
11922            if self.source_dictionary.is_some() {
11923                return 6;
11924            }
11925
11926            if self.target_name.is_some() {
11927                return 4;
11928            }
11929
11930            if self.target.is_some() {
11931                return 3;
11932            }
11933
11934            if self.source_name.is_some() {
11935                return 2;
11936            }
11937
11938            if self.source.is_some() {
11939                return 1;
11940            }
11941
11942            0
11943        }
11944    }
11945
11946    unsafe impl<___E> ::fidl_next::Encode<crate::wire::ExposeRunner<'static>, ___E> for ExposeRunner
11947    where
11948        ___E: ::fidl_next::Encoder + ?Sized,
11949    {
11950        #[inline]
11951        fn encode(
11952            mut self,
11953            encoder: &mut ___E,
11954            out: &mut ::core::mem::MaybeUninit<crate::wire::ExposeRunner<'static>>,
11955            _: (),
11956        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
11957            ::fidl_next::munge!(let crate::wire::ExposeRunner { table } = out);
11958
11959            let max_ord = self.__max_ordinal();
11960
11961            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
11962            ::fidl_next::Wire::zero_padding(&mut out);
11963
11964            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
11965                ::fidl_next::wire::Envelope,
11966            >(encoder, max_ord);
11967
11968            for i in 1..=max_ord {
11969                match i {
11970                    6 => {
11971                        if let Some(value) = self.source_dictionary.take() {
11972                            ::fidl_next::wire::Envelope::encode_value::<
11973                                ::fidl_next::wire::String<'static>,
11974                                ___E,
11975                            >(
11976                                value, preallocated.encoder, &mut out, 1024
11977                            )?;
11978                        } else {
11979                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
11980                        }
11981                    }
11982
11983                    4 => {
11984                        if let Some(value) = self.target_name.take() {
11985                            ::fidl_next::wire::Envelope::encode_value::<
11986                                ::fidl_next::wire::String<'static>,
11987                                ___E,
11988                            >(
11989                                value, preallocated.encoder, &mut out, 100
11990                            )?;
11991                        } else {
11992                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
11993                        }
11994                    }
11995
11996                    3 => {
11997                        if let Some(value) = self.target.take() {
11998                            ::fidl_next::wire::Envelope::encode_value::<
11999                                crate::wire::Ref<'static>,
12000                                ___E,
12001                            >(
12002                                value, preallocated.encoder, &mut out, ()
12003                            )?;
12004                        } else {
12005                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
12006                        }
12007                    }
12008
12009                    2 => {
12010                        if let Some(value) = self.source_name.take() {
12011                            ::fidl_next::wire::Envelope::encode_value::<
12012                                ::fidl_next::wire::String<'static>,
12013                                ___E,
12014                            >(
12015                                value, preallocated.encoder, &mut out, 100
12016                            )?;
12017                        } else {
12018                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
12019                        }
12020                    }
12021
12022                    1 => {
12023                        if let Some(value) = self.source.take() {
12024                            ::fidl_next::wire::Envelope::encode_value::<
12025                                crate::wire::Ref<'static>,
12026                                ___E,
12027                            >(
12028                                value, preallocated.encoder, &mut out, ()
12029                            )?;
12030                        } else {
12031                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
12032                        }
12033                    }
12034
12035                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
12036                }
12037                unsafe {
12038                    preallocated.write_next(out.assume_init_ref());
12039                }
12040            }
12041
12042            ::fidl_next::wire::Table::encode_len(table, max_ord);
12043
12044            Ok(())
12045        }
12046    }
12047
12048    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::ExposeRunner<'static>, ___E>
12049        for &'a ExposeRunner
12050    where
12051        ___E: ::fidl_next::Encoder + ?Sized,
12052    {
12053        #[inline]
12054        fn encode(
12055            self,
12056            encoder: &mut ___E,
12057            out: &mut ::core::mem::MaybeUninit<crate::wire::ExposeRunner<'static>>,
12058            _: (),
12059        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
12060            ::fidl_next::munge!(let crate::wire::ExposeRunner { table } = out);
12061
12062            let max_ord = self.__max_ordinal();
12063
12064            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
12065            ::fidl_next::Wire::zero_padding(&mut out);
12066
12067            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
12068                ::fidl_next::wire::Envelope,
12069            >(encoder, max_ord);
12070
12071            for i in 1..=max_ord {
12072                match i {
12073                    6 => {
12074                        if let Some(value) = &self.source_dictionary {
12075                            ::fidl_next::wire::Envelope::encode_value::<
12076                                ::fidl_next::wire::String<'static>,
12077                                ___E,
12078                            >(
12079                                value, preallocated.encoder, &mut out, 1024
12080                            )?;
12081                        } else {
12082                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
12083                        }
12084                    }
12085
12086                    4 => {
12087                        if let Some(value) = &self.target_name {
12088                            ::fidl_next::wire::Envelope::encode_value::<
12089                                ::fidl_next::wire::String<'static>,
12090                                ___E,
12091                            >(
12092                                value, preallocated.encoder, &mut out, 100
12093                            )?;
12094                        } else {
12095                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
12096                        }
12097                    }
12098
12099                    3 => {
12100                        if let Some(value) = &self.target {
12101                            ::fidl_next::wire::Envelope::encode_value::<
12102                                crate::wire::Ref<'static>,
12103                                ___E,
12104                            >(
12105                                value, preallocated.encoder, &mut out, ()
12106                            )?;
12107                        } else {
12108                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
12109                        }
12110                    }
12111
12112                    2 => {
12113                        if let Some(value) = &self.source_name {
12114                            ::fidl_next::wire::Envelope::encode_value::<
12115                                ::fidl_next::wire::String<'static>,
12116                                ___E,
12117                            >(
12118                                value, preallocated.encoder, &mut out, 100
12119                            )?;
12120                        } else {
12121                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
12122                        }
12123                    }
12124
12125                    1 => {
12126                        if let Some(value) = &self.source {
12127                            ::fidl_next::wire::Envelope::encode_value::<
12128                                crate::wire::Ref<'static>,
12129                                ___E,
12130                            >(
12131                                value, preallocated.encoder, &mut out, ()
12132                            )?;
12133                        } else {
12134                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
12135                        }
12136                    }
12137
12138                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
12139                }
12140                unsafe {
12141                    preallocated.write_next(out.assume_init_ref());
12142                }
12143            }
12144
12145            ::fidl_next::wire::Table::encode_len(table, max_ord);
12146
12147            Ok(())
12148        }
12149    }
12150
12151    impl<'de> ::fidl_next::FromWire<crate::wire::ExposeRunner<'de>> for ExposeRunner {
12152        #[inline]
12153        fn from_wire(wire_: crate::wire::ExposeRunner<'de>) -> Self {
12154            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
12155
12156            let source = wire_.table.get(1);
12157
12158            let source_name = wire_.table.get(2);
12159
12160            let target = wire_.table.get(3);
12161
12162            let target_name = wire_.table.get(4);
12163
12164            let source_dictionary = wire_.table.get(6);
12165
12166            Self {
12167                source: source.map(|envelope| {
12168                    ::fidl_next::FromWire::from_wire(unsafe {
12169                        envelope.read_unchecked::<crate::wire::Ref<'de>>()
12170                    })
12171                }),
12172
12173                source_name: source_name.map(|envelope| {
12174                    ::fidl_next::FromWire::from_wire(unsafe {
12175                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
12176                    })
12177                }),
12178
12179                target: target.map(|envelope| {
12180                    ::fidl_next::FromWire::from_wire(unsafe {
12181                        envelope.read_unchecked::<crate::wire::Ref<'de>>()
12182                    })
12183                }),
12184
12185                target_name: target_name.map(|envelope| {
12186                    ::fidl_next::FromWire::from_wire(unsafe {
12187                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
12188                    })
12189                }),
12190
12191                source_dictionary: source_dictionary.map(|envelope| {
12192                    ::fidl_next::FromWire::from_wire(unsafe {
12193                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
12194                    })
12195                }),
12196            }
12197        }
12198    }
12199
12200    impl<'de> ::fidl_next::FromWireRef<crate::wire::ExposeRunner<'de>> for ExposeRunner {
12201        #[inline]
12202        fn from_wire_ref(wire: &crate::wire::ExposeRunner<'de>) -> Self {
12203            Self {
12204                source: wire.table.get(1).map(|envelope| {
12205                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
12206                        envelope.deref_unchecked::<crate::wire::Ref<'de>>()
12207                    })
12208                }),
12209
12210                source_name: wire.table.get(2).map(|envelope| {
12211                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
12212                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
12213                    })
12214                }),
12215
12216                target: wire.table.get(3).map(|envelope| {
12217                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
12218                        envelope.deref_unchecked::<crate::wire::Ref<'de>>()
12219                    })
12220                }),
12221
12222                target_name: wire.table.get(4).map(|envelope| {
12223                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
12224                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
12225                    })
12226                }),
12227
12228                source_dictionary: wire.table.get(6).map(|envelope| {
12229                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
12230                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
12231                    })
12232                }),
12233            }
12234        }
12235    }
12236
12237    #[doc = " Declares a resolver exposed to a component\'s containing realm, such as a\n resolver exposed by the component or one of its children at runtime.\n"]
12238    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
12239    pub struct ExposeResolver {
12240        pub source: ::core::option::Option<crate::natural::Ref>,
12241
12242        pub source_name: ::core::option::Option<::std::string::String>,
12243
12244        pub target: ::core::option::Option<crate::natural::Ref>,
12245
12246        pub target_name: ::core::option::Option<::std::string::String>,
12247
12248        pub source_dictionary: ::core::option::Option<::std::string::String>,
12249    }
12250
12251    impl ExposeResolver {
12252        fn __max_ordinal(&self) -> usize {
12253            if self.source_dictionary.is_some() {
12254                return 6;
12255            }
12256
12257            if self.target_name.is_some() {
12258                return 4;
12259            }
12260
12261            if self.target.is_some() {
12262                return 3;
12263            }
12264
12265            if self.source_name.is_some() {
12266                return 2;
12267            }
12268
12269            if self.source.is_some() {
12270                return 1;
12271            }
12272
12273            0
12274        }
12275    }
12276
12277    unsafe impl<___E> ::fidl_next::Encode<crate::wire::ExposeResolver<'static>, ___E> for ExposeResolver
12278    where
12279        ___E: ::fidl_next::Encoder + ?Sized,
12280    {
12281        #[inline]
12282        fn encode(
12283            mut self,
12284            encoder: &mut ___E,
12285            out: &mut ::core::mem::MaybeUninit<crate::wire::ExposeResolver<'static>>,
12286            _: (),
12287        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
12288            ::fidl_next::munge!(let crate::wire::ExposeResolver { table } = out);
12289
12290            let max_ord = self.__max_ordinal();
12291
12292            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
12293            ::fidl_next::Wire::zero_padding(&mut out);
12294
12295            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
12296                ::fidl_next::wire::Envelope,
12297            >(encoder, max_ord);
12298
12299            for i in 1..=max_ord {
12300                match i {
12301                    6 => {
12302                        if let Some(value) = self.source_dictionary.take() {
12303                            ::fidl_next::wire::Envelope::encode_value::<
12304                                ::fidl_next::wire::String<'static>,
12305                                ___E,
12306                            >(
12307                                value, preallocated.encoder, &mut out, 1024
12308                            )?;
12309                        } else {
12310                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
12311                        }
12312                    }
12313
12314                    4 => {
12315                        if let Some(value) = self.target_name.take() {
12316                            ::fidl_next::wire::Envelope::encode_value::<
12317                                ::fidl_next::wire::String<'static>,
12318                                ___E,
12319                            >(
12320                                value, preallocated.encoder, &mut out, 100
12321                            )?;
12322                        } else {
12323                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
12324                        }
12325                    }
12326
12327                    3 => {
12328                        if let Some(value) = self.target.take() {
12329                            ::fidl_next::wire::Envelope::encode_value::<
12330                                crate::wire::Ref<'static>,
12331                                ___E,
12332                            >(
12333                                value, preallocated.encoder, &mut out, ()
12334                            )?;
12335                        } else {
12336                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
12337                        }
12338                    }
12339
12340                    2 => {
12341                        if let Some(value) = self.source_name.take() {
12342                            ::fidl_next::wire::Envelope::encode_value::<
12343                                ::fidl_next::wire::String<'static>,
12344                                ___E,
12345                            >(
12346                                value, preallocated.encoder, &mut out, 100
12347                            )?;
12348                        } else {
12349                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
12350                        }
12351                    }
12352
12353                    1 => {
12354                        if let Some(value) = self.source.take() {
12355                            ::fidl_next::wire::Envelope::encode_value::<
12356                                crate::wire::Ref<'static>,
12357                                ___E,
12358                            >(
12359                                value, preallocated.encoder, &mut out, ()
12360                            )?;
12361                        } else {
12362                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
12363                        }
12364                    }
12365
12366                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
12367                }
12368                unsafe {
12369                    preallocated.write_next(out.assume_init_ref());
12370                }
12371            }
12372
12373            ::fidl_next::wire::Table::encode_len(table, max_ord);
12374
12375            Ok(())
12376        }
12377    }
12378
12379    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::ExposeResolver<'static>, ___E>
12380        for &'a ExposeResolver
12381    where
12382        ___E: ::fidl_next::Encoder + ?Sized,
12383    {
12384        #[inline]
12385        fn encode(
12386            self,
12387            encoder: &mut ___E,
12388            out: &mut ::core::mem::MaybeUninit<crate::wire::ExposeResolver<'static>>,
12389            _: (),
12390        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
12391            ::fidl_next::munge!(let crate::wire::ExposeResolver { table } = out);
12392
12393            let max_ord = self.__max_ordinal();
12394
12395            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
12396            ::fidl_next::Wire::zero_padding(&mut out);
12397
12398            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
12399                ::fidl_next::wire::Envelope,
12400            >(encoder, max_ord);
12401
12402            for i in 1..=max_ord {
12403                match i {
12404                    6 => {
12405                        if let Some(value) = &self.source_dictionary {
12406                            ::fidl_next::wire::Envelope::encode_value::<
12407                                ::fidl_next::wire::String<'static>,
12408                                ___E,
12409                            >(
12410                                value, preallocated.encoder, &mut out, 1024
12411                            )?;
12412                        } else {
12413                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
12414                        }
12415                    }
12416
12417                    4 => {
12418                        if let Some(value) = &self.target_name {
12419                            ::fidl_next::wire::Envelope::encode_value::<
12420                                ::fidl_next::wire::String<'static>,
12421                                ___E,
12422                            >(
12423                                value, preallocated.encoder, &mut out, 100
12424                            )?;
12425                        } else {
12426                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
12427                        }
12428                    }
12429
12430                    3 => {
12431                        if let Some(value) = &self.target {
12432                            ::fidl_next::wire::Envelope::encode_value::<
12433                                crate::wire::Ref<'static>,
12434                                ___E,
12435                            >(
12436                                value, preallocated.encoder, &mut out, ()
12437                            )?;
12438                        } else {
12439                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
12440                        }
12441                    }
12442
12443                    2 => {
12444                        if let Some(value) = &self.source_name {
12445                            ::fidl_next::wire::Envelope::encode_value::<
12446                                ::fidl_next::wire::String<'static>,
12447                                ___E,
12448                            >(
12449                                value, preallocated.encoder, &mut out, 100
12450                            )?;
12451                        } else {
12452                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
12453                        }
12454                    }
12455
12456                    1 => {
12457                        if let Some(value) = &self.source {
12458                            ::fidl_next::wire::Envelope::encode_value::<
12459                                crate::wire::Ref<'static>,
12460                                ___E,
12461                            >(
12462                                value, preallocated.encoder, &mut out, ()
12463                            )?;
12464                        } else {
12465                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
12466                        }
12467                    }
12468
12469                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
12470                }
12471                unsafe {
12472                    preallocated.write_next(out.assume_init_ref());
12473                }
12474            }
12475
12476            ::fidl_next::wire::Table::encode_len(table, max_ord);
12477
12478            Ok(())
12479        }
12480    }
12481
12482    impl<'de> ::fidl_next::FromWire<crate::wire::ExposeResolver<'de>> for ExposeResolver {
12483        #[inline]
12484        fn from_wire(wire_: crate::wire::ExposeResolver<'de>) -> Self {
12485            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
12486
12487            let source = wire_.table.get(1);
12488
12489            let source_name = wire_.table.get(2);
12490
12491            let target = wire_.table.get(3);
12492
12493            let target_name = wire_.table.get(4);
12494
12495            let source_dictionary = wire_.table.get(6);
12496
12497            Self {
12498                source: source.map(|envelope| {
12499                    ::fidl_next::FromWire::from_wire(unsafe {
12500                        envelope.read_unchecked::<crate::wire::Ref<'de>>()
12501                    })
12502                }),
12503
12504                source_name: source_name.map(|envelope| {
12505                    ::fidl_next::FromWire::from_wire(unsafe {
12506                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
12507                    })
12508                }),
12509
12510                target: target.map(|envelope| {
12511                    ::fidl_next::FromWire::from_wire(unsafe {
12512                        envelope.read_unchecked::<crate::wire::Ref<'de>>()
12513                    })
12514                }),
12515
12516                target_name: target_name.map(|envelope| {
12517                    ::fidl_next::FromWire::from_wire(unsafe {
12518                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
12519                    })
12520                }),
12521
12522                source_dictionary: source_dictionary.map(|envelope| {
12523                    ::fidl_next::FromWire::from_wire(unsafe {
12524                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
12525                    })
12526                }),
12527            }
12528        }
12529    }
12530
12531    impl<'de> ::fidl_next::FromWireRef<crate::wire::ExposeResolver<'de>> for ExposeResolver {
12532        #[inline]
12533        fn from_wire_ref(wire: &crate::wire::ExposeResolver<'de>) -> Self {
12534            Self {
12535                source: wire.table.get(1).map(|envelope| {
12536                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
12537                        envelope.deref_unchecked::<crate::wire::Ref<'de>>()
12538                    })
12539                }),
12540
12541                source_name: wire.table.get(2).map(|envelope| {
12542                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
12543                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
12544                    })
12545                }),
12546
12547                target: wire.table.get(3).map(|envelope| {
12548                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
12549                        envelope.deref_unchecked::<crate::wire::Ref<'de>>()
12550                    })
12551                }),
12552
12553                target_name: wire.table.get(4).map(|envelope| {
12554                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
12555                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
12556                    })
12557                }),
12558
12559                source_dictionary: wire.table.get(6).map(|envelope| {
12560                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
12561                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
12562                    })
12563                }),
12564            }
12565        }
12566    }
12567
12568    #[doc = " Declares a dictionary exposed to a component\'s containing realm, such as\n a dictionary exposed by the component or one of its children at runtime.\n\n To learn more about dictionarys, see:\n https://fuchsia.dev/fuchsia-src/glossary#dictionary\n"]
12569    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
12570    pub struct ExposeDictionary {
12571        pub source: ::core::option::Option<crate::natural::Ref>,
12572
12573        pub source_name: ::core::option::Option<::std::string::String>,
12574
12575        pub target: ::core::option::Option<crate::natural::Ref>,
12576
12577        pub target_name: ::core::option::Option<::std::string::String>,
12578
12579        pub availability: ::core::option::Option<crate::natural::Availability>,
12580
12581        pub source_dictionary: ::core::option::Option<::std::string::String>,
12582    }
12583
12584    impl ExposeDictionary {
12585        fn __max_ordinal(&self) -> usize {
12586            if self.source_dictionary.is_some() {
12587                return 6;
12588            }
12589
12590            if self.availability.is_some() {
12591                return 5;
12592            }
12593
12594            if self.target_name.is_some() {
12595                return 4;
12596            }
12597
12598            if self.target.is_some() {
12599                return 3;
12600            }
12601
12602            if self.source_name.is_some() {
12603                return 2;
12604            }
12605
12606            if self.source.is_some() {
12607                return 1;
12608            }
12609
12610            0
12611        }
12612    }
12613
12614    unsafe impl<___E> ::fidl_next::Encode<crate::wire::ExposeDictionary<'static>, ___E>
12615        for ExposeDictionary
12616    where
12617        ___E: ::fidl_next::Encoder + ?Sized,
12618    {
12619        #[inline]
12620        fn encode(
12621            mut self,
12622            encoder: &mut ___E,
12623            out: &mut ::core::mem::MaybeUninit<crate::wire::ExposeDictionary<'static>>,
12624            _: (),
12625        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
12626            ::fidl_next::munge!(let crate::wire::ExposeDictionary { table } = out);
12627
12628            let max_ord = self.__max_ordinal();
12629
12630            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
12631            ::fidl_next::Wire::zero_padding(&mut out);
12632
12633            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
12634                ::fidl_next::wire::Envelope,
12635            >(encoder, max_ord);
12636
12637            for i in 1..=max_ord {
12638                match i {
12639                    6 => {
12640                        if let Some(value) = self.source_dictionary.take() {
12641                            ::fidl_next::wire::Envelope::encode_value::<
12642                                ::fidl_next::wire::String<'static>,
12643                                ___E,
12644                            >(
12645                                value, preallocated.encoder, &mut out, 1024
12646                            )?;
12647                        } else {
12648                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
12649                        }
12650                    }
12651
12652                    5 => {
12653                        if let Some(value) = self.availability.take() {
12654                            ::fidl_next::wire::Envelope::encode_value::<
12655                                crate::wire::Availability,
12656                                ___E,
12657                            >(
12658                                value, preallocated.encoder, &mut out, ()
12659                            )?;
12660                        } else {
12661                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
12662                        }
12663                    }
12664
12665                    4 => {
12666                        if let Some(value) = self.target_name.take() {
12667                            ::fidl_next::wire::Envelope::encode_value::<
12668                                ::fidl_next::wire::String<'static>,
12669                                ___E,
12670                            >(
12671                                value, preallocated.encoder, &mut out, 100
12672                            )?;
12673                        } else {
12674                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
12675                        }
12676                    }
12677
12678                    3 => {
12679                        if let Some(value) = self.target.take() {
12680                            ::fidl_next::wire::Envelope::encode_value::<
12681                                crate::wire::Ref<'static>,
12682                                ___E,
12683                            >(
12684                                value, preallocated.encoder, &mut out, ()
12685                            )?;
12686                        } else {
12687                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
12688                        }
12689                    }
12690
12691                    2 => {
12692                        if let Some(value) = self.source_name.take() {
12693                            ::fidl_next::wire::Envelope::encode_value::<
12694                                ::fidl_next::wire::String<'static>,
12695                                ___E,
12696                            >(
12697                                value, preallocated.encoder, &mut out, 100
12698                            )?;
12699                        } else {
12700                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
12701                        }
12702                    }
12703
12704                    1 => {
12705                        if let Some(value) = self.source.take() {
12706                            ::fidl_next::wire::Envelope::encode_value::<
12707                                crate::wire::Ref<'static>,
12708                                ___E,
12709                            >(
12710                                value, preallocated.encoder, &mut out, ()
12711                            )?;
12712                        } else {
12713                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
12714                        }
12715                    }
12716
12717                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
12718                }
12719                unsafe {
12720                    preallocated.write_next(out.assume_init_ref());
12721                }
12722            }
12723
12724            ::fidl_next::wire::Table::encode_len(table, max_ord);
12725
12726            Ok(())
12727        }
12728    }
12729
12730    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::ExposeDictionary<'static>, ___E>
12731        for &'a ExposeDictionary
12732    where
12733        ___E: ::fidl_next::Encoder + ?Sized,
12734    {
12735        #[inline]
12736        fn encode(
12737            self,
12738            encoder: &mut ___E,
12739            out: &mut ::core::mem::MaybeUninit<crate::wire::ExposeDictionary<'static>>,
12740            _: (),
12741        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
12742            ::fidl_next::munge!(let crate::wire::ExposeDictionary { table } = out);
12743
12744            let max_ord = self.__max_ordinal();
12745
12746            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
12747            ::fidl_next::Wire::zero_padding(&mut out);
12748
12749            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
12750                ::fidl_next::wire::Envelope,
12751            >(encoder, max_ord);
12752
12753            for i in 1..=max_ord {
12754                match i {
12755                    6 => {
12756                        if let Some(value) = &self.source_dictionary {
12757                            ::fidl_next::wire::Envelope::encode_value::<
12758                                ::fidl_next::wire::String<'static>,
12759                                ___E,
12760                            >(
12761                                value, preallocated.encoder, &mut out, 1024
12762                            )?;
12763                        } else {
12764                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
12765                        }
12766                    }
12767
12768                    5 => {
12769                        if let Some(value) = &self.availability {
12770                            ::fidl_next::wire::Envelope::encode_value::<
12771                                crate::wire::Availability,
12772                                ___E,
12773                            >(
12774                                value, preallocated.encoder, &mut out, ()
12775                            )?;
12776                        } else {
12777                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
12778                        }
12779                    }
12780
12781                    4 => {
12782                        if let Some(value) = &self.target_name {
12783                            ::fidl_next::wire::Envelope::encode_value::<
12784                                ::fidl_next::wire::String<'static>,
12785                                ___E,
12786                            >(
12787                                value, preallocated.encoder, &mut out, 100
12788                            )?;
12789                        } else {
12790                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
12791                        }
12792                    }
12793
12794                    3 => {
12795                        if let Some(value) = &self.target {
12796                            ::fidl_next::wire::Envelope::encode_value::<
12797                                crate::wire::Ref<'static>,
12798                                ___E,
12799                            >(
12800                                value, preallocated.encoder, &mut out, ()
12801                            )?;
12802                        } else {
12803                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
12804                        }
12805                    }
12806
12807                    2 => {
12808                        if let Some(value) = &self.source_name {
12809                            ::fidl_next::wire::Envelope::encode_value::<
12810                                ::fidl_next::wire::String<'static>,
12811                                ___E,
12812                            >(
12813                                value, preallocated.encoder, &mut out, 100
12814                            )?;
12815                        } else {
12816                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
12817                        }
12818                    }
12819
12820                    1 => {
12821                        if let Some(value) = &self.source {
12822                            ::fidl_next::wire::Envelope::encode_value::<
12823                                crate::wire::Ref<'static>,
12824                                ___E,
12825                            >(
12826                                value, preallocated.encoder, &mut out, ()
12827                            )?;
12828                        } else {
12829                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
12830                        }
12831                    }
12832
12833                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
12834                }
12835                unsafe {
12836                    preallocated.write_next(out.assume_init_ref());
12837                }
12838            }
12839
12840            ::fidl_next::wire::Table::encode_len(table, max_ord);
12841
12842            Ok(())
12843        }
12844    }
12845
12846    impl<'de> ::fidl_next::FromWire<crate::wire::ExposeDictionary<'de>> for ExposeDictionary {
12847        #[inline]
12848        fn from_wire(wire_: crate::wire::ExposeDictionary<'de>) -> Self {
12849            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
12850
12851            let source = wire_.table.get(1);
12852
12853            let source_name = wire_.table.get(2);
12854
12855            let target = wire_.table.get(3);
12856
12857            let target_name = wire_.table.get(4);
12858
12859            let availability = wire_.table.get(5);
12860
12861            let source_dictionary = wire_.table.get(6);
12862
12863            Self {
12864                source: source.map(|envelope| {
12865                    ::fidl_next::FromWire::from_wire(unsafe {
12866                        envelope.read_unchecked::<crate::wire::Ref<'de>>()
12867                    })
12868                }),
12869
12870                source_name: source_name.map(|envelope| {
12871                    ::fidl_next::FromWire::from_wire(unsafe {
12872                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
12873                    })
12874                }),
12875
12876                target: target.map(|envelope| {
12877                    ::fidl_next::FromWire::from_wire(unsafe {
12878                        envelope.read_unchecked::<crate::wire::Ref<'de>>()
12879                    })
12880                }),
12881
12882                target_name: target_name.map(|envelope| {
12883                    ::fidl_next::FromWire::from_wire(unsafe {
12884                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
12885                    })
12886                }),
12887
12888                availability: availability.map(|envelope| {
12889                    ::fidl_next::FromWire::from_wire(unsafe {
12890                        envelope.read_unchecked::<crate::wire::Availability>()
12891                    })
12892                }),
12893
12894                source_dictionary: source_dictionary.map(|envelope| {
12895                    ::fidl_next::FromWire::from_wire(unsafe {
12896                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
12897                    })
12898                }),
12899            }
12900        }
12901    }
12902
12903    impl<'de> ::fidl_next::FromWireRef<crate::wire::ExposeDictionary<'de>> for ExposeDictionary {
12904        #[inline]
12905        fn from_wire_ref(wire: &crate::wire::ExposeDictionary<'de>) -> Self {
12906            Self {
12907                source: wire.table.get(1).map(|envelope| {
12908                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
12909                        envelope.deref_unchecked::<crate::wire::Ref<'de>>()
12910                    })
12911                }),
12912
12913                source_name: wire.table.get(2).map(|envelope| {
12914                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
12915                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
12916                    })
12917                }),
12918
12919                target: wire.table.get(3).map(|envelope| {
12920                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
12921                        envelope.deref_unchecked::<crate::wire::Ref<'de>>()
12922                    })
12923                }),
12924
12925                target_name: wire.table.get(4).map(|envelope| {
12926                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
12927                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
12928                    })
12929                }),
12930
12931                availability: wire.table.get(5).map(|envelope| {
12932                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
12933                        envelope.deref_unchecked::<crate::wire::Availability>()
12934                    })
12935                }),
12936
12937                source_dictionary: wire.table.get(6).map(|envelope| {
12938                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
12939                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
12940                    })
12941                }),
12942            }
12943        }
12944    }
12945
12946    #[doc = " Declares a configuration capability exposed to a component\'s containing realm, such as\n a capability exposed by the component or one of its children at runtime.\n"]
12947    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
12948    pub struct ExposeConfiguration {
12949        pub source: ::core::option::Option<crate::natural::Ref>,
12950
12951        pub source_name: ::core::option::Option<::std::string::String>,
12952
12953        pub target: ::core::option::Option<crate::natural::Ref>,
12954
12955        pub target_name: ::core::option::Option<::std::string::String>,
12956
12957        pub availability: ::core::option::Option<crate::natural::Availability>,
12958
12959        pub source_dictionary: ::core::option::Option<::std::string::String>,
12960    }
12961
12962    impl ExposeConfiguration {
12963        fn __max_ordinal(&self) -> usize {
12964            if self.source_dictionary.is_some() {
12965                return 6;
12966            }
12967
12968            if self.availability.is_some() {
12969                return 5;
12970            }
12971
12972            if self.target_name.is_some() {
12973                return 4;
12974            }
12975
12976            if self.target.is_some() {
12977                return 3;
12978            }
12979
12980            if self.source_name.is_some() {
12981                return 2;
12982            }
12983
12984            if self.source.is_some() {
12985                return 1;
12986            }
12987
12988            0
12989        }
12990    }
12991
12992    unsafe impl<___E> ::fidl_next::Encode<crate::wire::ExposeConfiguration<'static>, ___E>
12993        for ExposeConfiguration
12994    where
12995        ___E: ::fidl_next::Encoder + ?Sized,
12996    {
12997        #[inline]
12998        fn encode(
12999            mut self,
13000            encoder: &mut ___E,
13001            out: &mut ::core::mem::MaybeUninit<crate::wire::ExposeConfiguration<'static>>,
13002            _: (),
13003        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
13004            ::fidl_next::munge!(let crate::wire::ExposeConfiguration { table } = out);
13005
13006            let max_ord = self.__max_ordinal();
13007
13008            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
13009            ::fidl_next::Wire::zero_padding(&mut out);
13010
13011            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
13012                ::fidl_next::wire::Envelope,
13013            >(encoder, max_ord);
13014
13015            for i in 1..=max_ord {
13016                match i {
13017                    6 => {
13018                        if let Some(value) = self.source_dictionary.take() {
13019                            ::fidl_next::wire::Envelope::encode_value::<
13020                                ::fidl_next::wire::String<'static>,
13021                                ___E,
13022                            >(
13023                                value, preallocated.encoder, &mut out, 1024
13024                            )?;
13025                        } else {
13026                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
13027                        }
13028                    }
13029
13030                    5 => {
13031                        if let Some(value) = self.availability.take() {
13032                            ::fidl_next::wire::Envelope::encode_value::<
13033                                crate::wire::Availability,
13034                                ___E,
13035                            >(
13036                                value, preallocated.encoder, &mut out, ()
13037                            )?;
13038                        } else {
13039                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
13040                        }
13041                    }
13042
13043                    4 => {
13044                        if let Some(value) = self.target_name.take() {
13045                            ::fidl_next::wire::Envelope::encode_value::<
13046                                ::fidl_next::wire::String<'static>,
13047                                ___E,
13048                            >(
13049                                value, preallocated.encoder, &mut out, 100
13050                            )?;
13051                        } else {
13052                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
13053                        }
13054                    }
13055
13056                    3 => {
13057                        if let Some(value) = self.target.take() {
13058                            ::fidl_next::wire::Envelope::encode_value::<
13059                                crate::wire::Ref<'static>,
13060                                ___E,
13061                            >(
13062                                value, preallocated.encoder, &mut out, ()
13063                            )?;
13064                        } else {
13065                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
13066                        }
13067                    }
13068
13069                    2 => {
13070                        if let Some(value) = self.source_name.take() {
13071                            ::fidl_next::wire::Envelope::encode_value::<
13072                                ::fidl_next::wire::String<'static>,
13073                                ___E,
13074                            >(
13075                                value, preallocated.encoder, &mut out, 100
13076                            )?;
13077                        } else {
13078                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
13079                        }
13080                    }
13081
13082                    1 => {
13083                        if let Some(value) = self.source.take() {
13084                            ::fidl_next::wire::Envelope::encode_value::<
13085                                crate::wire::Ref<'static>,
13086                                ___E,
13087                            >(
13088                                value, preallocated.encoder, &mut out, ()
13089                            )?;
13090                        } else {
13091                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
13092                        }
13093                    }
13094
13095                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
13096                }
13097                unsafe {
13098                    preallocated.write_next(out.assume_init_ref());
13099                }
13100            }
13101
13102            ::fidl_next::wire::Table::encode_len(table, max_ord);
13103
13104            Ok(())
13105        }
13106    }
13107
13108    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::ExposeConfiguration<'static>, ___E>
13109        for &'a ExposeConfiguration
13110    where
13111        ___E: ::fidl_next::Encoder + ?Sized,
13112    {
13113        #[inline]
13114        fn encode(
13115            self,
13116            encoder: &mut ___E,
13117            out: &mut ::core::mem::MaybeUninit<crate::wire::ExposeConfiguration<'static>>,
13118            _: (),
13119        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
13120            ::fidl_next::munge!(let crate::wire::ExposeConfiguration { table } = out);
13121
13122            let max_ord = self.__max_ordinal();
13123
13124            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
13125            ::fidl_next::Wire::zero_padding(&mut out);
13126
13127            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
13128                ::fidl_next::wire::Envelope,
13129            >(encoder, max_ord);
13130
13131            for i in 1..=max_ord {
13132                match i {
13133                    6 => {
13134                        if let Some(value) = &self.source_dictionary {
13135                            ::fidl_next::wire::Envelope::encode_value::<
13136                                ::fidl_next::wire::String<'static>,
13137                                ___E,
13138                            >(
13139                                value, preallocated.encoder, &mut out, 1024
13140                            )?;
13141                        } else {
13142                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
13143                        }
13144                    }
13145
13146                    5 => {
13147                        if let Some(value) = &self.availability {
13148                            ::fidl_next::wire::Envelope::encode_value::<
13149                                crate::wire::Availability,
13150                                ___E,
13151                            >(
13152                                value, preallocated.encoder, &mut out, ()
13153                            )?;
13154                        } else {
13155                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
13156                        }
13157                    }
13158
13159                    4 => {
13160                        if let Some(value) = &self.target_name {
13161                            ::fidl_next::wire::Envelope::encode_value::<
13162                                ::fidl_next::wire::String<'static>,
13163                                ___E,
13164                            >(
13165                                value, preallocated.encoder, &mut out, 100
13166                            )?;
13167                        } else {
13168                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
13169                        }
13170                    }
13171
13172                    3 => {
13173                        if let Some(value) = &self.target {
13174                            ::fidl_next::wire::Envelope::encode_value::<
13175                                crate::wire::Ref<'static>,
13176                                ___E,
13177                            >(
13178                                value, preallocated.encoder, &mut out, ()
13179                            )?;
13180                        } else {
13181                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
13182                        }
13183                    }
13184
13185                    2 => {
13186                        if let Some(value) = &self.source_name {
13187                            ::fidl_next::wire::Envelope::encode_value::<
13188                                ::fidl_next::wire::String<'static>,
13189                                ___E,
13190                            >(
13191                                value, preallocated.encoder, &mut out, 100
13192                            )?;
13193                        } else {
13194                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
13195                        }
13196                    }
13197
13198                    1 => {
13199                        if let Some(value) = &self.source {
13200                            ::fidl_next::wire::Envelope::encode_value::<
13201                                crate::wire::Ref<'static>,
13202                                ___E,
13203                            >(
13204                                value, preallocated.encoder, &mut out, ()
13205                            )?;
13206                        } else {
13207                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
13208                        }
13209                    }
13210
13211                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
13212                }
13213                unsafe {
13214                    preallocated.write_next(out.assume_init_ref());
13215                }
13216            }
13217
13218            ::fidl_next::wire::Table::encode_len(table, max_ord);
13219
13220            Ok(())
13221        }
13222    }
13223
13224    impl<'de> ::fidl_next::FromWire<crate::wire::ExposeConfiguration<'de>> for ExposeConfiguration {
13225        #[inline]
13226        fn from_wire(wire_: crate::wire::ExposeConfiguration<'de>) -> Self {
13227            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
13228
13229            let source = wire_.table.get(1);
13230
13231            let source_name = wire_.table.get(2);
13232
13233            let target = wire_.table.get(3);
13234
13235            let target_name = wire_.table.get(4);
13236
13237            let availability = wire_.table.get(5);
13238
13239            let source_dictionary = wire_.table.get(6);
13240
13241            Self {
13242                source: source.map(|envelope| {
13243                    ::fidl_next::FromWire::from_wire(unsafe {
13244                        envelope.read_unchecked::<crate::wire::Ref<'de>>()
13245                    })
13246                }),
13247
13248                source_name: source_name.map(|envelope| {
13249                    ::fidl_next::FromWire::from_wire(unsafe {
13250                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
13251                    })
13252                }),
13253
13254                target: target.map(|envelope| {
13255                    ::fidl_next::FromWire::from_wire(unsafe {
13256                        envelope.read_unchecked::<crate::wire::Ref<'de>>()
13257                    })
13258                }),
13259
13260                target_name: target_name.map(|envelope| {
13261                    ::fidl_next::FromWire::from_wire(unsafe {
13262                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
13263                    })
13264                }),
13265
13266                availability: availability.map(|envelope| {
13267                    ::fidl_next::FromWire::from_wire(unsafe {
13268                        envelope.read_unchecked::<crate::wire::Availability>()
13269                    })
13270                }),
13271
13272                source_dictionary: source_dictionary.map(|envelope| {
13273                    ::fidl_next::FromWire::from_wire(unsafe {
13274                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
13275                    })
13276                }),
13277            }
13278        }
13279    }
13280
13281    impl<'de> ::fidl_next::FromWireRef<crate::wire::ExposeConfiguration<'de>> for ExposeConfiguration {
13282        #[inline]
13283        fn from_wire_ref(wire: &crate::wire::ExposeConfiguration<'de>) -> Self {
13284            Self {
13285                source: wire.table.get(1).map(|envelope| {
13286                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
13287                        envelope.deref_unchecked::<crate::wire::Ref<'de>>()
13288                    })
13289                }),
13290
13291                source_name: wire.table.get(2).map(|envelope| {
13292                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
13293                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
13294                    })
13295                }),
13296
13297                target: wire.table.get(3).map(|envelope| {
13298                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
13299                        envelope.deref_unchecked::<crate::wire::Ref<'de>>()
13300                    })
13301                }),
13302
13303                target_name: wire.table.get(4).map(|envelope| {
13304                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
13305                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
13306                    })
13307                }),
13308
13309                availability: wire.table.get(5).map(|envelope| {
13310                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
13311                        envelope.deref_unchecked::<crate::wire::Availability>()
13312                    })
13313                }),
13314
13315                source_dictionary: wire.table.get(6).map(|envelope| {
13316                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
13317                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
13318                    })
13319                }),
13320            }
13321        }
13322    }
13323
13324    #[doc = " Declares a capability exposed to either a component\'s containing realm or to\n the framework. For example, a legacy service exposed by the component at\n runtime.\n"]
13325    #[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
13326    pub enum Expose {
13327        Service(crate::natural::ExposeService),
13328
13329        Protocol(crate::natural::ExposeProtocol),
13330
13331        Directory(crate::natural::ExposeDirectory),
13332
13333        Runner(crate::natural::ExposeRunner),
13334
13335        Resolver(crate::natural::ExposeResolver),
13336
13337        Dictionary(crate::natural::ExposeDictionary),
13338
13339        Config(crate::natural::ExposeConfiguration),
13340
13341        UnknownOrdinal_(u64),
13342    }
13343
13344    impl Expose {
13345        pub fn is_unknown(&self) -> bool {
13346            #[allow(unreachable_patterns)]
13347            match self {
13348                Self::UnknownOrdinal_(_) => true,
13349                _ => false,
13350            }
13351        }
13352    }
13353
13354    unsafe impl<___E> ::fidl_next::Encode<crate::wire::Expose<'static>, ___E> for Expose
13355    where
13356        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
13357        ___E: ::fidl_next::Encoder,
13358    {
13359        #[inline]
13360        fn encode(
13361            self,
13362            encoder: &mut ___E,
13363            out: &mut ::core::mem::MaybeUninit<crate::wire::Expose<'static>>,
13364            _: (),
13365        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
13366            ::fidl_next::munge!(let crate::wire::Expose { raw, _phantom: _ } = out);
13367
13368            match self {
13369                Self::Service(value) => ::fidl_next::wire::Union::encode_as::<
13370                    ___E,
13371                    crate::wire::ExposeService<'static>,
13372                >(value, 1, encoder, raw, ())?,
13373
13374                Self::Protocol(value) => ::fidl_next::wire::Union::encode_as::<
13375                    ___E,
13376                    crate::wire::ExposeProtocol<'static>,
13377                >(value, 2, encoder, raw, ())?,
13378
13379                Self::Directory(value) => ::fidl_next::wire::Union::encode_as::<
13380                    ___E,
13381                    crate::wire::ExposeDirectory<'static>,
13382                >(value, 3, encoder, raw, ())?,
13383
13384                Self::Runner(value) => ::fidl_next::wire::Union::encode_as::<
13385                    ___E,
13386                    crate::wire::ExposeRunner<'static>,
13387                >(value, 4, encoder, raw, ())?,
13388
13389                Self::Resolver(value) => ::fidl_next::wire::Union::encode_as::<
13390                    ___E,
13391                    crate::wire::ExposeResolver<'static>,
13392                >(value, 5, encoder, raw, ())?,
13393
13394                Self::Dictionary(value) => ::fidl_next::wire::Union::encode_as::<
13395                    ___E,
13396                    crate::wire::ExposeDictionary<'static>,
13397                >(value, 7, encoder, raw, ())?,
13398
13399                Self::Config(value) => ::fidl_next::wire::Union::encode_as::<
13400                    ___E,
13401                    crate::wire::ExposeConfiguration<'static>,
13402                >(value, 8, encoder, raw, ())?,
13403
13404                Self::UnknownOrdinal_(ordinal) => {
13405                    return Err(::fidl_next::EncodeError::UnknownUnionOrdinal(ordinal as usize));
13406                }
13407            }
13408
13409            Ok(())
13410        }
13411    }
13412
13413    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::Expose<'static>, ___E> for &'a Expose
13414    where
13415        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
13416        ___E: ::fidl_next::Encoder,
13417    {
13418        #[inline]
13419        fn encode(
13420            self,
13421            encoder: &mut ___E,
13422            out: &mut ::core::mem::MaybeUninit<crate::wire::Expose<'static>>,
13423            _: (),
13424        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
13425            ::fidl_next::munge!(let crate::wire::Expose { raw, _phantom: _ } = out);
13426
13427            match self {
13428                Expose::Service(value) => ::fidl_next::wire::Union::encode_as::<
13429                    ___E,
13430                    crate::wire::ExposeService<'static>,
13431                >(value, 1, encoder, raw, ())?,
13432
13433                Expose::Protocol(value) => ::fidl_next::wire::Union::encode_as::<
13434                    ___E,
13435                    crate::wire::ExposeProtocol<'static>,
13436                >(value, 2, encoder, raw, ())?,
13437
13438                Expose::Directory(value) => ::fidl_next::wire::Union::encode_as::<
13439                    ___E,
13440                    crate::wire::ExposeDirectory<'static>,
13441                >(value, 3, encoder, raw, ())?,
13442
13443                Expose::Runner(value) => ::fidl_next::wire::Union::encode_as::<
13444                    ___E,
13445                    crate::wire::ExposeRunner<'static>,
13446                >(value, 4, encoder, raw, ())?,
13447
13448                Expose::Resolver(value) => ::fidl_next::wire::Union::encode_as::<
13449                    ___E,
13450                    crate::wire::ExposeResolver<'static>,
13451                >(value, 5, encoder, raw, ())?,
13452
13453                Expose::Dictionary(value) => ::fidl_next::wire::Union::encode_as::<
13454                    ___E,
13455                    crate::wire::ExposeDictionary<'static>,
13456                >(value, 7, encoder, raw, ())?,
13457
13458                Expose::Config(value) => ::fidl_next::wire::Union::encode_as::<
13459                    ___E,
13460                    crate::wire::ExposeConfiguration<'static>,
13461                >(value, 8, encoder, raw, ())?,
13462
13463                Expose::UnknownOrdinal_(ordinal) => {
13464                    return Err(::fidl_next::EncodeError::UnknownUnionOrdinal(*ordinal as usize));
13465                }
13466            }
13467
13468            Ok(())
13469        }
13470    }
13471
13472    unsafe impl<___E> ::fidl_next::EncodeOption<crate::wire_optional::Expose<'static>, ___E> for Expose
13473    where
13474        ___E: ?Sized,
13475        Expose: ::fidl_next::Encode<crate::wire::Expose<'static>, ___E>,
13476    {
13477        #[inline]
13478        fn encode_option(
13479            this: ::core::option::Option<Self>,
13480            encoder: &mut ___E,
13481            out: &mut ::core::mem::MaybeUninit<crate::wire_optional::Expose<'static>>,
13482            _: (),
13483        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
13484            ::fidl_next::munge!(let crate::wire_optional::Expose { raw, _phantom: _ } = &mut *out);
13485
13486            if let Some(inner) = this {
13487                let value_out = unsafe { &mut *out.as_mut_ptr().cast() };
13488                ::fidl_next::Encode::encode(inner, encoder, value_out, ())?;
13489            } else {
13490                ::fidl_next::wire::Union::encode_absent(raw);
13491            }
13492
13493            Ok(())
13494        }
13495    }
13496
13497    unsafe impl<'a, ___E> ::fidl_next::EncodeOption<crate::wire_optional::Expose<'static>, ___E>
13498        for &'a Expose
13499    where
13500        ___E: ?Sized,
13501        &'a Expose: ::fidl_next::Encode<crate::wire::Expose<'static>, ___E>,
13502    {
13503        #[inline]
13504        fn encode_option(
13505            this: ::core::option::Option<Self>,
13506            encoder: &mut ___E,
13507            out: &mut ::core::mem::MaybeUninit<crate::wire_optional::Expose<'static>>,
13508            _: (),
13509        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
13510            ::fidl_next::munge!(let crate::wire_optional::Expose { raw, _phantom: _ } = &mut *out);
13511
13512            if let Some(inner) = this {
13513                let value_out = unsafe { &mut *out.as_mut_ptr().cast() };
13514                ::fidl_next::Encode::encode(inner, encoder, value_out, ())?;
13515            } else {
13516                ::fidl_next::wire::Union::encode_absent(raw);
13517            }
13518
13519            Ok(())
13520        }
13521    }
13522
13523    impl<'de> ::fidl_next::FromWire<crate::wire::Expose<'de>> for Expose {
13524        #[inline]
13525        fn from_wire(wire: crate::wire::Expose<'de>) -> Self {
13526            let wire = ::core::mem::ManuallyDrop::new(wire);
13527            match wire.raw.ordinal() {
13528                1 => Self::Service(::fidl_next::FromWire::from_wire(unsafe {
13529                    wire.raw.get().read_unchecked::<crate::wire::ExposeService<'de>>()
13530                })),
13531
13532                2 => Self::Protocol(::fidl_next::FromWire::from_wire(unsafe {
13533                    wire.raw.get().read_unchecked::<crate::wire::ExposeProtocol<'de>>()
13534                })),
13535
13536                3 => Self::Directory(::fidl_next::FromWire::from_wire(unsafe {
13537                    wire.raw.get().read_unchecked::<crate::wire::ExposeDirectory<'de>>()
13538                })),
13539
13540                4 => Self::Runner(::fidl_next::FromWire::from_wire(unsafe {
13541                    wire.raw.get().read_unchecked::<crate::wire::ExposeRunner<'de>>()
13542                })),
13543
13544                5 => Self::Resolver(::fidl_next::FromWire::from_wire(unsafe {
13545                    wire.raw.get().read_unchecked::<crate::wire::ExposeResolver<'de>>()
13546                })),
13547
13548                7 => Self::Dictionary(::fidl_next::FromWire::from_wire(unsafe {
13549                    wire.raw.get().read_unchecked::<crate::wire::ExposeDictionary<'de>>()
13550                })),
13551
13552                8 => Self::Config(::fidl_next::FromWire::from_wire(unsafe {
13553                    wire.raw.get().read_unchecked::<crate::wire::ExposeConfiguration<'de>>()
13554                })),
13555
13556                ord => return Self::UnknownOrdinal_(ord as u64),
13557            }
13558        }
13559    }
13560
13561    impl<'de> ::fidl_next::FromWireRef<crate::wire::Expose<'de>> for Expose {
13562        #[inline]
13563        fn from_wire_ref(wire: &crate::wire::Expose<'de>) -> Self {
13564            match wire.raw.ordinal() {
13565                1 => Self::Service(::fidl_next::FromWireRef::from_wire_ref(unsafe {
13566                    wire.raw.get().deref_unchecked::<crate::wire::ExposeService<'de>>()
13567                })),
13568
13569                2 => Self::Protocol(::fidl_next::FromWireRef::from_wire_ref(unsafe {
13570                    wire.raw.get().deref_unchecked::<crate::wire::ExposeProtocol<'de>>()
13571                })),
13572
13573                3 => Self::Directory(::fidl_next::FromWireRef::from_wire_ref(unsafe {
13574                    wire.raw.get().deref_unchecked::<crate::wire::ExposeDirectory<'de>>()
13575                })),
13576
13577                4 => Self::Runner(::fidl_next::FromWireRef::from_wire_ref(unsafe {
13578                    wire.raw.get().deref_unchecked::<crate::wire::ExposeRunner<'de>>()
13579                })),
13580
13581                5 => Self::Resolver(::fidl_next::FromWireRef::from_wire_ref(unsafe {
13582                    wire.raw.get().deref_unchecked::<crate::wire::ExposeResolver<'de>>()
13583                })),
13584
13585                7 => Self::Dictionary(::fidl_next::FromWireRef::from_wire_ref(unsafe {
13586                    wire.raw.get().deref_unchecked::<crate::wire::ExposeDictionary<'de>>()
13587                })),
13588
13589                8 => Self::Config(::fidl_next::FromWireRef::from_wire_ref(unsafe {
13590                    wire.raw.get().deref_unchecked::<crate::wire::ExposeConfiguration<'de>>()
13591                })),
13592
13593                ord => return Self::UnknownOrdinal_(ord as u64),
13594            }
13595        }
13596    }
13597
13598    impl<'de> ::fidl_next::FromWireOption<crate::wire_optional::Expose<'de>> for Expose {
13599        #[inline]
13600        fn from_wire_option(
13601            wire: crate::wire_optional::Expose<'de>,
13602        ) -> ::core::option::Option<Self> {
13603            if let Some(inner) = wire.into_option() {
13604                Some(::fidl_next::FromWire::from_wire(inner))
13605            } else {
13606                None
13607            }
13608        }
13609    }
13610
13611    impl<'de> ::fidl_next::FromWireOption<crate::wire_optional::Expose<'de>> for Box<Expose> {
13612        #[inline]
13613        fn from_wire_option(
13614            wire: crate::wire_optional::Expose<'de>,
13615        ) -> ::core::option::Option<Self> {
13616            <
13617            Expose as ::fidl_next::FromWireOption<crate::wire_optional::Expose<'de>>
13618        >::from_wire_option(wire).map(Box::new)
13619        }
13620    }
13621
13622    impl<'de> ::fidl_next::FromWireOptionRef<crate::wire_optional::Expose<'de>> for Box<Expose> {
13623        #[inline]
13624        fn from_wire_option_ref(
13625            wire: &crate::wire_optional::Expose<'de>,
13626        ) -> ::core::option::Option<Self> {
13627            if let Some(inner) = wire.as_ref() {
13628                Some(Box::new(::fidl_next::FromWireRef::from_wire_ref(inner)))
13629            } else {
13630                None
13631            }
13632        }
13633    }
13634
13635    #[doc = " Declares a service offered by a component to one of its children, which may\n have been offered by the component\'s containing realm, the component itself,\n or one of its other children.\n\n To learn more about services, see:\n https://fuchsia.dev/fuchsia-src/glossary#service\n"]
13636    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
13637    pub struct OfferService {
13638        pub source: ::core::option::Option<crate::natural::Ref>,
13639
13640        pub source_name: ::core::option::Option<::std::string::String>,
13641
13642        pub target: ::core::option::Option<crate::natural::Ref>,
13643
13644        pub target_name: ::core::option::Option<::std::string::String>,
13645
13646        pub source_instance_filter: ::core::option::Option<::std::vec::Vec<::std::string::String>>,
13647
13648        pub renamed_instances: ::core::option::Option<::std::vec::Vec<crate::natural::NameMapping>>,
13649
13650        pub availability: ::core::option::Option<crate::natural::Availability>,
13651
13652        pub source_dictionary: ::core::option::Option<::std::string::String>,
13653
13654        pub dependency_type: ::core::option::Option<crate::natural::DependencyType>,
13655    }
13656
13657    impl OfferService {
13658        fn __max_ordinal(&self) -> usize {
13659            if self.dependency_type.is_some() {
13660                return 9;
13661            }
13662
13663            if self.source_dictionary.is_some() {
13664                return 8;
13665            }
13666
13667            if self.availability.is_some() {
13668                return 7;
13669            }
13670
13671            if self.renamed_instances.is_some() {
13672                return 6;
13673            }
13674
13675            if self.source_instance_filter.is_some() {
13676                return 5;
13677            }
13678
13679            if self.target_name.is_some() {
13680                return 4;
13681            }
13682
13683            if self.target.is_some() {
13684                return 3;
13685            }
13686
13687            if self.source_name.is_some() {
13688                return 2;
13689            }
13690
13691            if self.source.is_some() {
13692                return 1;
13693            }
13694
13695            0
13696        }
13697    }
13698
13699    unsafe impl<___E> ::fidl_next::Encode<crate::wire::OfferService<'static>, ___E> for OfferService
13700    where
13701        ___E: ::fidl_next::Encoder + ?Sized,
13702    {
13703        #[inline]
13704        fn encode(
13705            mut self,
13706            encoder: &mut ___E,
13707            out: &mut ::core::mem::MaybeUninit<crate::wire::OfferService<'static>>,
13708            _: (),
13709        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
13710            ::fidl_next::munge!(let crate::wire::OfferService { table } = out);
13711
13712            let max_ord = self.__max_ordinal();
13713
13714            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
13715            ::fidl_next::Wire::zero_padding(&mut out);
13716
13717            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
13718                ::fidl_next::wire::Envelope,
13719            >(encoder, max_ord);
13720
13721            for i in 1..=max_ord {
13722                match i {
13723                    9 => {
13724                        if let Some(value) = self.dependency_type.take() {
13725                            ::fidl_next::wire::Envelope::encode_value::<
13726                                crate::wire::DependencyType,
13727                                ___E,
13728                            >(
13729                                value, preallocated.encoder, &mut out, ()
13730                            )?;
13731                        } else {
13732                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
13733                        }
13734                    }
13735
13736                    8 => {
13737                        if let Some(value) = self.source_dictionary.take() {
13738                            ::fidl_next::wire::Envelope::encode_value::<
13739                                ::fidl_next::wire::String<'static>,
13740                                ___E,
13741                            >(
13742                                value, preallocated.encoder, &mut out, 1024
13743                            )?;
13744                        } else {
13745                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
13746                        }
13747                    }
13748
13749                    7 => {
13750                        if let Some(value) = self.availability.take() {
13751                            ::fidl_next::wire::Envelope::encode_value::<
13752                                crate::wire::Availability,
13753                                ___E,
13754                            >(
13755                                value, preallocated.encoder, &mut out, ()
13756                            )?;
13757                        } else {
13758                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
13759                        }
13760                    }
13761
13762                    6 => {
13763                        if let Some(value) = self.renamed_instances.take() {
13764                            ::fidl_next::wire::Envelope::encode_value::<
13765                                ::fidl_next::wire::Vector<
13766                                    'static,
13767                                    crate::wire::NameMapping<'static>,
13768                                >,
13769                                ___E,
13770                            >(
13771                                value, preallocated.encoder, &mut out, (4294967295, ())
13772                            )?;
13773                        } else {
13774                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
13775                        }
13776                    }
13777
13778                    5 => {
13779                        if let Some(value) = self.source_instance_filter.take() {
13780                            ::fidl_next::wire::Envelope::encode_value::<
13781                                ::fidl_next::wire::Vector<
13782                                    'static,
13783                                    ::fidl_next::wire::String<'static>,
13784                                >,
13785                                ___E,
13786                            >(
13787                                value, preallocated.encoder, &mut out, (4294967295, 100)
13788                            )?;
13789                        } else {
13790                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
13791                        }
13792                    }
13793
13794                    4 => {
13795                        if let Some(value) = self.target_name.take() {
13796                            ::fidl_next::wire::Envelope::encode_value::<
13797                                ::fidl_next::wire::String<'static>,
13798                                ___E,
13799                            >(
13800                                value, preallocated.encoder, &mut out, 100
13801                            )?;
13802                        } else {
13803                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
13804                        }
13805                    }
13806
13807                    3 => {
13808                        if let Some(value) = self.target.take() {
13809                            ::fidl_next::wire::Envelope::encode_value::<
13810                                crate::wire::Ref<'static>,
13811                                ___E,
13812                            >(
13813                                value, preallocated.encoder, &mut out, ()
13814                            )?;
13815                        } else {
13816                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
13817                        }
13818                    }
13819
13820                    2 => {
13821                        if let Some(value) = self.source_name.take() {
13822                            ::fidl_next::wire::Envelope::encode_value::<
13823                                ::fidl_next::wire::String<'static>,
13824                                ___E,
13825                            >(
13826                                value, preallocated.encoder, &mut out, 100
13827                            )?;
13828                        } else {
13829                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
13830                        }
13831                    }
13832
13833                    1 => {
13834                        if let Some(value) = self.source.take() {
13835                            ::fidl_next::wire::Envelope::encode_value::<
13836                                crate::wire::Ref<'static>,
13837                                ___E,
13838                            >(
13839                                value, preallocated.encoder, &mut out, ()
13840                            )?;
13841                        } else {
13842                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
13843                        }
13844                    }
13845
13846                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
13847                }
13848                unsafe {
13849                    preallocated.write_next(out.assume_init_ref());
13850                }
13851            }
13852
13853            ::fidl_next::wire::Table::encode_len(table, max_ord);
13854
13855            Ok(())
13856        }
13857    }
13858
13859    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::OfferService<'static>, ___E>
13860        for &'a OfferService
13861    where
13862        ___E: ::fidl_next::Encoder + ?Sized,
13863    {
13864        #[inline]
13865        fn encode(
13866            self,
13867            encoder: &mut ___E,
13868            out: &mut ::core::mem::MaybeUninit<crate::wire::OfferService<'static>>,
13869            _: (),
13870        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
13871            ::fidl_next::munge!(let crate::wire::OfferService { table } = out);
13872
13873            let max_ord = self.__max_ordinal();
13874
13875            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
13876            ::fidl_next::Wire::zero_padding(&mut out);
13877
13878            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
13879                ::fidl_next::wire::Envelope,
13880            >(encoder, max_ord);
13881
13882            for i in 1..=max_ord {
13883                match i {
13884                    9 => {
13885                        if let Some(value) = &self.dependency_type {
13886                            ::fidl_next::wire::Envelope::encode_value::<
13887                                crate::wire::DependencyType,
13888                                ___E,
13889                            >(
13890                                value, preallocated.encoder, &mut out, ()
13891                            )?;
13892                        } else {
13893                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
13894                        }
13895                    }
13896
13897                    8 => {
13898                        if let Some(value) = &self.source_dictionary {
13899                            ::fidl_next::wire::Envelope::encode_value::<
13900                                ::fidl_next::wire::String<'static>,
13901                                ___E,
13902                            >(
13903                                value, preallocated.encoder, &mut out, 1024
13904                            )?;
13905                        } else {
13906                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
13907                        }
13908                    }
13909
13910                    7 => {
13911                        if let Some(value) = &self.availability {
13912                            ::fidl_next::wire::Envelope::encode_value::<
13913                                crate::wire::Availability,
13914                                ___E,
13915                            >(
13916                                value, preallocated.encoder, &mut out, ()
13917                            )?;
13918                        } else {
13919                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
13920                        }
13921                    }
13922
13923                    6 => {
13924                        if let Some(value) = &self.renamed_instances {
13925                            ::fidl_next::wire::Envelope::encode_value::<
13926                                ::fidl_next::wire::Vector<
13927                                    'static,
13928                                    crate::wire::NameMapping<'static>,
13929                                >,
13930                                ___E,
13931                            >(
13932                                value, preallocated.encoder, &mut out, (4294967295, ())
13933                            )?;
13934                        } else {
13935                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
13936                        }
13937                    }
13938
13939                    5 => {
13940                        if let Some(value) = &self.source_instance_filter {
13941                            ::fidl_next::wire::Envelope::encode_value::<
13942                                ::fidl_next::wire::Vector<
13943                                    'static,
13944                                    ::fidl_next::wire::String<'static>,
13945                                >,
13946                                ___E,
13947                            >(
13948                                value, preallocated.encoder, &mut out, (4294967295, 100)
13949                            )?;
13950                        } else {
13951                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
13952                        }
13953                    }
13954
13955                    4 => {
13956                        if let Some(value) = &self.target_name {
13957                            ::fidl_next::wire::Envelope::encode_value::<
13958                                ::fidl_next::wire::String<'static>,
13959                                ___E,
13960                            >(
13961                                value, preallocated.encoder, &mut out, 100
13962                            )?;
13963                        } else {
13964                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
13965                        }
13966                    }
13967
13968                    3 => {
13969                        if let Some(value) = &self.target {
13970                            ::fidl_next::wire::Envelope::encode_value::<
13971                                crate::wire::Ref<'static>,
13972                                ___E,
13973                            >(
13974                                value, preallocated.encoder, &mut out, ()
13975                            )?;
13976                        } else {
13977                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
13978                        }
13979                    }
13980
13981                    2 => {
13982                        if let Some(value) = &self.source_name {
13983                            ::fidl_next::wire::Envelope::encode_value::<
13984                                ::fidl_next::wire::String<'static>,
13985                                ___E,
13986                            >(
13987                                value, preallocated.encoder, &mut out, 100
13988                            )?;
13989                        } else {
13990                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
13991                        }
13992                    }
13993
13994                    1 => {
13995                        if let Some(value) = &self.source {
13996                            ::fidl_next::wire::Envelope::encode_value::<
13997                                crate::wire::Ref<'static>,
13998                                ___E,
13999                            >(
14000                                value, preallocated.encoder, &mut out, ()
14001                            )?;
14002                        } else {
14003                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
14004                        }
14005                    }
14006
14007                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
14008                }
14009                unsafe {
14010                    preallocated.write_next(out.assume_init_ref());
14011                }
14012            }
14013
14014            ::fidl_next::wire::Table::encode_len(table, max_ord);
14015
14016            Ok(())
14017        }
14018    }
14019
14020    impl<'de> ::fidl_next::FromWire<crate::wire::OfferService<'de>> for OfferService {
14021        #[inline]
14022        fn from_wire(wire_: crate::wire::OfferService<'de>) -> Self {
14023            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
14024
14025            let source = wire_.table.get(1);
14026
14027            let source_name = wire_.table.get(2);
14028
14029            let target = wire_.table.get(3);
14030
14031            let target_name = wire_.table.get(4);
14032
14033            let source_instance_filter = wire_.table.get(5);
14034
14035            let renamed_instances = wire_.table.get(6);
14036
14037            let availability = wire_.table.get(7);
14038
14039            let source_dictionary = wire_.table.get(8);
14040
14041            let dependency_type = wire_.table.get(9);
14042
14043            Self {
14044
14045
14046                source: source.map(|envelope| ::fidl_next::FromWire::from_wire(
14047                    unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() }
14048                )),
14049
14050
14051                source_name: source_name.map(|envelope| ::fidl_next::FromWire::from_wire(
14052                    unsafe { envelope.read_unchecked::<::fidl_next::wire::String<'de>>() }
14053                )),
14054
14055
14056                target: target.map(|envelope| ::fidl_next::FromWire::from_wire(
14057                    unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() }
14058                )),
14059
14060
14061                target_name: target_name.map(|envelope| ::fidl_next::FromWire::from_wire(
14062                    unsafe { envelope.read_unchecked::<::fidl_next::wire::String<'de>>() }
14063                )),
14064
14065
14066                source_instance_filter: source_instance_filter.map(|envelope| ::fidl_next::FromWire::from_wire(
14067                    unsafe { envelope.read_unchecked::<::fidl_next::wire::Vector<'de, ::fidl_next::wire::String<'de>>>() }
14068                )),
14069
14070
14071                renamed_instances: renamed_instances.map(|envelope| ::fidl_next::FromWire::from_wire(
14072                    unsafe { envelope.read_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::NameMapping<'de>>>() }
14073                )),
14074
14075
14076                availability: availability.map(|envelope| ::fidl_next::FromWire::from_wire(
14077                    unsafe { envelope.read_unchecked::<crate::wire::Availability>() }
14078                )),
14079
14080
14081                source_dictionary: source_dictionary.map(|envelope| ::fidl_next::FromWire::from_wire(
14082                    unsafe { envelope.read_unchecked::<::fidl_next::wire::String<'de>>() }
14083                )),
14084
14085
14086                dependency_type: dependency_type.map(|envelope| ::fidl_next::FromWire::from_wire(
14087                    unsafe { envelope.read_unchecked::<crate::wire::DependencyType>() }
14088                )),
14089
14090        }
14091        }
14092    }
14093
14094    impl<'de> ::fidl_next::FromWireRef<crate::wire::OfferService<'de>> for OfferService {
14095        #[inline]
14096        fn from_wire_ref(wire: &crate::wire::OfferService<'de>) -> Self {
14097            Self {
14098
14099
14100                source: wire.table.get(1)
14101                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
14102                        unsafe { envelope.deref_unchecked::<crate::wire::Ref<'de>>() }
14103                    )),
14104
14105
14106                source_name: wire.table.get(2)
14107                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
14108                        unsafe { envelope.deref_unchecked::<::fidl_next::wire::String<'de>>() }
14109                    )),
14110
14111
14112                target: wire.table.get(3)
14113                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
14114                        unsafe { envelope.deref_unchecked::<crate::wire::Ref<'de>>() }
14115                    )),
14116
14117
14118                target_name: wire.table.get(4)
14119                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
14120                        unsafe { envelope.deref_unchecked::<::fidl_next::wire::String<'de>>() }
14121                    )),
14122
14123
14124                source_instance_filter: wire.table.get(5)
14125                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
14126                        unsafe { envelope.deref_unchecked::<::fidl_next::wire::Vector<'de, ::fidl_next::wire::String<'de>>>() }
14127                    )),
14128
14129
14130                renamed_instances: wire.table.get(6)
14131                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
14132                        unsafe { envelope.deref_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::NameMapping<'de>>>() }
14133                    )),
14134
14135
14136                availability: wire.table.get(7)
14137                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
14138                        unsafe { envelope.deref_unchecked::<crate::wire::Availability>() }
14139                    )),
14140
14141
14142                source_dictionary: wire.table.get(8)
14143                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
14144                        unsafe { envelope.deref_unchecked::<::fidl_next::wire::String<'de>>() }
14145                    )),
14146
14147
14148                dependency_type: wire.table.get(9)
14149                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
14150                        unsafe { envelope.deref_unchecked::<crate::wire::DependencyType>() }
14151                    )),
14152
14153        }
14154        }
14155    }
14156
14157    #[doc = " Declares a protocol offered by a component to one of its children,\n which may have been offered by the component\'s containing realm, the\n component itself, or one of its other children.\n\n To learn more about protocols, see:\n https://fuchsia.dev/fuchsia-src/glossary#protocol\n"]
14158    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
14159    pub struct OfferProtocol {
14160        pub source: ::core::option::Option<crate::natural::Ref>,
14161
14162        pub source_name: ::core::option::Option<::std::string::String>,
14163
14164        pub target: ::core::option::Option<crate::natural::Ref>,
14165
14166        pub target_name: ::core::option::Option<::std::string::String>,
14167
14168        pub dependency_type: ::core::option::Option<crate::natural::DependencyType>,
14169
14170        pub availability: ::core::option::Option<crate::natural::Availability>,
14171
14172        pub source_dictionary: ::core::option::Option<::std::string::String>,
14173    }
14174
14175    impl OfferProtocol {
14176        fn __max_ordinal(&self) -> usize {
14177            if self.source_dictionary.is_some() {
14178                return 7;
14179            }
14180
14181            if self.availability.is_some() {
14182                return 6;
14183            }
14184
14185            if self.dependency_type.is_some() {
14186                return 5;
14187            }
14188
14189            if self.target_name.is_some() {
14190                return 4;
14191            }
14192
14193            if self.target.is_some() {
14194                return 3;
14195            }
14196
14197            if self.source_name.is_some() {
14198                return 2;
14199            }
14200
14201            if self.source.is_some() {
14202                return 1;
14203            }
14204
14205            0
14206        }
14207    }
14208
14209    unsafe impl<___E> ::fidl_next::Encode<crate::wire::OfferProtocol<'static>, ___E> for OfferProtocol
14210    where
14211        ___E: ::fidl_next::Encoder + ?Sized,
14212    {
14213        #[inline]
14214        fn encode(
14215            mut self,
14216            encoder: &mut ___E,
14217            out: &mut ::core::mem::MaybeUninit<crate::wire::OfferProtocol<'static>>,
14218            _: (),
14219        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
14220            ::fidl_next::munge!(let crate::wire::OfferProtocol { table } = out);
14221
14222            let max_ord = self.__max_ordinal();
14223
14224            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
14225            ::fidl_next::Wire::zero_padding(&mut out);
14226
14227            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
14228                ::fidl_next::wire::Envelope,
14229            >(encoder, max_ord);
14230
14231            for i in 1..=max_ord {
14232                match i {
14233                    7 => {
14234                        if let Some(value) = self.source_dictionary.take() {
14235                            ::fidl_next::wire::Envelope::encode_value::<
14236                                ::fidl_next::wire::String<'static>,
14237                                ___E,
14238                            >(
14239                                value, preallocated.encoder, &mut out, 1024
14240                            )?;
14241                        } else {
14242                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
14243                        }
14244                    }
14245
14246                    6 => {
14247                        if let Some(value) = self.availability.take() {
14248                            ::fidl_next::wire::Envelope::encode_value::<
14249                                crate::wire::Availability,
14250                                ___E,
14251                            >(
14252                                value, preallocated.encoder, &mut out, ()
14253                            )?;
14254                        } else {
14255                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
14256                        }
14257                    }
14258
14259                    5 => {
14260                        if let Some(value) = self.dependency_type.take() {
14261                            ::fidl_next::wire::Envelope::encode_value::<
14262                                crate::wire::DependencyType,
14263                                ___E,
14264                            >(
14265                                value, preallocated.encoder, &mut out, ()
14266                            )?;
14267                        } else {
14268                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
14269                        }
14270                    }
14271
14272                    4 => {
14273                        if let Some(value) = self.target_name.take() {
14274                            ::fidl_next::wire::Envelope::encode_value::<
14275                                ::fidl_next::wire::String<'static>,
14276                                ___E,
14277                            >(
14278                                value, preallocated.encoder, &mut out, 100
14279                            )?;
14280                        } else {
14281                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
14282                        }
14283                    }
14284
14285                    3 => {
14286                        if let Some(value) = self.target.take() {
14287                            ::fidl_next::wire::Envelope::encode_value::<
14288                                crate::wire::Ref<'static>,
14289                                ___E,
14290                            >(
14291                                value, preallocated.encoder, &mut out, ()
14292                            )?;
14293                        } else {
14294                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
14295                        }
14296                    }
14297
14298                    2 => {
14299                        if let Some(value) = self.source_name.take() {
14300                            ::fidl_next::wire::Envelope::encode_value::<
14301                                ::fidl_next::wire::String<'static>,
14302                                ___E,
14303                            >(
14304                                value, preallocated.encoder, &mut out, 100
14305                            )?;
14306                        } else {
14307                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
14308                        }
14309                    }
14310
14311                    1 => {
14312                        if let Some(value) = self.source.take() {
14313                            ::fidl_next::wire::Envelope::encode_value::<
14314                                crate::wire::Ref<'static>,
14315                                ___E,
14316                            >(
14317                                value, preallocated.encoder, &mut out, ()
14318                            )?;
14319                        } else {
14320                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
14321                        }
14322                    }
14323
14324                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
14325                }
14326                unsafe {
14327                    preallocated.write_next(out.assume_init_ref());
14328                }
14329            }
14330
14331            ::fidl_next::wire::Table::encode_len(table, max_ord);
14332
14333            Ok(())
14334        }
14335    }
14336
14337    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::OfferProtocol<'static>, ___E>
14338        for &'a OfferProtocol
14339    where
14340        ___E: ::fidl_next::Encoder + ?Sized,
14341    {
14342        #[inline]
14343        fn encode(
14344            self,
14345            encoder: &mut ___E,
14346            out: &mut ::core::mem::MaybeUninit<crate::wire::OfferProtocol<'static>>,
14347            _: (),
14348        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
14349            ::fidl_next::munge!(let crate::wire::OfferProtocol { table } = out);
14350
14351            let max_ord = self.__max_ordinal();
14352
14353            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
14354            ::fidl_next::Wire::zero_padding(&mut out);
14355
14356            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
14357                ::fidl_next::wire::Envelope,
14358            >(encoder, max_ord);
14359
14360            for i in 1..=max_ord {
14361                match i {
14362                    7 => {
14363                        if let Some(value) = &self.source_dictionary {
14364                            ::fidl_next::wire::Envelope::encode_value::<
14365                                ::fidl_next::wire::String<'static>,
14366                                ___E,
14367                            >(
14368                                value, preallocated.encoder, &mut out, 1024
14369                            )?;
14370                        } else {
14371                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
14372                        }
14373                    }
14374
14375                    6 => {
14376                        if let Some(value) = &self.availability {
14377                            ::fidl_next::wire::Envelope::encode_value::<
14378                                crate::wire::Availability,
14379                                ___E,
14380                            >(
14381                                value, preallocated.encoder, &mut out, ()
14382                            )?;
14383                        } else {
14384                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
14385                        }
14386                    }
14387
14388                    5 => {
14389                        if let Some(value) = &self.dependency_type {
14390                            ::fidl_next::wire::Envelope::encode_value::<
14391                                crate::wire::DependencyType,
14392                                ___E,
14393                            >(
14394                                value, preallocated.encoder, &mut out, ()
14395                            )?;
14396                        } else {
14397                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
14398                        }
14399                    }
14400
14401                    4 => {
14402                        if let Some(value) = &self.target_name {
14403                            ::fidl_next::wire::Envelope::encode_value::<
14404                                ::fidl_next::wire::String<'static>,
14405                                ___E,
14406                            >(
14407                                value, preallocated.encoder, &mut out, 100
14408                            )?;
14409                        } else {
14410                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
14411                        }
14412                    }
14413
14414                    3 => {
14415                        if let Some(value) = &self.target {
14416                            ::fidl_next::wire::Envelope::encode_value::<
14417                                crate::wire::Ref<'static>,
14418                                ___E,
14419                            >(
14420                                value, preallocated.encoder, &mut out, ()
14421                            )?;
14422                        } else {
14423                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
14424                        }
14425                    }
14426
14427                    2 => {
14428                        if let Some(value) = &self.source_name {
14429                            ::fidl_next::wire::Envelope::encode_value::<
14430                                ::fidl_next::wire::String<'static>,
14431                                ___E,
14432                            >(
14433                                value, preallocated.encoder, &mut out, 100
14434                            )?;
14435                        } else {
14436                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
14437                        }
14438                    }
14439
14440                    1 => {
14441                        if let Some(value) = &self.source {
14442                            ::fidl_next::wire::Envelope::encode_value::<
14443                                crate::wire::Ref<'static>,
14444                                ___E,
14445                            >(
14446                                value, preallocated.encoder, &mut out, ()
14447                            )?;
14448                        } else {
14449                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
14450                        }
14451                    }
14452
14453                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
14454                }
14455                unsafe {
14456                    preallocated.write_next(out.assume_init_ref());
14457                }
14458            }
14459
14460            ::fidl_next::wire::Table::encode_len(table, max_ord);
14461
14462            Ok(())
14463        }
14464    }
14465
14466    impl<'de> ::fidl_next::FromWire<crate::wire::OfferProtocol<'de>> for OfferProtocol {
14467        #[inline]
14468        fn from_wire(wire_: crate::wire::OfferProtocol<'de>) -> Self {
14469            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
14470
14471            let source = wire_.table.get(1);
14472
14473            let source_name = wire_.table.get(2);
14474
14475            let target = wire_.table.get(3);
14476
14477            let target_name = wire_.table.get(4);
14478
14479            let dependency_type = wire_.table.get(5);
14480
14481            let availability = wire_.table.get(6);
14482
14483            let source_dictionary = wire_.table.get(7);
14484
14485            Self {
14486                source: source.map(|envelope| {
14487                    ::fidl_next::FromWire::from_wire(unsafe {
14488                        envelope.read_unchecked::<crate::wire::Ref<'de>>()
14489                    })
14490                }),
14491
14492                source_name: source_name.map(|envelope| {
14493                    ::fidl_next::FromWire::from_wire(unsafe {
14494                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
14495                    })
14496                }),
14497
14498                target: target.map(|envelope| {
14499                    ::fidl_next::FromWire::from_wire(unsafe {
14500                        envelope.read_unchecked::<crate::wire::Ref<'de>>()
14501                    })
14502                }),
14503
14504                target_name: target_name.map(|envelope| {
14505                    ::fidl_next::FromWire::from_wire(unsafe {
14506                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
14507                    })
14508                }),
14509
14510                dependency_type: dependency_type.map(|envelope| {
14511                    ::fidl_next::FromWire::from_wire(unsafe {
14512                        envelope.read_unchecked::<crate::wire::DependencyType>()
14513                    })
14514                }),
14515
14516                availability: availability.map(|envelope| {
14517                    ::fidl_next::FromWire::from_wire(unsafe {
14518                        envelope.read_unchecked::<crate::wire::Availability>()
14519                    })
14520                }),
14521
14522                source_dictionary: source_dictionary.map(|envelope| {
14523                    ::fidl_next::FromWire::from_wire(unsafe {
14524                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
14525                    })
14526                }),
14527            }
14528        }
14529    }
14530
14531    impl<'de> ::fidl_next::FromWireRef<crate::wire::OfferProtocol<'de>> for OfferProtocol {
14532        #[inline]
14533        fn from_wire_ref(wire: &crate::wire::OfferProtocol<'de>) -> Self {
14534            Self {
14535                source: wire.table.get(1).map(|envelope| {
14536                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
14537                        envelope.deref_unchecked::<crate::wire::Ref<'de>>()
14538                    })
14539                }),
14540
14541                source_name: wire.table.get(2).map(|envelope| {
14542                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
14543                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
14544                    })
14545                }),
14546
14547                target: wire.table.get(3).map(|envelope| {
14548                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
14549                        envelope.deref_unchecked::<crate::wire::Ref<'de>>()
14550                    })
14551                }),
14552
14553                target_name: wire.table.get(4).map(|envelope| {
14554                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
14555                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
14556                    })
14557                }),
14558
14559                dependency_type: wire.table.get(5).map(|envelope| {
14560                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
14561                        envelope.deref_unchecked::<crate::wire::DependencyType>()
14562                    })
14563                }),
14564
14565                availability: wire.table.get(6).map(|envelope| {
14566                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
14567                        envelope.deref_unchecked::<crate::wire::Availability>()
14568                    })
14569                }),
14570
14571                source_dictionary: wire.table.get(7).map(|envelope| {
14572                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
14573                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
14574                    })
14575                }),
14576            }
14577        }
14578    }
14579
14580    #[doc = " Declares a directory offered by a component to one of its children, which\n may have been offered by the component\'s containing realm, the component\n itself, or one of its other children.\n"]
14581    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
14582    pub struct OfferDirectory {
14583        pub source: ::core::option::Option<crate::natural::Ref>,
14584
14585        pub source_name: ::core::option::Option<::std::string::String>,
14586
14587        pub target: ::core::option::Option<crate::natural::Ref>,
14588
14589        pub target_name: ::core::option::Option<::std::string::String>,
14590
14591        pub rights: ::core::option::Option<::fidl_next_common_fuchsia_io::natural::Operations>,
14592
14593        pub subdir: ::core::option::Option<::std::string::String>,
14594
14595        pub dependency_type: ::core::option::Option<crate::natural::DependencyType>,
14596
14597        pub availability: ::core::option::Option<crate::natural::Availability>,
14598
14599        pub source_dictionary: ::core::option::Option<::std::string::String>,
14600    }
14601
14602    impl OfferDirectory {
14603        fn __max_ordinal(&self) -> usize {
14604            if self.source_dictionary.is_some() {
14605                return 9;
14606            }
14607
14608            if self.availability.is_some() {
14609                return 8;
14610            }
14611
14612            if self.dependency_type.is_some() {
14613                return 7;
14614            }
14615
14616            if self.subdir.is_some() {
14617                return 6;
14618            }
14619
14620            if self.rights.is_some() {
14621                return 5;
14622            }
14623
14624            if self.target_name.is_some() {
14625                return 4;
14626            }
14627
14628            if self.target.is_some() {
14629                return 3;
14630            }
14631
14632            if self.source_name.is_some() {
14633                return 2;
14634            }
14635
14636            if self.source.is_some() {
14637                return 1;
14638            }
14639
14640            0
14641        }
14642    }
14643
14644    unsafe impl<___E> ::fidl_next::Encode<crate::wire::OfferDirectory<'static>, ___E> for OfferDirectory
14645    where
14646        ___E: ::fidl_next::Encoder + ?Sized,
14647    {
14648        #[inline]
14649        fn encode(
14650            mut self,
14651            encoder: &mut ___E,
14652            out: &mut ::core::mem::MaybeUninit<crate::wire::OfferDirectory<'static>>,
14653            _: (),
14654        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
14655            ::fidl_next::munge!(let crate::wire::OfferDirectory { table } = out);
14656
14657            let max_ord = self.__max_ordinal();
14658
14659            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
14660            ::fidl_next::Wire::zero_padding(&mut out);
14661
14662            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
14663                ::fidl_next::wire::Envelope,
14664            >(encoder, max_ord);
14665
14666            for i in 1..=max_ord {
14667                match i {
14668                    9 => {
14669                        if let Some(value) = self.source_dictionary.take() {
14670                            ::fidl_next::wire::Envelope::encode_value::<
14671                                ::fidl_next::wire::String<'static>,
14672                                ___E,
14673                            >(
14674                                value, preallocated.encoder, &mut out, 1024
14675                            )?;
14676                        } else {
14677                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
14678                        }
14679                    }
14680
14681                    8 => {
14682                        if let Some(value) = self.availability.take() {
14683                            ::fidl_next::wire::Envelope::encode_value::<
14684                                crate::wire::Availability,
14685                                ___E,
14686                            >(
14687                                value, preallocated.encoder, &mut out, ()
14688                            )?;
14689                        } else {
14690                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
14691                        }
14692                    }
14693
14694                    7 => {
14695                        if let Some(value) = self.dependency_type.take() {
14696                            ::fidl_next::wire::Envelope::encode_value::<
14697                                crate::wire::DependencyType,
14698                                ___E,
14699                            >(
14700                                value, preallocated.encoder, &mut out, ()
14701                            )?;
14702                        } else {
14703                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
14704                        }
14705                    }
14706
14707                    6 => {
14708                        if let Some(value) = self.subdir.take() {
14709                            ::fidl_next::wire::Envelope::encode_value::<
14710                                ::fidl_next::wire::String<'static>,
14711                                ___E,
14712                            >(
14713                                value, preallocated.encoder, &mut out, 1024
14714                            )?;
14715                        } else {
14716                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
14717                        }
14718                    }
14719
14720                    5 => {
14721                        if let Some(value) = self.rights.take() {
14722                            ::fidl_next::wire::Envelope::encode_value::<
14723                                ::fidl_next_common_fuchsia_io::wire::Operations,
14724                                ___E,
14725                            >(
14726                                value, preallocated.encoder, &mut out, ()
14727                            )?;
14728                        } else {
14729                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
14730                        }
14731                    }
14732
14733                    4 => {
14734                        if let Some(value) = self.target_name.take() {
14735                            ::fidl_next::wire::Envelope::encode_value::<
14736                                ::fidl_next::wire::String<'static>,
14737                                ___E,
14738                            >(
14739                                value, preallocated.encoder, &mut out, 100
14740                            )?;
14741                        } else {
14742                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
14743                        }
14744                    }
14745
14746                    3 => {
14747                        if let Some(value) = self.target.take() {
14748                            ::fidl_next::wire::Envelope::encode_value::<
14749                                crate::wire::Ref<'static>,
14750                                ___E,
14751                            >(
14752                                value, preallocated.encoder, &mut out, ()
14753                            )?;
14754                        } else {
14755                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
14756                        }
14757                    }
14758
14759                    2 => {
14760                        if let Some(value) = self.source_name.take() {
14761                            ::fidl_next::wire::Envelope::encode_value::<
14762                                ::fidl_next::wire::String<'static>,
14763                                ___E,
14764                            >(
14765                                value, preallocated.encoder, &mut out, 100
14766                            )?;
14767                        } else {
14768                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
14769                        }
14770                    }
14771
14772                    1 => {
14773                        if let Some(value) = self.source.take() {
14774                            ::fidl_next::wire::Envelope::encode_value::<
14775                                crate::wire::Ref<'static>,
14776                                ___E,
14777                            >(
14778                                value, preallocated.encoder, &mut out, ()
14779                            )?;
14780                        } else {
14781                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
14782                        }
14783                    }
14784
14785                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
14786                }
14787                unsafe {
14788                    preallocated.write_next(out.assume_init_ref());
14789                }
14790            }
14791
14792            ::fidl_next::wire::Table::encode_len(table, max_ord);
14793
14794            Ok(())
14795        }
14796    }
14797
14798    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::OfferDirectory<'static>, ___E>
14799        for &'a OfferDirectory
14800    where
14801        ___E: ::fidl_next::Encoder + ?Sized,
14802    {
14803        #[inline]
14804        fn encode(
14805            self,
14806            encoder: &mut ___E,
14807            out: &mut ::core::mem::MaybeUninit<crate::wire::OfferDirectory<'static>>,
14808            _: (),
14809        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
14810            ::fidl_next::munge!(let crate::wire::OfferDirectory { table } = out);
14811
14812            let max_ord = self.__max_ordinal();
14813
14814            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
14815            ::fidl_next::Wire::zero_padding(&mut out);
14816
14817            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
14818                ::fidl_next::wire::Envelope,
14819            >(encoder, max_ord);
14820
14821            for i in 1..=max_ord {
14822                match i {
14823                    9 => {
14824                        if let Some(value) = &self.source_dictionary {
14825                            ::fidl_next::wire::Envelope::encode_value::<
14826                                ::fidl_next::wire::String<'static>,
14827                                ___E,
14828                            >(
14829                                value, preallocated.encoder, &mut out, 1024
14830                            )?;
14831                        } else {
14832                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
14833                        }
14834                    }
14835
14836                    8 => {
14837                        if let Some(value) = &self.availability {
14838                            ::fidl_next::wire::Envelope::encode_value::<
14839                                crate::wire::Availability,
14840                                ___E,
14841                            >(
14842                                value, preallocated.encoder, &mut out, ()
14843                            )?;
14844                        } else {
14845                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
14846                        }
14847                    }
14848
14849                    7 => {
14850                        if let Some(value) = &self.dependency_type {
14851                            ::fidl_next::wire::Envelope::encode_value::<
14852                                crate::wire::DependencyType,
14853                                ___E,
14854                            >(
14855                                value, preallocated.encoder, &mut out, ()
14856                            )?;
14857                        } else {
14858                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
14859                        }
14860                    }
14861
14862                    6 => {
14863                        if let Some(value) = &self.subdir {
14864                            ::fidl_next::wire::Envelope::encode_value::<
14865                                ::fidl_next::wire::String<'static>,
14866                                ___E,
14867                            >(
14868                                value, preallocated.encoder, &mut out, 1024
14869                            )?;
14870                        } else {
14871                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
14872                        }
14873                    }
14874
14875                    5 => {
14876                        if let Some(value) = &self.rights {
14877                            ::fidl_next::wire::Envelope::encode_value::<
14878                                ::fidl_next_common_fuchsia_io::wire::Operations,
14879                                ___E,
14880                            >(
14881                                value, preallocated.encoder, &mut out, ()
14882                            )?;
14883                        } else {
14884                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
14885                        }
14886                    }
14887
14888                    4 => {
14889                        if let Some(value) = &self.target_name {
14890                            ::fidl_next::wire::Envelope::encode_value::<
14891                                ::fidl_next::wire::String<'static>,
14892                                ___E,
14893                            >(
14894                                value, preallocated.encoder, &mut out, 100
14895                            )?;
14896                        } else {
14897                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
14898                        }
14899                    }
14900
14901                    3 => {
14902                        if let Some(value) = &self.target {
14903                            ::fidl_next::wire::Envelope::encode_value::<
14904                                crate::wire::Ref<'static>,
14905                                ___E,
14906                            >(
14907                                value, preallocated.encoder, &mut out, ()
14908                            )?;
14909                        } else {
14910                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
14911                        }
14912                    }
14913
14914                    2 => {
14915                        if let Some(value) = &self.source_name {
14916                            ::fidl_next::wire::Envelope::encode_value::<
14917                                ::fidl_next::wire::String<'static>,
14918                                ___E,
14919                            >(
14920                                value, preallocated.encoder, &mut out, 100
14921                            )?;
14922                        } else {
14923                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
14924                        }
14925                    }
14926
14927                    1 => {
14928                        if let Some(value) = &self.source {
14929                            ::fidl_next::wire::Envelope::encode_value::<
14930                                crate::wire::Ref<'static>,
14931                                ___E,
14932                            >(
14933                                value, preallocated.encoder, &mut out, ()
14934                            )?;
14935                        } else {
14936                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
14937                        }
14938                    }
14939
14940                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
14941                }
14942                unsafe {
14943                    preallocated.write_next(out.assume_init_ref());
14944                }
14945            }
14946
14947            ::fidl_next::wire::Table::encode_len(table, max_ord);
14948
14949            Ok(())
14950        }
14951    }
14952
14953    impl<'de> ::fidl_next::FromWire<crate::wire::OfferDirectory<'de>> for OfferDirectory {
14954        #[inline]
14955        fn from_wire(wire_: crate::wire::OfferDirectory<'de>) -> Self {
14956            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
14957
14958            let source = wire_.table.get(1);
14959
14960            let source_name = wire_.table.get(2);
14961
14962            let target = wire_.table.get(3);
14963
14964            let target_name = wire_.table.get(4);
14965
14966            let rights = wire_.table.get(5);
14967
14968            let subdir = wire_.table.get(6);
14969
14970            let dependency_type = wire_.table.get(7);
14971
14972            let availability = wire_.table.get(8);
14973
14974            let source_dictionary = wire_.table.get(9);
14975
14976            Self {
14977                source: source.map(|envelope| {
14978                    ::fidl_next::FromWire::from_wire(unsafe {
14979                        envelope.read_unchecked::<crate::wire::Ref<'de>>()
14980                    })
14981                }),
14982
14983                source_name: source_name.map(|envelope| {
14984                    ::fidl_next::FromWire::from_wire(unsafe {
14985                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
14986                    })
14987                }),
14988
14989                target: target.map(|envelope| {
14990                    ::fidl_next::FromWire::from_wire(unsafe {
14991                        envelope.read_unchecked::<crate::wire::Ref<'de>>()
14992                    })
14993                }),
14994
14995                target_name: target_name.map(|envelope| {
14996                    ::fidl_next::FromWire::from_wire(unsafe {
14997                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
14998                    })
14999                }),
15000
15001                rights: rights.map(|envelope| {
15002                    ::fidl_next::FromWire::from_wire(unsafe {
15003                        envelope.read_unchecked::<::fidl_next_common_fuchsia_io::wire::Operations>()
15004                    })
15005                }),
15006
15007                subdir: subdir.map(|envelope| {
15008                    ::fidl_next::FromWire::from_wire(unsafe {
15009                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
15010                    })
15011                }),
15012
15013                dependency_type: dependency_type.map(|envelope| {
15014                    ::fidl_next::FromWire::from_wire(unsafe {
15015                        envelope.read_unchecked::<crate::wire::DependencyType>()
15016                    })
15017                }),
15018
15019                availability: availability.map(|envelope| {
15020                    ::fidl_next::FromWire::from_wire(unsafe {
15021                        envelope.read_unchecked::<crate::wire::Availability>()
15022                    })
15023                }),
15024
15025                source_dictionary: source_dictionary.map(|envelope| {
15026                    ::fidl_next::FromWire::from_wire(unsafe {
15027                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
15028                    })
15029                }),
15030            }
15031        }
15032    }
15033
15034    impl<'de> ::fidl_next::FromWireRef<crate::wire::OfferDirectory<'de>> for OfferDirectory {
15035        #[inline]
15036        fn from_wire_ref(wire: &crate::wire::OfferDirectory<'de>) -> Self {
15037            Self {
15038                source: wire.table.get(1).map(|envelope| {
15039                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
15040                        envelope.deref_unchecked::<crate::wire::Ref<'de>>()
15041                    })
15042                }),
15043
15044                source_name: wire.table.get(2).map(|envelope| {
15045                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
15046                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
15047                    })
15048                }),
15049
15050                target: wire.table.get(3).map(|envelope| {
15051                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
15052                        envelope.deref_unchecked::<crate::wire::Ref<'de>>()
15053                    })
15054                }),
15055
15056                target_name: wire.table.get(4).map(|envelope| {
15057                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
15058                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
15059                    })
15060                }),
15061
15062                rights: wire.table.get(5).map(|envelope| {
15063                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
15064                        envelope
15065                            .deref_unchecked::<::fidl_next_common_fuchsia_io::wire::Operations>()
15066                    })
15067                }),
15068
15069                subdir: wire.table.get(6).map(|envelope| {
15070                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
15071                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
15072                    })
15073                }),
15074
15075                dependency_type: wire.table.get(7).map(|envelope| {
15076                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
15077                        envelope.deref_unchecked::<crate::wire::DependencyType>()
15078                    })
15079                }),
15080
15081                availability: wire.table.get(8).map(|envelope| {
15082                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
15083                        envelope.deref_unchecked::<crate::wire::Availability>()
15084                    })
15085                }),
15086
15087                source_dictionary: wire.table.get(9).map(|envelope| {
15088                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
15089                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
15090                    })
15091                }),
15092            }
15093        }
15094    }
15095
15096    #[doc = " Declares a storage capability offered by a component to one of its children,\n such as meta storage offered by the component\'s containing realm or cache\n storage offered by the component itself.\n"]
15097    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
15098    pub struct OfferStorage {
15099        pub source_name: ::core::option::Option<::std::string::String>,
15100
15101        pub source: ::core::option::Option<crate::natural::Ref>,
15102
15103        pub target: ::core::option::Option<crate::natural::Ref>,
15104
15105        pub target_name: ::core::option::Option<::std::string::String>,
15106
15107        pub availability: ::core::option::Option<crate::natural::Availability>,
15108    }
15109
15110    impl OfferStorage {
15111        fn __max_ordinal(&self) -> usize {
15112            if self.availability.is_some() {
15113                return 5;
15114            }
15115
15116            if self.target_name.is_some() {
15117                return 4;
15118            }
15119
15120            if self.target.is_some() {
15121                return 3;
15122            }
15123
15124            if self.source.is_some() {
15125                return 2;
15126            }
15127
15128            if self.source_name.is_some() {
15129                return 1;
15130            }
15131
15132            0
15133        }
15134    }
15135
15136    unsafe impl<___E> ::fidl_next::Encode<crate::wire::OfferStorage<'static>, ___E> for OfferStorage
15137    where
15138        ___E: ::fidl_next::Encoder + ?Sized,
15139    {
15140        #[inline]
15141        fn encode(
15142            mut self,
15143            encoder: &mut ___E,
15144            out: &mut ::core::mem::MaybeUninit<crate::wire::OfferStorage<'static>>,
15145            _: (),
15146        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
15147            ::fidl_next::munge!(let crate::wire::OfferStorage { table } = out);
15148
15149            let max_ord = self.__max_ordinal();
15150
15151            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
15152            ::fidl_next::Wire::zero_padding(&mut out);
15153
15154            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
15155                ::fidl_next::wire::Envelope,
15156            >(encoder, max_ord);
15157
15158            for i in 1..=max_ord {
15159                match i {
15160                    5 => {
15161                        if let Some(value) = self.availability.take() {
15162                            ::fidl_next::wire::Envelope::encode_value::<
15163                                crate::wire::Availability,
15164                                ___E,
15165                            >(
15166                                value, preallocated.encoder, &mut out, ()
15167                            )?;
15168                        } else {
15169                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
15170                        }
15171                    }
15172
15173                    4 => {
15174                        if let Some(value) = self.target_name.take() {
15175                            ::fidl_next::wire::Envelope::encode_value::<
15176                                ::fidl_next::wire::String<'static>,
15177                                ___E,
15178                            >(
15179                                value, preallocated.encoder, &mut out, 100
15180                            )?;
15181                        } else {
15182                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
15183                        }
15184                    }
15185
15186                    3 => {
15187                        if let Some(value) = self.target.take() {
15188                            ::fidl_next::wire::Envelope::encode_value::<
15189                                crate::wire::Ref<'static>,
15190                                ___E,
15191                            >(
15192                                value, preallocated.encoder, &mut out, ()
15193                            )?;
15194                        } else {
15195                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
15196                        }
15197                    }
15198
15199                    2 => {
15200                        if let Some(value) = self.source.take() {
15201                            ::fidl_next::wire::Envelope::encode_value::<
15202                                crate::wire::Ref<'static>,
15203                                ___E,
15204                            >(
15205                                value, preallocated.encoder, &mut out, ()
15206                            )?;
15207                        } else {
15208                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
15209                        }
15210                    }
15211
15212                    1 => {
15213                        if let Some(value) = self.source_name.take() {
15214                            ::fidl_next::wire::Envelope::encode_value::<
15215                                ::fidl_next::wire::String<'static>,
15216                                ___E,
15217                            >(
15218                                value, preallocated.encoder, &mut out, 100
15219                            )?;
15220                        } else {
15221                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
15222                        }
15223                    }
15224
15225                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
15226                }
15227                unsafe {
15228                    preallocated.write_next(out.assume_init_ref());
15229                }
15230            }
15231
15232            ::fidl_next::wire::Table::encode_len(table, max_ord);
15233
15234            Ok(())
15235        }
15236    }
15237
15238    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::OfferStorage<'static>, ___E>
15239        for &'a OfferStorage
15240    where
15241        ___E: ::fidl_next::Encoder + ?Sized,
15242    {
15243        #[inline]
15244        fn encode(
15245            self,
15246            encoder: &mut ___E,
15247            out: &mut ::core::mem::MaybeUninit<crate::wire::OfferStorage<'static>>,
15248            _: (),
15249        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
15250            ::fidl_next::munge!(let crate::wire::OfferStorage { table } = out);
15251
15252            let max_ord = self.__max_ordinal();
15253
15254            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
15255            ::fidl_next::Wire::zero_padding(&mut out);
15256
15257            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
15258                ::fidl_next::wire::Envelope,
15259            >(encoder, max_ord);
15260
15261            for i in 1..=max_ord {
15262                match i {
15263                    5 => {
15264                        if let Some(value) = &self.availability {
15265                            ::fidl_next::wire::Envelope::encode_value::<
15266                                crate::wire::Availability,
15267                                ___E,
15268                            >(
15269                                value, preallocated.encoder, &mut out, ()
15270                            )?;
15271                        } else {
15272                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
15273                        }
15274                    }
15275
15276                    4 => {
15277                        if let Some(value) = &self.target_name {
15278                            ::fidl_next::wire::Envelope::encode_value::<
15279                                ::fidl_next::wire::String<'static>,
15280                                ___E,
15281                            >(
15282                                value, preallocated.encoder, &mut out, 100
15283                            )?;
15284                        } else {
15285                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
15286                        }
15287                    }
15288
15289                    3 => {
15290                        if let Some(value) = &self.target {
15291                            ::fidl_next::wire::Envelope::encode_value::<
15292                                crate::wire::Ref<'static>,
15293                                ___E,
15294                            >(
15295                                value, preallocated.encoder, &mut out, ()
15296                            )?;
15297                        } else {
15298                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
15299                        }
15300                    }
15301
15302                    2 => {
15303                        if let Some(value) = &self.source {
15304                            ::fidl_next::wire::Envelope::encode_value::<
15305                                crate::wire::Ref<'static>,
15306                                ___E,
15307                            >(
15308                                value, preallocated.encoder, &mut out, ()
15309                            )?;
15310                        } else {
15311                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
15312                        }
15313                    }
15314
15315                    1 => {
15316                        if let Some(value) = &self.source_name {
15317                            ::fidl_next::wire::Envelope::encode_value::<
15318                                ::fidl_next::wire::String<'static>,
15319                                ___E,
15320                            >(
15321                                value, preallocated.encoder, &mut out, 100
15322                            )?;
15323                        } else {
15324                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
15325                        }
15326                    }
15327
15328                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
15329                }
15330                unsafe {
15331                    preallocated.write_next(out.assume_init_ref());
15332                }
15333            }
15334
15335            ::fidl_next::wire::Table::encode_len(table, max_ord);
15336
15337            Ok(())
15338        }
15339    }
15340
15341    impl<'de> ::fidl_next::FromWire<crate::wire::OfferStorage<'de>> for OfferStorage {
15342        #[inline]
15343        fn from_wire(wire_: crate::wire::OfferStorage<'de>) -> Self {
15344            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
15345
15346            let source_name = wire_.table.get(1);
15347
15348            let source = wire_.table.get(2);
15349
15350            let target = wire_.table.get(3);
15351
15352            let target_name = wire_.table.get(4);
15353
15354            let availability = wire_.table.get(5);
15355
15356            Self {
15357                source_name: source_name.map(|envelope| {
15358                    ::fidl_next::FromWire::from_wire(unsafe {
15359                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
15360                    })
15361                }),
15362
15363                source: source.map(|envelope| {
15364                    ::fidl_next::FromWire::from_wire(unsafe {
15365                        envelope.read_unchecked::<crate::wire::Ref<'de>>()
15366                    })
15367                }),
15368
15369                target: target.map(|envelope| {
15370                    ::fidl_next::FromWire::from_wire(unsafe {
15371                        envelope.read_unchecked::<crate::wire::Ref<'de>>()
15372                    })
15373                }),
15374
15375                target_name: target_name.map(|envelope| {
15376                    ::fidl_next::FromWire::from_wire(unsafe {
15377                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
15378                    })
15379                }),
15380
15381                availability: availability.map(|envelope| {
15382                    ::fidl_next::FromWire::from_wire(unsafe {
15383                        envelope.read_unchecked::<crate::wire::Availability>()
15384                    })
15385                }),
15386            }
15387        }
15388    }
15389
15390    impl<'de> ::fidl_next::FromWireRef<crate::wire::OfferStorage<'de>> for OfferStorage {
15391        #[inline]
15392        fn from_wire_ref(wire: &crate::wire::OfferStorage<'de>) -> Self {
15393            Self {
15394                source_name: wire.table.get(1).map(|envelope| {
15395                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
15396                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
15397                    })
15398                }),
15399
15400                source: wire.table.get(2).map(|envelope| {
15401                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
15402                        envelope.deref_unchecked::<crate::wire::Ref<'de>>()
15403                    })
15404                }),
15405
15406                target: wire.table.get(3).map(|envelope| {
15407                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
15408                        envelope.deref_unchecked::<crate::wire::Ref<'de>>()
15409                    })
15410                }),
15411
15412                target_name: wire.table.get(4).map(|envelope| {
15413                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
15414                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
15415                    })
15416                }),
15417
15418                availability: wire.table.get(5).map(|envelope| {
15419                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
15420                        envelope.deref_unchecked::<crate::wire::Availability>()
15421                    })
15422                }),
15423            }
15424        }
15425    }
15426
15427    #[doc = " Declares a runner offered by a component to one of its children, which may\n have been offered by the component\'s containing realm, the component itself,\n or one of its other children.\n"]
15428    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
15429    pub struct OfferRunner {
15430        pub source: ::core::option::Option<crate::natural::Ref>,
15431
15432        pub source_name: ::core::option::Option<::std::string::String>,
15433
15434        pub target: ::core::option::Option<crate::natural::Ref>,
15435
15436        pub target_name: ::core::option::Option<::std::string::String>,
15437
15438        pub source_dictionary: ::core::option::Option<::std::string::String>,
15439    }
15440
15441    impl OfferRunner {
15442        fn __max_ordinal(&self) -> usize {
15443            if self.source_dictionary.is_some() {
15444                return 5;
15445            }
15446
15447            if self.target_name.is_some() {
15448                return 4;
15449            }
15450
15451            if self.target.is_some() {
15452                return 3;
15453            }
15454
15455            if self.source_name.is_some() {
15456                return 2;
15457            }
15458
15459            if self.source.is_some() {
15460                return 1;
15461            }
15462
15463            0
15464        }
15465    }
15466
15467    unsafe impl<___E> ::fidl_next::Encode<crate::wire::OfferRunner<'static>, ___E> for OfferRunner
15468    where
15469        ___E: ::fidl_next::Encoder + ?Sized,
15470    {
15471        #[inline]
15472        fn encode(
15473            mut self,
15474            encoder: &mut ___E,
15475            out: &mut ::core::mem::MaybeUninit<crate::wire::OfferRunner<'static>>,
15476            _: (),
15477        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
15478            ::fidl_next::munge!(let crate::wire::OfferRunner { table } = out);
15479
15480            let max_ord = self.__max_ordinal();
15481
15482            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
15483            ::fidl_next::Wire::zero_padding(&mut out);
15484
15485            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
15486                ::fidl_next::wire::Envelope,
15487            >(encoder, max_ord);
15488
15489            for i in 1..=max_ord {
15490                match i {
15491                    5 => {
15492                        if let Some(value) = self.source_dictionary.take() {
15493                            ::fidl_next::wire::Envelope::encode_value::<
15494                                ::fidl_next::wire::String<'static>,
15495                                ___E,
15496                            >(
15497                                value, preallocated.encoder, &mut out, 1024
15498                            )?;
15499                        } else {
15500                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
15501                        }
15502                    }
15503
15504                    4 => {
15505                        if let Some(value) = self.target_name.take() {
15506                            ::fidl_next::wire::Envelope::encode_value::<
15507                                ::fidl_next::wire::String<'static>,
15508                                ___E,
15509                            >(
15510                                value, preallocated.encoder, &mut out, 100
15511                            )?;
15512                        } else {
15513                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
15514                        }
15515                    }
15516
15517                    3 => {
15518                        if let Some(value) = self.target.take() {
15519                            ::fidl_next::wire::Envelope::encode_value::<
15520                                crate::wire::Ref<'static>,
15521                                ___E,
15522                            >(
15523                                value, preallocated.encoder, &mut out, ()
15524                            )?;
15525                        } else {
15526                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
15527                        }
15528                    }
15529
15530                    2 => {
15531                        if let Some(value) = self.source_name.take() {
15532                            ::fidl_next::wire::Envelope::encode_value::<
15533                                ::fidl_next::wire::String<'static>,
15534                                ___E,
15535                            >(
15536                                value, preallocated.encoder, &mut out, 100
15537                            )?;
15538                        } else {
15539                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
15540                        }
15541                    }
15542
15543                    1 => {
15544                        if let Some(value) = self.source.take() {
15545                            ::fidl_next::wire::Envelope::encode_value::<
15546                                crate::wire::Ref<'static>,
15547                                ___E,
15548                            >(
15549                                value, preallocated.encoder, &mut out, ()
15550                            )?;
15551                        } else {
15552                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
15553                        }
15554                    }
15555
15556                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
15557                }
15558                unsafe {
15559                    preallocated.write_next(out.assume_init_ref());
15560                }
15561            }
15562
15563            ::fidl_next::wire::Table::encode_len(table, max_ord);
15564
15565            Ok(())
15566        }
15567    }
15568
15569    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::OfferRunner<'static>, ___E>
15570        for &'a OfferRunner
15571    where
15572        ___E: ::fidl_next::Encoder + ?Sized,
15573    {
15574        #[inline]
15575        fn encode(
15576            self,
15577            encoder: &mut ___E,
15578            out: &mut ::core::mem::MaybeUninit<crate::wire::OfferRunner<'static>>,
15579            _: (),
15580        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
15581            ::fidl_next::munge!(let crate::wire::OfferRunner { table } = out);
15582
15583            let max_ord = self.__max_ordinal();
15584
15585            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
15586            ::fidl_next::Wire::zero_padding(&mut out);
15587
15588            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
15589                ::fidl_next::wire::Envelope,
15590            >(encoder, max_ord);
15591
15592            for i in 1..=max_ord {
15593                match i {
15594                    5 => {
15595                        if let Some(value) = &self.source_dictionary {
15596                            ::fidl_next::wire::Envelope::encode_value::<
15597                                ::fidl_next::wire::String<'static>,
15598                                ___E,
15599                            >(
15600                                value, preallocated.encoder, &mut out, 1024
15601                            )?;
15602                        } else {
15603                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
15604                        }
15605                    }
15606
15607                    4 => {
15608                        if let Some(value) = &self.target_name {
15609                            ::fidl_next::wire::Envelope::encode_value::<
15610                                ::fidl_next::wire::String<'static>,
15611                                ___E,
15612                            >(
15613                                value, preallocated.encoder, &mut out, 100
15614                            )?;
15615                        } else {
15616                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
15617                        }
15618                    }
15619
15620                    3 => {
15621                        if let Some(value) = &self.target {
15622                            ::fidl_next::wire::Envelope::encode_value::<
15623                                crate::wire::Ref<'static>,
15624                                ___E,
15625                            >(
15626                                value, preallocated.encoder, &mut out, ()
15627                            )?;
15628                        } else {
15629                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
15630                        }
15631                    }
15632
15633                    2 => {
15634                        if let Some(value) = &self.source_name {
15635                            ::fidl_next::wire::Envelope::encode_value::<
15636                                ::fidl_next::wire::String<'static>,
15637                                ___E,
15638                            >(
15639                                value, preallocated.encoder, &mut out, 100
15640                            )?;
15641                        } else {
15642                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
15643                        }
15644                    }
15645
15646                    1 => {
15647                        if let Some(value) = &self.source {
15648                            ::fidl_next::wire::Envelope::encode_value::<
15649                                crate::wire::Ref<'static>,
15650                                ___E,
15651                            >(
15652                                value, preallocated.encoder, &mut out, ()
15653                            )?;
15654                        } else {
15655                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
15656                        }
15657                    }
15658
15659                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
15660                }
15661                unsafe {
15662                    preallocated.write_next(out.assume_init_ref());
15663                }
15664            }
15665
15666            ::fidl_next::wire::Table::encode_len(table, max_ord);
15667
15668            Ok(())
15669        }
15670    }
15671
15672    impl<'de> ::fidl_next::FromWire<crate::wire::OfferRunner<'de>> for OfferRunner {
15673        #[inline]
15674        fn from_wire(wire_: crate::wire::OfferRunner<'de>) -> Self {
15675            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
15676
15677            let source = wire_.table.get(1);
15678
15679            let source_name = wire_.table.get(2);
15680
15681            let target = wire_.table.get(3);
15682
15683            let target_name = wire_.table.get(4);
15684
15685            let source_dictionary = wire_.table.get(5);
15686
15687            Self {
15688                source: source.map(|envelope| {
15689                    ::fidl_next::FromWire::from_wire(unsafe {
15690                        envelope.read_unchecked::<crate::wire::Ref<'de>>()
15691                    })
15692                }),
15693
15694                source_name: source_name.map(|envelope| {
15695                    ::fidl_next::FromWire::from_wire(unsafe {
15696                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
15697                    })
15698                }),
15699
15700                target: target.map(|envelope| {
15701                    ::fidl_next::FromWire::from_wire(unsafe {
15702                        envelope.read_unchecked::<crate::wire::Ref<'de>>()
15703                    })
15704                }),
15705
15706                target_name: target_name.map(|envelope| {
15707                    ::fidl_next::FromWire::from_wire(unsafe {
15708                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
15709                    })
15710                }),
15711
15712                source_dictionary: source_dictionary.map(|envelope| {
15713                    ::fidl_next::FromWire::from_wire(unsafe {
15714                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
15715                    })
15716                }),
15717            }
15718        }
15719    }
15720
15721    impl<'de> ::fidl_next::FromWireRef<crate::wire::OfferRunner<'de>> for OfferRunner {
15722        #[inline]
15723        fn from_wire_ref(wire: &crate::wire::OfferRunner<'de>) -> Self {
15724            Self {
15725                source: wire.table.get(1).map(|envelope| {
15726                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
15727                        envelope.deref_unchecked::<crate::wire::Ref<'de>>()
15728                    })
15729                }),
15730
15731                source_name: wire.table.get(2).map(|envelope| {
15732                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
15733                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
15734                    })
15735                }),
15736
15737                target: wire.table.get(3).map(|envelope| {
15738                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
15739                        envelope.deref_unchecked::<crate::wire::Ref<'de>>()
15740                    })
15741                }),
15742
15743                target_name: wire.table.get(4).map(|envelope| {
15744                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
15745                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
15746                    })
15747                }),
15748
15749                source_dictionary: wire.table.get(5).map(|envelope| {
15750                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
15751                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
15752                    })
15753                }),
15754            }
15755        }
15756    }
15757
15758    #[doc = " Declares a resolver capability offered by a component to one of its children, which\n may have been offered by the component\'s containing realm, the component itself,\n or one of its other children.\n"]
15759    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
15760    pub struct OfferResolver {
15761        pub source: ::core::option::Option<crate::natural::Ref>,
15762
15763        pub source_name: ::core::option::Option<::std::string::String>,
15764
15765        pub target: ::core::option::Option<crate::natural::Ref>,
15766
15767        pub target_name: ::core::option::Option<::std::string::String>,
15768
15769        pub source_dictionary: ::core::option::Option<::std::string::String>,
15770    }
15771
15772    impl OfferResolver {
15773        fn __max_ordinal(&self) -> usize {
15774            if self.source_dictionary.is_some() {
15775                return 5;
15776            }
15777
15778            if self.target_name.is_some() {
15779                return 4;
15780            }
15781
15782            if self.target.is_some() {
15783                return 3;
15784            }
15785
15786            if self.source_name.is_some() {
15787                return 2;
15788            }
15789
15790            if self.source.is_some() {
15791                return 1;
15792            }
15793
15794            0
15795        }
15796    }
15797
15798    unsafe impl<___E> ::fidl_next::Encode<crate::wire::OfferResolver<'static>, ___E> for OfferResolver
15799    where
15800        ___E: ::fidl_next::Encoder + ?Sized,
15801    {
15802        #[inline]
15803        fn encode(
15804            mut self,
15805            encoder: &mut ___E,
15806            out: &mut ::core::mem::MaybeUninit<crate::wire::OfferResolver<'static>>,
15807            _: (),
15808        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
15809            ::fidl_next::munge!(let crate::wire::OfferResolver { table } = out);
15810
15811            let max_ord = self.__max_ordinal();
15812
15813            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
15814            ::fidl_next::Wire::zero_padding(&mut out);
15815
15816            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
15817                ::fidl_next::wire::Envelope,
15818            >(encoder, max_ord);
15819
15820            for i in 1..=max_ord {
15821                match i {
15822                    5 => {
15823                        if let Some(value) = self.source_dictionary.take() {
15824                            ::fidl_next::wire::Envelope::encode_value::<
15825                                ::fidl_next::wire::String<'static>,
15826                                ___E,
15827                            >(
15828                                value, preallocated.encoder, &mut out, 1024
15829                            )?;
15830                        } else {
15831                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
15832                        }
15833                    }
15834
15835                    4 => {
15836                        if let Some(value) = self.target_name.take() {
15837                            ::fidl_next::wire::Envelope::encode_value::<
15838                                ::fidl_next::wire::String<'static>,
15839                                ___E,
15840                            >(
15841                                value, preallocated.encoder, &mut out, 100
15842                            )?;
15843                        } else {
15844                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
15845                        }
15846                    }
15847
15848                    3 => {
15849                        if let Some(value) = self.target.take() {
15850                            ::fidl_next::wire::Envelope::encode_value::<
15851                                crate::wire::Ref<'static>,
15852                                ___E,
15853                            >(
15854                                value, preallocated.encoder, &mut out, ()
15855                            )?;
15856                        } else {
15857                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
15858                        }
15859                    }
15860
15861                    2 => {
15862                        if let Some(value) = self.source_name.take() {
15863                            ::fidl_next::wire::Envelope::encode_value::<
15864                                ::fidl_next::wire::String<'static>,
15865                                ___E,
15866                            >(
15867                                value, preallocated.encoder, &mut out, 100
15868                            )?;
15869                        } else {
15870                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
15871                        }
15872                    }
15873
15874                    1 => {
15875                        if let Some(value) = self.source.take() {
15876                            ::fidl_next::wire::Envelope::encode_value::<
15877                                crate::wire::Ref<'static>,
15878                                ___E,
15879                            >(
15880                                value, preallocated.encoder, &mut out, ()
15881                            )?;
15882                        } else {
15883                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
15884                        }
15885                    }
15886
15887                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
15888                }
15889                unsafe {
15890                    preallocated.write_next(out.assume_init_ref());
15891                }
15892            }
15893
15894            ::fidl_next::wire::Table::encode_len(table, max_ord);
15895
15896            Ok(())
15897        }
15898    }
15899
15900    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::OfferResolver<'static>, ___E>
15901        for &'a OfferResolver
15902    where
15903        ___E: ::fidl_next::Encoder + ?Sized,
15904    {
15905        #[inline]
15906        fn encode(
15907            self,
15908            encoder: &mut ___E,
15909            out: &mut ::core::mem::MaybeUninit<crate::wire::OfferResolver<'static>>,
15910            _: (),
15911        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
15912            ::fidl_next::munge!(let crate::wire::OfferResolver { table } = out);
15913
15914            let max_ord = self.__max_ordinal();
15915
15916            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
15917            ::fidl_next::Wire::zero_padding(&mut out);
15918
15919            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
15920                ::fidl_next::wire::Envelope,
15921            >(encoder, max_ord);
15922
15923            for i in 1..=max_ord {
15924                match i {
15925                    5 => {
15926                        if let Some(value) = &self.source_dictionary {
15927                            ::fidl_next::wire::Envelope::encode_value::<
15928                                ::fidl_next::wire::String<'static>,
15929                                ___E,
15930                            >(
15931                                value, preallocated.encoder, &mut out, 1024
15932                            )?;
15933                        } else {
15934                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
15935                        }
15936                    }
15937
15938                    4 => {
15939                        if let Some(value) = &self.target_name {
15940                            ::fidl_next::wire::Envelope::encode_value::<
15941                                ::fidl_next::wire::String<'static>,
15942                                ___E,
15943                            >(
15944                                value, preallocated.encoder, &mut out, 100
15945                            )?;
15946                        } else {
15947                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
15948                        }
15949                    }
15950
15951                    3 => {
15952                        if let Some(value) = &self.target {
15953                            ::fidl_next::wire::Envelope::encode_value::<
15954                                crate::wire::Ref<'static>,
15955                                ___E,
15956                            >(
15957                                value, preallocated.encoder, &mut out, ()
15958                            )?;
15959                        } else {
15960                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
15961                        }
15962                    }
15963
15964                    2 => {
15965                        if let Some(value) = &self.source_name {
15966                            ::fidl_next::wire::Envelope::encode_value::<
15967                                ::fidl_next::wire::String<'static>,
15968                                ___E,
15969                            >(
15970                                value, preallocated.encoder, &mut out, 100
15971                            )?;
15972                        } else {
15973                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
15974                        }
15975                    }
15976
15977                    1 => {
15978                        if let Some(value) = &self.source {
15979                            ::fidl_next::wire::Envelope::encode_value::<
15980                                crate::wire::Ref<'static>,
15981                                ___E,
15982                            >(
15983                                value, preallocated.encoder, &mut out, ()
15984                            )?;
15985                        } else {
15986                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
15987                        }
15988                    }
15989
15990                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
15991                }
15992                unsafe {
15993                    preallocated.write_next(out.assume_init_ref());
15994                }
15995            }
15996
15997            ::fidl_next::wire::Table::encode_len(table, max_ord);
15998
15999            Ok(())
16000        }
16001    }
16002
16003    impl<'de> ::fidl_next::FromWire<crate::wire::OfferResolver<'de>> for OfferResolver {
16004        #[inline]
16005        fn from_wire(wire_: crate::wire::OfferResolver<'de>) -> Self {
16006            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
16007
16008            let source = wire_.table.get(1);
16009
16010            let source_name = wire_.table.get(2);
16011
16012            let target = wire_.table.get(3);
16013
16014            let target_name = wire_.table.get(4);
16015
16016            let source_dictionary = wire_.table.get(5);
16017
16018            Self {
16019                source: source.map(|envelope| {
16020                    ::fidl_next::FromWire::from_wire(unsafe {
16021                        envelope.read_unchecked::<crate::wire::Ref<'de>>()
16022                    })
16023                }),
16024
16025                source_name: source_name.map(|envelope| {
16026                    ::fidl_next::FromWire::from_wire(unsafe {
16027                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
16028                    })
16029                }),
16030
16031                target: target.map(|envelope| {
16032                    ::fidl_next::FromWire::from_wire(unsafe {
16033                        envelope.read_unchecked::<crate::wire::Ref<'de>>()
16034                    })
16035                }),
16036
16037                target_name: target_name.map(|envelope| {
16038                    ::fidl_next::FromWire::from_wire(unsafe {
16039                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
16040                    })
16041                }),
16042
16043                source_dictionary: source_dictionary.map(|envelope| {
16044                    ::fidl_next::FromWire::from_wire(unsafe {
16045                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
16046                    })
16047                }),
16048            }
16049        }
16050    }
16051
16052    impl<'de> ::fidl_next::FromWireRef<crate::wire::OfferResolver<'de>> for OfferResolver {
16053        #[inline]
16054        fn from_wire_ref(wire: &crate::wire::OfferResolver<'de>) -> Self {
16055            Self {
16056                source: wire.table.get(1).map(|envelope| {
16057                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
16058                        envelope.deref_unchecked::<crate::wire::Ref<'de>>()
16059                    })
16060                }),
16061
16062                source_name: wire.table.get(2).map(|envelope| {
16063                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
16064                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
16065                    })
16066                }),
16067
16068                target: wire.table.get(3).map(|envelope| {
16069                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
16070                        envelope.deref_unchecked::<crate::wire::Ref<'de>>()
16071                    })
16072                }),
16073
16074                target_name: wire.table.get(4).map(|envelope| {
16075                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
16076                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
16077                    })
16078                }),
16079
16080                source_dictionary: wire.table.get(5).map(|envelope| {
16081                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
16082                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
16083                    })
16084                }),
16085            }
16086        }
16087    }
16088
16089    #[doc = " Declares an event stream offered by a component.\n"]
16090    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
16091    pub struct OfferEventStream {
16092        pub source: ::core::option::Option<crate::natural::Ref>,
16093
16094        pub source_name: ::core::option::Option<::std::string::String>,
16095
16096        pub scope: ::core::option::Option<::std::vec::Vec<crate::natural::Ref>>,
16097
16098        pub target: ::core::option::Option<crate::natural::Ref>,
16099
16100        pub target_name: ::core::option::Option<::std::string::String>,
16101
16102        pub availability: ::core::option::Option<crate::natural::Availability>,
16103    }
16104
16105    impl OfferEventStream {
16106        fn __max_ordinal(&self) -> usize {
16107            if self.availability.is_some() {
16108                return 7;
16109            }
16110
16111            if self.target_name.is_some() {
16112                return 5;
16113            }
16114
16115            if self.target.is_some() {
16116                return 4;
16117            }
16118
16119            if self.scope.is_some() {
16120                return 3;
16121            }
16122
16123            if self.source_name.is_some() {
16124                return 2;
16125            }
16126
16127            if self.source.is_some() {
16128                return 1;
16129            }
16130
16131            0
16132        }
16133    }
16134
16135    unsafe impl<___E> ::fidl_next::Encode<crate::wire::OfferEventStream<'static>, ___E>
16136        for OfferEventStream
16137    where
16138        ___E: ::fidl_next::Encoder + ?Sized,
16139    {
16140        #[inline]
16141        fn encode(
16142            mut self,
16143            encoder: &mut ___E,
16144            out: &mut ::core::mem::MaybeUninit<crate::wire::OfferEventStream<'static>>,
16145            _: (),
16146        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
16147            ::fidl_next::munge!(let crate::wire::OfferEventStream { table } = out);
16148
16149            let max_ord = self.__max_ordinal();
16150
16151            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
16152            ::fidl_next::Wire::zero_padding(&mut out);
16153
16154            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
16155                ::fidl_next::wire::Envelope,
16156            >(encoder, max_ord);
16157
16158            for i in 1..=max_ord {
16159                match i {
16160                    7 => {
16161                        if let Some(value) = self.availability.take() {
16162                            ::fidl_next::wire::Envelope::encode_value::<
16163                                crate::wire::Availability,
16164                                ___E,
16165                            >(
16166                                value, preallocated.encoder, &mut out, ()
16167                            )?;
16168                        } else {
16169                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
16170                        }
16171                    }
16172
16173                    5 => {
16174                        if let Some(value) = self.target_name.take() {
16175                            ::fidl_next::wire::Envelope::encode_value::<
16176                                ::fidl_next::wire::String<'static>,
16177                                ___E,
16178                            >(
16179                                value, preallocated.encoder, &mut out, 100
16180                            )?;
16181                        } else {
16182                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
16183                        }
16184                    }
16185
16186                    4 => {
16187                        if let Some(value) = self.target.take() {
16188                            ::fidl_next::wire::Envelope::encode_value::<
16189                                crate::wire::Ref<'static>,
16190                                ___E,
16191                            >(
16192                                value, preallocated.encoder, &mut out, ()
16193                            )?;
16194                        } else {
16195                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
16196                        }
16197                    }
16198
16199                    3 => {
16200                        if let Some(value) = self.scope.take() {
16201                            ::fidl_next::wire::Envelope::encode_value::<
16202                                ::fidl_next::wire::Vector<'static, crate::wire::Ref<'static>>,
16203                                ___E,
16204                            >(
16205                                value, preallocated.encoder, &mut out, (4294967295, ())
16206                            )?;
16207                        } else {
16208                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
16209                        }
16210                    }
16211
16212                    2 => {
16213                        if let Some(value) = self.source_name.take() {
16214                            ::fidl_next::wire::Envelope::encode_value::<
16215                                ::fidl_next::wire::String<'static>,
16216                                ___E,
16217                            >(
16218                                value, preallocated.encoder, &mut out, 100
16219                            )?;
16220                        } else {
16221                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
16222                        }
16223                    }
16224
16225                    1 => {
16226                        if let Some(value) = self.source.take() {
16227                            ::fidl_next::wire::Envelope::encode_value::<
16228                                crate::wire::Ref<'static>,
16229                                ___E,
16230                            >(
16231                                value, preallocated.encoder, &mut out, ()
16232                            )?;
16233                        } else {
16234                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
16235                        }
16236                    }
16237
16238                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
16239                }
16240                unsafe {
16241                    preallocated.write_next(out.assume_init_ref());
16242                }
16243            }
16244
16245            ::fidl_next::wire::Table::encode_len(table, max_ord);
16246
16247            Ok(())
16248        }
16249    }
16250
16251    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::OfferEventStream<'static>, ___E>
16252        for &'a OfferEventStream
16253    where
16254        ___E: ::fidl_next::Encoder + ?Sized,
16255    {
16256        #[inline]
16257        fn encode(
16258            self,
16259            encoder: &mut ___E,
16260            out: &mut ::core::mem::MaybeUninit<crate::wire::OfferEventStream<'static>>,
16261            _: (),
16262        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
16263            ::fidl_next::munge!(let crate::wire::OfferEventStream { table } = out);
16264
16265            let max_ord = self.__max_ordinal();
16266
16267            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
16268            ::fidl_next::Wire::zero_padding(&mut out);
16269
16270            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
16271                ::fidl_next::wire::Envelope,
16272            >(encoder, max_ord);
16273
16274            for i in 1..=max_ord {
16275                match i {
16276                    7 => {
16277                        if let Some(value) = &self.availability {
16278                            ::fidl_next::wire::Envelope::encode_value::<
16279                                crate::wire::Availability,
16280                                ___E,
16281                            >(
16282                                value, preallocated.encoder, &mut out, ()
16283                            )?;
16284                        } else {
16285                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
16286                        }
16287                    }
16288
16289                    5 => {
16290                        if let Some(value) = &self.target_name {
16291                            ::fidl_next::wire::Envelope::encode_value::<
16292                                ::fidl_next::wire::String<'static>,
16293                                ___E,
16294                            >(
16295                                value, preallocated.encoder, &mut out, 100
16296                            )?;
16297                        } else {
16298                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
16299                        }
16300                    }
16301
16302                    4 => {
16303                        if let Some(value) = &self.target {
16304                            ::fidl_next::wire::Envelope::encode_value::<
16305                                crate::wire::Ref<'static>,
16306                                ___E,
16307                            >(
16308                                value, preallocated.encoder, &mut out, ()
16309                            )?;
16310                        } else {
16311                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
16312                        }
16313                    }
16314
16315                    3 => {
16316                        if let Some(value) = &self.scope {
16317                            ::fidl_next::wire::Envelope::encode_value::<
16318                                ::fidl_next::wire::Vector<'static, crate::wire::Ref<'static>>,
16319                                ___E,
16320                            >(
16321                                value, preallocated.encoder, &mut out, (4294967295, ())
16322                            )?;
16323                        } else {
16324                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
16325                        }
16326                    }
16327
16328                    2 => {
16329                        if let Some(value) = &self.source_name {
16330                            ::fidl_next::wire::Envelope::encode_value::<
16331                                ::fidl_next::wire::String<'static>,
16332                                ___E,
16333                            >(
16334                                value, preallocated.encoder, &mut out, 100
16335                            )?;
16336                        } else {
16337                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
16338                        }
16339                    }
16340
16341                    1 => {
16342                        if let Some(value) = &self.source {
16343                            ::fidl_next::wire::Envelope::encode_value::<
16344                                crate::wire::Ref<'static>,
16345                                ___E,
16346                            >(
16347                                value, preallocated.encoder, &mut out, ()
16348                            )?;
16349                        } else {
16350                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
16351                        }
16352                    }
16353
16354                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
16355                }
16356                unsafe {
16357                    preallocated.write_next(out.assume_init_ref());
16358                }
16359            }
16360
16361            ::fidl_next::wire::Table::encode_len(table, max_ord);
16362
16363            Ok(())
16364        }
16365    }
16366
16367    impl<'de> ::fidl_next::FromWire<crate::wire::OfferEventStream<'de>> for OfferEventStream {
16368        #[inline]
16369        fn from_wire(wire_: crate::wire::OfferEventStream<'de>) -> Self {
16370            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
16371
16372            let source = wire_.table.get(1);
16373
16374            let source_name = wire_.table.get(2);
16375
16376            let scope = wire_.table.get(3);
16377
16378            let target = wire_.table.get(4);
16379
16380            let target_name = wire_.table.get(5);
16381
16382            let availability = wire_.table.get(7);
16383
16384            Self {
16385
16386
16387                source: source.map(|envelope| ::fidl_next::FromWire::from_wire(
16388                    unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() }
16389                )),
16390
16391
16392                source_name: source_name.map(|envelope| ::fidl_next::FromWire::from_wire(
16393                    unsafe { envelope.read_unchecked::<::fidl_next::wire::String<'de>>() }
16394                )),
16395
16396
16397                scope: scope.map(|envelope| ::fidl_next::FromWire::from_wire(
16398                    unsafe { envelope.read_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::Ref<'de>>>() }
16399                )),
16400
16401
16402                target: target.map(|envelope| ::fidl_next::FromWire::from_wire(
16403                    unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() }
16404                )),
16405
16406
16407                target_name: target_name.map(|envelope| ::fidl_next::FromWire::from_wire(
16408                    unsafe { envelope.read_unchecked::<::fidl_next::wire::String<'de>>() }
16409                )),
16410
16411
16412                availability: availability.map(|envelope| ::fidl_next::FromWire::from_wire(
16413                    unsafe { envelope.read_unchecked::<crate::wire::Availability>() }
16414                )),
16415
16416        }
16417        }
16418    }
16419
16420    impl<'de> ::fidl_next::FromWireRef<crate::wire::OfferEventStream<'de>> for OfferEventStream {
16421        #[inline]
16422        fn from_wire_ref(wire: &crate::wire::OfferEventStream<'de>) -> Self {
16423            Self {
16424
16425
16426                source: wire.table.get(1)
16427                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
16428                        unsafe { envelope.deref_unchecked::<crate::wire::Ref<'de>>() }
16429                    )),
16430
16431
16432                source_name: wire.table.get(2)
16433                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
16434                        unsafe { envelope.deref_unchecked::<::fidl_next::wire::String<'de>>() }
16435                    )),
16436
16437
16438                scope: wire.table.get(3)
16439                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
16440                        unsafe { envelope.deref_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::Ref<'de>>>() }
16441                    )),
16442
16443
16444                target: wire.table.get(4)
16445                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
16446                        unsafe { envelope.deref_unchecked::<crate::wire::Ref<'de>>() }
16447                    )),
16448
16449
16450                target_name: wire.table.get(5)
16451                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
16452                        unsafe { envelope.deref_unchecked::<::fidl_next::wire::String<'de>>() }
16453                    )),
16454
16455
16456                availability: wire.table.get(7)
16457                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
16458                        unsafe { envelope.deref_unchecked::<crate::wire::Availability>() }
16459                    )),
16460
16461        }
16462        }
16463    }
16464
16465    #[doc = " Declares a dictionary offered by a component to one of its children,\n which may have been offered by the component\'s containing realm, the\n component itself, or one of its other children.\n\n To learn more about dictionaries, see:\n https://fuchsia.dev/fuchsia-src/glossary#dictionary\n"]
16466    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
16467    pub struct OfferDictionary {
16468        pub source: ::core::option::Option<crate::natural::Ref>,
16469
16470        pub source_name: ::core::option::Option<::std::string::String>,
16471
16472        pub target: ::core::option::Option<crate::natural::Ref>,
16473
16474        pub target_name: ::core::option::Option<::std::string::String>,
16475
16476        pub dependency_type: ::core::option::Option<crate::natural::DependencyType>,
16477
16478        pub availability: ::core::option::Option<crate::natural::Availability>,
16479
16480        pub source_dictionary: ::core::option::Option<::std::string::String>,
16481    }
16482
16483    impl OfferDictionary {
16484        fn __max_ordinal(&self) -> usize {
16485            if self.source_dictionary.is_some() {
16486                return 7;
16487            }
16488
16489            if self.availability.is_some() {
16490                return 6;
16491            }
16492
16493            if self.dependency_type.is_some() {
16494                return 5;
16495            }
16496
16497            if self.target_name.is_some() {
16498                return 4;
16499            }
16500
16501            if self.target.is_some() {
16502                return 3;
16503            }
16504
16505            if self.source_name.is_some() {
16506                return 2;
16507            }
16508
16509            if self.source.is_some() {
16510                return 1;
16511            }
16512
16513            0
16514        }
16515    }
16516
16517    unsafe impl<___E> ::fidl_next::Encode<crate::wire::OfferDictionary<'static>, ___E>
16518        for OfferDictionary
16519    where
16520        ___E: ::fidl_next::Encoder + ?Sized,
16521    {
16522        #[inline]
16523        fn encode(
16524            mut self,
16525            encoder: &mut ___E,
16526            out: &mut ::core::mem::MaybeUninit<crate::wire::OfferDictionary<'static>>,
16527            _: (),
16528        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
16529            ::fidl_next::munge!(let crate::wire::OfferDictionary { table } = out);
16530
16531            let max_ord = self.__max_ordinal();
16532
16533            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
16534            ::fidl_next::Wire::zero_padding(&mut out);
16535
16536            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
16537                ::fidl_next::wire::Envelope,
16538            >(encoder, max_ord);
16539
16540            for i in 1..=max_ord {
16541                match i {
16542                    7 => {
16543                        if let Some(value) = self.source_dictionary.take() {
16544                            ::fidl_next::wire::Envelope::encode_value::<
16545                                ::fidl_next::wire::String<'static>,
16546                                ___E,
16547                            >(
16548                                value, preallocated.encoder, &mut out, 1024
16549                            )?;
16550                        } else {
16551                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
16552                        }
16553                    }
16554
16555                    6 => {
16556                        if let Some(value) = self.availability.take() {
16557                            ::fidl_next::wire::Envelope::encode_value::<
16558                                crate::wire::Availability,
16559                                ___E,
16560                            >(
16561                                value, preallocated.encoder, &mut out, ()
16562                            )?;
16563                        } else {
16564                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
16565                        }
16566                    }
16567
16568                    5 => {
16569                        if let Some(value) = self.dependency_type.take() {
16570                            ::fidl_next::wire::Envelope::encode_value::<
16571                                crate::wire::DependencyType,
16572                                ___E,
16573                            >(
16574                                value, preallocated.encoder, &mut out, ()
16575                            )?;
16576                        } else {
16577                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
16578                        }
16579                    }
16580
16581                    4 => {
16582                        if let Some(value) = self.target_name.take() {
16583                            ::fidl_next::wire::Envelope::encode_value::<
16584                                ::fidl_next::wire::String<'static>,
16585                                ___E,
16586                            >(
16587                                value, preallocated.encoder, &mut out, 100
16588                            )?;
16589                        } else {
16590                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
16591                        }
16592                    }
16593
16594                    3 => {
16595                        if let Some(value) = self.target.take() {
16596                            ::fidl_next::wire::Envelope::encode_value::<
16597                                crate::wire::Ref<'static>,
16598                                ___E,
16599                            >(
16600                                value, preallocated.encoder, &mut out, ()
16601                            )?;
16602                        } else {
16603                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
16604                        }
16605                    }
16606
16607                    2 => {
16608                        if let Some(value) = self.source_name.take() {
16609                            ::fidl_next::wire::Envelope::encode_value::<
16610                                ::fidl_next::wire::String<'static>,
16611                                ___E,
16612                            >(
16613                                value, preallocated.encoder, &mut out, 100
16614                            )?;
16615                        } else {
16616                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
16617                        }
16618                    }
16619
16620                    1 => {
16621                        if let Some(value) = self.source.take() {
16622                            ::fidl_next::wire::Envelope::encode_value::<
16623                                crate::wire::Ref<'static>,
16624                                ___E,
16625                            >(
16626                                value, preallocated.encoder, &mut out, ()
16627                            )?;
16628                        } else {
16629                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
16630                        }
16631                    }
16632
16633                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
16634                }
16635                unsafe {
16636                    preallocated.write_next(out.assume_init_ref());
16637                }
16638            }
16639
16640            ::fidl_next::wire::Table::encode_len(table, max_ord);
16641
16642            Ok(())
16643        }
16644    }
16645
16646    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::OfferDictionary<'static>, ___E>
16647        for &'a OfferDictionary
16648    where
16649        ___E: ::fidl_next::Encoder + ?Sized,
16650    {
16651        #[inline]
16652        fn encode(
16653            self,
16654            encoder: &mut ___E,
16655            out: &mut ::core::mem::MaybeUninit<crate::wire::OfferDictionary<'static>>,
16656            _: (),
16657        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
16658            ::fidl_next::munge!(let crate::wire::OfferDictionary { table } = out);
16659
16660            let max_ord = self.__max_ordinal();
16661
16662            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
16663            ::fidl_next::Wire::zero_padding(&mut out);
16664
16665            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
16666                ::fidl_next::wire::Envelope,
16667            >(encoder, max_ord);
16668
16669            for i in 1..=max_ord {
16670                match i {
16671                    7 => {
16672                        if let Some(value) = &self.source_dictionary {
16673                            ::fidl_next::wire::Envelope::encode_value::<
16674                                ::fidl_next::wire::String<'static>,
16675                                ___E,
16676                            >(
16677                                value, preallocated.encoder, &mut out, 1024
16678                            )?;
16679                        } else {
16680                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
16681                        }
16682                    }
16683
16684                    6 => {
16685                        if let Some(value) = &self.availability {
16686                            ::fidl_next::wire::Envelope::encode_value::<
16687                                crate::wire::Availability,
16688                                ___E,
16689                            >(
16690                                value, preallocated.encoder, &mut out, ()
16691                            )?;
16692                        } else {
16693                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
16694                        }
16695                    }
16696
16697                    5 => {
16698                        if let Some(value) = &self.dependency_type {
16699                            ::fidl_next::wire::Envelope::encode_value::<
16700                                crate::wire::DependencyType,
16701                                ___E,
16702                            >(
16703                                value, preallocated.encoder, &mut out, ()
16704                            )?;
16705                        } else {
16706                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
16707                        }
16708                    }
16709
16710                    4 => {
16711                        if let Some(value) = &self.target_name {
16712                            ::fidl_next::wire::Envelope::encode_value::<
16713                                ::fidl_next::wire::String<'static>,
16714                                ___E,
16715                            >(
16716                                value, preallocated.encoder, &mut out, 100
16717                            )?;
16718                        } else {
16719                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
16720                        }
16721                    }
16722
16723                    3 => {
16724                        if let Some(value) = &self.target {
16725                            ::fidl_next::wire::Envelope::encode_value::<
16726                                crate::wire::Ref<'static>,
16727                                ___E,
16728                            >(
16729                                value, preallocated.encoder, &mut out, ()
16730                            )?;
16731                        } else {
16732                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
16733                        }
16734                    }
16735
16736                    2 => {
16737                        if let Some(value) = &self.source_name {
16738                            ::fidl_next::wire::Envelope::encode_value::<
16739                                ::fidl_next::wire::String<'static>,
16740                                ___E,
16741                            >(
16742                                value, preallocated.encoder, &mut out, 100
16743                            )?;
16744                        } else {
16745                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
16746                        }
16747                    }
16748
16749                    1 => {
16750                        if let Some(value) = &self.source {
16751                            ::fidl_next::wire::Envelope::encode_value::<
16752                                crate::wire::Ref<'static>,
16753                                ___E,
16754                            >(
16755                                value, preallocated.encoder, &mut out, ()
16756                            )?;
16757                        } else {
16758                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
16759                        }
16760                    }
16761
16762                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
16763                }
16764                unsafe {
16765                    preallocated.write_next(out.assume_init_ref());
16766                }
16767            }
16768
16769            ::fidl_next::wire::Table::encode_len(table, max_ord);
16770
16771            Ok(())
16772        }
16773    }
16774
16775    impl<'de> ::fidl_next::FromWire<crate::wire::OfferDictionary<'de>> for OfferDictionary {
16776        #[inline]
16777        fn from_wire(wire_: crate::wire::OfferDictionary<'de>) -> Self {
16778            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
16779
16780            let source = wire_.table.get(1);
16781
16782            let source_name = wire_.table.get(2);
16783
16784            let target = wire_.table.get(3);
16785
16786            let target_name = wire_.table.get(4);
16787
16788            let dependency_type = wire_.table.get(5);
16789
16790            let availability = wire_.table.get(6);
16791
16792            let source_dictionary = wire_.table.get(7);
16793
16794            Self {
16795                source: source.map(|envelope| {
16796                    ::fidl_next::FromWire::from_wire(unsafe {
16797                        envelope.read_unchecked::<crate::wire::Ref<'de>>()
16798                    })
16799                }),
16800
16801                source_name: source_name.map(|envelope| {
16802                    ::fidl_next::FromWire::from_wire(unsafe {
16803                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
16804                    })
16805                }),
16806
16807                target: target.map(|envelope| {
16808                    ::fidl_next::FromWire::from_wire(unsafe {
16809                        envelope.read_unchecked::<crate::wire::Ref<'de>>()
16810                    })
16811                }),
16812
16813                target_name: target_name.map(|envelope| {
16814                    ::fidl_next::FromWire::from_wire(unsafe {
16815                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
16816                    })
16817                }),
16818
16819                dependency_type: dependency_type.map(|envelope| {
16820                    ::fidl_next::FromWire::from_wire(unsafe {
16821                        envelope.read_unchecked::<crate::wire::DependencyType>()
16822                    })
16823                }),
16824
16825                availability: availability.map(|envelope| {
16826                    ::fidl_next::FromWire::from_wire(unsafe {
16827                        envelope.read_unchecked::<crate::wire::Availability>()
16828                    })
16829                }),
16830
16831                source_dictionary: source_dictionary.map(|envelope| {
16832                    ::fidl_next::FromWire::from_wire(unsafe {
16833                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
16834                    })
16835                }),
16836            }
16837        }
16838    }
16839
16840    impl<'de> ::fidl_next::FromWireRef<crate::wire::OfferDictionary<'de>> for OfferDictionary {
16841        #[inline]
16842        fn from_wire_ref(wire: &crate::wire::OfferDictionary<'de>) -> Self {
16843            Self {
16844                source: wire.table.get(1).map(|envelope| {
16845                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
16846                        envelope.deref_unchecked::<crate::wire::Ref<'de>>()
16847                    })
16848                }),
16849
16850                source_name: wire.table.get(2).map(|envelope| {
16851                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
16852                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
16853                    })
16854                }),
16855
16856                target: wire.table.get(3).map(|envelope| {
16857                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
16858                        envelope.deref_unchecked::<crate::wire::Ref<'de>>()
16859                    })
16860                }),
16861
16862                target_name: wire.table.get(4).map(|envelope| {
16863                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
16864                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
16865                    })
16866                }),
16867
16868                dependency_type: wire.table.get(5).map(|envelope| {
16869                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
16870                        envelope.deref_unchecked::<crate::wire::DependencyType>()
16871                    })
16872                }),
16873
16874                availability: wire.table.get(6).map(|envelope| {
16875                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
16876                        envelope.deref_unchecked::<crate::wire::Availability>()
16877                    })
16878                }),
16879
16880                source_dictionary: wire.table.get(7).map(|envelope| {
16881                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
16882                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
16883                    })
16884                }),
16885            }
16886        }
16887    }
16888
16889    #[doc = " Declares a configuration capability offered by a component to one of its children,\n which may have been offered by the component\'s containing realm, the\n component itself, or one of its other children.\n"]
16890    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
16891    pub struct OfferConfiguration {
16892        pub source: ::core::option::Option<crate::natural::Ref>,
16893
16894        pub source_name: ::core::option::Option<::std::string::String>,
16895
16896        pub target: ::core::option::Option<crate::natural::Ref>,
16897
16898        pub target_name: ::core::option::Option<::std::string::String>,
16899
16900        pub availability: ::core::option::Option<crate::natural::Availability>,
16901
16902        pub source_dictionary: ::core::option::Option<::std::string::String>,
16903    }
16904
16905    impl OfferConfiguration {
16906        fn __max_ordinal(&self) -> usize {
16907            if self.source_dictionary.is_some() {
16908                return 6;
16909            }
16910
16911            if self.availability.is_some() {
16912                return 5;
16913            }
16914
16915            if self.target_name.is_some() {
16916                return 4;
16917            }
16918
16919            if self.target.is_some() {
16920                return 3;
16921            }
16922
16923            if self.source_name.is_some() {
16924                return 2;
16925            }
16926
16927            if self.source.is_some() {
16928                return 1;
16929            }
16930
16931            0
16932        }
16933    }
16934
16935    unsafe impl<___E> ::fidl_next::Encode<crate::wire::OfferConfiguration<'static>, ___E>
16936        for OfferConfiguration
16937    where
16938        ___E: ::fidl_next::Encoder + ?Sized,
16939    {
16940        #[inline]
16941        fn encode(
16942            mut self,
16943            encoder: &mut ___E,
16944            out: &mut ::core::mem::MaybeUninit<crate::wire::OfferConfiguration<'static>>,
16945            _: (),
16946        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
16947            ::fidl_next::munge!(let crate::wire::OfferConfiguration { table } = out);
16948
16949            let max_ord = self.__max_ordinal();
16950
16951            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
16952            ::fidl_next::Wire::zero_padding(&mut out);
16953
16954            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
16955                ::fidl_next::wire::Envelope,
16956            >(encoder, max_ord);
16957
16958            for i in 1..=max_ord {
16959                match i {
16960                    6 => {
16961                        if let Some(value) = self.source_dictionary.take() {
16962                            ::fidl_next::wire::Envelope::encode_value::<
16963                                ::fidl_next::wire::String<'static>,
16964                                ___E,
16965                            >(
16966                                value, preallocated.encoder, &mut out, 1024
16967                            )?;
16968                        } else {
16969                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
16970                        }
16971                    }
16972
16973                    5 => {
16974                        if let Some(value) = self.availability.take() {
16975                            ::fidl_next::wire::Envelope::encode_value::<
16976                                crate::wire::Availability,
16977                                ___E,
16978                            >(
16979                                value, preallocated.encoder, &mut out, ()
16980                            )?;
16981                        } else {
16982                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
16983                        }
16984                    }
16985
16986                    4 => {
16987                        if let Some(value) = self.target_name.take() {
16988                            ::fidl_next::wire::Envelope::encode_value::<
16989                                ::fidl_next::wire::String<'static>,
16990                                ___E,
16991                            >(
16992                                value, preallocated.encoder, &mut out, 100
16993                            )?;
16994                        } else {
16995                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
16996                        }
16997                    }
16998
16999                    3 => {
17000                        if let Some(value) = self.target.take() {
17001                            ::fidl_next::wire::Envelope::encode_value::<
17002                                crate::wire::Ref<'static>,
17003                                ___E,
17004                            >(
17005                                value, preallocated.encoder, &mut out, ()
17006                            )?;
17007                        } else {
17008                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
17009                        }
17010                    }
17011
17012                    2 => {
17013                        if let Some(value) = self.source_name.take() {
17014                            ::fidl_next::wire::Envelope::encode_value::<
17015                                ::fidl_next::wire::String<'static>,
17016                                ___E,
17017                            >(
17018                                value, preallocated.encoder, &mut out, 100
17019                            )?;
17020                        } else {
17021                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
17022                        }
17023                    }
17024
17025                    1 => {
17026                        if let Some(value) = self.source.take() {
17027                            ::fidl_next::wire::Envelope::encode_value::<
17028                                crate::wire::Ref<'static>,
17029                                ___E,
17030                            >(
17031                                value, preallocated.encoder, &mut out, ()
17032                            )?;
17033                        } else {
17034                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
17035                        }
17036                    }
17037
17038                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
17039                }
17040                unsafe {
17041                    preallocated.write_next(out.assume_init_ref());
17042                }
17043            }
17044
17045            ::fidl_next::wire::Table::encode_len(table, max_ord);
17046
17047            Ok(())
17048        }
17049    }
17050
17051    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::OfferConfiguration<'static>, ___E>
17052        for &'a OfferConfiguration
17053    where
17054        ___E: ::fidl_next::Encoder + ?Sized,
17055    {
17056        #[inline]
17057        fn encode(
17058            self,
17059            encoder: &mut ___E,
17060            out: &mut ::core::mem::MaybeUninit<crate::wire::OfferConfiguration<'static>>,
17061            _: (),
17062        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
17063            ::fidl_next::munge!(let crate::wire::OfferConfiguration { table } = out);
17064
17065            let max_ord = self.__max_ordinal();
17066
17067            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
17068            ::fidl_next::Wire::zero_padding(&mut out);
17069
17070            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
17071                ::fidl_next::wire::Envelope,
17072            >(encoder, max_ord);
17073
17074            for i in 1..=max_ord {
17075                match i {
17076                    6 => {
17077                        if let Some(value) = &self.source_dictionary {
17078                            ::fidl_next::wire::Envelope::encode_value::<
17079                                ::fidl_next::wire::String<'static>,
17080                                ___E,
17081                            >(
17082                                value, preallocated.encoder, &mut out, 1024
17083                            )?;
17084                        } else {
17085                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
17086                        }
17087                    }
17088
17089                    5 => {
17090                        if let Some(value) = &self.availability {
17091                            ::fidl_next::wire::Envelope::encode_value::<
17092                                crate::wire::Availability,
17093                                ___E,
17094                            >(
17095                                value, preallocated.encoder, &mut out, ()
17096                            )?;
17097                        } else {
17098                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
17099                        }
17100                    }
17101
17102                    4 => {
17103                        if let Some(value) = &self.target_name {
17104                            ::fidl_next::wire::Envelope::encode_value::<
17105                                ::fidl_next::wire::String<'static>,
17106                                ___E,
17107                            >(
17108                                value, preallocated.encoder, &mut out, 100
17109                            )?;
17110                        } else {
17111                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
17112                        }
17113                    }
17114
17115                    3 => {
17116                        if let Some(value) = &self.target {
17117                            ::fidl_next::wire::Envelope::encode_value::<
17118                                crate::wire::Ref<'static>,
17119                                ___E,
17120                            >(
17121                                value, preallocated.encoder, &mut out, ()
17122                            )?;
17123                        } else {
17124                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
17125                        }
17126                    }
17127
17128                    2 => {
17129                        if let Some(value) = &self.source_name {
17130                            ::fidl_next::wire::Envelope::encode_value::<
17131                                ::fidl_next::wire::String<'static>,
17132                                ___E,
17133                            >(
17134                                value, preallocated.encoder, &mut out, 100
17135                            )?;
17136                        } else {
17137                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
17138                        }
17139                    }
17140
17141                    1 => {
17142                        if let Some(value) = &self.source {
17143                            ::fidl_next::wire::Envelope::encode_value::<
17144                                crate::wire::Ref<'static>,
17145                                ___E,
17146                            >(
17147                                value, preallocated.encoder, &mut out, ()
17148                            )?;
17149                        } else {
17150                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
17151                        }
17152                    }
17153
17154                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
17155                }
17156                unsafe {
17157                    preallocated.write_next(out.assume_init_ref());
17158                }
17159            }
17160
17161            ::fidl_next::wire::Table::encode_len(table, max_ord);
17162
17163            Ok(())
17164        }
17165    }
17166
17167    impl<'de> ::fidl_next::FromWire<crate::wire::OfferConfiguration<'de>> for OfferConfiguration {
17168        #[inline]
17169        fn from_wire(wire_: crate::wire::OfferConfiguration<'de>) -> Self {
17170            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
17171
17172            let source = wire_.table.get(1);
17173
17174            let source_name = wire_.table.get(2);
17175
17176            let target = wire_.table.get(3);
17177
17178            let target_name = wire_.table.get(4);
17179
17180            let availability = wire_.table.get(5);
17181
17182            let source_dictionary = wire_.table.get(6);
17183
17184            Self {
17185                source: source.map(|envelope| {
17186                    ::fidl_next::FromWire::from_wire(unsafe {
17187                        envelope.read_unchecked::<crate::wire::Ref<'de>>()
17188                    })
17189                }),
17190
17191                source_name: source_name.map(|envelope| {
17192                    ::fidl_next::FromWire::from_wire(unsafe {
17193                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
17194                    })
17195                }),
17196
17197                target: target.map(|envelope| {
17198                    ::fidl_next::FromWire::from_wire(unsafe {
17199                        envelope.read_unchecked::<crate::wire::Ref<'de>>()
17200                    })
17201                }),
17202
17203                target_name: target_name.map(|envelope| {
17204                    ::fidl_next::FromWire::from_wire(unsafe {
17205                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
17206                    })
17207                }),
17208
17209                availability: availability.map(|envelope| {
17210                    ::fidl_next::FromWire::from_wire(unsafe {
17211                        envelope.read_unchecked::<crate::wire::Availability>()
17212                    })
17213                }),
17214
17215                source_dictionary: source_dictionary.map(|envelope| {
17216                    ::fidl_next::FromWire::from_wire(unsafe {
17217                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
17218                    })
17219                }),
17220            }
17221        }
17222    }
17223
17224    impl<'de> ::fidl_next::FromWireRef<crate::wire::OfferConfiguration<'de>> for OfferConfiguration {
17225        #[inline]
17226        fn from_wire_ref(wire: &crate::wire::OfferConfiguration<'de>) -> Self {
17227            Self {
17228                source: wire.table.get(1).map(|envelope| {
17229                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
17230                        envelope.deref_unchecked::<crate::wire::Ref<'de>>()
17231                    })
17232                }),
17233
17234                source_name: wire.table.get(2).map(|envelope| {
17235                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
17236                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
17237                    })
17238                }),
17239
17240                target: wire.table.get(3).map(|envelope| {
17241                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
17242                        envelope.deref_unchecked::<crate::wire::Ref<'de>>()
17243                    })
17244                }),
17245
17246                target_name: wire.table.get(4).map(|envelope| {
17247                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
17248                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
17249                    })
17250                }),
17251
17252                availability: wire.table.get(5).map(|envelope| {
17253                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
17254                        envelope.deref_unchecked::<crate::wire::Availability>()
17255                    })
17256                }),
17257
17258                source_dictionary: wire.table.get(6).map(|envelope| {
17259                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
17260                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
17261                    })
17262                }),
17263            }
17264        }
17265    }
17266
17267    #[doc = " Declares a capability offered by a component to one of its children, which\n may have been offered by the component\'s containing realm, the component\n itself, or one of its other children.\n"]
17268    #[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
17269    pub enum Offer {
17270        Service(crate::natural::OfferService),
17271
17272        Protocol(crate::natural::OfferProtocol),
17273
17274        Directory(crate::natural::OfferDirectory),
17275
17276        Storage(crate::natural::OfferStorage),
17277
17278        Runner(crate::natural::OfferRunner),
17279
17280        Resolver(crate::natural::OfferResolver),
17281
17282        EventStream(crate::natural::OfferEventStream),
17283
17284        Dictionary(crate::natural::OfferDictionary),
17285
17286        Config(crate::natural::OfferConfiguration),
17287
17288        UnknownOrdinal_(u64),
17289    }
17290
17291    impl Offer {
17292        pub fn is_unknown(&self) -> bool {
17293            #[allow(unreachable_patterns)]
17294            match self {
17295                Self::UnknownOrdinal_(_) => true,
17296                _ => false,
17297            }
17298        }
17299    }
17300
17301    unsafe impl<___E> ::fidl_next::Encode<crate::wire::Offer<'static>, ___E> for Offer
17302    where
17303        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
17304        ___E: ::fidl_next::Encoder,
17305    {
17306        #[inline]
17307        fn encode(
17308            self,
17309            encoder: &mut ___E,
17310            out: &mut ::core::mem::MaybeUninit<crate::wire::Offer<'static>>,
17311            _: (),
17312        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
17313            ::fidl_next::munge!(let crate::wire::Offer { raw, _phantom: _ } = out);
17314
17315            match self {
17316                Self::Service(value) => ::fidl_next::wire::Union::encode_as::<
17317                    ___E,
17318                    crate::wire::OfferService<'static>,
17319                >(value, 1, encoder, raw, ())?,
17320
17321                Self::Protocol(value) => ::fidl_next::wire::Union::encode_as::<
17322                    ___E,
17323                    crate::wire::OfferProtocol<'static>,
17324                >(value, 2, encoder, raw, ())?,
17325
17326                Self::Directory(value) => ::fidl_next::wire::Union::encode_as::<
17327                    ___E,
17328                    crate::wire::OfferDirectory<'static>,
17329                >(value, 3, encoder, raw, ())?,
17330
17331                Self::Storage(value) => ::fidl_next::wire::Union::encode_as::<
17332                    ___E,
17333                    crate::wire::OfferStorage<'static>,
17334                >(value, 4, encoder, raw, ())?,
17335
17336                Self::Runner(value) => ::fidl_next::wire::Union::encode_as::<
17337                    ___E,
17338                    crate::wire::OfferRunner<'static>,
17339                >(value, 5, encoder, raw, ())?,
17340
17341                Self::Resolver(value) => ::fidl_next::wire::Union::encode_as::<
17342                    ___E,
17343                    crate::wire::OfferResolver<'static>,
17344                >(value, 6, encoder, raw, ())?,
17345
17346                Self::EventStream(value) => ::fidl_next::wire::Union::encode_as::<
17347                    ___E,
17348                    crate::wire::OfferEventStream<'static>,
17349                >(value, 8, encoder, raw, ())?,
17350
17351                Self::Dictionary(value) => ::fidl_next::wire::Union::encode_as::<
17352                    ___E,
17353                    crate::wire::OfferDictionary<'static>,
17354                >(value, 9, encoder, raw, ())?,
17355
17356                Self::Config(value) => ::fidl_next::wire::Union::encode_as::<
17357                    ___E,
17358                    crate::wire::OfferConfiguration<'static>,
17359                >(value, 10, encoder, raw, ())?,
17360
17361                Self::UnknownOrdinal_(ordinal) => {
17362                    return Err(::fidl_next::EncodeError::UnknownUnionOrdinal(ordinal as usize));
17363                }
17364            }
17365
17366            Ok(())
17367        }
17368    }
17369
17370    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::Offer<'static>, ___E> for &'a Offer
17371    where
17372        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
17373        ___E: ::fidl_next::Encoder,
17374    {
17375        #[inline]
17376        fn encode(
17377            self,
17378            encoder: &mut ___E,
17379            out: &mut ::core::mem::MaybeUninit<crate::wire::Offer<'static>>,
17380            _: (),
17381        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
17382            ::fidl_next::munge!(let crate::wire::Offer { raw, _phantom: _ } = out);
17383
17384            match self {
17385                Offer::Service(value) => ::fidl_next::wire::Union::encode_as::<
17386                    ___E,
17387                    crate::wire::OfferService<'static>,
17388                >(value, 1, encoder, raw, ())?,
17389
17390                Offer::Protocol(value) => ::fidl_next::wire::Union::encode_as::<
17391                    ___E,
17392                    crate::wire::OfferProtocol<'static>,
17393                >(value, 2, encoder, raw, ())?,
17394
17395                Offer::Directory(value) => ::fidl_next::wire::Union::encode_as::<
17396                    ___E,
17397                    crate::wire::OfferDirectory<'static>,
17398                >(value, 3, encoder, raw, ())?,
17399
17400                Offer::Storage(value) => ::fidl_next::wire::Union::encode_as::<
17401                    ___E,
17402                    crate::wire::OfferStorage<'static>,
17403                >(value, 4, encoder, raw, ())?,
17404
17405                Offer::Runner(value) => ::fidl_next::wire::Union::encode_as::<
17406                    ___E,
17407                    crate::wire::OfferRunner<'static>,
17408                >(value, 5, encoder, raw, ())?,
17409
17410                Offer::Resolver(value) => ::fidl_next::wire::Union::encode_as::<
17411                    ___E,
17412                    crate::wire::OfferResolver<'static>,
17413                >(value, 6, encoder, raw, ())?,
17414
17415                Offer::EventStream(value) => ::fidl_next::wire::Union::encode_as::<
17416                    ___E,
17417                    crate::wire::OfferEventStream<'static>,
17418                >(value, 8, encoder, raw, ())?,
17419
17420                Offer::Dictionary(value) => ::fidl_next::wire::Union::encode_as::<
17421                    ___E,
17422                    crate::wire::OfferDictionary<'static>,
17423                >(value, 9, encoder, raw, ())?,
17424
17425                Offer::Config(value) => ::fidl_next::wire::Union::encode_as::<
17426                    ___E,
17427                    crate::wire::OfferConfiguration<'static>,
17428                >(value, 10, encoder, raw, ())?,
17429
17430                Offer::UnknownOrdinal_(ordinal) => {
17431                    return Err(::fidl_next::EncodeError::UnknownUnionOrdinal(*ordinal as usize));
17432                }
17433            }
17434
17435            Ok(())
17436        }
17437    }
17438
17439    unsafe impl<___E> ::fidl_next::EncodeOption<crate::wire_optional::Offer<'static>, ___E> for Offer
17440    where
17441        ___E: ?Sized,
17442        Offer: ::fidl_next::Encode<crate::wire::Offer<'static>, ___E>,
17443    {
17444        #[inline]
17445        fn encode_option(
17446            this: ::core::option::Option<Self>,
17447            encoder: &mut ___E,
17448            out: &mut ::core::mem::MaybeUninit<crate::wire_optional::Offer<'static>>,
17449            _: (),
17450        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
17451            ::fidl_next::munge!(let crate::wire_optional::Offer { raw, _phantom: _ } = &mut *out);
17452
17453            if let Some(inner) = this {
17454                let value_out = unsafe { &mut *out.as_mut_ptr().cast() };
17455                ::fidl_next::Encode::encode(inner, encoder, value_out, ())?;
17456            } else {
17457                ::fidl_next::wire::Union::encode_absent(raw);
17458            }
17459
17460            Ok(())
17461        }
17462    }
17463
17464    unsafe impl<'a, ___E> ::fidl_next::EncodeOption<crate::wire_optional::Offer<'static>, ___E>
17465        for &'a Offer
17466    where
17467        ___E: ?Sized,
17468        &'a Offer: ::fidl_next::Encode<crate::wire::Offer<'static>, ___E>,
17469    {
17470        #[inline]
17471        fn encode_option(
17472            this: ::core::option::Option<Self>,
17473            encoder: &mut ___E,
17474            out: &mut ::core::mem::MaybeUninit<crate::wire_optional::Offer<'static>>,
17475            _: (),
17476        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
17477            ::fidl_next::munge!(let crate::wire_optional::Offer { raw, _phantom: _ } = &mut *out);
17478
17479            if let Some(inner) = this {
17480                let value_out = unsafe { &mut *out.as_mut_ptr().cast() };
17481                ::fidl_next::Encode::encode(inner, encoder, value_out, ())?;
17482            } else {
17483                ::fidl_next::wire::Union::encode_absent(raw);
17484            }
17485
17486            Ok(())
17487        }
17488    }
17489
17490    impl<'de> ::fidl_next::FromWire<crate::wire::Offer<'de>> for Offer {
17491        #[inline]
17492        fn from_wire(wire: crate::wire::Offer<'de>) -> Self {
17493            let wire = ::core::mem::ManuallyDrop::new(wire);
17494            match wire.raw.ordinal() {
17495                1 => Self::Service(::fidl_next::FromWire::from_wire(unsafe {
17496                    wire.raw.get().read_unchecked::<crate::wire::OfferService<'de>>()
17497                })),
17498
17499                2 => Self::Protocol(::fidl_next::FromWire::from_wire(unsafe {
17500                    wire.raw.get().read_unchecked::<crate::wire::OfferProtocol<'de>>()
17501                })),
17502
17503                3 => Self::Directory(::fidl_next::FromWire::from_wire(unsafe {
17504                    wire.raw.get().read_unchecked::<crate::wire::OfferDirectory<'de>>()
17505                })),
17506
17507                4 => Self::Storage(::fidl_next::FromWire::from_wire(unsafe {
17508                    wire.raw.get().read_unchecked::<crate::wire::OfferStorage<'de>>()
17509                })),
17510
17511                5 => Self::Runner(::fidl_next::FromWire::from_wire(unsafe {
17512                    wire.raw.get().read_unchecked::<crate::wire::OfferRunner<'de>>()
17513                })),
17514
17515                6 => Self::Resolver(::fidl_next::FromWire::from_wire(unsafe {
17516                    wire.raw.get().read_unchecked::<crate::wire::OfferResolver<'de>>()
17517                })),
17518
17519                8 => Self::EventStream(::fidl_next::FromWire::from_wire(unsafe {
17520                    wire.raw.get().read_unchecked::<crate::wire::OfferEventStream<'de>>()
17521                })),
17522
17523                9 => Self::Dictionary(::fidl_next::FromWire::from_wire(unsafe {
17524                    wire.raw.get().read_unchecked::<crate::wire::OfferDictionary<'de>>()
17525                })),
17526
17527                10 => Self::Config(::fidl_next::FromWire::from_wire(unsafe {
17528                    wire.raw.get().read_unchecked::<crate::wire::OfferConfiguration<'de>>()
17529                })),
17530
17531                ord => return Self::UnknownOrdinal_(ord as u64),
17532            }
17533        }
17534    }
17535
17536    impl<'de> ::fidl_next::FromWireRef<crate::wire::Offer<'de>> for Offer {
17537        #[inline]
17538        fn from_wire_ref(wire: &crate::wire::Offer<'de>) -> Self {
17539            match wire.raw.ordinal() {
17540                1 => Self::Service(::fidl_next::FromWireRef::from_wire_ref(unsafe {
17541                    wire.raw.get().deref_unchecked::<crate::wire::OfferService<'de>>()
17542                })),
17543
17544                2 => Self::Protocol(::fidl_next::FromWireRef::from_wire_ref(unsafe {
17545                    wire.raw.get().deref_unchecked::<crate::wire::OfferProtocol<'de>>()
17546                })),
17547
17548                3 => Self::Directory(::fidl_next::FromWireRef::from_wire_ref(unsafe {
17549                    wire.raw.get().deref_unchecked::<crate::wire::OfferDirectory<'de>>()
17550                })),
17551
17552                4 => Self::Storage(::fidl_next::FromWireRef::from_wire_ref(unsafe {
17553                    wire.raw.get().deref_unchecked::<crate::wire::OfferStorage<'de>>()
17554                })),
17555
17556                5 => Self::Runner(::fidl_next::FromWireRef::from_wire_ref(unsafe {
17557                    wire.raw.get().deref_unchecked::<crate::wire::OfferRunner<'de>>()
17558                })),
17559
17560                6 => Self::Resolver(::fidl_next::FromWireRef::from_wire_ref(unsafe {
17561                    wire.raw.get().deref_unchecked::<crate::wire::OfferResolver<'de>>()
17562                })),
17563
17564                8 => Self::EventStream(::fidl_next::FromWireRef::from_wire_ref(unsafe {
17565                    wire.raw.get().deref_unchecked::<crate::wire::OfferEventStream<'de>>()
17566                })),
17567
17568                9 => Self::Dictionary(::fidl_next::FromWireRef::from_wire_ref(unsafe {
17569                    wire.raw.get().deref_unchecked::<crate::wire::OfferDictionary<'de>>()
17570                })),
17571
17572                10 => Self::Config(::fidl_next::FromWireRef::from_wire_ref(unsafe {
17573                    wire.raw.get().deref_unchecked::<crate::wire::OfferConfiguration<'de>>()
17574                })),
17575
17576                ord => return Self::UnknownOrdinal_(ord as u64),
17577            }
17578        }
17579    }
17580
17581    impl<'de> ::fidl_next::FromWireOption<crate::wire_optional::Offer<'de>> for Offer {
17582        #[inline]
17583        fn from_wire_option(
17584            wire: crate::wire_optional::Offer<'de>,
17585        ) -> ::core::option::Option<Self> {
17586            if let Some(inner) = wire.into_option() {
17587                Some(::fidl_next::FromWire::from_wire(inner))
17588            } else {
17589                None
17590            }
17591        }
17592    }
17593
17594    impl<'de> ::fidl_next::FromWireOption<crate::wire_optional::Offer<'de>> for Box<Offer> {
17595        #[inline]
17596        fn from_wire_option(
17597            wire: crate::wire_optional::Offer<'de>,
17598        ) -> ::core::option::Option<Self> {
17599            <
17600            Offer as ::fidl_next::FromWireOption<crate::wire_optional::Offer<'de>>
17601        >::from_wire_option(wire).map(Box::new)
17602        }
17603    }
17604
17605    impl<'de> ::fidl_next::FromWireOptionRef<crate::wire_optional::Offer<'de>> for Box<Offer> {
17606        #[inline]
17607        fn from_wire_option_ref(
17608            wire: &crate::wire_optional::Offer<'de>,
17609        ) -> ::core::option::Option<Self> {
17610            if let Some(inner) = wire.as_ref() {
17611                Some(Box::new(::fidl_next::FromWireRef::from_wire_ref(inner)))
17612            } else {
17613                None
17614            }
17615        }
17616    }
17617
17618    #[doc = " A repository of the runners available in an environment.\n"]
17619    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
17620    pub struct RunnerRegistration {
17621        pub source_name: ::core::option::Option<::std::string::String>,
17622
17623        pub source: ::core::option::Option<crate::natural::Ref>,
17624
17625        pub target_name: ::core::option::Option<::std::string::String>,
17626    }
17627
17628    impl RunnerRegistration {
17629        fn __max_ordinal(&self) -> usize {
17630            if self.target_name.is_some() {
17631                return 3;
17632            }
17633
17634            if self.source.is_some() {
17635                return 2;
17636            }
17637
17638            if self.source_name.is_some() {
17639                return 1;
17640            }
17641
17642            0
17643        }
17644    }
17645
17646    unsafe impl<___E> ::fidl_next::Encode<crate::wire::RunnerRegistration<'static>, ___E>
17647        for RunnerRegistration
17648    where
17649        ___E: ::fidl_next::Encoder + ?Sized,
17650    {
17651        #[inline]
17652        fn encode(
17653            mut self,
17654            encoder: &mut ___E,
17655            out: &mut ::core::mem::MaybeUninit<crate::wire::RunnerRegistration<'static>>,
17656            _: (),
17657        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
17658            ::fidl_next::munge!(let crate::wire::RunnerRegistration { table } = out);
17659
17660            let max_ord = self.__max_ordinal();
17661
17662            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
17663            ::fidl_next::Wire::zero_padding(&mut out);
17664
17665            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
17666                ::fidl_next::wire::Envelope,
17667            >(encoder, max_ord);
17668
17669            for i in 1..=max_ord {
17670                match i {
17671                    3 => {
17672                        if let Some(value) = self.target_name.take() {
17673                            ::fidl_next::wire::Envelope::encode_value::<
17674                                ::fidl_next::wire::String<'static>,
17675                                ___E,
17676                            >(
17677                                value, preallocated.encoder, &mut out, 100
17678                            )?;
17679                        } else {
17680                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
17681                        }
17682                    }
17683
17684                    2 => {
17685                        if let Some(value) = self.source.take() {
17686                            ::fidl_next::wire::Envelope::encode_value::<
17687                                crate::wire::Ref<'static>,
17688                                ___E,
17689                            >(
17690                                value, preallocated.encoder, &mut out, ()
17691                            )?;
17692                        } else {
17693                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
17694                        }
17695                    }
17696
17697                    1 => {
17698                        if let Some(value) = self.source_name.take() {
17699                            ::fidl_next::wire::Envelope::encode_value::<
17700                                ::fidl_next::wire::String<'static>,
17701                                ___E,
17702                            >(
17703                                value, preallocated.encoder, &mut out, 100
17704                            )?;
17705                        } else {
17706                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
17707                        }
17708                    }
17709
17710                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
17711                }
17712                unsafe {
17713                    preallocated.write_next(out.assume_init_ref());
17714                }
17715            }
17716
17717            ::fidl_next::wire::Table::encode_len(table, max_ord);
17718
17719            Ok(())
17720        }
17721    }
17722
17723    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::RunnerRegistration<'static>, ___E>
17724        for &'a RunnerRegistration
17725    where
17726        ___E: ::fidl_next::Encoder + ?Sized,
17727    {
17728        #[inline]
17729        fn encode(
17730            self,
17731            encoder: &mut ___E,
17732            out: &mut ::core::mem::MaybeUninit<crate::wire::RunnerRegistration<'static>>,
17733            _: (),
17734        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
17735            ::fidl_next::munge!(let crate::wire::RunnerRegistration { table } = out);
17736
17737            let max_ord = self.__max_ordinal();
17738
17739            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
17740            ::fidl_next::Wire::zero_padding(&mut out);
17741
17742            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
17743                ::fidl_next::wire::Envelope,
17744            >(encoder, max_ord);
17745
17746            for i in 1..=max_ord {
17747                match i {
17748                    3 => {
17749                        if let Some(value) = &self.target_name {
17750                            ::fidl_next::wire::Envelope::encode_value::<
17751                                ::fidl_next::wire::String<'static>,
17752                                ___E,
17753                            >(
17754                                value, preallocated.encoder, &mut out, 100
17755                            )?;
17756                        } else {
17757                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
17758                        }
17759                    }
17760
17761                    2 => {
17762                        if let Some(value) = &self.source {
17763                            ::fidl_next::wire::Envelope::encode_value::<
17764                                crate::wire::Ref<'static>,
17765                                ___E,
17766                            >(
17767                                value, preallocated.encoder, &mut out, ()
17768                            )?;
17769                        } else {
17770                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
17771                        }
17772                    }
17773
17774                    1 => {
17775                        if let Some(value) = &self.source_name {
17776                            ::fidl_next::wire::Envelope::encode_value::<
17777                                ::fidl_next::wire::String<'static>,
17778                                ___E,
17779                            >(
17780                                value, preallocated.encoder, &mut out, 100
17781                            )?;
17782                        } else {
17783                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
17784                        }
17785                    }
17786
17787                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
17788                }
17789                unsafe {
17790                    preallocated.write_next(out.assume_init_ref());
17791                }
17792            }
17793
17794            ::fidl_next::wire::Table::encode_len(table, max_ord);
17795
17796            Ok(())
17797        }
17798    }
17799
17800    impl<'de> ::fidl_next::FromWire<crate::wire::RunnerRegistration<'de>> for RunnerRegistration {
17801        #[inline]
17802        fn from_wire(wire_: crate::wire::RunnerRegistration<'de>) -> Self {
17803            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
17804
17805            let source_name = wire_.table.get(1);
17806
17807            let source = wire_.table.get(2);
17808
17809            let target_name = wire_.table.get(3);
17810
17811            Self {
17812                source_name: source_name.map(|envelope| {
17813                    ::fidl_next::FromWire::from_wire(unsafe {
17814                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
17815                    })
17816                }),
17817
17818                source: source.map(|envelope| {
17819                    ::fidl_next::FromWire::from_wire(unsafe {
17820                        envelope.read_unchecked::<crate::wire::Ref<'de>>()
17821                    })
17822                }),
17823
17824                target_name: target_name.map(|envelope| {
17825                    ::fidl_next::FromWire::from_wire(unsafe {
17826                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
17827                    })
17828                }),
17829            }
17830        }
17831    }
17832
17833    impl<'de> ::fidl_next::FromWireRef<crate::wire::RunnerRegistration<'de>> for RunnerRegistration {
17834        #[inline]
17835        fn from_wire_ref(wire: &crate::wire::RunnerRegistration<'de>) -> Self {
17836            Self {
17837                source_name: wire.table.get(1).map(|envelope| {
17838                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
17839                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
17840                    })
17841                }),
17842
17843                source: wire.table.get(2).map(|envelope| {
17844                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
17845                        envelope.deref_unchecked::<crate::wire::Ref<'de>>()
17846                    })
17847                }),
17848
17849                target_name: wire.table.get(3).map(|envelope| {
17850                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
17851                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
17852                    })
17853                }),
17854            }
17855        }
17856    }
17857
17858    #[doc = " A mapping of URL scheme to resolver name.\n"]
17859    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
17860    pub struct ResolverRegistration {
17861        pub resolver: ::core::option::Option<::std::string::String>,
17862
17863        pub source: ::core::option::Option<crate::natural::Ref>,
17864
17865        pub scheme: ::core::option::Option<::std::string::String>,
17866    }
17867
17868    impl ResolverRegistration {
17869        fn __max_ordinal(&self) -> usize {
17870            if self.scheme.is_some() {
17871                return 3;
17872            }
17873
17874            if self.source.is_some() {
17875                return 2;
17876            }
17877
17878            if self.resolver.is_some() {
17879                return 1;
17880            }
17881
17882            0
17883        }
17884    }
17885
17886    unsafe impl<___E> ::fidl_next::Encode<crate::wire::ResolverRegistration<'static>, ___E>
17887        for ResolverRegistration
17888    where
17889        ___E: ::fidl_next::Encoder + ?Sized,
17890    {
17891        #[inline]
17892        fn encode(
17893            mut self,
17894            encoder: &mut ___E,
17895            out: &mut ::core::mem::MaybeUninit<crate::wire::ResolverRegistration<'static>>,
17896            _: (),
17897        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
17898            ::fidl_next::munge!(let crate::wire::ResolverRegistration { table } = out);
17899
17900            let max_ord = self.__max_ordinal();
17901
17902            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
17903            ::fidl_next::Wire::zero_padding(&mut out);
17904
17905            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
17906                ::fidl_next::wire::Envelope,
17907            >(encoder, max_ord);
17908
17909            for i in 1..=max_ord {
17910                match i {
17911                    3 => {
17912                        if let Some(value) = self.scheme.take() {
17913                            ::fidl_next::wire::Envelope::encode_value::<
17914                                ::fidl_next::wire::String<'static>,
17915                                ___E,
17916                            >(
17917                                value, preallocated.encoder, &mut out, 100
17918                            )?;
17919                        } else {
17920                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
17921                        }
17922                    }
17923
17924                    2 => {
17925                        if let Some(value) = self.source.take() {
17926                            ::fidl_next::wire::Envelope::encode_value::<
17927                                crate::wire::Ref<'static>,
17928                                ___E,
17929                            >(
17930                                value, preallocated.encoder, &mut out, ()
17931                            )?;
17932                        } else {
17933                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
17934                        }
17935                    }
17936
17937                    1 => {
17938                        if let Some(value) = self.resolver.take() {
17939                            ::fidl_next::wire::Envelope::encode_value::<
17940                                ::fidl_next::wire::String<'static>,
17941                                ___E,
17942                            >(
17943                                value, preallocated.encoder, &mut out, 100
17944                            )?;
17945                        } else {
17946                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
17947                        }
17948                    }
17949
17950                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
17951                }
17952                unsafe {
17953                    preallocated.write_next(out.assume_init_ref());
17954                }
17955            }
17956
17957            ::fidl_next::wire::Table::encode_len(table, max_ord);
17958
17959            Ok(())
17960        }
17961    }
17962
17963    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::ResolverRegistration<'static>, ___E>
17964        for &'a ResolverRegistration
17965    where
17966        ___E: ::fidl_next::Encoder + ?Sized,
17967    {
17968        #[inline]
17969        fn encode(
17970            self,
17971            encoder: &mut ___E,
17972            out: &mut ::core::mem::MaybeUninit<crate::wire::ResolverRegistration<'static>>,
17973            _: (),
17974        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
17975            ::fidl_next::munge!(let crate::wire::ResolverRegistration { table } = out);
17976
17977            let max_ord = self.__max_ordinal();
17978
17979            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
17980            ::fidl_next::Wire::zero_padding(&mut out);
17981
17982            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
17983                ::fidl_next::wire::Envelope,
17984            >(encoder, max_ord);
17985
17986            for i in 1..=max_ord {
17987                match i {
17988                    3 => {
17989                        if let Some(value) = &self.scheme {
17990                            ::fidl_next::wire::Envelope::encode_value::<
17991                                ::fidl_next::wire::String<'static>,
17992                                ___E,
17993                            >(
17994                                value, preallocated.encoder, &mut out, 100
17995                            )?;
17996                        } else {
17997                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
17998                        }
17999                    }
18000
18001                    2 => {
18002                        if let Some(value) = &self.source {
18003                            ::fidl_next::wire::Envelope::encode_value::<
18004                                crate::wire::Ref<'static>,
18005                                ___E,
18006                            >(
18007                                value, preallocated.encoder, &mut out, ()
18008                            )?;
18009                        } else {
18010                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
18011                        }
18012                    }
18013
18014                    1 => {
18015                        if let Some(value) = &self.resolver {
18016                            ::fidl_next::wire::Envelope::encode_value::<
18017                                ::fidl_next::wire::String<'static>,
18018                                ___E,
18019                            >(
18020                                value, preallocated.encoder, &mut out, 100
18021                            )?;
18022                        } else {
18023                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
18024                        }
18025                    }
18026
18027                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
18028                }
18029                unsafe {
18030                    preallocated.write_next(out.assume_init_ref());
18031                }
18032            }
18033
18034            ::fidl_next::wire::Table::encode_len(table, max_ord);
18035
18036            Ok(())
18037        }
18038    }
18039
18040    impl<'de> ::fidl_next::FromWire<crate::wire::ResolverRegistration<'de>> for ResolverRegistration {
18041        #[inline]
18042        fn from_wire(wire_: crate::wire::ResolverRegistration<'de>) -> Self {
18043            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
18044
18045            let resolver = wire_.table.get(1);
18046
18047            let source = wire_.table.get(2);
18048
18049            let scheme = wire_.table.get(3);
18050
18051            Self {
18052                resolver: resolver.map(|envelope| {
18053                    ::fidl_next::FromWire::from_wire(unsafe {
18054                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
18055                    })
18056                }),
18057
18058                source: source.map(|envelope| {
18059                    ::fidl_next::FromWire::from_wire(unsafe {
18060                        envelope.read_unchecked::<crate::wire::Ref<'de>>()
18061                    })
18062                }),
18063
18064                scheme: scheme.map(|envelope| {
18065                    ::fidl_next::FromWire::from_wire(unsafe {
18066                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
18067                    })
18068                }),
18069            }
18070        }
18071    }
18072
18073    impl<'de> ::fidl_next::FromWireRef<crate::wire::ResolverRegistration<'de>>
18074        for ResolverRegistration
18075    {
18076        #[inline]
18077        fn from_wire_ref(wire: &crate::wire::ResolverRegistration<'de>) -> Self {
18078            Self {
18079                resolver: wire.table.get(1).map(|envelope| {
18080                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
18081                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
18082                    })
18083                }),
18084
18085                source: wire.table.get(2).map(|envelope| {
18086                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
18087                        envelope.deref_unchecked::<crate::wire::Ref<'de>>()
18088                    })
18089                }),
18090
18091                scheme: wire.table.get(3).map(|envelope| {
18092                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
18093                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
18094                    })
18095                }),
18096            }
18097        }
18098    }
18099
18100    #[doc = " Registers a protocol in the environment as a debug capability. This makes\n it available to any component in the environment that uses it with\n `source == debug`.\n\n To learn more about protocols, see:\n https://fuchsia.dev/fuchsia-src/glossary#protocol\n"]
18101    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
18102    pub struct DebugProtocolRegistration {
18103        pub source: ::core::option::Option<crate::natural::Ref>,
18104
18105        pub source_name: ::core::option::Option<::std::string::String>,
18106
18107        pub target_name: ::core::option::Option<::std::string::String>,
18108    }
18109
18110    impl DebugProtocolRegistration {
18111        fn __max_ordinal(&self) -> usize {
18112            if self.target_name.is_some() {
18113                return 3;
18114            }
18115
18116            if self.source_name.is_some() {
18117                return 2;
18118            }
18119
18120            if self.source.is_some() {
18121                return 1;
18122            }
18123
18124            0
18125        }
18126    }
18127
18128    unsafe impl<___E> ::fidl_next::Encode<crate::wire::DebugProtocolRegistration<'static>, ___E>
18129        for DebugProtocolRegistration
18130    where
18131        ___E: ::fidl_next::Encoder + ?Sized,
18132    {
18133        #[inline]
18134        fn encode(
18135            mut self,
18136            encoder: &mut ___E,
18137            out: &mut ::core::mem::MaybeUninit<crate::wire::DebugProtocolRegistration<'static>>,
18138            _: (),
18139        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
18140            ::fidl_next::munge!(let crate::wire::DebugProtocolRegistration { table } = out);
18141
18142            let max_ord = self.__max_ordinal();
18143
18144            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
18145            ::fidl_next::Wire::zero_padding(&mut out);
18146
18147            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
18148                ::fidl_next::wire::Envelope,
18149            >(encoder, max_ord);
18150
18151            for i in 1..=max_ord {
18152                match i {
18153                    3 => {
18154                        if let Some(value) = self.target_name.take() {
18155                            ::fidl_next::wire::Envelope::encode_value::<
18156                                ::fidl_next::wire::String<'static>,
18157                                ___E,
18158                            >(
18159                                value, preallocated.encoder, &mut out, 100
18160                            )?;
18161                        } else {
18162                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
18163                        }
18164                    }
18165
18166                    2 => {
18167                        if let Some(value) = self.source_name.take() {
18168                            ::fidl_next::wire::Envelope::encode_value::<
18169                                ::fidl_next::wire::String<'static>,
18170                                ___E,
18171                            >(
18172                                value, preallocated.encoder, &mut out, 100
18173                            )?;
18174                        } else {
18175                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
18176                        }
18177                    }
18178
18179                    1 => {
18180                        if let Some(value) = self.source.take() {
18181                            ::fidl_next::wire::Envelope::encode_value::<
18182                                crate::wire::Ref<'static>,
18183                                ___E,
18184                            >(
18185                                value, preallocated.encoder, &mut out, ()
18186                            )?;
18187                        } else {
18188                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
18189                        }
18190                    }
18191
18192                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
18193                }
18194                unsafe {
18195                    preallocated.write_next(out.assume_init_ref());
18196                }
18197            }
18198
18199            ::fidl_next::wire::Table::encode_len(table, max_ord);
18200
18201            Ok(())
18202        }
18203    }
18204
18205    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::DebugProtocolRegistration<'static>, ___E>
18206        for &'a DebugProtocolRegistration
18207    where
18208        ___E: ::fidl_next::Encoder + ?Sized,
18209    {
18210        #[inline]
18211        fn encode(
18212            self,
18213            encoder: &mut ___E,
18214            out: &mut ::core::mem::MaybeUninit<crate::wire::DebugProtocolRegistration<'static>>,
18215            _: (),
18216        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
18217            ::fidl_next::munge!(let crate::wire::DebugProtocolRegistration { table } = out);
18218
18219            let max_ord = self.__max_ordinal();
18220
18221            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
18222            ::fidl_next::Wire::zero_padding(&mut out);
18223
18224            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
18225                ::fidl_next::wire::Envelope,
18226            >(encoder, max_ord);
18227
18228            for i in 1..=max_ord {
18229                match i {
18230                    3 => {
18231                        if let Some(value) = &self.target_name {
18232                            ::fidl_next::wire::Envelope::encode_value::<
18233                                ::fidl_next::wire::String<'static>,
18234                                ___E,
18235                            >(
18236                                value, preallocated.encoder, &mut out, 100
18237                            )?;
18238                        } else {
18239                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
18240                        }
18241                    }
18242
18243                    2 => {
18244                        if let Some(value) = &self.source_name {
18245                            ::fidl_next::wire::Envelope::encode_value::<
18246                                ::fidl_next::wire::String<'static>,
18247                                ___E,
18248                            >(
18249                                value, preallocated.encoder, &mut out, 100
18250                            )?;
18251                        } else {
18252                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
18253                        }
18254                    }
18255
18256                    1 => {
18257                        if let Some(value) = &self.source {
18258                            ::fidl_next::wire::Envelope::encode_value::<
18259                                crate::wire::Ref<'static>,
18260                                ___E,
18261                            >(
18262                                value, preallocated.encoder, &mut out, ()
18263                            )?;
18264                        } else {
18265                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
18266                        }
18267                    }
18268
18269                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
18270                }
18271                unsafe {
18272                    preallocated.write_next(out.assume_init_ref());
18273                }
18274            }
18275
18276            ::fidl_next::wire::Table::encode_len(table, max_ord);
18277
18278            Ok(())
18279        }
18280    }
18281
18282    impl<'de> ::fidl_next::FromWire<crate::wire::DebugProtocolRegistration<'de>>
18283        for DebugProtocolRegistration
18284    {
18285        #[inline]
18286        fn from_wire(wire_: crate::wire::DebugProtocolRegistration<'de>) -> Self {
18287            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
18288
18289            let source = wire_.table.get(1);
18290
18291            let source_name = wire_.table.get(2);
18292
18293            let target_name = wire_.table.get(3);
18294
18295            Self {
18296                source: source.map(|envelope| {
18297                    ::fidl_next::FromWire::from_wire(unsafe {
18298                        envelope.read_unchecked::<crate::wire::Ref<'de>>()
18299                    })
18300                }),
18301
18302                source_name: source_name.map(|envelope| {
18303                    ::fidl_next::FromWire::from_wire(unsafe {
18304                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
18305                    })
18306                }),
18307
18308                target_name: target_name.map(|envelope| {
18309                    ::fidl_next::FromWire::from_wire(unsafe {
18310                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
18311                    })
18312                }),
18313            }
18314        }
18315    }
18316
18317    impl<'de> ::fidl_next::FromWireRef<crate::wire::DebugProtocolRegistration<'de>>
18318        for DebugProtocolRegistration
18319    {
18320        #[inline]
18321        fn from_wire_ref(wire: &crate::wire::DebugProtocolRegistration<'de>) -> Self {
18322            Self {
18323                source: wire.table.get(1).map(|envelope| {
18324                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
18325                        envelope.deref_unchecked::<crate::wire::Ref<'de>>()
18326                    })
18327                }),
18328
18329                source_name: wire.table.get(2).map(|envelope| {
18330                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
18331                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
18332                    })
18333                }),
18334
18335                target_name: wire.table.get(3).map(|envelope| {
18336                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
18337                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
18338                    })
18339                }),
18340            }
18341        }
18342    }
18343
18344    #[doc = " Declares a capability registered in the debug section of an environment.\n"]
18345    #[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
18346    pub enum DebugRegistration {
18347        Protocol(crate::natural::DebugProtocolRegistration),
18348
18349        UnknownOrdinal_(u64),
18350    }
18351
18352    impl DebugRegistration {
18353        pub fn is_unknown(&self) -> bool {
18354            #[allow(unreachable_patterns)]
18355            match self {
18356                Self::UnknownOrdinal_(_) => true,
18357                _ => false,
18358            }
18359        }
18360    }
18361
18362    unsafe impl<___E> ::fidl_next::Encode<crate::wire::DebugRegistration<'static>, ___E>
18363        for DebugRegistration
18364    where
18365        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
18366        ___E: ::fidl_next::Encoder,
18367    {
18368        #[inline]
18369        fn encode(
18370            self,
18371            encoder: &mut ___E,
18372            out: &mut ::core::mem::MaybeUninit<crate::wire::DebugRegistration<'static>>,
18373            _: (),
18374        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
18375            ::fidl_next::munge!(let crate::wire::DebugRegistration { raw, _phantom: _ } = out);
18376
18377            match self {
18378                Self::Protocol(value) => ::fidl_next::wire::Union::encode_as::<
18379                    ___E,
18380                    crate::wire::DebugProtocolRegistration<'static>,
18381                >(value, 1, encoder, raw, ())?,
18382
18383                Self::UnknownOrdinal_(ordinal) => {
18384                    return Err(::fidl_next::EncodeError::UnknownUnionOrdinal(ordinal as usize));
18385                }
18386            }
18387
18388            Ok(())
18389        }
18390    }
18391
18392    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::DebugRegistration<'static>, ___E>
18393        for &'a DebugRegistration
18394    where
18395        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
18396        ___E: ::fidl_next::Encoder,
18397    {
18398        #[inline]
18399        fn encode(
18400            self,
18401            encoder: &mut ___E,
18402            out: &mut ::core::mem::MaybeUninit<crate::wire::DebugRegistration<'static>>,
18403            _: (),
18404        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
18405            ::fidl_next::munge!(let crate::wire::DebugRegistration { raw, _phantom: _ } = out);
18406
18407            match self {
18408                DebugRegistration::Protocol(value) => ::fidl_next::wire::Union::encode_as::<
18409                    ___E,
18410                    crate::wire::DebugProtocolRegistration<'static>,
18411                >(value, 1, encoder, raw, ())?,
18412
18413                DebugRegistration::UnknownOrdinal_(ordinal) => {
18414                    return Err(::fidl_next::EncodeError::UnknownUnionOrdinal(*ordinal as usize));
18415                }
18416            }
18417
18418            Ok(())
18419        }
18420    }
18421
18422    unsafe impl<___E>
18423        ::fidl_next::EncodeOption<crate::wire_optional::DebugRegistration<'static>, ___E>
18424        for DebugRegistration
18425    where
18426        ___E: ?Sized,
18427        DebugRegistration: ::fidl_next::Encode<crate::wire::DebugRegistration<'static>, ___E>,
18428    {
18429        #[inline]
18430        fn encode_option(
18431            this: ::core::option::Option<Self>,
18432            encoder: &mut ___E,
18433            out: &mut ::core::mem::MaybeUninit<crate::wire_optional::DebugRegistration<'static>>,
18434            _: (),
18435        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
18436            ::fidl_next::munge!(let crate::wire_optional::DebugRegistration { raw, _phantom: _ } = &mut *out);
18437
18438            if let Some(inner) = this {
18439                let value_out = unsafe { &mut *out.as_mut_ptr().cast() };
18440                ::fidl_next::Encode::encode(inner, encoder, value_out, ())?;
18441            } else {
18442                ::fidl_next::wire::Union::encode_absent(raw);
18443            }
18444
18445            Ok(())
18446        }
18447    }
18448
18449    unsafe impl<'a, ___E>
18450        ::fidl_next::EncodeOption<crate::wire_optional::DebugRegistration<'static>, ___E>
18451        for &'a DebugRegistration
18452    where
18453        ___E: ?Sized,
18454        &'a DebugRegistration: ::fidl_next::Encode<crate::wire::DebugRegistration<'static>, ___E>,
18455    {
18456        #[inline]
18457        fn encode_option(
18458            this: ::core::option::Option<Self>,
18459            encoder: &mut ___E,
18460            out: &mut ::core::mem::MaybeUninit<crate::wire_optional::DebugRegistration<'static>>,
18461            _: (),
18462        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
18463            ::fidl_next::munge!(let crate::wire_optional::DebugRegistration { raw, _phantom: _ } = &mut *out);
18464
18465            if let Some(inner) = this {
18466                let value_out = unsafe { &mut *out.as_mut_ptr().cast() };
18467                ::fidl_next::Encode::encode(inner, encoder, value_out, ())?;
18468            } else {
18469                ::fidl_next::wire::Union::encode_absent(raw);
18470            }
18471
18472            Ok(())
18473        }
18474    }
18475
18476    impl<'de> ::fidl_next::FromWire<crate::wire::DebugRegistration<'de>> for DebugRegistration {
18477        #[inline]
18478        fn from_wire(wire: crate::wire::DebugRegistration<'de>) -> Self {
18479            let wire = ::core::mem::ManuallyDrop::new(wire);
18480            match wire.raw.ordinal() {
18481                1 => Self::Protocol(::fidl_next::FromWire::from_wire(unsafe {
18482                    wire.raw.get().read_unchecked::<crate::wire::DebugProtocolRegistration<'de>>()
18483                })),
18484
18485                ord => return Self::UnknownOrdinal_(ord as u64),
18486            }
18487        }
18488    }
18489
18490    impl<'de> ::fidl_next::FromWireRef<crate::wire::DebugRegistration<'de>> for DebugRegistration {
18491        #[inline]
18492        fn from_wire_ref(wire: &crate::wire::DebugRegistration<'de>) -> Self {
18493            match wire.raw.ordinal() {
18494                1 => Self::Protocol(::fidl_next::FromWireRef::from_wire_ref(unsafe {
18495                    wire.raw.get().deref_unchecked::<crate::wire::DebugProtocolRegistration<'de>>()
18496                })),
18497
18498                ord => return Self::UnknownOrdinal_(ord as u64),
18499            }
18500        }
18501    }
18502
18503    impl<'de> ::fidl_next::FromWireOption<crate::wire_optional::DebugRegistration<'de>>
18504        for DebugRegistration
18505    {
18506        #[inline]
18507        fn from_wire_option(
18508            wire: crate::wire_optional::DebugRegistration<'de>,
18509        ) -> ::core::option::Option<Self> {
18510            if let Some(inner) = wire.into_option() {
18511                Some(::fidl_next::FromWire::from_wire(inner))
18512            } else {
18513                None
18514            }
18515        }
18516    }
18517
18518    impl<'de> ::fidl_next::FromWireOption<crate::wire_optional::DebugRegistration<'de>>
18519        for Box<DebugRegistration>
18520    {
18521        #[inline]
18522        fn from_wire_option(
18523            wire: crate::wire_optional::DebugRegistration<'de>,
18524        ) -> ::core::option::Option<Self> {
18525            <DebugRegistration as ::fidl_next::FromWireOption<
18526                crate::wire_optional::DebugRegistration<'de>,
18527            >>::from_wire_option(wire)
18528            .map(Box::new)
18529        }
18530    }
18531
18532    impl<'de> ::fidl_next::FromWireOptionRef<crate::wire_optional::DebugRegistration<'de>>
18533        for Box<DebugRegistration>
18534    {
18535        #[inline]
18536        fn from_wire_option_ref(
18537            wire: &crate::wire_optional::DebugRegistration<'de>,
18538        ) -> ::core::option::Option<Self> {
18539            if let Some(inner) = wire.as_ref() {
18540                Some(Box::new(::fidl_next::FromWireRef::from_wire_ref(inner)))
18541            } else {
18542                None
18543            }
18544        }
18545    }
18546
18547    #[doc = " Declares an environment which configures a realm.\n"]
18548    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
18549    pub struct Environment {
18550        pub name: ::core::option::Option<::std::string::String>,
18551
18552        pub extends: ::core::option::Option<crate::natural::EnvironmentExtends>,
18553
18554        pub runners: ::core::option::Option<::std::vec::Vec<crate::natural::RunnerRegistration>>,
18555
18556        pub resolvers:
18557            ::core::option::Option<::std::vec::Vec<crate::natural::ResolverRegistration>>,
18558
18559        pub debug_capabilities:
18560            ::core::option::Option<::std::vec::Vec<crate::natural::DebugRegistration>>,
18561
18562        pub stop_timeout_ms: ::core::option::Option<u32>,
18563    }
18564
18565    impl Environment {
18566        fn __max_ordinal(&self) -> usize {
18567            if self.stop_timeout_ms.is_some() {
18568                return 6;
18569            }
18570
18571            if self.debug_capabilities.is_some() {
18572                return 5;
18573            }
18574
18575            if self.resolvers.is_some() {
18576                return 4;
18577            }
18578
18579            if self.runners.is_some() {
18580                return 3;
18581            }
18582
18583            if self.extends.is_some() {
18584                return 2;
18585            }
18586
18587            if self.name.is_some() {
18588                return 1;
18589            }
18590
18591            0
18592        }
18593    }
18594
18595    unsafe impl<___E> ::fidl_next::Encode<crate::wire::Environment<'static>, ___E> for Environment
18596    where
18597        ___E: ::fidl_next::Encoder + ?Sized,
18598    {
18599        #[inline]
18600        fn encode(
18601            mut self,
18602            encoder: &mut ___E,
18603            out: &mut ::core::mem::MaybeUninit<crate::wire::Environment<'static>>,
18604            _: (),
18605        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
18606            ::fidl_next::munge!(let crate::wire::Environment { table } = out);
18607
18608            let max_ord = self.__max_ordinal();
18609
18610            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
18611            ::fidl_next::Wire::zero_padding(&mut out);
18612
18613            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
18614                ::fidl_next::wire::Envelope,
18615            >(encoder, max_ord);
18616
18617            for i in 1..=max_ord {
18618                match i {
18619                    6 => {
18620                        if let Some(value) = self.stop_timeout_ms.take() {
18621                            ::fidl_next::wire::Envelope::encode_value::<
18622                                ::fidl_next::wire::Uint32,
18623                                ___E,
18624                            >(
18625                                value, preallocated.encoder, &mut out, ()
18626                            )?;
18627                        } else {
18628                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
18629                        }
18630                    }
18631
18632                    5 => {
18633                        if let Some(value) = self.debug_capabilities.take() {
18634                            ::fidl_next::wire::Envelope::encode_value::<
18635                                ::fidl_next::wire::Vector<
18636                                    'static,
18637                                    crate::wire::DebugRegistration<'static>,
18638                                >,
18639                                ___E,
18640                            >(
18641                                value, preallocated.encoder, &mut out, (4294967295, ())
18642                            )?;
18643                        } else {
18644                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
18645                        }
18646                    }
18647
18648                    4 => {
18649                        if let Some(value) = self.resolvers.take() {
18650                            ::fidl_next::wire::Envelope::encode_value::<
18651                                ::fidl_next::wire::Vector<
18652                                    'static,
18653                                    crate::wire::ResolverRegistration<'static>,
18654                                >,
18655                                ___E,
18656                            >(
18657                                value, preallocated.encoder, &mut out, (4294967295, ())
18658                            )?;
18659                        } else {
18660                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
18661                        }
18662                    }
18663
18664                    3 => {
18665                        if let Some(value) = self.runners.take() {
18666                            ::fidl_next::wire::Envelope::encode_value::<
18667                                ::fidl_next::wire::Vector<
18668                                    'static,
18669                                    crate::wire::RunnerRegistration<'static>,
18670                                >,
18671                                ___E,
18672                            >(
18673                                value, preallocated.encoder, &mut out, (4294967295, ())
18674                            )?;
18675                        } else {
18676                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
18677                        }
18678                    }
18679
18680                    2 => {
18681                        if let Some(value) = self.extends.take() {
18682                            ::fidl_next::wire::Envelope::encode_value::<
18683                                crate::wire::EnvironmentExtends,
18684                                ___E,
18685                            >(
18686                                value, preallocated.encoder, &mut out, ()
18687                            )?;
18688                        } else {
18689                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
18690                        }
18691                    }
18692
18693                    1 => {
18694                        if let Some(value) = self.name.take() {
18695                            ::fidl_next::wire::Envelope::encode_value::<
18696                                ::fidl_next::wire::String<'static>,
18697                                ___E,
18698                            >(
18699                                value, preallocated.encoder, &mut out, 100
18700                            )?;
18701                        } else {
18702                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
18703                        }
18704                    }
18705
18706                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
18707                }
18708                unsafe {
18709                    preallocated.write_next(out.assume_init_ref());
18710                }
18711            }
18712
18713            ::fidl_next::wire::Table::encode_len(table, max_ord);
18714
18715            Ok(())
18716        }
18717    }
18718
18719    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::Environment<'static>, ___E>
18720        for &'a Environment
18721    where
18722        ___E: ::fidl_next::Encoder + ?Sized,
18723    {
18724        #[inline]
18725        fn encode(
18726            self,
18727            encoder: &mut ___E,
18728            out: &mut ::core::mem::MaybeUninit<crate::wire::Environment<'static>>,
18729            _: (),
18730        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
18731            ::fidl_next::munge!(let crate::wire::Environment { table } = out);
18732
18733            let max_ord = self.__max_ordinal();
18734
18735            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
18736            ::fidl_next::Wire::zero_padding(&mut out);
18737
18738            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
18739                ::fidl_next::wire::Envelope,
18740            >(encoder, max_ord);
18741
18742            for i in 1..=max_ord {
18743                match i {
18744                    6 => {
18745                        if let Some(value) = &self.stop_timeout_ms {
18746                            ::fidl_next::wire::Envelope::encode_value::<
18747                                ::fidl_next::wire::Uint32,
18748                                ___E,
18749                            >(
18750                                value, preallocated.encoder, &mut out, ()
18751                            )?;
18752                        } else {
18753                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
18754                        }
18755                    }
18756
18757                    5 => {
18758                        if let Some(value) = &self.debug_capabilities {
18759                            ::fidl_next::wire::Envelope::encode_value::<
18760                                ::fidl_next::wire::Vector<
18761                                    'static,
18762                                    crate::wire::DebugRegistration<'static>,
18763                                >,
18764                                ___E,
18765                            >(
18766                                value, preallocated.encoder, &mut out, (4294967295, ())
18767                            )?;
18768                        } else {
18769                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
18770                        }
18771                    }
18772
18773                    4 => {
18774                        if let Some(value) = &self.resolvers {
18775                            ::fidl_next::wire::Envelope::encode_value::<
18776                                ::fidl_next::wire::Vector<
18777                                    'static,
18778                                    crate::wire::ResolverRegistration<'static>,
18779                                >,
18780                                ___E,
18781                            >(
18782                                value, preallocated.encoder, &mut out, (4294967295, ())
18783                            )?;
18784                        } else {
18785                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
18786                        }
18787                    }
18788
18789                    3 => {
18790                        if let Some(value) = &self.runners {
18791                            ::fidl_next::wire::Envelope::encode_value::<
18792                                ::fidl_next::wire::Vector<
18793                                    'static,
18794                                    crate::wire::RunnerRegistration<'static>,
18795                                >,
18796                                ___E,
18797                            >(
18798                                value, preallocated.encoder, &mut out, (4294967295, ())
18799                            )?;
18800                        } else {
18801                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
18802                        }
18803                    }
18804
18805                    2 => {
18806                        if let Some(value) = &self.extends {
18807                            ::fidl_next::wire::Envelope::encode_value::<
18808                                crate::wire::EnvironmentExtends,
18809                                ___E,
18810                            >(
18811                                value, preallocated.encoder, &mut out, ()
18812                            )?;
18813                        } else {
18814                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
18815                        }
18816                    }
18817
18818                    1 => {
18819                        if let Some(value) = &self.name {
18820                            ::fidl_next::wire::Envelope::encode_value::<
18821                                ::fidl_next::wire::String<'static>,
18822                                ___E,
18823                            >(
18824                                value, preallocated.encoder, &mut out, 100
18825                            )?;
18826                        } else {
18827                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
18828                        }
18829                    }
18830
18831                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
18832                }
18833                unsafe {
18834                    preallocated.write_next(out.assume_init_ref());
18835                }
18836            }
18837
18838            ::fidl_next::wire::Table::encode_len(table, max_ord);
18839
18840            Ok(())
18841        }
18842    }
18843
18844    impl<'de> ::fidl_next::FromWire<crate::wire::Environment<'de>> for Environment {
18845        #[inline]
18846        fn from_wire(wire_: crate::wire::Environment<'de>) -> Self {
18847            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
18848
18849            let name = wire_.table.get(1);
18850
18851            let extends = wire_.table.get(2);
18852
18853            let runners = wire_.table.get(3);
18854
18855            let resolvers = wire_.table.get(4);
18856
18857            let debug_capabilities = wire_.table.get(5);
18858
18859            let stop_timeout_ms = wire_.table.get(6);
18860
18861            Self {
18862
18863
18864                name: name.map(|envelope| ::fidl_next::FromWire::from_wire(
18865                    unsafe { envelope.read_unchecked::<::fidl_next::wire::String<'de>>() }
18866                )),
18867
18868
18869                extends: extends.map(|envelope| ::fidl_next::FromWire::from_wire(
18870                    unsafe { envelope.read_unchecked::<crate::wire::EnvironmentExtends>() }
18871                )),
18872
18873
18874                runners: runners.map(|envelope| ::fidl_next::FromWire::from_wire(
18875                    unsafe { envelope.read_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::RunnerRegistration<'de>>>() }
18876                )),
18877
18878
18879                resolvers: resolvers.map(|envelope| ::fidl_next::FromWire::from_wire(
18880                    unsafe { envelope.read_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::ResolverRegistration<'de>>>() }
18881                )),
18882
18883
18884                debug_capabilities: debug_capabilities.map(|envelope| ::fidl_next::FromWire::from_wire(
18885                    unsafe { envelope.read_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::DebugRegistration<'de>>>() }
18886                )),
18887
18888
18889                stop_timeout_ms: stop_timeout_ms.map(|envelope| ::fidl_next::FromWire::from_wire(
18890                    unsafe { envelope.read_unchecked::<::fidl_next::wire::Uint32>() }
18891                )),
18892
18893        }
18894        }
18895    }
18896
18897    impl<'de> ::fidl_next::FromWireRef<crate::wire::Environment<'de>> for Environment {
18898        #[inline]
18899        fn from_wire_ref(wire: &crate::wire::Environment<'de>) -> Self {
18900            Self {
18901
18902
18903                name: wire.table.get(1)
18904                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
18905                        unsafe { envelope.deref_unchecked::<::fidl_next::wire::String<'de>>() }
18906                    )),
18907
18908
18909                extends: wire.table.get(2)
18910                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
18911                        unsafe { envelope.deref_unchecked::<crate::wire::EnvironmentExtends>() }
18912                    )),
18913
18914
18915                runners: wire.table.get(3)
18916                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
18917                        unsafe { envelope.deref_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::RunnerRegistration<'de>>>() }
18918                    )),
18919
18920
18921                resolvers: wire.table.get(4)
18922                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
18923                        unsafe { envelope.deref_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::ResolverRegistration<'de>>>() }
18924                    )),
18925
18926
18927                debug_capabilities: wire.table.get(5)
18928                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
18929                        unsafe { envelope.deref_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::DebugRegistration<'de>>>() }
18930                    )),
18931
18932
18933                stop_timeout_ms: wire.table.get(6)
18934                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
18935                        unsafe { envelope.deref_unchecked::<::fidl_next::wire::Uint32>() }
18936                    )),
18937
18938        }
18939        }
18940    }
18941
18942    #[derive(Debug, Default, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
18943    pub struct ConfigSourceCapabilities {}
18944
18945    impl ConfigSourceCapabilities {
18946        fn __max_ordinal(&self) -> usize {
18947            0
18948        }
18949    }
18950
18951    unsafe impl<___E> ::fidl_next::Encode<crate::wire::ConfigSourceCapabilities<'static>, ___E>
18952        for ConfigSourceCapabilities
18953    where
18954        ___E: ::fidl_next::Encoder + ?Sized,
18955    {
18956        #[inline]
18957        fn encode(
18958            mut self,
18959            encoder: &mut ___E,
18960            out: &mut ::core::mem::MaybeUninit<crate::wire::ConfigSourceCapabilities<'static>>,
18961            _: (),
18962        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
18963            ::fidl_next::munge!(let crate::wire::ConfigSourceCapabilities { table } = out);
18964
18965            let max_ord = self.__max_ordinal();
18966
18967            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
18968            ::fidl_next::Wire::zero_padding(&mut out);
18969
18970            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
18971                ::fidl_next::wire::Envelope,
18972            >(encoder, max_ord);
18973
18974            for i in 1..=max_ord {
18975                match i {
18976                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
18977                }
18978                unsafe {
18979                    preallocated.write_next(out.assume_init_ref());
18980                }
18981            }
18982
18983            ::fidl_next::wire::Table::encode_len(table, max_ord);
18984
18985            Ok(())
18986        }
18987    }
18988
18989    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::ConfigSourceCapabilities<'static>, ___E>
18990        for &'a ConfigSourceCapabilities
18991    where
18992        ___E: ::fidl_next::Encoder + ?Sized,
18993    {
18994        #[inline]
18995        fn encode(
18996            self,
18997            encoder: &mut ___E,
18998            out: &mut ::core::mem::MaybeUninit<crate::wire::ConfigSourceCapabilities<'static>>,
18999            _: (),
19000        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
19001            ::fidl_next::munge!(let crate::wire::ConfigSourceCapabilities { table } = out);
19002
19003            let max_ord = self.__max_ordinal();
19004
19005            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
19006            ::fidl_next::Wire::zero_padding(&mut out);
19007
19008            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
19009                ::fidl_next::wire::Envelope,
19010            >(encoder, max_ord);
19011
19012            for i in 1..=max_ord {
19013                match i {
19014                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
19015                }
19016                unsafe {
19017                    preallocated.write_next(out.assume_init_ref());
19018                }
19019            }
19020
19021            ::fidl_next::wire::Table::encode_len(table, max_ord);
19022
19023            Ok(())
19024        }
19025    }
19026
19027    impl<'de> ::fidl_next::FromWire<crate::wire::ConfigSourceCapabilities<'de>>
19028        for ConfigSourceCapabilities
19029    {
19030        #[inline]
19031        fn from_wire(wire_: crate::wire::ConfigSourceCapabilities<'de>) -> Self {
19032            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
19033
19034            Self {}
19035        }
19036    }
19037
19038    impl<'de> ::fidl_next::FromWireRef<crate::wire::ConfigSourceCapabilities<'de>>
19039        for ConfigSourceCapabilities
19040    {
19041        #[inline]
19042        fn from_wire_ref(wire: &crate::wire::ConfigSourceCapabilities<'de>) -> Self {
19043            Self {}
19044        }
19045    }
19046
19047    #[doc = " Strategies available for resolving configuration values.\n"]
19048    #[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
19049    pub enum ConfigValueSource {
19050        PackagePath(::std::string::String),
19051
19052        Capabilities(crate::natural::ConfigSourceCapabilities),
19053
19054        UnknownOrdinal_(u64),
19055    }
19056
19057    impl ConfigValueSource {
19058        pub fn is_unknown(&self) -> bool {
19059            #[allow(unreachable_patterns)]
19060            match self {
19061                Self::UnknownOrdinal_(_) => true,
19062                _ => false,
19063            }
19064        }
19065    }
19066
19067    unsafe impl<___E> ::fidl_next::Encode<crate::wire::ConfigValueSource<'static>, ___E>
19068        for ConfigValueSource
19069    where
19070        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
19071        ___E: ::fidl_next::Encoder,
19072    {
19073        #[inline]
19074        fn encode(
19075            self,
19076            encoder: &mut ___E,
19077            out: &mut ::core::mem::MaybeUninit<crate::wire::ConfigValueSource<'static>>,
19078            _: (),
19079        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
19080            ::fidl_next::munge!(let crate::wire::ConfigValueSource { raw, _phantom: _ } = out);
19081
19082            match self {
19083                Self::PackagePath(value) => ::fidl_next::wire::Union::encode_as::<
19084                    ___E,
19085                    ::fidl_next::wire::String<'static>,
19086                >(value, 1, encoder, raw, 4294967295)?,
19087
19088                Self::Capabilities(value) => ::fidl_next::wire::Union::encode_as::<
19089                    ___E,
19090                    crate::wire::ConfigSourceCapabilities<'static>,
19091                >(value, 2, encoder, raw, ())?,
19092
19093                Self::UnknownOrdinal_(ordinal) => {
19094                    return Err(::fidl_next::EncodeError::UnknownUnionOrdinal(ordinal as usize));
19095                }
19096            }
19097
19098            Ok(())
19099        }
19100    }
19101
19102    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::ConfigValueSource<'static>, ___E>
19103        for &'a ConfigValueSource
19104    where
19105        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
19106        ___E: ::fidl_next::Encoder,
19107    {
19108        #[inline]
19109        fn encode(
19110            self,
19111            encoder: &mut ___E,
19112            out: &mut ::core::mem::MaybeUninit<crate::wire::ConfigValueSource<'static>>,
19113            _: (),
19114        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
19115            ::fidl_next::munge!(let crate::wire::ConfigValueSource { raw, _phantom: _ } = out);
19116
19117            match self {
19118                ConfigValueSource::PackagePath(value) => {
19119                    ::fidl_next::wire::Union::encode_as::<___E, ::fidl_next::wire::String<'static>>(
19120                        value, 1, encoder, raw, 4294967295,
19121                    )?
19122                }
19123
19124                ConfigValueSource::Capabilities(value) => {
19125                    ::fidl_next::wire::Union::encode_as::<
19126                        ___E,
19127                        crate::wire::ConfigSourceCapabilities<'static>,
19128                    >(value, 2, encoder, raw, ())?
19129                }
19130
19131                ConfigValueSource::UnknownOrdinal_(ordinal) => {
19132                    return Err(::fidl_next::EncodeError::UnknownUnionOrdinal(*ordinal as usize));
19133                }
19134            }
19135
19136            Ok(())
19137        }
19138    }
19139
19140    unsafe impl<___E>
19141        ::fidl_next::EncodeOption<crate::wire_optional::ConfigValueSource<'static>, ___E>
19142        for ConfigValueSource
19143    where
19144        ___E: ?Sized,
19145        ConfigValueSource: ::fidl_next::Encode<crate::wire::ConfigValueSource<'static>, ___E>,
19146    {
19147        #[inline]
19148        fn encode_option(
19149            this: ::core::option::Option<Self>,
19150            encoder: &mut ___E,
19151            out: &mut ::core::mem::MaybeUninit<crate::wire_optional::ConfigValueSource<'static>>,
19152            _: (),
19153        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
19154            ::fidl_next::munge!(let crate::wire_optional::ConfigValueSource { raw, _phantom: _ } = &mut *out);
19155
19156            if let Some(inner) = this {
19157                let value_out = unsafe { &mut *out.as_mut_ptr().cast() };
19158                ::fidl_next::Encode::encode(inner, encoder, value_out, ())?;
19159            } else {
19160                ::fidl_next::wire::Union::encode_absent(raw);
19161            }
19162
19163            Ok(())
19164        }
19165    }
19166
19167    unsafe impl<'a, ___E>
19168        ::fidl_next::EncodeOption<crate::wire_optional::ConfigValueSource<'static>, ___E>
19169        for &'a ConfigValueSource
19170    where
19171        ___E: ?Sized,
19172        &'a ConfigValueSource: ::fidl_next::Encode<crate::wire::ConfigValueSource<'static>, ___E>,
19173    {
19174        #[inline]
19175        fn encode_option(
19176            this: ::core::option::Option<Self>,
19177            encoder: &mut ___E,
19178            out: &mut ::core::mem::MaybeUninit<crate::wire_optional::ConfigValueSource<'static>>,
19179            _: (),
19180        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
19181            ::fidl_next::munge!(let crate::wire_optional::ConfigValueSource { raw, _phantom: _ } = &mut *out);
19182
19183            if let Some(inner) = this {
19184                let value_out = unsafe { &mut *out.as_mut_ptr().cast() };
19185                ::fidl_next::Encode::encode(inner, encoder, value_out, ())?;
19186            } else {
19187                ::fidl_next::wire::Union::encode_absent(raw);
19188            }
19189
19190            Ok(())
19191        }
19192    }
19193
19194    impl<'de> ::fidl_next::FromWire<crate::wire::ConfigValueSource<'de>> for ConfigValueSource {
19195        #[inline]
19196        fn from_wire(wire: crate::wire::ConfigValueSource<'de>) -> Self {
19197            let wire = ::core::mem::ManuallyDrop::new(wire);
19198            match wire.raw.ordinal() {
19199                1 => Self::PackagePath(::fidl_next::FromWire::from_wire(unsafe {
19200                    wire.raw.get().read_unchecked::<::fidl_next::wire::String<'de>>()
19201                })),
19202
19203                2 => Self::Capabilities(::fidl_next::FromWire::from_wire(unsafe {
19204                    wire.raw.get().read_unchecked::<crate::wire::ConfigSourceCapabilities<'de>>()
19205                })),
19206
19207                ord => return Self::UnknownOrdinal_(ord as u64),
19208            }
19209        }
19210    }
19211
19212    impl<'de> ::fidl_next::FromWireRef<crate::wire::ConfigValueSource<'de>> for ConfigValueSource {
19213        #[inline]
19214        fn from_wire_ref(wire: &crate::wire::ConfigValueSource<'de>) -> Self {
19215            match wire.raw.ordinal() {
19216                1 => Self::PackagePath(::fidl_next::FromWireRef::from_wire_ref(unsafe {
19217                    wire.raw.get().deref_unchecked::<::fidl_next::wire::String<'de>>()
19218                })),
19219
19220                2 => Self::Capabilities(::fidl_next::FromWireRef::from_wire_ref(unsafe {
19221                    wire.raw.get().deref_unchecked::<crate::wire::ConfigSourceCapabilities<'de>>()
19222                })),
19223
19224                ord => return Self::UnknownOrdinal_(ord as u64),
19225            }
19226        }
19227    }
19228
19229    impl<'de> ::fidl_next::FromWireOption<crate::wire_optional::ConfigValueSource<'de>>
19230        for ConfigValueSource
19231    {
19232        #[inline]
19233        fn from_wire_option(
19234            wire: crate::wire_optional::ConfigValueSource<'de>,
19235        ) -> ::core::option::Option<Self> {
19236            if let Some(inner) = wire.into_option() {
19237                Some(::fidl_next::FromWire::from_wire(inner))
19238            } else {
19239                None
19240            }
19241        }
19242    }
19243
19244    impl<'de> ::fidl_next::FromWireOption<crate::wire_optional::ConfigValueSource<'de>>
19245        for Box<ConfigValueSource>
19246    {
19247        #[inline]
19248        fn from_wire_option(
19249            wire: crate::wire_optional::ConfigValueSource<'de>,
19250        ) -> ::core::option::Option<Self> {
19251            <ConfigValueSource as ::fidl_next::FromWireOption<
19252                crate::wire_optional::ConfigValueSource<'de>,
19253            >>::from_wire_option(wire)
19254            .map(Box::new)
19255        }
19256    }
19257
19258    impl<'de> ::fidl_next::FromWireOptionRef<crate::wire_optional::ConfigValueSource<'de>>
19259        for Box<ConfigValueSource>
19260    {
19261        #[inline]
19262        fn from_wire_option_ref(
19263            wire: &crate::wire_optional::ConfigValueSource<'de>,
19264        ) -> ::core::option::Option<Self> {
19265            if let Some(inner) = wire.as_ref() {
19266                Some(Box::new(::fidl_next::FromWireRef::from_wire_ref(inner)))
19267            } else {
19268                None
19269            }
19270        }
19271    }
19272
19273    #[doc = " The schema of a component\'s configuration interface.\n"]
19274    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
19275    pub struct ConfigSchema {
19276        pub fields: ::core::option::Option<::std::vec::Vec<crate::natural::ConfigField>>,
19277
19278        pub checksum: ::core::option::Option<crate::natural::ConfigChecksum>,
19279
19280        pub value_source: ::core::option::Option<crate::natural::ConfigValueSource>,
19281    }
19282
19283    impl ConfigSchema {
19284        fn __max_ordinal(&self) -> usize {
19285            if self.value_source.is_some() {
19286                return 3;
19287            }
19288
19289            if self.checksum.is_some() {
19290                return 2;
19291            }
19292
19293            if self.fields.is_some() {
19294                return 1;
19295            }
19296
19297            0
19298        }
19299    }
19300
19301    unsafe impl<___E> ::fidl_next::Encode<crate::wire::ConfigSchema<'static>, ___E> for ConfigSchema
19302    where
19303        ___E: ::fidl_next::Encoder + ?Sized,
19304    {
19305        #[inline]
19306        fn encode(
19307            mut self,
19308            encoder: &mut ___E,
19309            out: &mut ::core::mem::MaybeUninit<crate::wire::ConfigSchema<'static>>,
19310            _: (),
19311        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
19312            ::fidl_next::munge!(let crate::wire::ConfigSchema { table } = out);
19313
19314            let max_ord = self.__max_ordinal();
19315
19316            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
19317            ::fidl_next::Wire::zero_padding(&mut out);
19318
19319            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
19320                ::fidl_next::wire::Envelope,
19321            >(encoder, max_ord);
19322
19323            for i in 1..=max_ord {
19324                match i {
19325                    3 => {
19326                        if let Some(value) = self.value_source.take() {
19327                            ::fidl_next::wire::Envelope::encode_value::<
19328                                crate::wire::ConfigValueSource<'static>,
19329                                ___E,
19330                            >(
19331                                value, preallocated.encoder, &mut out, ()
19332                            )?;
19333                        } else {
19334                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
19335                        }
19336                    }
19337
19338                    2 => {
19339                        if let Some(value) = self.checksum.take() {
19340                            ::fidl_next::wire::Envelope::encode_value::<
19341                                crate::wire::ConfigChecksum<'static>,
19342                                ___E,
19343                            >(
19344                                value, preallocated.encoder, &mut out, ()
19345                            )?;
19346                        } else {
19347                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
19348                        }
19349                    }
19350
19351                    1 => {
19352                        if let Some(value) = self.fields.take() {
19353                            ::fidl_next::wire::Envelope::encode_value::<
19354                                ::fidl_next::wire::Vector<
19355                                    'static,
19356                                    crate::wire::ConfigField<'static>,
19357                                >,
19358                                ___E,
19359                            >(
19360                                value, preallocated.encoder, &mut out, (4294967295, ())
19361                            )?;
19362                        } else {
19363                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
19364                        }
19365                    }
19366
19367                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
19368                }
19369                unsafe {
19370                    preallocated.write_next(out.assume_init_ref());
19371                }
19372            }
19373
19374            ::fidl_next::wire::Table::encode_len(table, max_ord);
19375
19376            Ok(())
19377        }
19378    }
19379
19380    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::ConfigSchema<'static>, ___E>
19381        for &'a ConfigSchema
19382    where
19383        ___E: ::fidl_next::Encoder + ?Sized,
19384    {
19385        #[inline]
19386        fn encode(
19387            self,
19388            encoder: &mut ___E,
19389            out: &mut ::core::mem::MaybeUninit<crate::wire::ConfigSchema<'static>>,
19390            _: (),
19391        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
19392            ::fidl_next::munge!(let crate::wire::ConfigSchema { table } = out);
19393
19394            let max_ord = self.__max_ordinal();
19395
19396            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
19397            ::fidl_next::Wire::zero_padding(&mut out);
19398
19399            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
19400                ::fidl_next::wire::Envelope,
19401            >(encoder, max_ord);
19402
19403            for i in 1..=max_ord {
19404                match i {
19405                    3 => {
19406                        if let Some(value) = &self.value_source {
19407                            ::fidl_next::wire::Envelope::encode_value::<
19408                                crate::wire::ConfigValueSource<'static>,
19409                                ___E,
19410                            >(
19411                                value, preallocated.encoder, &mut out, ()
19412                            )?;
19413                        } else {
19414                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
19415                        }
19416                    }
19417
19418                    2 => {
19419                        if let Some(value) = &self.checksum {
19420                            ::fidl_next::wire::Envelope::encode_value::<
19421                                crate::wire::ConfigChecksum<'static>,
19422                                ___E,
19423                            >(
19424                                value, preallocated.encoder, &mut out, ()
19425                            )?;
19426                        } else {
19427                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
19428                        }
19429                    }
19430
19431                    1 => {
19432                        if let Some(value) = &self.fields {
19433                            ::fidl_next::wire::Envelope::encode_value::<
19434                                ::fidl_next::wire::Vector<
19435                                    'static,
19436                                    crate::wire::ConfigField<'static>,
19437                                >,
19438                                ___E,
19439                            >(
19440                                value, preallocated.encoder, &mut out, (4294967295, ())
19441                            )?;
19442                        } else {
19443                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
19444                        }
19445                    }
19446
19447                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
19448                }
19449                unsafe {
19450                    preallocated.write_next(out.assume_init_ref());
19451                }
19452            }
19453
19454            ::fidl_next::wire::Table::encode_len(table, max_ord);
19455
19456            Ok(())
19457        }
19458    }
19459
19460    impl<'de> ::fidl_next::FromWire<crate::wire::ConfigSchema<'de>> for ConfigSchema {
19461        #[inline]
19462        fn from_wire(wire_: crate::wire::ConfigSchema<'de>) -> Self {
19463            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
19464
19465            let fields = wire_.table.get(1);
19466
19467            let checksum = wire_.table.get(2);
19468
19469            let value_source = wire_.table.get(3);
19470
19471            Self {
19472
19473
19474                fields: fields.map(|envelope| ::fidl_next::FromWire::from_wire(
19475                    unsafe { envelope.read_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::ConfigField<'de>>>() }
19476                )),
19477
19478
19479                checksum: checksum.map(|envelope| ::fidl_next::FromWire::from_wire(
19480                    unsafe { envelope.read_unchecked::<crate::wire::ConfigChecksum<'de>>() }
19481                )),
19482
19483
19484                value_source: value_source.map(|envelope| ::fidl_next::FromWire::from_wire(
19485                    unsafe { envelope.read_unchecked::<crate::wire::ConfigValueSource<'de>>() }
19486                )),
19487
19488        }
19489        }
19490    }
19491
19492    impl<'de> ::fidl_next::FromWireRef<crate::wire::ConfigSchema<'de>> for ConfigSchema {
19493        #[inline]
19494        fn from_wire_ref(wire: &crate::wire::ConfigSchema<'de>) -> Self {
19495            Self {
19496
19497
19498                fields: wire.table.get(1)
19499                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
19500                        unsafe { envelope.deref_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::ConfigField<'de>>>() }
19501                    )),
19502
19503
19504                checksum: wire.table.get(2)
19505                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
19506                        unsafe { envelope.deref_unchecked::<crate::wire::ConfigChecksum<'de>>() }
19507                    )),
19508
19509
19510                value_source: wire.table.get(3)
19511                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
19512                        unsafe { envelope.deref_unchecked::<crate::wire::ConfigValueSource<'de>>() }
19513                    )),
19514
19515        }
19516        }
19517    }
19518
19519    #[doc = " A component declaration.\n\n This information is typically encoded in the component manifest (.cm file)\n if it has one or may be generated at runtime by a component resolver for\n those that don\'t.\n"]
19520    #[derive(Debug, Default, Clone, PartialEq)]
19521    pub struct Component {
19522        pub program: ::core::option::Option<crate::natural::Program>,
19523
19524        pub uses: ::core::option::Option<::std::vec::Vec<crate::natural::Use>>,
19525
19526        pub exposes: ::core::option::Option<::std::vec::Vec<crate::natural::Expose>>,
19527
19528        pub offers: ::core::option::Option<::std::vec::Vec<crate::natural::Offer>>,
19529
19530        pub capabilities: ::core::option::Option<::std::vec::Vec<crate::natural::Capability>>,
19531
19532        pub children: ::core::option::Option<::std::vec::Vec<crate::natural::Child>>,
19533
19534        pub collections: ::core::option::Option<::std::vec::Vec<crate::natural::Collection>>,
19535
19536        pub environments: ::core::option::Option<::std::vec::Vec<crate::natural::Environment>>,
19537
19538        pub facets: ::core::option::Option<::fidl_next_common_fuchsia_data::natural::Dictionary>,
19539
19540        pub config: ::core::option::Option<crate::natural::ConfigSchema>,
19541
19542        pub debug_info: ::core::option::Option<crate::natural::DebugInfo>,
19543    }
19544
19545    impl Component {
19546        fn __max_ordinal(&self) -> usize {
19547            if self.debug_info.is_some() {
19548                return 11;
19549            }
19550
19551            if self.config.is_some() {
19552                return 10;
19553            }
19554
19555            if self.facets.is_some() {
19556                return 9;
19557            }
19558
19559            if self.environments.is_some() {
19560                return 8;
19561            }
19562
19563            if self.collections.is_some() {
19564                return 7;
19565            }
19566
19567            if self.children.is_some() {
19568                return 6;
19569            }
19570
19571            if self.capabilities.is_some() {
19572                return 5;
19573            }
19574
19575            if self.offers.is_some() {
19576                return 4;
19577            }
19578
19579            if self.exposes.is_some() {
19580                return 3;
19581            }
19582
19583            if self.uses.is_some() {
19584                return 2;
19585            }
19586
19587            if self.program.is_some() {
19588                return 1;
19589            }
19590
19591            0
19592        }
19593    }
19594
19595    unsafe impl<___E> ::fidl_next::Encode<crate::wire::Component<'static>, ___E> for Component
19596    where
19597        ___E: ::fidl_next::Encoder + ?Sized,
19598    {
19599        #[inline]
19600        fn encode(
19601            mut self,
19602            encoder: &mut ___E,
19603            out: &mut ::core::mem::MaybeUninit<crate::wire::Component<'static>>,
19604            _: (),
19605        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
19606            ::fidl_next::munge!(let crate::wire::Component { table } = out);
19607
19608            let max_ord = self.__max_ordinal();
19609
19610            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
19611            ::fidl_next::Wire::zero_padding(&mut out);
19612
19613            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
19614                ::fidl_next::wire::Envelope,
19615            >(encoder, max_ord);
19616
19617            for i in 1..=max_ord {
19618                match i {
19619                    11 => {
19620                        if let Some(value) = self.debug_info.take() {
19621                            ::fidl_next::wire::Envelope::encode_value::<
19622                                crate::wire::DebugInfo<'static>,
19623                                ___E,
19624                            >(
19625                                value, preallocated.encoder, &mut out, ()
19626                            )?;
19627                        } else {
19628                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
19629                        }
19630                    }
19631
19632                    10 => {
19633                        if let Some(value) = self.config.take() {
19634                            ::fidl_next::wire::Envelope::encode_value::<
19635                                crate::wire::ConfigSchema<'static>,
19636                                ___E,
19637                            >(
19638                                value, preallocated.encoder, &mut out, ()
19639                            )?;
19640                        } else {
19641                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
19642                        }
19643                    }
19644
19645                    9 => {
19646                        if let Some(value) = self.facets.take() {
19647                            ::fidl_next::wire::Envelope::encode_value::<
19648                                ::fidl_next_common_fuchsia_data::wire::Dictionary<'static>,
19649                                ___E,
19650                            >(
19651                                value, preallocated.encoder, &mut out, ()
19652                            )?;
19653                        } else {
19654                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
19655                        }
19656                    }
19657
19658                    8 => {
19659                        if let Some(value) = self.environments.take() {
19660                            ::fidl_next::wire::Envelope::encode_value::<
19661                                ::fidl_next::wire::Vector<
19662                                    'static,
19663                                    crate::wire::Environment<'static>,
19664                                >,
19665                                ___E,
19666                            >(
19667                                value, preallocated.encoder, &mut out, (4294967295, ())
19668                            )?;
19669                        } else {
19670                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
19671                        }
19672                    }
19673
19674                    7 => {
19675                        if let Some(value) = self.collections.take() {
19676                            ::fidl_next::wire::Envelope::encode_value::<
19677                                ::fidl_next::wire::Vector<
19678                                    'static,
19679                                    crate::wire::Collection<'static>,
19680                                >,
19681                                ___E,
19682                            >(
19683                                value, preallocated.encoder, &mut out, (4294967295, ())
19684                            )?;
19685                        } else {
19686                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
19687                        }
19688                    }
19689
19690                    6 => {
19691                        if let Some(value) = self.children.take() {
19692                            ::fidl_next::wire::Envelope::encode_value::<
19693                                ::fidl_next::wire::Vector<'static, crate::wire::Child<'static>>,
19694                                ___E,
19695                            >(
19696                                value, preallocated.encoder, &mut out, (4294967295, ())
19697                            )?;
19698                        } else {
19699                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
19700                        }
19701                    }
19702
19703                    5 => {
19704                        if let Some(value) = self.capabilities.take() {
19705                            ::fidl_next::wire::Envelope::encode_value::<
19706                                ::fidl_next::wire::Vector<
19707                                    'static,
19708                                    crate::wire::Capability<'static>,
19709                                >,
19710                                ___E,
19711                            >(
19712                                value, preallocated.encoder, &mut out, (4294967295, ())
19713                            )?;
19714                        } else {
19715                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
19716                        }
19717                    }
19718
19719                    4 => {
19720                        if let Some(value) = self.offers.take() {
19721                            ::fidl_next::wire::Envelope::encode_value::<
19722                                ::fidl_next::wire::Vector<'static, crate::wire::Offer<'static>>,
19723                                ___E,
19724                            >(
19725                                value, preallocated.encoder, &mut out, (4294967295, ())
19726                            )?;
19727                        } else {
19728                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
19729                        }
19730                    }
19731
19732                    3 => {
19733                        if let Some(value) = self.exposes.take() {
19734                            ::fidl_next::wire::Envelope::encode_value::<
19735                                ::fidl_next::wire::Vector<'static, crate::wire::Expose<'static>>,
19736                                ___E,
19737                            >(
19738                                value, preallocated.encoder, &mut out, (4294967295, ())
19739                            )?;
19740                        } else {
19741                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
19742                        }
19743                    }
19744
19745                    2 => {
19746                        if let Some(value) = self.uses.take() {
19747                            ::fidl_next::wire::Envelope::encode_value::<
19748                                ::fidl_next::wire::Vector<'static, crate::wire::Use<'static>>,
19749                                ___E,
19750                            >(
19751                                value, preallocated.encoder, &mut out, (4294967295, ())
19752                            )?;
19753                        } else {
19754                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
19755                        }
19756                    }
19757
19758                    1 => {
19759                        if let Some(value) = self.program.take() {
19760                            ::fidl_next::wire::Envelope::encode_value::<
19761                                crate::wire::Program<'static>,
19762                                ___E,
19763                            >(
19764                                value, preallocated.encoder, &mut out, ()
19765                            )?;
19766                        } else {
19767                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
19768                        }
19769                    }
19770
19771                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
19772                }
19773                unsafe {
19774                    preallocated.write_next(out.assume_init_ref());
19775                }
19776            }
19777
19778            ::fidl_next::wire::Table::encode_len(table, max_ord);
19779
19780            Ok(())
19781        }
19782    }
19783
19784    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::Component<'static>, ___E> for &'a Component
19785    where
19786        ___E: ::fidl_next::Encoder + ?Sized,
19787    {
19788        #[inline]
19789        fn encode(
19790            self,
19791            encoder: &mut ___E,
19792            out: &mut ::core::mem::MaybeUninit<crate::wire::Component<'static>>,
19793            _: (),
19794        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
19795            ::fidl_next::munge!(let crate::wire::Component { table } = out);
19796
19797            let max_ord = self.__max_ordinal();
19798
19799            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
19800            ::fidl_next::Wire::zero_padding(&mut out);
19801
19802            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
19803                ::fidl_next::wire::Envelope,
19804            >(encoder, max_ord);
19805
19806            for i in 1..=max_ord {
19807                match i {
19808                    11 => {
19809                        if let Some(value) = &self.debug_info {
19810                            ::fidl_next::wire::Envelope::encode_value::<
19811                                crate::wire::DebugInfo<'static>,
19812                                ___E,
19813                            >(
19814                                value, preallocated.encoder, &mut out, ()
19815                            )?;
19816                        } else {
19817                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
19818                        }
19819                    }
19820
19821                    10 => {
19822                        if let Some(value) = &self.config {
19823                            ::fidl_next::wire::Envelope::encode_value::<
19824                                crate::wire::ConfigSchema<'static>,
19825                                ___E,
19826                            >(
19827                                value, preallocated.encoder, &mut out, ()
19828                            )?;
19829                        } else {
19830                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
19831                        }
19832                    }
19833
19834                    9 => {
19835                        if let Some(value) = &self.facets {
19836                            ::fidl_next::wire::Envelope::encode_value::<
19837                                ::fidl_next_common_fuchsia_data::wire::Dictionary<'static>,
19838                                ___E,
19839                            >(
19840                                value, preallocated.encoder, &mut out, ()
19841                            )?;
19842                        } else {
19843                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
19844                        }
19845                    }
19846
19847                    8 => {
19848                        if let Some(value) = &self.environments {
19849                            ::fidl_next::wire::Envelope::encode_value::<
19850                                ::fidl_next::wire::Vector<
19851                                    'static,
19852                                    crate::wire::Environment<'static>,
19853                                >,
19854                                ___E,
19855                            >(
19856                                value, preallocated.encoder, &mut out, (4294967295, ())
19857                            )?;
19858                        } else {
19859                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
19860                        }
19861                    }
19862
19863                    7 => {
19864                        if let Some(value) = &self.collections {
19865                            ::fidl_next::wire::Envelope::encode_value::<
19866                                ::fidl_next::wire::Vector<
19867                                    'static,
19868                                    crate::wire::Collection<'static>,
19869                                >,
19870                                ___E,
19871                            >(
19872                                value, preallocated.encoder, &mut out, (4294967295, ())
19873                            )?;
19874                        } else {
19875                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
19876                        }
19877                    }
19878
19879                    6 => {
19880                        if let Some(value) = &self.children {
19881                            ::fidl_next::wire::Envelope::encode_value::<
19882                                ::fidl_next::wire::Vector<'static, crate::wire::Child<'static>>,
19883                                ___E,
19884                            >(
19885                                value, preallocated.encoder, &mut out, (4294967295, ())
19886                            )?;
19887                        } else {
19888                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
19889                        }
19890                    }
19891
19892                    5 => {
19893                        if let Some(value) = &self.capabilities {
19894                            ::fidl_next::wire::Envelope::encode_value::<
19895                                ::fidl_next::wire::Vector<
19896                                    'static,
19897                                    crate::wire::Capability<'static>,
19898                                >,
19899                                ___E,
19900                            >(
19901                                value, preallocated.encoder, &mut out, (4294967295, ())
19902                            )?;
19903                        } else {
19904                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
19905                        }
19906                    }
19907
19908                    4 => {
19909                        if let Some(value) = &self.offers {
19910                            ::fidl_next::wire::Envelope::encode_value::<
19911                                ::fidl_next::wire::Vector<'static, crate::wire::Offer<'static>>,
19912                                ___E,
19913                            >(
19914                                value, preallocated.encoder, &mut out, (4294967295, ())
19915                            )?;
19916                        } else {
19917                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
19918                        }
19919                    }
19920
19921                    3 => {
19922                        if let Some(value) = &self.exposes {
19923                            ::fidl_next::wire::Envelope::encode_value::<
19924                                ::fidl_next::wire::Vector<'static, crate::wire::Expose<'static>>,
19925                                ___E,
19926                            >(
19927                                value, preallocated.encoder, &mut out, (4294967295, ())
19928                            )?;
19929                        } else {
19930                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
19931                        }
19932                    }
19933
19934                    2 => {
19935                        if let Some(value) = &self.uses {
19936                            ::fidl_next::wire::Envelope::encode_value::<
19937                                ::fidl_next::wire::Vector<'static, crate::wire::Use<'static>>,
19938                                ___E,
19939                            >(
19940                                value, preallocated.encoder, &mut out, (4294967295, ())
19941                            )?;
19942                        } else {
19943                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
19944                        }
19945                    }
19946
19947                    1 => {
19948                        if let Some(value) = &self.program {
19949                            ::fidl_next::wire::Envelope::encode_value::<
19950                                crate::wire::Program<'static>,
19951                                ___E,
19952                            >(
19953                                value, preallocated.encoder, &mut out, ()
19954                            )?;
19955                        } else {
19956                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
19957                        }
19958                    }
19959
19960                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
19961                }
19962                unsafe {
19963                    preallocated.write_next(out.assume_init_ref());
19964                }
19965            }
19966
19967            ::fidl_next::wire::Table::encode_len(table, max_ord);
19968
19969            Ok(())
19970        }
19971    }
19972
19973    impl<'de> ::fidl_next::FromWire<crate::wire::Component<'de>> for Component {
19974        #[inline]
19975        fn from_wire(wire_: crate::wire::Component<'de>) -> Self {
19976            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
19977
19978            let program = wire_.table.get(1);
19979
19980            let uses = wire_.table.get(2);
19981
19982            let exposes = wire_.table.get(3);
19983
19984            let offers = wire_.table.get(4);
19985
19986            let capabilities = wire_.table.get(5);
19987
19988            let children = wire_.table.get(6);
19989
19990            let collections = wire_.table.get(7);
19991
19992            let environments = wire_.table.get(8);
19993
19994            let facets = wire_.table.get(9);
19995
19996            let config = wire_.table.get(10);
19997
19998            let debug_info = wire_.table.get(11);
19999
20000            Self {
20001
20002
20003                program: program.map(|envelope| ::fidl_next::FromWire::from_wire(
20004                    unsafe { envelope.read_unchecked::<crate::wire::Program<'de>>() }
20005                )),
20006
20007
20008                uses: uses.map(|envelope| ::fidl_next::FromWire::from_wire(
20009                    unsafe { envelope.read_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::Use<'de>>>() }
20010                )),
20011
20012
20013                exposes: exposes.map(|envelope| ::fidl_next::FromWire::from_wire(
20014                    unsafe { envelope.read_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::Expose<'de>>>() }
20015                )),
20016
20017
20018                offers: offers.map(|envelope| ::fidl_next::FromWire::from_wire(
20019                    unsafe { envelope.read_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::Offer<'de>>>() }
20020                )),
20021
20022
20023                capabilities: capabilities.map(|envelope| ::fidl_next::FromWire::from_wire(
20024                    unsafe { envelope.read_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::Capability<'de>>>() }
20025                )),
20026
20027
20028                children: children.map(|envelope| ::fidl_next::FromWire::from_wire(
20029                    unsafe { envelope.read_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::Child<'de>>>() }
20030                )),
20031
20032
20033                collections: collections.map(|envelope| ::fidl_next::FromWire::from_wire(
20034                    unsafe { envelope.read_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::Collection<'de>>>() }
20035                )),
20036
20037
20038                environments: environments.map(|envelope| ::fidl_next::FromWire::from_wire(
20039                    unsafe { envelope.read_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::Environment<'de>>>() }
20040                )),
20041
20042
20043                facets: facets.map(|envelope| ::fidl_next::FromWire::from_wire(
20044                    unsafe { envelope.read_unchecked::<::fidl_next_common_fuchsia_data::wire::Dictionary<'de>>() }
20045                )),
20046
20047
20048                config: config.map(|envelope| ::fidl_next::FromWire::from_wire(
20049                    unsafe { envelope.read_unchecked::<crate::wire::ConfigSchema<'de>>() }
20050                )),
20051
20052
20053                debug_info: debug_info.map(|envelope| ::fidl_next::FromWire::from_wire(
20054                    unsafe { envelope.read_unchecked::<crate::wire::DebugInfo<'de>>() }
20055                )),
20056
20057        }
20058        }
20059    }
20060
20061    impl<'de> ::fidl_next::FromWireRef<crate::wire::Component<'de>> for Component {
20062        #[inline]
20063        fn from_wire_ref(wire: &crate::wire::Component<'de>) -> Self {
20064            Self {
20065
20066
20067                program: wire.table.get(1)
20068                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
20069                        unsafe { envelope.deref_unchecked::<crate::wire::Program<'de>>() }
20070                    )),
20071
20072
20073                uses: wire.table.get(2)
20074                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
20075                        unsafe { envelope.deref_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::Use<'de>>>() }
20076                    )),
20077
20078
20079                exposes: wire.table.get(3)
20080                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
20081                        unsafe { envelope.deref_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::Expose<'de>>>() }
20082                    )),
20083
20084
20085                offers: wire.table.get(4)
20086                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
20087                        unsafe { envelope.deref_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::Offer<'de>>>() }
20088                    )),
20089
20090
20091                capabilities: wire.table.get(5)
20092                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
20093                        unsafe { envelope.deref_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::Capability<'de>>>() }
20094                    )),
20095
20096
20097                children: wire.table.get(6)
20098                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
20099                        unsafe { envelope.deref_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::Child<'de>>>() }
20100                    )),
20101
20102
20103                collections: wire.table.get(7)
20104                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
20105                        unsafe { envelope.deref_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::Collection<'de>>>() }
20106                    )),
20107
20108
20109                environments: wire.table.get(8)
20110                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
20111                        unsafe { envelope.deref_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::Environment<'de>>>() }
20112                    )),
20113
20114
20115                facets: wire.table.get(9)
20116                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
20117                        unsafe { envelope.deref_unchecked::<::fidl_next_common_fuchsia_data::wire::Dictionary<'de>>() }
20118                    )),
20119
20120
20121                config: wire.table.get(10)
20122                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
20123                        unsafe { envelope.deref_unchecked::<crate::wire::ConfigSchema<'de>>() }
20124                    )),
20125
20126
20127                debug_info: wire.table.get(11)
20128                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
20129                        unsafe { envelope.deref_unchecked::<crate::wire::DebugInfo<'de>>() }
20130                    )),
20131
20132        }
20133        }
20134    }
20135
20136    #[doc = " An individual configuration value. It is matched against a specific configuration field based\n on its offset within `ValuesData.values`.\n"]
20137    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
20138    pub struct ConfigValueSpec {
20139        pub value: ::core::option::Option<crate::natural::ConfigValue>,
20140    }
20141
20142    impl ConfigValueSpec {
20143        fn __max_ordinal(&self) -> usize {
20144            if self.value.is_some() {
20145                return 1;
20146            }
20147
20148            0
20149        }
20150    }
20151
20152    unsafe impl<___E> ::fidl_next::Encode<crate::wire::ConfigValueSpec<'static>, ___E>
20153        for ConfigValueSpec
20154    where
20155        ___E: ::fidl_next::Encoder + ?Sized,
20156    {
20157        #[inline]
20158        fn encode(
20159            mut self,
20160            encoder: &mut ___E,
20161            out: &mut ::core::mem::MaybeUninit<crate::wire::ConfigValueSpec<'static>>,
20162            _: (),
20163        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
20164            ::fidl_next::munge!(let crate::wire::ConfigValueSpec { table } = out);
20165
20166            let max_ord = self.__max_ordinal();
20167
20168            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
20169            ::fidl_next::Wire::zero_padding(&mut out);
20170
20171            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
20172                ::fidl_next::wire::Envelope,
20173            >(encoder, max_ord);
20174
20175            for i in 1..=max_ord {
20176                match i {
20177                    1 => {
20178                        if let Some(value) = self.value.take() {
20179                            ::fidl_next::wire::Envelope::encode_value::<
20180                                crate::wire::ConfigValue<'static>,
20181                                ___E,
20182                            >(
20183                                value, preallocated.encoder, &mut out, ()
20184                            )?;
20185                        } else {
20186                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
20187                        }
20188                    }
20189
20190                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
20191                }
20192                unsafe {
20193                    preallocated.write_next(out.assume_init_ref());
20194                }
20195            }
20196
20197            ::fidl_next::wire::Table::encode_len(table, max_ord);
20198
20199            Ok(())
20200        }
20201    }
20202
20203    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::ConfigValueSpec<'static>, ___E>
20204        for &'a ConfigValueSpec
20205    where
20206        ___E: ::fidl_next::Encoder + ?Sized,
20207    {
20208        #[inline]
20209        fn encode(
20210            self,
20211            encoder: &mut ___E,
20212            out: &mut ::core::mem::MaybeUninit<crate::wire::ConfigValueSpec<'static>>,
20213            _: (),
20214        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
20215            ::fidl_next::munge!(let crate::wire::ConfigValueSpec { table } = out);
20216
20217            let max_ord = self.__max_ordinal();
20218
20219            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
20220            ::fidl_next::Wire::zero_padding(&mut out);
20221
20222            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
20223                ::fidl_next::wire::Envelope,
20224            >(encoder, max_ord);
20225
20226            for i in 1..=max_ord {
20227                match i {
20228                    1 => {
20229                        if let Some(value) = &self.value {
20230                            ::fidl_next::wire::Envelope::encode_value::<
20231                                crate::wire::ConfigValue<'static>,
20232                                ___E,
20233                            >(
20234                                value, preallocated.encoder, &mut out, ()
20235                            )?;
20236                        } else {
20237                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
20238                        }
20239                    }
20240
20241                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
20242                }
20243                unsafe {
20244                    preallocated.write_next(out.assume_init_ref());
20245                }
20246            }
20247
20248            ::fidl_next::wire::Table::encode_len(table, max_ord);
20249
20250            Ok(())
20251        }
20252    }
20253
20254    impl<'de> ::fidl_next::FromWire<crate::wire::ConfigValueSpec<'de>> for ConfigValueSpec {
20255        #[inline]
20256        fn from_wire(wire_: crate::wire::ConfigValueSpec<'de>) -> Self {
20257            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
20258
20259            let value = wire_.table.get(1);
20260
20261            Self {
20262                value: value.map(|envelope| {
20263                    ::fidl_next::FromWire::from_wire(unsafe {
20264                        envelope.read_unchecked::<crate::wire::ConfigValue<'de>>()
20265                    })
20266                }),
20267            }
20268        }
20269    }
20270
20271    impl<'de> ::fidl_next::FromWireRef<crate::wire::ConfigValueSpec<'de>> for ConfigValueSpec {
20272        #[inline]
20273        fn from_wire_ref(wire: &crate::wire::ConfigValueSpec<'de>) -> Self {
20274            Self {
20275                value: wire.table.get(1).map(|envelope| {
20276                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
20277                        envelope.deref_unchecked::<crate::wire::ConfigValue<'de>>()
20278                    })
20279                }),
20280            }
20281        }
20282    }
20283
20284    #[doc = " Contents of the configuration value file. Defines the base values for a component\'s config.\n"]
20285    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
20286    pub struct ConfigValuesData {
20287        pub values: ::core::option::Option<::std::vec::Vec<crate::natural::ConfigValueSpec>>,
20288
20289        pub checksum: ::core::option::Option<crate::natural::ConfigChecksum>,
20290    }
20291
20292    impl ConfigValuesData {
20293        fn __max_ordinal(&self) -> usize {
20294            if self.checksum.is_some() {
20295                return 2;
20296            }
20297
20298            if self.values.is_some() {
20299                return 1;
20300            }
20301
20302            0
20303        }
20304    }
20305
20306    unsafe impl<___E> ::fidl_next::Encode<crate::wire::ConfigValuesData<'static>, ___E>
20307        for ConfigValuesData
20308    where
20309        ___E: ::fidl_next::Encoder + ?Sized,
20310    {
20311        #[inline]
20312        fn encode(
20313            mut self,
20314            encoder: &mut ___E,
20315            out: &mut ::core::mem::MaybeUninit<crate::wire::ConfigValuesData<'static>>,
20316            _: (),
20317        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
20318            ::fidl_next::munge!(let crate::wire::ConfigValuesData { table } = out);
20319
20320            let max_ord = self.__max_ordinal();
20321
20322            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
20323            ::fidl_next::Wire::zero_padding(&mut out);
20324
20325            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
20326                ::fidl_next::wire::Envelope,
20327            >(encoder, max_ord);
20328
20329            for i in 1..=max_ord {
20330                match i {
20331                    2 => {
20332                        if let Some(value) = self.checksum.take() {
20333                            ::fidl_next::wire::Envelope::encode_value::<
20334                                crate::wire::ConfigChecksum<'static>,
20335                                ___E,
20336                            >(
20337                                value, preallocated.encoder, &mut out, ()
20338                            )?;
20339                        } else {
20340                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
20341                        }
20342                    }
20343
20344                    1 => {
20345                        if let Some(value) = self.values.take() {
20346                            ::fidl_next::wire::Envelope::encode_value::<
20347                                ::fidl_next::wire::Vector<
20348                                    'static,
20349                                    crate::wire::ConfigValueSpec<'static>,
20350                                >,
20351                                ___E,
20352                            >(
20353                                value, preallocated.encoder, &mut out, (4294967295, ())
20354                            )?;
20355                        } else {
20356                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
20357                        }
20358                    }
20359
20360                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
20361                }
20362                unsafe {
20363                    preallocated.write_next(out.assume_init_ref());
20364                }
20365            }
20366
20367            ::fidl_next::wire::Table::encode_len(table, max_ord);
20368
20369            Ok(())
20370        }
20371    }
20372
20373    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::ConfigValuesData<'static>, ___E>
20374        for &'a ConfigValuesData
20375    where
20376        ___E: ::fidl_next::Encoder + ?Sized,
20377    {
20378        #[inline]
20379        fn encode(
20380            self,
20381            encoder: &mut ___E,
20382            out: &mut ::core::mem::MaybeUninit<crate::wire::ConfigValuesData<'static>>,
20383            _: (),
20384        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
20385            ::fidl_next::munge!(let crate::wire::ConfigValuesData { table } = out);
20386
20387            let max_ord = self.__max_ordinal();
20388
20389            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
20390            ::fidl_next::Wire::zero_padding(&mut out);
20391
20392            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
20393                ::fidl_next::wire::Envelope,
20394            >(encoder, max_ord);
20395
20396            for i in 1..=max_ord {
20397                match i {
20398                    2 => {
20399                        if let Some(value) = &self.checksum {
20400                            ::fidl_next::wire::Envelope::encode_value::<
20401                                crate::wire::ConfigChecksum<'static>,
20402                                ___E,
20403                            >(
20404                                value, preallocated.encoder, &mut out, ()
20405                            )?;
20406                        } else {
20407                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
20408                        }
20409                    }
20410
20411                    1 => {
20412                        if let Some(value) = &self.values {
20413                            ::fidl_next::wire::Envelope::encode_value::<
20414                                ::fidl_next::wire::Vector<
20415                                    'static,
20416                                    crate::wire::ConfigValueSpec<'static>,
20417                                >,
20418                                ___E,
20419                            >(
20420                                value, preallocated.encoder, &mut out, (4294967295, ())
20421                            )?;
20422                        } else {
20423                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
20424                        }
20425                    }
20426
20427                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
20428                }
20429                unsafe {
20430                    preallocated.write_next(out.assume_init_ref());
20431                }
20432            }
20433
20434            ::fidl_next::wire::Table::encode_len(table, max_ord);
20435
20436            Ok(())
20437        }
20438    }
20439
20440    impl<'de> ::fidl_next::FromWire<crate::wire::ConfigValuesData<'de>> for ConfigValuesData {
20441        #[inline]
20442        fn from_wire(wire_: crate::wire::ConfigValuesData<'de>) -> Self {
20443            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
20444
20445            let values = wire_.table.get(1);
20446
20447            let checksum = wire_.table.get(2);
20448
20449            Self {
20450
20451
20452                values: values.map(|envelope| ::fidl_next::FromWire::from_wire(
20453                    unsafe { envelope.read_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::ConfigValueSpec<'de>>>() }
20454                )),
20455
20456
20457                checksum: checksum.map(|envelope| ::fidl_next::FromWire::from_wire(
20458                    unsafe { envelope.read_unchecked::<crate::wire::ConfigChecksum<'de>>() }
20459                )),
20460
20461        }
20462        }
20463    }
20464
20465    impl<'de> ::fidl_next::FromWireRef<crate::wire::ConfigValuesData<'de>> for ConfigValuesData {
20466        #[inline]
20467        fn from_wire_ref(wire: &crate::wire::ConfigValuesData<'de>) -> Self {
20468            Self {
20469
20470
20471                values: wire.table.get(1)
20472                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
20473                        unsafe { envelope.deref_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::ConfigValueSpec<'de>>>() }
20474                    )),
20475
20476
20477                checksum: wire.table.get(2)
20478                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
20479                        unsafe { envelope.deref_unchecked::<crate::wire::ConfigChecksum<'de>>() }
20480                    )),
20481
20482        }
20483        }
20484    }
20485
20486    #[doc = " Indicates the event name to subscribe to with a given event mode.\n"]
20487    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
20488    pub struct EventSubscription {
20489        pub event_name: ::core::option::Option<::std::string::String>,
20490    }
20491
20492    impl EventSubscription {
20493        fn __max_ordinal(&self) -> usize {
20494            if self.event_name.is_some() {
20495                return 1;
20496            }
20497
20498            0
20499        }
20500    }
20501
20502    unsafe impl<___E> ::fidl_next::Encode<crate::wire::EventSubscription<'static>, ___E>
20503        for EventSubscription
20504    where
20505        ___E: ::fidl_next::Encoder + ?Sized,
20506    {
20507        #[inline]
20508        fn encode(
20509            mut self,
20510            encoder: &mut ___E,
20511            out: &mut ::core::mem::MaybeUninit<crate::wire::EventSubscription<'static>>,
20512            _: (),
20513        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
20514            ::fidl_next::munge!(let crate::wire::EventSubscription { table } = out);
20515
20516            let max_ord = self.__max_ordinal();
20517
20518            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
20519            ::fidl_next::Wire::zero_padding(&mut out);
20520
20521            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
20522                ::fidl_next::wire::Envelope,
20523            >(encoder, max_ord);
20524
20525            for i in 1..=max_ord {
20526                match i {
20527                    1 => {
20528                        if let Some(value) = self.event_name.take() {
20529                            ::fidl_next::wire::Envelope::encode_value::<
20530                                ::fidl_next::wire::String<'static>,
20531                                ___E,
20532                            >(
20533                                value, preallocated.encoder, &mut out, 100
20534                            )?;
20535                        } else {
20536                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
20537                        }
20538                    }
20539
20540                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
20541                }
20542                unsafe {
20543                    preallocated.write_next(out.assume_init_ref());
20544                }
20545            }
20546
20547            ::fidl_next::wire::Table::encode_len(table, max_ord);
20548
20549            Ok(())
20550        }
20551    }
20552
20553    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::EventSubscription<'static>, ___E>
20554        for &'a EventSubscription
20555    where
20556        ___E: ::fidl_next::Encoder + ?Sized,
20557    {
20558        #[inline]
20559        fn encode(
20560            self,
20561            encoder: &mut ___E,
20562            out: &mut ::core::mem::MaybeUninit<crate::wire::EventSubscription<'static>>,
20563            _: (),
20564        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
20565            ::fidl_next::munge!(let crate::wire::EventSubscription { table } = out);
20566
20567            let max_ord = self.__max_ordinal();
20568
20569            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
20570            ::fidl_next::Wire::zero_padding(&mut out);
20571
20572            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
20573                ::fidl_next::wire::Envelope,
20574            >(encoder, max_ord);
20575
20576            for i in 1..=max_ord {
20577                match i {
20578                    1 => {
20579                        if let Some(value) = &self.event_name {
20580                            ::fidl_next::wire::Envelope::encode_value::<
20581                                ::fidl_next::wire::String<'static>,
20582                                ___E,
20583                            >(
20584                                value, preallocated.encoder, &mut out, 100
20585                            )?;
20586                        } else {
20587                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
20588                        }
20589                    }
20590
20591                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
20592                }
20593                unsafe {
20594                    preallocated.write_next(out.assume_init_ref());
20595                }
20596            }
20597
20598            ::fidl_next::wire::Table::encode_len(table, max_ord);
20599
20600            Ok(())
20601        }
20602    }
20603
20604    impl<'de> ::fidl_next::FromWire<crate::wire::EventSubscription<'de>> for EventSubscription {
20605        #[inline]
20606        fn from_wire(wire_: crate::wire::EventSubscription<'de>) -> Self {
20607            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
20608
20609            let event_name = wire_.table.get(1);
20610
20611            Self {
20612                event_name: event_name.map(|envelope| {
20613                    ::fidl_next::FromWire::from_wire(unsafe {
20614                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
20615                    })
20616                }),
20617            }
20618        }
20619    }
20620
20621    impl<'de> ::fidl_next::FromWireRef<crate::wire::EventSubscription<'de>> for EventSubscription {
20622        #[inline]
20623        fn from_wire_ref(wire: &crate::wire::EventSubscription<'de>) -> Self {
20624            Self {
20625                event_name: wire.table.get(1).map(|envelope| {
20626                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
20627                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
20628                    })
20629                }),
20630            }
20631        }
20632    }
20633
20634    #[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
20635    pub enum LayoutParameter {
20636        NestedType(crate::natural::ConfigType),
20637
20638        UnknownOrdinal_(u64),
20639    }
20640
20641    impl LayoutParameter {
20642        pub fn is_unknown(&self) -> bool {
20643            #[allow(unreachable_patterns)]
20644            match self {
20645                Self::UnknownOrdinal_(_) => true,
20646                _ => false,
20647            }
20648        }
20649    }
20650
20651    unsafe impl<___E> ::fidl_next::Encode<crate::wire::LayoutParameter<'static>, ___E>
20652        for LayoutParameter
20653    where
20654        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
20655        ___E: ::fidl_next::Encoder,
20656    {
20657        #[inline]
20658        fn encode(
20659            self,
20660            encoder: &mut ___E,
20661            out: &mut ::core::mem::MaybeUninit<crate::wire::LayoutParameter<'static>>,
20662            _: (),
20663        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
20664            ::fidl_next::munge!(let crate::wire::LayoutParameter { raw, _phantom: _ } = out);
20665
20666            match self {
20667                Self::NestedType(value) => ::fidl_next::wire::Union::encode_as::<
20668                    ___E,
20669                    crate::wire::ConfigType<'static>,
20670                >(value, 1, encoder, raw, ())?,
20671
20672                Self::UnknownOrdinal_(ordinal) => {
20673                    return Err(::fidl_next::EncodeError::UnknownUnionOrdinal(ordinal as usize));
20674                }
20675            }
20676
20677            Ok(())
20678        }
20679    }
20680
20681    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::LayoutParameter<'static>, ___E>
20682        for &'a LayoutParameter
20683    where
20684        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
20685        ___E: ::fidl_next::Encoder,
20686    {
20687        #[inline]
20688        fn encode(
20689            self,
20690            encoder: &mut ___E,
20691            out: &mut ::core::mem::MaybeUninit<crate::wire::LayoutParameter<'static>>,
20692            _: (),
20693        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
20694            ::fidl_next::munge!(let crate::wire::LayoutParameter { raw, _phantom: _ } = out);
20695
20696            match self {
20697                LayoutParameter::NestedType(value) => ::fidl_next::wire::Union::encode_as::<
20698                    ___E,
20699                    crate::wire::ConfigType<'static>,
20700                >(value, 1, encoder, raw, ())?,
20701
20702                LayoutParameter::UnknownOrdinal_(ordinal) => {
20703                    return Err(::fidl_next::EncodeError::UnknownUnionOrdinal(*ordinal as usize));
20704                }
20705            }
20706
20707            Ok(())
20708        }
20709    }
20710
20711    unsafe impl<___E>
20712        ::fidl_next::EncodeOption<crate::wire_optional::LayoutParameter<'static>, ___E>
20713        for LayoutParameter
20714    where
20715        ___E: ?Sized,
20716        LayoutParameter: ::fidl_next::Encode<crate::wire::LayoutParameter<'static>, ___E>,
20717    {
20718        #[inline]
20719        fn encode_option(
20720            this: ::core::option::Option<Self>,
20721            encoder: &mut ___E,
20722            out: &mut ::core::mem::MaybeUninit<crate::wire_optional::LayoutParameter<'static>>,
20723            _: (),
20724        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
20725            ::fidl_next::munge!(let crate::wire_optional::LayoutParameter { raw, _phantom: _ } = &mut *out);
20726
20727            if let Some(inner) = this {
20728                let value_out = unsafe { &mut *out.as_mut_ptr().cast() };
20729                ::fidl_next::Encode::encode(inner, encoder, value_out, ())?;
20730            } else {
20731                ::fidl_next::wire::Union::encode_absent(raw);
20732            }
20733
20734            Ok(())
20735        }
20736    }
20737
20738    unsafe impl<'a, ___E>
20739        ::fidl_next::EncodeOption<crate::wire_optional::LayoutParameter<'static>, ___E>
20740        for &'a LayoutParameter
20741    where
20742        ___E: ?Sized,
20743        &'a LayoutParameter: ::fidl_next::Encode<crate::wire::LayoutParameter<'static>, ___E>,
20744    {
20745        #[inline]
20746        fn encode_option(
20747            this: ::core::option::Option<Self>,
20748            encoder: &mut ___E,
20749            out: &mut ::core::mem::MaybeUninit<crate::wire_optional::LayoutParameter<'static>>,
20750            _: (),
20751        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
20752            ::fidl_next::munge!(let crate::wire_optional::LayoutParameter { raw, _phantom: _ } = &mut *out);
20753
20754            if let Some(inner) = this {
20755                let value_out = unsafe { &mut *out.as_mut_ptr().cast() };
20756                ::fidl_next::Encode::encode(inner, encoder, value_out, ())?;
20757            } else {
20758                ::fidl_next::wire::Union::encode_absent(raw);
20759            }
20760
20761            Ok(())
20762        }
20763    }
20764
20765    impl<'de> ::fidl_next::FromWire<crate::wire::LayoutParameter<'de>> for LayoutParameter {
20766        #[inline]
20767        fn from_wire(wire: crate::wire::LayoutParameter<'de>) -> Self {
20768            let wire = ::core::mem::ManuallyDrop::new(wire);
20769            match wire.raw.ordinal() {
20770                1 => Self::NestedType(::fidl_next::FromWire::from_wire(unsafe {
20771                    wire.raw.get().read_unchecked::<crate::wire::ConfigType<'de>>()
20772                })),
20773
20774                ord => return Self::UnknownOrdinal_(ord as u64),
20775            }
20776        }
20777    }
20778
20779    impl<'de> ::fidl_next::FromWireRef<crate::wire::LayoutParameter<'de>> for LayoutParameter {
20780        #[inline]
20781        fn from_wire_ref(wire: &crate::wire::LayoutParameter<'de>) -> Self {
20782            match wire.raw.ordinal() {
20783                1 => Self::NestedType(::fidl_next::FromWireRef::from_wire_ref(unsafe {
20784                    wire.raw.get().deref_unchecked::<crate::wire::ConfigType<'de>>()
20785                })),
20786
20787                ord => return Self::UnknownOrdinal_(ord as u64),
20788            }
20789        }
20790    }
20791
20792    impl<'de> ::fidl_next::FromWireOption<crate::wire_optional::LayoutParameter<'de>>
20793        for LayoutParameter
20794    {
20795        #[inline]
20796        fn from_wire_option(
20797            wire: crate::wire_optional::LayoutParameter<'de>,
20798        ) -> ::core::option::Option<Self> {
20799            if let Some(inner) = wire.into_option() {
20800                Some(::fidl_next::FromWire::from_wire(inner))
20801            } else {
20802                None
20803            }
20804        }
20805    }
20806
20807    impl<'de> ::fidl_next::FromWireOption<crate::wire_optional::LayoutParameter<'de>>
20808        for Box<LayoutParameter>
20809    {
20810        #[inline]
20811        fn from_wire_option(
20812            wire: crate::wire_optional::LayoutParameter<'de>,
20813        ) -> ::core::option::Option<Self> {
20814            <LayoutParameter as ::fidl_next::FromWireOption<
20815                crate::wire_optional::LayoutParameter<'de>,
20816            >>::from_wire_option(wire)
20817            .map(Box::new)
20818        }
20819    }
20820
20821    impl<'de> ::fidl_next::FromWireOptionRef<crate::wire_optional::LayoutParameter<'de>>
20822        for Box<LayoutParameter>
20823    {
20824        #[inline]
20825        fn from_wire_option_ref(
20826            wire: &crate::wire_optional::LayoutParameter<'de>,
20827        ) -> ::core::option::Option<Self> {
20828            if let Some(inner) = wire.as_ref() {
20829                Some(Box::new(::fidl_next::FromWireRef::from_wire_ref(inner)))
20830            } else {
20831                None
20832            }
20833        }
20834    }
20835
20836    #[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
20837    pub struct ResolvedConfigField {
20838        pub key: ::std::string::String,
20839
20840        pub value: crate::natural::ConfigValue,
20841    }
20842
20843    unsafe impl<___E> ::fidl_next::Encode<crate::wire::ResolvedConfigField<'static>, ___E>
20844        for ResolvedConfigField
20845    where
20846        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
20847        ___E: ::fidl_next::Encoder,
20848    {
20849        #[inline]
20850        fn encode(
20851            self,
20852            encoder_: &mut ___E,
20853            out_: &mut ::core::mem::MaybeUninit<crate::wire::ResolvedConfigField<'static>>,
20854            _: (),
20855        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
20856            ::fidl_next::munge! {
20857                let crate::wire::ResolvedConfigField {
20858                    key,
20859                    value,
20860
20861                } = out_;
20862            }
20863
20864            ::fidl_next::Encode::encode(self.key, encoder_, key, 4294967295)?;
20865
20866            let mut _field = unsafe { ::fidl_next::Slot::new_unchecked(key.as_mut_ptr()) };
20867            ::fidl_next::Constrained::validate(_field, 4294967295)?;
20868
20869            ::fidl_next::Encode::encode(self.value, encoder_, value, ())?;
20870
20871            let mut _field = unsafe { ::fidl_next::Slot::new_unchecked(value.as_mut_ptr()) };
20872
20873            Ok(())
20874        }
20875    }
20876
20877    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::ResolvedConfigField<'static>, ___E>
20878        for &'a ResolvedConfigField
20879    where
20880        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
20881        ___E: ::fidl_next::Encoder,
20882    {
20883        #[inline]
20884        fn encode(
20885            self,
20886            encoder_: &mut ___E,
20887            out_: &mut ::core::mem::MaybeUninit<crate::wire::ResolvedConfigField<'static>>,
20888            _: (),
20889        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
20890            ::fidl_next::munge! {
20891                let crate::wire::ResolvedConfigField {
20892                    key,
20893                    value,
20894
20895                } = out_;
20896            }
20897
20898            ::fidl_next::Encode::encode(&self.key, encoder_, key, 4294967295)?;
20899
20900            let mut _field = unsafe { ::fidl_next::Slot::new_unchecked(key.as_mut_ptr()) };
20901            ::fidl_next::Constrained::validate(_field, 4294967295)?;
20902
20903            ::fidl_next::Encode::encode(&self.value, encoder_, value, ())?;
20904
20905            let mut _field = unsafe { ::fidl_next::Slot::new_unchecked(value.as_mut_ptr()) };
20906
20907            Ok(())
20908        }
20909    }
20910
20911    unsafe impl<___E>
20912        ::fidl_next::EncodeOption<
20913            ::fidl_next::wire::Box<'static, crate::wire::ResolvedConfigField<'static>>,
20914            ___E,
20915        > for ResolvedConfigField
20916    where
20917        ___E: ::fidl_next::Encoder + ?Sized,
20918        ResolvedConfigField: ::fidl_next::Encode<crate::wire::ResolvedConfigField<'static>, ___E>,
20919    {
20920        #[inline]
20921        fn encode_option(
20922            this: ::core::option::Option<Self>,
20923            encoder: &mut ___E,
20924            out: &mut ::core::mem::MaybeUninit<
20925                ::fidl_next::wire::Box<'static, crate::wire::ResolvedConfigField<'static>>,
20926            >,
20927            _: (),
20928        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
20929            if let Some(inner) = this {
20930                ::fidl_next::EncoderExt::encode_next(encoder, inner)?;
20931                ::fidl_next::wire::Box::encode_present(out);
20932            } else {
20933                ::fidl_next::wire::Box::encode_absent(out);
20934            }
20935
20936            Ok(())
20937        }
20938    }
20939
20940    unsafe impl<'a, ___E>
20941        ::fidl_next::EncodeOption<
20942            ::fidl_next::wire::Box<'static, crate::wire::ResolvedConfigField<'static>>,
20943            ___E,
20944        > for &'a ResolvedConfigField
20945    where
20946        ___E: ::fidl_next::Encoder + ?Sized,
20947        &'a ResolvedConfigField:
20948            ::fidl_next::Encode<crate::wire::ResolvedConfigField<'static>, ___E>,
20949    {
20950        #[inline]
20951        fn encode_option(
20952            this: ::core::option::Option<Self>,
20953            encoder: &mut ___E,
20954            out: &mut ::core::mem::MaybeUninit<
20955                ::fidl_next::wire::Box<'static, crate::wire::ResolvedConfigField<'static>>,
20956            >,
20957            _: (),
20958        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
20959            if let Some(inner) = this {
20960                ::fidl_next::EncoderExt::encode_next(encoder, inner)?;
20961                ::fidl_next::wire::Box::encode_present(out);
20962            } else {
20963                ::fidl_next::wire::Box::encode_absent(out);
20964            }
20965
20966            Ok(())
20967        }
20968    }
20969
20970    impl<'de> ::fidl_next::FromWire<crate::wire::ResolvedConfigField<'de>> for ResolvedConfigField {
20971        #[inline]
20972        fn from_wire(wire: crate::wire::ResolvedConfigField<'de>) -> Self {
20973            Self {
20974                key: ::fidl_next::FromWire::from_wire(wire.key),
20975
20976                value: ::fidl_next::FromWire::from_wire(wire.value),
20977            }
20978        }
20979    }
20980
20981    impl<'de> ::fidl_next::FromWireRef<crate::wire::ResolvedConfigField<'de>> for ResolvedConfigField {
20982        #[inline]
20983        fn from_wire_ref(wire: &crate::wire::ResolvedConfigField<'de>) -> Self {
20984            Self {
20985                key: ::fidl_next::FromWireRef::from_wire_ref(&wire.key),
20986
20987                value: ::fidl_next::FromWireRef::from_wire_ref(&wire.value),
20988            }
20989        }
20990    }
20991
20992    #[doc = " A configuration that has been completely resolved by component manager.\n"]
20993    #[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
20994    pub struct ResolvedConfig {
20995        pub fields: ::std::vec::Vec<crate::natural::ResolvedConfigField>,
20996
20997        pub checksum: crate::natural::ConfigChecksum,
20998    }
20999
21000    unsafe impl<___E> ::fidl_next::Encode<crate::wire::ResolvedConfig<'static>, ___E> for ResolvedConfig
21001    where
21002        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
21003        ___E: ::fidl_next::Encoder,
21004    {
21005        #[inline]
21006        fn encode(
21007            self,
21008            encoder_: &mut ___E,
21009            out_: &mut ::core::mem::MaybeUninit<crate::wire::ResolvedConfig<'static>>,
21010            _: (),
21011        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
21012            ::fidl_next::munge! {
21013                let crate::wire::ResolvedConfig {
21014                    fields,
21015                    checksum,
21016
21017                } = out_;
21018            }
21019
21020            ::fidl_next::Encode::encode(self.fields, encoder_, fields, (4294967295, ()))?;
21021
21022            let mut _field = unsafe { ::fidl_next::Slot::new_unchecked(fields.as_mut_ptr()) };
21023            ::fidl_next::Constrained::validate(_field, (4294967295, ()))?;
21024
21025            ::fidl_next::Encode::encode(self.checksum, encoder_, checksum, ())?;
21026
21027            let mut _field = unsafe { ::fidl_next::Slot::new_unchecked(checksum.as_mut_ptr()) };
21028
21029            Ok(())
21030        }
21031    }
21032
21033    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::ResolvedConfig<'static>, ___E>
21034        for &'a ResolvedConfig
21035    where
21036        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
21037        ___E: ::fidl_next::Encoder,
21038    {
21039        #[inline]
21040        fn encode(
21041            self,
21042            encoder_: &mut ___E,
21043            out_: &mut ::core::mem::MaybeUninit<crate::wire::ResolvedConfig<'static>>,
21044            _: (),
21045        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
21046            ::fidl_next::munge! {
21047                let crate::wire::ResolvedConfig {
21048                    fields,
21049                    checksum,
21050
21051                } = out_;
21052            }
21053
21054            ::fidl_next::Encode::encode(&self.fields, encoder_, fields, (4294967295, ()))?;
21055
21056            let mut _field = unsafe { ::fidl_next::Slot::new_unchecked(fields.as_mut_ptr()) };
21057            ::fidl_next::Constrained::validate(_field, (4294967295, ()))?;
21058
21059            ::fidl_next::Encode::encode(&self.checksum, encoder_, checksum, ())?;
21060
21061            let mut _field = unsafe { ::fidl_next::Slot::new_unchecked(checksum.as_mut_ptr()) };
21062
21063            Ok(())
21064        }
21065    }
21066
21067    unsafe impl<___E>
21068        ::fidl_next::EncodeOption<
21069            ::fidl_next::wire::Box<'static, crate::wire::ResolvedConfig<'static>>,
21070            ___E,
21071        > for ResolvedConfig
21072    where
21073        ___E: ::fidl_next::Encoder + ?Sized,
21074        ResolvedConfig: ::fidl_next::Encode<crate::wire::ResolvedConfig<'static>, ___E>,
21075    {
21076        #[inline]
21077        fn encode_option(
21078            this: ::core::option::Option<Self>,
21079            encoder: &mut ___E,
21080            out: &mut ::core::mem::MaybeUninit<
21081                ::fidl_next::wire::Box<'static, crate::wire::ResolvedConfig<'static>>,
21082            >,
21083            _: (),
21084        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
21085            if let Some(inner) = this {
21086                ::fidl_next::EncoderExt::encode_next(encoder, inner)?;
21087                ::fidl_next::wire::Box::encode_present(out);
21088            } else {
21089                ::fidl_next::wire::Box::encode_absent(out);
21090            }
21091
21092            Ok(())
21093        }
21094    }
21095
21096    unsafe impl<'a, ___E>
21097        ::fidl_next::EncodeOption<
21098            ::fidl_next::wire::Box<'static, crate::wire::ResolvedConfig<'static>>,
21099            ___E,
21100        > for &'a ResolvedConfig
21101    where
21102        ___E: ::fidl_next::Encoder + ?Sized,
21103        &'a ResolvedConfig: ::fidl_next::Encode<crate::wire::ResolvedConfig<'static>, ___E>,
21104    {
21105        #[inline]
21106        fn encode_option(
21107            this: ::core::option::Option<Self>,
21108            encoder: &mut ___E,
21109            out: &mut ::core::mem::MaybeUninit<
21110                ::fidl_next::wire::Box<'static, crate::wire::ResolvedConfig<'static>>,
21111            >,
21112            _: (),
21113        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
21114            if let Some(inner) = this {
21115                ::fidl_next::EncoderExt::encode_next(encoder, inner)?;
21116                ::fidl_next::wire::Box::encode_present(out);
21117            } else {
21118                ::fidl_next::wire::Box::encode_absent(out);
21119            }
21120
21121            Ok(())
21122        }
21123    }
21124
21125    impl<'de> ::fidl_next::FromWire<crate::wire::ResolvedConfig<'de>> for ResolvedConfig {
21126        #[inline]
21127        fn from_wire(wire: crate::wire::ResolvedConfig<'de>) -> Self {
21128            Self {
21129                fields: ::fidl_next::FromWire::from_wire(wire.fields),
21130
21131                checksum: ::fidl_next::FromWire::from_wire(wire.checksum),
21132            }
21133        }
21134    }
21135
21136    impl<'de> ::fidl_next::FromWireRef<crate::wire::ResolvedConfig<'de>> for ResolvedConfig {
21137        #[inline]
21138        fn from_wire_ref(wire: &crate::wire::ResolvedConfig<'de>) -> Self {
21139            Self {
21140                fields: ::fidl_next::FromWireRef::from_wire_ref(&wire.fields),
21141
21142                checksum: ::fidl_next::FromWireRef::from_wire_ref(&wire.checksum),
21143            }
21144        }
21145    }
21146}
21147
21148pub mod wire {
21149
21150    /// The wire type corresponding to [`AllowedOffers`].
21151    #[derive(Clone, Copy, Debug, PartialEq, Eq)]
21152    #[repr(transparent)]
21153    pub struct AllowedOffers {
21154        pub(crate) value: ::fidl_next::wire::Uint32,
21155    }
21156
21157    impl ::fidl_next::Constrained for AllowedOffers {
21158        type Constraint = ();
21159
21160        fn validate(
21161            _: ::fidl_next::Slot<'_, Self>,
21162            _: Self::Constraint,
21163        ) -> Result<(), ::fidl_next::ValidationError> {
21164            Ok(())
21165        }
21166    }
21167
21168    unsafe impl ::fidl_next::Wire for AllowedOffers {
21169        type Narrowed<'de> = Self;
21170
21171        #[inline]
21172        fn zero_padding(_: &mut ::core::mem::MaybeUninit<Self>) {
21173            // Wire enums have no padding
21174        }
21175    }
21176
21177    impl AllowedOffers {
21178        pub const STATIC_ONLY: AllowedOffers =
21179            AllowedOffers { value: ::fidl_next::wire::Uint32(1) };
21180
21181        pub const STATIC_AND_DYNAMIC: AllowedOffers =
21182            AllowedOffers { value: ::fidl_next::wire::Uint32(2) };
21183    }
21184
21185    unsafe impl<___D> ::fidl_next::Decode<___D> for AllowedOffers
21186    where
21187        ___D: ?Sized,
21188    {
21189        fn decode(
21190            slot: ::fidl_next::Slot<'_, Self>,
21191            _: &mut ___D,
21192            _: (),
21193        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
21194            ::fidl_next::munge!(let Self { value } = slot);
21195
21196            match u32::from(*value) {
21197                1 | 2 => (),
21198                unknown => {
21199                    return Err(::fidl_next::DecodeError::InvalidEnumOrdinal(unknown as i128));
21200                }
21201            }
21202
21203            Ok(())
21204        }
21205    }
21206
21207    impl ::core::convert::From<crate::natural::AllowedOffers> for AllowedOffers {
21208        fn from(natural: crate::natural::AllowedOffers) -> Self {
21209            match natural {
21210                crate::natural::AllowedOffers::StaticOnly => AllowedOffers::STATIC_ONLY,
21211
21212                crate::natural::AllowedOffers::StaticAndDynamic => {
21213                    AllowedOffers::STATIC_AND_DYNAMIC
21214                }
21215            }
21216        }
21217    }
21218
21219    impl ::fidl_next::IntoNatural for AllowedOffers {
21220        type Natural = crate::natural::AllowedOffers;
21221    }
21222
21223    /// The wire type corresponding to [`Availability`].
21224    #[derive(Clone, Copy, Debug, PartialEq, Eq)]
21225    #[repr(transparent)]
21226    pub struct Availability {
21227        pub(crate) value: ::fidl_next::wire::Uint32,
21228    }
21229
21230    impl ::fidl_next::Constrained for Availability {
21231        type Constraint = ();
21232
21233        fn validate(
21234            _: ::fidl_next::Slot<'_, Self>,
21235            _: Self::Constraint,
21236        ) -> Result<(), ::fidl_next::ValidationError> {
21237            Ok(())
21238        }
21239    }
21240
21241    unsafe impl ::fidl_next::Wire for Availability {
21242        type Narrowed<'de> = Self;
21243
21244        #[inline]
21245        fn zero_padding(_: &mut ::core::mem::MaybeUninit<Self>) {
21246            // Wire enums have no padding
21247        }
21248    }
21249
21250    impl Availability {
21251        pub const REQUIRED: Availability = Availability { value: ::fidl_next::wire::Uint32(1) };
21252
21253        pub const OPTIONAL: Availability = Availability { value: ::fidl_next::wire::Uint32(2) };
21254
21255        pub const SAME_AS_TARGET: Availability =
21256            Availability { value: ::fidl_next::wire::Uint32(3) };
21257
21258        pub const TRANSITIONAL: Availability = Availability { value: ::fidl_next::wire::Uint32(4) };
21259    }
21260
21261    unsafe impl<___D> ::fidl_next::Decode<___D> for Availability
21262    where
21263        ___D: ?Sized,
21264    {
21265        fn decode(
21266            slot: ::fidl_next::Slot<'_, Self>,
21267            _: &mut ___D,
21268            _: (),
21269        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
21270            ::fidl_next::munge!(let Self { value } = slot);
21271
21272            match u32::from(*value) {
21273                1 | 2 | 3 | 4 => (),
21274                unknown => {
21275                    return Err(::fidl_next::DecodeError::InvalidEnumOrdinal(unknown as i128));
21276                }
21277            }
21278
21279            Ok(())
21280        }
21281    }
21282
21283    impl ::core::convert::From<crate::natural::Availability> for Availability {
21284        fn from(natural: crate::natural::Availability) -> Self {
21285            match natural {
21286                crate::natural::Availability::Required => Availability::REQUIRED,
21287
21288                crate::natural::Availability::Optional => Availability::OPTIONAL,
21289
21290                crate::natural::Availability::SameAsTarget => Availability::SAME_AS_TARGET,
21291
21292                crate::natural::Availability::Transitional => Availability::TRANSITIONAL,
21293            }
21294        }
21295    }
21296
21297    impl ::fidl_next::IntoNatural for Availability {
21298        type Natural = crate::natural::Availability;
21299    }
21300
21301    /// The wire type corresponding to [`Name`](crate::natural::Name).
21302    pub type Name<'de> = ::fidl_next::wire::String<'de>;
21303
21304    /// The wire type corresponding to [`Service`].
21305    #[repr(C)]
21306    pub struct Service<'de> {
21307        pub(crate) table: ::fidl_next::wire::Table<'de>,
21308    }
21309
21310    impl<'de> Drop for Service<'de> {
21311        fn drop(&mut self) {
21312            let _ = self.table.get(1).map(|envelope| unsafe {
21313                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
21314            });
21315
21316            let _ = self.table.get(2).map(|envelope| unsafe {
21317                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
21318            });
21319        }
21320    }
21321
21322    impl ::fidl_next::Constrained for Service<'_> {
21323        type Constraint = ();
21324
21325        fn validate(
21326            _: ::fidl_next::Slot<'_, Self>,
21327            _: Self::Constraint,
21328        ) -> Result<(), ::fidl_next::ValidationError> {
21329            Ok(())
21330        }
21331    }
21332
21333    unsafe impl ::fidl_next::Wire for Service<'static> {
21334        type Narrowed<'de> = Service<'de>;
21335
21336        #[inline]
21337        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
21338            ::fidl_next::munge!(let Self { table } = out);
21339            ::fidl_next::wire::Table::zero_padding(table);
21340        }
21341    }
21342
21343    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for Service<'de>
21344    where
21345        ___D: ::fidl_next::Decoder<'de> + ?Sized,
21346    {
21347        fn decode(
21348            slot: ::fidl_next::Slot<'_, Self>,
21349            decoder: &mut ___D,
21350            _: (),
21351        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
21352            ::fidl_next::munge!(let Self { table } = slot);
21353
21354            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
21355                match ordinal {
21356                    0 => unsafe { ::core::hint::unreachable_unchecked() },
21357
21358                    1 => {
21359                        ::fidl_next::wire::Envelope::decode_as::<
21360                            ___D,
21361                            ::fidl_next::wire::String<'de>,
21362                        >(slot.as_mut(), decoder, 100)?;
21363
21364                        let value = unsafe {
21365                            slot.deref_unchecked()
21366                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
21367                        };
21368
21369                        if value.len() > 100 {
21370                            return Err(::fidl_next::DecodeError::VectorTooLong {
21371                                size: value.len() as u64,
21372                                limit: 100,
21373                            });
21374                        }
21375
21376                        Ok(())
21377                    }
21378
21379                    2 => {
21380                        ::fidl_next::wire::Envelope::decode_as::<
21381                            ___D,
21382                            ::fidl_next::wire::String<'de>,
21383                        >(slot.as_mut(), decoder, 1024)?;
21384
21385                        let value = unsafe {
21386                            slot.deref_unchecked()
21387                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
21388                        };
21389
21390                        if value.len() > 1024 {
21391                            return Err(::fidl_next::DecodeError::VectorTooLong {
21392                                size: value.len() as u64,
21393                                limit: 1024,
21394                            });
21395                        }
21396
21397                        Ok(())
21398                    }
21399
21400                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
21401                }
21402            })
21403        }
21404    }
21405
21406    impl<'de> Service<'de> {
21407        pub fn name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
21408            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
21409        }
21410
21411        pub fn take_name(&mut self) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
21412            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
21413        }
21414
21415        pub fn source_path(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
21416            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
21417        }
21418
21419        pub fn take_source_path(
21420            &mut self,
21421        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
21422            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
21423        }
21424    }
21425
21426    impl<'de> ::core::fmt::Debug for Service<'de> {
21427        fn fmt(
21428            &self,
21429            f: &mut ::core::fmt::Formatter<'_>,
21430        ) -> ::core::result::Result<(), ::core::fmt::Error> {
21431            f.debug_struct("Service")
21432                .field("name", &self.name())
21433                .field("source_path", &self.source_path())
21434                .finish()
21435        }
21436    }
21437
21438    impl<'de> ::fidl_next::IntoNatural for Service<'de> {
21439        type Natural = crate::natural::Service;
21440    }
21441
21442    /// The wire type corresponding to [`Directory`].
21443    #[repr(C)]
21444    pub struct Directory<'de> {
21445        pub(crate) table: ::fidl_next::wire::Table<'de>,
21446    }
21447
21448    impl<'de> Drop for Directory<'de> {
21449        fn drop(&mut self) {
21450            let _ = self.table.get(1).map(|envelope| unsafe {
21451                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
21452            });
21453
21454            let _ = self.table.get(2).map(|envelope| unsafe {
21455                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
21456            });
21457
21458            let _ = self.table.get(3).map(|envelope| unsafe {
21459                envelope.read_unchecked::<::fidl_next_common_fuchsia_io::wire::Operations>()
21460            });
21461        }
21462    }
21463
21464    impl ::fidl_next::Constrained for Directory<'_> {
21465        type Constraint = ();
21466
21467        fn validate(
21468            _: ::fidl_next::Slot<'_, Self>,
21469            _: Self::Constraint,
21470        ) -> Result<(), ::fidl_next::ValidationError> {
21471            Ok(())
21472        }
21473    }
21474
21475    unsafe impl ::fidl_next::Wire for Directory<'static> {
21476        type Narrowed<'de> = Directory<'de>;
21477
21478        #[inline]
21479        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
21480            ::fidl_next::munge!(let Self { table } = out);
21481            ::fidl_next::wire::Table::zero_padding(table);
21482        }
21483    }
21484
21485    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for Directory<'de>
21486    where
21487        ___D: ::fidl_next::Decoder<'de> + ?Sized,
21488    {
21489        fn decode(
21490            slot: ::fidl_next::Slot<'_, Self>,
21491            decoder: &mut ___D,
21492            _: (),
21493        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
21494            ::fidl_next::munge!(let Self { table } = slot);
21495
21496            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
21497                match ordinal {
21498                    0 => unsafe { ::core::hint::unreachable_unchecked() },
21499
21500                    1 => {
21501                        ::fidl_next::wire::Envelope::decode_as::<
21502                            ___D,
21503                            ::fidl_next::wire::String<'de>,
21504                        >(slot.as_mut(), decoder, 100)?;
21505
21506                        let value = unsafe {
21507                            slot.deref_unchecked()
21508                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
21509                        };
21510
21511                        if value.len() > 100 {
21512                            return Err(::fidl_next::DecodeError::VectorTooLong {
21513                                size: value.len() as u64,
21514                                limit: 100,
21515                            });
21516                        }
21517
21518                        Ok(())
21519                    }
21520
21521                    2 => {
21522                        ::fidl_next::wire::Envelope::decode_as::<
21523                            ___D,
21524                            ::fidl_next::wire::String<'de>,
21525                        >(slot.as_mut(), decoder, 1024)?;
21526
21527                        let value = unsafe {
21528                            slot.deref_unchecked()
21529                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
21530                        };
21531
21532                        if value.len() > 1024 {
21533                            return Err(::fidl_next::DecodeError::VectorTooLong {
21534                                size: value.len() as u64,
21535                                limit: 1024,
21536                            });
21537                        }
21538
21539                        Ok(())
21540                    }
21541
21542                    3 => {
21543                        ::fidl_next::wire::Envelope::decode_as::<
21544                            ___D,
21545                            ::fidl_next_common_fuchsia_io::wire::Operations,
21546                        >(slot.as_mut(), decoder, ())?;
21547
21548                        Ok(())
21549                    }
21550
21551                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
21552                }
21553            })
21554        }
21555    }
21556
21557    impl<'de> Directory<'de> {
21558        pub fn name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
21559            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
21560        }
21561
21562        pub fn take_name(&mut self) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
21563            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
21564        }
21565
21566        pub fn source_path(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
21567            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
21568        }
21569
21570        pub fn take_source_path(
21571            &mut self,
21572        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
21573            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
21574        }
21575
21576        pub fn rights(
21577            &self,
21578        ) -> ::core::option::Option<&::fidl_next_common_fuchsia_io::wire::Operations> {
21579            unsafe { Some(self.table.get(3)?.deref_unchecked()) }
21580        }
21581
21582        pub fn take_rights(
21583            &mut self,
21584        ) -> ::core::option::Option<::fidl_next_common_fuchsia_io::wire::Operations> {
21585            unsafe { Some(self.table.get_mut(3)?.take_unchecked()) }
21586        }
21587    }
21588
21589    impl<'de> ::core::fmt::Debug for Directory<'de> {
21590        fn fmt(
21591            &self,
21592            f: &mut ::core::fmt::Formatter<'_>,
21593        ) -> ::core::result::Result<(), ::core::fmt::Error> {
21594            f.debug_struct("Directory")
21595                .field("name", &self.name())
21596                .field("source_path", &self.source_path())
21597                .field("rights", &self.rights())
21598                .finish()
21599        }
21600    }
21601
21602    impl<'de> ::fidl_next::IntoNatural for Directory<'de> {
21603        type Natural = crate::natural::Directory;
21604    }
21605
21606    /// The wire type corresponding to [`ParentRef`].
21607    pub type ParentRef = ::fidl_next::wire::Unit;
21608
21609    /// The wire type corresponding to [`SelfRef`].
21610    pub type SelfRef = ::fidl_next::wire::Unit;
21611
21612    /// The wire type corresponding to [`ChildName`](crate::natural::ChildName).
21613    pub type ChildName<'de> = ::fidl_next::wire::String<'de>;
21614
21615    /// The wire type corresponding to [`ChildRef`].
21616    #[derive(Debug)]
21617    #[repr(C)]
21618    pub struct ChildRef<'de> {
21619        pub name: ::fidl_next::wire::String<'de>,
21620
21621        pub collection: ::fidl_next::wire::OptionalString<'de>,
21622    }
21623
21624    static_assertions::const_assert_eq!(std::mem::size_of::<ChildRef<'_>>(), 32);
21625    static_assertions::const_assert_eq!(std::mem::align_of::<ChildRef<'_>>(), 8);
21626
21627    static_assertions::const_assert_eq!(std::mem::offset_of!(ChildRef<'_>, name), 0);
21628
21629    static_assertions::const_assert_eq!(std::mem::offset_of!(ChildRef<'_>, collection), 16);
21630
21631    impl ::fidl_next::Constrained for ChildRef<'_> {
21632        type Constraint = ();
21633
21634        fn validate(
21635            _: ::fidl_next::Slot<'_, Self>,
21636            _: Self::Constraint,
21637        ) -> Result<(), ::fidl_next::ValidationError> {
21638            Ok(())
21639        }
21640    }
21641
21642    unsafe impl ::fidl_next::Wire for ChildRef<'static> {
21643        type Narrowed<'de> = ChildRef<'de>;
21644
21645        #[inline]
21646        fn zero_padding(out_: &mut ::core::mem::MaybeUninit<Self>) {
21647            ::fidl_next::munge! {
21648                let Self {
21649                    name,
21650                    collection,
21651
21652                } = &mut *out_;
21653            }
21654
21655            ::fidl_next::Wire::zero_padding(name);
21656
21657            ::fidl_next::Wire::zero_padding(collection);
21658        }
21659    }
21660
21661    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for ChildRef<'de>
21662    where
21663        ___D: ::fidl_next::decoder::InternalHandleDecoder + ?Sized,
21664        ___D: ::fidl_next::Decoder<'de>,
21665    {
21666        fn decode(
21667            slot_: ::fidl_next::Slot<'_, Self>,
21668            decoder_: &mut ___D,
21669            _: (),
21670        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
21671            ::fidl_next::munge! {
21672                let Self {
21673                    mut name,
21674                    mut collection,
21675
21676                } = slot_;
21677            }
21678
21679            let _field = name.as_mut();
21680            ::fidl_next::Constrained::validate(_field, 1024)?;
21681            ::fidl_next::Decode::decode(name.as_mut(), decoder_, 1024)?;
21682
21683            let name = unsafe { name.deref_unchecked() };
21684
21685            if name.len() > 1024 {
21686                return Err(::fidl_next::DecodeError::VectorTooLong {
21687                    size: name.len() as u64,
21688                    limit: 1024,
21689                });
21690            }
21691
21692            let _field = collection.as_mut();
21693            ::fidl_next::Constrained::validate(_field, 100)?;
21694            ::fidl_next::Decode::decode(collection.as_mut(), decoder_, 100)?;
21695
21696            let collection = unsafe { collection.deref_unchecked() };
21697
21698            if let Some(collection) = collection.as_ref() {
21699                if collection.len() > 100 {
21700                    return Err(::fidl_next::DecodeError::VectorTooLong {
21701                        size: collection.len() as u64,
21702                        limit: 100,
21703                    });
21704                }
21705            }
21706
21707            Ok(())
21708        }
21709    }
21710
21711    impl<'de> ::fidl_next::IntoNatural for ChildRef<'de> {
21712        type Natural = crate::natural::ChildRef;
21713    }
21714
21715    /// The wire type corresponding to [`CollectionRef`].
21716    #[derive(Debug)]
21717    #[repr(C)]
21718    pub struct CollectionRef<'de> {
21719        pub name: ::fidl_next::wire::String<'de>,
21720    }
21721
21722    static_assertions::const_assert_eq!(std::mem::size_of::<CollectionRef<'_>>(), 16);
21723    static_assertions::const_assert_eq!(std::mem::align_of::<CollectionRef<'_>>(), 8);
21724
21725    static_assertions::const_assert_eq!(std::mem::offset_of!(CollectionRef<'_>, name), 0);
21726
21727    impl ::fidl_next::Constrained for CollectionRef<'_> {
21728        type Constraint = ();
21729
21730        fn validate(
21731            _: ::fidl_next::Slot<'_, Self>,
21732            _: Self::Constraint,
21733        ) -> Result<(), ::fidl_next::ValidationError> {
21734            Ok(())
21735        }
21736    }
21737
21738    unsafe impl ::fidl_next::Wire for CollectionRef<'static> {
21739        type Narrowed<'de> = CollectionRef<'de>;
21740
21741        #[inline]
21742        fn zero_padding(out_: &mut ::core::mem::MaybeUninit<Self>) {
21743            ::fidl_next::munge! {
21744                let Self {
21745                    name,
21746
21747                } = &mut *out_;
21748            }
21749
21750            ::fidl_next::Wire::zero_padding(name);
21751        }
21752    }
21753
21754    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for CollectionRef<'de>
21755    where
21756        ___D: ::fidl_next::decoder::InternalHandleDecoder + ?Sized,
21757        ___D: ::fidl_next::Decoder<'de>,
21758    {
21759        fn decode(
21760            slot_: ::fidl_next::Slot<'_, Self>,
21761            decoder_: &mut ___D,
21762            _: (),
21763        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
21764            ::fidl_next::munge! {
21765                let Self {
21766                    mut name,
21767
21768                } = slot_;
21769            }
21770
21771            let _field = name.as_mut();
21772            ::fidl_next::Constrained::validate(_field, 100)?;
21773            ::fidl_next::Decode::decode(name.as_mut(), decoder_, 100)?;
21774
21775            let name = unsafe { name.deref_unchecked() };
21776
21777            if name.len() > 100 {
21778                return Err(::fidl_next::DecodeError::VectorTooLong {
21779                    size: name.len() as u64,
21780                    limit: 100,
21781                });
21782            }
21783
21784            Ok(())
21785        }
21786    }
21787
21788    impl<'de> ::fidl_next::IntoNatural for CollectionRef<'de> {
21789        type Natural = crate::natural::CollectionRef;
21790    }
21791
21792    /// The wire type corresponding to [`FrameworkRef`].
21793    pub type FrameworkRef = ::fidl_next::wire::Unit;
21794
21795    /// The wire type corresponding to [`CapabilityRef`].
21796    #[derive(Debug)]
21797    #[repr(C)]
21798    pub struct CapabilityRef<'de> {
21799        pub name: ::fidl_next::wire::String<'de>,
21800    }
21801
21802    static_assertions::const_assert_eq!(std::mem::size_of::<CapabilityRef<'_>>(), 16);
21803    static_assertions::const_assert_eq!(std::mem::align_of::<CapabilityRef<'_>>(), 8);
21804
21805    static_assertions::const_assert_eq!(std::mem::offset_of!(CapabilityRef<'_>, name), 0);
21806
21807    impl ::fidl_next::Constrained for CapabilityRef<'_> {
21808        type Constraint = ();
21809
21810        fn validate(
21811            _: ::fidl_next::Slot<'_, Self>,
21812            _: Self::Constraint,
21813        ) -> Result<(), ::fidl_next::ValidationError> {
21814            Ok(())
21815        }
21816    }
21817
21818    unsafe impl ::fidl_next::Wire for CapabilityRef<'static> {
21819        type Narrowed<'de> = CapabilityRef<'de>;
21820
21821        #[inline]
21822        fn zero_padding(out_: &mut ::core::mem::MaybeUninit<Self>) {
21823            ::fidl_next::munge! {
21824                let Self {
21825                    name,
21826
21827                } = &mut *out_;
21828            }
21829
21830            ::fidl_next::Wire::zero_padding(name);
21831        }
21832    }
21833
21834    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for CapabilityRef<'de>
21835    where
21836        ___D: ::fidl_next::decoder::InternalHandleDecoder + ?Sized,
21837        ___D: ::fidl_next::Decoder<'de>,
21838    {
21839        fn decode(
21840            slot_: ::fidl_next::Slot<'_, Self>,
21841            decoder_: &mut ___D,
21842            _: (),
21843        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
21844            ::fidl_next::munge! {
21845                let Self {
21846                    mut name,
21847
21848                } = slot_;
21849            }
21850
21851            let _field = name.as_mut();
21852            ::fidl_next::Constrained::validate(_field, 100)?;
21853            ::fidl_next::Decode::decode(name.as_mut(), decoder_, 100)?;
21854
21855            let name = unsafe { name.deref_unchecked() };
21856
21857            if name.len() > 100 {
21858                return Err(::fidl_next::DecodeError::VectorTooLong {
21859                    size: name.len() as u64,
21860                    limit: 100,
21861                });
21862            }
21863
21864            Ok(())
21865        }
21866    }
21867
21868    impl<'de> ::fidl_next::IntoNatural for CapabilityRef<'de> {
21869        type Natural = crate::natural::CapabilityRef;
21870    }
21871
21872    /// The wire type corresponding to [`DebugRef`].
21873    pub type DebugRef = ::fidl_next::wire::Unit;
21874
21875    /// The wire type corresponding to [`VoidRef`].
21876    pub type VoidRef = ::fidl_next::wire::Unit;
21877
21878    /// The wire type corresponding to [`StorageId`].
21879    #[derive(Clone, Copy, Debug, PartialEq, Eq)]
21880    #[repr(transparent)]
21881    pub struct StorageId {
21882        pub(crate) value: ::fidl_next::wire::Uint32,
21883    }
21884
21885    impl ::fidl_next::Constrained for StorageId {
21886        type Constraint = ();
21887
21888        fn validate(
21889            _: ::fidl_next::Slot<'_, Self>,
21890            _: Self::Constraint,
21891        ) -> Result<(), ::fidl_next::ValidationError> {
21892            Ok(())
21893        }
21894    }
21895
21896    unsafe impl ::fidl_next::Wire for StorageId {
21897        type Narrowed<'de> = Self;
21898
21899        #[inline]
21900        fn zero_padding(_: &mut ::core::mem::MaybeUninit<Self>) {
21901            // Wire enums have no padding
21902        }
21903    }
21904
21905    impl StorageId {
21906        pub const STATIC_INSTANCE_ID: StorageId = StorageId { value: ::fidl_next::wire::Uint32(1) };
21907
21908        pub const STATIC_INSTANCE_ID_OR_MONIKER: StorageId =
21909            StorageId { value: ::fidl_next::wire::Uint32(2) };
21910    }
21911
21912    unsafe impl<___D> ::fidl_next::Decode<___D> for StorageId
21913    where
21914        ___D: ?Sized,
21915    {
21916        fn decode(
21917            slot: ::fidl_next::Slot<'_, Self>,
21918            _: &mut ___D,
21919            _: (),
21920        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
21921            ::fidl_next::munge!(let Self { value } = slot);
21922
21923            match u32::from(*value) {
21924                1 | 2 => (),
21925                unknown => {
21926                    return Err(::fidl_next::DecodeError::InvalidEnumOrdinal(unknown as i128));
21927                }
21928            }
21929
21930            Ok(())
21931        }
21932    }
21933
21934    impl ::core::convert::From<crate::natural::StorageId> for StorageId {
21935        fn from(natural: crate::natural::StorageId) -> Self {
21936            match natural {
21937                crate::natural::StorageId::StaticInstanceId => StorageId::STATIC_INSTANCE_ID,
21938
21939                crate::natural::StorageId::StaticInstanceIdOrMoniker => {
21940                    StorageId::STATIC_INSTANCE_ID_OR_MONIKER
21941                }
21942            }
21943        }
21944    }
21945
21946    impl ::fidl_next::IntoNatural for StorageId {
21947        type Natural = crate::natural::StorageId;
21948    }
21949
21950    /// The wire type corresponding to [`Runner`].
21951    #[repr(C)]
21952    pub struct Runner<'de> {
21953        pub(crate) table: ::fidl_next::wire::Table<'de>,
21954    }
21955
21956    impl<'de> Drop for Runner<'de> {
21957        fn drop(&mut self) {
21958            let _ = self.table.get(1).map(|envelope| unsafe {
21959                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
21960            });
21961
21962            let _ = self.table.get(2).map(|envelope| unsafe {
21963                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
21964            });
21965        }
21966    }
21967
21968    impl ::fidl_next::Constrained for Runner<'_> {
21969        type Constraint = ();
21970
21971        fn validate(
21972            _: ::fidl_next::Slot<'_, Self>,
21973            _: Self::Constraint,
21974        ) -> Result<(), ::fidl_next::ValidationError> {
21975            Ok(())
21976        }
21977    }
21978
21979    unsafe impl ::fidl_next::Wire for Runner<'static> {
21980        type Narrowed<'de> = Runner<'de>;
21981
21982        #[inline]
21983        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
21984            ::fidl_next::munge!(let Self { table } = out);
21985            ::fidl_next::wire::Table::zero_padding(table);
21986        }
21987    }
21988
21989    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for Runner<'de>
21990    where
21991        ___D: ::fidl_next::Decoder<'de> + ?Sized,
21992    {
21993        fn decode(
21994            slot: ::fidl_next::Slot<'_, Self>,
21995            decoder: &mut ___D,
21996            _: (),
21997        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
21998            ::fidl_next::munge!(let Self { table } = slot);
21999
22000            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
22001                match ordinal {
22002                    0 => unsafe { ::core::hint::unreachable_unchecked() },
22003
22004                    1 => {
22005                        ::fidl_next::wire::Envelope::decode_as::<
22006                            ___D,
22007                            ::fidl_next::wire::String<'de>,
22008                        >(slot.as_mut(), decoder, 100)?;
22009
22010                        let value = unsafe {
22011                            slot.deref_unchecked()
22012                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
22013                        };
22014
22015                        if value.len() > 100 {
22016                            return Err(::fidl_next::DecodeError::VectorTooLong {
22017                                size: value.len() as u64,
22018                                limit: 100,
22019                            });
22020                        }
22021
22022                        Ok(())
22023                    }
22024
22025                    2 => {
22026                        ::fidl_next::wire::Envelope::decode_as::<
22027                            ___D,
22028                            ::fidl_next::wire::String<'de>,
22029                        >(slot.as_mut(), decoder, 1024)?;
22030
22031                        let value = unsafe {
22032                            slot.deref_unchecked()
22033                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
22034                        };
22035
22036                        if value.len() > 1024 {
22037                            return Err(::fidl_next::DecodeError::VectorTooLong {
22038                                size: value.len() as u64,
22039                                limit: 1024,
22040                            });
22041                        }
22042
22043                        Ok(())
22044                    }
22045
22046                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
22047                }
22048            })
22049        }
22050    }
22051
22052    impl<'de> Runner<'de> {
22053        pub fn name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
22054            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
22055        }
22056
22057        pub fn take_name(&mut self) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
22058            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
22059        }
22060
22061        pub fn source_path(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
22062            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
22063        }
22064
22065        pub fn take_source_path(
22066            &mut self,
22067        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
22068            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
22069        }
22070    }
22071
22072    impl<'de> ::core::fmt::Debug for Runner<'de> {
22073        fn fmt(
22074            &self,
22075            f: &mut ::core::fmt::Formatter<'_>,
22076        ) -> ::core::result::Result<(), ::core::fmt::Error> {
22077            f.debug_struct("Runner")
22078                .field("name", &self.name())
22079                .field("source_path", &self.source_path())
22080                .finish()
22081        }
22082    }
22083
22084    impl<'de> ::fidl_next::IntoNatural for Runner<'de> {
22085        type Natural = crate::natural::Runner;
22086    }
22087
22088    /// The wire type corresponding to [`Resolver`].
22089    #[repr(C)]
22090    pub struct Resolver<'de> {
22091        pub(crate) table: ::fidl_next::wire::Table<'de>,
22092    }
22093
22094    impl<'de> Drop for Resolver<'de> {
22095        fn drop(&mut self) {
22096            let _ = self.table.get(1).map(|envelope| unsafe {
22097                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
22098            });
22099
22100            let _ = self.table.get(2).map(|envelope| unsafe {
22101                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
22102            });
22103        }
22104    }
22105
22106    impl ::fidl_next::Constrained for Resolver<'_> {
22107        type Constraint = ();
22108
22109        fn validate(
22110            _: ::fidl_next::Slot<'_, Self>,
22111            _: Self::Constraint,
22112        ) -> Result<(), ::fidl_next::ValidationError> {
22113            Ok(())
22114        }
22115    }
22116
22117    unsafe impl ::fidl_next::Wire for Resolver<'static> {
22118        type Narrowed<'de> = Resolver<'de>;
22119
22120        #[inline]
22121        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
22122            ::fidl_next::munge!(let Self { table } = out);
22123            ::fidl_next::wire::Table::zero_padding(table);
22124        }
22125    }
22126
22127    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for Resolver<'de>
22128    where
22129        ___D: ::fidl_next::Decoder<'de> + ?Sized,
22130    {
22131        fn decode(
22132            slot: ::fidl_next::Slot<'_, Self>,
22133            decoder: &mut ___D,
22134            _: (),
22135        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
22136            ::fidl_next::munge!(let Self { table } = slot);
22137
22138            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
22139                match ordinal {
22140                    0 => unsafe { ::core::hint::unreachable_unchecked() },
22141
22142                    1 => {
22143                        ::fidl_next::wire::Envelope::decode_as::<
22144                            ___D,
22145                            ::fidl_next::wire::String<'de>,
22146                        >(slot.as_mut(), decoder, 100)?;
22147
22148                        let value = unsafe {
22149                            slot.deref_unchecked()
22150                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
22151                        };
22152
22153                        if value.len() > 100 {
22154                            return Err(::fidl_next::DecodeError::VectorTooLong {
22155                                size: value.len() as u64,
22156                                limit: 100,
22157                            });
22158                        }
22159
22160                        Ok(())
22161                    }
22162
22163                    2 => {
22164                        ::fidl_next::wire::Envelope::decode_as::<
22165                            ___D,
22166                            ::fidl_next::wire::String<'de>,
22167                        >(slot.as_mut(), decoder, 1024)?;
22168
22169                        let value = unsafe {
22170                            slot.deref_unchecked()
22171                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
22172                        };
22173
22174                        if value.len() > 1024 {
22175                            return Err(::fidl_next::DecodeError::VectorTooLong {
22176                                size: value.len() as u64,
22177                                limit: 1024,
22178                            });
22179                        }
22180
22181                        Ok(())
22182                    }
22183
22184                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
22185                }
22186            })
22187        }
22188    }
22189
22190    impl<'de> Resolver<'de> {
22191        pub fn name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
22192            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
22193        }
22194
22195        pub fn take_name(&mut self) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
22196            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
22197        }
22198
22199        pub fn source_path(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
22200            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
22201        }
22202
22203        pub fn take_source_path(
22204            &mut self,
22205        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
22206            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
22207        }
22208    }
22209
22210    impl<'de> ::core::fmt::Debug for Resolver<'de> {
22211        fn fmt(
22212            &self,
22213            f: &mut ::core::fmt::Formatter<'_>,
22214        ) -> ::core::result::Result<(), ::core::fmt::Error> {
22215            f.debug_struct("Resolver")
22216                .field("name", &self.name())
22217                .field("source_path", &self.source_path())
22218                .finish()
22219        }
22220    }
22221
22222    impl<'de> ::fidl_next::IntoNatural for Resolver<'de> {
22223        type Natural = crate::natural::Resolver;
22224    }
22225
22226    /// The wire type corresponding to [`EventStream`].
22227    #[repr(C)]
22228    pub struct EventStream<'de> {
22229        pub(crate) table: ::fidl_next::wire::Table<'de>,
22230    }
22231
22232    impl<'de> Drop for EventStream<'de> {
22233        fn drop(&mut self) {
22234            let _ = self.table.get(1).map(|envelope| unsafe {
22235                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
22236            });
22237        }
22238    }
22239
22240    impl ::fidl_next::Constrained for EventStream<'_> {
22241        type Constraint = ();
22242
22243        fn validate(
22244            _: ::fidl_next::Slot<'_, Self>,
22245            _: Self::Constraint,
22246        ) -> Result<(), ::fidl_next::ValidationError> {
22247            Ok(())
22248        }
22249    }
22250
22251    unsafe impl ::fidl_next::Wire for EventStream<'static> {
22252        type Narrowed<'de> = EventStream<'de>;
22253
22254        #[inline]
22255        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
22256            ::fidl_next::munge!(let Self { table } = out);
22257            ::fidl_next::wire::Table::zero_padding(table);
22258        }
22259    }
22260
22261    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for EventStream<'de>
22262    where
22263        ___D: ::fidl_next::Decoder<'de> + ?Sized,
22264    {
22265        fn decode(
22266            slot: ::fidl_next::Slot<'_, Self>,
22267            decoder: &mut ___D,
22268            _: (),
22269        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
22270            ::fidl_next::munge!(let Self { table } = slot);
22271
22272            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
22273                match ordinal {
22274                    0 => unsafe { ::core::hint::unreachable_unchecked() },
22275
22276                    1 => {
22277                        ::fidl_next::wire::Envelope::decode_as::<
22278                            ___D,
22279                            ::fidl_next::wire::String<'de>,
22280                        >(slot.as_mut(), decoder, 100)?;
22281
22282                        let value = unsafe {
22283                            slot.deref_unchecked()
22284                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
22285                        };
22286
22287                        if value.len() > 100 {
22288                            return Err(::fidl_next::DecodeError::VectorTooLong {
22289                                size: value.len() as u64,
22290                                limit: 100,
22291                            });
22292                        }
22293
22294                        Ok(())
22295                    }
22296
22297                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
22298                }
22299            })
22300        }
22301    }
22302
22303    impl<'de> EventStream<'de> {
22304        pub fn name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
22305            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
22306        }
22307
22308        pub fn take_name(&mut self) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
22309            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
22310        }
22311    }
22312
22313    impl<'de> ::core::fmt::Debug for EventStream<'de> {
22314        fn fmt(
22315            &self,
22316            f: &mut ::core::fmt::Formatter<'_>,
22317        ) -> ::core::result::Result<(), ::core::fmt::Error> {
22318            f.debug_struct("EventStream").field("name", &self.name()).finish()
22319        }
22320    }
22321
22322    impl<'de> ::fidl_next::IntoNatural for EventStream<'de> {
22323        type Natural = crate::natural::EventStream;
22324    }
22325
22326    /// The wire type corresponding to [`ConfigSingleValue`].
22327    #[repr(transparent)]
22328    pub struct ConfigSingleValue<'de> {
22329        pub(crate) raw: ::fidl_next::wire::Union,
22330        pub(crate) _phantom: ::core::marker::PhantomData<&'de mut [::fidl_next::Chunk]>,
22331    }
22332
22333    impl<'de> Drop for ConfigSingleValue<'de> {
22334        fn drop(&mut self) {
22335            match self.raw.ordinal() {
22336                1 => {
22337                    let _ = unsafe { self.raw.get().read_unchecked::<bool>() };
22338                }
22339
22340                2 => {
22341                    let _ = unsafe { self.raw.get().read_unchecked::<u8>() };
22342                }
22343
22344                3 => {
22345                    let _ = unsafe { self.raw.get().read_unchecked::<::fidl_next::wire::Uint16>() };
22346                }
22347
22348                4 => {
22349                    let _ = unsafe { self.raw.get().read_unchecked::<::fidl_next::wire::Uint32>() };
22350                }
22351
22352                5 => {
22353                    let _ = unsafe { self.raw.get().read_unchecked::<::fidl_next::wire::Uint64>() };
22354                }
22355
22356                6 => {
22357                    let _ = unsafe { self.raw.get().read_unchecked::<i8>() };
22358                }
22359
22360                7 => {
22361                    let _ = unsafe { self.raw.get().read_unchecked::<::fidl_next::wire::Int16>() };
22362                }
22363
22364                8 => {
22365                    let _ = unsafe { self.raw.get().read_unchecked::<::fidl_next::wire::Int32>() };
22366                }
22367
22368                9 => {
22369                    let _ = unsafe { self.raw.get().read_unchecked::<::fidl_next::wire::Int64>() };
22370                }
22371
22372                10 => {
22373                    let _ = unsafe {
22374                        self.raw.get().read_unchecked::<::fidl_next::wire::String<'de>>()
22375                    };
22376                }
22377
22378                _ => (),
22379            }
22380        }
22381    }
22382
22383    impl ::fidl_next::Constrained for ConfigSingleValue<'_> {
22384        type Constraint = ();
22385
22386        fn validate(
22387            _: ::fidl_next::Slot<'_, Self>,
22388            _: Self::Constraint,
22389        ) -> Result<(), ::fidl_next::ValidationError> {
22390            Ok(())
22391        }
22392    }
22393
22394    unsafe impl ::fidl_next::Wire for ConfigSingleValue<'static> {
22395        type Narrowed<'de> = ConfigSingleValue<'de>;
22396
22397        #[inline]
22398        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
22399            ::fidl_next::munge!(let Self { raw, _phantom: _ } = out);
22400            ::fidl_next::wire::Union::zero_padding(raw);
22401        }
22402    }
22403
22404    pub mod config_single_value {
22405        pub enum Ref<'de> {
22406            Bool(&'de bool),
22407
22408            Uint8(&'de u8),
22409
22410            Uint16(&'de ::fidl_next::wire::Uint16),
22411
22412            Uint32(&'de ::fidl_next::wire::Uint32),
22413
22414            Uint64(&'de ::fidl_next::wire::Uint64),
22415
22416            Int8(&'de i8),
22417
22418            Int16(&'de ::fidl_next::wire::Int16),
22419
22420            Int32(&'de ::fidl_next::wire::Int32),
22421
22422            Int64(&'de ::fidl_next::wire::Int64),
22423
22424            String(&'de ::fidl_next::wire::String<'de>),
22425
22426            UnknownOrdinal_(u64),
22427        }
22428
22429        pub enum Value<'de> {
22430            Bool(bool),
22431
22432            Uint8(u8),
22433
22434            Uint16(::fidl_next::wire::Uint16),
22435
22436            Uint32(::fidl_next::wire::Uint32),
22437
22438            Uint64(::fidl_next::wire::Uint64),
22439
22440            Int8(i8),
22441
22442            Int16(::fidl_next::wire::Int16),
22443
22444            Int32(::fidl_next::wire::Int32),
22445
22446            Int64(::fidl_next::wire::Int64),
22447
22448            String(::fidl_next::wire::String<'de>),
22449
22450            UnknownOrdinal_(u64),
22451        }
22452    }
22453
22454    impl<'de> ConfigSingleValue<'de> {
22455        pub fn as_ref(&self) -> crate::wire::config_single_value::Ref<'_> {
22456            match self.raw.ordinal() {
22457                1 => crate::wire::config_single_value::Ref::Bool(unsafe {
22458                    self.raw.get().deref_unchecked::<bool>()
22459                }),
22460
22461                2 => crate::wire::config_single_value::Ref::Uint8(unsafe {
22462                    self.raw.get().deref_unchecked::<u8>()
22463                }),
22464
22465                3 => crate::wire::config_single_value::Ref::Uint16(unsafe {
22466                    self.raw.get().deref_unchecked::<::fidl_next::wire::Uint16>()
22467                }),
22468
22469                4 => crate::wire::config_single_value::Ref::Uint32(unsafe {
22470                    self.raw.get().deref_unchecked::<::fidl_next::wire::Uint32>()
22471                }),
22472
22473                5 => crate::wire::config_single_value::Ref::Uint64(unsafe {
22474                    self.raw.get().deref_unchecked::<::fidl_next::wire::Uint64>()
22475                }),
22476
22477                6 => crate::wire::config_single_value::Ref::Int8(unsafe {
22478                    self.raw.get().deref_unchecked::<i8>()
22479                }),
22480
22481                7 => crate::wire::config_single_value::Ref::Int16(unsafe {
22482                    self.raw.get().deref_unchecked::<::fidl_next::wire::Int16>()
22483                }),
22484
22485                8 => crate::wire::config_single_value::Ref::Int32(unsafe {
22486                    self.raw.get().deref_unchecked::<::fidl_next::wire::Int32>()
22487                }),
22488
22489                9 => crate::wire::config_single_value::Ref::Int64(unsafe {
22490                    self.raw.get().deref_unchecked::<::fidl_next::wire::Int64>()
22491                }),
22492
22493                10 => crate::wire::config_single_value::Ref::String(unsafe {
22494                    self.raw.get().deref_unchecked::<::fidl_next::wire::String<'_>>()
22495                }),
22496
22497                unknown => crate::wire::config_single_value::Ref::UnknownOrdinal_(unknown),
22498            }
22499        }
22500
22501        pub fn into_inner(self) -> crate::wire::config_single_value::Value<'de> {
22502            let this = ::core::mem::ManuallyDrop::new(self);
22503
22504            match this.raw.ordinal() {
22505                1 => crate::wire::config_single_value::Value::Bool(unsafe {
22506                    this.raw.get().read_unchecked::<bool>()
22507                }),
22508
22509                2 => crate::wire::config_single_value::Value::Uint8(unsafe {
22510                    this.raw.get().read_unchecked::<u8>()
22511                }),
22512
22513                3 => crate::wire::config_single_value::Value::Uint16(unsafe {
22514                    this.raw.get().read_unchecked::<::fidl_next::wire::Uint16>()
22515                }),
22516
22517                4 => crate::wire::config_single_value::Value::Uint32(unsafe {
22518                    this.raw.get().read_unchecked::<::fidl_next::wire::Uint32>()
22519                }),
22520
22521                5 => crate::wire::config_single_value::Value::Uint64(unsafe {
22522                    this.raw.get().read_unchecked::<::fidl_next::wire::Uint64>()
22523                }),
22524
22525                6 => crate::wire::config_single_value::Value::Int8(unsafe {
22526                    this.raw.get().read_unchecked::<i8>()
22527                }),
22528
22529                7 => crate::wire::config_single_value::Value::Int16(unsafe {
22530                    this.raw.get().read_unchecked::<::fidl_next::wire::Int16>()
22531                }),
22532
22533                8 => crate::wire::config_single_value::Value::Int32(unsafe {
22534                    this.raw.get().read_unchecked::<::fidl_next::wire::Int32>()
22535                }),
22536
22537                9 => crate::wire::config_single_value::Value::Int64(unsafe {
22538                    this.raw.get().read_unchecked::<::fidl_next::wire::Int64>()
22539                }),
22540
22541                10 => crate::wire::config_single_value::Value::String(unsafe {
22542                    this.raw.get().read_unchecked::<::fidl_next::wire::String<'de>>()
22543                }),
22544
22545                unknown => crate::wire::config_single_value::Value::UnknownOrdinal_(unknown),
22546            }
22547        }
22548    }
22549
22550    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for ConfigSingleValue<'de>
22551    where
22552        ___D: ::fidl_next::decoder::InternalHandleDecoder + ?Sized,
22553        ___D: ::fidl_next::Decoder<'de>,
22554    {
22555        fn decode(
22556            mut slot: ::fidl_next::Slot<'_, Self>,
22557            decoder: &mut ___D,
22558            _: (),
22559        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
22560            ::fidl_next::munge!(let Self { mut raw, _phantom: _ } = slot.as_mut());
22561            match ::fidl_next::wire::Union::encoded_ordinal(raw.as_mut()) {
22562                1 => ::fidl_next::wire::Union::decode_as::<___D, bool>(raw, decoder, ())?,
22563
22564                2 => ::fidl_next::wire::Union::decode_as::<___D, u8>(raw, decoder, ())?,
22565
22566                3 => ::fidl_next::wire::Union::decode_as::<___D, ::fidl_next::wire::Uint16>(
22567                    raw,
22568                    decoder,
22569                    (),
22570                )?,
22571
22572                4 => ::fidl_next::wire::Union::decode_as::<___D, ::fidl_next::wire::Uint32>(
22573                    raw,
22574                    decoder,
22575                    (),
22576                )?,
22577
22578                5 => ::fidl_next::wire::Union::decode_as::<___D, ::fidl_next::wire::Uint64>(
22579                    raw,
22580                    decoder,
22581                    (),
22582                )?,
22583
22584                6 => ::fidl_next::wire::Union::decode_as::<___D, i8>(raw, decoder, ())?,
22585
22586                7 => ::fidl_next::wire::Union::decode_as::<___D, ::fidl_next::wire::Int16>(
22587                    raw,
22588                    decoder,
22589                    (),
22590                )?,
22591
22592                8 => ::fidl_next::wire::Union::decode_as::<___D, ::fidl_next::wire::Int32>(
22593                    raw,
22594                    decoder,
22595                    (),
22596                )?,
22597
22598                9 => ::fidl_next::wire::Union::decode_as::<___D, ::fidl_next::wire::Int64>(
22599                    raw,
22600                    decoder,
22601                    (),
22602                )?,
22603
22604                10 => ::fidl_next::wire::Union::decode_as::<___D, ::fidl_next::wire::String<'de>>(
22605                    raw, decoder, 4294967295,
22606                )?,
22607
22608                _ => ::fidl_next::wire::Union::decode_unknown(raw, decoder)?,
22609            }
22610
22611            Ok(())
22612        }
22613    }
22614
22615    impl<'de> ::core::fmt::Debug for ConfigSingleValue<'de> {
22616        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
22617            match self.raw.ordinal() {
22618                1 => unsafe { self.raw.get().deref_unchecked::<bool>().fmt(f) },
22619                2 => unsafe { self.raw.get().deref_unchecked::<u8>().fmt(f) },
22620                3 => unsafe {
22621                    self.raw.get().deref_unchecked::<::fidl_next::wire::Uint16>().fmt(f)
22622                },
22623                4 => unsafe {
22624                    self.raw.get().deref_unchecked::<::fidl_next::wire::Uint32>().fmt(f)
22625                },
22626                5 => unsafe {
22627                    self.raw.get().deref_unchecked::<::fidl_next::wire::Uint64>().fmt(f)
22628                },
22629                6 => unsafe { self.raw.get().deref_unchecked::<i8>().fmt(f) },
22630                7 => unsafe { self.raw.get().deref_unchecked::<::fidl_next::wire::Int16>().fmt(f) },
22631                8 => unsafe { self.raw.get().deref_unchecked::<::fidl_next::wire::Int32>().fmt(f) },
22632                9 => unsafe { self.raw.get().deref_unchecked::<::fidl_next::wire::Int64>().fmt(f) },
22633                10 => unsafe {
22634                    self.raw.get().deref_unchecked::<::fidl_next::wire::String<'_>>().fmt(f)
22635                },
22636                _ => unsafe { ::core::hint::unreachable_unchecked() },
22637            }
22638        }
22639    }
22640
22641    impl<'de> ::fidl_next::IntoNatural for ConfigSingleValue<'de> {
22642        type Natural = crate::natural::ConfigSingleValue;
22643    }
22644
22645    /// The wire type corresponding to [`ConfigVectorValue`].
22646    #[repr(transparent)]
22647    pub struct ConfigVectorValue<'de> {
22648        pub(crate) raw: ::fidl_next::wire::Union,
22649        pub(crate) _phantom: ::core::marker::PhantomData<&'de mut [::fidl_next::Chunk]>,
22650    }
22651
22652    impl<'de> Drop for ConfigVectorValue<'de> {
22653        fn drop(&mut self) {
22654            match self.raw.ordinal() {
22655                1 => {
22656                    let _ = unsafe {
22657                        self.raw.get().read_unchecked::<::fidl_next::wire::Vector<'de, bool>>()
22658                    };
22659                }
22660
22661                2 => {
22662                    let _ = unsafe {
22663                        self.raw.get().read_unchecked::<::fidl_next::wire::Vector<'de, u8>>()
22664                    };
22665                }
22666
22667                3 => {
22668                    let _ = unsafe {
22669                        self.raw.get().read_unchecked::<::fidl_next::wire::Vector<'de, ::fidl_next::wire::Uint16>>()
22670                    };
22671                }
22672
22673                4 => {
22674                    let _ = unsafe {
22675                        self.raw.get().read_unchecked::<::fidl_next::wire::Vector<'de, ::fidl_next::wire::Uint32>>()
22676                    };
22677                }
22678
22679                5 => {
22680                    let _ = unsafe {
22681                        self.raw.get().read_unchecked::<::fidl_next::wire::Vector<'de, ::fidl_next::wire::Uint64>>()
22682                    };
22683                }
22684
22685                6 => {
22686                    let _ = unsafe {
22687                        self.raw.get().read_unchecked::<::fidl_next::wire::Vector<'de, i8>>()
22688                    };
22689                }
22690
22691                7 => {
22692                    let _ = unsafe {
22693                        self.raw.get().read_unchecked::<::fidl_next::wire::Vector<'de, ::fidl_next::wire::Int16>>()
22694                    };
22695                }
22696
22697                8 => {
22698                    let _ = unsafe {
22699                        self.raw.get().read_unchecked::<::fidl_next::wire::Vector<'de, ::fidl_next::wire::Int32>>()
22700                    };
22701                }
22702
22703                9 => {
22704                    let _ = unsafe {
22705                        self.raw.get().read_unchecked::<::fidl_next::wire::Vector<'de, ::fidl_next::wire::Int64>>()
22706                    };
22707                }
22708
22709                10 => {
22710                    let _ = unsafe {
22711                        self.raw.get().read_unchecked::<::fidl_next::wire::Vector<'de, ::fidl_next::wire::String<'de>>>()
22712                    };
22713                }
22714
22715                _ => (),
22716            }
22717        }
22718    }
22719
22720    impl ::fidl_next::Constrained for ConfigVectorValue<'_> {
22721        type Constraint = ();
22722
22723        fn validate(
22724            _: ::fidl_next::Slot<'_, Self>,
22725            _: Self::Constraint,
22726        ) -> Result<(), ::fidl_next::ValidationError> {
22727            Ok(())
22728        }
22729    }
22730
22731    unsafe impl ::fidl_next::Wire for ConfigVectorValue<'static> {
22732        type Narrowed<'de> = ConfigVectorValue<'de>;
22733
22734        #[inline]
22735        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
22736            ::fidl_next::munge!(let Self { raw, _phantom: _ } = out);
22737            ::fidl_next::wire::Union::zero_padding(raw);
22738        }
22739    }
22740
22741    pub mod config_vector_value {
22742        pub enum Ref<'de> {
22743            BoolVector(&'de ::fidl_next::wire::Vector<'de, bool>),
22744
22745            Uint8Vector(&'de ::fidl_next::wire::Vector<'de, u8>),
22746
22747            Uint16Vector(&'de ::fidl_next::wire::Vector<'de, ::fidl_next::wire::Uint16>),
22748
22749            Uint32Vector(&'de ::fidl_next::wire::Vector<'de, ::fidl_next::wire::Uint32>),
22750
22751            Uint64Vector(&'de ::fidl_next::wire::Vector<'de, ::fidl_next::wire::Uint64>),
22752
22753            Int8Vector(&'de ::fidl_next::wire::Vector<'de, i8>),
22754
22755            Int16Vector(&'de ::fidl_next::wire::Vector<'de, ::fidl_next::wire::Int16>),
22756
22757            Int32Vector(&'de ::fidl_next::wire::Vector<'de, ::fidl_next::wire::Int32>),
22758
22759            Int64Vector(&'de ::fidl_next::wire::Vector<'de, ::fidl_next::wire::Int64>),
22760
22761            StringVector(&'de ::fidl_next::wire::Vector<'de, ::fidl_next::wire::String<'de>>),
22762
22763            UnknownOrdinal_(u64),
22764        }
22765
22766        pub enum Value<'de> {
22767            BoolVector(::fidl_next::wire::Vector<'de, bool>),
22768
22769            Uint8Vector(::fidl_next::wire::Vector<'de, u8>),
22770
22771            Uint16Vector(::fidl_next::wire::Vector<'de, ::fidl_next::wire::Uint16>),
22772
22773            Uint32Vector(::fidl_next::wire::Vector<'de, ::fidl_next::wire::Uint32>),
22774
22775            Uint64Vector(::fidl_next::wire::Vector<'de, ::fidl_next::wire::Uint64>),
22776
22777            Int8Vector(::fidl_next::wire::Vector<'de, i8>),
22778
22779            Int16Vector(::fidl_next::wire::Vector<'de, ::fidl_next::wire::Int16>),
22780
22781            Int32Vector(::fidl_next::wire::Vector<'de, ::fidl_next::wire::Int32>),
22782
22783            Int64Vector(::fidl_next::wire::Vector<'de, ::fidl_next::wire::Int64>),
22784
22785            StringVector(::fidl_next::wire::Vector<'de, ::fidl_next::wire::String<'de>>),
22786
22787            UnknownOrdinal_(u64),
22788        }
22789    }
22790
22791    impl<'de> ConfigVectorValue<'de> {
22792        pub fn as_ref(&self) -> crate::wire::config_vector_value::Ref<'_> {
22793            match self.raw.ordinal() {
22794                1 => crate::wire::config_vector_value::Ref::BoolVector(unsafe {
22795                    self.raw.get().deref_unchecked::<::fidl_next::wire::Vector<'_, bool>>()
22796                }),
22797
22798                2 => crate::wire::config_vector_value::Ref::Uint8Vector(unsafe {
22799                    self.raw.get().deref_unchecked::<::fidl_next::wire::Vector<'_, u8>>()
22800                }),
22801
22802                3 => crate::wire::config_vector_value::Ref::Uint16Vector(unsafe {
22803                    self.raw.get().deref_unchecked::<::fidl_next::wire::Vector<'_, ::fidl_next::wire::Uint16>>()
22804                }),
22805
22806                4 => crate::wire::config_vector_value::Ref::Uint32Vector(unsafe {
22807                    self.raw.get().deref_unchecked::<::fidl_next::wire::Vector<'_, ::fidl_next::wire::Uint32>>()
22808                }),
22809
22810                5 => crate::wire::config_vector_value::Ref::Uint64Vector(unsafe {
22811                    self.raw.get().deref_unchecked::<::fidl_next::wire::Vector<'_, ::fidl_next::wire::Uint64>>()
22812                }),
22813
22814                6 => crate::wire::config_vector_value::Ref::Int8Vector(unsafe {
22815                    self.raw.get().deref_unchecked::<::fidl_next::wire::Vector<'_, i8>>()
22816                }),
22817
22818                7 => {
22819                    crate::wire::config_vector_value::Ref::Int16Vector(unsafe {
22820                        self.raw.get().deref_unchecked::<::fidl_next::wire::Vector<'_, ::fidl_next::wire::Int16>>()
22821                    })
22822                }
22823
22824                8 => {
22825                    crate::wire::config_vector_value::Ref::Int32Vector(unsafe {
22826                        self.raw.get().deref_unchecked::<::fidl_next::wire::Vector<'_, ::fidl_next::wire::Int32>>()
22827                    })
22828                }
22829
22830                9 => {
22831                    crate::wire::config_vector_value::Ref::Int64Vector(unsafe {
22832                        self.raw.get().deref_unchecked::<::fidl_next::wire::Vector<'_, ::fidl_next::wire::Int64>>()
22833                    })
22834                }
22835
22836                10 => crate::wire::config_vector_value::Ref::StringVector(unsafe {
22837                    self.raw.get().deref_unchecked::<::fidl_next::wire::Vector<'_, ::fidl_next::wire::String<'_>>>()
22838                }),
22839
22840                unknown => crate::wire::config_vector_value::Ref::UnknownOrdinal_(unknown),
22841            }
22842        }
22843
22844        pub fn into_inner(self) -> crate::wire::config_vector_value::Value<'de> {
22845            let this = ::core::mem::ManuallyDrop::new(self);
22846
22847            match this.raw.ordinal() {
22848                1 => crate::wire::config_vector_value::Value::BoolVector(unsafe {
22849                    this.raw.get().read_unchecked::<::fidl_next::wire::Vector<'de, bool>>()
22850                }),
22851
22852                2 => crate::wire::config_vector_value::Value::Uint8Vector(unsafe {
22853                    this.raw.get().read_unchecked::<::fidl_next::wire::Vector<'de, u8>>()
22854                }),
22855
22856                3 => crate::wire::config_vector_value::Value::Uint16Vector(unsafe {
22857                    this.raw.get().read_unchecked::<::fidl_next::wire::Vector<'de, ::fidl_next::wire::Uint16>>()
22858                }),
22859
22860                4 => crate::wire::config_vector_value::Value::Uint32Vector(unsafe {
22861                    this.raw.get().read_unchecked::<::fidl_next::wire::Vector<'de, ::fidl_next::wire::Uint32>>()
22862                }),
22863
22864                5 => crate::wire::config_vector_value::Value::Uint64Vector(unsafe {
22865                    this.raw.get().read_unchecked::<::fidl_next::wire::Vector<'de, ::fidl_next::wire::Uint64>>()
22866                }),
22867
22868                6 => crate::wire::config_vector_value::Value::Int8Vector(unsafe {
22869                    this.raw.get().read_unchecked::<::fidl_next::wire::Vector<'de, i8>>()
22870                }),
22871
22872                7 => {
22873                    crate::wire::config_vector_value::Value::Int16Vector(unsafe {
22874                        this.raw.get().read_unchecked::<::fidl_next::wire::Vector<'de, ::fidl_next::wire::Int16>>()
22875                    })
22876                }
22877
22878                8 => {
22879                    crate::wire::config_vector_value::Value::Int32Vector(unsafe {
22880                        this.raw.get().read_unchecked::<::fidl_next::wire::Vector<'de, ::fidl_next::wire::Int32>>()
22881                    })
22882                }
22883
22884                9 => {
22885                    crate::wire::config_vector_value::Value::Int64Vector(unsafe {
22886                        this.raw.get().read_unchecked::<::fidl_next::wire::Vector<'de, ::fidl_next::wire::Int64>>()
22887                    })
22888                }
22889
22890                10 => crate::wire::config_vector_value::Value::StringVector(unsafe {
22891                    this.raw.get().read_unchecked::<::fidl_next::wire::Vector<'de, ::fidl_next::wire::String<'de>>>()
22892                }),
22893
22894                unknown => crate::wire::config_vector_value::Value::UnknownOrdinal_(unknown),
22895            }
22896        }
22897    }
22898
22899    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for ConfigVectorValue<'de>
22900    where
22901        ___D: ::fidl_next::decoder::InternalHandleDecoder + ?Sized,
22902        ___D: ::fidl_next::Decoder<'de>,
22903    {
22904        fn decode(
22905            mut slot: ::fidl_next::Slot<'_, Self>,
22906            decoder: &mut ___D,
22907            _: (),
22908        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
22909            ::fidl_next::munge!(let Self { mut raw, _phantom: _ } = slot.as_mut());
22910            match ::fidl_next::wire::Union::encoded_ordinal(raw.as_mut()) {
22911                1 => ::fidl_next::wire::Union::decode_as::<
22912                    ___D,
22913                    ::fidl_next::wire::Vector<'de, bool>,
22914                >(raw, decoder, (4294967295, ()))?,
22915
22916                2 => {
22917                    ::fidl_next::wire::Union::decode_as::<___D, ::fidl_next::wire::Vector<'de, u8>>(
22918                        raw,
22919                        decoder,
22920                        (4294967295, ()),
22921                    )?
22922                }
22923
22924                3 => ::fidl_next::wire::Union::decode_as::<
22925                    ___D,
22926                    ::fidl_next::wire::Vector<'de, ::fidl_next::wire::Uint16>,
22927                >(raw, decoder, (4294967295, ()))?,
22928
22929                4 => ::fidl_next::wire::Union::decode_as::<
22930                    ___D,
22931                    ::fidl_next::wire::Vector<'de, ::fidl_next::wire::Uint32>,
22932                >(raw, decoder, (4294967295, ()))?,
22933
22934                5 => ::fidl_next::wire::Union::decode_as::<
22935                    ___D,
22936                    ::fidl_next::wire::Vector<'de, ::fidl_next::wire::Uint64>,
22937                >(raw, decoder, (4294967295, ()))?,
22938
22939                6 => {
22940                    ::fidl_next::wire::Union::decode_as::<___D, ::fidl_next::wire::Vector<'de, i8>>(
22941                        raw,
22942                        decoder,
22943                        (4294967295, ()),
22944                    )?
22945                }
22946
22947                7 => ::fidl_next::wire::Union::decode_as::<
22948                    ___D,
22949                    ::fidl_next::wire::Vector<'de, ::fidl_next::wire::Int16>,
22950                >(raw, decoder, (4294967295, ()))?,
22951
22952                8 => ::fidl_next::wire::Union::decode_as::<
22953                    ___D,
22954                    ::fidl_next::wire::Vector<'de, ::fidl_next::wire::Int32>,
22955                >(raw, decoder, (4294967295, ()))?,
22956
22957                9 => ::fidl_next::wire::Union::decode_as::<
22958                    ___D,
22959                    ::fidl_next::wire::Vector<'de, ::fidl_next::wire::Int64>,
22960                >(raw, decoder, (4294967295, ()))?,
22961
22962                10 => ::fidl_next::wire::Union::decode_as::<
22963                    ___D,
22964                    ::fidl_next::wire::Vector<'de, ::fidl_next::wire::String<'de>>,
22965                >(raw, decoder, (4294967295, 4294967295))?,
22966
22967                _ => ::fidl_next::wire::Union::decode_unknown(raw, decoder)?,
22968            }
22969
22970            Ok(())
22971        }
22972    }
22973
22974    impl<'de> ::core::fmt::Debug for ConfigVectorValue<'de> {
22975        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
22976            match self.raw.ordinal() {
22977                1 => unsafe {
22978                    self.raw.get().deref_unchecked::<::fidl_next::wire::Vector<'_, bool>>().fmt(f)
22979                },
22980                2 => unsafe {
22981                    self.raw.get().deref_unchecked::<::fidl_next::wire::Vector<'_, u8>>().fmt(f)
22982                },
22983                3 => unsafe {
22984                    self.raw.get().deref_unchecked::<
22985                            ::fidl_next::wire::Vector<'_, ::fidl_next::wire::Uint16>
22986                        >().fmt(f)
22987                },
22988                4 => unsafe {
22989                    self.raw.get().deref_unchecked::<
22990                            ::fidl_next::wire::Vector<'_, ::fidl_next::wire::Uint32>
22991                        >().fmt(f)
22992                },
22993                5 => unsafe {
22994                    self.raw.get().deref_unchecked::<
22995                            ::fidl_next::wire::Vector<'_, ::fidl_next::wire::Uint64>
22996                        >().fmt(f)
22997                },
22998                6 => unsafe {
22999                    self.raw.get().deref_unchecked::<::fidl_next::wire::Vector<'_, i8>>().fmt(f)
23000                },
23001                7 => unsafe {
23002                    self.raw
23003                        .get()
23004                        .deref_unchecked::<::fidl_next::wire::Vector<'_, ::fidl_next::wire::Int16>>(
23005                        )
23006                        .fmt(f)
23007                },
23008                8 => unsafe {
23009                    self.raw
23010                        .get()
23011                        .deref_unchecked::<::fidl_next::wire::Vector<'_, ::fidl_next::wire::Int32>>(
23012                        )
23013                        .fmt(f)
23014                },
23015                9 => unsafe {
23016                    self.raw
23017                        .get()
23018                        .deref_unchecked::<::fidl_next::wire::Vector<'_, ::fidl_next::wire::Int64>>(
23019                        )
23020                        .fmt(f)
23021                },
23022                10 => unsafe {
23023                    self.raw.get().deref_unchecked::<
23024                            ::fidl_next::wire::Vector<'_, ::fidl_next::wire::String<'_>>
23025                        >().fmt(f)
23026                },
23027                _ => unsafe { ::core::hint::unreachable_unchecked() },
23028            }
23029        }
23030    }
23031
23032    impl<'de> ::fidl_next::IntoNatural for ConfigVectorValue<'de> {
23033        type Natural = crate::natural::ConfigVectorValue;
23034    }
23035
23036    /// The wire type corresponding to [`ConfigValue`].
23037    #[repr(transparent)]
23038    pub struct ConfigValue<'de> {
23039        pub(crate) raw: ::fidl_next::wire::Union,
23040        pub(crate) _phantom: ::core::marker::PhantomData<&'de mut [::fidl_next::Chunk]>,
23041    }
23042
23043    impl<'de> Drop for ConfigValue<'de> {
23044        fn drop(&mut self) {
23045            match self.raw.ordinal() {
23046                1 => {
23047                    let _ = unsafe {
23048                        self.raw.get().read_unchecked::<crate::wire::ConfigSingleValue<'de>>()
23049                    };
23050                }
23051
23052                2 => {
23053                    let _ = unsafe {
23054                        self.raw.get().read_unchecked::<crate::wire::ConfigVectorValue<'de>>()
23055                    };
23056                }
23057
23058                _ => (),
23059            }
23060        }
23061    }
23062
23063    impl ::fidl_next::Constrained for ConfigValue<'_> {
23064        type Constraint = ();
23065
23066        fn validate(
23067            _: ::fidl_next::Slot<'_, Self>,
23068            _: Self::Constraint,
23069        ) -> Result<(), ::fidl_next::ValidationError> {
23070            Ok(())
23071        }
23072    }
23073
23074    unsafe impl ::fidl_next::Wire for ConfigValue<'static> {
23075        type Narrowed<'de> = ConfigValue<'de>;
23076
23077        #[inline]
23078        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
23079            ::fidl_next::munge!(let Self { raw, _phantom: _ } = out);
23080            ::fidl_next::wire::Union::zero_padding(raw);
23081        }
23082    }
23083
23084    pub mod config_value {
23085        pub enum Ref<'de> {
23086            Single(&'de crate::wire::ConfigSingleValue<'de>),
23087
23088            Vector(&'de crate::wire::ConfigVectorValue<'de>),
23089
23090            UnknownOrdinal_(u64),
23091        }
23092
23093        pub enum Value<'de> {
23094            Single(crate::wire::ConfigSingleValue<'de>),
23095
23096            Vector(crate::wire::ConfigVectorValue<'de>),
23097
23098            UnknownOrdinal_(u64),
23099        }
23100    }
23101
23102    impl<'de> ConfigValue<'de> {
23103        pub fn as_ref(&self) -> crate::wire::config_value::Ref<'_> {
23104            match self.raw.ordinal() {
23105                1 => crate::wire::config_value::Ref::Single(unsafe {
23106                    self.raw.get().deref_unchecked::<crate::wire::ConfigSingleValue<'_>>()
23107                }),
23108
23109                2 => crate::wire::config_value::Ref::Vector(unsafe {
23110                    self.raw.get().deref_unchecked::<crate::wire::ConfigVectorValue<'_>>()
23111                }),
23112
23113                unknown => crate::wire::config_value::Ref::UnknownOrdinal_(unknown),
23114            }
23115        }
23116
23117        pub fn into_inner(self) -> crate::wire::config_value::Value<'de> {
23118            let this = ::core::mem::ManuallyDrop::new(self);
23119
23120            match this.raw.ordinal() {
23121                1 => crate::wire::config_value::Value::Single(unsafe {
23122                    this.raw.get().read_unchecked::<crate::wire::ConfigSingleValue<'de>>()
23123                }),
23124
23125                2 => crate::wire::config_value::Value::Vector(unsafe {
23126                    this.raw.get().read_unchecked::<crate::wire::ConfigVectorValue<'de>>()
23127                }),
23128
23129                unknown => crate::wire::config_value::Value::UnknownOrdinal_(unknown),
23130            }
23131        }
23132    }
23133
23134    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for ConfigValue<'de>
23135    where
23136        ___D: ::fidl_next::decoder::InternalHandleDecoder + ?Sized,
23137        ___D: ::fidl_next::Decoder<'de>,
23138    {
23139        fn decode(
23140            mut slot: ::fidl_next::Slot<'_, Self>,
23141            decoder: &mut ___D,
23142            _: (),
23143        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
23144            ::fidl_next::munge!(let Self { mut raw, _phantom: _ } = slot.as_mut());
23145            match ::fidl_next::wire::Union::encoded_ordinal(raw.as_mut()) {
23146                1 => ::fidl_next::wire::Union::decode_as::<
23147                    ___D,
23148                    crate::wire::ConfigSingleValue<'de>,
23149                >(raw, decoder, ())?,
23150
23151                2 => ::fidl_next::wire::Union::decode_as::<
23152                    ___D,
23153                    crate::wire::ConfigVectorValue<'de>,
23154                >(raw, decoder, ())?,
23155
23156                _ => ::fidl_next::wire::Union::decode_unknown(raw, decoder)?,
23157            }
23158
23159            Ok(())
23160        }
23161    }
23162
23163    impl<'de> ::core::fmt::Debug for ConfigValue<'de> {
23164        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
23165            match self.raw.ordinal() {
23166                1 => unsafe {
23167                    self.raw.get().deref_unchecked::<crate::wire::ConfigSingleValue<'_>>().fmt(f)
23168                },
23169                2 => unsafe {
23170                    self.raw.get().deref_unchecked::<crate::wire::ConfigVectorValue<'_>>().fmt(f)
23171                },
23172                _ => unsafe { ::core::hint::unreachable_unchecked() },
23173            }
23174        }
23175    }
23176
23177    impl<'de> ::fidl_next::IntoNatural for ConfigValue<'de> {
23178        type Natural = crate::natural::ConfigValue;
23179    }
23180
23181    /// The wire type corresponding to [`Configuration`].
23182    #[repr(C)]
23183    pub struct Configuration<'de> {
23184        pub(crate) table: ::fidl_next::wire::Table<'de>,
23185    }
23186
23187    impl<'de> Drop for Configuration<'de> {
23188        fn drop(&mut self) {
23189            let _ = self.table.get(1).map(|envelope| unsafe {
23190                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
23191            });
23192
23193            let _ = self.table.get(2).map(|envelope| unsafe {
23194                envelope.read_unchecked::<crate::wire::ConfigValue<'de>>()
23195            });
23196        }
23197    }
23198
23199    impl ::fidl_next::Constrained for Configuration<'_> {
23200        type Constraint = ();
23201
23202        fn validate(
23203            _: ::fidl_next::Slot<'_, Self>,
23204            _: Self::Constraint,
23205        ) -> Result<(), ::fidl_next::ValidationError> {
23206            Ok(())
23207        }
23208    }
23209
23210    unsafe impl ::fidl_next::Wire for Configuration<'static> {
23211        type Narrowed<'de> = Configuration<'de>;
23212
23213        #[inline]
23214        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
23215            ::fidl_next::munge!(let Self { table } = out);
23216            ::fidl_next::wire::Table::zero_padding(table);
23217        }
23218    }
23219
23220    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for Configuration<'de>
23221    where
23222        ___D: ::fidl_next::Decoder<'de> + ?Sized,
23223    {
23224        fn decode(
23225            slot: ::fidl_next::Slot<'_, Self>,
23226            decoder: &mut ___D,
23227            _: (),
23228        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
23229            ::fidl_next::munge!(let Self { table } = slot);
23230
23231            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
23232                match ordinal {
23233                    0 => unsafe { ::core::hint::unreachable_unchecked() },
23234
23235                    1 => {
23236                        ::fidl_next::wire::Envelope::decode_as::<
23237                            ___D,
23238                            ::fidl_next::wire::String<'de>,
23239                        >(slot.as_mut(), decoder, 100)?;
23240
23241                        let value = unsafe {
23242                            slot.deref_unchecked()
23243                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
23244                        };
23245
23246                        if value.len() > 100 {
23247                            return Err(::fidl_next::DecodeError::VectorTooLong {
23248                                size: value.len() as u64,
23249                                limit: 100,
23250                            });
23251                        }
23252
23253                        Ok(())
23254                    }
23255
23256                    2 => {
23257                        ::fidl_next::wire::Envelope::decode_as::<
23258                            ___D,
23259                            crate::wire::ConfigValue<'de>,
23260                        >(slot.as_mut(), decoder, ())?;
23261
23262                        Ok(())
23263                    }
23264
23265                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
23266                }
23267            })
23268        }
23269    }
23270
23271    impl<'de> Configuration<'de> {
23272        pub fn name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
23273            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
23274        }
23275
23276        pub fn take_name(&mut self) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
23277            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
23278        }
23279
23280        pub fn value(&self) -> ::core::option::Option<&crate::wire::ConfigValue<'de>> {
23281            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
23282        }
23283
23284        pub fn take_value(&mut self) -> ::core::option::Option<crate::wire::ConfigValue<'de>> {
23285            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
23286        }
23287    }
23288
23289    impl<'de> ::core::fmt::Debug for Configuration<'de> {
23290        fn fmt(
23291            &self,
23292            f: &mut ::core::fmt::Formatter<'_>,
23293        ) -> ::core::result::Result<(), ::core::fmt::Error> {
23294            f.debug_struct("Configuration")
23295                .field("name", &self.name())
23296                .field("value", &self.value())
23297                .finish()
23298        }
23299    }
23300
23301    impl<'de> ::fidl_next::IntoNatural for Configuration<'de> {
23302        type Natural = crate::natural::Configuration;
23303    }
23304
23305    /// The wire type corresponding to [`DictionaryPath`](crate::natural::DictionaryPath).
23306    pub type DictionaryPath<'de> = ::fidl_next::wire::String<'de>;
23307
23308    /// The wire type corresponding to [`DeliveryType`].
23309    #[derive(Clone, Copy, Debug, PartialEq, Eq)]
23310    #[repr(transparent)]
23311    pub struct DeliveryType {
23312        pub(crate) value: ::fidl_next::wire::Uint32,
23313    }
23314
23315    impl ::fidl_next::Constrained for DeliveryType {
23316        type Constraint = ();
23317
23318        fn validate(
23319            _: ::fidl_next::Slot<'_, Self>,
23320            _: Self::Constraint,
23321        ) -> Result<(), ::fidl_next::ValidationError> {
23322            Ok(())
23323        }
23324    }
23325
23326    unsafe impl ::fidl_next::Wire for DeliveryType {
23327        type Narrowed<'de> = Self;
23328
23329        #[inline]
23330        fn zero_padding(_: &mut ::core::mem::MaybeUninit<Self>) {
23331            // Wire enums have no padding
23332        }
23333    }
23334
23335    impl DeliveryType {
23336        pub const IMMEDIATE: DeliveryType = DeliveryType { value: ::fidl_next::wire::Uint32(0) };
23337
23338        pub const ON_READABLE: DeliveryType = DeliveryType { value: ::fidl_next::wire::Uint32(1) };
23339    }
23340
23341    unsafe impl<___D> ::fidl_next::Decode<___D> for DeliveryType
23342    where
23343        ___D: ?Sized,
23344    {
23345        fn decode(
23346            slot: ::fidl_next::Slot<'_, Self>,
23347            _: &mut ___D,
23348            _: (),
23349        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
23350            Ok(())
23351        }
23352    }
23353
23354    impl ::core::convert::From<crate::natural::DeliveryType> for DeliveryType {
23355        fn from(natural: crate::natural::DeliveryType) -> Self {
23356            match natural {
23357                crate::natural::DeliveryType::Immediate => DeliveryType::IMMEDIATE,
23358
23359                crate::natural::DeliveryType::OnReadable => DeliveryType::ON_READABLE,
23360
23361                crate::natural::DeliveryType::UnknownOrdinal_(value) => {
23362                    DeliveryType { value: ::fidl_next::wire::Uint32::from(value) }
23363                }
23364            }
23365        }
23366    }
23367
23368    impl ::fidl_next::IntoNatural for DeliveryType {
23369        type Natural = crate::natural::DeliveryType;
23370    }
23371
23372    /// The wire type corresponding to [`Protocol`].
23373    #[repr(C)]
23374    pub struct Protocol<'de> {
23375        pub(crate) table: ::fidl_next::wire::Table<'de>,
23376    }
23377
23378    impl<'de> Drop for Protocol<'de> {
23379        fn drop(&mut self) {
23380            let _ = self.table.get(1).map(|envelope| unsafe {
23381                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
23382            });
23383
23384            let _ = self.table.get(2).map(|envelope| unsafe {
23385                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
23386            });
23387
23388            let _ = self
23389                .table
23390                .get(3)
23391                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::DeliveryType>() });
23392        }
23393    }
23394
23395    impl ::fidl_next::Constrained for Protocol<'_> {
23396        type Constraint = ();
23397
23398        fn validate(
23399            _: ::fidl_next::Slot<'_, Self>,
23400            _: Self::Constraint,
23401        ) -> Result<(), ::fidl_next::ValidationError> {
23402            Ok(())
23403        }
23404    }
23405
23406    unsafe impl ::fidl_next::Wire for Protocol<'static> {
23407        type Narrowed<'de> = Protocol<'de>;
23408
23409        #[inline]
23410        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
23411            ::fidl_next::munge!(let Self { table } = out);
23412            ::fidl_next::wire::Table::zero_padding(table);
23413        }
23414    }
23415
23416    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for Protocol<'de>
23417    where
23418        ___D: ::fidl_next::Decoder<'de> + ?Sized,
23419    {
23420        fn decode(
23421            slot: ::fidl_next::Slot<'_, Self>,
23422            decoder: &mut ___D,
23423            _: (),
23424        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
23425            ::fidl_next::munge!(let Self { table } = slot);
23426
23427            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
23428                match ordinal {
23429                    0 => unsafe { ::core::hint::unreachable_unchecked() },
23430
23431                    1 => {
23432                        ::fidl_next::wire::Envelope::decode_as::<
23433                            ___D,
23434                            ::fidl_next::wire::String<'de>,
23435                        >(slot.as_mut(), decoder, 100)?;
23436
23437                        let value = unsafe {
23438                            slot.deref_unchecked()
23439                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
23440                        };
23441
23442                        if value.len() > 100 {
23443                            return Err(::fidl_next::DecodeError::VectorTooLong {
23444                                size: value.len() as u64,
23445                                limit: 100,
23446                            });
23447                        }
23448
23449                        Ok(())
23450                    }
23451
23452                    2 => {
23453                        ::fidl_next::wire::Envelope::decode_as::<
23454                            ___D,
23455                            ::fidl_next::wire::String<'de>,
23456                        >(slot.as_mut(), decoder, 1024)?;
23457
23458                        let value = unsafe {
23459                            slot.deref_unchecked()
23460                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
23461                        };
23462
23463                        if value.len() > 1024 {
23464                            return Err(::fidl_next::DecodeError::VectorTooLong {
23465                                size: value.len() as u64,
23466                                limit: 1024,
23467                            });
23468                        }
23469
23470                        Ok(())
23471                    }
23472
23473                    3 => {
23474                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::DeliveryType>(
23475                            slot.as_mut(),
23476                            decoder,
23477                            (),
23478                        )?;
23479
23480                        Ok(())
23481                    }
23482
23483                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
23484                }
23485            })
23486        }
23487    }
23488
23489    impl<'de> Protocol<'de> {
23490        pub fn name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
23491            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
23492        }
23493
23494        pub fn take_name(&mut self) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
23495            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
23496        }
23497
23498        pub fn source_path(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
23499            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
23500        }
23501
23502        pub fn take_source_path(
23503            &mut self,
23504        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
23505            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
23506        }
23507
23508        pub fn delivery(&self) -> ::core::option::Option<&crate::wire::DeliveryType> {
23509            unsafe { Some(self.table.get(3)?.deref_unchecked()) }
23510        }
23511
23512        pub fn take_delivery(&mut self) -> ::core::option::Option<crate::wire::DeliveryType> {
23513            unsafe { Some(self.table.get_mut(3)?.take_unchecked()) }
23514        }
23515    }
23516
23517    impl<'de> ::core::fmt::Debug for Protocol<'de> {
23518        fn fmt(
23519            &self,
23520            f: &mut ::core::fmt::Formatter<'_>,
23521        ) -> ::core::result::Result<(), ::core::fmt::Error> {
23522            f.debug_struct("Protocol")
23523                .field("name", &self.name())
23524                .field("source_path", &self.source_path())
23525                .field("delivery", &self.delivery())
23526                .finish()
23527        }
23528    }
23529
23530    impl<'de> ::fidl_next::IntoNatural for Protocol<'de> {
23531        type Natural = crate::natural::Protocol;
23532    }
23533
23534    /// The wire type corresponding to [`EnvironmentRef`].
23535    pub type EnvironmentRef = ::fidl_next::wire::Unit;
23536
23537    /// The wire type corresponding to [`Ref`].
23538    #[repr(transparent)]
23539    pub struct Ref<'de> {
23540        pub(crate) raw: ::fidl_next::wire::Union,
23541        pub(crate) _phantom: ::core::marker::PhantomData<&'de mut [::fidl_next::Chunk]>,
23542    }
23543
23544    impl<'de> Drop for Ref<'de> {
23545        fn drop(&mut self) {
23546            match self.raw.ordinal() {
23547                1 => {
23548                    let _ = unsafe { self.raw.get().read_unchecked::<crate::wire::ParentRef>() };
23549                }
23550
23551                2 => {
23552                    let _ = unsafe { self.raw.get().read_unchecked::<crate::wire::SelfRef>() };
23553                }
23554
23555                3 => {
23556                    let _ =
23557                        unsafe { self.raw.get().read_unchecked::<crate::wire::ChildRef<'de>>() };
23558                }
23559
23560                4 => {
23561                    let _ = unsafe {
23562                        self.raw.get().read_unchecked::<crate::wire::CollectionRef<'de>>()
23563                    };
23564                }
23565
23566                5 => {
23567                    let _ = unsafe { self.raw.get().read_unchecked::<crate::wire::FrameworkRef>() };
23568                }
23569
23570                6 => {
23571                    let _ = unsafe {
23572                        self.raw.get().read_unchecked::<crate::wire::CapabilityRef<'de>>()
23573                    };
23574                }
23575
23576                7 => {
23577                    let _ = unsafe { self.raw.get().read_unchecked::<crate::wire::DebugRef>() };
23578                }
23579
23580                8 => {
23581                    let _ = unsafe { self.raw.get().read_unchecked::<crate::wire::VoidRef>() };
23582                }
23583
23584                9 => {
23585                    let _ =
23586                        unsafe { self.raw.get().read_unchecked::<crate::wire::EnvironmentRef>() };
23587                }
23588
23589                _ => (),
23590            }
23591        }
23592    }
23593
23594    impl ::fidl_next::Constrained for Ref<'_> {
23595        type Constraint = ();
23596
23597        fn validate(
23598            _: ::fidl_next::Slot<'_, Self>,
23599            _: Self::Constraint,
23600        ) -> Result<(), ::fidl_next::ValidationError> {
23601            Ok(())
23602        }
23603    }
23604
23605    unsafe impl ::fidl_next::Wire for Ref<'static> {
23606        type Narrowed<'de> = Ref<'de>;
23607
23608        #[inline]
23609        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
23610            ::fidl_next::munge!(let Self { raw, _phantom: _ } = out);
23611            ::fidl_next::wire::Union::zero_padding(raw);
23612        }
23613    }
23614
23615    pub mod ref_ {
23616        pub enum Ref<'de> {
23617            Parent(&'de crate::wire::ParentRef),
23618
23619            Self_(&'de crate::wire::SelfRef),
23620
23621            Child(&'de crate::wire::ChildRef<'de>),
23622
23623            Collection(&'de crate::wire::CollectionRef<'de>),
23624
23625            Framework(&'de crate::wire::FrameworkRef),
23626
23627            Capability(&'de crate::wire::CapabilityRef<'de>),
23628
23629            Debug(&'de crate::wire::DebugRef),
23630
23631            VoidType(&'de crate::wire::VoidRef),
23632
23633            Environment(&'de crate::wire::EnvironmentRef),
23634
23635            UnknownOrdinal_(u64),
23636        }
23637
23638        pub enum Value<'de> {
23639            Parent(crate::wire::ParentRef),
23640
23641            Self_(crate::wire::SelfRef),
23642
23643            Child(crate::wire::ChildRef<'de>),
23644
23645            Collection(crate::wire::CollectionRef<'de>),
23646
23647            Framework(crate::wire::FrameworkRef),
23648
23649            Capability(crate::wire::CapabilityRef<'de>),
23650
23651            Debug(crate::wire::DebugRef),
23652
23653            VoidType(crate::wire::VoidRef),
23654
23655            Environment(crate::wire::EnvironmentRef),
23656
23657            UnknownOrdinal_(u64),
23658        }
23659    }
23660
23661    impl<'de> Ref<'de> {
23662        pub fn as_ref(&self) -> crate::wire::ref_::Ref<'_> {
23663            match self.raw.ordinal() {
23664                1 => crate::wire::ref_::Ref::Parent(unsafe {
23665                    self.raw.get().deref_unchecked::<crate::wire::ParentRef>()
23666                }),
23667
23668                2 => crate::wire::ref_::Ref::Self_(unsafe {
23669                    self.raw.get().deref_unchecked::<crate::wire::SelfRef>()
23670                }),
23671
23672                3 => crate::wire::ref_::Ref::Child(unsafe {
23673                    self.raw.get().deref_unchecked::<crate::wire::ChildRef<'_>>()
23674                }),
23675
23676                4 => crate::wire::ref_::Ref::Collection(unsafe {
23677                    self.raw.get().deref_unchecked::<crate::wire::CollectionRef<'_>>()
23678                }),
23679
23680                5 => crate::wire::ref_::Ref::Framework(unsafe {
23681                    self.raw.get().deref_unchecked::<crate::wire::FrameworkRef>()
23682                }),
23683
23684                6 => crate::wire::ref_::Ref::Capability(unsafe {
23685                    self.raw.get().deref_unchecked::<crate::wire::CapabilityRef<'_>>()
23686                }),
23687
23688                7 => crate::wire::ref_::Ref::Debug(unsafe {
23689                    self.raw.get().deref_unchecked::<crate::wire::DebugRef>()
23690                }),
23691
23692                8 => crate::wire::ref_::Ref::VoidType(unsafe {
23693                    self.raw.get().deref_unchecked::<crate::wire::VoidRef>()
23694                }),
23695
23696                9 => crate::wire::ref_::Ref::Environment(unsafe {
23697                    self.raw.get().deref_unchecked::<crate::wire::EnvironmentRef>()
23698                }),
23699
23700                unknown => crate::wire::ref_::Ref::UnknownOrdinal_(unknown),
23701            }
23702        }
23703
23704        pub fn into_inner(self) -> crate::wire::ref_::Value<'de> {
23705            let this = ::core::mem::ManuallyDrop::new(self);
23706
23707            match this.raw.ordinal() {
23708                1 => crate::wire::ref_::Value::Parent(unsafe {
23709                    this.raw.get().read_unchecked::<crate::wire::ParentRef>()
23710                }),
23711
23712                2 => crate::wire::ref_::Value::Self_(unsafe {
23713                    this.raw.get().read_unchecked::<crate::wire::SelfRef>()
23714                }),
23715
23716                3 => crate::wire::ref_::Value::Child(unsafe {
23717                    this.raw.get().read_unchecked::<crate::wire::ChildRef<'de>>()
23718                }),
23719
23720                4 => crate::wire::ref_::Value::Collection(unsafe {
23721                    this.raw.get().read_unchecked::<crate::wire::CollectionRef<'de>>()
23722                }),
23723
23724                5 => crate::wire::ref_::Value::Framework(unsafe {
23725                    this.raw.get().read_unchecked::<crate::wire::FrameworkRef>()
23726                }),
23727
23728                6 => crate::wire::ref_::Value::Capability(unsafe {
23729                    this.raw.get().read_unchecked::<crate::wire::CapabilityRef<'de>>()
23730                }),
23731
23732                7 => crate::wire::ref_::Value::Debug(unsafe {
23733                    this.raw.get().read_unchecked::<crate::wire::DebugRef>()
23734                }),
23735
23736                8 => crate::wire::ref_::Value::VoidType(unsafe {
23737                    this.raw.get().read_unchecked::<crate::wire::VoidRef>()
23738                }),
23739
23740                9 => crate::wire::ref_::Value::Environment(unsafe {
23741                    this.raw.get().read_unchecked::<crate::wire::EnvironmentRef>()
23742                }),
23743
23744                unknown => crate::wire::ref_::Value::UnknownOrdinal_(unknown),
23745            }
23746        }
23747    }
23748
23749    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for Ref<'de>
23750    where
23751        ___D: ::fidl_next::decoder::InternalHandleDecoder + ?Sized,
23752        ___D: ::fidl_next::Decoder<'de>,
23753    {
23754        fn decode(
23755            mut slot: ::fidl_next::Slot<'_, Self>,
23756            decoder: &mut ___D,
23757            _: (),
23758        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
23759            ::fidl_next::munge!(let Self { mut raw, _phantom: _ } = slot.as_mut());
23760            match ::fidl_next::wire::Union::encoded_ordinal(raw.as_mut()) {
23761                1 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::ParentRef>(
23762                    raw,
23763                    decoder,
23764                    (),
23765                )?,
23766
23767                2 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::SelfRef>(
23768                    raw,
23769                    decoder,
23770                    (),
23771                )?,
23772
23773                3 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::ChildRef<'de>>(
23774                    raw,
23775                    decoder,
23776                    (),
23777                )?,
23778
23779                4 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::CollectionRef<'de>>(
23780                    raw,
23781                    decoder,
23782                    (),
23783                )?,
23784
23785                5 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::FrameworkRef>(
23786                    raw,
23787                    decoder,
23788                    (),
23789                )?,
23790
23791                6 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::CapabilityRef<'de>>(
23792                    raw,
23793                    decoder,
23794                    (),
23795                )?,
23796
23797                7 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::DebugRef>(
23798                    raw,
23799                    decoder,
23800                    (),
23801                )?,
23802
23803                8 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::VoidRef>(
23804                    raw,
23805                    decoder,
23806                    (),
23807                )?,
23808
23809                9 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::EnvironmentRef>(
23810                    raw,
23811                    decoder,
23812                    (),
23813                )?,
23814
23815                _ => ::fidl_next::wire::Union::decode_unknown(raw, decoder)?,
23816            }
23817
23818            Ok(())
23819        }
23820    }
23821
23822    impl<'de> ::core::fmt::Debug for Ref<'de> {
23823        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
23824            match self.raw.ordinal() {
23825                1 => unsafe { self.raw.get().deref_unchecked::<crate::wire::ParentRef>().fmt(f) },
23826                2 => unsafe { self.raw.get().deref_unchecked::<crate::wire::SelfRef>().fmt(f) },
23827                3 => unsafe {
23828                    self.raw.get().deref_unchecked::<crate::wire::ChildRef<'_>>().fmt(f)
23829                },
23830                4 => unsafe {
23831                    self.raw.get().deref_unchecked::<crate::wire::CollectionRef<'_>>().fmt(f)
23832                },
23833                5 => unsafe {
23834                    self.raw.get().deref_unchecked::<crate::wire::FrameworkRef>().fmt(f)
23835                },
23836                6 => unsafe {
23837                    self.raw.get().deref_unchecked::<crate::wire::CapabilityRef<'_>>().fmt(f)
23838                },
23839                7 => unsafe { self.raw.get().deref_unchecked::<crate::wire::DebugRef>().fmt(f) },
23840                8 => unsafe { self.raw.get().deref_unchecked::<crate::wire::VoidRef>().fmt(f) },
23841                9 => unsafe {
23842                    self.raw.get().deref_unchecked::<crate::wire::EnvironmentRef>().fmt(f)
23843                },
23844                _ => unsafe { ::core::hint::unreachable_unchecked() },
23845            }
23846        }
23847    }
23848
23849    impl<'de> ::fidl_next::IntoNatural for Ref<'de> {
23850        type Natural = crate::natural::Ref;
23851    }
23852
23853    /// The wire type corresponding to [`Storage`].
23854    #[repr(C)]
23855    pub struct Storage<'de> {
23856        pub(crate) table: ::fidl_next::wire::Table<'de>,
23857    }
23858
23859    impl<'de> Drop for Storage<'de> {
23860        fn drop(&mut self) {
23861            let _ = self.table.get(1).map(|envelope| unsafe {
23862                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
23863            });
23864
23865            let _ = self
23866                .table
23867                .get(2)
23868                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
23869
23870            let _ = self.table.get(3).map(|envelope| unsafe {
23871                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
23872            });
23873
23874            let _ = self.table.get(4).map(|envelope| unsafe {
23875                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
23876            });
23877
23878            let _ = self
23879                .table
23880                .get(5)
23881                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::StorageId>() });
23882        }
23883    }
23884
23885    impl ::fidl_next::Constrained for Storage<'_> {
23886        type Constraint = ();
23887
23888        fn validate(
23889            _: ::fidl_next::Slot<'_, Self>,
23890            _: Self::Constraint,
23891        ) -> Result<(), ::fidl_next::ValidationError> {
23892            Ok(())
23893        }
23894    }
23895
23896    unsafe impl ::fidl_next::Wire for Storage<'static> {
23897        type Narrowed<'de> = Storage<'de>;
23898
23899        #[inline]
23900        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
23901            ::fidl_next::munge!(let Self { table } = out);
23902            ::fidl_next::wire::Table::zero_padding(table);
23903        }
23904    }
23905
23906    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for Storage<'de>
23907    where
23908        ___D: ::fidl_next::Decoder<'de> + ?Sized,
23909    {
23910        fn decode(
23911            slot: ::fidl_next::Slot<'_, Self>,
23912            decoder: &mut ___D,
23913            _: (),
23914        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
23915            ::fidl_next::munge!(let Self { table } = slot);
23916
23917            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
23918                match ordinal {
23919                    0 => unsafe { ::core::hint::unreachable_unchecked() },
23920
23921                    1 => {
23922                        ::fidl_next::wire::Envelope::decode_as::<
23923                            ___D,
23924                            ::fidl_next::wire::String<'de>,
23925                        >(slot.as_mut(), decoder, 100)?;
23926
23927                        let value = unsafe {
23928                            slot.deref_unchecked()
23929                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
23930                        };
23931
23932                        if value.len() > 100 {
23933                            return Err(::fidl_next::DecodeError::VectorTooLong {
23934                                size: value.len() as u64,
23935                                limit: 100,
23936                            });
23937                        }
23938
23939                        Ok(())
23940                    }
23941
23942                    2 => {
23943                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
23944                            slot.as_mut(),
23945                            decoder,
23946                            (),
23947                        )?;
23948
23949                        Ok(())
23950                    }
23951
23952                    3 => {
23953                        ::fidl_next::wire::Envelope::decode_as::<
23954                            ___D,
23955                            ::fidl_next::wire::String<'de>,
23956                        >(slot.as_mut(), decoder, 100)?;
23957
23958                        let value = unsafe {
23959                            slot.deref_unchecked()
23960                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
23961                        };
23962
23963                        if value.len() > 100 {
23964                            return Err(::fidl_next::DecodeError::VectorTooLong {
23965                                size: value.len() as u64,
23966                                limit: 100,
23967                            });
23968                        }
23969
23970                        Ok(())
23971                    }
23972
23973                    4 => {
23974                        ::fidl_next::wire::Envelope::decode_as::<
23975                            ___D,
23976                            ::fidl_next::wire::String<'de>,
23977                        >(slot.as_mut(), decoder, 1024)?;
23978
23979                        let value = unsafe {
23980                            slot.deref_unchecked()
23981                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
23982                        };
23983
23984                        if value.len() > 1024 {
23985                            return Err(::fidl_next::DecodeError::VectorTooLong {
23986                                size: value.len() as u64,
23987                                limit: 1024,
23988                            });
23989                        }
23990
23991                        Ok(())
23992                    }
23993
23994                    5 => {
23995                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::StorageId>(
23996                            slot.as_mut(),
23997                            decoder,
23998                            (),
23999                        )?;
24000
24001                        Ok(())
24002                    }
24003
24004                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
24005                }
24006            })
24007        }
24008    }
24009
24010    impl<'de> Storage<'de> {
24011        pub fn name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
24012            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
24013        }
24014
24015        pub fn take_name(&mut self) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
24016            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
24017        }
24018
24019        pub fn source(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
24020            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
24021        }
24022
24023        pub fn take_source(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
24024            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
24025        }
24026
24027        pub fn backing_dir(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
24028            unsafe { Some(self.table.get(3)?.deref_unchecked()) }
24029        }
24030
24031        pub fn take_backing_dir(
24032            &mut self,
24033        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
24034            unsafe { Some(self.table.get_mut(3)?.take_unchecked()) }
24035        }
24036
24037        pub fn subdir(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
24038            unsafe { Some(self.table.get(4)?.deref_unchecked()) }
24039        }
24040
24041        pub fn take_subdir(&mut self) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
24042            unsafe { Some(self.table.get_mut(4)?.take_unchecked()) }
24043        }
24044
24045        pub fn storage_id(&self) -> ::core::option::Option<&crate::wire::StorageId> {
24046            unsafe { Some(self.table.get(5)?.deref_unchecked()) }
24047        }
24048
24049        pub fn take_storage_id(&mut self) -> ::core::option::Option<crate::wire::StorageId> {
24050            unsafe { Some(self.table.get_mut(5)?.take_unchecked()) }
24051        }
24052    }
24053
24054    impl<'de> ::core::fmt::Debug for Storage<'de> {
24055        fn fmt(
24056            &self,
24057            f: &mut ::core::fmt::Formatter<'_>,
24058        ) -> ::core::result::Result<(), ::core::fmt::Error> {
24059            f.debug_struct("Storage")
24060                .field("name", &self.name())
24061                .field("source", &self.source())
24062                .field("backing_dir", &self.backing_dir())
24063                .field("subdir", &self.subdir())
24064                .field("storage_id", &self.storage_id())
24065                .finish()
24066        }
24067    }
24068
24069    impl<'de> ::fidl_next::IntoNatural for Storage<'de> {
24070        type Natural = crate::natural::Storage;
24071    }
24072
24073    /// The wire type corresponding to [`Dictionary`].
24074    #[repr(C)]
24075    pub struct Dictionary<'de> {
24076        pub(crate) table: ::fidl_next::wire::Table<'de>,
24077    }
24078
24079    impl<'de> Drop for Dictionary<'de> {
24080        fn drop(&mut self) {
24081            let _ = self.table.get(1).map(|envelope| unsafe {
24082                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
24083            });
24084
24085            let _ = self
24086                .table
24087                .get(2)
24088                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
24089
24090            let _ = self.table.get(3).map(|envelope| unsafe {
24091                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
24092            });
24093
24094            let _ = self.table.get(4).map(|envelope| unsafe {
24095                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
24096            });
24097        }
24098    }
24099
24100    impl ::fidl_next::Constrained for Dictionary<'_> {
24101        type Constraint = ();
24102
24103        fn validate(
24104            _: ::fidl_next::Slot<'_, Self>,
24105            _: Self::Constraint,
24106        ) -> Result<(), ::fidl_next::ValidationError> {
24107            Ok(())
24108        }
24109    }
24110
24111    unsafe impl ::fidl_next::Wire for Dictionary<'static> {
24112        type Narrowed<'de> = Dictionary<'de>;
24113
24114        #[inline]
24115        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
24116            ::fidl_next::munge!(let Self { table } = out);
24117            ::fidl_next::wire::Table::zero_padding(table);
24118        }
24119    }
24120
24121    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for Dictionary<'de>
24122    where
24123        ___D: ::fidl_next::Decoder<'de> + ?Sized,
24124    {
24125        fn decode(
24126            slot: ::fidl_next::Slot<'_, Self>,
24127            decoder: &mut ___D,
24128            _: (),
24129        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
24130            ::fidl_next::munge!(let Self { table } = slot);
24131
24132            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
24133                match ordinal {
24134                    0 => unsafe { ::core::hint::unreachable_unchecked() },
24135
24136                    1 => {
24137                        ::fidl_next::wire::Envelope::decode_as::<
24138                            ___D,
24139                            ::fidl_next::wire::String<'de>,
24140                        >(slot.as_mut(), decoder, 100)?;
24141
24142                        let value = unsafe {
24143                            slot.deref_unchecked()
24144                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
24145                        };
24146
24147                        if value.len() > 100 {
24148                            return Err(::fidl_next::DecodeError::VectorTooLong {
24149                                size: value.len() as u64,
24150                                limit: 100,
24151                            });
24152                        }
24153
24154                        Ok(())
24155                    }
24156
24157                    2 => {
24158                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
24159                            slot.as_mut(),
24160                            decoder,
24161                            (),
24162                        )?;
24163
24164                        Ok(())
24165                    }
24166
24167                    3 => {
24168                        ::fidl_next::wire::Envelope::decode_as::<
24169                            ___D,
24170                            ::fidl_next::wire::String<'de>,
24171                        >(slot.as_mut(), decoder, 1024)?;
24172
24173                        let value = unsafe {
24174                            slot.deref_unchecked()
24175                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
24176                        };
24177
24178                        if value.len() > 1024 {
24179                            return Err(::fidl_next::DecodeError::VectorTooLong {
24180                                size: value.len() as u64,
24181                                limit: 1024,
24182                            });
24183                        }
24184
24185                        Ok(())
24186                    }
24187
24188                    4 => {
24189                        ::fidl_next::wire::Envelope::decode_as::<
24190                            ___D,
24191                            ::fidl_next::wire::String<'de>,
24192                        >(slot.as_mut(), decoder, 1024)?;
24193
24194                        let value = unsafe {
24195                            slot.deref_unchecked()
24196                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
24197                        };
24198
24199                        if value.len() > 1024 {
24200                            return Err(::fidl_next::DecodeError::VectorTooLong {
24201                                size: value.len() as u64,
24202                                limit: 1024,
24203                            });
24204                        }
24205
24206                        Ok(())
24207                    }
24208
24209                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
24210                }
24211            })
24212        }
24213    }
24214
24215    impl<'de> Dictionary<'de> {
24216        pub fn name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
24217            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
24218        }
24219
24220        pub fn take_name(&mut self) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
24221            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
24222        }
24223
24224        pub fn source(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
24225            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
24226        }
24227
24228        pub fn take_source(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
24229            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
24230        }
24231
24232        pub fn source_dictionary(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
24233            unsafe { Some(self.table.get(3)?.deref_unchecked()) }
24234        }
24235
24236        pub fn take_source_dictionary(
24237            &mut self,
24238        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
24239            unsafe { Some(self.table.get_mut(3)?.take_unchecked()) }
24240        }
24241
24242        pub fn source_path(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
24243            unsafe { Some(self.table.get(4)?.deref_unchecked()) }
24244        }
24245
24246        pub fn take_source_path(
24247            &mut self,
24248        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
24249            unsafe { Some(self.table.get_mut(4)?.take_unchecked()) }
24250        }
24251    }
24252
24253    impl<'de> ::core::fmt::Debug for Dictionary<'de> {
24254        fn fmt(
24255            &self,
24256            f: &mut ::core::fmt::Formatter<'_>,
24257        ) -> ::core::result::Result<(), ::core::fmt::Error> {
24258            f.debug_struct("Dictionary")
24259                .field("name", &self.name())
24260                .field("source", &self.source())
24261                .field("source_dictionary", &self.source_dictionary())
24262                .field("source_path", &self.source_path())
24263                .finish()
24264        }
24265    }
24266
24267    impl<'de> ::fidl_next::IntoNatural for Dictionary<'de> {
24268        type Natural = crate::natural::Dictionary;
24269    }
24270
24271    /// The wire type corresponding to [`Capability`].
24272    #[repr(transparent)]
24273    pub struct Capability<'de> {
24274        pub(crate) raw: ::fidl_next::wire::Union,
24275        pub(crate) _phantom: ::core::marker::PhantomData<&'de mut [::fidl_next::Chunk]>,
24276    }
24277
24278    impl<'de> Drop for Capability<'de> {
24279        fn drop(&mut self) {
24280            match self.raw.ordinal() {
24281                1 => {
24282                    let _ = unsafe { self.raw.get().read_unchecked::<crate::wire::Service<'de>>() };
24283                }
24284
24285                2 => {
24286                    let _ =
24287                        unsafe { self.raw.get().read_unchecked::<crate::wire::Protocol<'de>>() };
24288                }
24289
24290                3 => {
24291                    let _ =
24292                        unsafe { self.raw.get().read_unchecked::<crate::wire::Directory<'de>>() };
24293                }
24294
24295                4 => {
24296                    let _ = unsafe { self.raw.get().read_unchecked::<crate::wire::Storage<'de>>() };
24297                }
24298
24299                5 => {
24300                    let _ = unsafe { self.raw.get().read_unchecked::<crate::wire::Runner<'de>>() };
24301                }
24302
24303                6 => {
24304                    let _ =
24305                        unsafe { self.raw.get().read_unchecked::<crate::wire::Resolver<'de>>() };
24306                }
24307
24308                8 => {
24309                    let _ =
24310                        unsafe { self.raw.get().read_unchecked::<crate::wire::EventStream<'de>>() };
24311                }
24312
24313                9 => {
24314                    let _ =
24315                        unsafe { self.raw.get().read_unchecked::<crate::wire::Dictionary<'de>>() };
24316                }
24317
24318                10 => {
24319                    let _ = unsafe {
24320                        self.raw.get().read_unchecked::<crate::wire::Configuration<'de>>()
24321                    };
24322                }
24323
24324                _ => (),
24325            }
24326        }
24327    }
24328
24329    impl ::fidl_next::Constrained for Capability<'_> {
24330        type Constraint = ();
24331
24332        fn validate(
24333            _: ::fidl_next::Slot<'_, Self>,
24334            _: Self::Constraint,
24335        ) -> Result<(), ::fidl_next::ValidationError> {
24336            Ok(())
24337        }
24338    }
24339
24340    unsafe impl ::fidl_next::Wire for Capability<'static> {
24341        type Narrowed<'de> = Capability<'de>;
24342
24343        #[inline]
24344        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
24345            ::fidl_next::munge!(let Self { raw, _phantom: _ } = out);
24346            ::fidl_next::wire::Union::zero_padding(raw);
24347        }
24348    }
24349
24350    pub mod capability {
24351        pub enum Ref<'de> {
24352            Service(&'de crate::wire::Service<'de>),
24353
24354            Protocol(&'de crate::wire::Protocol<'de>),
24355
24356            Directory(&'de crate::wire::Directory<'de>),
24357
24358            Storage(&'de crate::wire::Storage<'de>),
24359
24360            Runner(&'de crate::wire::Runner<'de>),
24361
24362            Resolver(&'de crate::wire::Resolver<'de>),
24363
24364            EventStream(&'de crate::wire::EventStream<'de>),
24365
24366            Dictionary(&'de crate::wire::Dictionary<'de>),
24367
24368            Config(&'de crate::wire::Configuration<'de>),
24369
24370            UnknownOrdinal_(u64),
24371        }
24372
24373        pub enum Value<'de> {
24374            Service(crate::wire::Service<'de>),
24375
24376            Protocol(crate::wire::Protocol<'de>),
24377
24378            Directory(crate::wire::Directory<'de>),
24379
24380            Storage(crate::wire::Storage<'de>),
24381
24382            Runner(crate::wire::Runner<'de>),
24383
24384            Resolver(crate::wire::Resolver<'de>),
24385
24386            EventStream(crate::wire::EventStream<'de>),
24387
24388            Dictionary(crate::wire::Dictionary<'de>),
24389
24390            Config(crate::wire::Configuration<'de>),
24391
24392            UnknownOrdinal_(u64),
24393        }
24394    }
24395
24396    impl<'de> Capability<'de> {
24397        pub fn as_ref(&self) -> crate::wire::capability::Ref<'_> {
24398            match self.raw.ordinal() {
24399                1 => crate::wire::capability::Ref::Service(unsafe {
24400                    self.raw.get().deref_unchecked::<crate::wire::Service<'_>>()
24401                }),
24402
24403                2 => crate::wire::capability::Ref::Protocol(unsafe {
24404                    self.raw.get().deref_unchecked::<crate::wire::Protocol<'_>>()
24405                }),
24406
24407                3 => crate::wire::capability::Ref::Directory(unsafe {
24408                    self.raw.get().deref_unchecked::<crate::wire::Directory<'_>>()
24409                }),
24410
24411                4 => crate::wire::capability::Ref::Storage(unsafe {
24412                    self.raw.get().deref_unchecked::<crate::wire::Storage<'_>>()
24413                }),
24414
24415                5 => crate::wire::capability::Ref::Runner(unsafe {
24416                    self.raw.get().deref_unchecked::<crate::wire::Runner<'_>>()
24417                }),
24418
24419                6 => crate::wire::capability::Ref::Resolver(unsafe {
24420                    self.raw.get().deref_unchecked::<crate::wire::Resolver<'_>>()
24421                }),
24422
24423                8 => crate::wire::capability::Ref::EventStream(unsafe {
24424                    self.raw.get().deref_unchecked::<crate::wire::EventStream<'_>>()
24425                }),
24426
24427                9 => crate::wire::capability::Ref::Dictionary(unsafe {
24428                    self.raw.get().deref_unchecked::<crate::wire::Dictionary<'_>>()
24429                }),
24430
24431                10 => crate::wire::capability::Ref::Config(unsafe {
24432                    self.raw.get().deref_unchecked::<crate::wire::Configuration<'_>>()
24433                }),
24434
24435                unknown => crate::wire::capability::Ref::UnknownOrdinal_(unknown),
24436            }
24437        }
24438
24439        pub fn into_inner(self) -> crate::wire::capability::Value<'de> {
24440            let this = ::core::mem::ManuallyDrop::new(self);
24441
24442            match this.raw.ordinal() {
24443                1 => crate::wire::capability::Value::Service(unsafe {
24444                    this.raw.get().read_unchecked::<crate::wire::Service<'de>>()
24445                }),
24446
24447                2 => crate::wire::capability::Value::Protocol(unsafe {
24448                    this.raw.get().read_unchecked::<crate::wire::Protocol<'de>>()
24449                }),
24450
24451                3 => crate::wire::capability::Value::Directory(unsafe {
24452                    this.raw.get().read_unchecked::<crate::wire::Directory<'de>>()
24453                }),
24454
24455                4 => crate::wire::capability::Value::Storage(unsafe {
24456                    this.raw.get().read_unchecked::<crate::wire::Storage<'de>>()
24457                }),
24458
24459                5 => crate::wire::capability::Value::Runner(unsafe {
24460                    this.raw.get().read_unchecked::<crate::wire::Runner<'de>>()
24461                }),
24462
24463                6 => crate::wire::capability::Value::Resolver(unsafe {
24464                    this.raw.get().read_unchecked::<crate::wire::Resolver<'de>>()
24465                }),
24466
24467                8 => crate::wire::capability::Value::EventStream(unsafe {
24468                    this.raw.get().read_unchecked::<crate::wire::EventStream<'de>>()
24469                }),
24470
24471                9 => crate::wire::capability::Value::Dictionary(unsafe {
24472                    this.raw.get().read_unchecked::<crate::wire::Dictionary<'de>>()
24473                }),
24474
24475                10 => crate::wire::capability::Value::Config(unsafe {
24476                    this.raw.get().read_unchecked::<crate::wire::Configuration<'de>>()
24477                }),
24478
24479                unknown => crate::wire::capability::Value::UnknownOrdinal_(unknown),
24480            }
24481        }
24482    }
24483
24484    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for Capability<'de>
24485    where
24486        ___D: ::fidl_next::decoder::InternalHandleDecoder + ?Sized,
24487        ___D: ::fidl_next::Decoder<'de>,
24488    {
24489        fn decode(
24490            mut slot: ::fidl_next::Slot<'_, Self>,
24491            decoder: &mut ___D,
24492            _: (),
24493        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
24494            ::fidl_next::munge!(let Self { mut raw, _phantom: _ } = slot.as_mut());
24495            match ::fidl_next::wire::Union::encoded_ordinal(raw.as_mut()) {
24496                1 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::Service<'de>>(
24497                    raw,
24498                    decoder,
24499                    (),
24500                )?,
24501
24502                2 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::Protocol<'de>>(
24503                    raw,
24504                    decoder,
24505                    (),
24506                )?,
24507
24508                3 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::Directory<'de>>(
24509                    raw,
24510                    decoder,
24511                    (),
24512                )?,
24513
24514                4 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::Storage<'de>>(
24515                    raw,
24516                    decoder,
24517                    (),
24518                )?,
24519
24520                5 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::Runner<'de>>(
24521                    raw,
24522                    decoder,
24523                    (),
24524                )?,
24525
24526                6 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::Resolver<'de>>(
24527                    raw,
24528                    decoder,
24529                    (),
24530                )?,
24531
24532                8 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::EventStream<'de>>(
24533                    raw,
24534                    decoder,
24535                    (),
24536                )?,
24537
24538                9 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::Dictionary<'de>>(
24539                    raw,
24540                    decoder,
24541                    (),
24542                )?,
24543
24544                10 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::Configuration<'de>>(
24545                    raw,
24546                    decoder,
24547                    (),
24548                )?,
24549
24550                _ => ::fidl_next::wire::Union::decode_unknown(raw, decoder)?,
24551            }
24552
24553            Ok(())
24554        }
24555    }
24556
24557    impl<'de> ::core::fmt::Debug for Capability<'de> {
24558        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
24559            match self.raw.ordinal() {
24560                1 => unsafe { self.raw.get().deref_unchecked::<crate::wire::Service<'_>>().fmt(f) },
24561                2 => unsafe {
24562                    self.raw.get().deref_unchecked::<crate::wire::Protocol<'_>>().fmt(f)
24563                },
24564                3 => unsafe {
24565                    self.raw.get().deref_unchecked::<crate::wire::Directory<'_>>().fmt(f)
24566                },
24567                4 => unsafe { self.raw.get().deref_unchecked::<crate::wire::Storage<'_>>().fmt(f) },
24568                5 => unsafe { self.raw.get().deref_unchecked::<crate::wire::Runner<'_>>().fmt(f) },
24569                6 => unsafe {
24570                    self.raw.get().deref_unchecked::<crate::wire::Resolver<'_>>().fmt(f)
24571                },
24572                8 => unsafe {
24573                    self.raw.get().deref_unchecked::<crate::wire::EventStream<'_>>().fmt(f)
24574                },
24575                9 => unsafe {
24576                    self.raw.get().deref_unchecked::<crate::wire::Dictionary<'_>>().fmt(f)
24577                },
24578                10 => unsafe {
24579                    self.raw.get().deref_unchecked::<crate::wire::Configuration<'_>>().fmt(f)
24580                },
24581                _ => unsafe { ::core::hint::unreachable_unchecked() },
24582            }
24583        }
24584    }
24585
24586    impl<'de> ::fidl_next::IntoNatural for Capability<'de> {
24587        type Natural = crate::natural::Capability;
24588    }
24589
24590    /// The wire type corresponding to [`StartupMode`].
24591    #[derive(Clone, Copy, Debug, PartialEq, Eq)]
24592    #[repr(transparent)]
24593    pub struct StartupMode {
24594        pub(crate) value: ::fidl_next::wire::Uint32,
24595    }
24596
24597    impl ::fidl_next::Constrained for StartupMode {
24598        type Constraint = ();
24599
24600        fn validate(
24601            _: ::fidl_next::Slot<'_, Self>,
24602            _: Self::Constraint,
24603        ) -> Result<(), ::fidl_next::ValidationError> {
24604            Ok(())
24605        }
24606    }
24607
24608    unsafe impl ::fidl_next::Wire for StartupMode {
24609        type Narrowed<'de> = Self;
24610
24611        #[inline]
24612        fn zero_padding(_: &mut ::core::mem::MaybeUninit<Self>) {
24613            // Wire enums have no padding
24614        }
24615    }
24616
24617    impl StartupMode {
24618        pub const LAZY: StartupMode = StartupMode { value: ::fidl_next::wire::Uint32(0) };
24619
24620        pub const EAGER: StartupMode = StartupMode { value: ::fidl_next::wire::Uint32(1) };
24621    }
24622
24623    unsafe impl<___D> ::fidl_next::Decode<___D> for StartupMode
24624    where
24625        ___D: ?Sized,
24626    {
24627        fn decode(
24628            slot: ::fidl_next::Slot<'_, Self>,
24629            _: &mut ___D,
24630            _: (),
24631        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
24632            ::fidl_next::munge!(let Self { value } = slot);
24633
24634            match u32::from(*value) {
24635                0 | 1 => (),
24636                unknown => {
24637                    return Err(::fidl_next::DecodeError::InvalidEnumOrdinal(unknown as i128));
24638                }
24639            }
24640
24641            Ok(())
24642        }
24643    }
24644
24645    impl ::core::convert::From<crate::natural::StartupMode> for StartupMode {
24646        fn from(natural: crate::natural::StartupMode) -> Self {
24647            match natural {
24648                crate::natural::StartupMode::Lazy => StartupMode::LAZY,
24649
24650                crate::natural::StartupMode::Eager => StartupMode::EAGER,
24651            }
24652        }
24653    }
24654
24655    impl ::fidl_next::IntoNatural for StartupMode {
24656        type Natural = crate::natural::StartupMode;
24657    }
24658
24659    /// The wire type corresponding to [`OnTerminate`].
24660    #[derive(Clone, Copy, Debug, PartialEq, Eq)]
24661    #[repr(transparent)]
24662    pub struct OnTerminate {
24663        pub(crate) value: ::fidl_next::wire::Uint32,
24664    }
24665
24666    impl ::fidl_next::Constrained for OnTerminate {
24667        type Constraint = ();
24668
24669        fn validate(
24670            _: ::fidl_next::Slot<'_, Self>,
24671            _: Self::Constraint,
24672        ) -> Result<(), ::fidl_next::ValidationError> {
24673            Ok(())
24674        }
24675    }
24676
24677    unsafe impl ::fidl_next::Wire for OnTerminate {
24678        type Narrowed<'de> = Self;
24679
24680        #[inline]
24681        fn zero_padding(_: &mut ::core::mem::MaybeUninit<Self>) {
24682            // Wire enums have no padding
24683        }
24684    }
24685
24686    impl OnTerminate {
24687        pub const NONE: OnTerminate = OnTerminate { value: ::fidl_next::wire::Uint32(0) };
24688
24689        pub const REBOOT: OnTerminate = OnTerminate { value: ::fidl_next::wire::Uint32(1) };
24690    }
24691
24692    unsafe impl<___D> ::fidl_next::Decode<___D> for OnTerminate
24693    where
24694        ___D: ?Sized,
24695    {
24696        fn decode(
24697            slot: ::fidl_next::Slot<'_, Self>,
24698            _: &mut ___D,
24699            _: (),
24700        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
24701            ::fidl_next::munge!(let Self { value } = slot);
24702
24703            match u32::from(*value) {
24704                0 | 1 => (),
24705                unknown => {
24706                    return Err(::fidl_next::DecodeError::InvalidEnumOrdinal(unknown as i128));
24707                }
24708            }
24709
24710            Ok(())
24711        }
24712    }
24713
24714    impl ::core::convert::From<crate::natural::OnTerminate> for OnTerminate {
24715        fn from(natural: crate::natural::OnTerminate) -> Self {
24716            match natural {
24717                crate::natural::OnTerminate::None => OnTerminate::NONE,
24718
24719                crate::natural::OnTerminate::Reboot => OnTerminate::REBOOT,
24720            }
24721        }
24722    }
24723
24724    impl ::fidl_next::IntoNatural for OnTerminate {
24725        type Natural = crate::natural::OnTerminate;
24726    }
24727
24728    /// The wire type corresponding to [`ConfigKey`](crate::natural::ConfigKey).
24729    pub type ConfigKey<'de> = ::fidl_next::wire::String<'de>;
24730
24731    /// The wire type corresponding to [`ConfigOverride`].
24732    #[repr(C)]
24733    pub struct ConfigOverride<'de> {
24734        pub(crate) table: ::fidl_next::wire::Table<'de>,
24735    }
24736
24737    impl<'de> Drop for ConfigOverride<'de> {
24738        fn drop(&mut self) {
24739            let _ = self.table.get(1).map(|envelope| unsafe {
24740                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
24741            });
24742
24743            let _ = self.table.get(2).map(|envelope| unsafe {
24744                envelope.read_unchecked::<crate::wire::ConfigValue<'de>>()
24745            });
24746        }
24747    }
24748
24749    impl ::fidl_next::Constrained for ConfigOverride<'_> {
24750        type Constraint = ();
24751
24752        fn validate(
24753            _: ::fidl_next::Slot<'_, Self>,
24754            _: Self::Constraint,
24755        ) -> Result<(), ::fidl_next::ValidationError> {
24756            Ok(())
24757        }
24758    }
24759
24760    unsafe impl ::fidl_next::Wire for ConfigOverride<'static> {
24761        type Narrowed<'de> = ConfigOverride<'de>;
24762
24763        #[inline]
24764        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
24765            ::fidl_next::munge!(let Self { table } = out);
24766            ::fidl_next::wire::Table::zero_padding(table);
24767        }
24768    }
24769
24770    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for ConfigOverride<'de>
24771    where
24772        ___D: ::fidl_next::Decoder<'de> + ?Sized,
24773    {
24774        fn decode(
24775            slot: ::fidl_next::Slot<'_, Self>,
24776            decoder: &mut ___D,
24777            _: (),
24778        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
24779            ::fidl_next::munge!(let Self { table } = slot);
24780
24781            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
24782                match ordinal {
24783                    0 => unsafe { ::core::hint::unreachable_unchecked() },
24784
24785                    1 => {
24786                        ::fidl_next::wire::Envelope::decode_as::<
24787                            ___D,
24788                            ::fidl_next::wire::String<'de>,
24789                        >(slot.as_mut(), decoder, 64)?;
24790
24791                        let value = unsafe {
24792                            slot.deref_unchecked()
24793                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
24794                        };
24795
24796                        if value.len() > 64 {
24797                            return Err(::fidl_next::DecodeError::VectorTooLong {
24798                                size: value.len() as u64,
24799                                limit: 64,
24800                            });
24801                        }
24802
24803                        Ok(())
24804                    }
24805
24806                    2 => {
24807                        ::fidl_next::wire::Envelope::decode_as::<
24808                            ___D,
24809                            crate::wire::ConfigValue<'de>,
24810                        >(slot.as_mut(), decoder, ())?;
24811
24812                        Ok(())
24813                    }
24814
24815                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
24816                }
24817            })
24818        }
24819    }
24820
24821    impl<'de> ConfigOverride<'de> {
24822        pub fn key(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
24823            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
24824        }
24825
24826        pub fn take_key(&mut self) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
24827            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
24828        }
24829
24830        pub fn value(&self) -> ::core::option::Option<&crate::wire::ConfigValue<'de>> {
24831            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
24832        }
24833
24834        pub fn take_value(&mut self) -> ::core::option::Option<crate::wire::ConfigValue<'de>> {
24835            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
24836        }
24837    }
24838
24839    impl<'de> ::core::fmt::Debug for ConfigOverride<'de> {
24840        fn fmt(
24841            &self,
24842            f: &mut ::core::fmt::Formatter<'_>,
24843        ) -> ::core::result::Result<(), ::core::fmt::Error> {
24844            f.debug_struct("ConfigOverride")
24845                .field("key", &self.key())
24846                .field("value", &self.value())
24847                .finish()
24848        }
24849    }
24850
24851    impl<'de> ::fidl_next::IntoNatural for ConfigOverride<'de> {
24852        type Natural = crate::natural::ConfigOverride;
24853    }
24854
24855    /// The wire type corresponding to [`Child`].
24856    #[repr(C)]
24857    pub struct Child<'de> {
24858        pub(crate) table: ::fidl_next::wire::Table<'de>,
24859    }
24860
24861    impl<'de> Drop for Child<'de> {
24862        fn drop(&mut self) {
24863            let _ = self.table.get(1).map(|envelope| unsafe {
24864                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
24865            });
24866
24867            let _ = self.table.get(2).map(|envelope| unsafe {
24868                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
24869            });
24870
24871            let _ = self
24872                .table
24873                .get(3)
24874                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::StartupMode>() });
24875
24876            let _ = self.table.get(4).map(|envelope| unsafe {
24877                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
24878            });
24879
24880            let _ = self
24881                .table
24882                .get(5)
24883                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::OnTerminate>() });
24884
24885            let _ = self.table.get(6)
24886                .map(|envelope| unsafe {
24887                    envelope.read_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::ConfigOverride<'de>>>()
24888                });
24889        }
24890    }
24891
24892    impl ::fidl_next::Constrained for Child<'_> {
24893        type Constraint = ();
24894
24895        fn validate(
24896            _: ::fidl_next::Slot<'_, Self>,
24897            _: Self::Constraint,
24898        ) -> Result<(), ::fidl_next::ValidationError> {
24899            Ok(())
24900        }
24901    }
24902
24903    unsafe impl ::fidl_next::Wire for Child<'static> {
24904        type Narrowed<'de> = Child<'de>;
24905
24906        #[inline]
24907        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
24908            ::fidl_next::munge!(let Self { table } = out);
24909            ::fidl_next::wire::Table::zero_padding(table);
24910        }
24911    }
24912
24913    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for Child<'de>
24914    where
24915        ___D: ::fidl_next::Decoder<'de> + ?Sized,
24916    {
24917        fn decode(
24918            slot: ::fidl_next::Slot<'_, Self>,
24919            decoder: &mut ___D,
24920            _: (),
24921        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
24922            ::fidl_next::munge!(let Self { table } = slot);
24923
24924            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
24925                match ordinal {
24926                    0 => unsafe { ::core::hint::unreachable_unchecked() },
24927
24928                    1 => {
24929                        ::fidl_next::wire::Envelope::decode_as::<
24930                            ___D,
24931                            ::fidl_next::wire::String<'de>,
24932                        >(slot.as_mut(), decoder, 1024)?;
24933
24934                        let value = unsafe {
24935                            slot.deref_unchecked()
24936                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
24937                        };
24938
24939                        if value.len() > 1024 {
24940                            return Err(::fidl_next::DecodeError::VectorTooLong {
24941                                size: value.len() as u64,
24942                                limit: 1024,
24943                            });
24944                        }
24945
24946                        Ok(())
24947                    }
24948
24949                    2 => {
24950                        ::fidl_next::wire::Envelope::decode_as::<
24951                            ___D,
24952                            ::fidl_next::wire::String<'de>,
24953                        >(slot.as_mut(), decoder, 4096)?;
24954
24955                        let value = unsafe {
24956                            slot.deref_unchecked()
24957                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
24958                        };
24959
24960                        if value.len() > 4096 {
24961                            return Err(::fidl_next::DecodeError::VectorTooLong {
24962                                size: value.len() as u64,
24963                                limit: 4096,
24964                            });
24965                        }
24966
24967                        Ok(())
24968                    }
24969
24970                    3 => {
24971                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::StartupMode>(
24972                            slot.as_mut(),
24973                            decoder,
24974                            (),
24975                        )?;
24976
24977                        Ok(())
24978                    }
24979
24980                    4 => {
24981                        ::fidl_next::wire::Envelope::decode_as::<
24982                            ___D,
24983                            ::fidl_next::wire::String<'de>,
24984                        >(slot.as_mut(), decoder, 100)?;
24985
24986                        let value = unsafe {
24987                            slot.deref_unchecked()
24988                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
24989                        };
24990
24991                        if value.len() > 100 {
24992                            return Err(::fidl_next::DecodeError::VectorTooLong {
24993                                size: value.len() as u64,
24994                                limit: 100,
24995                            });
24996                        }
24997
24998                        Ok(())
24999                    }
25000
25001                    5 => {
25002                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::OnTerminate>(
25003                            slot.as_mut(),
25004                            decoder,
25005                            (),
25006                        )?;
25007
25008                        Ok(())
25009                    }
25010
25011                    6 => {
25012                        ::fidl_next::wire::Envelope::decode_as::<
25013                            ___D,
25014                            ::fidl_next::wire::Vector<'de, crate::wire::ConfigOverride<'de>>,
25015                        >(slot.as_mut(), decoder, (4294967295, ()))?;
25016
25017                        Ok(())
25018                    }
25019
25020                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
25021                }
25022            })
25023        }
25024    }
25025
25026    impl<'de> Child<'de> {
25027        pub fn name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
25028            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
25029        }
25030
25031        pub fn take_name(&mut self) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
25032            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
25033        }
25034
25035        pub fn url(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
25036            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
25037        }
25038
25039        pub fn take_url(&mut self) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
25040            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
25041        }
25042
25043        pub fn startup(&self) -> ::core::option::Option<&crate::wire::StartupMode> {
25044            unsafe { Some(self.table.get(3)?.deref_unchecked()) }
25045        }
25046
25047        pub fn take_startup(&mut self) -> ::core::option::Option<crate::wire::StartupMode> {
25048            unsafe { Some(self.table.get_mut(3)?.take_unchecked()) }
25049        }
25050
25051        pub fn environment(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
25052            unsafe { Some(self.table.get(4)?.deref_unchecked()) }
25053        }
25054
25055        pub fn take_environment(
25056            &mut self,
25057        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
25058            unsafe { Some(self.table.get_mut(4)?.take_unchecked()) }
25059        }
25060
25061        pub fn on_terminate(&self) -> ::core::option::Option<&crate::wire::OnTerminate> {
25062            unsafe { Some(self.table.get(5)?.deref_unchecked()) }
25063        }
25064
25065        pub fn take_on_terminate(&mut self) -> ::core::option::Option<crate::wire::OnTerminate> {
25066            unsafe { Some(self.table.get_mut(5)?.take_unchecked()) }
25067        }
25068
25069        pub fn config_overrides(
25070            &self,
25071        ) -> ::core::option::Option<&::fidl_next::wire::Vector<'de, crate::wire::ConfigOverride<'de>>>
25072        {
25073            unsafe { Some(self.table.get(6)?.deref_unchecked()) }
25074        }
25075
25076        pub fn take_config_overrides(
25077            &mut self,
25078        ) -> ::core::option::Option<::fidl_next::wire::Vector<'de, crate::wire::ConfigOverride<'de>>>
25079        {
25080            unsafe { Some(self.table.get_mut(6)?.take_unchecked()) }
25081        }
25082    }
25083
25084    impl<'de> ::core::fmt::Debug for Child<'de> {
25085        fn fmt(
25086            &self,
25087            f: &mut ::core::fmt::Formatter<'_>,
25088        ) -> ::core::result::Result<(), ::core::fmt::Error> {
25089            f.debug_struct("Child")
25090                .field("name", &self.name())
25091                .field("url", &self.url())
25092                .field("startup", &self.startup())
25093                .field("environment", &self.environment())
25094                .field("on_terminate", &self.on_terminate())
25095                .field("config_overrides", &self.config_overrides())
25096                .finish()
25097        }
25098    }
25099
25100    impl<'de> ::fidl_next::IntoNatural for Child<'de> {
25101        type Natural = crate::natural::Child;
25102    }
25103
25104    /// The wire type corresponding to [`Durability`].
25105    #[derive(Clone, Copy, Debug, PartialEq, Eq)]
25106    #[repr(transparent)]
25107    pub struct Durability {
25108        pub(crate) value: ::fidl_next::wire::Uint32,
25109    }
25110
25111    impl ::fidl_next::Constrained for Durability {
25112        type Constraint = ();
25113
25114        fn validate(
25115            _: ::fidl_next::Slot<'_, Self>,
25116            _: Self::Constraint,
25117        ) -> Result<(), ::fidl_next::ValidationError> {
25118            Ok(())
25119        }
25120    }
25121
25122    unsafe impl ::fidl_next::Wire for Durability {
25123        type Narrowed<'de> = Self;
25124
25125        #[inline]
25126        fn zero_padding(_: &mut ::core::mem::MaybeUninit<Self>) {
25127            // Wire enums have no padding
25128        }
25129    }
25130
25131    impl Durability {
25132        pub const TRANSIENT: Durability = Durability { value: ::fidl_next::wire::Uint32(2) };
25133
25134        pub const SINGLE_RUN: Durability = Durability { value: ::fidl_next::wire::Uint32(3) };
25135    }
25136
25137    unsafe impl<___D> ::fidl_next::Decode<___D> for Durability
25138    where
25139        ___D: ?Sized,
25140    {
25141        fn decode(
25142            slot: ::fidl_next::Slot<'_, Self>,
25143            _: &mut ___D,
25144            _: (),
25145        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
25146            ::fidl_next::munge!(let Self { value } = slot);
25147
25148            match u32::from(*value) {
25149                2 | 3 => (),
25150                unknown => {
25151                    return Err(::fidl_next::DecodeError::InvalidEnumOrdinal(unknown as i128));
25152                }
25153            }
25154
25155            Ok(())
25156        }
25157    }
25158
25159    impl ::core::convert::From<crate::natural::Durability> for Durability {
25160        fn from(natural: crate::natural::Durability) -> Self {
25161            match natural {
25162                crate::natural::Durability::Transient => Durability::TRANSIENT,
25163
25164                crate::natural::Durability::SingleRun => Durability::SINGLE_RUN,
25165            }
25166        }
25167    }
25168
25169    impl ::fidl_next::IntoNatural for Durability {
25170        type Natural = crate::natural::Durability;
25171    }
25172
25173    /// The wire type corresponding to [`Collection`].
25174    #[repr(C)]
25175    pub struct Collection<'de> {
25176        pub(crate) table: ::fidl_next::wire::Table<'de>,
25177    }
25178
25179    impl<'de> Drop for Collection<'de> {
25180        fn drop(&mut self) {
25181            let _ = self.table.get(1).map(|envelope| unsafe {
25182                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
25183            });
25184
25185            let _ = self
25186                .table
25187                .get(2)
25188                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Durability>() });
25189
25190            let _ = self.table.get(3).map(|envelope| unsafe {
25191                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
25192            });
25193
25194            let _ = self
25195                .table
25196                .get(4)
25197                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::AllowedOffers>() });
25198
25199            let _ = self.table.get(5).map(|envelope| unsafe { envelope.read_unchecked::<bool>() });
25200
25201            let _ = self.table.get(6).map(|envelope| unsafe { envelope.read_unchecked::<bool>() });
25202        }
25203    }
25204
25205    impl ::fidl_next::Constrained for Collection<'_> {
25206        type Constraint = ();
25207
25208        fn validate(
25209            _: ::fidl_next::Slot<'_, Self>,
25210            _: Self::Constraint,
25211        ) -> Result<(), ::fidl_next::ValidationError> {
25212            Ok(())
25213        }
25214    }
25215
25216    unsafe impl ::fidl_next::Wire for Collection<'static> {
25217        type Narrowed<'de> = Collection<'de>;
25218
25219        #[inline]
25220        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
25221            ::fidl_next::munge!(let Self { table } = out);
25222            ::fidl_next::wire::Table::zero_padding(table);
25223        }
25224    }
25225
25226    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for Collection<'de>
25227    where
25228        ___D: ::fidl_next::Decoder<'de> + ?Sized,
25229    {
25230        fn decode(
25231            slot: ::fidl_next::Slot<'_, Self>,
25232            decoder: &mut ___D,
25233            _: (),
25234        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
25235            ::fidl_next::munge!(let Self { table } = slot);
25236
25237            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
25238                match ordinal {
25239                    0 => unsafe { ::core::hint::unreachable_unchecked() },
25240
25241                    1 => {
25242                        ::fidl_next::wire::Envelope::decode_as::<
25243                            ___D,
25244                            ::fidl_next::wire::String<'de>,
25245                        >(slot.as_mut(), decoder, 100)?;
25246
25247                        let value = unsafe {
25248                            slot.deref_unchecked()
25249                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
25250                        };
25251
25252                        if value.len() > 100 {
25253                            return Err(::fidl_next::DecodeError::VectorTooLong {
25254                                size: value.len() as u64,
25255                                limit: 100,
25256                            });
25257                        }
25258
25259                        Ok(())
25260                    }
25261
25262                    2 => {
25263                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Durability>(
25264                            slot.as_mut(),
25265                            decoder,
25266                            (),
25267                        )?;
25268
25269                        Ok(())
25270                    }
25271
25272                    3 => {
25273                        ::fidl_next::wire::Envelope::decode_as::<
25274                            ___D,
25275                            ::fidl_next::wire::String<'de>,
25276                        >(slot.as_mut(), decoder, 100)?;
25277
25278                        let value = unsafe {
25279                            slot.deref_unchecked()
25280                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
25281                        };
25282
25283                        if value.len() > 100 {
25284                            return Err(::fidl_next::DecodeError::VectorTooLong {
25285                                size: value.len() as u64,
25286                                limit: 100,
25287                            });
25288                        }
25289
25290                        Ok(())
25291                    }
25292
25293                    4 => {
25294                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::AllowedOffers>(
25295                            slot.as_mut(),
25296                            decoder,
25297                            (),
25298                        )?;
25299
25300                        Ok(())
25301                    }
25302
25303                    5 => {
25304                        ::fidl_next::wire::Envelope::decode_as::<___D, bool>(
25305                            slot.as_mut(),
25306                            decoder,
25307                            (),
25308                        )?;
25309
25310                        Ok(())
25311                    }
25312
25313                    6 => {
25314                        ::fidl_next::wire::Envelope::decode_as::<___D, bool>(
25315                            slot.as_mut(),
25316                            decoder,
25317                            (),
25318                        )?;
25319
25320                        Ok(())
25321                    }
25322
25323                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
25324                }
25325            })
25326        }
25327    }
25328
25329    impl<'de> Collection<'de> {
25330        pub fn name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
25331            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
25332        }
25333
25334        pub fn take_name(&mut self) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
25335            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
25336        }
25337
25338        pub fn durability(&self) -> ::core::option::Option<&crate::wire::Durability> {
25339            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
25340        }
25341
25342        pub fn take_durability(&mut self) -> ::core::option::Option<crate::wire::Durability> {
25343            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
25344        }
25345
25346        pub fn environment(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
25347            unsafe { Some(self.table.get(3)?.deref_unchecked()) }
25348        }
25349
25350        pub fn take_environment(
25351            &mut self,
25352        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
25353            unsafe { Some(self.table.get_mut(3)?.take_unchecked()) }
25354        }
25355
25356        pub fn allowed_offers(&self) -> ::core::option::Option<&crate::wire::AllowedOffers> {
25357            unsafe { Some(self.table.get(4)?.deref_unchecked()) }
25358        }
25359
25360        pub fn take_allowed_offers(
25361            &mut self,
25362        ) -> ::core::option::Option<crate::wire::AllowedOffers> {
25363            unsafe { Some(self.table.get_mut(4)?.take_unchecked()) }
25364        }
25365
25366        pub fn allow_long_names(&self) -> ::core::option::Option<&bool> {
25367            unsafe { Some(self.table.get(5)?.deref_unchecked()) }
25368        }
25369
25370        pub fn take_allow_long_names(&mut self) -> ::core::option::Option<bool> {
25371            unsafe { Some(self.table.get_mut(5)?.take_unchecked()) }
25372        }
25373
25374        pub fn persistent_storage(&self) -> ::core::option::Option<&bool> {
25375            unsafe { Some(self.table.get(6)?.deref_unchecked()) }
25376        }
25377
25378        pub fn take_persistent_storage(&mut self) -> ::core::option::Option<bool> {
25379            unsafe { Some(self.table.get_mut(6)?.take_unchecked()) }
25380        }
25381    }
25382
25383    impl<'de> ::core::fmt::Debug for Collection<'de> {
25384        fn fmt(
25385            &self,
25386            f: &mut ::core::fmt::Formatter<'_>,
25387        ) -> ::core::result::Result<(), ::core::fmt::Error> {
25388            f.debug_struct("Collection")
25389                .field("name", &self.name())
25390                .field("durability", &self.durability())
25391                .field("environment", &self.environment())
25392                .field("allowed_offers", &self.allowed_offers())
25393                .field("allow_long_names", &self.allow_long_names())
25394                .field("persistent_storage", &self.persistent_storage())
25395                .finish()
25396        }
25397    }
25398
25399    impl<'de> ::fidl_next::IntoNatural for Collection<'de> {
25400        type Natural = crate::natural::Collection;
25401    }
25402
25403    /// The wire type corresponding to [`DependencyType`].
25404    #[derive(Clone, Copy, Debug, PartialEq, Eq)]
25405    #[repr(transparent)]
25406    pub struct DependencyType {
25407        pub(crate) value: ::fidl_next::wire::Uint32,
25408    }
25409
25410    impl ::fidl_next::Constrained for DependencyType {
25411        type Constraint = ();
25412
25413        fn validate(
25414            _: ::fidl_next::Slot<'_, Self>,
25415            _: Self::Constraint,
25416        ) -> Result<(), ::fidl_next::ValidationError> {
25417            Ok(())
25418        }
25419    }
25420
25421    unsafe impl ::fidl_next::Wire for DependencyType {
25422        type Narrowed<'de> = Self;
25423
25424        #[inline]
25425        fn zero_padding(_: &mut ::core::mem::MaybeUninit<Self>) {
25426            // Wire enums have no padding
25427        }
25428    }
25429
25430    impl DependencyType {
25431        pub const STRONG: DependencyType = DependencyType { value: ::fidl_next::wire::Uint32(1) };
25432
25433        pub const WEAK: DependencyType = DependencyType { value: ::fidl_next::wire::Uint32(2) };
25434    }
25435
25436    unsafe impl<___D> ::fidl_next::Decode<___D> for DependencyType
25437    where
25438        ___D: ?Sized,
25439    {
25440        fn decode(
25441            slot: ::fidl_next::Slot<'_, Self>,
25442            _: &mut ___D,
25443            _: (),
25444        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
25445            ::fidl_next::munge!(let Self { value } = slot);
25446
25447            match u32::from(*value) {
25448                1 | 2 => (),
25449                unknown => {
25450                    return Err(::fidl_next::DecodeError::InvalidEnumOrdinal(unknown as i128));
25451                }
25452            }
25453
25454            Ok(())
25455        }
25456    }
25457
25458    impl ::core::convert::From<crate::natural::DependencyType> for DependencyType {
25459        fn from(natural: crate::natural::DependencyType) -> Self {
25460            match natural {
25461                crate::natural::DependencyType::Strong => DependencyType::STRONG,
25462
25463                crate::natural::DependencyType::Weak => DependencyType::WEAK,
25464            }
25465        }
25466    }
25467
25468    impl ::fidl_next::IntoNatural for DependencyType {
25469        type Natural = crate::natural::DependencyType;
25470    }
25471
25472    /// The wire type corresponding to [`NameMapping`].
25473    #[derive(Debug)]
25474    #[repr(C)]
25475    pub struct NameMapping<'de> {
25476        pub source_name: ::fidl_next::wire::String<'de>,
25477
25478        pub target_name: ::fidl_next::wire::String<'de>,
25479    }
25480
25481    static_assertions::const_assert_eq!(std::mem::size_of::<NameMapping<'_>>(), 32);
25482    static_assertions::const_assert_eq!(std::mem::align_of::<NameMapping<'_>>(), 8);
25483
25484    static_assertions::const_assert_eq!(std::mem::offset_of!(NameMapping<'_>, source_name), 0);
25485
25486    static_assertions::const_assert_eq!(std::mem::offset_of!(NameMapping<'_>, target_name), 16);
25487
25488    impl ::fidl_next::Constrained for NameMapping<'_> {
25489        type Constraint = ();
25490
25491        fn validate(
25492            _: ::fidl_next::Slot<'_, Self>,
25493            _: Self::Constraint,
25494        ) -> Result<(), ::fidl_next::ValidationError> {
25495            Ok(())
25496        }
25497    }
25498
25499    unsafe impl ::fidl_next::Wire for NameMapping<'static> {
25500        type Narrowed<'de> = NameMapping<'de>;
25501
25502        #[inline]
25503        fn zero_padding(out_: &mut ::core::mem::MaybeUninit<Self>) {
25504            ::fidl_next::munge! {
25505                let Self {
25506                    source_name,
25507                    target_name,
25508
25509                } = &mut *out_;
25510            }
25511
25512            ::fidl_next::Wire::zero_padding(source_name);
25513
25514            ::fidl_next::Wire::zero_padding(target_name);
25515        }
25516    }
25517
25518    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for NameMapping<'de>
25519    where
25520        ___D: ::fidl_next::decoder::InternalHandleDecoder + ?Sized,
25521        ___D: ::fidl_next::Decoder<'de>,
25522    {
25523        fn decode(
25524            slot_: ::fidl_next::Slot<'_, Self>,
25525            decoder_: &mut ___D,
25526            _: (),
25527        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
25528            ::fidl_next::munge! {
25529                let Self {
25530                    mut source_name,
25531                    mut target_name,
25532
25533                } = slot_;
25534            }
25535
25536            let _field = source_name.as_mut();
25537            ::fidl_next::Constrained::validate(_field, 100)?;
25538            ::fidl_next::Decode::decode(source_name.as_mut(), decoder_, 100)?;
25539
25540            let source_name = unsafe { source_name.deref_unchecked() };
25541
25542            if source_name.len() > 100 {
25543                return Err(::fidl_next::DecodeError::VectorTooLong {
25544                    size: source_name.len() as u64,
25545                    limit: 100,
25546                });
25547            }
25548
25549            let _field = target_name.as_mut();
25550            ::fidl_next::Constrained::validate(_field, 100)?;
25551            ::fidl_next::Decode::decode(target_name.as_mut(), decoder_, 100)?;
25552
25553            let target_name = unsafe { target_name.deref_unchecked() };
25554
25555            if target_name.len() > 100 {
25556                return Err(::fidl_next::DecodeError::VectorTooLong {
25557                    size: target_name.len() as u64,
25558                    limit: 100,
25559                });
25560            }
25561
25562            Ok(())
25563        }
25564    }
25565
25566    impl<'de> ::fidl_next::IntoNatural for NameMapping<'de> {
25567        type Natural = crate::natural::NameMapping;
25568    }
25569
25570    /// The wire type corresponding to [`EnvironmentExtends`].
25571    #[derive(Clone, Copy, Debug, PartialEq, Eq)]
25572    #[repr(transparent)]
25573    pub struct EnvironmentExtends {
25574        pub(crate) value: ::fidl_next::wire::Uint32,
25575    }
25576
25577    impl ::fidl_next::Constrained for EnvironmentExtends {
25578        type Constraint = ();
25579
25580        fn validate(
25581            _: ::fidl_next::Slot<'_, Self>,
25582            _: Self::Constraint,
25583        ) -> Result<(), ::fidl_next::ValidationError> {
25584            Ok(())
25585        }
25586    }
25587
25588    unsafe impl ::fidl_next::Wire for EnvironmentExtends {
25589        type Narrowed<'de> = Self;
25590
25591        #[inline]
25592        fn zero_padding(_: &mut ::core::mem::MaybeUninit<Self>) {
25593            // Wire enums have no padding
25594        }
25595    }
25596
25597    impl EnvironmentExtends {
25598        pub const NONE: EnvironmentExtends =
25599            EnvironmentExtends { value: ::fidl_next::wire::Uint32(0) };
25600
25601        pub const REALM: EnvironmentExtends =
25602            EnvironmentExtends { value: ::fidl_next::wire::Uint32(1) };
25603    }
25604
25605    unsafe impl<___D> ::fidl_next::Decode<___D> for EnvironmentExtends
25606    where
25607        ___D: ?Sized,
25608    {
25609        fn decode(
25610            slot: ::fidl_next::Slot<'_, Self>,
25611            _: &mut ___D,
25612            _: (),
25613        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
25614            ::fidl_next::munge!(let Self { value } = slot);
25615
25616            match u32::from(*value) {
25617                0 | 1 => (),
25618                unknown => {
25619                    return Err(::fidl_next::DecodeError::InvalidEnumOrdinal(unknown as i128));
25620                }
25621            }
25622
25623            Ok(())
25624        }
25625    }
25626
25627    impl ::core::convert::From<crate::natural::EnvironmentExtends> for EnvironmentExtends {
25628        fn from(natural: crate::natural::EnvironmentExtends) -> Self {
25629            match natural {
25630                crate::natural::EnvironmentExtends::None => EnvironmentExtends::NONE,
25631
25632                crate::natural::EnvironmentExtends::Realm => EnvironmentExtends::REALM,
25633            }
25634        }
25635    }
25636
25637    impl ::fidl_next::IntoNatural for EnvironmentExtends {
25638        type Natural = crate::natural::EnvironmentExtends;
25639    }
25640
25641    /// The wire type corresponding to [`UrlScheme`](crate::natural::UrlScheme).
25642    pub type UrlScheme<'de> = ::fidl_next::wire::String<'de>;
25643
25644    /// The wire type corresponding to [`ConfigTypeLayout`].
25645    #[derive(Clone, Copy, Debug, PartialEq, Eq)]
25646    #[repr(transparent)]
25647    pub struct ConfigTypeLayout {
25648        pub(crate) value: ::fidl_next::wire::Uint32,
25649    }
25650
25651    impl ::fidl_next::Constrained for ConfigTypeLayout {
25652        type Constraint = ();
25653
25654        fn validate(
25655            _: ::fidl_next::Slot<'_, Self>,
25656            _: Self::Constraint,
25657        ) -> Result<(), ::fidl_next::ValidationError> {
25658            Ok(())
25659        }
25660    }
25661
25662    unsafe impl ::fidl_next::Wire for ConfigTypeLayout {
25663        type Narrowed<'de> = Self;
25664
25665        #[inline]
25666        fn zero_padding(_: &mut ::core::mem::MaybeUninit<Self>) {
25667            // Wire enums have no padding
25668        }
25669    }
25670
25671    impl ConfigTypeLayout {
25672        pub const BOOL: ConfigTypeLayout = ConfigTypeLayout { value: ::fidl_next::wire::Uint32(1) };
25673
25674        pub const UINT8: ConfigTypeLayout =
25675            ConfigTypeLayout { value: ::fidl_next::wire::Uint32(2) };
25676
25677        pub const UINT16: ConfigTypeLayout =
25678            ConfigTypeLayout { value: ::fidl_next::wire::Uint32(3) };
25679
25680        pub const UINT32: ConfigTypeLayout =
25681            ConfigTypeLayout { value: ::fidl_next::wire::Uint32(4) };
25682
25683        pub const UINT64: ConfigTypeLayout =
25684            ConfigTypeLayout { value: ::fidl_next::wire::Uint32(5) };
25685
25686        pub const INT8: ConfigTypeLayout = ConfigTypeLayout { value: ::fidl_next::wire::Uint32(6) };
25687
25688        pub const INT16: ConfigTypeLayout =
25689            ConfigTypeLayout { value: ::fidl_next::wire::Uint32(7) };
25690
25691        pub const INT32: ConfigTypeLayout =
25692            ConfigTypeLayout { value: ::fidl_next::wire::Uint32(8) };
25693
25694        pub const INT64: ConfigTypeLayout =
25695            ConfigTypeLayout { value: ::fidl_next::wire::Uint32(9) };
25696
25697        pub const STRING: ConfigTypeLayout =
25698            ConfigTypeLayout { value: ::fidl_next::wire::Uint32(10) };
25699
25700        pub const VECTOR: ConfigTypeLayout =
25701            ConfigTypeLayout { value: ::fidl_next::wire::Uint32(11) };
25702    }
25703
25704    unsafe impl<___D> ::fidl_next::Decode<___D> for ConfigTypeLayout
25705    where
25706        ___D: ?Sized,
25707    {
25708        fn decode(
25709            slot: ::fidl_next::Slot<'_, Self>,
25710            _: &mut ___D,
25711            _: (),
25712        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
25713            Ok(())
25714        }
25715    }
25716
25717    impl ::core::convert::From<crate::natural::ConfigTypeLayout> for ConfigTypeLayout {
25718        fn from(natural: crate::natural::ConfigTypeLayout) -> Self {
25719            match natural {
25720                crate::natural::ConfigTypeLayout::Bool => ConfigTypeLayout::BOOL,
25721
25722                crate::natural::ConfigTypeLayout::Uint8 => ConfigTypeLayout::UINT8,
25723
25724                crate::natural::ConfigTypeLayout::Uint16 => ConfigTypeLayout::UINT16,
25725
25726                crate::natural::ConfigTypeLayout::Uint32 => ConfigTypeLayout::UINT32,
25727
25728                crate::natural::ConfigTypeLayout::Uint64 => ConfigTypeLayout::UINT64,
25729
25730                crate::natural::ConfigTypeLayout::Int8 => ConfigTypeLayout::INT8,
25731
25732                crate::natural::ConfigTypeLayout::Int16 => ConfigTypeLayout::INT16,
25733
25734                crate::natural::ConfigTypeLayout::Int32 => ConfigTypeLayout::INT32,
25735
25736                crate::natural::ConfigTypeLayout::Int64 => ConfigTypeLayout::INT64,
25737
25738                crate::natural::ConfigTypeLayout::String => ConfigTypeLayout::STRING,
25739
25740                crate::natural::ConfigTypeLayout::Vector => ConfigTypeLayout::VECTOR,
25741
25742                crate::natural::ConfigTypeLayout::UnknownOrdinal_(value) => {
25743                    ConfigTypeLayout { value: ::fidl_next::wire::Uint32::from(value) }
25744                }
25745            }
25746        }
25747    }
25748
25749    impl ::fidl_next::IntoNatural for ConfigTypeLayout {
25750        type Natural = crate::natural::ConfigTypeLayout;
25751    }
25752
25753    /// The wire type corresponding to [`LayoutConstraint`].
25754    #[repr(transparent)]
25755    pub struct LayoutConstraint<'de> {
25756        pub(crate) raw: ::fidl_next::wire::Union,
25757        pub(crate) _phantom: ::core::marker::PhantomData<&'de mut [::fidl_next::Chunk]>,
25758    }
25759
25760    impl<'de> Drop for LayoutConstraint<'de> {
25761        fn drop(&mut self) {
25762            match self.raw.ordinal() {
25763                1 => {
25764                    let _ = unsafe { self.raw.get().read_unchecked::<::fidl_next::wire::Uint32>() };
25765                }
25766
25767                _ => (),
25768            }
25769        }
25770    }
25771
25772    impl ::fidl_next::Constrained for LayoutConstraint<'_> {
25773        type Constraint = ();
25774
25775        fn validate(
25776            _: ::fidl_next::Slot<'_, Self>,
25777            _: Self::Constraint,
25778        ) -> Result<(), ::fidl_next::ValidationError> {
25779            Ok(())
25780        }
25781    }
25782
25783    unsafe impl ::fidl_next::Wire for LayoutConstraint<'static> {
25784        type Narrowed<'de> = LayoutConstraint<'de>;
25785
25786        #[inline]
25787        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
25788            ::fidl_next::munge!(let Self { raw, _phantom: _ } = out);
25789            ::fidl_next::wire::Union::zero_padding(raw);
25790        }
25791    }
25792
25793    pub mod layout_constraint {
25794        pub enum Ref<'de> {
25795            MaxSize(&'de ::fidl_next::wire::Uint32),
25796
25797            UnknownOrdinal_(u64),
25798        }
25799
25800        pub enum Value {
25801            MaxSize(::fidl_next::wire::Uint32),
25802
25803            UnknownOrdinal_(u64),
25804        }
25805    }
25806
25807    impl<'de> LayoutConstraint<'de> {
25808        pub fn as_ref(&self) -> crate::wire::layout_constraint::Ref<'_> {
25809            match self.raw.ordinal() {
25810                1 => crate::wire::layout_constraint::Ref::MaxSize(unsafe {
25811                    self.raw.get().deref_unchecked::<::fidl_next::wire::Uint32>()
25812                }),
25813
25814                unknown => crate::wire::layout_constraint::Ref::UnknownOrdinal_(unknown),
25815            }
25816        }
25817
25818        pub fn into_inner(self) -> crate::wire::layout_constraint::Value {
25819            let this = ::core::mem::ManuallyDrop::new(self);
25820
25821            match this.raw.ordinal() {
25822                1 => crate::wire::layout_constraint::Value::MaxSize(unsafe {
25823                    this.raw.get().read_unchecked::<::fidl_next::wire::Uint32>()
25824                }),
25825
25826                unknown => crate::wire::layout_constraint::Value::UnknownOrdinal_(unknown),
25827            }
25828        }
25829    }
25830
25831    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for LayoutConstraint<'de>
25832    where
25833        ___D: ::fidl_next::decoder::InternalHandleDecoder + ?Sized,
25834        ___D: ::fidl_next::Decoder<'de>,
25835    {
25836        fn decode(
25837            mut slot: ::fidl_next::Slot<'_, Self>,
25838            decoder: &mut ___D,
25839            _: (),
25840        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
25841            ::fidl_next::munge!(let Self { mut raw, _phantom: _ } = slot.as_mut());
25842            match ::fidl_next::wire::Union::encoded_ordinal(raw.as_mut()) {
25843                1 => ::fidl_next::wire::Union::decode_as::<___D, ::fidl_next::wire::Uint32>(
25844                    raw,
25845                    decoder,
25846                    (),
25847                )?,
25848
25849                _ => ::fidl_next::wire::Union::decode_unknown(raw, decoder)?,
25850            }
25851
25852            Ok(())
25853        }
25854    }
25855
25856    impl<'de> ::core::fmt::Debug for LayoutConstraint<'de> {
25857        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
25858            match self.raw.ordinal() {
25859                1 => unsafe {
25860                    self.raw.get().deref_unchecked::<::fidl_next::wire::Uint32>().fmt(f)
25861                },
25862                _ => unsafe { ::core::hint::unreachable_unchecked() },
25863            }
25864        }
25865    }
25866
25867    impl<'de> ::fidl_next::IntoNatural for LayoutConstraint<'de> {
25868        type Natural = crate::natural::LayoutConstraint;
25869    }
25870
25871    /// The wire type corresponding to [`ConfigType`].
25872    #[derive(Debug)]
25873    #[repr(C)]
25874    pub struct ConfigType<'de> {
25875        pub layout: crate::wire::ConfigTypeLayout,
25876
25877        pub parameters: ::fidl_next::wire::OptionalVector<'de, crate::wire::LayoutParameter<'de>>,
25878
25879        pub constraints: ::fidl_next::wire::Vector<'de, crate::wire::LayoutConstraint<'de>>,
25880    }
25881
25882    static_assertions::const_assert_eq!(std::mem::size_of::<ConfigType<'_>>(), 40);
25883    static_assertions::const_assert_eq!(std::mem::align_of::<ConfigType<'_>>(), 8);
25884
25885    static_assertions::const_assert_eq!(std::mem::offset_of!(ConfigType<'_>, layout), 0);
25886
25887    static_assertions::const_assert_eq!(std::mem::offset_of!(ConfigType<'_>, parameters), 8);
25888
25889    static_assertions::const_assert_eq!(std::mem::offset_of!(ConfigType<'_>, constraints), 24);
25890
25891    impl ::fidl_next::Constrained for ConfigType<'_> {
25892        type Constraint = ();
25893
25894        fn validate(
25895            _: ::fidl_next::Slot<'_, Self>,
25896            _: Self::Constraint,
25897        ) -> Result<(), ::fidl_next::ValidationError> {
25898            Ok(())
25899        }
25900    }
25901
25902    unsafe impl ::fidl_next::Wire for ConfigType<'static> {
25903        type Narrowed<'de> = ConfigType<'de>;
25904
25905        #[inline]
25906        fn zero_padding(out_: &mut ::core::mem::MaybeUninit<Self>) {
25907            ::fidl_next::munge! {
25908                let Self {
25909                    layout,
25910                    parameters,
25911                    constraints,
25912
25913                } = &mut *out_;
25914            }
25915
25916            ::fidl_next::Wire::zero_padding(layout);
25917
25918            ::fidl_next::Wire::zero_padding(parameters);
25919
25920            ::fidl_next::Wire::zero_padding(constraints);
25921
25922            unsafe {
25923                out_.as_mut_ptr().cast::<u8>().add(4).write_bytes(0, 4);
25924            }
25925        }
25926    }
25927
25928    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for ConfigType<'de>
25929    where
25930        ___D: ::fidl_next::decoder::InternalHandleDecoder + ?Sized,
25931        ___D: ::fidl_next::Decoder<'de>,
25932    {
25933        fn decode(
25934            slot_: ::fidl_next::Slot<'_, Self>,
25935            decoder_: &mut ___D,
25936            _: (),
25937        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
25938            if slot_.as_bytes()[4..8] != [0u8; 4] {
25939                return Err(::fidl_next::DecodeError::InvalidPadding);
25940            }
25941
25942            ::fidl_next::munge! {
25943                let Self {
25944                    mut layout,
25945                    mut parameters,
25946                    mut constraints,
25947
25948                } = slot_;
25949            }
25950
25951            let _field = layout.as_mut();
25952
25953            ::fidl_next::Decode::decode(layout.as_mut(), decoder_, ())?;
25954
25955            let _field = parameters.as_mut();
25956            ::fidl_next::Constrained::validate(_field, (4294967295, ()))?;
25957            ::fidl_next::Decode::decode(parameters.as_mut(), decoder_, (4294967295, ()))?;
25958
25959            let _field = constraints.as_mut();
25960            ::fidl_next::Constrained::validate(_field, (4294967295, ()))?;
25961            ::fidl_next::Decode::decode(constraints.as_mut(), decoder_, (4294967295, ()))?;
25962
25963            Ok(())
25964        }
25965    }
25966
25967    impl<'de> ::fidl_next::IntoNatural for ConfigType<'de> {
25968        type Natural = crate::natural::ConfigType;
25969    }
25970
25971    /// The wire type corresponding to [`ConfigChecksum`].
25972    #[repr(transparent)]
25973    pub struct ConfigChecksum<'de> {
25974        pub(crate) raw: ::fidl_next::wire::Union,
25975        pub(crate) _phantom: ::core::marker::PhantomData<&'de mut [::fidl_next::Chunk]>,
25976    }
25977
25978    impl<'de> Drop for ConfigChecksum<'de> {
25979        fn drop(&mut self) {
25980            match self.raw.ordinal() {
25981                1 => {
25982                    let _ = unsafe { self.raw.get().read_unchecked::<[u8; 32]>() };
25983                }
25984
25985                _ => (),
25986            }
25987        }
25988    }
25989
25990    impl ::fidl_next::Constrained for ConfigChecksum<'_> {
25991        type Constraint = ();
25992
25993        fn validate(
25994            _: ::fidl_next::Slot<'_, Self>,
25995            _: Self::Constraint,
25996        ) -> Result<(), ::fidl_next::ValidationError> {
25997            Ok(())
25998        }
25999    }
26000
26001    unsafe impl ::fidl_next::Wire for ConfigChecksum<'static> {
26002        type Narrowed<'de> = ConfigChecksum<'de>;
26003
26004        #[inline]
26005        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
26006            ::fidl_next::munge!(let Self { raw, _phantom: _ } = out);
26007            ::fidl_next::wire::Union::zero_padding(raw);
26008        }
26009    }
26010
26011    pub mod config_checksum {
26012        pub enum Ref<'de> {
26013            Sha256(&'de [u8; 32]),
26014
26015            UnknownOrdinal_(u64),
26016        }
26017
26018        pub enum Value {
26019            Sha256([u8; 32]),
26020
26021            UnknownOrdinal_(u64),
26022        }
26023    }
26024
26025    impl<'de> ConfigChecksum<'de> {
26026        pub fn as_ref(&self) -> crate::wire::config_checksum::Ref<'_> {
26027            match self.raw.ordinal() {
26028                1 => crate::wire::config_checksum::Ref::Sha256(unsafe {
26029                    self.raw.get().deref_unchecked::<[u8; 32]>()
26030                }),
26031
26032                unknown => crate::wire::config_checksum::Ref::UnknownOrdinal_(unknown),
26033            }
26034        }
26035
26036        pub fn into_inner(self) -> crate::wire::config_checksum::Value {
26037            let this = ::core::mem::ManuallyDrop::new(self);
26038
26039            match this.raw.ordinal() {
26040                1 => crate::wire::config_checksum::Value::Sha256(unsafe {
26041                    this.raw.get().read_unchecked::<[u8; 32]>()
26042                }),
26043
26044                unknown => crate::wire::config_checksum::Value::UnknownOrdinal_(unknown),
26045            }
26046        }
26047    }
26048
26049    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for ConfigChecksum<'de>
26050    where
26051        ___D: ::fidl_next::decoder::InternalHandleDecoder + ?Sized,
26052        ___D: ::fidl_next::Decoder<'de>,
26053    {
26054        fn decode(
26055            mut slot: ::fidl_next::Slot<'_, Self>,
26056            decoder: &mut ___D,
26057            _: (),
26058        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
26059            ::fidl_next::munge!(let Self { mut raw, _phantom: _ } = slot.as_mut());
26060            match ::fidl_next::wire::Union::encoded_ordinal(raw.as_mut()) {
26061                1 => ::fidl_next::wire::Union::decode_as::<___D, [u8; 32]>(raw, decoder, ())?,
26062
26063                _ => ::fidl_next::wire::Union::decode_unknown(raw, decoder)?,
26064            }
26065
26066            Ok(())
26067        }
26068    }
26069
26070    impl<'de> ::core::fmt::Debug for ConfigChecksum<'de> {
26071        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
26072            match self.raw.ordinal() {
26073                1 => unsafe { self.raw.get().deref_unchecked::<[u8; 32]>().fmt(f) },
26074                _ => unsafe { ::core::hint::unreachable_unchecked() },
26075            }
26076        }
26077    }
26078
26079    impl<'de> ::fidl_next::IntoNatural for ConfigChecksum<'de> {
26080        type Natural = crate::natural::ConfigChecksum;
26081    }
26082
26083    /// The wire type corresponding to [`UseStorage`].
26084    #[repr(C)]
26085    pub struct UseStorage<'de> {
26086        pub(crate) table: ::fidl_next::wire::Table<'de>,
26087    }
26088
26089    impl<'de> Drop for UseStorage<'de> {
26090        fn drop(&mut self) {
26091            let _ = self.table.get(1).map(|envelope| unsafe {
26092                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
26093            });
26094
26095            let _ = self.table.get(2).map(|envelope| unsafe {
26096                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
26097            });
26098
26099            let _ = self
26100                .table
26101                .get(3)
26102                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Availability>() });
26103        }
26104    }
26105
26106    impl ::fidl_next::Constrained for UseStorage<'_> {
26107        type Constraint = ();
26108
26109        fn validate(
26110            _: ::fidl_next::Slot<'_, Self>,
26111            _: Self::Constraint,
26112        ) -> Result<(), ::fidl_next::ValidationError> {
26113            Ok(())
26114        }
26115    }
26116
26117    unsafe impl ::fidl_next::Wire for UseStorage<'static> {
26118        type Narrowed<'de> = UseStorage<'de>;
26119
26120        #[inline]
26121        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
26122            ::fidl_next::munge!(let Self { table } = out);
26123            ::fidl_next::wire::Table::zero_padding(table);
26124        }
26125    }
26126
26127    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for UseStorage<'de>
26128    where
26129        ___D: ::fidl_next::Decoder<'de> + ?Sized,
26130    {
26131        fn decode(
26132            slot: ::fidl_next::Slot<'_, Self>,
26133            decoder: &mut ___D,
26134            _: (),
26135        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
26136            ::fidl_next::munge!(let Self { table } = slot);
26137
26138            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
26139                match ordinal {
26140                    0 => unsafe { ::core::hint::unreachable_unchecked() },
26141
26142                    1 => {
26143                        ::fidl_next::wire::Envelope::decode_as::<
26144                            ___D,
26145                            ::fidl_next::wire::String<'de>,
26146                        >(slot.as_mut(), decoder, 100)?;
26147
26148                        let value = unsafe {
26149                            slot.deref_unchecked()
26150                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
26151                        };
26152
26153                        if value.len() > 100 {
26154                            return Err(::fidl_next::DecodeError::VectorTooLong {
26155                                size: value.len() as u64,
26156                                limit: 100,
26157                            });
26158                        }
26159
26160                        Ok(())
26161                    }
26162
26163                    2 => {
26164                        ::fidl_next::wire::Envelope::decode_as::<
26165                            ___D,
26166                            ::fidl_next::wire::String<'de>,
26167                        >(slot.as_mut(), decoder, 1024)?;
26168
26169                        let value = unsafe {
26170                            slot.deref_unchecked()
26171                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
26172                        };
26173
26174                        if value.len() > 1024 {
26175                            return Err(::fidl_next::DecodeError::VectorTooLong {
26176                                size: value.len() as u64,
26177                                limit: 1024,
26178                            });
26179                        }
26180
26181                        Ok(())
26182                    }
26183
26184                    3 => {
26185                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Availability>(
26186                            slot.as_mut(),
26187                            decoder,
26188                            (),
26189                        )?;
26190
26191                        Ok(())
26192                    }
26193
26194                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
26195                }
26196            })
26197        }
26198    }
26199
26200    impl<'de> UseStorage<'de> {
26201        pub fn source_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
26202            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
26203        }
26204
26205        pub fn take_source_name(
26206            &mut self,
26207        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
26208            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
26209        }
26210
26211        pub fn target_path(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
26212            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
26213        }
26214
26215        pub fn take_target_path(
26216            &mut self,
26217        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
26218            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
26219        }
26220
26221        pub fn availability(&self) -> ::core::option::Option<&crate::wire::Availability> {
26222            unsafe { Some(self.table.get(3)?.deref_unchecked()) }
26223        }
26224
26225        pub fn take_availability(&mut self) -> ::core::option::Option<crate::wire::Availability> {
26226            unsafe { Some(self.table.get_mut(3)?.take_unchecked()) }
26227        }
26228    }
26229
26230    impl<'de> ::core::fmt::Debug for UseStorage<'de> {
26231        fn fmt(
26232            &self,
26233            f: &mut ::core::fmt::Formatter<'_>,
26234        ) -> ::core::result::Result<(), ::core::fmt::Error> {
26235            f.debug_struct("UseStorage")
26236                .field("source_name", &self.source_name())
26237                .field("target_path", &self.target_path())
26238                .field("availability", &self.availability())
26239                .finish()
26240        }
26241    }
26242
26243    impl<'de> ::fidl_next::IntoNatural for UseStorage<'de> {
26244        type Natural = crate::natural::UseStorage;
26245    }
26246
26247    /// The wire type corresponding to [`ConfigMutability`](crate::natural::ConfigMutability).
26248    #[derive(Clone, Copy, Debug)]
26249    #[repr(transparent)]
26250    pub struct ConfigMutability {
26251        pub(crate) value: ::fidl_next::wire::Uint32,
26252    }
26253
26254    impl ::fidl_next::Constrained for ConfigMutability {
26255        type Constraint = ();
26256
26257        fn validate(
26258            _: ::fidl_next::Slot<'_, Self>,
26259            _: Self::Constraint,
26260        ) -> Result<(), ::fidl_next::ValidationError> {
26261            Ok(())
26262        }
26263    }
26264
26265    unsafe impl ::fidl_next::Wire for ConfigMutability {
26266        type Narrowed<'de> = Self;
26267
26268        #[inline]
26269        fn zero_padding(_: &mut ::core::mem::MaybeUninit<Self>) {
26270            // Wire bits have no padding
26271        }
26272    }
26273
26274    unsafe impl<___D> ::fidl_next::Decode<___D> for ConfigMutability
26275    where
26276        ___D: ?Sized,
26277    {
26278        fn decode(
26279            slot: ::fidl_next::Slot<'_, Self>,
26280            _: &mut ___D,
26281            _: (),
26282        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
26283            Ok(())
26284        }
26285    }
26286
26287    impl ::core::convert::From<crate::natural::ConfigMutability> for ConfigMutability {
26288        fn from(natural: crate::natural::ConfigMutability) -> Self {
26289            Self { value: ::fidl_next::wire::Uint32::from(natural.bits()) }
26290        }
26291    }
26292
26293    impl ::fidl_next::IntoNatural for ConfigMutability {
26294        type Natural = crate::natural::ConfigMutability;
26295    }
26296
26297    /// The wire type corresponding to [`ConfigField`].
26298    #[repr(C)]
26299    pub struct ConfigField<'de> {
26300        pub(crate) table: ::fidl_next::wire::Table<'de>,
26301    }
26302
26303    impl<'de> Drop for ConfigField<'de> {
26304        fn drop(&mut self) {
26305            let _ = self.table.get(1).map(|envelope| unsafe {
26306                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
26307            });
26308
26309            let _ = self.table.get(2).map(|envelope| unsafe {
26310                envelope.read_unchecked::<crate::wire::ConfigType<'de>>()
26311            });
26312
26313            let _ = self.table.get(3).map(|envelope| unsafe {
26314                envelope.read_unchecked::<crate::wire::ConfigMutability>()
26315            });
26316        }
26317    }
26318
26319    impl ::fidl_next::Constrained for ConfigField<'_> {
26320        type Constraint = ();
26321
26322        fn validate(
26323            _: ::fidl_next::Slot<'_, Self>,
26324            _: Self::Constraint,
26325        ) -> Result<(), ::fidl_next::ValidationError> {
26326            Ok(())
26327        }
26328    }
26329
26330    unsafe impl ::fidl_next::Wire for ConfigField<'static> {
26331        type Narrowed<'de> = ConfigField<'de>;
26332
26333        #[inline]
26334        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
26335            ::fidl_next::munge!(let Self { table } = out);
26336            ::fidl_next::wire::Table::zero_padding(table);
26337        }
26338    }
26339
26340    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for ConfigField<'de>
26341    where
26342        ___D: ::fidl_next::Decoder<'de> + ?Sized,
26343    {
26344        fn decode(
26345            slot: ::fidl_next::Slot<'_, Self>,
26346            decoder: &mut ___D,
26347            _: (),
26348        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
26349            ::fidl_next::munge!(let Self { table } = slot);
26350
26351            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
26352                match ordinal {
26353                    0 => unsafe { ::core::hint::unreachable_unchecked() },
26354
26355                    1 => {
26356                        ::fidl_next::wire::Envelope::decode_as::<
26357                            ___D,
26358                            ::fidl_next::wire::String<'de>,
26359                        >(slot.as_mut(), decoder, 64)?;
26360
26361                        let value = unsafe {
26362                            slot.deref_unchecked()
26363                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
26364                        };
26365
26366                        if value.len() > 64 {
26367                            return Err(::fidl_next::DecodeError::VectorTooLong {
26368                                size: value.len() as u64,
26369                                limit: 64,
26370                            });
26371                        }
26372
26373                        Ok(())
26374                    }
26375
26376                    2 => {
26377                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::ConfigType<'de>>(
26378                            slot.as_mut(),
26379                            decoder,
26380                            (),
26381                        )?;
26382
26383                        Ok(())
26384                    }
26385
26386                    3 => {
26387                        ::fidl_next::wire::Envelope::decode_as::<
26388                            ___D,
26389                            crate::wire::ConfigMutability,
26390                        >(slot.as_mut(), decoder, ())?;
26391
26392                        Ok(())
26393                    }
26394
26395                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
26396                }
26397            })
26398        }
26399    }
26400
26401    impl<'de> ConfigField<'de> {
26402        pub fn key(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
26403            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
26404        }
26405
26406        pub fn take_key(&mut self) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
26407            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
26408        }
26409
26410        pub fn type_(&self) -> ::core::option::Option<&crate::wire::ConfigType<'de>> {
26411            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
26412        }
26413
26414        pub fn take_type_(&mut self) -> ::core::option::Option<crate::wire::ConfigType<'de>> {
26415            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
26416        }
26417
26418        pub fn mutability(&self) -> ::core::option::Option<&crate::wire::ConfigMutability> {
26419            unsafe { Some(self.table.get(3)?.deref_unchecked()) }
26420        }
26421
26422        pub fn take_mutability(&mut self) -> ::core::option::Option<crate::wire::ConfigMutability> {
26423            unsafe { Some(self.table.get_mut(3)?.take_unchecked()) }
26424        }
26425    }
26426
26427    impl<'de> ::core::fmt::Debug for ConfigField<'de> {
26428        fn fmt(
26429            &self,
26430            f: &mut ::core::fmt::Formatter<'_>,
26431        ) -> ::core::result::Result<(), ::core::fmt::Error> {
26432            f.debug_struct("ConfigField")
26433                .field("key", &self.key())
26434                .field("type_", &self.type_())
26435                .field("mutability", &self.mutability())
26436                .finish()
26437        }
26438    }
26439
26440    impl<'de> ::fidl_next::IntoNatural for ConfigField<'de> {
26441        type Natural = crate::natural::ConfigField;
26442    }
26443
26444    /// The wire type corresponding to [`Program`].
26445    #[repr(C)]
26446    pub struct Program<'de> {
26447        pub(crate) table: ::fidl_next::wire::Table<'de>,
26448    }
26449
26450    impl<'de> Drop for Program<'de> {
26451        fn drop(&mut self) {
26452            let _ = self.table.get(1).map(|envelope| unsafe {
26453                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
26454            });
26455
26456            let _ = self.table.get(2).map(|envelope| unsafe {
26457                envelope.read_unchecked::<::fidl_next_common_fuchsia_data::wire::Dictionary<'de>>()
26458            });
26459        }
26460    }
26461
26462    impl ::fidl_next::Constrained for Program<'_> {
26463        type Constraint = ();
26464
26465        fn validate(
26466            _: ::fidl_next::Slot<'_, Self>,
26467            _: Self::Constraint,
26468        ) -> Result<(), ::fidl_next::ValidationError> {
26469            Ok(())
26470        }
26471    }
26472
26473    unsafe impl ::fidl_next::Wire for Program<'static> {
26474        type Narrowed<'de> = Program<'de>;
26475
26476        #[inline]
26477        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
26478            ::fidl_next::munge!(let Self { table } = out);
26479            ::fidl_next::wire::Table::zero_padding(table);
26480        }
26481    }
26482
26483    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for Program<'de>
26484    where
26485        ___D: ::fidl_next::Decoder<'de> + ?Sized,
26486    {
26487        fn decode(
26488            slot: ::fidl_next::Slot<'_, Self>,
26489            decoder: &mut ___D,
26490            _: (),
26491        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
26492            ::fidl_next::munge!(let Self { table } = slot);
26493
26494            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
26495                match ordinal {
26496                    0 => unsafe { ::core::hint::unreachable_unchecked() },
26497
26498                    1 => {
26499                        ::fidl_next::wire::Envelope::decode_as::<
26500                            ___D,
26501                            ::fidl_next::wire::String<'de>,
26502                        >(slot.as_mut(), decoder, 100)?;
26503
26504                        let value = unsafe {
26505                            slot.deref_unchecked()
26506                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
26507                        };
26508
26509                        if value.len() > 100 {
26510                            return Err(::fidl_next::DecodeError::VectorTooLong {
26511                                size: value.len() as u64,
26512                                limit: 100,
26513                            });
26514                        }
26515
26516                        Ok(())
26517                    }
26518
26519                    2 => {
26520                        ::fidl_next::wire::Envelope::decode_as::<
26521                            ___D,
26522                            ::fidl_next_common_fuchsia_data::wire::Dictionary<'de>,
26523                        >(slot.as_mut(), decoder, ())?;
26524
26525                        Ok(())
26526                    }
26527
26528                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
26529                }
26530            })
26531        }
26532    }
26533
26534    impl<'de> Program<'de> {
26535        pub fn runner(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
26536            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
26537        }
26538
26539        pub fn take_runner(&mut self) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
26540            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
26541        }
26542
26543        pub fn info(
26544            &self,
26545        ) -> ::core::option::Option<&::fidl_next_common_fuchsia_data::wire::Dictionary<'de>>
26546        {
26547            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
26548        }
26549
26550        pub fn take_info(
26551            &mut self,
26552        ) -> ::core::option::Option<::fidl_next_common_fuchsia_data::wire::Dictionary<'de>>
26553        {
26554            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
26555        }
26556    }
26557
26558    impl<'de> ::core::fmt::Debug for Program<'de> {
26559        fn fmt(
26560            &self,
26561            f: &mut ::core::fmt::Formatter<'_>,
26562        ) -> ::core::result::Result<(), ::core::fmt::Error> {
26563            f.debug_struct("Program")
26564                .field("runner", &self.runner())
26565                .field("info", &self.info())
26566                .finish()
26567        }
26568    }
26569
26570    impl<'de> ::fidl_next::IntoNatural for Program<'de> {
26571        type Natural = crate::natural::Program;
26572    }
26573
26574    /// The wire type corresponding to [`DebugInfo`].
26575    #[repr(C)]
26576    pub struct DebugInfo<'de> {
26577        pub(crate) table: ::fidl_next::wire::Table<'de>,
26578    }
26579
26580    impl<'de> Drop for DebugInfo<'de> {
26581        fn drop(&mut self) {
26582            let _ = self.table.get(1)
26583                .map(|envelope| unsafe {
26584                    envelope.read_unchecked::<::fidl_next::wire::Vector<'de, ::fidl_next::wire::String<'de>>>()
26585                });
26586        }
26587    }
26588
26589    impl ::fidl_next::Constrained for DebugInfo<'_> {
26590        type Constraint = ();
26591
26592        fn validate(
26593            _: ::fidl_next::Slot<'_, Self>,
26594            _: Self::Constraint,
26595        ) -> Result<(), ::fidl_next::ValidationError> {
26596            Ok(())
26597        }
26598    }
26599
26600    unsafe impl ::fidl_next::Wire for DebugInfo<'static> {
26601        type Narrowed<'de> = DebugInfo<'de>;
26602
26603        #[inline]
26604        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
26605            ::fidl_next::munge!(let Self { table } = out);
26606            ::fidl_next::wire::Table::zero_padding(table);
26607        }
26608    }
26609
26610    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for DebugInfo<'de>
26611    where
26612        ___D: ::fidl_next::Decoder<'de> + ?Sized,
26613    {
26614        fn decode(
26615            slot: ::fidl_next::Slot<'_, Self>,
26616            decoder: &mut ___D,
26617            _: (),
26618        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
26619            ::fidl_next::munge!(let Self { table } = slot);
26620
26621            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
26622                match ordinal {
26623                    0 => unsafe { ::core::hint::unreachable_unchecked() },
26624
26625                    1 => {
26626                        ::fidl_next::wire::Envelope::decode_as::<
26627                            ___D,
26628                            ::fidl_next::wire::Vector<'de, ::fidl_next::wire::String<'de>>,
26629                        >(slot.as_mut(), decoder, (4294967295, 4294967295))?;
26630
26631                        Ok(())
26632                    }
26633
26634                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
26635                }
26636            })
26637        }
26638    }
26639
26640    impl<'de> DebugInfo<'de> {
26641        pub fn manifest_sources(
26642            &self,
26643        ) -> ::core::option::Option<&::fidl_next::wire::Vector<'de, ::fidl_next::wire::String<'de>>>
26644        {
26645            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
26646        }
26647
26648        pub fn take_manifest_sources(
26649            &mut self,
26650        ) -> ::core::option::Option<::fidl_next::wire::Vector<'de, ::fidl_next::wire::String<'de>>>
26651        {
26652            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
26653        }
26654    }
26655
26656    impl<'de> ::core::fmt::Debug for DebugInfo<'de> {
26657        fn fmt(
26658            &self,
26659            f: &mut ::core::fmt::Formatter<'_>,
26660        ) -> ::core::result::Result<(), ::core::fmt::Error> {
26661            f.debug_struct("DebugInfo").field("manifest_sources", &self.manifest_sources()).finish()
26662        }
26663    }
26664
26665    impl<'de> ::fidl_next::IntoNatural for DebugInfo<'de> {
26666        type Natural = crate::natural::DebugInfo;
26667    }
26668
26669    /// The wire type corresponding to [`UseService`].
26670    #[repr(C)]
26671    pub struct UseService<'de> {
26672        pub(crate) table: ::fidl_next::wire::Table<'de>,
26673    }
26674
26675    impl<'de> Drop for UseService<'de> {
26676        fn drop(&mut self) {
26677            let _ = self
26678                .table
26679                .get(1)
26680                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
26681
26682            let _ = self.table.get(2).map(|envelope| unsafe {
26683                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
26684            });
26685
26686            let _ = self.table.get(3).map(|envelope| unsafe {
26687                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
26688            });
26689
26690            let _ = self.table.get(4).map(|envelope| unsafe {
26691                envelope.read_unchecked::<crate::wire::DependencyType>()
26692            });
26693
26694            let _ = self
26695                .table
26696                .get(5)
26697                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Availability>() });
26698
26699            let _ = self.table.get(6).map(|envelope| unsafe {
26700                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
26701            });
26702        }
26703    }
26704
26705    impl ::fidl_next::Constrained for UseService<'_> {
26706        type Constraint = ();
26707
26708        fn validate(
26709            _: ::fidl_next::Slot<'_, Self>,
26710            _: Self::Constraint,
26711        ) -> Result<(), ::fidl_next::ValidationError> {
26712            Ok(())
26713        }
26714    }
26715
26716    unsafe impl ::fidl_next::Wire for UseService<'static> {
26717        type Narrowed<'de> = UseService<'de>;
26718
26719        #[inline]
26720        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
26721            ::fidl_next::munge!(let Self { table } = out);
26722            ::fidl_next::wire::Table::zero_padding(table);
26723        }
26724    }
26725
26726    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for UseService<'de>
26727    where
26728        ___D: ::fidl_next::Decoder<'de> + ?Sized,
26729    {
26730        fn decode(
26731            slot: ::fidl_next::Slot<'_, Self>,
26732            decoder: &mut ___D,
26733            _: (),
26734        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
26735            ::fidl_next::munge!(let Self { table } = slot);
26736
26737            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
26738                match ordinal {
26739                    0 => unsafe { ::core::hint::unreachable_unchecked() },
26740
26741                    1 => {
26742                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
26743                            slot.as_mut(),
26744                            decoder,
26745                            (),
26746                        )?;
26747
26748                        Ok(())
26749                    }
26750
26751                    2 => {
26752                        ::fidl_next::wire::Envelope::decode_as::<
26753                            ___D,
26754                            ::fidl_next::wire::String<'de>,
26755                        >(slot.as_mut(), decoder, 100)?;
26756
26757                        let value = unsafe {
26758                            slot.deref_unchecked()
26759                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
26760                        };
26761
26762                        if value.len() > 100 {
26763                            return Err(::fidl_next::DecodeError::VectorTooLong {
26764                                size: value.len() as u64,
26765                                limit: 100,
26766                            });
26767                        }
26768
26769                        Ok(())
26770                    }
26771
26772                    3 => {
26773                        ::fidl_next::wire::Envelope::decode_as::<
26774                            ___D,
26775                            ::fidl_next::wire::String<'de>,
26776                        >(slot.as_mut(), decoder, 1024)?;
26777
26778                        let value = unsafe {
26779                            slot.deref_unchecked()
26780                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
26781                        };
26782
26783                        if value.len() > 1024 {
26784                            return Err(::fidl_next::DecodeError::VectorTooLong {
26785                                size: value.len() as u64,
26786                                limit: 1024,
26787                            });
26788                        }
26789
26790                        Ok(())
26791                    }
26792
26793                    4 => {
26794                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::DependencyType>(
26795                            slot.as_mut(),
26796                            decoder,
26797                            (),
26798                        )?;
26799
26800                        Ok(())
26801                    }
26802
26803                    5 => {
26804                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Availability>(
26805                            slot.as_mut(),
26806                            decoder,
26807                            (),
26808                        )?;
26809
26810                        Ok(())
26811                    }
26812
26813                    6 => {
26814                        ::fidl_next::wire::Envelope::decode_as::<
26815                            ___D,
26816                            ::fidl_next::wire::String<'de>,
26817                        >(slot.as_mut(), decoder, 1024)?;
26818
26819                        let value = unsafe {
26820                            slot.deref_unchecked()
26821                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
26822                        };
26823
26824                        if value.len() > 1024 {
26825                            return Err(::fidl_next::DecodeError::VectorTooLong {
26826                                size: value.len() as u64,
26827                                limit: 1024,
26828                            });
26829                        }
26830
26831                        Ok(())
26832                    }
26833
26834                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
26835                }
26836            })
26837        }
26838    }
26839
26840    impl<'de> UseService<'de> {
26841        pub fn source(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
26842            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
26843        }
26844
26845        pub fn take_source(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
26846            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
26847        }
26848
26849        pub fn source_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
26850            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
26851        }
26852
26853        pub fn take_source_name(
26854            &mut self,
26855        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
26856            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
26857        }
26858
26859        pub fn target_path(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
26860            unsafe { Some(self.table.get(3)?.deref_unchecked()) }
26861        }
26862
26863        pub fn take_target_path(
26864            &mut self,
26865        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
26866            unsafe { Some(self.table.get_mut(3)?.take_unchecked()) }
26867        }
26868
26869        pub fn dependency_type(&self) -> ::core::option::Option<&crate::wire::DependencyType> {
26870            unsafe { Some(self.table.get(4)?.deref_unchecked()) }
26871        }
26872
26873        pub fn take_dependency_type(
26874            &mut self,
26875        ) -> ::core::option::Option<crate::wire::DependencyType> {
26876            unsafe { Some(self.table.get_mut(4)?.take_unchecked()) }
26877        }
26878
26879        pub fn availability(&self) -> ::core::option::Option<&crate::wire::Availability> {
26880            unsafe { Some(self.table.get(5)?.deref_unchecked()) }
26881        }
26882
26883        pub fn take_availability(&mut self) -> ::core::option::Option<crate::wire::Availability> {
26884            unsafe { Some(self.table.get_mut(5)?.take_unchecked()) }
26885        }
26886
26887        pub fn source_dictionary(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
26888            unsafe { Some(self.table.get(6)?.deref_unchecked()) }
26889        }
26890
26891        pub fn take_source_dictionary(
26892            &mut self,
26893        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
26894            unsafe { Some(self.table.get_mut(6)?.take_unchecked()) }
26895        }
26896    }
26897
26898    impl<'de> ::core::fmt::Debug for UseService<'de> {
26899        fn fmt(
26900            &self,
26901            f: &mut ::core::fmt::Formatter<'_>,
26902        ) -> ::core::result::Result<(), ::core::fmt::Error> {
26903            f.debug_struct("UseService")
26904                .field("source", &self.source())
26905                .field("source_name", &self.source_name())
26906                .field("target_path", &self.target_path())
26907                .field("dependency_type", &self.dependency_type())
26908                .field("availability", &self.availability())
26909                .field("source_dictionary", &self.source_dictionary())
26910                .finish()
26911        }
26912    }
26913
26914    impl<'de> ::fidl_next::IntoNatural for UseService<'de> {
26915        type Natural = crate::natural::UseService;
26916    }
26917
26918    /// The wire type corresponding to [`UseProtocol`].
26919    #[repr(C)]
26920    pub struct UseProtocol<'de> {
26921        pub(crate) table: ::fidl_next::wire::Table<'de>,
26922    }
26923
26924    impl<'de> Drop for UseProtocol<'de> {
26925        fn drop(&mut self) {
26926            let _ = self
26927                .table
26928                .get(1)
26929                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
26930
26931            let _ = self.table.get(2).map(|envelope| unsafe {
26932                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
26933            });
26934
26935            let _ = self.table.get(3).map(|envelope| unsafe {
26936                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
26937            });
26938
26939            let _ = self.table.get(4).map(|envelope| unsafe {
26940                envelope.read_unchecked::<crate::wire::DependencyType>()
26941            });
26942
26943            let _ = self
26944                .table
26945                .get(5)
26946                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Availability>() });
26947
26948            let _ = self.table.get(6).map(|envelope| unsafe {
26949                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
26950            });
26951
26952            let _ = self.table.get(7).map(|envelope| unsafe { envelope.read_unchecked::<u8>() });
26953        }
26954    }
26955
26956    impl ::fidl_next::Constrained for UseProtocol<'_> {
26957        type Constraint = ();
26958
26959        fn validate(
26960            _: ::fidl_next::Slot<'_, Self>,
26961            _: Self::Constraint,
26962        ) -> Result<(), ::fidl_next::ValidationError> {
26963            Ok(())
26964        }
26965    }
26966
26967    unsafe impl ::fidl_next::Wire for UseProtocol<'static> {
26968        type Narrowed<'de> = UseProtocol<'de>;
26969
26970        #[inline]
26971        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
26972            ::fidl_next::munge!(let Self { table } = out);
26973            ::fidl_next::wire::Table::zero_padding(table);
26974        }
26975    }
26976
26977    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for UseProtocol<'de>
26978    where
26979        ___D: ::fidl_next::Decoder<'de> + ?Sized,
26980    {
26981        fn decode(
26982            slot: ::fidl_next::Slot<'_, Self>,
26983            decoder: &mut ___D,
26984            _: (),
26985        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
26986            ::fidl_next::munge!(let Self { table } = slot);
26987
26988            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
26989                match ordinal {
26990                    0 => unsafe { ::core::hint::unreachable_unchecked() },
26991
26992                    1 => {
26993                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
26994                            slot.as_mut(),
26995                            decoder,
26996                            (),
26997                        )?;
26998
26999                        Ok(())
27000                    }
27001
27002                    2 => {
27003                        ::fidl_next::wire::Envelope::decode_as::<
27004                            ___D,
27005                            ::fidl_next::wire::String<'de>,
27006                        >(slot.as_mut(), decoder, 100)?;
27007
27008                        let value = unsafe {
27009                            slot.deref_unchecked()
27010                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
27011                        };
27012
27013                        if value.len() > 100 {
27014                            return Err(::fidl_next::DecodeError::VectorTooLong {
27015                                size: value.len() as u64,
27016                                limit: 100,
27017                            });
27018                        }
27019
27020                        Ok(())
27021                    }
27022
27023                    3 => {
27024                        ::fidl_next::wire::Envelope::decode_as::<
27025                            ___D,
27026                            ::fidl_next::wire::String<'de>,
27027                        >(slot.as_mut(), decoder, 1024)?;
27028
27029                        let value = unsafe {
27030                            slot.deref_unchecked()
27031                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
27032                        };
27033
27034                        if value.len() > 1024 {
27035                            return Err(::fidl_next::DecodeError::VectorTooLong {
27036                                size: value.len() as u64,
27037                                limit: 1024,
27038                            });
27039                        }
27040
27041                        Ok(())
27042                    }
27043
27044                    4 => {
27045                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::DependencyType>(
27046                            slot.as_mut(),
27047                            decoder,
27048                            (),
27049                        )?;
27050
27051                        Ok(())
27052                    }
27053
27054                    5 => {
27055                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Availability>(
27056                            slot.as_mut(),
27057                            decoder,
27058                            (),
27059                        )?;
27060
27061                        Ok(())
27062                    }
27063
27064                    6 => {
27065                        ::fidl_next::wire::Envelope::decode_as::<
27066                            ___D,
27067                            ::fidl_next::wire::String<'de>,
27068                        >(slot.as_mut(), decoder, 1024)?;
27069
27070                        let value = unsafe {
27071                            slot.deref_unchecked()
27072                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
27073                        };
27074
27075                        if value.len() > 1024 {
27076                            return Err(::fidl_next::DecodeError::VectorTooLong {
27077                                size: value.len() as u64,
27078                                limit: 1024,
27079                            });
27080                        }
27081
27082                        Ok(())
27083                    }
27084
27085                    7 => {
27086                        ::fidl_next::wire::Envelope::decode_as::<___D, u8>(
27087                            slot.as_mut(),
27088                            decoder,
27089                            (),
27090                        )?;
27091
27092                        Ok(())
27093                    }
27094
27095                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
27096                }
27097            })
27098        }
27099    }
27100
27101    impl<'de> UseProtocol<'de> {
27102        pub fn source(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
27103            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
27104        }
27105
27106        pub fn take_source(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
27107            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
27108        }
27109
27110        pub fn source_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
27111            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
27112        }
27113
27114        pub fn take_source_name(
27115            &mut self,
27116        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
27117            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
27118        }
27119
27120        pub fn target_path(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
27121            unsafe { Some(self.table.get(3)?.deref_unchecked()) }
27122        }
27123
27124        pub fn take_target_path(
27125            &mut self,
27126        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
27127            unsafe { Some(self.table.get_mut(3)?.take_unchecked()) }
27128        }
27129
27130        pub fn dependency_type(&self) -> ::core::option::Option<&crate::wire::DependencyType> {
27131            unsafe { Some(self.table.get(4)?.deref_unchecked()) }
27132        }
27133
27134        pub fn take_dependency_type(
27135            &mut self,
27136        ) -> ::core::option::Option<crate::wire::DependencyType> {
27137            unsafe { Some(self.table.get_mut(4)?.take_unchecked()) }
27138        }
27139
27140        pub fn availability(&self) -> ::core::option::Option<&crate::wire::Availability> {
27141            unsafe { Some(self.table.get(5)?.deref_unchecked()) }
27142        }
27143
27144        pub fn take_availability(&mut self) -> ::core::option::Option<crate::wire::Availability> {
27145            unsafe { Some(self.table.get_mut(5)?.take_unchecked()) }
27146        }
27147
27148        pub fn source_dictionary(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
27149            unsafe { Some(self.table.get(6)?.deref_unchecked()) }
27150        }
27151
27152        pub fn take_source_dictionary(
27153            &mut self,
27154        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
27155            unsafe { Some(self.table.get_mut(6)?.take_unchecked()) }
27156        }
27157
27158        pub fn numbered_handle(&self) -> ::core::option::Option<&u8> {
27159            unsafe { Some(self.table.get(7)?.deref_unchecked()) }
27160        }
27161
27162        pub fn take_numbered_handle(&mut self) -> ::core::option::Option<u8> {
27163            unsafe { Some(self.table.get_mut(7)?.take_unchecked()) }
27164        }
27165    }
27166
27167    impl<'de> ::core::fmt::Debug for UseProtocol<'de> {
27168        fn fmt(
27169            &self,
27170            f: &mut ::core::fmt::Formatter<'_>,
27171        ) -> ::core::result::Result<(), ::core::fmt::Error> {
27172            f.debug_struct("UseProtocol")
27173                .field("source", &self.source())
27174                .field("source_name", &self.source_name())
27175                .field("target_path", &self.target_path())
27176                .field("dependency_type", &self.dependency_type())
27177                .field("availability", &self.availability())
27178                .field("source_dictionary", &self.source_dictionary())
27179                .field("numbered_handle", &self.numbered_handle())
27180                .finish()
27181        }
27182    }
27183
27184    impl<'de> ::fidl_next::IntoNatural for UseProtocol<'de> {
27185        type Natural = crate::natural::UseProtocol;
27186    }
27187
27188    /// The wire type corresponding to [`UseDirectory`].
27189    #[repr(C)]
27190    pub struct UseDirectory<'de> {
27191        pub(crate) table: ::fidl_next::wire::Table<'de>,
27192    }
27193
27194    impl<'de> Drop for UseDirectory<'de> {
27195        fn drop(&mut self) {
27196            let _ = self
27197                .table
27198                .get(1)
27199                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
27200
27201            let _ = self.table.get(2).map(|envelope| unsafe {
27202                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
27203            });
27204
27205            let _ = self.table.get(3).map(|envelope| unsafe {
27206                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
27207            });
27208
27209            let _ = self.table.get(4).map(|envelope| unsafe {
27210                envelope.read_unchecked::<::fidl_next_common_fuchsia_io::wire::Operations>()
27211            });
27212
27213            let _ = self.table.get(5).map(|envelope| unsafe {
27214                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
27215            });
27216
27217            let _ = self.table.get(6).map(|envelope| unsafe {
27218                envelope.read_unchecked::<crate::wire::DependencyType>()
27219            });
27220
27221            let _ = self
27222                .table
27223                .get(7)
27224                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Availability>() });
27225
27226            let _ = self.table.get(8).map(|envelope| unsafe {
27227                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
27228            });
27229        }
27230    }
27231
27232    impl ::fidl_next::Constrained for UseDirectory<'_> {
27233        type Constraint = ();
27234
27235        fn validate(
27236            _: ::fidl_next::Slot<'_, Self>,
27237            _: Self::Constraint,
27238        ) -> Result<(), ::fidl_next::ValidationError> {
27239            Ok(())
27240        }
27241    }
27242
27243    unsafe impl ::fidl_next::Wire for UseDirectory<'static> {
27244        type Narrowed<'de> = UseDirectory<'de>;
27245
27246        #[inline]
27247        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
27248            ::fidl_next::munge!(let Self { table } = out);
27249            ::fidl_next::wire::Table::zero_padding(table);
27250        }
27251    }
27252
27253    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for UseDirectory<'de>
27254    where
27255        ___D: ::fidl_next::Decoder<'de> + ?Sized,
27256    {
27257        fn decode(
27258            slot: ::fidl_next::Slot<'_, Self>,
27259            decoder: &mut ___D,
27260            _: (),
27261        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
27262            ::fidl_next::munge!(let Self { table } = slot);
27263
27264            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
27265                match ordinal {
27266                    0 => unsafe { ::core::hint::unreachable_unchecked() },
27267
27268                    1 => {
27269                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
27270                            slot.as_mut(),
27271                            decoder,
27272                            (),
27273                        )?;
27274
27275                        Ok(())
27276                    }
27277
27278                    2 => {
27279                        ::fidl_next::wire::Envelope::decode_as::<
27280                            ___D,
27281                            ::fidl_next::wire::String<'de>,
27282                        >(slot.as_mut(), decoder, 100)?;
27283
27284                        let value = unsafe {
27285                            slot.deref_unchecked()
27286                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
27287                        };
27288
27289                        if value.len() > 100 {
27290                            return Err(::fidl_next::DecodeError::VectorTooLong {
27291                                size: value.len() as u64,
27292                                limit: 100,
27293                            });
27294                        }
27295
27296                        Ok(())
27297                    }
27298
27299                    3 => {
27300                        ::fidl_next::wire::Envelope::decode_as::<
27301                            ___D,
27302                            ::fidl_next::wire::String<'de>,
27303                        >(slot.as_mut(), decoder, 1024)?;
27304
27305                        let value = unsafe {
27306                            slot.deref_unchecked()
27307                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
27308                        };
27309
27310                        if value.len() > 1024 {
27311                            return Err(::fidl_next::DecodeError::VectorTooLong {
27312                                size: value.len() as u64,
27313                                limit: 1024,
27314                            });
27315                        }
27316
27317                        Ok(())
27318                    }
27319
27320                    4 => {
27321                        ::fidl_next::wire::Envelope::decode_as::<
27322                            ___D,
27323                            ::fidl_next_common_fuchsia_io::wire::Operations,
27324                        >(slot.as_mut(), decoder, ())?;
27325
27326                        Ok(())
27327                    }
27328
27329                    5 => {
27330                        ::fidl_next::wire::Envelope::decode_as::<
27331                            ___D,
27332                            ::fidl_next::wire::String<'de>,
27333                        >(slot.as_mut(), decoder, 1024)?;
27334
27335                        let value = unsafe {
27336                            slot.deref_unchecked()
27337                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
27338                        };
27339
27340                        if value.len() > 1024 {
27341                            return Err(::fidl_next::DecodeError::VectorTooLong {
27342                                size: value.len() as u64,
27343                                limit: 1024,
27344                            });
27345                        }
27346
27347                        Ok(())
27348                    }
27349
27350                    6 => {
27351                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::DependencyType>(
27352                            slot.as_mut(),
27353                            decoder,
27354                            (),
27355                        )?;
27356
27357                        Ok(())
27358                    }
27359
27360                    7 => {
27361                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Availability>(
27362                            slot.as_mut(),
27363                            decoder,
27364                            (),
27365                        )?;
27366
27367                        Ok(())
27368                    }
27369
27370                    8 => {
27371                        ::fidl_next::wire::Envelope::decode_as::<
27372                            ___D,
27373                            ::fidl_next::wire::String<'de>,
27374                        >(slot.as_mut(), decoder, 1024)?;
27375
27376                        let value = unsafe {
27377                            slot.deref_unchecked()
27378                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
27379                        };
27380
27381                        if value.len() > 1024 {
27382                            return Err(::fidl_next::DecodeError::VectorTooLong {
27383                                size: value.len() as u64,
27384                                limit: 1024,
27385                            });
27386                        }
27387
27388                        Ok(())
27389                    }
27390
27391                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
27392                }
27393            })
27394        }
27395    }
27396
27397    impl<'de> UseDirectory<'de> {
27398        pub fn source(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
27399            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
27400        }
27401
27402        pub fn take_source(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
27403            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
27404        }
27405
27406        pub fn source_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
27407            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
27408        }
27409
27410        pub fn take_source_name(
27411            &mut self,
27412        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
27413            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
27414        }
27415
27416        pub fn target_path(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
27417            unsafe { Some(self.table.get(3)?.deref_unchecked()) }
27418        }
27419
27420        pub fn take_target_path(
27421            &mut self,
27422        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
27423            unsafe { Some(self.table.get_mut(3)?.take_unchecked()) }
27424        }
27425
27426        pub fn rights(
27427            &self,
27428        ) -> ::core::option::Option<&::fidl_next_common_fuchsia_io::wire::Operations> {
27429            unsafe { Some(self.table.get(4)?.deref_unchecked()) }
27430        }
27431
27432        pub fn take_rights(
27433            &mut self,
27434        ) -> ::core::option::Option<::fidl_next_common_fuchsia_io::wire::Operations> {
27435            unsafe { Some(self.table.get_mut(4)?.take_unchecked()) }
27436        }
27437
27438        pub fn subdir(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
27439            unsafe { Some(self.table.get(5)?.deref_unchecked()) }
27440        }
27441
27442        pub fn take_subdir(&mut self) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
27443            unsafe { Some(self.table.get_mut(5)?.take_unchecked()) }
27444        }
27445
27446        pub fn dependency_type(&self) -> ::core::option::Option<&crate::wire::DependencyType> {
27447            unsafe { Some(self.table.get(6)?.deref_unchecked()) }
27448        }
27449
27450        pub fn take_dependency_type(
27451            &mut self,
27452        ) -> ::core::option::Option<crate::wire::DependencyType> {
27453            unsafe { Some(self.table.get_mut(6)?.take_unchecked()) }
27454        }
27455
27456        pub fn availability(&self) -> ::core::option::Option<&crate::wire::Availability> {
27457            unsafe { Some(self.table.get(7)?.deref_unchecked()) }
27458        }
27459
27460        pub fn take_availability(&mut self) -> ::core::option::Option<crate::wire::Availability> {
27461            unsafe { Some(self.table.get_mut(7)?.take_unchecked()) }
27462        }
27463
27464        pub fn source_dictionary(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
27465            unsafe { Some(self.table.get(8)?.deref_unchecked()) }
27466        }
27467
27468        pub fn take_source_dictionary(
27469            &mut self,
27470        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
27471            unsafe { Some(self.table.get_mut(8)?.take_unchecked()) }
27472        }
27473    }
27474
27475    impl<'de> ::core::fmt::Debug for UseDirectory<'de> {
27476        fn fmt(
27477            &self,
27478            f: &mut ::core::fmt::Formatter<'_>,
27479        ) -> ::core::result::Result<(), ::core::fmt::Error> {
27480            f.debug_struct("UseDirectory")
27481                .field("source", &self.source())
27482                .field("source_name", &self.source_name())
27483                .field("target_path", &self.target_path())
27484                .field("rights", &self.rights())
27485                .field("subdir", &self.subdir())
27486                .field("dependency_type", &self.dependency_type())
27487                .field("availability", &self.availability())
27488                .field("source_dictionary", &self.source_dictionary())
27489                .finish()
27490        }
27491    }
27492
27493    impl<'de> ::fidl_next::IntoNatural for UseDirectory<'de> {
27494        type Natural = crate::natural::UseDirectory;
27495    }
27496
27497    /// The wire type corresponding to [`UseEventStream`].
27498    #[repr(C)]
27499    pub struct UseEventStream<'de> {
27500        pub(crate) table: ::fidl_next::wire::Table<'de>,
27501    }
27502
27503    impl<'de> Drop for UseEventStream<'de> {
27504        fn drop(&mut self) {
27505            let _ = self.table.get(1).map(|envelope| unsafe {
27506                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
27507            });
27508
27509            let _ = self
27510                .table
27511                .get(2)
27512                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
27513
27514            let _ = self.table.get(3).map(|envelope| unsafe {
27515                envelope.read_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::Ref<'de>>>()
27516            });
27517
27518            let _ = self.table.get(4).map(|envelope| unsafe {
27519                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
27520            });
27521
27522            let _ = self
27523                .table
27524                .get(5)
27525                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Availability>() });
27526
27527            let _ = self.table.get(6).map(|envelope| unsafe {
27528                envelope.read_unchecked::<::fidl_next_common_fuchsia_data::wire::Dictionary<'de>>()
27529            });
27530        }
27531    }
27532
27533    impl ::fidl_next::Constrained for UseEventStream<'_> {
27534        type Constraint = ();
27535
27536        fn validate(
27537            _: ::fidl_next::Slot<'_, Self>,
27538            _: Self::Constraint,
27539        ) -> Result<(), ::fidl_next::ValidationError> {
27540            Ok(())
27541        }
27542    }
27543
27544    unsafe impl ::fidl_next::Wire for UseEventStream<'static> {
27545        type Narrowed<'de> = UseEventStream<'de>;
27546
27547        #[inline]
27548        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
27549            ::fidl_next::munge!(let Self { table } = out);
27550            ::fidl_next::wire::Table::zero_padding(table);
27551        }
27552    }
27553
27554    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for UseEventStream<'de>
27555    where
27556        ___D: ::fidl_next::Decoder<'de> + ?Sized,
27557    {
27558        fn decode(
27559            slot: ::fidl_next::Slot<'_, Self>,
27560            decoder: &mut ___D,
27561            _: (),
27562        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
27563            ::fidl_next::munge!(let Self { table } = slot);
27564
27565            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
27566                match ordinal {
27567                    0 => unsafe { ::core::hint::unreachable_unchecked() },
27568
27569                    1 => {
27570                        ::fidl_next::wire::Envelope::decode_as::<
27571                            ___D,
27572                            ::fidl_next::wire::String<'de>,
27573                        >(slot.as_mut(), decoder, 100)?;
27574
27575                        let value = unsafe {
27576                            slot.deref_unchecked()
27577                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
27578                        };
27579
27580                        if value.len() > 100 {
27581                            return Err(::fidl_next::DecodeError::VectorTooLong {
27582                                size: value.len() as u64,
27583                                limit: 100,
27584                            });
27585                        }
27586
27587                        Ok(())
27588                    }
27589
27590                    2 => {
27591                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
27592                            slot.as_mut(),
27593                            decoder,
27594                            (),
27595                        )?;
27596
27597                        Ok(())
27598                    }
27599
27600                    3 => {
27601                        ::fidl_next::wire::Envelope::decode_as::<
27602                            ___D,
27603                            ::fidl_next::wire::Vector<'de, crate::wire::Ref<'de>>,
27604                        >(slot.as_mut(), decoder, (4294967295, ()))?;
27605
27606                        Ok(())
27607                    }
27608
27609                    4 => {
27610                        ::fidl_next::wire::Envelope::decode_as::<
27611                            ___D,
27612                            ::fidl_next::wire::String<'de>,
27613                        >(slot.as_mut(), decoder, 100)?;
27614
27615                        let value = unsafe {
27616                            slot.deref_unchecked()
27617                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
27618                        };
27619
27620                        if value.len() > 100 {
27621                            return Err(::fidl_next::DecodeError::VectorTooLong {
27622                                size: value.len() as u64,
27623                                limit: 100,
27624                            });
27625                        }
27626
27627                        Ok(())
27628                    }
27629
27630                    5 => {
27631                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Availability>(
27632                            slot.as_mut(),
27633                            decoder,
27634                            (),
27635                        )?;
27636
27637                        Ok(())
27638                    }
27639
27640                    6 => {
27641                        ::fidl_next::wire::Envelope::decode_as::<
27642                            ___D,
27643                            ::fidl_next_common_fuchsia_data::wire::Dictionary<'de>,
27644                        >(slot.as_mut(), decoder, ())?;
27645
27646                        Ok(())
27647                    }
27648
27649                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
27650                }
27651            })
27652        }
27653    }
27654
27655    impl<'de> UseEventStream<'de> {
27656        pub fn source_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
27657            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
27658        }
27659
27660        pub fn take_source_name(
27661            &mut self,
27662        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
27663            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
27664        }
27665
27666        pub fn source(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
27667            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
27668        }
27669
27670        pub fn take_source(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
27671            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
27672        }
27673
27674        pub fn scope(
27675            &self,
27676        ) -> ::core::option::Option<&::fidl_next::wire::Vector<'de, crate::wire::Ref<'de>>>
27677        {
27678            unsafe { Some(self.table.get(3)?.deref_unchecked()) }
27679        }
27680
27681        pub fn take_scope(
27682            &mut self,
27683        ) -> ::core::option::Option<::fidl_next::wire::Vector<'de, crate::wire::Ref<'de>>> {
27684            unsafe { Some(self.table.get_mut(3)?.take_unchecked()) }
27685        }
27686
27687        pub fn target_path(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
27688            unsafe { Some(self.table.get(4)?.deref_unchecked()) }
27689        }
27690
27691        pub fn take_target_path(
27692            &mut self,
27693        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
27694            unsafe { Some(self.table.get_mut(4)?.take_unchecked()) }
27695        }
27696
27697        pub fn availability(&self) -> ::core::option::Option<&crate::wire::Availability> {
27698            unsafe { Some(self.table.get(5)?.deref_unchecked()) }
27699        }
27700
27701        pub fn take_availability(&mut self) -> ::core::option::Option<crate::wire::Availability> {
27702            unsafe { Some(self.table.get_mut(5)?.take_unchecked()) }
27703        }
27704
27705        pub fn filter(
27706            &self,
27707        ) -> ::core::option::Option<&::fidl_next_common_fuchsia_data::wire::Dictionary<'de>>
27708        {
27709            unsafe { Some(self.table.get(6)?.deref_unchecked()) }
27710        }
27711
27712        pub fn take_filter(
27713            &mut self,
27714        ) -> ::core::option::Option<::fidl_next_common_fuchsia_data::wire::Dictionary<'de>>
27715        {
27716            unsafe { Some(self.table.get_mut(6)?.take_unchecked()) }
27717        }
27718    }
27719
27720    impl<'de> ::core::fmt::Debug for UseEventStream<'de> {
27721        fn fmt(
27722            &self,
27723            f: &mut ::core::fmt::Formatter<'_>,
27724        ) -> ::core::result::Result<(), ::core::fmt::Error> {
27725            f.debug_struct("UseEventStream")
27726                .field("source_name", &self.source_name())
27727                .field("source", &self.source())
27728                .field("scope", &self.scope())
27729                .field("target_path", &self.target_path())
27730                .field("availability", &self.availability())
27731                .field("filter", &self.filter())
27732                .finish()
27733        }
27734    }
27735
27736    impl<'de> ::fidl_next::IntoNatural for UseEventStream<'de> {
27737        type Natural = crate::natural::UseEventStream;
27738    }
27739
27740    /// The wire type corresponding to [`UseRunner`].
27741    #[repr(C)]
27742    pub struct UseRunner<'de> {
27743        pub(crate) table: ::fidl_next::wire::Table<'de>,
27744    }
27745
27746    impl<'de> Drop for UseRunner<'de> {
27747        fn drop(&mut self) {
27748            let _ = self
27749                .table
27750                .get(1)
27751                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
27752
27753            let _ = self.table.get(2).map(|envelope| unsafe {
27754                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
27755            });
27756
27757            let _ = self.table.get(3).map(|envelope| unsafe {
27758                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
27759            });
27760        }
27761    }
27762
27763    impl ::fidl_next::Constrained for UseRunner<'_> {
27764        type Constraint = ();
27765
27766        fn validate(
27767            _: ::fidl_next::Slot<'_, Self>,
27768            _: Self::Constraint,
27769        ) -> Result<(), ::fidl_next::ValidationError> {
27770            Ok(())
27771        }
27772    }
27773
27774    unsafe impl ::fidl_next::Wire for UseRunner<'static> {
27775        type Narrowed<'de> = UseRunner<'de>;
27776
27777        #[inline]
27778        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
27779            ::fidl_next::munge!(let Self { table } = out);
27780            ::fidl_next::wire::Table::zero_padding(table);
27781        }
27782    }
27783
27784    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for UseRunner<'de>
27785    where
27786        ___D: ::fidl_next::Decoder<'de> + ?Sized,
27787    {
27788        fn decode(
27789            slot: ::fidl_next::Slot<'_, Self>,
27790            decoder: &mut ___D,
27791            _: (),
27792        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
27793            ::fidl_next::munge!(let Self { table } = slot);
27794
27795            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
27796                match ordinal {
27797                    0 => unsafe { ::core::hint::unreachable_unchecked() },
27798
27799                    1 => {
27800                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
27801                            slot.as_mut(),
27802                            decoder,
27803                            (),
27804                        )?;
27805
27806                        Ok(())
27807                    }
27808
27809                    2 => {
27810                        ::fidl_next::wire::Envelope::decode_as::<
27811                            ___D,
27812                            ::fidl_next::wire::String<'de>,
27813                        >(slot.as_mut(), decoder, 100)?;
27814
27815                        let value = unsafe {
27816                            slot.deref_unchecked()
27817                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
27818                        };
27819
27820                        if value.len() > 100 {
27821                            return Err(::fidl_next::DecodeError::VectorTooLong {
27822                                size: value.len() as u64,
27823                                limit: 100,
27824                            });
27825                        }
27826
27827                        Ok(())
27828                    }
27829
27830                    3 => {
27831                        ::fidl_next::wire::Envelope::decode_as::<
27832                            ___D,
27833                            ::fidl_next::wire::String<'de>,
27834                        >(slot.as_mut(), decoder, 1024)?;
27835
27836                        let value = unsafe {
27837                            slot.deref_unchecked()
27838                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
27839                        };
27840
27841                        if value.len() > 1024 {
27842                            return Err(::fidl_next::DecodeError::VectorTooLong {
27843                                size: value.len() as u64,
27844                                limit: 1024,
27845                            });
27846                        }
27847
27848                        Ok(())
27849                    }
27850
27851                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
27852                }
27853            })
27854        }
27855    }
27856
27857    impl<'de> UseRunner<'de> {
27858        pub fn source(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
27859            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
27860        }
27861
27862        pub fn take_source(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
27863            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
27864        }
27865
27866        pub fn source_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
27867            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
27868        }
27869
27870        pub fn take_source_name(
27871            &mut self,
27872        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
27873            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
27874        }
27875
27876        pub fn source_dictionary(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
27877            unsafe { Some(self.table.get(3)?.deref_unchecked()) }
27878        }
27879
27880        pub fn take_source_dictionary(
27881            &mut self,
27882        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
27883            unsafe { Some(self.table.get_mut(3)?.take_unchecked()) }
27884        }
27885    }
27886
27887    impl<'de> ::core::fmt::Debug for UseRunner<'de> {
27888        fn fmt(
27889            &self,
27890            f: &mut ::core::fmt::Formatter<'_>,
27891        ) -> ::core::result::Result<(), ::core::fmt::Error> {
27892            f.debug_struct("UseRunner")
27893                .field("source", &self.source())
27894                .field("source_name", &self.source_name())
27895                .field("source_dictionary", &self.source_dictionary())
27896                .finish()
27897        }
27898    }
27899
27900    impl<'de> ::fidl_next::IntoNatural for UseRunner<'de> {
27901        type Natural = crate::natural::UseRunner;
27902    }
27903
27904    /// The wire type corresponding to [`UseConfiguration`].
27905    #[repr(C)]
27906    pub struct UseConfiguration<'de> {
27907        pub(crate) table: ::fidl_next::wire::Table<'de>,
27908    }
27909
27910    impl<'de> Drop for UseConfiguration<'de> {
27911        fn drop(&mut self) {
27912            let _ = self
27913                .table
27914                .get(1)
27915                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
27916
27917            let _ = self.table.get(2).map(|envelope| unsafe {
27918                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
27919            });
27920
27921            let _ = self.table.get(3).map(|envelope| unsafe {
27922                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
27923            });
27924
27925            let _ = self
27926                .table
27927                .get(4)
27928                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Availability>() });
27929
27930            let _ = self.table.get(5).map(|envelope| unsafe {
27931                envelope.read_unchecked::<crate::wire::ConfigType<'de>>()
27932            });
27933
27934            let _ = self.table.get(6).map(|envelope| unsafe {
27935                envelope.read_unchecked::<crate::wire::ConfigValue<'de>>()
27936            });
27937
27938            let _ = self.table.get(7).map(|envelope| unsafe {
27939                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
27940            });
27941        }
27942    }
27943
27944    impl ::fidl_next::Constrained for UseConfiguration<'_> {
27945        type Constraint = ();
27946
27947        fn validate(
27948            _: ::fidl_next::Slot<'_, Self>,
27949            _: Self::Constraint,
27950        ) -> Result<(), ::fidl_next::ValidationError> {
27951            Ok(())
27952        }
27953    }
27954
27955    unsafe impl ::fidl_next::Wire for UseConfiguration<'static> {
27956        type Narrowed<'de> = UseConfiguration<'de>;
27957
27958        #[inline]
27959        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
27960            ::fidl_next::munge!(let Self { table } = out);
27961            ::fidl_next::wire::Table::zero_padding(table);
27962        }
27963    }
27964
27965    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for UseConfiguration<'de>
27966    where
27967        ___D: ::fidl_next::Decoder<'de> + ?Sized,
27968    {
27969        fn decode(
27970            slot: ::fidl_next::Slot<'_, Self>,
27971            decoder: &mut ___D,
27972            _: (),
27973        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
27974            ::fidl_next::munge!(let Self { table } = slot);
27975
27976            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
27977                match ordinal {
27978                    0 => unsafe { ::core::hint::unreachable_unchecked() },
27979
27980                    1 => {
27981                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
27982                            slot.as_mut(),
27983                            decoder,
27984                            (),
27985                        )?;
27986
27987                        Ok(())
27988                    }
27989
27990                    2 => {
27991                        ::fidl_next::wire::Envelope::decode_as::<
27992                            ___D,
27993                            ::fidl_next::wire::String<'de>,
27994                        >(slot.as_mut(), decoder, 100)?;
27995
27996                        let value = unsafe {
27997                            slot.deref_unchecked()
27998                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
27999                        };
28000
28001                        if value.len() > 100 {
28002                            return Err(::fidl_next::DecodeError::VectorTooLong {
28003                                size: value.len() as u64,
28004                                limit: 100,
28005                            });
28006                        }
28007
28008                        Ok(())
28009                    }
28010
28011                    3 => {
28012                        ::fidl_next::wire::Envelope::decode_as::<
28013                            ___D,
28014                            ::fidl_next::wire::String<'de>,
28015                        >(slot.as_mut(), decoder, 100)?;
28016
28017                        let value = unsafe {
28018                            slot.deref_unchecked()
28019                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
28020                        };
28021
28022                        if value.len() > 100 {
28023                            return Err(::fidl_next::DecodeError::VectorTooLong {
28024                                size: value.len() as u64,
28025                                limit: 100,
28026                            });
28027                        }
28028
28029                        Ok(())
28030                    }
28031
28032                    4 => {
28033                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Availability>(
28034                            slot.as_mut(),
28035                            decoder,
28036                            (),
28037                        )?;
28038
28039                        Ok(())
28040                    }
28041
28042                    5 => {
28043                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::ConfigType<'de>>(
28044                            slot.as_mut(),
28045                            decoder,
28046                            (),
28047                        )?;
28048
28049                        Ok(())
28050                    }
28051
28052                    6 => {
28053                        ::fidl_next::wire::Envelope::decode_as::<
28054                            ___D,
28055                            crate::wire::ConfigValue<'de>,
28056                        >(slot.as_mut(), decoder, ())?;
28057
28058                        Ok(())
28059                    }
28060
28061                    7 => {
28062                        ::fidl_next::wire::Envelope::decode_as::<
28063                            ___D,
28064                            ::fidl_next::wire::String<'de>,
28065                        >(slot.as_mut(), decoder, 1024)?;
28066
28067                        let value = unsafe {
28068                            slot.deref_unchecked()
28069                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
28070                        };
28071
28072                        if value.len() > 1024 {
28073                            return Err(::fidl_next::DecodeError::VectorTooLong {
28074                                size: value.len() as u64,
28075                                limit: 1024,
28076                            });
28077                        }
28078
28079                        Ok(())
28080                    }
28081
28082                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
28083                }
28084            })
28085        }
28086    }
28087
28088    impl<'de> UseConfiguration<'de> {
28089        pub fn source(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
28090            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
28091        }
28092
28093        pub fn take_source(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
28094            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
28095        }
28096
28097        pub fn source_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
28098            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
28099        }
28100
28101        pub fn take_source_name(
28102            &mut self,
28103        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
28104            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
28105        }
28106
28107        pub fn target_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
28108            unsafe { Some(self.table.get(3)?.deref_unchecked()) }
28109        }
28110
28111        pub fn take_target_name(
28112            &mut self,
28113        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
28114            unsafe { Some(self.table.get_mut(3)?.take_unchecked()) }
28115        }
28116
28117        pub fn availability(&self) -> ::core::option::Option<&crate::wire::Availability> {
28118            unsafe { Some(self.table.get(4)?.deref_unchecked()) }
28119        }
28120
28121        pub fn take_availability(&mut self) -> ::core::option::Option<crate::wire::Availability> {
28122            unsafe { Some(self.table.get_mut(4)?.take_unchecked()) }
28123        }
28124
28125        pub fn type_(&self) -> ::core::option::Option<&crate::wire::ConfigType<'de>> {
28126            unsafe { Some(self.table.get(5)?.deref_unchecked()) }
28127        }
28128
28129        pub fn take_type_(&mut self) -> ::core::option::Option<crate::wire::ConfigType<'de>> {
28130            unsafe { Some(self.table.get_mut(5)?.take_unchecked()) }
28131        }
28132
28133        pub fn default(&self) -> ::core::option::Option<&crate::wire::ConfigValue<'de>> {
28134            unsafe { Some(self.table.get(6)?.deref_unchecked()) }
28135        }
28136
28137        pub fn take_default(&mut self) -> ::core::option::Option<crate::wire::ConfigValue<'de>> {
28138            unsafe { Some(self.table.get_mut(6)?.take_unchecked()) }
28139        }
28140
28141        pub fn source_dictionary(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
28142            unsafe { Some(self.table.get(7)?.deref_unchecked()) }
28143        }
28144
28145        pub fn take_source_dictionary(
28146            &mut self,
28147        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
28148            unsafe { Some(self.table.get_mut(7)?.take_unchecked()) }
28149        }
28150    }
28151
28152    impl<'de> ::core::fmt::Debug for UseConfiguration<'de> {
28153        fn fmt(
28154            &self,
28155            f: &mut ::core::fmt::Formatter<'_>,
28156        ) -> ::core::result::Result<(), ::core::fmt::Error> {
28157            f.debug_struct("UseConfiguration")
28158                .field("source", &self.source())
28159                .field("source_name", &self.source_name())
28160                .field("target_name", &self.target_name())
28161                .field("availability", &self.availability())
28162                .field("type_", &self.type_())
28163                .field("default", &self.default())
28164                .field("source_dictionary", &self.source_dictionary())
28165                .finish()
28166        }
28167    }
28168
28169    impl<'de> ::fidl_next::IntoNatural for UseConfiguration<'de> {
28170        type Natural = crate::natural::UseConfiguration;
28171    }
28172
28173    /// The wire type corresponding to [`UseDictionary`].
28174    #[repr(C)]
28175    pub struct UseDictionary<'de> {
28176        pub(crate) table: ::fidl_next::wire::Table<'de>,
28177    }
28178
28179    impl<'de> Drop for UseDictionary<'de> {
28180        fn drop(&mut self) {
28181            let _ = self
28182                .table
28183                .get(1)
28184                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
28185
28186            let _ = self.table.get(2).map(|envelope| unsafe {
28187                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
28188            });
28189
28190            let _ = self.table.get(3).map(|envelope| unsafe {
28191                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
28192            });
28193
28194            let _ = self.table.get(6).map(|envelope| unsafe {
28195                envelope.read_unchecked::<crate::wire::DependencyType>()
28196            });
28197
28198            let _ = self
28199                .table
28200                .get(7)
28201                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Availability>() });
28202
28203            let _ = self.table.get(8).map(|envelope| unsafe {
28204                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
28205            });
28206        }
28207    }
28208
28209    impl ::fidl_next::Constrained for UseDictionary<'_> {
28210        type Constraint = ();
28211
28212        fn validate(
28213            _: ::fidl_next::Slot<'_, Self>,
28214            _: Self::Constraint,
28215        ) -> Result<(), ::fidl_next::ValidationError> {
28216            Ok(())
28217        }
28218    }
28219
28220    unsafe impl ::fidl_next::Wire for UseDictionary<'static> {
28221        type Narrowed<'de> = UseDictionary<'de>;
28222
28223        #[inline]
28224        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
28225            ::fidl_next::munge!(let Self { table } = out);
28226            ::fidl_next::wire::Table::zero_padding(table);
28227        }
28228    }
28229
28230    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for UseDictionary<'de>
28231    where
28232        ___D: ::fidl_next::Decoder<'de> + ?Sized,
28233    {
28234        fn decode(
28235            slot: ::fidl_next::Slot<'_, Self>,
28236            decoder: &mut ___D,
28237            _: (),
28238        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
28239            ::fidl_next::munge!(let Self { table } = slot);
28240
28241            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
28242                match ordinal {
28243                    0 => unsafe { ::core::hint::unreachable_unchecked() },
28244
28245                    1 => {
28246                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
28247                            slot.as_mut(),
28248                            decoder,
28249                            (),
28250                        )?;
28251
28252                        Ok(())
28253                    }
28254
28255                    2 => {
28256                        ::fidl_next::wire::Envelope::decode_as::<
28257                            ___D,
28258                            ::fidl_next::wire::String<'de>,
28259                        >(slot.as_mut(), decoder, 100)?;
28260
28261                        let value = unsafe {
28262                            slot.deref_unchecked()
28263                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
28264                        };
28265
28266                        if value.len() > 100 {
28267                            return Err(::fidl_next::DecodeError::VectorTooLong {
28268                                size: value.len() as u64,
28269                                limit: 100,
28270                            });
28271                        }
28272
28273                        Ok(())
28274                    }
28275
28276                    3 => {
28277                        ::fidl_next::wire::Envelope::decode_as::<
28278                            ___D,
28279                            ::fidl_next::wire::String<'de>,
28280                        >(slot.as_mut(), decoder, 1024)?;
28281
28282                        let value = unsafe {
28283                            slot.deref_unchecked()
28284                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
28285                        };
28286
28287                        if value.len() > 1024 {
28288                            return Err(::fidl_next::DecodeError::VectorTooLong {
28289                                size: value.len() as u64,
28290                                limit: 1024,
28291                            });
28292                        }
28293
28294                        Ok(())
28295                    }
28296
28297                    6 => {
28298                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::DependencyType>(
28299                            slot.as_mut(),
28300                            decoder,
28301                            (),
28302                        )?;
28303
28304                        Ok(())
28305                    }
28306
28307                    7 => {
28308                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Availability>(
28309                            slot.as_mut(),
28310                            decoder,
28311                            (),
28312                        )?;
28313
28314                        Ok(())
28315                    }
28316
28317                    8 => {
28318                        ::fidl_next::wire::Envelope::decode_as::<
28319                            ___D,
28320                            ::fidl_next::wire::String<'de>,
28321                        >(slot.as_mut(), decoder, 1024)?;
28322
28323                        let value = unsafe {
28324                            slot.deref_unchecked()
28325                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
28326                        };
28327
28328                        if value.len() > 1024 {
28329                            return Err(::fidl_next::DecodeError::VectorTooLong {
28330                                size: value.len() as u64,
28331                                limit: 1024,
28332                            });
28333                        }
28334
28335                        Ok(())
28336                    }
28337
28338                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
28339                }
28340            })
28341        }
28342    }
28343
28344    impl<'de> UseDictionary<'de> {
28345        pub fn source(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
28346            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
28347        }
28348
28349        pub fn take_source(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
28350            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
28351        }
28352
28353        pub fn source_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
28354            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
28355        }
28356
28357        pub fn take_source_name(
28358            &mut self,
28359        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
28360            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
28361        }
28362
28363        pub fn target_path(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
28364            unsafe { Some(self.table.get(3)?.deref_unchecked()) }
28365        }
28366
28367        pub fn take_target_path(
28368            &mut self,
28369        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
28370            unsafe { Some(self.table.get_mut(3)?.take_unchecked()) }
28371        }
28372
28373        pub fn dependency_type(&self) -> ::core::option::Option<&crate::wire::DependencyType> {
28374            unsafe { Some(self.table.get(6)?.deref_unchecked()) }
28375        }
28376
28377        pub fn take_dependency_type(
28378            &mut self,
28379        ) -> ::core::option::Option<crate::wire::DependencyType> {
28380            unsafe { Some(self.table.get_mut(6)?.take_unchecked()) }
28381        }
28382
28383        pub fn availability(&self) -> ::core::option::Option<&crate::wire::Availability> {
28384            unsafe { Some(self.table.get(7)?.deref_unchecked()) }
28385        }
28386
28387        pub fn take_availability(&mut self) -> ::core::option::Option<crate::wire::Availability> {
28388            unsafe { Some(self.table.get_mut(7)?.take_unchecked()) }
28389        }
28390
28391        pub fn source_dictionary(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
28392            unsafe { Some(self.table.get(8)?.deref_unchecked()) }
28393        }
28394
28395        pub fn take_source_dictionary(
28396            &mut self,
28397        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
28398            unsafe { Some(self.table.get_mut(8)?.take_unchecked()) }
28399        }
28400    }
28401
28402    impl<'de> ::core::fmt::Debug for UseDictionary<'de> {
28403        fn fmt(
28404            &self,
28405            f: &mut ::core::fmt::Formatter<'_>,
28406        ) -> ::core::result::Result<(), ::core::fmt::Error> {
28407            f.debug_struct("UseDictionary")
28408                .field("source", &self.source())
28409                .field("source_name", &self.source_name())
28410                .field("target_path", &self.target_path())
28411                .field("dependency_type", &self.dependency_type())
28412                .field("availability", &self.availability())
28413                .field("source_dictionary", &self.source_dictionary())
28414                .finish()
28415        }
28416    }
28417
28418    impl<'de> ::fidl_next::IntoNatural for UseDictionary<'de> {
28419        type Natural = crate::natural::UseDictionary;
28420    }
28421
28422    /// The wire type corresponding to [`Use`].
28423    #[repr(transparent)]
28424    pub struct Use<'de> {
28425        pub(crate) raw: ::fidl_next::wire::Union,
28426        pub(crate) _phantom: ::core::marker::PhantomData<&'de mut [::fidl_next::Chunk]>,
28427    }
28428
28429    impl<'de> Drop for Use<'de> {
28430        fn drop(&mut self) {
28431            match self.raw.ordinal() {
28432                1 => {
28433                    let _ =
28434                        unsafe { self.raw.get().read_unchecked::<crate::wire::UseService<'de>>() };
28435                }
28436
28437                2 => {
28438                    let _ =
28439                        unsafe { self.raw.get().read_unchecked::<crate::wire::UseProtocol<'de>>() };
28440                }
28441
28442                3 => {
28443                    let _ = unsafe {
28444                        self.raw.get().read_unchecked::<crate::wire::UseDirectory<'de>>()
28445                    };
28446                }
28447
28448                4 => {
28449                    let _ =
28450                        unsafe { self.raw.get().read_unchecked::<crate::wire::UseStorage<'de>>() };
28451                }
28452
28453                7 => {
28454                    let _ = unsafe {
28455                        self.raw.get().read_unchecked::<crate::wire::UseEventStream<'de>>()
28456                    };
28457                }
28458
28459                8 => {
28460                    let _ =
28461                        unsafe { self.raw.get().read_unchecked::<crate::wire::UseRunner<'de>>() };
28462                }
28463
28464                9 => {
28465                    let _ = unsafe {
28466                        self.raw.get().read_unchecked::<crate::wire::UseConfiguration<'de>>()
28467                    };
28468                }
28469
28470                10 => {
28471                    let _ = unsafe {
28472                        self.raw.get().read_unchecked::<crate::wire::UseDictionary<'de>>()
28473                    };
28474                }
28475
28476                _ => (),
28477            }
28478        }
28479    }
28480
28481    impl ::fidl_next::Constrained for Use<'_> {
28482        type Constraint = ();
28483
28484        fn validate(
28485            _: ::fidl_next::Slot<'_, Self>,
28486            _: Self::Constraint,
28487        ) -> Result<(), ::fidl_next::ValidationError> {
28488            Ok(())
28489        }
28490    }
28491
28492    unsafe impl ::fidl_next::Wire for Use<'static> {
28493        type Narrowed<'de> = Use<'de>;
28494
28495        #[inline]
28496        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
28497            ::fidl_next::munge!(let Self { raw, _phantom: _ } = out);
28498            ::fidl_next::wire::Union::zero_padding(raw);
28499        }
28500    }
28501
28502    pub mod use_ {
28503        pub enum Ref<'de> {
28504            Service(&'de crate::wire::UseService<'de>),
28505
28506            Protocol(&'de crate::wire::UseProtocol<'de>),
28507
28508            Directory(&'de crate::wire::UseDirectory<'de>),
28509
28510            Storage(&'de crate::wire::UseStorage<'de>),
28511
28512            EventStream(&'de crate::wire::UseEventStream<'de>),
28513
28514            Runner(&'de crate::wire::UseRunner<'de>),
28515
28516            Config(&'de crate::wire::UseConfiguration<'de>),
28517
28518            Dictionary(&'de crate::wire::UseDictionary<'de>),
28519
28520            UnknownOrdinal_(u64),
28521        }
28522
28523        pub enum Value<'de> {
28524            Service(crate::wire::UseService<'de>),
28525
28526            Protocol(crate::wire::UseProtocol<'de>),
28527
28528            Directory(crate::wire::UseDirectory<'de>),
28529
28530            Storage(crate::wire::UseStorage<'de>),
28531
28532            EventStream(crate::wire::UseEventStream<'de>),
28533
28534            Runner(crate::wire::UseRunner<'de>),
28535
28536            Config(crate::wire::UseConfiguration<'de>),
28537
28538            Dictionary(crate::wire::UseDictionary<'de>),
28539
28540            UnknownOrdinal_(u64),
28541        }
28542    }
28543
28544    impl<'de> Use<'de> {
28545        pub fn as_ref(&self) -> crate::wire::use_::Ref<'_> {
28546            match self.raw.ordinal() {
28547                1 => crate::wire::use_::Ref::Service(unsafe {
28548                    self.raw.get().deref_unchecked::<crate::wire::UseService<'_>>()
28549                }),
28550
28551                2 => crate::wire::use_::Ref::Protocol(unsafe {
28552                    self.raw.get().deref_unchecked::<crate::wire::UseProtocol<'_>>()
28553                }),
28554
28555                3 => crate::wire::use_::Ref::Directory(unsafe {
28556                    self.raw.get().deref_unchecked::<crate::wire::UseDirectory<'_>>()
28557                }),
28558
28559                4 => crate::wire::use_::Ref::Storage(unsafe {
28560                    self.raw.get().deref_unchecked::<crate::wire::UseStorage<'_>>()
28561                }),
28562
28563                7 => crate::wire::use_::Ref::EventStream(unsafe {
28564                    self.raw.get().deref_unchecked::<crate::wire::UseEventStream<'_>>()
28565                }),
28566
28567                8 => crate::wire::use_::Ref::Runner(unsafe {
28568                    self.raw.get().deref_unchecked::<crate::wire::UseRunner<'_>>()
28569                }),
28570
28571                9 => crate::wire::use_::Ref::Config(unsafe {
28572                    self.raw.get().deref_unchecked::<crate::wire::UseConfiguration<'_>>()
28573                }),
28574
28575                10 => crate::wire::use_::Ref::Dictionary(unsafe {
28576                    self.raw.get().deref_unchecked::<crate::wire::UseDictionary<'_>>()
28577                }),
28578
28579                unknown => crate::wire::use_::Ref::UnknownOrdinal_(unknown),
28580            }
28581        }
28582
28583        pub fn into_inner(self) -> crate::wire::use_::Value<'de> {
28584            let this = ::core::mem::ManuallyDrop::new(self);
28585
28586            match this.raw.ordinal() {
28587                1 => crate::wire::use_::Value::Service(unsafe {
28588                    this.raw.get().read_unchecked::<crate::wire::UseService<'de>>()
28589                }),
28590
28591                2 => crate::wire::use_::Value::Protocol(unsafe {
28592                    this.raw.get().read_unchecked::<crate::wire::UseProtocol<'de>>()
28593                }),
28594
28595                3 => crate::wire::use_::Value::Directory(unsafe {
28596                    this.raw.get().read_unchecked::<crate::wire::UseDirectory<'de>>()
28597                }),
28598
28599                4 => crate::wire::use_::Value::Storage(unsafe {
28600                    this.raw.get().read_unchecked::<crate::wire::UseStorage<'de>>()
28601                }),
28602
28603                7 => crate::wire::use_::Value::EventStream(unsafe {
28604                    this.raw.get().read_unchecked::<crate::wire::UseEventStream<'de>>()
28605                }),
28606
28607                8 => crate::wire::use_::Value::Runner(unsafe {
28608                    this.raw.get().read_unchecked::<crate::wire::UseRunner<'de>>()
28609                }),
28610
28611                9 => crate::wire::use_::Value::Config(unsafe {
28612                    this.raw.get().read_unchecked::<crate::wire::UseConfiguration<'de>>()
28613                }),
28614
28615                10 => crate::wire::use_::Value::Dictionary(unsafe {
28616                    this.raw.get().read_unchecked::<crate::wire::UseDictionary<'de>>()
28617                }),
28618
28619                unknown => crate::wire::use_::Value::UnknownOrdinal_(unknown),
28620            }
28621        }
28622    }
28623
28624    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for Use<'de>
28625    where
28626        ___D: ::fidl_next::decoder::InternalHandleDecoder + ?Sized,
28627        ___D: ::fidl_next::Decoder<'de>,
28628    {
28629        fn decode(
28630            mut slot: ::fidl_next::Slot<'_, Self>,
28631            decoder: &mut ___D,
28632            _: (),
28633        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
28634            ::fidl_next::munge!(let Self { mut raw, _phantom: _ } = slot.as_mut());
28635            match ::fidl_next::wire::Union::encoded_ordinal(raw.as_mut()) {
28636                1 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::UseService<'de>>(
28637                    raw,
28638                    decoder,
28639                    (),
28640                )?,
28641
28642                2 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::UseProtocol<'de>>(
28643                    raw,
28644                    decoder,
28645                    (),
28646                )?,
28647
28648                3 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::UseDirectory<'de>>(
28649                    raw,
28650                    decoder,
28651                    (),
28652                )?,
28653
28654                4 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::UseStorage<'de>>(
28655                    raw,
28656                    decoder,
28657                    (),
28658                )?,
28659
28660                7 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::UseEventStream<'de>>(
28661                    raw,
28662                    decoder,
28663                    (),
28664                )?,
28665
28666                8 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::UseRunner<'de>>(
28667                    raw,
28668                    decoder,
28669                    (),
28670                )?,
28671
28672                9 => {
28673                    ::fidl_next::wire::Union::decode_as::<___D, crate::wire::UseConfiguration<'de>>(
28674                        raw,
28675                        decoder,
28676                        (),
28677                    )?
28678                }
28679
28680                10 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::UseDictionary<'de>>(
28681                    raw,
28682                    decoder,
28683                    (),
28684                )?,
28685
28686                _ => ::fidl_next::wire::Union::decode_unknown(raw, decoder)?,
28687            }
28688
28689            Ok(())
28690        }
28691    }
28692
28693    impl<'de> ::core::fmt::Debug for Use<'de> {
28694        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
28695            match self.raw.ordinal() {
28696                1 => unsafe {
28697                    self.raw.get().deref_unchecked::<crate::wire::UseService<'_>>().fmt(f)
28698                },
28699                2 => unsafe {
28700                    self.raw.get().deref_unchecked::<crate::wire::UseProtocol<'_>>().fmt(f)
28701                },
28702                3 => unsafe {
28703                    self.raw.get().deref_unchecked::<crate::wire::UseDirectory<'_>>().fmt(f)
28704                },
28705                4 => unsafe {
28706                    self.raw.get().deref_unchecked::<crate::wire::UseStorage<'_>>().fmt(f)
28707                },
28708                7 => unsafe {
28709                    self.raw.get().deref_unchecked::<crate::wire::UseEventStream<'_>>().fmt(f)
28710                },
28711                8 => unsafe {
28712                    self.raw.get().deref_unchecked::<crate::wire::UseRunner<'_>>().fmt(f)
28713                },
28714                9 => unsafe {
28715                    self.raw.get().deref_unchecked::<crate::wire::UseConfiguration<'_>>().fmt(f)
28716                },
28717                10 => unsafe {
28718                    self.raw.get().deref_unchecked::<crate::wire::UseDictionary<'_>>().fmt(f)
28719                },
28720                _ => unsafe { ::core::hint::unreachable_unchecked() },
28721            }
28722        }
28723    }
28724
28725    impl<'de> ::fidl_next::IntoNatural for Use<'de> {
28726        type Natural = crate::natural::Use;
28727    }
28728
28729    /// The wire type corresponding to [`ExposeService`].
28730    #[repr(C)]
28731    pub struct ExposeService<'de> {
28732        pub(crate) table: ::fidl_next::wire::Table<'de>,
28733    }
28734
28735    impl<'de> Drop for ExposeService<'de> {
28736        fn drop(&mut self) {
28737            let _ = self
28738                .table
28739                .get(1)
28740                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
28741
28742            let _ = self.table.get(2).map(|envelope| unsafe {
28743                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
28744            });
28745
28746            let _ = self
28747                .table
28748                .get(3)
28749                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
28750
28751            let _ = self.table.get(4).map(|envelope| unsafe {
28752                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
28753            });
28754
28755            let _ = self
28756                .table
28757                .get(5)
28758                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Availability>() });
28759
28760            let _ = self.table.get(6).map(|envelope| unsafe {
28761                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
28762            });
28763        }
28764    }
28765
28766    impl ::fidl_next::Constrained for ExposeService<'_> {
28767        type Constraint = ();
28768
28769        fn validate(
28770            _: ::fidl_next::Slot<'_, Self>,
28771            _: Self::Constraint,
28772        ) -> Result<(), ::fidl_next::ValidationError> {
28773            Ok(())
28774        }
28775    }
28776
28777    unsafe impl ::fidl_next::Wire for ExposeService<'static> {
28778        type Narrowed<'de> = ExposeService<'de>;
28779
28780        #[inline]
28781        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
28782            ::fidl_next::munge!(let Self { table } = out);
28783            ::fidl_next::wire::Table::zero_padding(table);
28784        }
28785    }
28786
28787    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for ExposeService<'de>
28788    where
28789        ___D: ::fidl_next::Decoder<'de> + ?Sized,
28790    {
28791        fn decode(
28792            slot: ::fidl_next::Slot<'_, Self>,
28793            decoder: &mut ___D,
28794            _: (),
28795        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
28796            ::fidl_next::munge!(let Self { table } = slot);
28797
28798            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
28799                match ordinal {
28800                    0 => unsafe { ::core::hint::unreachable_unchecked() },
28801
28802                    1 => {
28803                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
28804                            slot.as_mut(),
28805                            decoder,
28806                            (),
28807                        )?;
28808
28809                        Ok(())
28810                    }
28811
28812                    2 => {
28813                        ::fidl_next::wire::Envelope::decode_as::<
28814                            ___D,
28815                            ::fidl_next::wire::String<'de>,
28816                        >(slot.as_mut(), decoder, 100)?;
28817
28818                        let value = unsafe {
28819                            slot.deref_unchecked()
28820                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
28821                        };
28822
28823                        if value.len() > 100 {
28824                            return Err(::fidl_next::DecodeError::VectorTooLong {
28825                                size: value.len() as u64,
28826                                limit: 100,
28827                            });
28828                        }
28829
28830                        Ok(())
28831                    }
28832
28833                    3 => {
28834                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
28835                            slot.as_mut(),
28836                            decoder,
28837                            (),
28838                        )?;
28839
28840                        Ok(())
28841                    }
28842
28843                    4 => {
28844                        ::fidl_next::wire::Envelope::decode_as::<
28845                            ___D,
28846                            ::fidl_next::wire::String<'de>,
28847                        >(slot.as_mut(), decoder, 100)?;
28848
28849                        let value = unsafe {
28850                            slot.deref_unchecked()
28851                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
28852                        };
28853
28854                        if value.len() > 100 {
28855                            return Err(::fidl_next::DecodeError::VectorTooLong {
28856                                size: value.len() as u64,
28857                                limit: 100,
28858                            });
28859                        }
28860
28861                        Ok(())
28862                    }
28863
28864                    5 => {
28865                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Availability>(
28866                            slot.as_mut(),
28867                            decoder,
28868                            (),
28869                        )?;
28870
28871                        Ok(())
28872                    }
28873
28874                    6 => {
28875                        ::fidl_next::wire::Envelope::decode_as::<
28876                            ___D,
28877                            ::fidl_next::wire::String<'de>,
28878                        >(slot.as_mut(), decoder, 1024)?;
28879
28880                        let value = unsafe {
28881                            slot.deref_unchecked()
28882                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
28883                        };
28884
28885                        if value.len() > 1024 {
28886                            return Err(::fidl_next::DecodeError::VectorTooLong {
28887                                size: value.len() as u64,
28888                                limit: 1024,
28889                            });
28890                        }
28891
28892                        Ok(())
28893                    }
28894
28895                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
28896                }
28897            })
28898        }
28899    }
28900
28901    impl<'de> ExposeService<'de> {
28902        pub fn source(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
28903            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
28904        }
28905
28906        pub fn take_source(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
28907            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
28908        }
28909
28910        pub fn source_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
28911            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
28912        }
28913
28914        pub fn take_source_name(
28915            &mut self,
28916        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
28917            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
28918        }
28919
28920        pub fn target(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
28921            unsafe { Some(self.table.get(3)?.deref_unchecked()) }
28922        }
28923
28924        pub fn take_target(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
28925            unsafe { Some(self.table.get_mut(3)?.take_unchecked()) }
28926        }
28927
28928        pub fn target_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
28929            unsafe { Some(self.table.get(4)?.deref_unchecked()) }
28930        }
28931
28932        pub fn take_target_name(
28933            &mut self,
28934        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
28935            unsafe { Some(self.table.get_mut(4)?.take_unchecked()) }
28936        }
28937
28938        pub fn availability(&self) -> ::core::option::Option<&crate::wire::Availability> {
28939            unsafe { Some(self.table.get(5)?.deref_unchecked()) }
28940        }
28941
28942        pub fn take_availability(&mut self) -> ::core::option::Option<crate::wire::Availability> {
28943            unsafe { Some(self.table.get_mut(5)?.take_unchecked()) }
28944        }
28945
28946        pub fn source_dictionary(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
28947            unsafe { Some(self.table.get(6)?.deref_unchecked()) }
28948        }
28949
28950        pub fn take_source_dictionary(
28951            &mut self,
28952        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
28953            unsafe { Some(self.table.get_mut(6)?.take_unchecked()) }
28954        }
28955    }
28956
28957    impl<'de> ::core::fmt::Debug for ExposeService<'de> {
28958        fn fmt(
28959            &self,
28960            f: &mut ::core::fmt::Formatter<'_>,
28961        ) -> ::core::result::Result<(), ::core::fmt::Error> {
28962            f.debug_struct("ExposeService")
28963                .field("source", &self.source())
28964                .field("source_name", &self.source_name())
28965                .field("target", &self.target())
28966                .field("target_name", &self.target_name())
28967                .field("availability", &self.availability())
28968                .field("source_dictionary", &self.source_dictionary())
28969                .finish()
28970        }
28971    }
28972
28973    impl<'de> ::fidl_next::IntoNatural for ExposeService<'de> {
28974        type Natural = crate::natural::ExposeService;
28975    }
28976
28977    /// The wire type corresponding to [`ExposeProtocol`].
28978    #[repr(C)]
28979    pub struct ExposeProtocol<'de> {
28980        pub(crate) table: ::fidl_next::wire::Table<'de>,
28981    }
28982
28983    impl<'de> Drop for ExposeProtocol<'de> {
28984        fn drop(&mut self) {
28985            let _ = self
28986                .table
28987                .get(1)
28988                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
28989
28990            let _ = self.table.get(2).map(|envelope| unsafe {
28991                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
28992            });
28993
28994            let _ = self
28995                .table
28996                .get(3)
28997                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
28998
28999            let _ = self.table.get(4).map(|envelope| unsafe {
29000                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
29001            });
29002
29003            let _ = self
29004                .table
29005                .get(5)
29006                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Availability>() });
29007
29008            let _ = self.table.get(6).map(|envelope| unsafe {
29009                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
29010            });
29011        }
29012    }
29013
29014    impl ::fidl_next::Constrained for ExposeProtocol<'_> {
29015        type Constraint = ();
29016
29017        fn validate(
29018            _: ::fidl_next::Slot<'_, Self>,
29019            _: Self::Constraint,
29020        ) -> Result<(), ::fidl_next::ValidationError> {
29021            Ok(())
29022        }
29023    }
29024
29025    unsafe impl ::fidl_next::Wire for ExposeProtocol<'static> {
29026        type Narrowed<'de> = ExposeProtocol<'de>;
29027
29028        #[inline]
29029        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
29030            ::fidl_next::munge!(let Self { table } = out);
29031            ::fidl_next::wire::Table::zero_padding(table);
29032        }
29033    }
29034
29035    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for ExposeProtocol<'de>
29036    where
29037        ___D: ::fidl_next::Decoder<'de> + ?Sized,
29038    {
29039        fn decode(
29040            slot: ::fidl_next::Slot<'_, Self>,
29041            decoder: &mut ___D,
29042            _: (),
29043        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
29044            ::fidl_next::munge!(let Self { table } = slot);
29045
29046            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
29047                match ordinal {
29048                    0 => unsafe { ::core::hint::unreachable_unchecked() },
29049
29050                    1 => {
29051                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
29052                            slot.as_mut(),
29053                            decoder,
29054                            (),
29055                        )?;
29056
29057                        Ok(())
29058                    }
29059
29060                    2 => {
29061                        ::fidl_next::wire::Envelope::decode_as::<
29062                            ___D,
29063                            ::fidl_next::wire::String<'de>,
29064                        >(slot.as_mut(), decoder, 100)?;
29065
29066                        let value = unsafe {
29067                            slot.deref_unchecked()
29068                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
29069                        };
29070
29071                        if value.len() > 100 {
29072                            return Err(::fidl_next::DecodeError::VectorTooLong {
29073                                size: value.len() as u64,
29074                                limit: 100,
29075                            });
29076                        }
29077
29078                        Ok(())
29079                    }
29080
29081                    3 => {
29082                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
29083                            slot.as_mut(),
29084                            decoder,
29085                            (),
29086                        )?;
29087
29088                        Ok(())
29089                    }
29090
29091                    4 => {
29092                        ::fidl_next::wire::Envelope::decode_as::<
29093                            ___D,
29094                            ::fidl_next::wire::String<'de>,
29095                        >(slot.as_mut(), decoder, 100)?;
29096
29097                        let value = unsafe {
29098                            slot.deref_unchecked()
29099                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
29100                        };
29101
29102                        if value.len() > 100 {
29103                            return Err(::fidl_next::DecodeError::VectorTooLong {
29104                                size: value.len() as u64,
29105                                limit: 100,
29106                            });
29107                        }
29108
29109                        Ok(())
29110                    }
29111
29112                    5 => {
29113                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Availability>(
29114                            slot.as_mut(),
29115                            decoder,
29116                            (),
29117                        )?;
29118
29119                        Ok(())
29120                    }
29121
29122                    6 => {
29123                        ::fidl_next::wire::Envelope::decode_as::<
29124                            ___D,
29125                            ::fidl_next::wire::String<'de>,
29126                        >(slot.as_mut(), decoder, 1024)?;
29127
29128                        let value = unsafe {
29129                            slot.deref_unchecked()
29130                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
29131                        };
29132
29133                        if value.len() > 1024 {
29134                            return Err(::fidl_next::DecodeError::VectorTooLong {
29135                                size: value.len() as u64,
29136                                limit: 1024,
29137                            });
29138                        }
29139
29140                        Ok(())
29141                    }
29142
29143                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
29144                }
29145            })
29146        }
29147    }
29148
29149    impl<'de> ExposeProtocol<'de> {
29150        pub fn source(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
29151            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
29152        }
29153
29154        pub fn take_source(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
29155            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
29156        }
29157
29158        pub fn source_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
29159            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
29160        }
29161
29162        pub fn take_source_name(
29163            &mut self,
29164        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
29165            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
29166        }
29167
29168        pub fn target(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
29169            unsafe { Some(self.table.get(3)?.deref_unchecked()) }
29170        }
29171
29172        pub fn take_target(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
29173            unsafe { Some(self.table.get_mut(3)?.take_unchecked()) }
29174        }
29175
29176        pub fn target_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
29177            unsafe { Some(self.table.get(4)?.deref_unchecked()) }
29178        }
29179
29180        pub fn take_target_name(
29181            &mut self,
29182        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
29183            unsafe { Some(self.table.get_mut(4)?.take_unchecked()) }
29184        }
29185
29186        pub fn availability(&self) -> ::core::option::Option<&crate::wire::Availability> {
29187            unsafe { Some(self.table.get(5)?.deref_unchecked()) }
29188        }
29189
29190        pub fn take_availability(&mut self) -> ::core::option::Option<crate::wire::Availability> {
29191            unsafe { Some(self.table.get_mut(5)?.take_unchecked()) }
29192        }
29193
29194        pub fn source_dictionary(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
29195            unsafe { Some(self.table.get(6)?.deref_unchecked()) }
29196        }
29197
29198        pub fn take_source_dictionary(
29199            &mut self,
29200        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
29201            unsafe { Some(self.table.get_mut(6)?.take_unchecked()) }
29202        }
29203    }
29204
29205    impl<'de> ::core::fmt::Debug for ExposeProtocol<'de> {
29206        fn fmt(
29207            &self,
29208            f: &mut ::core::fmt::Formatter<'_>,
29209        ) -> ::core::result::Result<(), ::core::fmt::Error> {
29210            f.debug_struct("ExposeProtocol")
29211                .field("source", &self.source())
29212                .field("source_name", &self.source_name())
29213                .field("target", &self.target())
29214                .field("target_name", &self.target_name())
29215                .field("availability", &self.availability())
29216                .field("source_dictionary", &self.source_dictionary())
29217                .finish()
29218        }
29219    }
29220
29221    impl<'de> ::fidl_next::IntoNatural for ExposeProtocol<'de> {
29222        type Natural = crate::natural::ExposeProtocol;
29223    }
29224
29225    /// The wire type corresponding to [`ExposeDirectory`].
29226    #[repr(C)]
29227    pub struct ExposeDirectory<'de> {
29228        pub(crate) table: ::fidl_next::wire::Table<'de>,
29229    }
29230
29231    impl<'de> Drop for ExposeDirectory<'de> {
29232        fn drop(&mut self) {
29233            let _ = self
29234                .table
29235                .get(1)
29236                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
29237
29238            let _ = self.table.get(2).map(|envelope| unsafe {
29239                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
29240            });
29241
29242            let _ = self
29243                .table
29244                .get(3)
29245                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
29246
29247            let _ = self.table.get(4).map(|envelope| unsafe {
29248                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
29249            });
29250
29251            let _ = self.table.get(5).map(|envelope| unsafe {
29252                envelope.read_unchecked::<::fidl_next_common_fuchsia_io::wire::Operations>()
29253            });
29254
29255            let _ = self.table.get(6).map(|envelope| unsafe {
29256                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
29257            });
29258
29259            let _ = self
29260                .table
29261                .get(7)
29262                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Availability>() });
29263
29264            let _ = self.table.get(8).map(|envelope| unsafe {
29265                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
29266            });
29267        }
29268    }
29269
29270    impl ::fidl_next::Constrained for ExposeDirectory<'_> {
29271        type Constraint = ();
29272
29273        fn validate(
29274            _: ::fidl_next::Slot<'_, Self>,
29275            _: Self::Constraint,
29276        ) -> Result<(), ::fidl_next::ValidationError> {
29277            Ok(())
29278        }
29279    }
29280
29281    unsafe impl ::fidl_next::Wire for ExposeDirectory<'static> {
29282        type Narrowed<'de> = ExposeDirectory<'de>;
29283
29284        #[inline]
29285        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
29286            ::fidl_next::munge!(let Self { table } = out);
29287            ::fidl_next::wire::Table::zero_padding(table);
29288        }
29289    }
29290
29291    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for ExposeDirectory<'de>
29292    where
29293        ___D: ::fidl_next::Decoder<'de> + ?Sized,
29294    {
29295        fn decode(
29296            slot: ::fidl_next::Slot<'_, Self>,
29297            decoder: &mut ___D,
29298            _: (),
29299        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
29300            ::fidl_next::munge!(let Self { table } = slot);
29301
29302            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
29303                match ordinal {
29304                    0 => unsafe { ::core::hint::unreachable_unchecked() },
29305
29306                    1 => {
29307                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
29308                            slot.as_mut(),
29309                            decoder,
29310                            (),
29311                        )?;
29312
29313                        Ok(())
29314                    }
29315
29316                    2 => {
29317                        ::fidl_next::wire::Envelope::decode_as::<
29318                            ___D,
29319                            ::fidl_next::wire::String<'de>,
29320                        >(slot.as_mut(), decoder, 100)?;
29321
29322                        let value = unsafe {
29323                            slot.deref_unchecked()
29324                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
29325                        };
29326
29327                        if value.len() > 100 {
29328                            return Err(::fidl_next::DecodeError::VectorTooLong {
29329                                size: value.len() as u64,
29330                                limit: 100,
29331                            });
29332                        }
29333
29334                        Ok(())
29335                    }
29336
29337                    3 => {
29338                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
29339                            slot.as_mut(),
29340                            decoder,
29341                            (),
29342                        )?;
29343
29344                        Ok(())
29345                    }
29346
29347                    4 => {
29348                        ::fidl_next::wire::Envelope::decode_as::<
29349                            ___D,
29350                            ::fidl_next::wire::String<'de>,
29351                        >(slot.as_mut(), decoder, 100)?;
29352
29353                        let value = unsafe {
29354                            slot.deref_unchecked()
29355                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
29356                        };
29357
29358                        if value.len() > 100 {
29359                            return Err(::fidl_next::DecodeError::VectorTooLong {
29360                                size: value.len() as u64,
29361                                limit: 100,
29362                            });
29363                        }
29364
29365                        Ok(())
29366                    }
29367
29368                    5 => {
29369                        ::fidl_next::wire::Envelope::decode_as::<
29370                            ___D,
29371                            ::fidl_next_common_fuchsia_io::wire::Operations,
29372                        >(slot.as_mut(), decoder, ())?;
29373
29374                        Ok(())
29375                    }
29376
29377                    6 => {
29378                        ::fidl_next::wire::Envelope::decode_as::<
29379                            ___D,
29380                            ::fidl_next::wire::String<'de>,
29381                        >(slot.as_mut(), decoder, 1024)?;
29382
29383                        let value = unsafe {
29384                            slot.deref_unchecked()
29385                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
29386                        };
29387
29388                        if value.len() > 1024 {
29389                            return Err(::fidl_next::DecodeError::VectorTooLong {
29390                                size: value.len() as u64,
29391                                limit: 1024,
29392                            });
29393                        }
29394
29395                        Ok(())
29396                    }
29397
29398                    7 => {
29399                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Availability>(
29400                            slot.as_mut(),
29401                            decoder,
29402                            (),
29403                        )?;
29404
29405                        Ok(())
29406                    }
29407
29408                    8 => {
29409                        ::fidl_next::wire::Envelope::decode_as::<
29410                            ___D,
29411                            ::fidl_next::wire::String<'de>,
29412                        >(slot.as_mut(), decoder, 1024)?;
29413
29414                        let value = unsafe {
29415                            slot.deref_unchecked()
29416                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
29417                        };
29418
29419                        if value.len() > 1024 {
29420                            return Err(::fidl_next::DecodeError::VectorTooLong {
29421                                size: value.len() as u64,
29422                                limit: 1024,
29423                            });
29424                        }
29425
29426                        Ok(())
29427                    }
29428
29429                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
29430                }
29431            })
29432        }
29433    }
29434
29435    impl<'de> ExposeDirectory<'de> {
29436        pub fn source(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
29437            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
29438        }
29439
29440        pub fn take_source(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
29441            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
29442        }
29443
29444        pub fn source_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
29445            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
29446        }
29447
29448        pub fn take_source_name(
29449            &mut self,
29450        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
29451            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
29452        }
29453
29454        pub fn target(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
29455            unsafe { Some(self.table.get(3)?.deref_unchecked()) }
29456        }
29457
29458        pub fn take_target(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
29459            unsafe { Some(self.table.get_mut(3)?.take_unchecked()) }
29460        }
29461
29462        pub fn target_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
29463            unsafe { Some(self.table.get(4)?.deref_unchecked()) }
29464        }
29465
29466        pub fn take_target_name(
29467            &mut self,
29468        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
29469            unsafe { Some(self.table.get_mut(4)?.take_unchecked()) }
29470        }
29471
29472        pub fn rights(
29473            &self,
29474        ) -> ::core::option::Option<&::fidl_next_common_fuchsia_io::wire::Operations> {
29475            unsafe { Some(self.table.get(5)?.deref_unchecked()) }
29476        }
29477
29478        pub fn take_rights(
29479            &mut self,
29480        ) -> ::core::option::Option<::fidl_next_common_fuchsia_io::wire::Operations> {
29481            unsafe { Some(self.table.get_mut(5)?.take_unchecked()) }
29482        }
29483
29484        pub fn subdir(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
29485            unsafe { Some(self.table.get(6)?.deref_unchecked()) }
29486        }
29487
29488        pub fn take_subdir(&mut self) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
29489            unsafe { Some(self.table.get_mut(6)?.take_unchecked()) }
29490        }
29491
29492        pub fn availability(&self) -> ::core::option::Option<&crate::wire::Availability> {
29493            unsafe { Some(self.table.get(7)?.deref_unchecked()) }
29494        }
29495
29496        pub fn take_availability(&mut self) -> ::core::option::Option<crate::wire::Availability> {
29497            unsafe { Some(self.table.get_mut(7)?.take_unchecked()) }
29498        }
29499
29500        pub fn source_dictionary(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
29501            unsafe { Some(self.table.get(8)?.deref_unchecked()) }
29502        }
29503
29504        pub fn take_source_dictionary(
29505            &mut self,
29506        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
29507            unsafe { Some(self.table.get_mut(8)?.take_unchecked()) }
29508        }
29509    }
29510
29511    impl<'de> ::core::fmt::Debug for ExposeDirectory<'de> {
29512        fn fmt(
29513            &self,
29514            f: &mut ::core::fmt::Formatter<'_>,
29515        ) -> ::core::result::Result<(), ::core::fmt::Error> {
29516            f.debug_struct("ExposeDirectory")
29517                .field("source", &self.source())
29518                .field("source_name", &self.source_name())
29519                .field("target", &self.target())
29520                .field("target_name", &self.target_name())
29521                .field("rights", &self.rights())
29522                .field("subdir", &self.subdir())
29523                .field("availability", &self.availability())
29524                .field("source_dictionary", &self.source_dictionary())
29525                .finish()
29526        }
29527    }
29528
29529    impl<'de> ::fidl_next::IntoNatural for ExposeDirectory<'de> {
29530        type Natural = crate::natural::ExposeDirectory;
29531    }
29532
29533    /// The wire type corresponding to [`ExposeRunner`].
29534    #[repr(C)]
29535    pub struct ExposeRunner<'de> {
29536        pub(crate) table: ::fidl_next::wire::Table<'de>,
29537    }
29538
29539    impl<'de> Drop for ExposeRunner<'de> {
29540        fn drop(&mut self) {
29541            let _ = self
29542                .table
29543                .get(1)
29544                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
29545
29546            let _ = self.table.get(2).map(|envelope| unsafe {
29547                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
29548            });
29549
29550            let _ = self
29551                .table
29552                .get(3)
29553                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
29554
29555            let _ = self.table.get(4).map(|envelope| unsafe {
29556                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
29557            });
29558
29559            let _ = self.table.get(6).map(|envelope| unsafe {
29560                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
29561            });
29562        }
29563    }
29564
29565    impl ::fidl_next::Constrained for ExposeRunner<'_> {
29566        type Constraint = ();
29567
29568        fn validate(
29569            _: ::fidl_next::Slot<'_, Self>,
29570            _: Self::Constraint,
29571        ) -> Result<(), ::fidl_next::ValidationError> {
29572            Ok(())
29573        }
29574    }
29575
29576    unsafe impl ::fidl_next::Wire for ExposeRunner<'static> {
29577        type Narrowed<'de> = ExposeRunner<'de>;
29578
29579        #[inline]
29580        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
29581            ::fidl_next::munge!(let Self { table } = out);
29582            ::fidl_next::wire::Table::zero_padding(table);
29583        }
29584    }
29585
29586    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for ExposeRunner<'de>
29587    where
29588        ___D: ::fidl_next::Decoder<'de> + ?Sized,
29589    {
29590        fn decode(
29591            slot: ::fidl_next::Slot<'_, Self>,
29592            decoder: &mut ___D,
29593            _: (),
29594        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
29595            ::fidl_next::munge!(let Self { table } = slot);
29596
29597            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
29598                match ordinal {
29599                    0 => unsafe { ::core::hint::unreachable_unchecked() },
29600
29601                    1 => {
29602                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
29603                            slot.as_mut(),
29604                            decoder,
29605                            (),
29606                        )?;
29607
29608                        Ok(())
29609                    }
29610
29611                    2 => {
29612                        ::fidl_next::wire::Envelope::decode_as::<
29613                            ___D,
29614                            ::fidl_next::wire::String<'de>,
29615                        >(slot.as_mut(), decoder, 100)?;
29616
29617                        let value = unsafe {
29618                            slot.deref_unchecked()
29619                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
29620                        };
29621
29622                        if value.len() > 100 {
29623                            return Err(::fidl_next::DecodeError::VectorTooLong {
29624                                size: value.len() as u64,
29625                                limit: 100,
29626                            });
29627                        }
29628
29629                        Ok(())
29630                    }
29631
29632                    3 => {
29633                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
29634                            slot.as_mut(),
29635                            decoder,
29636                            (),
29637                        )?;
29638
29639                        Ok(())
29640                    }
29641
29642                    4 => {
29643                        ::fidl_next::wire::Envelope::decode_as::<
29644                            ___D,
29645                            ::fidl_next::wire::String<'de>,
29646                        >(slot.as_mut(), decoder, 100)?;
29647
29648                        let value = unsafe {
29649                            slot.deref_unchecked()
29650                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
29651                        };
29652
29653                        if value.len() > 100 {
29654                            return Err(::fidl_next::DecodeError::VectorTooLong {
29655                                size: value.len() as u64,
29656                                limit: 100,
29657                            });
29658                        }
29659
29660                        Ok(())
29661                    }
29662
29663                    6 => {
29664                        ::fidl_next::wire::Envelope::decode_as::<
29665                            ___D,
29666                            ::fidl_next::wire::String<'de>,
29667                        >(slot.as_mut(), decoder, 1024)?;
29668
29669                        let value = unsafe {
29670                            slot.deref_unchecked()
29671                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
29672                        };
29673
29674                        if value.len() > 1024 {
29675                            return Err(::fidl_next::DecodeError::VectorTooLong {
29676                                size: value.len() as u64,
29677                                limit: 1024,
29678                            });
29679                        }
29680
29681                        Ok(())
29682                    }
29683
29684                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
29685                }
29686            })
29687        }
29688    }
29689
29690    impl<'de> ExposeRunner<'de> {
29691        pub fn source(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
29692            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
29693        }
29694
29695        pub fn take_source(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
29696            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
29697        }
29698
29699        pub fn source_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
29700            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
29701        }
29702
29703        pub fn take_source_name(
29704            &mut self,
29705        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
29706            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
29707        }
29708
29709        pub fn target(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
29710            unsafe { Some(self.table.get(3)?.deref_unchecked()) }
29711        }
29712
29713        pub fn take_target(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
29714            unsafe { Some(self.table.get_mut(3)?.take_unchecked()) }
29715        }
29716
29717        pub fn target_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
29718            unsafe { Some(self.table.get(4)?.deref_unchecked()) }
29719        }
29720
29721        pub fn take_target_name(
29722            &mut self,
29723        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
29724            unsafe { Some(self.table.get_mut(4)?.take_unchecked()) }
29725        }
29726
29727        pub fn source_dictionary(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
29728            unsafe { Some(self.table.get(6)?.deref_unchecked()) }
29729        }
29730
29731        pub fn take_source_dictionary(
29732            &mut self,
29733        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
29734            unsafe { Some(self.table.get_mut(6)?.take_unchecked()) }
29735        }
29736    }
29737
29738    impl<'de> ::core::fmt::Debug for ExposeRunner<'de> {
29739        fn fmt(
29740            &self,
29741            f: &mut ::core::fmt::Formatter<'_>,
29742        ) -> ::core::result::Result<(), ::core::fmt::Error> {
29743            f.debug_struct("ExposeRunner")
29744                .field("source", &self.source())
29745                .field("source_name", &self.source_name())
29746                .field("target", &self.target())
29747                .field("target_name", &self.target_name())
29748                .field("source_dictionary", &self.source_dictionary())
29749                .finish()
29750        }
29751    }
29752
29753    impl<'de> ::fidl_next::IntoNatural for ExposeRunner<'de> {
29754        type Natural = crate::natural::ExposeRunner;
29755    }
29756
29757    /// The wire type corresponding to [`ExposeResolver`].
29758    #[repr(C)]
29759    pub struct ExposeResolver<'de> {
29760        pub(crate) table: ::fidl_next::wire::Table<'de>,
29761    }
29762
29763    impl<'de> Drop for ExposeResolver<'de> {
29764        fn drop(&mut self) {
29765            let _ = self
29766                .table
29767                .get(1)
29768                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
29769
29770            let _ = self.table.get(2).map(|envelope| unsafe {
29771                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
29772            });
29773
29774            let _ = self
29775                .table
29776                .get(3)
29777                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
29778
29779            let _ = self.table.get(4).map(|envelope| unsafe {
29780                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
29781            });
29782
29783            let _ = self.table.get(6).map(|envelope| unsafe {
29784                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
29785            });
29786        }
29787    }
29788
29789    impl ::fidl_next::Constrained for ExposeResolver<'_> {
29790        type Constraint = ();
29791
29792        fn validate(
29793            _: ::fidl_next::Slot<'_, Self>,
29794            _: Self::Constraint,
29795        ) -> Result<(), ::fidl_next::ValidationError> {
29796            Ok(())
29797        }
29798    }
29799
29800    unsafe impl ::fidl_next::Wire for ExposeResolver<'static> {
29801        type Narrowed<'de> = ExposeResolver<'de>;
29802
29803        #[inline]
29804        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
29805            ::fidl_next::munge!(let Self { table } = out);
29806            ::fidl_next::wire::Table::zero_padding(table);
29807        }
29808    }
29809
29810    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for ExposeResolver<'de>
29811    where
29812        ___D: ::fidl_next::Decoder<'de> + ?Sized,
29813    {
29814        fn decode(
29815            slot: ::fidl_next::Slot<'_, Self>,
29816            decoder: &mut ___D,
29817            _: (),
29818        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
29819            ::fidl_next::munge!(let Self { table } = slot);
29820
29821            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
29822                match ordinal {
29823                    0 => unsafe { ::core::hint::unreachable_unchecked() },
29824
29825                    1 => {
29826                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
29827                            slot.as_mut(),
29828                            decoder,
29829                            (),
29830                        )?;
29831
29832                        Ok(())
29833                    }
29834
29835                    2 => {
29836                        ::fidl_next::wire::Envelope::decode_as::<
29837                            ___D,
29838                            ::fidl_next::wire::String<'de>,
29839                        >(slot.as_mut(), decoder, 100)?;
29840
29841                        let value = unsafe {
29842                            slot.deref_unchecked()
29843                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
29844                        };
29845
29846                        if value.len() > 100 {
29847                            return Err(::fidl_next::DecodeError::VectorTooLong {
29848                                size: value.len() as u64,
29849                                limit: 100,
29850                            });
29851                        }
29852
29853                        Ok(())
29854                    }
29855
29856                    3 => {
29857                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
29858                            slot.as_mut(),
29859                            decoder,
29860                            (),
29861                        )?;
29862
29863                        Ok(())
29864                    }
29865
29866                    4 => {
29867                        ::fidl_next::wire::Envelope::decode_as::<
29868                            ___D,
29869                            ::fidl_next::wire::String<'de>,
29870                        >(slot.as_mut(), decoder, 100)?;
29871
29872                        let value = unsafe {
29873                            slot.deref_unchecked()
29874                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
29875                        };
29876
29877                        if value.len() > 100 {
29878                            return Err(::fidl_next::DecodeError::VectorTooLong {
29879                                size: value.len() as u64,
29880                                limit: 100,
29881                            });
29882                        }
29883
29884                        Ok(())
29885                    }
29886
29887                    6 => {
29888                        ::fidl_next::wire::Envelope::decode_as::<
29889                            ___D,
29890                            ::fidl_next::wire::String<'de>,
29891                        >(slot.as_mut(), decoder, 1024)?;
29892
29893                        let value = unsafe {
29894                            slot.deref_unchecked()
29895                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
29896                        };
29897
29898                        if value.len() > 1024 {
29899                            return Err(::fidl_next::DecodeError::VectorTooLong {
29900                                size: value.len() as u64,
29901                                limit: 1024,
29902                            });
29903                        }
29904
29905                        Ok(())
29906                    }
29907
29908                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
29909                }
29910            })
29911        }
29912    }
29913
29914    impl<'de> ExposeResolver<'de> {
29915        pub fn source(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
29916            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
29917        }
29918
29919        pub fn take_source(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
29920            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
29921        }
29922
29923        pub fn source_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
29924            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
29925        }
29926
29927        pub fn take_source_name(
29928            &mut self,
29929        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
29930            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
29931        }
29932
29933        pub fn target(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
29934            unsafe { Some(self.table.get(3)?.deref_unchecked()) }
29935        }
29936
29937        pub fn take_target(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
29938            unsafe { Some(self.table.get_mut(3)?.take_unchecked()) }
29939        }
29940
29941        pub fn target_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
29942            unsafe { Some(self.table.get(4)?.deref_unchecked()) }
29943        }
29944
29945        pub fn take_target_name(
29946            &mut self,
29947        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
29948            unsafe { Some(self.table.get_mut(4)?.take_unchecked()) }
29949        }
29950
29951        pub fn source_dictionary(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
29952            unsafe { Some(self.table.get(6)?.deref_unchecked()) }
29953        }
29954
29955        pub fn take_source_dictionary(
29956            &mut self,
29957        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
29958            unsafe { Some(self.table.get_mut(6)?.take_unchecked()) }
29959        }
29960    }
29961
29962    impl<'de> ::core::fmt::Debug for ExposeResolver<'de> {
29963        fn fmt(
29964            &self,
29965            f: &mut ::core::fmt::Formatter<'_>,
29966        ) -> ::core::result::Result<(), ::core::fmt::Error> {
29967            f.debug_struct("ExposeResolver")
29968                .field("source", &self.source())
29969                .field("source_name", &self.source_name())
29970                .field("target", &self.target())
29971                .field("target_name", &self.target_name())
29972                .field("source_dictionary", &self.source_dictionary())
29973                .finish()
29974        }
29975    }
29976
29977    impl<'de> ::fidl_next::IntoNatural for ExposeResolver<'de> {
29978        type Natural = crate::natural::ExposeResolver;
29979    }
29980
29981    /// The wire type corresponding to [`ExposeDictionary`].
29982    #[repr(C)]
29983    pub struct ExposeDictionary<'de> {
29984        pub(crate) table: ::fidl_next::wire::Table<'de>,
29985    }
29986
29987    impl<'de> Drop for ExposeDictionary<'de> {
29988        fn drop(&mut self) {
29989            let _ = self
29990                .table
29991                .get(1)
29992                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
29993
29994            let _ = self.table.get(2).map(|envelope| unsafe {
29995                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
29996            });
29997
29998            let _ = self
29999                .table
30000                .get(3)
30001                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
30002
30003            let _ = self.table.get(4).map(|envelope| unsafe {
30004                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
30005            });
30006
30007            let _ = self
30008                .table
30009                .get(5)
30010                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Availability>() });
30011
30012            let _ = self.table.get(6).map(|envelope| unsafe {
30013                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
30014            });
30015        }
30016    }
30017
30018    impl ::fidl_next::Constrained for ExposeDictionary<'_> {
30019        type Constraint = ();
30020
30021        fn validate(
30022            _: ::fidl_next::Slot<'_, Self>,
30023            _: Self::Constraint,
30024        ) -> Result<(), ::fidl_next::ValidationError> {
30025            Ok(())
30026        }
30027    }
30028
30029    unsafe impl ::fidl_next::Wire for ExposeDictionary<'static> {
30030        type Narrowed<'de> = ExposeDictionary<'de>;
30031
30032        #[inline]
30033        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
30034            ::fidl_next::munge!(let Self { table } = out);
30035            ::fidl_next::wire::Table::zero_padding(table);
30036        }
30037    }
30038
30039    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for ExposeDictionary<'de>
30040    where
30041        ___D: ::fidl_next::Decoder<'de> + ?Sized,
30042    {
30043        fn decode(
30044            slot: ::fidl_next::Slot<'_, Self>,
30045            decoder: &mut ___D,
30046            _: (),
30047        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
30048            ::fidl_next::munge!(let Self { table } = slot);
30049
30050            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
30051                match ordinal {
30052                    0 => unsafe { ::core::hint::unreachable_unchecked() },
30053
30054                    1 => {
30055                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
30056                            slot.as_mut(),
30057                            decoder,
30058                            (),
30059                        )?;
30060
30061                        Ok(())
30062                    }
30063
30064                    2 => {
30065                        ::fidl_next::wire::Envelope::decode_as::<
30066                            ___D,
30067                            ::fidl_next::wire::String<'de>,
30068                        >(slot.as_mut(), decoder, 100)?;
30069
30070                        let value = unsafe {
30071                            slot.deref_unchecked()
30072                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
30073                        };
30074
30075                        if value.len() > 100 {
30076                            return Err(::fidl_next::DecodeError::VectorTooLong {
30077                                size: value.len() as u64,
30078                                limit: 100,
30079                            });
30080                        }
30081
30082                        Ok(())
30083                    }
30084
30085                    3 => {
30086                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
30087                            slot.as_mut(),
30088                            decoder,
30089                            (),
30090                        )?;
30091
30092                        Ok(())
30093                    }
30094
30095                    4 => {
30096                        ::fidl_next::wire::Envelope::decode_as::<
30097                            ___D,
30098                            ::fidl_next::wire::String<'de>,
30099                        >(slot.as_mut(), decoder, 100)?;
30100
30101                        let value = unsafe {
30102                            slot.deref_unchecked()
30103                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
30104                        };
30105
30106                        if value.len() > 100 {
30107                            return Err(::fidl_next::DecodeError::VectorTooLong {
30108                                size: value.len() as u64,
30109                                limit: 100,
30110                            });
30111                        }
30112
30113                        Ok(())
30114                    }
30115
30116                    5 => {
30117                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Availability>(
30118                            slot.as_mut(),
30119                            decoder,
30120                            (),
30121                        )?;
30122
30123                        Ok(())
30124                    }
30125
30126                    6 => {
30127                        ::fidl_next::wire::Envelope::decode_as::<
30128                            ___D,
30129                            ::fidl_next::wire::String<'de>,
30130                        >(slot.as_mut(), decoder, 1024)?;
30131
30132                        let value = unsafe {
30133                            slot.deref_unchecked()
30134                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
30135                        };
30136
30137                        if value.len() > 1024 {
30138                            return Err(::fidl_next::DecodeError::VectorTooLong {
30139                                size: value.len() as u64,
30140                                limit: 1024,
30141                            });
30142                        }
30143
30144                        Ok(())
30145                    }
30146
30147                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
30148                }
30149            })
30150        }
30151    }
30152
30153    impl<'de> ExposeDictionary<'de> {
30154        pub fn source(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
30155            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
30156        }
30157
30158        pub fn take_source(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
30159            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
30160        }
30161
30162        pub fn source_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
30163            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
30164        }
30165
30166        pub fn take_source_name(
30167            &mut self,
30168        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
30169            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
30170        }
30171
30172        pub fn target(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
30173            unsafe { Some(self.table.get(3)?.deref_unchecked()) }
30174        }
30175
30176        pub fn take_target(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
30177            unsafe { Some(self.table.get_mut(3)?.take_unchecked()) }
30178        }
30179
30180        pub fn target_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
30181            unsafe { Some(self.table.get(4)?.deref_unchecked()) }
30182        }
30183
30184        pub fn take_target_name(
30185            &mut self,
30186        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
30187            unsafe { Some(self.table.get_mut(4)?.take_unchecked()) }
30188        }
30189
30190        pub fn availability(&self) -> ::core::option::Option<&crate::wire::Availability> {
30191            unsafe { Some(self.table.get(5)?.deref_unchecked()) }
30192        }
30193
30194        pub fn take_availability(&mut self) -> ::core::option::Option<crate::wire::Availability> {
30195            unsafe { Some(self.table.get_mut(5)?.take_unchecked()) }
30196        }
30197
30198        pub fn source_dictionary(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
30199            unsafe { Some(self.table.get(6)?.deref_unchecked()) }
30200        }
30201
30202        pub fn take_source_dictionary(
30203            &mut self,
30204        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
30205            unsafe { Some(self.table.get_mut(6)?.take_unchecked()) }
30206        }
30207    }
30208
30209    impl<'de> ::core::fmt::Debug for ExposeDictionary<'de> {
30210        fn fmt(
30211            &self,
30212            f: &mut ::core::fmt::Formatter<'_>,
30213        ) -> ::core::result::Result<(), ::core::fmt::Error> {
30214            f.debug_struct("ExposeDictionary")
30215                .field("source", &self.source())
30216                .field("source_name", &self.source_name())
30217                .field("target", &self.target())
30218                .field("target_name", &self.target_name())
30219                .field("availability", &self.availability())
30220                .field("source_dictionary", &self.source_dictionary())
30221                .finish()
30222        }
30223    }
30224
30225    impl<'de> ::fidl_next::IntoNatural for ExposeDictionary<'de> {
30226        type Natural = crate::natural::ExposeDictionary;
30227    }
30228
30229    /// The wire type corresponding to [`ExposeConfiguration`].
30230    #[repr(C)]
30231    pub struct ExposeConfiguration<'de> {
30232        pub(crate) table: ::fidl_next::wire::Table<'de>,
30233    }
30234
30235    impl<'de> Drop for ExposeConfiguration<'de> {
30236        fn drop(&mut self) {
30237            let _ = self
30238                .table
30239                .get(1)
30240                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
30241
30242            let _ = self.table.get(2).map(|envelope| unsafe {
30243                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
30244            });
30245
30246            let _ = self
30247                .table
30248                .get(3)
30249                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
30250
30251            let _ = self.table.get(4).map(|envelope| unsafe {
30252                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
30253            });
30254
30255            let _ = self
30256                .table
30257                .get(5)
30258                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Availability>() });
30259
30260            let _ = self.table.get(6).map(|envelope| unsafe {
30261                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
30262            });
30263        }
30264    }
30265
30266    impl ::fidl_next::Constrained for ExposeConfiguration<'_> {
30267        type Constraint = ();
30268
30269        fn validate(
30270            _: ::fidl_next::Slot<'_, Self>,
30271            _: Self::Constraint,
30272        ) -> Result<(), ::fidl_next::ValidationError> {
30273            Ok(())
30274        }
30275    }
30276
30277    unsafe impl ::fidl_next::Wire for ExposeConfiguration<'static> {
30278        type Narrowed<'de> = ExposeConfiguration<'de>;
30279
30280        #[inline]
30281        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
30282            ::fidl_next::munge!(let Self { table } = out);
30283            ::fidl_next::wire::Table::zero_padding(table);
30284        }
30285    }
30286
30287    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for ExposeConfiguration<'de>
30288    where
30289        ___D: ::fidl_next::Decoder<'de> + ?Sized,
30290    {
30291        fn decode(
30292            slot: ::fidl_next::Slot<'_, Self>,
30293            decoder: &mut ___D,
30294            _: (),
30295        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
30296            ::fidl_next::munge!(let Self { table } = slot);
30297
30298            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
30299                match ordinal {
30300                    0 => unsafe { ::core::hint::unreachable_unchecked() },
30301
30302                    1 => {
30303                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
30304                            slot.as_mut(),
30305                            decoder,
30306                            (),
30307                        )?;
30308
30309                        Ok(())
30310                    }
30311
30312                    2 => {
30313                        ::fidl_next::wire::Envelope::decode_as::<
30314                            ___D,
30315                            ::fidl_next::wire::String<'de>,
30316                        >(slot.as_mut(), decoder, 100)?;
30317
30318                        let value = unsafe {
30319                            slot.deref_unchecked()
30320                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
30321                        };
30322
30323                        if value.len() > 100 {
30324                            return Err(::fidl_next::DecodeError::VectorTooLong {
30325                                size: value.len() as u64,
30326                                limit: 100,
30327                            });
30328                        }
30329
30330                        Ok(())
30331                    }
30332
30333                    3 => {
30334                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
30335                            slot.as_mut(),
30336                            decoder,
30337                            (),
30338                        )?;
30339
30340                        Ok(())
30341                    }
30342
30343                    4 => {
30344                        ::fidl_next::wire::Envelope::decode_as::<
30345                            ___D,
30346                            ::fidl_next::wire::String<'de>,
30347                        >(slot.as_mut(), decoder, 100)?;
30348
30349                        let value = unsafe {
30350                            slot.deref_unchecked()
30351                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
30352                        };
30353
30354                        if value.len() > 100 {
30355                            return Err(::fidl_next::DecodeError::VectorTooLong {
30356                                size: value.len() as u64,
30357                                limit: 100,
30358                            });
30359                        }
30360
30361                        Ok(())
30362                    }
30363
30364                    5 => {
30365                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Availability>(
30366                            slot.as_mut(),
30367                            decoder,
30368                            (),
30369                        )?;
30370
30371                        Ok(())
30372                    }
30373
30374                    6 => {
30375                        ::fidl_next::wire::Envelope::decode_as::<
30376                            ___D,
30377                            ::fidl_next::wire::String<'de>,
30378                        >(slot.as_mut(), decoder, 1024)?;
30379
30380                        let value = unsafe {
30381                            slot.deref_unchecked()
30382                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
30383                        };
30384
30385                        if value.len() > 1024 {
30386                            return Err(::fidl_next::DecodeError::VectorTooLong {
30387                                size: value.len() as u64,
30388                                limit: 1024,
30389                            });
30390                        }
30391
30392                        Ok(())
30393                    }
30394
30395                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
30396                }
30397            })
30398        }
30399    }
30400
30401    impl<'de> ExposeConfiguration<'de> {
30402        pub fn source(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
30403            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
30404        }
30405
30406        pub fn take_source(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
30407            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
30408        }
30409
30410        pub fn source_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
30411            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
30412        }
30413
30414        pub fn take_source_name(
30415            &mut self,
30416        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
30417            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
30418        }
30419
30420        pub fn target(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
30421            unsafe { Some(self.table.get(3)?.deref_unchecked()) }
30422        }
30423
30424        pub fn take_target(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
30425            unsafe { Some(self.table.get_mut(3)?.take_unchecked()) }
30426        }
30427
30428        pub fn target_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
30429            unsafe { Some(self.table.get(4)?.deref_unchecked()) }
30430        }
30431
30432        pub fn take_target_name(
30433            &mut self,
30434        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
30435            unsafe { Some(self.table.get_mut(4)?.take_unchecked()) }
30436        }
30437
30438        pub fn availability(&self) -> ::core::option::Option<&crate::wire::Availability> {
30439            unsafe { Some(self.table.get(5)?.deref_unchecked()) }
30440        }
30441
30442        pub fn take_availability(&mut self) -> ::core::option::Option<crate::wire::Availability> {
30443            unsafe { Some(self.table.get_mut(5)?.take_unchecked()) }
30444        }
30445
30446        pub fn source_dictionary(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
30447            unsafe { Some(self.table.get(6)?.deref_unchecked()) }
30448        }
30449
30450        pub fn take_source_dictionary(
30451            &mut self,
30452        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
30453            unsafe { Some(self.table.get_mut(6)?.take_unchecked()) }
30454        }
30455    }
30456
30457    impl<'de> ::core::fmt::Debug for ExposeConfiguration<'de> {
30458        fn fmt(
30459            &self,
30460            f: &mut ::core::fmt::Formatter<'_>,
30461        ) -> ::core::result::Result<(), ::core::fmt::Error> {
30462            f.debug_struct("ExposeConfiguration")
30463                .field("source", &self.source())
30464                .field("source_name", &self.source_name())
30465                .field("target", &self.target())
30466                .field("target_name", &self.target_name())
30467                .field("availability", &self.availability())
30468                .field("source_dictionary", &self.source_dictionary())
30469                .finish()
30470        }
30471    }
30472
30473    impl<'de> ::fidl_next::IntoNatural for ExposeConfiguration<'de> {
30474        type Natural = crate::natural::ExposeConfiguration;
30475    }
30476
30477    /// The wire type corresponding to [`Expose`].
30478    #[repr(transparent)]
30479    pub struct Expose<'de> {
30480        pub(crate) raw: ::fidl_next::wire::Union,
30481        pub(crate) _phantom: ::core::marker::PhantomData<&'de mut [::fidl_next::Chunk]>,
30482    }
30483
30484    impl<'de> Drop for Expose<'de> {
30485        fn drop(&mut self) {
30486            match self.raw.ordinal() {
30487                1 => {
30488                    let _ = unsafe {
30489                        self.raw.get().read_unchecked::<crate::wire::ExposeService<'de>>()
30490                    };
30491                }
30492
30493                2 => {
30494                    let _ = unsafe {
30495                        self.raw.get().read_unchecked::<crate::wire::ExposeProtocol<'de>>()
30496                    };
30497                }
30498
30499                3 => {
30500                    let _ = unsafe {
30501                        self.raw.get().read_unchecked::<crate::wire::ExposeDirectory<'de>>()
30502                    };
30503                }
30504
30505                4 => {
30506                    let _ = unsafe {
30507                        self.raw.get().read_unchecked::<crate::wire::ExposeRunner<'de>>()
30508                    };
30509                }
30510
30511                5 => {
30512                    let _ = unsafe {
30513                        self.raw.get().read_unchecked::<crate::wire::ExposeResolver<'de>>()
30514                    };
30515                }
30516
30517                7 => {
30518                    let _ = unsafe {
30519                        self.raw.get().read_unchecked::<crate::wire::ExposeDictionary<'de>>()
30520                    };
30521                }
30522
30523                8 => {
30524                    let _ = unsafe {
30525                        self.raw.get().read_unchecked::<crate::wire::ExposeConfiguration<'de>>()
30526                    };
30527                }
30528
30529                _ => (),
30530            }
30531        }
30532    }
30533
30534    impl ::fidl_next::Constrained for Expose<'_> {
30535        type Constraint = ();
30536
30537        fn validate(
30538            _: ::fidl_next::Slot<'_, Self>,
30539            _: Self::Constraint,
30540        ) -> Result<(), ::fidl_next::ValidationError> {
30541            Ok(())
30542        }
30543    }
30544
30545    unsafe impl ::fidl_next::Wire for Expose<'static> {
30546        type Narrowed<'de> = Expose<'de>;
30547
30548        #[inline]
30549        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
30550            ::fidl_next::munge!(let Self { raw, _phantom: _ } = out);
30551            ::fidl_next::wire::Union::zero_padding(raw);
30552        }
30553    }
30554
30555    pub mod expose {
30556        pub enum Ref<'de> {
30557            Service(&'de crate::wire::ExposeService<'de>),
30558
30559            Protocol(&'de crate::wire::ExposeProtocol<'de>),
30560
30561            Directory(&'de crate::wire::ExposeDirectory<'de>),
30562
30563            Runner(&'de crate::wire::ExposeRunner<'de>),
30564
30565            Resolver(&'de crate::wire::ExposeResolver<'de>),
30566
30567            Dictionary(&'de crate::wire::ExposeDictionary<'de>),
30568
30569            Config(&'de crate::wire::ExposeConfiguration<'de>),
30570
30571            UnknownOrdinal_(u64),
30572        }
30573
30574        pub enum Value<'de> {
30575            Service(crate::wire::ExposeService<'de>),
30576
30577            Protocol(crate::wire::ExposeProtocol<'de>),
30578
30579            Directory(crate::wire::ExposeDirectory<'de>),
30580
30581            Runner(crate::wire::ExposeRunner<'de>),
30582
30583            Resolver(crate::wire::ExposeResolver<'de>),
30584
30585            Dictionary(crate::wire::ExposeDictionary<'de>),
30586
30587            Config(crate::wire::ExposeConfiguration<'de>),
30588
30589            UnknownOrdinal_(u64),
30590        }
30591    }
30592
30593    impl<'de> Expose<'de> {
30594        pub fn as_ref(&self) -> crate::wire::expose::Ref<'_> {
30595            match self.raw.ordinal() {
30596                1 => crate::wire::expose::Ref::Service(unsafe {
30597                    self.raw.get().deref_unchecked::<crate::wire::ExposeService<'_>>()
30598                }),
30599
30600                2 => crate::wire::expose::Ref::Protocol(unsafe {
30601                    self.raw.get().deref_unchecked::<crate::wire::ExposeProtocol<'_>>()
30602                }),
30603
30604                3 => crate::wire::expose::Ref::Directory(unsafe {
30605                    self.raw.get().deref_unchecked::<crate::wire::ExposeDirectory<'_>>()
30606                }),
30607
30608                4 => crate::wire::expose::Ref::Runner(unsafe {
30609                    self.raw.get().deref_unchecked::<crate::wire::ExposeRunner<'_>>()
30610                }),
30611
30612                5 => crate::wire::expose::Ref::Resolver(unsafe {
30613                    self.raw.get().deref_unchecked::<crate::wire::ExposeResolver<'_>>()
30614                }),
30615
30616                7 => crate::wire::expose::Ref::Dictionary(unsafe {
30617                    self.raw.get().deref_unchecked::<crate::wire::ExposeDictionary<'_>>()
30618                }),
30619
30620                8 => crate::wire::expose::Ref::Config(unsafe {
30621                    self.raw.get().deref_unchecked::<crate::wire::ExposeConfiguration<'_>>()
30622                }),
30623
30624                unknown => crate::wire::expose::Ref::UnknownOrdinal_(unknown),
30625            }
30626        }
30627
30628        pub fn into_inner(self) -> crate::wire::expose::Value<'de> {
30629            let this = ::core::mem::ManuallyDrop::new(self);
30630
30631            match this.raw.ordinal() {
30632                1 => crate::wire::expose::Value::Service(unsafe {
30633                    this.raw.get().read_unchecked::<crate::wire::ExposeService<'de>>()
30634                }),
30635
30636                2 => crate::wire::expose::Value::Protocol(unsafe {
30637                    this.raw.get().read_unchecked::<crate::wire::ExposeProtocol<'de>>()
30638                }),
30639
30640                3 => crate::wire::expose::Value::Directory(unsafe {
30641                    this.raw.get().read_unchecked::<crate::wire::ExposeDirectory<'de>>()
30642                }),
30643
30644                4 => crate::wire::expose::Value::Runner(unsafe {
30645                    this.raw.get().read_unchecked::<crate::wire::ExposeRunner<'de>>()
30646                }),
30647
30648                5 => crate::wire::expose::Value::Resolver(unsafe {
30649                    this.raw.get().read_unchecked::<crate::wire::ExposeResolver<'de>>()
30650                }),
30651
30652                7 => crate::wire::expose::Value::Dictionary(unsafe {
30653                    this.raw.get().read_unchecked::<crate::wire::ExposeDictionary<'de>>()
30654                }),
30655
30656                8 => crate::wire::expose::Value::Config(unsafe {
30657                    this.raw.get().read_unchecked::<crate::wire::ExposeConfiguration<'de>>()
30658                }),
30659
30660                unknown => crate::wire::expose::Value::UnknownOrdinal_(unknown),
30661            }
30662        }
30663    }
30664
30665    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for Expose<'de>
30666    where
30667        ___D: ::fidl_next::decoder::InternalHandleDecoder + ?Sized,
30668        ___D: ::fidl_next::Decoder<'de>,
30669    {
30670        fn decode(
30671            mut slot: ::fidl_next::Slot<'_, Self>,
30672            decoder: &mut ___D,
30673            _: (),
30674        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
30675            ::fidl_next::munge!(let Self { mut raw, _phantom: _ } = slot.as_mut());
30676            match ::fidl_next::wire::Union::encoded_ordinal(raw.as_mut()) {
30677                1 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::ExposeService<'de>>(
30678                    raw,
30679                    decoder,
30680                    (),
30681                )?,
30682
30683                2 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::ExposeProtocol<'de>>(
30684                    raw,
30685                    decoder,
30686                    (),
30687                )?,
30688
30689                3 => {
30690                    ::fidl_next::wire::Union::decode_as::<___D, crate::wire::ExposeDirectory<'de>>(
30691                        raw,
30692                        decoder,
30693                        (),
30694                    )?
30695                }
30696
30697                4 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::ExposeRunner<'de>>(
30698                    raw,
30699                    decoder,
30700                    (),
30701                )?,
30702
30703                5 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::ExposeResolver<'de>>(
30704                    raw,
30705                    decoder,
30706                    (),
30707                )?,
30708
30709                7 => {
30710                    ::fidl_next::wire::Union::decode_as::<___D, crate::wire::ExposeDictionary<'de>>(
30711                        raw,
30712                        decoder,
30713                        (),
30714                    )?
30715                }
30716
30717                8 => ::fidl_next::wire::Union::decode_as::<
30718                    ___D,
30719                    crate::wire::ExposeConfiguration<'de>,
30720                >(raw, decoder, ())?,
30721
30722                _ => ::fidl_next::wire::Union::decode_unknown(raw, decoder)?,
30723            }
30724
30725            Ok(())
30726        }
30727    }
30728
30729    impl<'de> ::core::fmt::Debug for Expose<'de> {
30730        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
30731            match self.raw.ordinal() {
30732                1 => unsafe {
30733                    self.raw.get().deref_unchecked::<crate::wire::ExposeService<'_>>().fmt(f)
30734                },
30735                2 => unsafe {
30736                    self.raw.get().deref_unchecked::<crate::wire::ExposeProtocol<'_>>().fmt(f)
30737                },
30738                3 => unsafe {
30739                    self.raw.get().deref_unchecked::<crate::wire::ExposeDirectory<'_>>().fmt(f)
30740                },
30741                4 => unsafe {
30742                    self.raw.get().deref_unchecked::<crate::wire::ExposeRunner<'_>>().fmt(f)
30743                },
30744                5 => unsafe {
30745                    self.raw.get().deref_unchecked::<crate::wire::ExposeResolver<'_>>().fmt(f)
30746                },
30747                7 => unsafe {
30748                    self.raw.get().deref_unchecked::<crate::wire::ExposeDictionary<'_>>().fmt(f)
30749                },
30750                8 => unsafe {
30751                    self.raw.get().deref_unchecked::<crate::wire::ExposeConfiguration<'_>>().fmt(f)
30752                },
30753                _ => unsafe { ::core::hint::unreachable_unchecked() },
30754            }
30755        }
30756    }
30757
30758    impl<'de> ::fidl_next::IntoNatural for Expose<'de> {
30759        type Natural = crate::natural::Expose;
30760    }
30761
30762    /// The wire type corresponding to [`OfferService`].
30763    #[repr(C)]
30764    pub struct OfferService<'de> {
30765        pub(crate) table: ::fidl_next::wire::Table<'de>,
30766    }
30767
30768    impl<'de> Drop for OfferService<'de> {
30769        fn drop(&mut self) {
30770            let _ = self
30771                .table
30772                .get(1)
30773                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
30774
30775            let _ = self.table.get(2).map(|envelope| unsafe {
30776                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
30777            });
30778
30779            let _ = self
30780                .table
30781                .get(3)
30782                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
30783
30784            let _ = self.table.get(4).map(|envelope| unsafe {
30785                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
30786            });
30787
30788            let _ = self.table.get(5)
30789                .map(|envelope| unsafe {
30790                    envelope.read_unchecked::<::fidl_next::wire::Vector<'de, ::fidl_next::wire::String<'de>>>()
30791                });
30792
30793            let _ = self.table.get(6)
30794                .map(|envelope| unsafe {
30795                    envelope.read_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::NameMapping<'de>>>()
30796                });
30797
30798            let _ = self
30799                .table
30800                .get(7)
30801                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Availability>() });
30802
30803            let _ = self.table.get(8).map(|envelope| unsafe {
30804                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
30805            });
30806
30807            let _ = self.table.get(9).map(|envelope| unsafe {
30808                envelope.read_unchecked::<crate::wire::DependencyType>()
30809            });
30810        }
30811    }
30812
30813    impl ::fidl_next::Constrained for OfferService<'_> {
30814        type Constraint = ();
30815
30816        fn validate(
30817            _: ::fidl_next::Slot<'_, Self>,
30818            _: Self::Constraint,
30819        ) -> Result<(), ::fidl_next::ValidationError> {
30820            Ok(())
30821        }
30822    }
30823
30824    unsafe impl ::fidl_next::Wire for OfferService<'static> {
30825        type Narrowed<'de> = OfferService<'de>;
30826
30827        #[inline]
30828        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
30829            ::fidl_next::munge!(let Self { table } = out);
30830            ::fidl_next::wire::Table::zero_padding(table);
30831        }
30832    }
30833
30834    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for OfferService<'de>
30835    where
30836        ___D: ::fidl_next::Decoder<'de> + ?Sized,
30837    {
30838        fn decode(
30839            slot: ::fidl_next::Slot<'_, Self>,
30840            decoder: &mut ___D,
30841            _: (),
30842        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
30843            ::fidl_next::munge!(let Self { table } = slot);
30844
30845            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
30846                match ordinal {
30847                    0 => unsafe { ::core::hint::unreachable_unchecked() },
30848
30849                    1 => {
30850                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
30851                            slot.as_mut(),
30852                            decoder,
30853                            (),
30854                        )?;
30855
30856                        Ok(())
30857                    }
30858
30859                    2 => {
30860                        ::fidl_next::wire::Envelope::decode_as::<
30861                            ___D,
30862                            ::fidl_next::wire::String<'de>,
30863                        >(slot.as_mut(), decoder, 100)?;
30864
30865                        let value = unsafe {
30866                            slot.deref_unchecked()
30867                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
30868                        };
30869
30870                        if value.len() > 100 {
30871                            return Err(::fidl_next::DecodeError::VectorTooLong {
30872                                size: value.len() as u64,
30873                                limit: 100,
30874                            });
30875                        }
30876
30877                        Ok(())
30878                    }
30879
30880                    3 => {
30881                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
30882                            slot.as_mut(),
30883                            decoder,
30884                            (),
30885                        )?;
30886
30887                        Ok(())
30888                    }
30889
30890                    4 => {
30891                        ::fidl_next::wire::Envelope::decode_as::<
30892                            ___D,
30893                            ::fidl_next::wire::String<'de>,
30894                        >(slot.as_mut(), decoder, 100)?;
30895
30896                        let value = unsafe {
30897                            slot.deref_unchecked()
30898                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
30899                        };
30900
30901                        if value.len() > 100 {
30902                            return Err(::fidl_next::DecodeError::VectorTooLong {
30903                                size: value.len() as u64,
30904                                limit: 100,
30905                            });
30906                        }
30907
30908                        Ok(())
30909                    }
30910
30911                    5 => {
30912                        ::fidl_next::wire::Envelope::decode_as::<
30913                            ___D,
30914                            ::fidl_next::wire::Vector<'de, ::fidl_next::wire::String<'de>>,
30915                        >(slot.as_mut(), decoder, (4294967295, 100))?;
30916
30917                        Ok(())
30918                    }
30919
30920                    6 => {
30921                        ::fidl_next::wire::Envelope::decode_as::<
30922                            ___D,
30923                            ::fidl_next::wire::Vector<'de, crate::wire::NameMapping<'de>>,
30924                        >(slot.as_mut(), decoder, (4294967295, ()))?;
30925
30926                        Ok(())
30927                    }
30928
30929                    7 => {
30930                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Availability>(
30931                            slot.as_mut(),
30932                            decoder,
30933                            (),
30934                        )?;
30935
30936                        Ok(())
30937                    }
30938
30939                    8 => {
30940                        ::fidl_next::wire::Envelope::decode_as::<
30941                            ___D,
30942                            ::fidl_next::wire::String<'de>,
30943                        >(slot.as_mut(), decoder, 1024)?;
30944
30945                        let value = unsafe {
30946                            slot.deref_unchecked()
30947                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
30948                        };
30949
30950                        if value.len() > 1024 {
30951                            return Err(::fidl_next::DecodeError::VectorTooLong {
30952                                size: value.len() as u64,
30953                                limit: 1024,
30954                            });
30955                        }
30956
30957                        Ok(())
30958                    }
30959
30960                    9 => {
30961                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::DependencyType>(
30962                            slot.as_mut(),
30963                            decoder,
30964                            (),
30965                        )?;
30966
30967                        Ok(())
30968                    }
30969
30970                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
30971                }
30972            })
30973        }
30974    }
30975
30976    impl<'de> OfferService<'de> {
30977        pub fn source(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
30978            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
30979        }
30980
30981        pub fn take_source(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
30982            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
30983        }
30984
30985        pub fn source_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
30986            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
30987        }
30988
30989        pub fn take_source_name(
30990            &mut self,
30991        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
30992            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
30993        }
30994
30995        pub fn target(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
30996            unsafe { Some(self.table.get(3)?.deref_unchecked()) }
30997        }
30998
30999        pub fn take_target(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
31000            unsafe { Some(self.table.get_mut(3)?.take_unchecked()) }
31001        }
31002
31003        pub fn target_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
31004            unsafe { Some(self.table.get(4)?.deref_unchecked()) }
31005        }
31006
31007        pub fn take_target_name(
31008            &mut self,
31009        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
31010            unsafe { Some(self.table.get_mut(4)?.take_unchecked()) }
31011        }
31012
31013        pub fn source_instance_filter(
31014            &self,
31015        ) -> ::core::option::Option<&::fidl_next::wire::Vector<'de, ::fidl_next::wire::String<'de>>>
31016        {
31017            unsafe { Some(self.table.get(5)?.deref_unchecked()) }
31018        }
31019
31020        pub fn take_source_instance_filter(
31021            &mut self,
31022        ) -> ::core::option::Option<::fidl_next::wire::Vector<'de, ::fidl_next::wire::String<'de>>>
31023        {
31024            unsafe { Some(self.table.get_mut(5)?.take_unchecked()) }
31025        }
31026
31027        pub fn renamed_instances(
31028            &self,
31029        ) -> ::core::option::Option<&::fidl_next::wire::Vector<'de, crate::wire::NameMapping<'de>>>
31030        {
31031            unsafe { Some(self.table.get(6)?.deref_unchecked()) }
31032        }
31033
31034        pub fn take_renamed_instances(
31035            &mut self,
31036        ) -> ::core::option::Option<::fidl_next::wire::Vector<'de, crate::wire::NameMapping<'de>>>
31037        {
31038            unsafe { Some(self.table.get_mut(6)?.take_unchecked()) }
31039        }
31040
31041        pub fn availability(&self) -> ::core::option::Option<&crate::wire::Availability> {
31042            unsafe { Some(self.table.get(7)?.deref_unchecked()) }
31043        }
31044
31045        pub fn take_availability(&mut self) -> ::core::option::Option<crate::wire::Availability> {
31046            unsafe { Some(self.table.get_mut(7)?.take_unchecked()) }
31047        }
31048
31049        pub fn source_dictionary(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
31050            unsafe { Some(self.table.get(8)?.deref_unchecked()) }
31051        }
31052
31053        pub fn take_source_dictionary(
31054            &mut self,
31055        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
31056            unsafe { Some(self.table.get_mut(8)?.take_unchecked()) }
31057        }
31058
31059        pub fn dependency_type(&self) -> ::core::option::Option<&crate::wire::DependencyType> {
31060            unsafe { Some(self.table.get(9)?.deref_unchecked()) }
31061        }
31062
31063        pub fn take_dependency_type(
31064            &mut self,
31065        ) -> ::core::option::Option<crate::wire::DependencyType> {
31066            unsafe { Some(self.table.get_mut(9)?.take_unchecked()) }
31067        }
31068    }
31069
31070    impl<'de> ::core::fmt::Debug for OfferService<'de> {
31071        fn fmt(
31072            &self,
31073            f: &mut ::core::fmt::Formatter<'_>,
31074        ) -> ::core::result::Result<(), ::core::fmt::Error> {
31075            f.debug_struct("OfferService")
31076                .field("source", &self.source())
31077                .field("source_name", &self.source_name())
31078                .field("target", &self.target())
31079                .field("target_name", &self.target_name())
31080                .field("source_instance_filter", &self.source_instance_filter())
31081                .field("renamed_instances", &self.renamed_instances())
31082                .field("availability", &self.availability())
31083                .field("source_dictionary", &self.source_dictionary())
31084                .field("dependency_type", &self.dependency_type())
31085                .finish()
31086        }
31087    }
31088
31089    impl<'de> ::fidl_next::IntoNatural for OfferService<'de> {
31090        type Natural = crate::natural::OfferService;
31091    }
31092
31093    /// The wire type corresponding to [`OfferProtocol`].
31094    #[repr(C)]
31095    pub struct OfferProtocol<'de> {
31096        pub(crate) table: ::fidl_next::wire::Table<'de>,
31097    }
31098
31099    impl<'de> Drop for OfferProtocol<'de> {
31100        fn drop(&mut self) {
31101            let _ = self
31102                .table
31103                .get(1)
31104                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
31105
31106            let _ = self.table.get(2).map(|envelope| unsafe {
31107                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
31108            });
31109
31110            let _ = self
31111                .table
31112                .get(3)
31113                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
31114
31115            let _ = self.table.get(4).map(|envelope| unsafe {
31116                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
31117            });
31118
31119            let _ = self.table.get(5).map(|envelope| unsafe {
31120                envelope.read_unchecked::<crate::wire::DependencyType>()
31121            });
31122
31123            let _ = self
31124                .table
31125                .get(6)
31126                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Availability>() });
31127
31128            let _ = self.table.get(7).map(|envelope| unsafe {
31129                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
31130            });
31131        }
31132    }
31133
31134    impl ::fidl_next::Constrained for OfferProtocol<'_> {
31135        type Constraint = ();
31136
31137        fn validate(
31138            _: ::fidl_next::Slot<'_, Self>,
31139            _: Self::Constraint,
31140        ) -> Result<(), ::fidl_next::ValidationError> {
31141            Ok(())
31142        }
31143    }
31144
31145    unsafe impl ::fidl_next::Wire for OfferProtocol<'static> {
31146        type Narrowed<'de> = OfferProtocol<'de>;
31147
31148        #[inline]
31149        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
31150            ::fidl_next::munge!(let Self { table } = out);
31151            ::fidl_next::wire::Table::zero_padding(table);
31152        }
31153    }
31154
31155    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for OfferProtocol<'de>
31156    where
31157        ___D: ::fidl_next::Decoder<'de> + ?Sized,
31158    {
31159        fn decode(
31160            slot: ::fidl_next::Slot<'_, Self>,
31161            decoder: &mut ___D,
31162            _: (),
31163        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
31164            ::fidl_next::munge!(let Self { table } = slot);
31165
31166            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
31167                match ordinal {
31168                    0 => unsafe { ::core::hint::unreachable_unchecked() },
31169
31170                    1 => {
31171                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
31172                            slot.as_mut(),
31173                            decoder,
31174                            (),
31175                        )?;
31176
31177                        Ok(())
31178                    }
31179
31180                    2 => {
31181                        ::fidl_next::wire::Envelope::decode_as::<
31182                            ___D,
31183                            ::fidl_next::wire::String<'de>,
31184                        >(slot.as_mut(), decoder, 100)?;
31185
31186                        let value = unsafe {
31187                            slot.deref_unchecked()
31188                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
31189                        };
31190
31191                        if value.len() > 100 {
31192                            return Err(::fidl_next::DecodeError::VectorTooLong {
31193                                size: value.len() as u64,
31194                                limit: 100,
31195                            });
31196                        }
31197
31198                        Ok(())
31199                    }
31200
31201                    3 => {
31202                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
31203                            slot.as_mut(),
31204                            decoder,
31205                            (),
31206                        )?;
31207
31208                        Ok(())
31209                    }
31210
31211                    4 => {
31212                        ::fidl_next::wire::Envelope::decode_as::<
31213                            ___D,
31214                            ::fidl_next::wire::String<'de>,
31215                        >(slot.as_mut(), decoder, 100)?;
31216
31217                        let value = unsafe {
31218                            slot.deref_unchecked()
31219                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
31220                        };
31221
31222                        if value.len() > 100 {
31223                            return Err(::fidl_next::DecodeError::VectorTooLong {
31224                                size: value.len() as u64,
31225                                limit: 100,
31226                            });
31227                        }
31228
31229                        Ok(())
31230                    }
31231
31232                    5 => {
31233                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::DependencyType>(
31234                            slot.as_mut(),
31235                            decoder,
31236                            (),
31237                        )?;
31238
31239                        Ok(())
31240                    }
31241
31242                    6 => {
31243                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Availability>(
31244                            slot.as_mut(),
31245                            decoder,
31246                            (),
31247                        )?;
31248
31249                        Ok(())
31250                    }
31251
31252                    7 => {
31253                        ::fidl_next::wire::Envelope::decode_as::<
31254                            ___D,
31255                            ::fidl_next::wire::String<'de>,
31256                        >(slot.as_mut(), decoder, 1024)?;
31257
31258                        let value = unsafe {
31259                            slot.deref_unchecked()
31260                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
31261                        };
31262
31263                        if value.len() > 1024 {
31264                            return Err(::fidl_next::DecodeError::VectorTooLong {
31265                                size: value.len() as u64,
31266                                limit: 1024,
31267                            });
31268                        }
31269
31270                        Ok(())
31271                    }
31272
31273                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
31274                }
31275            })
31276        }
31277    }
31278
31279    impl<'de> OfferProtocol<'de> {
31280        pub fn source(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
31281            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
31282        }
31283
31284        pub fn take_source(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
31285            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
31286        }
31287
31288        pub fn source_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
31289            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
31290        }
31291
31292        pub fn take_source_name(
31293            &mut self,
31294        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
31295            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
31296        }
31297
31298        pub fn target(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
31299            unsafe { Some(self.table.get(3)?.deref_unchecked()) }
31300        }
31301
31302        pub fn take_target(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
31303            unsafe { Some(self.table.get_mut(3)?.take_unchecked()) }
31304        }
31305
31306        pub fn target_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
31307            unsafe { Some(self.table.get(4)?.deref_unchecked()) }
31308        }
31309
31310        pub fn take_target_name(
31311            &mut self,
31312        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
31313            unsafe { Some(self.table.get_mut(4)?.take_unchecked()) }
31314        }
31315
31316        pub fn dependency_type(&self) -> ::core::option::Option<&crate::wire::DependencyType> {
31317            unsafe { Some(self.table.get(5)?.deref_unchecked()) }
31318        }
31319
31320        pub fn take_dependency_type(
31321            &mut self,
31322        ) -> ::core::option::Option<crate::wire::DependencyType> {
31323            unsafe { Some(self.table.get_mut(5)?.take_unchecked()) }
31324        }
31325
31326        pub fn availability(&self) -> ::core::option::Option<&crate::wire::Availability> {
31327            unsafe { Some(self.table.get(6)?.deref_unchecked()) }
31328        }
31329
31330        pub fn take_availability(&mut self) -> ::core::option::Option<crate::wire::Availability> {
31331            unsafe { Some(self.table.get_mut(6)?.take_unchecked()) }
31332        }
31333
31334        pub fn source_dictionary(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
31335            unsafe { Some(self.table.get(7)?.deref_unchecked()) }
31336        }
31337
31338        pub fn take_source_dictionary(
31339            &mut self,
31340        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
31341            unsafe { Some(self.table.get_mut(7)?.take_unchecked()) }
31342        }
31343    }
31344
31345    impl<'de> ::core::fmt::Debug for OfferProtocol<'de> {
31346        fn fmt(
31347            &self,
31348            f: &mut ::core::fmt::Formatter<'_>,
31349        ) -> ::core::result::Result<(), ::core::fmt::Error> {
31350            f.debug_struct("OfferProtocol")
31351                .field("source", &self.source())
31352                .field("source_name", &self.source_name())
31353                .field("target", &self.target())
31354                .field("target_name", &self.target_name())
31355                .field("dependency_type", &self.dependency_type())
31356                .field("availability", &self.availability())
31357                .field("source_dictionary", &self.source_dictionary())
31358                .finish()
31359        }
31360    }
31361
31362    impl<'de> ::fidl_next::IntoNatural for OfferProtocol<'de> {
31363        type Natural = crate::natural::OfferProtocol;
31364    }
31365
31366    /// The wire type corresponding to [`OfferDirectory`].
31367    #[repr(C)]
31368    pub struct OfferDirectory<'de> {
31369        pub(crate) table: ::fidl_next::wire::Table<'de>,
31370    }
31371
31372    impl<'de> Drop for OfferDirectory<'de> {
31373        fn drop(&mut self) {
31374            let _ = self
31375                .table
31376                .get(1)
31377                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
31378
31379            let _ = self.table.get(2).map(|envelope| unsafe {
31380                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
31381            });
31382
31383            let _ = self
31384                .table
31385                .get(3)
31386                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
31387
31388            let _ = self.table.get(4).map(|envelope| unsafe {
31389                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
31390            });
31391
31392            let _ = self.table.get(5).map(|envelope| unsafe {
31393                envelope.read_unchecked::<::fidl_next_common_fuchsia_io::wire::Operations>()
31394            });
31395
31396            let _ = self.table.get(6).map(|envelope| unsafe {
31397                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
31398            });
31399
31400            let _ = self.table.get(7).map(|envelope| unsafe {
31401                envelope.read_unchecked::<crate::wire::DependencyType>()
31402            });
31403
31404            let _ = self
31405                .table
31406                .get(8)
31407                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Availability>() });
31408
31409            let _ = self.table.get(9).map(|envelope| unsafe {
31410                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
31411            });
31412        }
31413    }
31414
31415    impl ::fidl_next::Constrained for OfferDirectory<'_> {
31416        type Constraint = ();
31417
31418        fn validate(
31419            _: ::fidl_next::Slot<'_, Self>,
31420            _: Self::Constraint,
31421        ) -> Result<(), ::fidl_next::ValidationError> {
31422            Ok(())
31423        }
31424    }
31425
31426    unsafe impl ::fidl_next::Wire for OfferDirectory<'static> {
31427        type Narrowed<'de> = OfferDirectory<'de>;
31428
31429        #[inline]
31430        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
31431            ::fidl_next::munge!(let Self { table } = out);
31432            ::fidl_next::wire::Table::zero_padding(table);
31433        }
31434    }
31435
31436    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for OfferDirectory<'de>
31437    where
31438        ___D: ::fidl_next::Decoder<'de> + ?Sized,
31439    {
31440        fn decode(
31441            slot: ::fidl_next::Slot<'_, Self>,
31442            decoder: &mut ___D,
31443            _: (),
31444        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
31445            ::fidl_next::munge!(let Self { table } = slot);
31446
31447            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
31448                match ordinal {
31449                    0 => unsafe { ::core::hint::unreachable_unchecked() },
31450
31451                    1 => {
31452                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
31453                            slot.as_mut(),
31454                            decoder,
31455                            (),
31456                        )?;
31457
31458                        Ok(())
31459                    }
31460
31461                    2 => {
31462                        ::fidl_next::wire::Envelope::decode_as::<
31463                            ___D,
31464                            ::fidl_next::wire::String<'de>,
31465                        >(slot.as_mut(), decoder, 100)?;
31466
31467                        let value = unsafe {
31468                            slot.deref_unchecked()
31469                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
31470                        };
31471
31472                        if value.len() > 100 {
31473                            return Err(::fidl_next::DecodeError::VectorTooLong {
31474                                size: value.len() as u64,
31475                                limit: 100,
31476                            });
31477                        }
31478
31479                        Ok(())
31480                    }
31481
31482                    3 => {
31483                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
31484                            slot.as_mut(),
31485                            decoder,
31486                            (),
31487                        )?;
31488
31489                        Ok(())
31490                    }
31491
31492                    4 => {
31493                        ::fidl_next::wire::Envelope::decode_as::<
31494                            ___D,
31495                            ::fidl_next::wire::String<'de>,
31496                        >(slot.as_mut(), decoder, 100)?;
31497
31498                        let value = unsafe {
31499                            slot.deref_unchecked()
31500                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
31501                        };
31502
31503                        if value.len() > 100 {
31504                            return Err(::fidl_next::DecodeError::VectorTooLong {
31505                                size: value.len() as u64,
31506                                limit: 100,
31507                            });
31508                        }
31509
31510                        Ok(())
31511                    }
31512
31513                    5 => {
31514                        ::fidl_next::wire::Envelope::decode_as::<
31515                            ___D,
31516                            ::fidl_next_common_fuchsia_io::wire::Operations,
31517                        >(slot.as_mut(), decoder, ())?;
31518
31519                        Ok(())
31520                    }
31521
31522                    6 => {
31523                        ::fidl_next::wire::Envelope::decode_as::<
31524                            ___D,
31525                            ::fidl_next::wire::String<'de>,
31526                        >(slot.as_mut(), decoder, 1024)?;
31527
31528                        let value = unsafe {
31529                            slot.deref_unchecked()
31530                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
31531                        };
31532
31533                        if value.len() > 1024 {
31534                            return Err(::fidl_next::DecodeError::VectorTooLong {
31535                                size: value.len() as u64,
31536                                limit: 1024,
31537                            });
31538                        }
31539
31540                        Ok(())
31541                    }
31542
31543                    7 => {
31544                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::DependencyType>(
31545                            slot.as_mut(),
31546                            decoder,
31547                            (),
31548                        )?;
31549
31550                        Ok(())
31551                    }
31552
31553                    8 => {
31554                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Availability>(
31555                            slot.as_mut(),
31556                            decoder,
31557                            (),
31558                        )?;
31559
31560                        Ok(())
31561                    }
31562
31563                    9 => {
31564                        ::fidl_next::wire::Envelope::decode_as::<
31565                            ___D,
31566                            ::fidl_next::wire::String<'de>,
31567                        >(slot.as_mut(), decoder, 1024)?;
31568
31569                        let value = unsafe {
31570                            slot.deref_unchecked()
31571                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
31572                        };
31573
31574                        if value.len() > 1024 {
31575                            return Err(::fidl_next::DecodeError::VectorTooLong {
31576                                size: value.len() as u64,
31577                                limit: 1024,
31578                            });
31579                        }
31580
31581                        Ok(())
31582                    }
31583
31584                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
31585                }
31586            })
31587        }
31588    }
31589
31590    impl<'de> OfferDirectory<'de> {
31591        pub fn source(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
31592            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
31593        }
31594
31595        pub fn take_source(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
31596            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
31597        }
31598
31599        pub fn source_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
31600            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
31601        }
31602
31603        pub fn take_source_name(
31604            &mut self,
31605        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
31606            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
31607        }
31608
31609        pub fn target(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
31610            unsafe { Some(self.table.get(3)?.deref_unchecked()) }
31611        }
31612
31613        pub fn take_target(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
31614            unsafe { Some(self.table.get_mut(3)?.take_unchecked()) }
31615        }
31616
31617        pub fn target_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
31618            unsafe { Some(self.table.get(4)?.deref_unchecked()) }
31619        }
31620
31621        pub fn take_target_name(
31622            &mut self,
31623        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
31624            unsafe { Some(self.table.get_mut(4)?.take_unchecked()) }
31625        }
31626
31627        pub fn rights(
31628            &self,
31629        ) -> ::core::option::Option<&::fidl_next_common_fuchsia_io::wire::Operations> {
31630            unsafe { Some(self.table.get(5)?.deref_unchecked()) }
31631        }
31632
31633        pub fn take_rights(
31634            &mut self,
31635        ) -> ::core::option::Option<::fidl_next_common_fuchsia_io::wire::Operations> {
31636            unsafe { Some(self.table.get_mut(5)?.take_unchecked()) }
31637        }
31638
31639        pub fn subdir(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
31640            unsafe { Some(self.table.get(6)?.deref_unchecked()) }
31641        }
31642
31643        pub fn take_subdir(&mut self) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
31644            unsafe { Some(self.table.get_mut(6)?.take_unchecked()) }
31645        }
31646
31647        pub fn dependency_type(&self) -> ::core::option::Option<&crate::wire::DependencyType> {
31648            unsafe { Some(self.table.get(7)?.deref_unchecked()) }
31649        }
31650
31651        pub fn take_dependency_type(
31652            &mut self,
31653        ) -> ::core::option::Option<crate::wire::DependencyType> {
31654            unsafe { Some(self.table.get_mut(7)?.take_unchecked()) }
31655        }
31656
31657        pub fn availability(&self) -> ::core::option::Option<&crate::wire::Availability> {
31658            unsafe { Some(self.table.get(8)?.deref_unchecked()) }
31659        }
31660
31661        pub fn take_availability(&mut self) -> ::core::option::Option<crate::wire::Availability> {
31662            unsafe { Some(self.table.get_mut(8)?.take_unchecked()) }
31663        }
31664
31665        pub fn source_dictionary(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
31666            unsafe { Some(self.table.get(9)?.deref_unchecked()) }
31667        }
31668
31669        pub fn take_source_dictionary(
31670            &mut self,
31671        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
31672            unsafe { Some(self.table.get_mut(9)?.take_unchecked()) }
31673        }
31674    }
31675
31676    impl<'de> ::core::fmt::Debug for OfferDirectory<'de> {
31677        fn fmt(
31678            &self,
31679            f: &mut ::core::fmt::Formatter<'_>,
31680        ) -> ::core::result::Result<(), ::core::fmt::Error> {
31681            f.debug_struct("OfferDirectory")
31682                .field("source", &self.source())
31683                .field("source_name", &self.source_name())
31684                .field("target", &self.target())
31685                .field("target_name", &self.target_name())
31686                .field("rights", &self.rights())
31687                .field("subdir", &self.subdir())
31688                .field("dependency_type", &self.dependency_type())
31689                .field("availability", &self.availability())
31690                .field("source_dictionary", &self.source_dictionary())
31691                .finish()
31692        }
31693    }
31694
31695    impl<'de> ::fidl_next::IntoNatural for OfferDirectory<'de> {
31696        type Natural = crate::natural::OfferDirectory;
31697    }
31698
31699    /// The wire type corresponding to [`OfferStorage`].
31700    #[repr(C)]
31701    pub struct OfferStorage<'de> {
31702        pub(crate) table: ::fidl_next::wire::Table<'de>,
31703    }
31704
31705    impl<'de> Drop for OfferStorage<'de> {
31706        fn drop(&mut self) {
31707            let _ = self.table.get(1).map(|envelope| unsafe {
31708                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
31709            });
31710
31711            let _ = self
31712                .table
31713                .get(2)
31714                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
31715
31716            let _ = self
31717                .table
31718                .get(3)
31719                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
31720
31721            let _ = self.table.get(4).map(|envelope| unsafe {
31722                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
31723            });
31724
31725            let _ = self
31726                .table
31727                .get(5)
31728                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Availability>() });
31729        }
31730    }
31731
31732    impl ::fidl_next::Constrained for OfferStorage<'_> {
31733        type Constraint = ();
31734
31735        fn validate(
31736            _: ::fidl_next::Slot<'_, Self>,
31737            _: Self::Constraint,
31738        ) -> Result<(), ::fidl_next::ValidationError> {
31739            Ok(())
31740        }
31741    }
31742
31743    unsafe impl ::fidl_next::Wire for OfferStorage<'static> {
31744        type Narrowed<'de> = OfferStorage<'de>;
31745
31746        #[inline]
31747        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
31748            ::fidl_next::munge!(let Self { table } = out);
31749            ::fidl_next::wire::Table::zero_padding(table);
31750        }
31751    }
31752
31753    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for OfferStorage<'de>
31754    where
31755        ___D: ::fidl_next::Decoder<'de> + ?Sized,
31756    {
31757        fn decode(
31758            slot: ::fidl_next::Slot<'_, Self>,
31759            decoder: &mut ___D,
31760            _: (),
31761        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
31762            ::fidl_next::munge!(let Self { table } = slot);
31763
31764            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
31765                match ordinal {
31766                    0 => unsafe { ::core::hint::unreachable_unchecked() },
31767
31768                    1 => {
31769                        ::fidl_next::wire::Envelope::decode_as::<
31770                            ___D,
31771                            ::fidl_next::wire::String<'de>,
31772                        >(slot.as_mut(), decoder, 100)?;
31773
31774                        let value = unsafe {
31775                            slot.deref_unchecked()
31776                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
31777                        };
31778
31779                        if value.len() > 100 {
31780                            return Err(::fidl_next::DecodeError::VectorTooLong {
31781                                size: value.len() as u64,
31782                                limit: 100,
31783                            });
31784                        }
31785
31786                        Ok(())
31787                    }
31788
31789                    2 => {
31790                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
31791                            slot.as_mut(),
31792                            decoder,
31793                            (),
31794                        )?;
31795
31796                        Ok(())
31797                    }
31798
31799                    3 => {
31800                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
31801                            slot.as_mut(),
31802                            decoder,
31803                            (),
31804                        )?;
31805
31806                        Ok(())
31807                    }
31808
31809                    4 => {
31810                        ::fidl_next::wire::Envelope::decode_as::<
31811                            ___D,
31812                            ::fidl_next::wire::String<'de>,
31813                        >(slot.as_mut(), decoder, 100)?;
31814
31815                        let value = unsafe {
31816                            slot.deref_unchecked()
31817                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
31818                        };
31819
31820                        if value.len() > 100 {
31821                            return Err(::fidl_next::DecodeError::VectorTooLong {
31822                                size: value.len() as u64,
31823                                limit: 100,
31824                            });
31825                        }
31826
31827                        Ok(())
31828                    }
31829
31830                    5 => {
31831                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Availability>(
31832                            slot.as_mut(),
31833                            decoder,
31834                            (),
31835                        )?;
31836
31837                        Ok(())
31838                    }
31839
31840                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
31841                }
31842            })
31843        }
31844    }
31845
31846    impl<'de> OfferStorage<'de> {
31847        pub fn source_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
31848            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
31849        }
31850
31851        pub fn take_source_name(
31852            &mut self,
31853        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
31854            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
31855        }
31856
31857        pub fn source(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
31858            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
31859        }
31860
31861        pub fn take_source(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
31862            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
31863        }
31864
31865        pub fn target(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
31866            unsafe { Some(self.table.get(3)?.deref_unchecked()) }
31867        }
31868
31869        pub fn take_target(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
31870            unsafe { Some(self.table.get_mut(3)?.take_unchecked()) }
31871        }
31872
31873        pub fn target_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
31874            unsafe { Some(self.table.get(4)?.deref_unchecked()) }
31875        }
31876
31877        pub fn take_target_name(
31878            &mut self,
31879        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
31880            unsafe { Some(self.table.get_mut(4)?.take_unchecked()) }
31881        }
31882
31883        pub fn availability(&self) -> ::core::option::Option<&crate::wire::Availability> {
31884            unsafe { Some(self.table.get(5)?.deref_unchecked()) }
31885        }
31886
31887        pub fn take_availability(&mut self) -> ::core::option::Option<crate::wire::Availability> {
31888            unsafe { Some(self.table.get_mut(5)?.take_unchecked()) }
31889        }
31890    }
31891
31892    impl<'de> ::core::fmt::Debug for OfferStorage<'de> {
31893        fn fmt(
31894            &self,
31895            f: &mut ::core::fmt::Formatter<'_>,
31896        ) -> ::core::result::Result<(), ::core::fmt::Error> {
31897            f.debug_struct("OfferStorage")
31898                .field("source_name", &self.source_name())
31899                .field("source", &self.source())
31900                .field("target", &self.target())
31901                .field("target_name", &self.target_name())
31902                .field("availability", &self.availability())
31903                .finish()
31904        }
31905    }
31906
31907    impl<'de> ::fidl_next::IntoNatural for OfferStorage<'de> {
31908        type Natural = crate::natural::OfferStorage;
31909    }
31910
31911    /// The wire type corresponding to [`OfferRunner`].
31912    #[repr(C)]
31913    pub struct OfferRunner<'de> {
31914        pub(crate) table: ::fidl_next::wire::Table<'de>,
31915    }
31916
31917    impl<'de> Drop for OfferRunner<'de> {
31918        fn drop(&mut self) {
31919            let _ = self
31920                .table
31921                .get(1)
31922                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
31923
31924            let _ = self.table.get(2).map(|envelope| unsafe {
31925                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
31926            });
31927
31928            let _ = self
31929                .table
31930                .get(3)
31931                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
31932
31933            let _ = self.table.get(4).map(|envelope| unsafe {
31934                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
31935            });
31936
31937            let _ = self.table.get(5).map(|envelope| unsafe {
31938                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
31939            });
31940        }
31941    }
31942
31943    impl ::fidl_next::Constrained for OfferRunner<'_> {
31944        type Constraint = ();
31945
31946        fn validate(
31947            _: ::fidl_next::Slot<'_, Self>,
31948            _: Self::Constraint,
31949        ) -> Result<(), ::fidl_next::ValidationError> {
31950            Ok(())
31951        }
31952    }
31953
31954    unsafe impl ::fidl_next::Wire for OfferRunner<'static> {
31955        type Narrowed<'de> = OfferRunner<'de>;
31956
31957        #[inline]
31958        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
31959            ::fidl_next::munge!(let Self { table } = out);
31960            ::fidl_next::wire::Table::zero_padding(table);
31961        }
31962    }
31963
31964    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for OfferRunner<'de>
31965    where
31966        ___D: ::fidl_next::Decoder<'de> + ?Sized,
31967    {
31968        fn decode(
31969            slot: ::fidl_next::Slot<'_, Self>,
31970            decoder: &mut ___D,
31971            _: (),
31972        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
31973            ::fidl_next::munge!(let Self { table } = slot);
31974
31975            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
31976                match ordinal {
31977                    0 => unsafe { ::core::hint::unreachable_unchecked() },
31978
31979                    1 => {
31980                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
31981                            slot.as_mut(),
31982                            decoder,
31983                            (),
31984                        )?;
31985
31986                        Ok(())
31987                    }
31988
31989                    2 => {
31990                        ::fidl_next::wire::Envelope::decode_as::<
31991                            ___D,
31992                            ::fidl_next::wire::String<'de>,
31993                        >(slot.as_mut(), decoder, 100)?;
31994
31995                        let value = unsafe {
31996                            slot.deref_unchecked()
31997                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
31998                        };
31999
32000                        if value.len() > 100 {
32001                            return Err(::fidl_next::DecodeError::VectorTooLong {
32002                                size: value.len() as u64,
32003                                limit: 100,
32004                            });
32005                        }
32006
32007                        Ok(())
32008                    }
32009
32010                    3 => {
32011                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
32012                            slot.as_mut(),
32013                            decoder,
32014                            (),
32015                        )?;
32016
32017                        Ok(())
32018                    }
32019
32020                    4 => {
32021                        ::fidl_next::wire::Envelope::decode_as::<
32022                            ___D,
32023                            ::fidl_next::wire::String<'de>,
32024                        >(slot.as_mut(), decoder, 100)?;
32025
32026                        let value = unsafe {
32027                            slot.deref_unchecked()
32028                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
32029                        };
32030
32031                        if value.len() > 100 {
32032                            return Err(::fidl_next::DecodeError::VectorTooLong {
32033                                size: value.len() as u64,
32034                                limit: 100,
32035                            });
32036                        }
32037
32038                        Ok(())
32039                    }
32040
32041                    5 => {
32042                        ::fidl_next::wire::Envelope::decode_as::<
32043                            ___D,
32044                            ::fidl_next::wire::String<'de>,
32045                        >(slot.as_mut(), decoder, 1024)?;
32046
32047                        let value = unsafe {
32048                            slot.deref_unchecked()
32049                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
32050                        };
32051
32052                        if value.len() > 1024 {
32053                            return Err(::fidl_next::DecodeError::VectorTooLong {
32054                                size: value.len() as u64,
32055                                limit: 1024,
32056                            });
32057                        }
32058
32059                        Ok(())
32060                    }
32061
32062                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
32063                }
32064            })
32065        }
32066    }
32067
32068    impl<'de> OfferRunner<'de> {
32069        pub fn source(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
32070            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
32071        }
32072
32073        pub fn take_source(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
32074            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
32075        }
32076
32077        pub fn source_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
32078            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
32079        }
32080
32081        pub fn take_source_name(
32082            &mut self,
32083        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
32084            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
32085        }
32086
32087        pub fn target(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
32088            unsafe { Some(self.table.get(3)?.deref_unchecked()) }
32089        }
32090
32091        pub fn take_target(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
32092            unsafe { Some(self.table.get_mut(3)?.take_unchecked()) }
32093        }
32094
32095        pub fn target_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
32096            unsafe { Some(self.table.get(4)?.deref_unchecked()) }
32097        }
32098
32099        pub fn take_target_name(
32100            &mut self,
32101        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
32102            unsafe { Some(self.table.get_mut(4)?.take_unchecked()) }
32103        }
32104
32105        pub fn source_dictionary(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
32106            unsafe { Some(self.table.get(5)?.deref_unchecked()) }
32107        }
32108
32109        pub fn take_source_dictionary(
32110            &mut self,
32111        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
32112            unsafe { Some(self.table.get_mut(5)?.take_unchecked()) }
32113        }
32114    }
32115
32116    impl<'de> ::core::fmt::Debug for OfferRunner<'de> {
32117        fn fmt(
32118            &self,
32119            f: &mut ::core::fmt::Formatter<'_>,
32120        ) -> ::core::result::Result<(), ::core::fmt::Error> {
32121            f.debug_struct("OfferRunner")
32122                .field("source", &self.source())
32123                .field("source_name", &self.source_name())
32124                .field("target", &self.target())
32125                .field("target_name", &self.target_name())
32126                .field("source_dictionary", &self.source_dictionary())
32127                .finish()
32128        }
32129    }
32130
32131    impl<'de> ::fidl_next::IntoNatural for OfferRunner<'de> {
32132        type Natural = crate::natural::OfferRunner;
32133    }
32134
32135    /// The wire type corresponding to [`OfferResolver`].
32136    #[repr(C)]
32137    pub struct OfferResolver<'de> {
32138        pub(crate) table: ::fidl_next::wire::Table<'de>,
32139    }
32140
32141    impl<'de> Drop for OfferResolver<'de> {
32142        fn drop(&mut self) {
32143            let _ = self
32144                .table
32145                .get(1)
32146                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
32147
32148            let _ = self.table.get(2).map(|envelope| unsafe {
32149                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
32150            });
32151
32152            let _ = self
32153                .table
32154                .get(3)
32155                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
32156
32157            let _ = self.table.get(4).map(|envelope| unsafe {
32158                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
32159            });
32160
32161            let _ = self.table.get(5).map(|envelope| unsafe {
32162                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
32163            });
32164        }
32165    }
32166
32167    impl ::fidl_next::Constrained for OfferResolver<'_> {
32168        type Constraint = ();
32169
32170        fn validate(
32171            _: ::fidl_next::Slot<'_, Self>,
32172            _: Self::Constraint,
32173        ) -> Result<(), ::fidl_next::ValidationError> {
32174            Ok(())
32175        }
32176    }
32177
32178    unsafe impl ::fidl_next::Wire for OfferResolver<'static> {
32179        type Narrowed<'de> = OfferResolver<'de>;
32180
32181        #[inline]
32182        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
32183            ::fidl_next::munge!(let Self { table } = out);
32184            ::fidl_next::wire::Table::zero_padding(table);
32185        }
32186    }
32187
32188    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for OfferResolver<'de>
32189    where
32190        ___D: ::fidl_next::Decoder<'de> + ?Sized,
32191    {
32192        fn decode(
32193            slot: ::fidl_next::Slot<'_, Self>,
32194            decoder: &mut ___D,
32195            _: (),
32196        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
32197            ::fidl_next::munge!(let Self { table } = slot);
32198
32199            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
32200                match ordinal {
32201                    0 => unsafe { ::core::hint::unreachable_unchecked() },
32202
32203                    1 => {
32204                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
32205                            slot.as_mut(),
32206                            decoder,
32207                            (),
32208                        )?;
32209
32210                        Ok(())
32211                    }
32212
32213                    2 => {
32214                        ::fidl_next::wire::Envelope::decode_as::<
32215                            ___D,
32216                            ::fidl_next::wire::String<'de>,
32217                        >(slot.as_mut(), decoder, 100)?;
32218
32219                        let value = unsafe {
32220                            slot.deref_unchecked()
32221                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
32222                        };
32223
32224                        if value.len() > 100 {
32225                            return Err(::fidl_next::DecodeError::VectorTooLong {
32226                                size: value.len() as u64,
32227                                limit: 100,
32228                            });
32229                        }
32230
32231                        Ok(())
32232                    }
32233
32234                    3 => {
32235                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
32236                            slot.as_mut(),
32237                            decoder,
32238                            (),
32239                        )?;
32240
32241                        Ok(())
32242                    }
32243
32244                    4 => {
32245                        ::fidl_next::wire::Envelope::decode_as::<
32246                            ___D,
32247                            ::fidl_next::wire::String<'de>,
32248                        >(slot.as_mut(), decoder, 100)?;
32249
32250                        let value = unsafe {
32251                            slot.deref_unchecked()
32252                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
32253                        };
32254
32255                        if value.len() > 100 {
32256                            return Err(::fidl_next::DecodeError::VectorTooLong {
32257                                size: value.len() as u64,
32258                                limit: 100,
32259                            });
32260                        }
32261
32262                        Ok(())
32263                    }
32264
32265                    5 => {
32266                        ::fidl_next::wire::Envelope::decode_as::<
32267                            ___D,
32268                            ::fidl_next::wire::String<'de>,
32269                        >(slot.as_mut(), decoder, 1024)?;
32270
32271                        let value = unsafe {
32272                            slot.deref_unchecked()
32273                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
32274                        };
32275
32276                        if value.len() > 1024 {
32277                            return Err(::fidl_next::DecodeError::VectorTooLong {
32278                                size: value.len() as u64,
32279                                limit: 1024,
32280                            });
32281                        }
32282
32283                        Ok(())
32284                    }
32285
32286                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
32287                }
32288            })
32289        }
32290    }
32291
32292    impl<'de> OfferResolver<'de> {
32293        pub fn source(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
32294            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
32295        }
32296
32297        pub fn take_source(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
32298            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
32299        }
32300
32301        pub fn source_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
32302            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
32303        }
32304
32305        pub fn take_source_name(
32306            &mut self,
32307        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
32308            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
32309        }
32310
32311        pub fn target(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
32312            unsafe { Some(self.table.get(3)?.deref_unchecked()) }
32313        }
32314
32315        pub fn take_target(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
32316            unsafe { Some(self.table.get_mut(3)?.take_unchecked()) }
32317        }
32318
32319        pub fn target_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
32320            unsafe { Some(self.table.get(4)?.deref_unchecked()) }
32321        }
32322
32323        pub fn take_target_name(
32324            &mut self,
32325        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
32326            unsafe { Some(self.table.get_mut(4)?.take_unchecked()) }
32327        }
32328
32329        pub fn source_dictionary(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
32330            unsafe { Some(self.table.get(5)?.deref_unchecked()) }
32331        }
32332
32333        pub fn take_source_dictionary(
32334            &mut self,
32335        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
32336            unsafe { Some(self.table.get_mut(5)?.take_unchecked()) }
32337        }
32338    }
32339
32340    impl<'de> ::core::fmt::Debug for OfferResolver<'de> {
32341        fn fmt(
32342            &self,
32343            f: &mut ::core::fmt::Formatter<'_>,
32344        ) -> ::core::result::Result<(), ::core::fmt::Error> {
32345            f.debug_struct("OfferResolver")
32346                .field("source", &self.source())
32347                .field("source_name", &self.source_name())
32348                .field("target", &self.target())
32349                .field("target_name", &self.target_name())
32350                .field("source_dictionary", &self.source_dictionary())
32351                .finish()
32352        }
32353    }
32354
32355    impl<'de> ::fidl_next::IntoNatural for OfferResolver<'de> {
32356        type Natural = crate::natural::OfferResolver;
32357    }
32358
32359    /// The wire type corresponding to [`OfferEventStream`].
32360    #[repr(C)]
32361    pub struct OfferEventStream<'de> {
32362        pub(crate) table: ::fidl_next::wire::Table<'de>,
32363    }
32364
32365    impl<'de> Drop for OfferEventStream<'de> {
32366        fn drop(&mut self) {
32367            let _ = self
32368                .table
32369                .get(1)
32370                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
32371
32372            let _ = self.table.get(2).map(|envelope| unsafe {
32373                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
32374            });
32375
32376            let _ = self.table.get(3).map(|envelope| unsafe {
32377                envelope.read_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::Ref<'de>>>()
32378            });
32379
32380            let _ = self
32381                .table
32382                .get(4)
32383                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
32384
32385            let _ = self.table.get(5).map(|envelope| unsafe {
32386                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
32387            });
32388
32389            let _ = self
32390                .table
32391                .get(7)
32392                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Availability>() });
32393        }
32394    }
32395
32396    impl ::fidl_next::Constrained for OfferEventStream<'_> {
32397        type Constraint = ();
32398
32399        fn validate(
32400            _: ::fidl_next::Slot<'_, Self>,
32401            _: Self::Constraint,
32402        ) -> Result<(), ::fidl_next::ValidationError> {
32403            Ok(())
32404        }
32405    }
32406
32407    unsafe impl ::fidl_next::Wire for OfferEventStream<'static> {
32408        type Narrowed<'de> = OfferEventStream<'de>;
32409
32410        #[inline]
32411        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
32412            ::fidl_next::munge!(let Self { table } = out);
32413            ::fidl_next::wire::Table::zero_padding(table);
32414        }
32415    }
32416
32417    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for OfferEventStream<'de>
32418    where
32419        ___D: ::fidl_next::Decoder<'de> + ?Sized,
32420    {
32421        fn decode(
32422            slot: ::fidl_next::Slot<'_, Self>,
32423            decoder: &mut ___D,
32424            _: (),
32425        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
32426            ::fidl_next::munge!(let Self { table } = slot);
32427
32428            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
32429                match ordinal {
32430                    0 => unsafe { ::core::hint::unreachable_unchecked() },
32431
32432                    1 => {
32433                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
32434                            slot.as_mut(),
32435                            decoder,
32436                            (),
32437                        )?;
32438
32439                        Ok(())
32440                    }
32441
32442                    2 => {
32443                        ::fidl_next::wire::Envelope::decode_as::<
32444                            ___D,
32445                            ::fidl_next::wire::String<'de>,
32446                        >(slot.as_mut(), decoder, 100)?;
32447
32448                        let value = unsafe {
32449                            slot.deref_unchecked()
32450                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
32451                        };
32452
32453                        if value.len() > 100 {
32454                            return Err(::fidl_next::DecodeError::VectorTooLong {
32455                                size: value.len() as u64,
32456                                limit: 100,
32457                            });
32458                        }
32459
32460                        Ok(())
32461                    }
32462
32463                    3 => {
32464                        ::fidl_next::wire::Envelope::decode_as::<
32465                            ___D,
32466                            ::fidl_next::wire::Vector<'de, crate::wire::Ref<'de>>,
32467                        >(slot.as_mut(), decoder, (4294967295, ()))?;
32468
32469                        Ok(())
32470                    }
32471
32472                    4 => {
32473                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
32474                            slot.as_mut(),
32475                            decoder,
32476                            (),
32477                        )?;
32478
32479                        Ok(())
32480                    }
32481
32482                    5 => {
32483                        ::fidl_next::wire::Envelope::decode_as::<
32484                            ___D,
32485                            ::fidl_next::wire::String<'de>,
32486                        >(slot.as_mut(), decoder, 100)?;
32487
32488                        let value = unsafe {
32489                            slot.deref_unchecked()
32490                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
32491                        };
32492
32493                        if value.len() > 100 {
32494                            return Err(::fidl_next::DecodeError::VectorTooLong {
32495                                size: value.len() as u64,
32496                                limit: 100,
32497                            });
32498                        }
32499
32500                        Ok(())
32501                    }
32502
32503                    7 => {
32504                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Availability>(
32505                            slot.as_mut(),
32506                            decoder,
32507                            (),
32508                        )?;
32509
32510                        Ok(())
32511                    }
32512
32513                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
32514                }
32515            })
32516        }
32517    }
32518
32519    impl<'de> OfferEventStream<'de> {
32520        pub fn source(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
32521            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
32522        }
32523
32524        pub fn take_source(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
32525            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
32526        }
32527
32528        pub fn source_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
32529            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
32530        }
32531
32532        pub fn take_source_name(
32533            &mut self,
32534        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
32535            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
32536        }
32537
32538        pub fn scope(
32539            &self,
32540        ) -> ::core::option::Option<&::fidl_next::wire::Vector<'de, crate::wire::Ref<'de>>>
32541        {
32542            unsafe { Some(self.table.get(3)?.deref_unchecked()) }
32543        }
32544
32545        pub fn take_scope(
32546            &mut self,
32547        ) -> ::core::option::Option<::fidl_next::wire::Vector<'de, crate::wire::Ref<'de>>> {
32548            unsafe { Some(self.table.get_mut(3)?.take_unchecked()) }
32549        }
32550
32551        pub fn target(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
32552            unsafe { Some(self.table.get(4)?.deref_unchecked()) }
32553        }
32554
32555        pub fn take_target(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
32556            unsafe { Some(self.table.get_mut(4)?.take_unchecked()) }
32557        }
32558
32559        pub fn target_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
32560            unsafe { Some(self.table.get(5)?.deref_unchecked()) }
32561        }
32562
32563        pub fn take_target_name(
32564            &mut self,
32565        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
32566            unsafe { Some(self.table.get_mut(5)?.take_unchecked()) }
32567        }
32568
32569        pub fn availability(&self) -> ::core::option::Option<&crate::wire::Availability> {
32570            unsafe { Some(self.table.get(7)?.deref_unchecked()) }
32571        }
32572
32573        pub fn take_availability(&mut self) -> ::core::option::Option<crate::wire::Availability> {
32574            unsafe { Some(self.table.get_mut(7)?.take_unchecked()) }
32575        }
32576    }
32577
32578    impl<'de> ::core::fmt::Debug for OfferEventStream<'de> {
32579        fn fmt(
32580            &self,
32581            f: &mut ::core::fmt::Formatter<'_>,
32582        ) -> ::core::result::Result<(), ::core::fmt::Error> {
32583            f.debug_struct("OfferEventStream")
32584                .field("source", &self.source())
32585                .field("source_name", &self.source_name())
32586                .field("scope", &self.scope())
32587                .field("target", &self.target())
32588                .field("target_name", &self.target_name())
32589                .field("availability", &self.availability())
32590                .finish()
32591        }
32592    }
32593
32594    impl<'de> ::fidl_next::IntoNatural for OfferEventStream<'de> {
32595        type Natural = crate::natural::OfferEventStream;
32596    }
32597
32598    /// The wire type corresponding to [`OfferDictionary`].
32599    #[repr(C)]
32600    pub struct OfferDictionary<'de> {
32601        pub(crate) table: ::fidl_next::wire::Table<'de>,
32602    }
32603
32604    impl<'de> Drop for OfferDictionary<'de> {
32605        fn drop(&mut self) {
32606            let _ = self
32607                .table
32608                .get(1)
32609                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
32610
32611            let _ = self.table.get(2).map(|envelope| unsafe {
32612                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
32613            });
32614
32615            let _ = self
32616                .table
32617                .get(3)
32618                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
32619
32620            let _ = self.table.get(4).map(|envelope| unsafe {
32621                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
32622            });
32623
32624            let _ = self.table.get(5).map(|envelope| unsafe {
32625                envelope.read_unchecked::<crate::wire::DependencyType>()
32626            });
32627
32628            let _ = self
32629                .table
32630                .get(6)
32631                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Availability>() });
32632
32633            let _ = self.table.get(7).map(|envelope| unsafe {
32634                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
32635            });
32636        }
32637    }
32638
32639    impl ::fidl_next::Constrained for OfferDictionary<'_> {
32640        type Constraint = ();
32641
32642        fn validate(
32643            _: ::fidl_next::Slot<'_, Self>,
32644            _: Self::Constraint,
32645        ) -> Result<(), ::fidl_next::ValidationError> {
32646            Ok(())
32647        }
32648    }
32649
32650    unsafe impl ::fidl_next::Wire for OfferDictionary<'static> {
32651        type Narrowed<'de> = OfferDictionary<'de>;
32652
32653        #[inline]
32654        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
32655            ::fidl_next::munge!(let Self { table } = out);
32656            ::fidl_next::wire::Table::zero_padding(table);
32657        }
32658    }
32659
32660    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for OfferDictionary<'de>
32661    where
32662        ___D: ::fidl_next::Decoder<'de> + ?Sized,
32663    {
32664        fn decode(
32665            slot: ::fidl_next::Slot<'_, Self>,
32666            decoder: &mut ___D,
32667            _: (),
32668        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
32669            ::fidl_next::munge!(let Self { table } = slot);
32670
32671            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
32672                match ordinal {
32673                    0 => unsafe { ::core::hint::unreachable_unchecked() },
32674
32675                    1 => {
32676                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
32677                            slot.as_mut(),
32678                            decoder,
32679                            (),
32680                        )?;
32681
32682                        Ok(())
32683                    }
32684
32685                    2 => {
32686                        ::fidl_next::wire::Envelope::decode_as::<
32687                            ___D,
32688                            ::fidl_next::wire::String<'de>,
32689                        >(slot.as_mut(), decoder, 100)?;
32690
32691                        let value = unsafe {
32692                            slot.deref_unchecked()
32693                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
32694                        };
32695
32696                        if value.len() > 100 {
32697                            return Err(::fidl_next::DecodeError::VectorTooLong {
32698                                size: value.len() as u64,
32699                                limit: 100,
32700                            });
32701                        }
32702
32703                        Ok(())
32704                    }
32705
32706                    3 => {
32707                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
32708                            slot.as_mut(),
32709                            decoder,
32710                            (),
32711                        )?;
32712
32713                        Ok(())
32714                    }
32715
32716                    4 => {
32717                        ::fidl_next::wire::Envelope::decode_as::<
32718                            ___D,
32719                            ::fidl_next::wire::String<'de>,
32720                        >(slot.as_mut(), decoder, 100)?;
32721
32722                        let value = unsafe {
32723                            slot.deref_unchecked()
32724                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
32725                        };
32726
32727                        if value.len() > 100 {
32728                            return Err(::fidl_next::DecodeError::VectorTooLong {
32729                                size: value.len() as u64,
32730                                limit: 100,
32731                            });
32732                        }
32733
32734                        Ok(())
32735                    }
32736
32737                    5 => {
32738                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::DependencyType>(
32739                            slot.as_mut(),
32740                            decoder,
32741                            (),
32742                        )?;
32743
32744                        Ok(())
32745                    }
32746
32747                    6 => {
32748                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Availability>(
32749                            slot.as_mut(),
32750                            decoder,
32751                            (),
32752                        )?;
32753
32754                        Ok(())
32755                    }
32756
32757                    7 => {
32758                        ::fidl_next::wire::Envelope::decode_as::<
32759                            ___D,
32760                            ::fidl_next::wire::String<'de>,
32761                        >(slot.as_mut(), decoder, 1024)?;
32762
32763                        let value = unsafe {
32764                            slot.deref_unchecked()
32765                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
32766                        };
32767
32768                        if value.len() > 1024 {
32769                            return Err(::fidl_next::DecodeError::VectorTooLong {
32770                                size: value.len() as u64,
32771                                limit: 1024,
32772                            });
32773                        }
32774
32775                        Ok(())
32776                    }
32777
32778                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
32779                }
32780            })
32781        }
32782    }
32783
32784    impl<'de> OfferDictionary<'de> {
32785        pub fn source(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
32786            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
32787        }
32788
32789        pub fn take_source(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
32790            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
32791        }
32792
32793        pub fn source_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
32794            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
32795        }
32796
32797        pub fn take_source_name(
32798            &mut self,
32799        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
32800            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
32801        }
32802
32803        pub fn target(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
32804            unsafe { Some(self.table.get(3)?.deref_unchecked()) }
32805        }
32806
32807        pub fn take_target(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
32808            unsafe { Some(self.table.get_mut(3)?.take_unchecked()) }
32809        }
32810
32811        pub fn target_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
32812            unsafe { Some(self.table.get(4)?.deref_unchecked()) }
32813        }
32814
32815        pub fn take_target_name(
32816            &mut self,
32817        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
32818            unsafe { Some(self.table.get_mut(4)?.take_unchecked()) }
32819        }
32820
32821        pub fn dependency_type(&self) -> ::core::option::Option<&crate::wire::DependencyType> {
32822            unsafe { Some(self.table.get(5)?.deref_unchecked()) }
32823        }
32824
32825        pub fn take_dependency_type(
32826            &mut self,
32827        ) -> ::core::option::Option<crate::wire::DependencyType> {
32828            unsafe { Some(self.table.get_mut(5)?.take_unchecked()) }
32829        }
32830
32831        pub fn availability(&self) -> ::core::option::Option<&crate::wire::Availability> {
32832            unsafe { Some(self.table.get(6)?.deref_unchecked()) }
32833        }
32834
32835        pub fn take_availability(&mut self) -> ::core::option::Option<crate::wire::Availability> {
32836            unsafe { Some(self.table.get_mut(6)?.take_unchecked()) }
32837        }
32838
32839        pub fn source_dictionary(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
32840            unsafe { Some(self.table.get(7)?.deref_unchecked()) }
32841        }
32842
32843        pub fn take_source_dictionary(
32844            &mut self,
32845        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
32846            unsafe { Some(self.table.get_mut(7)?.take_unchecked()) }
32847        }
32848    }
32849
32850    impl<'de> ::core::fmt::Debug for OfferDictionary<'de> {
32851        fn fmt(
32852            &self,
32853            f: &mut ::core::fmt::Formatter<'_>,
32854        ) -> ::core::result::Result<(), ::core::fmt::Error> {
32855            f.debug_struct("OfferDictionary")
32856                .field("source", &self.source())
32857                .field("source_name", &self.source_name())
32858                .field("target", &self.target())
32859                .field("target_name", &self.target_name())
32860                .field("dependency_type", &self.dependency_type())
32861                .field("availability", &self.availability())
32862                .field("source_dictionary", &self.source_dictionary())
32863                .finish()
32864        }
32865    }
32866
32867    impl<'de> ::fidl_next::IntoNatural for OfferDictionary<'de> {
32868        type Natural = crate::natural::OfferDictionary;
32869    }
32870
32871    /// The wire type corresponding to [`OfferConfiguration`].
32872    #[repr(C)]
32873    pub struct OfferConfiguration<'de> {
32874        pub(crate) table: ::fidl_next::wire::Table<'de>,
32875    }
32876
32877    impl<'de> Drop for OfferConfiguration<'de> {
32878        fn drop(&mut self) {
32879            let _ = self
32880                .table
32881                .get(1)
32882                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
32883
32884            let _ = self.table.get(2).map(|envelope| unsafe {
32885                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
32886            });
32887
32888            let _ = self
32889                .table
32890                .get(3)
32891                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
32892
32893            let _ = self.table.get(4).map(|envelope| unsafe {
32894                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
32895            });
32896
32897            let _ = self
32898                .table
32899                .get(5)
32900                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Availability>() });
32901
32902            let _ = self.table.get(6).map(|envelope| unsafe {
32903                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
32904            });
32905        }
32906    }
32907
32908    impl ::fidl_next::Constrained for OfferConfiguration<'_> {
32909        type Constraint = ();
32910
32911        fn validate(
32912            _: ::fidl_next::Slot<'_, Self>,
32913            _: Self::Constraint,
32914        ) -> Result<(), ::fidl_next::ValidationError> {
32915            Ok(())
32916        }
32917    }
32918
32919    unsafe impl ::fidl_next::Wire for OfferConfiguration<'static> {
32920        type Narrowed<'de> = OfferConfiguration<'de>;
32921
32922        #[inline]
32923        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
32924            ::fidl_next::munge!(let Self { table } = out);
32925            ::fidl_next::wire::Table::zero_padding(table);
32926        }
32927    }
32928
32929    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for OfferConfiguration<'de>
32930    where
32931        ___D: ::fidl_next::Decoder<'de> + ?Sized,
32932    {
32933        fn decode(
32934            slot: ::fidl_next::Slot<'_, Self>,
32935            decoder: &mut ___D,
32936            _: (),
32937        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
32938            ::fidl_next::munge!(let Self { table } = slot);
32939
32940            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
32941                match ordinal {
32942                    0 => unsafe { ::core::hint::unreachable_unchecked() },
32943
32944                    1 => {
32945                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
32946                            slot.as_mut(),
32947                            decoder,
32948                            (),
32949                        )?;
32950
32951                        Ok(())
32952                    }
32953
32954                    2 => {
32955                        ::fidl_next::wire::Envelope::decode_as::<
32956                            ___D,
32957                            ::fidl_next::wire::String<'de>,
32958                        >(slot.as_mut(), decoder, 100)?;
32959
32960                        let value = unsafe {
32961                            slot.deref_unchecked()
32962                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
32963                        };
32964
32965                        if value.len() > 100 {
32966                            return Err(::fidl_next::DecodeError::VectorTooLong {
32967                                size: value.len() as u64,
32968                                limit: 100,
32969                            });
32970                        }
32971
32972                        Ok(())
32973                    }
32974
32975                    3 => {
32976                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
32977                            slot.as_mut(),
32978                            decoder,
32979                            (),
32980                        )?;
32981
32982                        Ok(())
32983                    }
32984
32985                    4 => {
32986                        ::fidl_next::wire::Envelope::decode_as::<
32987                            ___D,
32988                            ::fidl_next::wire::String<'de>,
32989                        >(slot.as_mut(), decoder, 100)?;
32990
32991                        let value = unsafe {
32992                            slot.deref_unchecked()
32993                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
32994                        };
32995
32996                        if value.len() > 100 {
32997                            return Err(::fidl_next::DecodeError::VectorTooLong {
32998                                size: value.len() as u64,
32999                                limit: 100,
33000                            });
33001                        }
33002
33003                        Ok(())
33004                    }
33005
33006                    5 => {
33007                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Availability>(
33008                            slot.as_mut(),
33009                            decoder,
33010                            (),
33011                        )?;
33012
33013                        Ok(())
33014                    }
33015
33016                    6 => {
33017                        ::fidl_next::wire::Envelope::decode_as::<
33018                            ___D,
33019                            ::fidl_next::wire::String<'de>,
33020                        >(slot.as_mut(), decoder, 1024)?;
33021
33022                        let value = unsafe {
33023                            slot.deref_unchecked()
33024                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
33025                        };
33026
33027                        if value.len() > 1024 {
33028                            return Err(::fidl_next::DecodeError::VectorTooLong {
33029                                size: value.len() as u64,
33030                                limit: 1024,
33031                            });
33032                        }
33033
33034                        Ok(())
33035                    }
33036
33037                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
33038                }
33039            })
33040        }
33041    }
33042
33043    impl<'de> OfferConfiguration<'de> {
33044        pub fn source(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
33045            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
33046        }
33047
33048        pub fn take_source(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
33049            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
33050        }
33051
33052        pub fn source_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
33053            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
33054        }
33055
33056        pub fn take_source_name(
33057            &mut self,
33058        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
33059            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
33060        }
33061
33062        pub fn target(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
33063            unsafe { Some(self.table.get(3)?.deref_unchecked()) }
33064        }
33065
33066        pub fn take_target(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
33067            unsafe { Some(self.table.get_mut(3)?.take_unchecked()) }
33068        }
33069
33070        pub fn target_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
33071            unsafe { Some(self.table.get(4)?.deref_unchecked()) }
33072        }
33073
33074        pub fn take_target_name(
33075            &mut self,
33076        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
33077            unsafe { Some(self.table.get_mut(4)?.take_unchecked()) }
33078        }
33079
33080        pub fn availability(&self) -> ::core::option::Option<&crate::wire::Availability> {
33081            unsafe { Some(self.table.get(5)?.deref_unchecked()) }
33082        }
33083
33084        pub fn take_availability(&mut self) -> ::core::option::Option<crate::wire::Availability> {
33085            unsafe { Some(self.table.get_mut(5)?.take_unchecked()) }
33086        }
33087
33088        pub fn source_dictionary(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
33089            unsafe { Some(self.table.get(6)?.deref_unchecked()) }
33090        }
33091
33092        pub fn take_source_dictionary(
33093            &mut self,
33094        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
33095            unsafe { Some(self.table.get_mut(6)?.take_unchecked()) }
33096        }
33097    }
33098
33099    impl<'de> ::core::fmt::Debug for OfferConfiguration<'de> {
33100        fn fmt(
33101            &self,
33102            f: &mut ::core::fmt::Formatter<'_>,
33103        ) -> ::core::result::Result<(), ::core::fmt::Error> {
33104            f.debug_struct("OfferConfiguration")
33105                .field("source", &self.source())
33106                .field("source_name", &self.source_name())
33107                .field("target", &self.target())
33108                .field("target_name", &self.target_name())
33109                .field("availability", &self.availability())
33110                .field("source_dictionary", &self.source_dictionary())
33111                .finish()
33112        }
33113    }
33114
33115    impl<'de> ::fidl_next::IntoNatural for OfferConfiguration<'de> {
33116        type Natural = crate::natural::OfferConfiguration;
33117    }
33118
33119    /// The wire type corresponding to [`Offer`].
33120    #[repr(transparent)]
33121    pub struct Offer<'de> {
33122        pub(crate) raw: ::fidl_next::wire::Union,
33123        pub(crate) _phantom: ::core::marker::PhantomData<&'de mut [::fidl_next::Chunk]>,
33124    }
33125
33126    impl<'de> Drop for Offer<'de> {
33127        fn drop(&mut self) {
33128            match self.raw.ordinal() {
33129                1 => {
33130                    let _ = unsafe {
33131                        self.raw.get().read_unchecked::<crate::wire::OfferService<'de>>()
33132                    };
33133                }
33134
33135                2 => {
33136                    let _ = unsafe {
33137                        self.raw.get().read_unchecked::<crate::wire::OfferProtocol<'de>>()
33138                    };
33139                }
33140
33141                3 => {
33142                    let _ = unsafe {
33143                        self.raw.get().read_unchecked::<crate::wire::OfferDirectory<'de>>()
33144                    };
33145                }
33146
33147                4 => {
33148                    let _ = unsafe {
33149                        self.raw.get().read_unchecked::<crate::wire::OfferStorage<'de>>()
33150                    };
33151                }
33152
33153                5 => {
33154                    let _ =
33155                        unsafe { self.raw.get().read_unchecked::<crate::wire::OfferRunner<'de>>() };
33156                }
33157
33158                6 => {
33159                    let _ = unsafe {
33160                        self.raw.get().read_unchecked::<crate::wire::OfferResolver<'de>>()
33161                    };
33162                }
33163
33164                8 => {
33165                    let _ = unsafe {
33166                        self.raw.get().read_unchecked::<crate::wire::OfferEventStream<'de>>()
33167                    };
33168                }
33169
33170                9 => {
33171                    let _ = unsafe {
33172                        self.raw.get().read_unchecked::<crate::wire::OfferDictionary<'de>>()
33173                    };
33174                }
33175
33176                10 => {
33177                    let _ = unsafe {
33178                        self.raw.get().read_unchecked::<crate::wire::OfferConfiguration<'de>>()
33179                    };
33180                }
33181
33182                _ => (),
33183            }
33184        }
33185    }
33186
33187    impl ::fidl_next::Constrained for Offer<'_> {
33188        type Constraint = ();
33189
33190        fn validate(
33191            _: ::fidl_next::Slot<'_, Self>,
33192            _: Self::Constraint,
33193        ) -> Result<(), ::fidl_next::ValidationError> {
33194            Ok(())
33195        }
33196    }
33197
33198    unsafe impl ::fidl_next::Wire for Offer<'static> {
33199        type Narrowed<'de> = Offer<'de>;
33200
33201        #[inline]
33202        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
33203            ::fidl_next::munge!(let Self { raw, _phantom: _ } = out);
33204            ::fidl_next::wire::Union::zero_padding(raw);
33205        }
33206    }
33207
33208    pub mod offer {
33209        pub enum Ref<'de> {
33210            Service(&'de crate::wire::OfferService<'de>),
33211
33212            Protocol(&'de crate::wire::OfferProtocol<'de>),
33213
33214            Directory(&'de crate::wire::OfferDirectory<'de>),
33215
33216            Storage(&'de crate::wire::OfferStorage<'de>),
33217
33218            Runner(&'de crate::wire::OfferRunner<'de>),
33219
33220            Resolver(&'de crate::wire::OfferResolver<'de>),
33221
33222            EventStream(&'de crate::wire::OfferEventStream<'de>),
33223
33224            Dictionary(&'de crate::wire::OfferDictionary<'de>),
33225
33226            Config(&'de crate::wire::OfferConfiguration<'de>),
33227
33228            UnknownOrdinal_(u64),
33229        }
33230
33231        pub enum Value<'de> {
33232            Service(crate::wire::OfferService<'de>),
33233
33234            Protocol(crate::wire::OfferProtocol<'de>),
33235
33236            Directory(crate::wire::OfferDirectory<'de>),
33237
33238            Storage(crate::wire::OfferStorage<'de>),
33239
33240            Runner(crate::wire::OfferRunner<'de>),
33241
33242            Resolver(crate::wire::OfferResolver<'de>),
33243
33244            EventStream(crate::wire::OfferEventStream<'de>),
33245
33246            Dictionary(crate::wire::OfferDictionary<'de>),
33247
33248            Config(crate::wire::OfferConfiguration<'de>),
33249
33250            UnknownOrdinal_(u64),
33251        }
33252    }
33253
33254    impl<'de> Offer<'de> {
33255        pub fn as_ref(&self) -> crate::wire::offer::Ref<'_> {
33256            match self.raw.ordinal() {
33257                1 => crate::wire::offer::Ref::Service(unsafe {
33258                    self.raw.get().deref_unchecked::<crate::wire::OfferService<'_>>()
33259                }),
33260
33261                2 => crate::wire::offer::Ref::Protocol(unsafe {
33262                    self.raw.get().deref_unchecked::<crate::wire::OfferProtocol<'_>>()
33263                }),
33264
33265                3 => crate::wire::offer::Ref::Directory(unsafe {
33266                    self.raw.get().deref_unchecked::<crate::wire::OfferDirectory<'_>>()
33267                }),
33268
33269                4 => crate::wire::offer::Ref::Storage(unsafe {
33270                    self.raw.get().deref_unchecked::<crate::wire::OfferStorage<'_>>()
33271                }),
33272
33273                5 => crate::wire::offer::Ref::Runner(unsafe {
33274                    self.raw.get().deref_unchecked::<crate::wire::OfferRunner<'_>>()
33275                }),
33276
33277                6 => crate::wire::offer::Ref::Resolver(unsafe {
33278                    self.raw.get().deref_unchecked::<crate::wire::OfferResolver<'_>>()
33279                }),
33280
33281                8 => crate::wire::offer::Ref::EventStream(unsafe {
33282                    self.raw.get().deref_unchecked::<crate::wire::OfferEventStream<'_>>()
33283                }),
33284
33285                9 => crate::wire::offer::Ref::Dictionary(unsafe {
33286                    self.raw.get().deref_unchecked::<crate::wire::OfferDictionary<'_>>()
33287                }),
33288
33289                10 => crate::wire::offer::Ref::Config(unsafe {
33290                    self.raw.get().deref_unchecked::<crate::wire::OfferConfiguration<'_>>()
33291                }),
33292
33293                unknown => crate::wire::offer::Ref::UnknownOrdinal_(unknown),
33294            }
33295        }
33296
33297        pub fn into_inner(self) -> crate::wire::offer::Value<'de> {
33298            let this = ::core::mem::ManuallyDrop::new(self);
33299
33300            match this.raw.ordinal() {
33301                1 => crate::wire::offer::Value::Service(unsafe {
33302                    this.raw.get().read_unchecked::<crate::wire::OfferService<'de>>()
33303                }),
33304
33305                2 => crate::wire::offer::Value::Protocol(unsafe {
33306                    this.raw.get().read_unchecked::<crate::wire::OfferProtocol<'de>>()
33307                }),
33308
33309                3 => crate::wire::offer::Value::Directory(unsafe {
33310                    this.raw.get().read_unchecked::<crate::wire::OfferDirectory<'de>>()
33311                }),
33312
33313                4 => crate::wire::offer::Value::Storage(unsafe {
33314                    this.raw.get().read_unchecked::<crate::wire::OfferStorage<'de>>()
33315                }),
33316
33317                5 => crate::wire::offer::Value::Runner(unsafe {
33318                    this.raw.get().read_unchecked::<crate::wire::OfferRunner<'de>>()
33319                }),
33320
33321                6 => crate::wire::offer::Value::Resolver(unsafe {
33322                    this.raw.get().read_unchecked::<crate::wire::OfferResolver<'de>>()
33323                }),
33324
33325                8 => crate::wire::offer::Value::EventStream(unsafe {
33326                    this.raw.get().read_unchecked::<crate::wire::OfferEventStream<'de>>()
33327                }),
33328
33329                9 => crate::wire::offer::Value::Dictionary(unsafe {
33330                    this.raw.get().read_unchecked::<crate::wire::OfferDictionary<'de>>()
33331                }),
33332
33333                10 => crate::wire::offer::Value::Config(unsafe {
33334                    this.raw.get().read_unchecked::<crate::wire::OfferConfiguration<'de>>()
33335                }),
33336
33337                unknown => crate::wire::offer::Value::UnknownOrdinal_(unknown),
33338            }
33339        }
33340    }
33341
33342    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for Offer<'de>
33343    where
33344        ___D: ::fidl_next::decoder::InternalHandleDecoder + ?Sized,
33345        ___D: ::fidl_next::Decoder<'de>,
33346    {
33347        fn decode(
33348            mut slot: ::fidl_next::Slot<'_, Self>,
33349            decoder: &mut ___D,
33350            _: (),
33351        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
33352            ::fidl_next::munge!(let Self { mut raw, _phantom: _ } = slot.as_mut());
33353            match ::fidl_next::wire::Union::encoded_ordinal(raw.as_mut()) {
33354                1 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::OfferService<'de>>(
33355                    raw,
33356                    decoder,
33357                    (),
33358                )?,
33359
33360                2 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::OfferProtocol<'de>>(
33361                    raw,
33362                    decoder,
33363                    (),
33364                )?,
33365
33366                3 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::OfferDirectory<'de>>(
33367                    raw,
33368                    decoder,
33369                    (),
33370                )?,
33371
33372                4 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::OfferStorage<'de>>(
33373                    raw,
33374                    decoder,
33375                    (),
33376                )?,
33377
33378                5 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::OfferRunner<'de>>(
33379                    raw,
33380                    decoder,
33381                    (),
33382                )?,
33383
33384                6 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::OfferResolver<'de>>(
33385                    raw,
33386                    decoder,
33387                    (),
33388                )?,
33389
33390                8 => {
33391                    ::fidl_next::wire::Union::decode_as::<___D, crate::wire::OfferEventStream<'de>>(
33392                        raw,
33393                        decoder,
33394                        (),
33395                    )?
33396                }
33397
33398                9 => {
33399                    ::fidl_next::wire::Union::decode_as::<___D, crate::wire::OfferDictionary<'de>>(
33400                        raw,
33401                        decoder,
33402                        (),
33403                    )?
33404                }
33405
33406                10 => ::fidl_next::wire::Union::decode_as::<
33407                    ___D,
33408                    crate::wire::OfferConfiguration<'de>,
33409                >(raw, decoder, ())?,
33410
33411                _ => ::fidl_next::wire::Union::decode_unknown(raw, decoder)?,
33412            }
33413
33414            Ok(())
33415        }
33416    }
33417
33418    impl<'de> ::core::fmt::Debug for Offer<'de> {
33419        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
33420            match self.raw.ordinal() {
33421                1 => unsafe {
33422                    self.raw.get().deref_unchecked::<crate::wire::OfferService<'_>>().fmt(f)
33423                },
33424                2 => unsafe {
33425                    self.raw.get().deref_unchecked::<crate::wire::OfferProtocol<'_>>().fmt(f)
33426                },
33427                3 => unsafe {
33428                    self.raw.get().deref_unchecked::<crate::wire::OfferDirectory<'_>>().fmt(f)
33429                },
33430                4 => unsafe {
33431                    self.raw.get().deref_unchecked::<crate::wire::OfferStorage<'_>>().fmt(f)
33432                },
33433                5 => unsafe {
33434                    self.raw.get().deref_unchecked::<crate::wire::OfferRunner<'_>>().fmt(f)
33435                },
33436                6 => unsafe {
33437                    self.raw.get().deref_unchecked::<crate::wire::OfferResolver<'_>>().fmt(f)
33438                },
33439                8 => unsafe {
33440                    self.raw.get().deref_unchecked::<crate::wire::OfferEventStream<'_>>().fmt(f)
33441                },
33442                9 => unsafe {
33443                    self.raw.get().deref_unchecked::<crate::wire::OfferDictionary<'_>>().fmt(f)
33444                },
33445                10 => unsafe {
33446                    self.raw.get().deref_unchecked::<crate::wire::OfferConfiguration<'_>>().fmt(f)
33447                },
33448                _ => unsafe { ::core::hint::unreachable_unchecked() },
33449            }
33450        }
33451    }
33452
33453    impl<'de> ::fidl_next::IntoNatural for Offer<'de> {
33454        type Natural = crate::natural::Offer;
33455    }
33456
33457    /// The wire type corresponding to [`RunnerRegistration`].
33458    #[repr(C)]
33459    pub struct RunnerRegistration<'de> {
33460        pub(crate) table: ::fidl_next::wire::Table<'de>,
33461    }
33462
33463    impl<'de> Drop for RunnerRegistration<'de> {
33464        fn drop(&mut self) {
33465            let _ = self.table.get(1).map(|envelope| unsafe {
33466                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
33467            });
33468
33469            let _ = self
33470                .table
33471                .get(2)
33472                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
33473
33474            let _ = self.table.get(3).map(|envelope| unsafe {
33475                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
33476            });
33477        }
33478    }
33479
33480    impl ::fidl_next::Constrained for RunnerRegistration<'_> {
33481        type Constraint = ();
33482
33483        fn validate(
33484            _: ::fidl_next::Slot<'_, Self>,
33485            _: Self::Constraint,
33486        ) -> Result<(), ::fidl_next::ValidationError> {
33487            Ok(())
33488        }
33489    }
33490
33491    unsafe impl ::fidl_next::Wire for RunnerRegistration<'static> {
33492        type Narrowed<'de> = RunnerRegistration<'de>;
33493
33494        #[inline]
33495        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
33496            ::fidl_next::munge!(let Self { table } = out);
33497            ::fidl_next::wire::Table::zero_padding(table);
33498        }
33499    }
33500
33501    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for RunnerRegistration<'de>
33502    where
33503        ___D: ::fidl_next::Decoder<'de> + ?Sized,
33504    {
33505        fn decode(
33506            slot: ::fidl_next::Slot<'_, Self>,
33507            decoder: &mut ___D,
33508            _: (),
33509        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
33510            ::fidl_next::munge!(let Self { table } = slot);
33511
33512            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
33513                match ordinal {
33514                    0 => unsafe { ::core::hint::unreachable_unchecked() },
33515
33516                    1 => {
33517                        ::fidl_next::wire::Envelope::decode_as::<
33518                            ___D,
33519                            ::fidl_next::wire::String<'de>,
33520                        >(slot.as_mut(), decoder, 100)?;
33521
33522                        let value = unsafe {
33523                            slot.deref_unchecked()
33524                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
33525                        };
33526
33527                        if value.len() > 100 {
33528                            return Err(::fidl_next::DecodeError::VectorTooLong {
33529                                size: value.len() as u64,
33530                                limit: 100,
33531                            });
33532                        }
33533
33534                        Ok(())
33535                    }
33536
33537                    2 => {
33538                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
33539                            slot.as_mut(),
33540                            decoder,
33541                            (),
33542                        )?;
33543
33544                        Ok(())
33545                    }
33546
33547                    3 => {
33548                        ::fidl_next::wire::Envelope::decode_as::<
33549                            ___D,
33550                            ::fidl_next::wire::String<'de>,
33551                        >(slot.as_mut(), decoder, 100)?;
33552
33553                        let value = unsafe {
33554                            slot.deref_unchecked()
33555                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
33556                        };
33557
33558                        if value.len() > 100 {
33559                            return Err(::fidl_next::DecodeError::VectorTooLong {
33560                                size: value.len() as u64,
33561                                limit: 100,
33562                            });
33563                        }
33564
33565                        Ok(())
33566                    }
33567
33568                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
33569                }
33570            })
33571        }
33572    }
33573
33574    impl<'de> RunnerRegistration<'de> {
33575        pub fn source_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
33576            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
33577        }
33578
33579        pub fn take_source_name(
33580            &mut self,
33581        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
33582            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
33583        }
33584
33585        pub fn source(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
33586            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
33587        }
33588
33589        pub fn take_source(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
33590            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
33591        }
33592
33593        pub fn target_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
33594            unsafe { Some(self.table.get(3)?.deref_unchecked()) }
33595        }
33596
33597        pub fn take_target_name(
33598            &mut self,
33599        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
33600            unsafe { Some(self.table.get_mut(3)?.take_unchecked()) }
33601        }
33602    }
33603
33604    impl<'de> ::core::fmt::Debug for RunnerRegistration<'de> {
33605        fn fmt(
33606            &self,
33607            f: &mut ::core::fmt::Formatter<'_>,
33608        ) -> ::core::result::Result<(), ::core::fmt::Error> {
33609            f.debug_struct("RunnerRegistration")
33610                .field("source_name", &self.source_name())
33611                .field("source", &self.source())
33612                .field("target_name", &self.target_name())
33613                .finish()
33614        }
33615    }
33616
33617    impl<'de> ::fidl_next::IntoNatural for RunnerRegistration<'de> {
33618        type Natural = crate::natural::RunnerRegistration;
33619    }
33620
33621    /// The wire type corresponding to [`ResolverRegistration`].
33622    #[repr(C)]
33623    pub struct ResolverRegistration<'de> {
33624        pub(crate) table: ::fidl_next::wire::Table<'de>,
33625    }
33626
33627    impl<'de> Drop for ResolverRegistration<'de> {
33628        fn drop(&mut self) {
33629            let _ = self.table.get(1).map(|envelope| unsafe {
33630                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
33631            });
33632
33633            let _ = self
33634                .table
33635                .get(2)
33636                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
33637
33638            let _ = self.table.get(3).map(|envelope| unsafe {
33639                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
33640            });
33641        }
33642    }
33643
33644    impl ::fidl_next::Constrained for ResolverRegistration<'_> {
33645        type Constraint = ();
33646
33647        fn validate(
33648            _: ::fidl_next::Slot<'_, Self>,
33649            _: Self::Constraint,
33650        ) -> Result<(), ::fidl_next::ValidationError> {
33651            Ok(())
33652        }
33653    }
33654
33655    unsafe impl ::fidl_next::Wire for ResolverRegistration<'static> {
33656        type Narrowed<'de> = ResolverRegistration<'de>;
33657
33658        #[inline]
33659        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
33660            ::fidl_next::munge!(let Self { table } = out);
33661            ::fidl_next::wire::Table::zero_padding(table);
33662        }
33663    }
33664
33665    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for ResolverRegistration<'de>
33666    where
33667        ___D: ::fidl_next::Decoder<'de> + ?Sized,
33668    {
33669        fn decode(
33670            slot: ::fidl_next::Slot<'_, Self>,
33671            decoder: &mut ___D,
33672            _: (),
33673        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
33674            ::fidl_next::munge!(let Self { table } = slot);
33675
33676            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
33677                match ordinal {
33678                    0 => unsafe { ::core::hint::unreachable_unchecked() },
33679
33680                    1 => {
33681                        ::fidl_next::wire::Envelope::decode_as::<
33682                            ___D,
33683                            ::fidl_next::wire::String<'de>,
33684                        >(slot.as_mut(), decoder, 100)?;
33685
33686                        let value = unsafe {
33687                            slot.deref_unchecked()
33688                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
33689                        };
33690
33691                        if value.len() > 100 {
33692                            return Err(::fidl_next::DecodeError::VectorTooLong {
33693                                size: value.len() as u64,
33694                                limit: 100,
33695                            });
33696                        }
33697
33698                        Ok(())
33699                    }
33700
33701                    2 => {
33702                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
33703                            slot.as_mut(),
33704                            decoder,
33705                            (),
33706                        )?;
33707
33708                        Ok(())
33709                    }
33710
33711                    3 => {
33712                        ::fidl_next::wire::Envelope::decode_as::<
33713                            ___D,
33714                            ::fidl_next::wire::String<'de>,
33715                        >(slot.as_mut(), decoder, 100)?;
33716
33717                        let value = unsafe {
33718                            slot.deref_unchecked()
33719                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
33720                        };
33721
33722                        if value.len() > 100 {
33723                            return Err(::fidl_next::DecodeError::VectorTooLong {
33724                                size: value.len() as u64,
33725                                limit: 100,
33726                            });
33727                        }
33728
33729                        Ok(())
33730                    }
33731
33732                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
33733                }
33734            })
33735        }
33736    }
33737
33738    impl<'de> ResolverRegistration<'de> {
33739        pub fn resolver(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
33740            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
33741        }
33742
33743        pub fn take_resolver(&mut self) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
33744            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
33745        }
33746
33747        pub fn source(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
33748            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
33749        }
33750
33751        pub fn take_source(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
33752            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
33753        }
33754
33755        pub fn scheme(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
33756            unsafe { Some(self.table.get(3)?.deref_unchecked()) }
33757        }
33758
33759        pub fn take_scheme(&mut self) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
33760            unsafe { Some(self.table.get_mut(3)?.take_unchecked()) }
33761        }
33762    }
33763
33764    impl<'de> ::core::fmt::Debug for ResolverRegistration<'de> {
33765        fn fmt(
33766            &self,
33767            f: &mut ::core::fmt::Formatter<'_>,
33768        ) -> ::core::result::Result<(), ::core::fmt::Error> {
33769            f.debug_struct("ResolverRegistration")
33770                .field("resolver", &self.resolver())
33771                .field("source", &self.source())
33772                .field("scheme", &self.scheme())
33773                .finish()
33774        }
33775    }
33776
33777    impl<'de> ::fidl_next::IntoNatural for ResolverRegistration<'de> {
33778        type Natural = crate::natural::ResolverRegistration;
33779    }
33780
33781    /// The wire type corresponding to [`DebugProtocolRegistration`].
33782    #[repr(C)]
33783    pub struct DebugProtocolRegistration<'de> {
33784        pub(crate) table: ::fidl_next::wire::Table<'de>,
33785    }
33786
33787    impl<'de> Drop for DebugProtocolRegistration<'de> {
33788        fn drop(&mut self) {
33789            let _ = self
33790                .table
33791                .get(1)
33792                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
33793
33794            let _ = self.table.get(2).map(|envelope| unsafe {
33795                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
33796            });
33797
33798            let _ = self.table.get(3).map(|envelope| unsafe {
33799                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
33800            });
33801        }
33802    }
33803
33804    impl ::fidl_next::Constrained for DebugProtocolRegistration<'_> {
33805        type Constraint = ();
33806
33807        fn validate(
33808            _: ::fidl_next::Slot<'_, Self>,
33809            _: Self::Constraint,
33810        ) -> Result<(), ::fidl_next::ValidationError> {
33811            Ok(())
33812        }
33813    }
33814
33815    unsafe impl ::fidl_next::Wire for DebugProtocolRegistration<'static> {
33816        type Narrowed<'de> = DebugProtocolRegistration<'de>;
33817
33818        #[inline]
33819        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
33820            ::fidl_next::munge!(let Self { table } = out);
33821            ::fidl_next::wire::Table::zero_padding(table);
33822        }
33823    }
33824
33825    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for DebugProtocolRegistration<'de>
33826    where
33827        ___D: ::fidl_next::Decoder<'de> + ?Sized,
33828    {
33829        fn decode(
33830            slot: ::fidl_next::Slot<'_, Self>,
33831            decoder: &mut ___D,
33832            _: (),
33833        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
33834            ::fidl_next::munge!(let Self { table } = slot);
33835
33836            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
33837                match ordinal {
33838                    0 => unsafe { ::core::hint::unreachable_unchecked() },
33839
33840                    1 => {
33841                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
33842                            slot.as_mut(),
33843                            decoder,
33844                            (),
33845                        )?;
33846
33847                        Ok(())
33848                    }
33849
33850                    2 => {
33851                        ::fidl_next::wire::Envelope::decode_as::<
33852                            ___D,
33853                            ::fidl_next::wire::String<'de>,
33854                        >(slot.as_mut(), decoder, 100)?;
33855
33856                        let value = unsafe {
33857                            slot.deref_unchecked()
33858                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
33859                        };
33860
33861                        if value.len() > 100 {
33862                            return Err(::fidl_next::DecodeError::VectorTooLong {
33863                                size: value.len() as u64,
33864                                limit: 100,
33865                            });
33866                        }
33867
33868                        Ok(())
33869                    }
33870
33871                    3 => {
33872                        ::fidl_next::wire::Envelope::decode_as::<
33873                            ___D,
33874                            ::fidl_next::wire::String<'de>,
33875                        >(slot.as_mut(), decoder, 100)?;
33876
33877                        let value = unsafe {
33878                            slot.deref_unchecked()
33879                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
33880                        };
33881
33882                        if value.len() > 100 {
33883                            return Err(::fidl_next::DecodeError::VectorTooLong {
33884                                size: value.len() as u64,
33885                                limit: 100,
33886                            });
33887                        }
33888
33889                        Ok(())
33890                    }
33891
33892                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
33893                }
33894            })
33895        }
33896    }
33897
33898    impl<'de> DebugProtocolRegistration<'de> {
33899        pub fn source(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
33900            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
33901        }
33902
33903        pub fn take_source(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
33904            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
33905        }
33906
33907        pub fn source_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
33908            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
33909        }
33910
33911        pub fn take_source_name(
33912            &mut self,
33913        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
33914            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
33915        }
33916
33917        pub fn target_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
33918            unsafe { Some(self.table.get(3)?.deref_unchecked()) }
33919        }
33920
33921        pub fn take_target_name(
33922            &mut self,
33923        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
33924            unsafe { Some(self.table.get_mut(3)?.take_unchecked()) }
33925        }
33926    }
33927
33928    impl<'de> ::core::fmt::Debug for DebugProtocolRegistration<'de> {
33929        fn fmt(
33930            &self,
33931            f: &mut ::core::fmt::Formatter<'_>,
33932        ) -> ::core::result::Result<(), ::core::fmt::Error> {
33933            f.debug_struct("DebugProtocolRegistration")
33934                .field("source", &self.source())
33935                .field("source_name", &self.source_name())
33936                .field("target_name", &self.target_name())
33937                .finish()
33938        }
33939    }
33940
33941    impl<'de> ::fidl_next::IntoNatural for DebugProtocolRegistration<'de> {
33942        type Natural = crate::natural::DebugProtocolRegistration;
33943    }
33944
33945    /// The wire type corresponding to [`DebugRegistration`].
33946    #[repr(transparent)]
33947    pub struct DebugRegistration<'de> {
33948        pub(crate) raw: ::fidl_next::wire::Union,
33949        pub(crate) _phantom: ::core::marker::PhantomData<&'de mut [::fidl_next::Chunk]>,
33950    }
33951
33952    impl<'de> Drop for DebugRegistration<'de> {
33953        fn drop(&mut self) {
33954            match self.raw.ordinal() {
33955                1 => {
33956                    let _ = unsafe {
33957                        self.raw
33958                            .get()
33959                            .read_unchecked::<crate::wire::DebugProtocolRegistration<'de>>()
33960                    };
33961                }
33962
33963                _ => (),
33964            }
33965        }
33966    }
33967
33968    impl ::fidl_next::Constrained for DebugRegistration<'_> {
33969        type Constraint = ();
33970
33971        fn validate(
33972            _: ::fidl_next::Slot<'_, Self>,
33973            _: Self::Constraint,
33974        ) -> Result<(), ::fidl_next::ValidationError> {
33975            Ok(())
33976        }
33977    }
33978
33979    unsafe impl ::fidl_next::Wire for DebugRegistration<'static> {
33980        type Narrowed<'de> = DebugRegistration<'de>;
33981
33982        #[inline]
33983        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
33984            ::fidl_next::munge!(let Self { raw, _phantom: _ } = out);
33985            ::fidl_next::wire::Union::zero_padding(raw);
33986        }
33987    }
33988
33989    pub mod debug_registration {
33990        pub enum Ref<'de> {
33991            Protocol(&'de crate::wire::DebugProtocolRegistration<'de>),
33992
33993            UnknownOrdinal_(u64),
33994        }
33995
33996        pub enum Value<'de> {
33997            Protocol(crate::wire::DebugProtocolRegistration<'de>),
33998
33999            UnknownOrdinal_(u64),
34000        }
34001    }
34002
34003    impl<'de> DebugRegistration<'de> {
34004        pub fn as_ref(&self) -> crate::wire::debug_registration::Ref<'_> {
34005            match self.raw.ordinal() {
34006                1 => crate::wire::debug_registration::Ref::Protocol(unsafe {
34007                    self.raw.get().deref_unchecked::<crate::wire::DebugProtocolRegistration<'_>>()
34008                }),
34009
34010                unknown => crate::wire::debug_registration::Ref::UnknownOrdinal_(unknown),
34011            }
34012        }
34013
34014        pub fn into_inner(self) -> crate::wire::debug_registration::Value<'de> {
34015            let this = ::core::mem::ManuallyDrop::new(self);
34016
34017            match this.raw.ordinal() {
34018                1 => crate::wire::debug_registration::Value::Protocol(unsafe {
34019                    this.raw.get().read_unchecked::<crate::wire::DebugProtocolRegistration<'de>>()
34020                }),
34021
34022                unknown => crate::wire::debug_registration::Value::UnknownOrdinal_(unknown),
34023            }
34024        }
34025    }
34026
34027    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for DebugRegistration<'de>
34028    where
34029        ___D: ::fidl_next::decoder::InternalHandleDecoder + ?Sized,
34030        ___D: ::fidl_next::Decoder<'de>,
34031    {
34032        fn decode(
34033            mut slot: ::fidl_next::Slot<'_, Self>,
34034            decoder: &mut ___D,
34035            _: (),
34036        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
34037            ::fidl_next::munge!(let Self { mut raw, _phantom: _ } = slot.as_mut());
34038            match ::fidl_next::wire::Union::encoded_ordinal(raw.as_mut()) {
34039                1 => ::fidl_next::wire::Union::decode_as::<
34040                    ___D,
34041                    crate::wire::DebugProtocolRegistration<'de>,
34042                >(raw, decoder, ())?,
34043
34044                _ => ::fidl_next::wire::Union::decode_unknown(raw, decoder)?,
34045            }
34046
34047            Ok(())
34048        }
34049    }
34050
34051    impl<'de> ::core::fmt::Debug for DebugRegistration<'de> {
34052        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
34053            match self.raw.ordinal() {
34054                1 => unsafe {
34055                    self.raw
34056                        .get()
34057                        .deref_unchecked::<crate::wire::DebugProtocolRegistration<'_>>()
34058                        .fmt(f)
34059                },
34060                _ => unsafe { ::core::hint::unreachable_unchecked() },
34061            }
34062        }
34063    }
34064
34065    impl<'de> ::fidl_next::IntoNatural for DebugRegistration<'de> {
34066        type Natural = crate::natural::DebugRegistration;
34067    }
34068
34069    /// The wire type corresponding to [`Environment`].
34070    #[repr(C)]
34071    pub struct Environment<'de> {
34072        pub(crate) table: ::fidl_next::wire::Table<'de>,
34073    }
34074
34075    impl<'de> Drop for Environment<'de> {
34076        fn drop(&mut self) {
34077            let _ = self.table.get(1).map(|envelope| unsafe {
34078                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
34079            });
34080
34081            let _ = self.table.get(2).map(|envelope| unsafe {
34082                envelope.read_unchecked::<crate::wire::EnvironmentExtends>()
34083            });
34084
34085            let _ = self.table.get(3)
34086                .map(|envelope| unsafe {
34087                    envelope.read_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::RunnerRegistration<'de>>>()
34088                });
34089
34090            let _ = self.table.get(4)
34091                .map(|envelope| unsafe {
34092                    envelope.read_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::ResolverRegistration<'de>>>()
34093                });
34094
34095            let _ = self.table.get(5)
34096                .map(|envelope| unsafe {
34097                    envelope.read_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::DebugRegistration<'de>>>()
34098                });
34099
34100            let _ = self
34101                .table
34102                .get(6)
34103                .map(|envelope| unsafe { envelope.read_unchecked::<::fidl_next::wire::Uint32>() });
34104        }
34105    }
34106
34107    impl ::fidl_next::Constrained for Environment<'_> {
34108        type Constraint = ();
34109
34110        fn validate(
34111            _: ::fidl_next::Slot<'_, Self>,
34112            _: Self::Constraint,
34113        ) -> Result<(), ::fidl_next::ValidationError> {
34114            Ok(())
34115        }
34116    }
34117
34118    unsafe impl ::fidl_next::Wire for Environment<'static> {
34119        type Narrowed<'de> = Environment<'de>;
34120
34121        #[inline]
34122        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
34123            ::fidl_next::munge!(let Self { table } = out);
34124            ::fidl_next::wire::Table::zero_padding(table);
34125        }
34126    }
34127
34128    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for Environment<'de>
34129    where
34130        ___D: ::fidl_next::Decoder<'de> + ?Sized,
34131    {
34132        fn decode(
34133            slot: ::fidl_next::Slot<'_, Self>,
34134            decoder: &mut ___D,
34135            _: (),
34136        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
34137            ::fidl_next::munge!(let Self { table } = slot);
34138
34139            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
34140                match ordinal {
34141                    0 => unsafe { ::core::hint::unreachable_unchecked() },
34142
34143                    1 => {
34144                        ::fidl_next::wire::Envelope::decode_as::<
34145                            ___D,
34146                            ::fidl_next::wire::String<'de>,
34147                        >(slot.as_mut(), decoder, 100)?;
34148
34149                        let value = unsafe {
34150                            slot.deref_unchecked()
34151                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
34152                        };
34153
34154                        if value.len() > 100 {
34155                            return Err(::fidl_next::DecodeError::VectorTooLong {
34156                                size: value.len() as u64,
34157                                limit: 100,
34158                            });
34159                        }
34160
34161                        Ok(())
34162                    }
34163
34164                    2 => {
34165                        ::fidl_next::wire::Envelope::decode_as::<
34166                            ___D,
34167                            crate::wire::EnvironmentExtends,
34168                        >(slot.as_mut(), decoder, ())?;
34169
34170                        Ok(())
34171                    }
34172
34173                    3 => {
34174                        ::fidl_next::wire::Envelope::decode_as::<
34175                            ___D,
34176                            ::fidl_next::wire::Vector<'de, crate::wire::RunnerRegistration<'de>>,
34177                        >(slot.as_mut(), decoder, (4294967295, ()))?;
34178
34179                        Ok(())
34180                    }
34181
34182                    4 => {
34183                        ::fidl_next::wire::Envelope::decode_as::<
34184                            ___D,
34185                            ::fidl_next::wire::Vector<'de, crate::wire::ResolverRegistration<'de>>,
34186                        >(slot.as_mut(), decoder, (4294967295, ()))?;
34187
34188                        Ok(())
34189                    }
34190
34191                    5 => {
34192                        ::fidl_next::wire::Envelope::decode_as::<
34193                            ___D,
34194                            ::fidl_next::wire::Vector<'de, crate::wire::DebugRegistration<'de>>,
34195                        >(slot.as_mut(), decoder, (4294967295, ()))?;
34196
34197                        Ok(())
34198                    }
34199
34200                    6 => {
34201                        ::fidl_next::wire::Envelope::decode_as::<___D, ::fidl_next::wire::Uint32>(
34202                            slot.as_mut(),
34203                            decoder,
34204                            (),
34205                        )?;
34206
34207                        Ok(())
34208                    }
34209
34210                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
34211                }
34212            })
34213        }
34214    }
34215
34216    impl<'de> Environment<'de> {
34217        pub fn name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
34218            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
34219        }
34220
34221        pub fn take_name(&mut self) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
34222            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
34223        }
34224
34225        pub fn extends(&self) -> ::core::option::Option<&crate::wire::EnvironmentExtends> {
34226            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
34227        }
34228
34229        pub fn take_extends(&mut self) -> ::core::option::Option<crate::wire::EnvironmentExtends> {
34230            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
34231        }
34232
34233        pub fn runners(
34234            &self,
34235        ) -> ::core::option::Option<
34236            &::fidl_next::wire::Vector<'de, crate::wire::RunnerRegistration<'de>>,
34237        > {
34238            unsafe { Some(self.table.get(3)?.deref_unchecked()) }
34239        }
34240
34241        pub fn take_runners(
34242            &mut self,
34243        ) -> ::core::option::Option<
34244            ::fidl_next::wire::Vector<'de, crate::wire::RunnerRegistration<'de>>,
34245        > {
34246            unsafe { Some(self.table.get_mut(3)?.take_unchecked()) }
34247        }
34248
34249        pub fn resolvers(
34250            &self,
34251        ) -> ::core::option::Option<
34252            &::fidl_next::wire::Vector<'de, crate::wire::ResolverRegistration<'de>>,
34253        > {
34254            unsafe { Some(self.table.get(4)?.deref_unchecked()) }
34255        }
34256
34257        pub fn take_resolvers(
34258            &mut self,
34259        ) -> ::core::option::Option<
34260            ::fidl_next::wire::Vector<'de, crate::wire::ResolverRegistration<'de>>,
34261        > {
34262            unsafe { Some(self.table.get_mut(4)?.take_unchecked()) }
34263        }
34264
34265        pub fn debug_capabilities(
34266            &self,
34267        ) -> ::core::option::Option<
34268            &::fidl_next::wire::Vector<'de, crate::wire::DebugRegistration<'de>>,
34269        > {
34270            unsafe { Some(self.table.get(5)?.deref_unchecked()) }
34271        }
34272
34273        pub fn take_debug_capabilities(
34274            &mut self,
34275        ) -> ::core::option::Option<
34276            ::fidl_next::wire::Vector<'de, crate::wire::DebugRegistration<'de>>,
34277        > {
34278            unsafe { Some(self.table.get_mut(5)?.take_unchecked()) }
34279        }
34280
34281        pub fn stop_timeout_ms(&self) -> ::core::option::Option<&::fidl_next::wire::Uint32> {
34282            unsafe { Some(self.table.get(6)?.deref_unchecked()) }
34283        }
34284
34285        pub fn take_stop_timeout_ms(
34286            &mut self,
34287        ) -> ::core::option::Option<::fidl_next::wire::Uint32> {
34288            unsafe { Some(self.table.get_mut(6)?.take_unchecked()) }
34289        }
34290    }
34291
34292    impl<'de> ::core::fmt::Debug for Environment<'de> {
34293        fn fmt(
34294            &self,
34295            f: &mut ::core::fmt::Formatter<'_>,
34296        ) -> ::core::result::Result<(), ::core::fmt::Error> {
34297            f.debug_struct("Environment")
34298                .field("name", &self.name())
34299                .field("extends", &self.extends())
34300                .field("runners", &self.runners())
34301                .field("resolvers", &self.resolvers())
34302                .field("debug_capabilities", &self.debug_capabilities())
34303                .field("stop_timeout_ms", &self.stop_timeout_ms())
34304                .finish()
34305        }
34306    }
34307
34308    impl<'de> ::fidl_next::IntoNatural for Environment<'de> {
34309        type Natural = crate::natural::Environment;
34310    }
34311
34312    /// The wire type corresponding to [`ConfigSourceCapabilities`].
34313    #[repr(C)]
34314    pub struct ConfigSourceCapabilities<'de> {
34315        pub(crate) table: ::fidl_next::wire::Table<'de>,
34316    }
34317
34318    impl<'de> Drop for ConfigSourceCapabilities<'de> {
34319        fn drop(&mut self) {}
34320    }
34321
34322    impl ::fidl_next::Constrained for ConfigSourceCapabilities<'_> {
34323        type Constraint = ();
34324
34325        fn validate(
34326            _: ::fidl_next::Slot<'_, Self>,
34327            _: Self::Constraint,
34328        ) -> Result<(), ::fidl_next::ValidationError> {
34329            Ok(())
34330        }
34331    }
34332
34333    unsafe impl ::fidl_next::Wire for ConfigSourceCapabilities<'static> {
34334        type Narrowed<'de> = ConfigSourceCapabilities<'de>;
34335
34336        #[inline]
34337        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
34338            ::fidl_next::munge!(let Self { table } = out);
34339            ::fidl_next::wire::Table::zero_padding(table);
34340        }
34341    }
34342
34343    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for ConfigSourceCapabilities<'de>
34344    where
34345        ___D: ::fidl_next::Decoder<'de> + ?Sized,
34346    {
34347        fn decode(
34348            slot: ::fidl_next::Slot<'_, Self>,
34349            decoder: &mut ___D,
34350            _: (),
34351        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
34352            ::fidl_next::munge!(let Self { table } = slot);
34353
34354            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
34355                match ordinal {
34356                    0 => unsafe { ::core::hint::unreachable_unchecked() },
34357
34358                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
34359                }
34360            })
34361        }
34362    }
34363
34364    impl<'de> ConfigSourceCapabilities<'de> {}
34365
34366    impl<'de> ::core::fmt::Debug for ConfigSourceCapabilities<'de> {
34367        fn fmt(
34368            &self,
34369            f: &mut ::core::fmt::Formatter<'_>,
34370        ) -> ::core::result::Result<(), ::core::fmt::Error> {
34371            f.debug_struct("ConfigSourceCapabilities").finish()
34372        }
34373    }
34374
34375    impl<'de> ::fidl_next::IntoNatural for ConfigSourceCapabilities<'de> {
34376        type Natural = crate::natural::ConfigSourceCapabilities;
34377    }
34378
34379    /// The wire type corresponding to [`ConfigValueSource`].
34380    #[repr(transparent)]
34381    pub struct ConfigValueSource<'de> {
34382        pub(crate) raw: ::fidl_next::wire::Union,
34383        pub(crate) _phantom: ::core::marker::PhantomData<&'de mut [::fidl_next::Chunk]>,
34384    }
34385
34386    impl<'de> Drop for ConfigValueSource<'de> {
34387        fn drop(&mut self) {
34388            match self.raw.ordinal() {
34389                1 => {
34390                    let _ = unsafe {
34391                        self.raw.get().read_unchecked::<::fidl_next::wire::String<'de>>()
34392                    };
34393                }
34394
34395                2 => {
34396                    let _ = unsafe {
34397                        self.raw
34398                            .get()
34399                            .read_unchecked::<crate::wire::ConfigSourceCapabilities<'de>>()
34400                    };
34401                }
34402
34403                _ => (),
34404            }
34405        }
34406    }
34407
34408    impl ::fidl_next::Constrained for ConfigValueSource<'_> {
34409        type Constraint = ();
34410
34411        fn validate(
34412            _: ::fidl_next::Slot<'_, Self>,
34413            _: Self::Constraint,
34414        ) -> Result<(), ::fidl_next::ValidationError> {
34415            Ok(())
34416        }
34417    }
34418
34419    unsafe impl ::fidl_next::Wire for ConfigValueSource<'static> {
34420        type Narrowed<'de> = ConfigValueSource<'de>;
34421
34422        #[inline]
34423        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
34424            ::fidl_next::munge!(let Self { raw, _phantom: _ } = out);
34425            ::fidl_next::wire::Union::zero_padding(raw);
34426        }
34427    }
34428
34429    pub mod config_value_source {
34430        pub enum Ref<'de> {
34431            PackagePath(&'de ::fidl_next::wire::String<'de>),
34432
34433            Capabilities(&'de crate::wire::ConfigSourceCapabilities<'de>),
34434
34435            UnknownOrdinal_(u64),
34436        }
34437
34438        pub enum Value<'de> {
34439            PackagePath(::fidl_next::wire::String<'de>),
34440
34441            Capabilities(crate::wire::ConfigSourceCapabilities<'de>),
34442
34443            UnknownOrdinal_(u64),
34444        }
34445    }
34446
34447    impl<'de> ConfigValueSource<'de> {
34448        pub fn as_ref(&self) -> crate::wire::config_value_source::Ref<'_> {
34449            match self.raw.ordinal() {
34450                1 => crate::wire::config_value_source::Ref::PackagePath(unsafe {
34451                    self.raw.get().deref_unchecked::<::fidl_next::wire::String<'_>>()
34452                }),
34453
34454                2 => crate::wire::config_value_source::Ref::Capabilities(unsafe {
34455                    self.raw.get().deref_unchecked::<crate::wire::ConfigSourceCapabilities<'_>>()
34456                }),
34457
34458                unknown => crate::wire::config_value_source::Ref::UnknownOrdinal_(unknown),
34459            }
34460        }
34461
34462        pub fn into_inner(self) -> crate::wire::config_value_source::Value<'de> {
34463            let this = ::core::mem::ManuallyDrop::new(self);
34464
34465            match this.raw.ordinal() {
34466                1 => crate::wire::config_value_source::Value::PackagePath(unsafe {
34467                    this.raw.get().read_unchecked::<::fidl_next::wire::String<'de>>()
34468                }),
34469
34470                2 => crate::wire::config_value_source::Value::Capabilities(unsafe {
34471                    this.raw.get().read_unchecked::<crate::wire::ConfigSourceCapabilities<'de>>()
34472                }),
34473
34474                unknown => crate::wire::config_value_source::Value::UnknownOrdinal_(unknown),
34475            }
34476        }
34477    }
34478
34479    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for ConfigValueSource<'de>
34480    where
34481        ___D: ::fidl_next::decoder::InternalHandleDecoder + ?Sized,
34482        ___D: ::fidl_next::Decoder<'de>,
34483    {
34484        fn decode(
34485            mut slot: ::fidl_next::Slot<'_, Self>,
34486            decoder: &mut ___D,
34487            _: (),
34488        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
34489            ::fidl_next::munge!(let Self { mut raw, _phantom: _ } = slot.as_mut());
34490            match ::fidl_next::wire::Union::encoded_ordinal(raw.as_mut()) {
34491                1 => ::fidl_next::wire::Union::decode_as::<___D, ::fidl_next::wire::String<'de>>(
34492                    raw, decoder, 4294967295,
34493                )?,
34494
34495                2 => ::fidl_next::wire::Union::decode_as::<
34496                    ___D,
34497                    crate::wire::ConfigSourceCapabilities<'de>,
34498                >(raw, decoder, ())?,
34499
34500                _ => ::fidl_next::wire::Union::decode_unknown(raw, decoder)?,
34501            }
34502
34503            Ok(())
34504        }
34505    }
34506
34507    impl<'de> ::core::fmt::Debug for ConfigValueSource<'de> {
34508        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
34509            match self.raw.ordinal() {
34510                1 => unsafe {
34511                    self.raw.get().deref_unchecked::<::fidl_next::wire::String<'_>>().fmt(f)
34512                },
34513                2 => unsafe {
34514                    self.raw
34515                        .get()
34516                        .deref_unchecked::<crate::wire::ConfigSourceCapabilities<'_>>()
34517                        .fmt(f)
34518                },
34519                _ => unsafe { ::core::hint::unreachable_unchecked() },
34520            }
34521        }
34522    }
34523
34524    impl<'de> ::fidl_next::IntoNatural for ConfigValueSource<'de> {
34525        type Natural = crate::natural::ConfigValueSource;
34526    }
34527
34528    /// The wire type corresponding to [`ConfigSchema`].
34529    #[repr(C)]
34530    pub struct ConfigSchema<'de> {
34531        pub(crate) table: ::fidl_next::wire::Table<'de>,
34532    }
34533
34534    impl<'de> Drop for ConfigSchema<'de> {
34535        fn drop(&mut self) {
34536            let _ = self.table.get(1)
34537                .map(|envelope| unsafe {
34538                    envelope.read_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::ConfigField<'de>>>()
34539                });
34540
34541            let _ = self.table.get(2).map(|envelope| unsafe {
34542                envelope.read_unchecked::<crate::wire::ConfigChecksum<'de>>()
34543            });
34544
34545            let _ = self.table.get(3).map(|envelope| unsafe {
34546                envelope.read_unchecked::<crate::wire::ConfigValueSource<'de>>()
34547            });
34548        }
34549    }
34550
34551    impl ::fidl_next::Constrained for ConfigSchema<'_> {
34552        type Constraint = ();
34553
34554        fn validate(
34555            _: ::fidl_next::Slot<'_, Self>,
34556            _: Self::Constraint,
34557        ) -> Result<(), ::fidl_next::ValidationError> {
34558            Ok(())
34559        }
34560    }
34561
34562    unsafe impl ::fidl_next::Wire for ConfigSchema<'static> {
34563        type Narrowed<'de> = ConfigSchema<'de>;
34564
34565        #[inline]
34566        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
34567            ::fidl_next::munge!(let Self { table } = out);
34568            ::fidl_next::wire::Table::zero_padding(table);
34569        }
34570    }
34571
34572    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for ConfigSchema<'de>
34573    where
34574        ___D: ::fidl_next::Decoder<'de> + ?Sized,
34575    {
34576        fn decode(
34577            slot: ::fidl_next::Slot<'_, Self>,
34578            decoder: &mut ___D,
34579            _: (),
34580        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
34581            ::fidl_next::munge!(let Self { table } = slot);
34582
34583            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
34584                match ordinal {
34585                    0 => unsafe { ::core::hint::unreachable_unchecked() },
34586
34587                    1 => {
34588                        ::fidl_next::wire::Envelope::decode_as::<
34589                            ___D,
34590                            ::fidl_next::wire::Vector<'de, crate::wire::ConfigField<'de>>,
34591                        >(slot.as_mut(), decoder, (4294967295, ()))?;
34592
34593                        Ok(())
34594                    }
34595
34596                    2 => {
34597                        ::fidl_next::wire::Envelope::decode_as::<
34598                            ___D,
34599                            crate::wire::ConfigChecksum<'de>,
34600                        >(slot.as_mut(), decoder, ())?;
34601
34602                        Ok(())
34603                    }
34604
34605                    3 => {
34606                        ::fidl_next::wire::Envelope::decode_as::<
34607                            ___D,
34608                            crate::wire::ConfigValueSource<'de>,
34609                        >(slot.as_mut(), decoder, ())?;
34610
34611                        Ok(())
34612                    }
34613
34614                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
34615                }
34616            })
34617        }
34618    }
34619
34620    impl<'de> ConfigSchema<'de> {
34621        pub fn fields(
34622            &self,
34623        ) -> ::core::option::Option<&::fidl_next::wire::Vector<'de, crate::wire::ConfigField<'de>>>
34624        {
34625            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
34626        }
34627
34628        pub fn take_fields(
34629            &mut self,
34630        ) -> ::core::option::Option<::fidl_next::wire::Vector<'de, crate::wire::ConfigField<'de>>>
34631        {
34632            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
34633        }
34634
34635        pub fn checksum(&self) -> ::core::option::Option<&crate::wire::ConfigChecksum<'de>> {
34636            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
34637        }
34638
34639        pub fn take_checksum(
34640            &mut self,
34641        ) -> ::core::option::Option<crate::wire::ConfigChecksum<'de>> {
34642            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
34643        }
34644
34645        pub fn value_source(&self) -> ::core::option::Option<&crate::wire::ConfigValueSource<'de>> {
34646            unsafe { Some(self.table.get(3)?.deref_unchecked()) }
34647        }
34648
34649        pub fn take_value_source(
34650            &mut self,
34651        ) -> ::core::option::Option<crate::wire::ConfigValueSource<'de>> {
34652            unsafe { Some(self.table.get_mut(3)?.take_unchecked()) }
34653        }
34654    }
34655
34656    impl<'de> ::core::fmt::Debug for ConfigSchema<'de> {
34657        fn fmt(
34658            &self,
34659            f: &mut ::core::fmt::Formatter<'_>,
34660        ) -> ::core::result::Result<(), ::core::fmt::Error> {
34661            f.debug_struct("ConfigSchema")
34662                .field("fields", &self.fields())
34663                .field("checksum", &self.checksum())
34664                .field("value_source", &self.value_source())
34665                .finish()
34666        }
34667    }
34668
34669    impl<'de> ::fidl_next::IntoNatural for ConfigSchema<'de> {
34670        type Natural = crate::natural::ConfigSchema;
34671    }
34672
34673    /// The wire type corresponding to [`Component`].
34674    #[repr(C)]
34675    pub struct Component<'de> {
34676        pub(crate) table: ::fidl_next::wire::Table<'de>,
34677    }
34678
34679    impl<'de> Drop for Component<'de> {
34680        fn drop(&mut self) {
34681            let _ = self
34682                .table
34683                .get(1)
34684                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Program<'de>>() });
34685
34686            let _ = self.table.get(2).map(|envelope| unsafe {
34687                envelope.read_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::Use<'de>>>()
34688            });
34689
34690            let _ = self.table.get(3).map(|envelope| unsafe {
34691                envelope
34692                    .read_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::Expose<'de>>>()
34693            });
34694
34695            let _ = self.table.get(4).map(|envelope| unsafe {
34696                envelope.read_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::Offer<'de>>>()
34697            });
34698
34699            let _ = self.table.get(5).map(|envelope| unsafe {
34700                envelope
34701                    .read_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::Capability<'de>>>(
34702                    )
34703            });
34704
34705            let _ = self.table.get(6).map(|envelope| unsafe {
34706                envelope.read_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::Child<'de>>>()
34707            });
34708
34709            let _ = self.table.get(7).map(|envelope| unsafe {
34710                envelope
34711                    .read_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::Collection<'de>>>(
34712                    )
34713            });
34714
34715            let _ = self.table.get(8)
34716                .map(|envelope| unsafe {
34717                    envelope.read_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::Environment<'de>>>()
34718                });
34719
34720            let _ = self.table.get(9).map(|envelope| unsafe {
34721                envelope.read_unchecked::<::fidl_next_common_fuchsia_data::wire::Dictionary<'de>>()
34722            });
34723
34724            let _ = self.table.get(10).map(|envelope| unsafe {
34725                envelope.read_unchecked::<crate::wire::ConfigSchema<'de>>()
34726            });
34727
34728            let _ = self.table.get(11).map(|envelope| unsafe {
34729                envelope.read_unchecked::<crate::wire::DebugInfo<'de>>()
34730            });
34731        }
34732    }
34733
34734    impl ::fidl_next::Constrained for Component<'_> {
34735        type Constraint = ();
34736
34737        fn validate(
34738            _: ::fidl_next::Slot<'_, Self>,
34739            _: Self::Constraint,
34740        ) -> Result<(), ::fidl_next::ValidationError> {
34741            Ok(())
34742        }
34743    }
34744
34745    unsafe impl ::fidl_next::Wire for Component<'static> {
34746        type Narrowed<'de> = Component<'de>;
34747
34748        #[inline]
34749        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
34750            ::fidl_next::munge!(let Self { table } = out);
34751            ::fidl_next::wire::Table::zero_padding(table);
34752        }
34753    }
34754
34755    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for Component<'de>
34756    where
34757        ___D: ::fidl_next::Decoder<'de> + ?Sized,
34758    {
34759        fn decode(
34760            slot: ::fidl_next::Slot<'_, Self>,
34761            decoder: &mut ___D,
34762            _: (),
34763        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
34764            ::fidl_next::munge!(let Self { table } = slot);
34765
34766            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
34767                match ordinal {
34768                    0 => unsafe { ::core::hint::unreachable_unchecked() },
34769
34770                    1 => {
34771                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Program<'de>>(
34772                            slot.as_mut(),
34773                            decoder,
34774                            (),
34775                        )?;
34776
34777                        Ok(())
34778                    }
34779
34780                    2 => {
34781                        ::fidl_next::wire::Envelope::decode_as::<
34782                            ___D,
34783                            ::fidl_next::wire::Vector<'de, crate::wire::Use<'de>>,
34784                        >(slot.as_mut(), decoder, (4294967295, ()))?;
34785
34786                        Ok(())
34787                    }
34788
34789                    3 => {
34790                        ::fidl_next::wire::Envelope::decode_as::<
34791                            ___D,
34792                            ::fidl_next::wire::Vector<'de, crate::wire::Expose<'de>>,
34793                        >(slot.as_mut(), decoder, (4294967295, ()))?;
34794
34795                        Ok(())
34796                    }
34797
34798                    4 => {
34799                        ::fidl_next::wire::Envelope::decode_as::<
34800                            ___D,
34801                            ::fidl_next::wire::Vector<'de, crate::wire::Offer<'de>>,
34802                        >(slot.as_mut(), decoder, (4294967295, ()))?;
34803
34804                        Ok(())
34805                    }
34806
34807                    5 => {
34808                        ::fidl_next::wire::Envelope::decode_as::<
34809                            ___D,
34810                            ::fidl_next::wire::Vector<'de, crate::wire::Capability<'de>>,
34811                        >(slot.as_mut(), decoder, (4294967295, ()))?;
34812
34813                        Ok(())
34814                    }
34815
34816                    6 => {
34817                        ::fidl_next::wire::Envelope::decode_as::<
34818                            ___D,
34819                            ::fidl_next::wire::Vector<'de, crate::wire::Child<'de>>,
34820                        >(slot.as_mut(), decoder, (4294967295, ()))?;
34821
34822                        Ok(())
34823                    }
34824
34825                    7 => {
34826                        ::fidl_next::wire::Envelope::decode_as::<
34827                            ___D,
34828                            ::fidl_next::wire::Vector<'de, crate::wire::Collection<'de>>,
34829                        >(slot.as_mut(), decoder, (4294967295, ()))?;
34830
34831                        Ok(())
34832                    }
34833
34834                    8 => {
34835                        ::fidl_next::wire::Envelope::decode_as::<
34836                            ___D,
34837                            ::fidl_next::wire::Vector<'de, crate::wire::Environment<'de>>,
34838                        >(slot.as_mut(), decoder, (4294967295, ()))?;
34839
34840                        Ok(())
34841                    }
34842
34843                    9 => {
34844                        ::fidl_next::wire::Envelope::decode_as::<
34845                            ___D,
34846                            ::fidl_next_common_fuchsia_data::wire::Dictionary<'de>,
34847                        >(slot.as_mut(), decoder, ())?;
34848
34849                        Ok(())
34850                    }
34851
34852                    10 => {
34853                        ::fidl_next::wire::Envelope::decode_as::<
34854                            ___D,
34855                            crate::wire::ConfigSchema<'de>,
34856                        >(slot.as_mut(), decoder, ())?;
34857
34858                        Ok(())
34859                    }
34860
34861                    11 => {
34862                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::DebugInfo<'de>>(
34863                            slot.as_mut(),
34864                            decoder,
34865                            (),
34866                        )?;
34867
34868                        Ok(())
34869                    }
34870
34871                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
34872                }
34873            })
34874        }
34875    }
34876
34877    impl<'de> Component<'de> {
34878        pub fn program(&self) -> ::core::option::Option<&crate::wire::Program<'de>> {
34879            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
34880        }
34881
34882        pub fn take_program(&mut self) -> ::core::option::Option<crate::wire::Program<'de>> {
34883            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
34884        }
34885
34886        pub fn uses(
34887            &self,
34888        ) -> ::core::option::Option<&::fidl_next::wire::Vector<'de, crate::wire::Use<'de>>>
34889        {
34890            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
34891        }
34892
34893        pub fn take_uses(
34894            &mut self,
34895        ) -> ::core::option::Option<::fidl_next::wire::Vector<'de, crate::wire::Use<'de>>> {
34896            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
34897        }
34898
34899        pub fn exposes(
34900            &self,
34901        ) -> ::core::option::Option<&::fidl_next::wire::Vector<'de, crate::wire::Expose<'de>>>
34902        {
34903            unsafe { Some(self.table.get(3)?.deref_unchecked()) }
34904        }
34905
34906        pub fn take_exposes(
34907            &mut self,
34908        ) -> ::core::option::Option<::fidl_next::wire::Vector<'de, crate::wire::Expose<'de>>>
34909        {
34910            unsafe { Some(self.table.get_mut(3)?.take_unchecked()) }
34911        }
34912
34913        pub fn offers(
34914            &self,
34915        ) -> ::core::option::Option<&::fidl_next::wire::Vector<'de, crate::wire::Offer<'de>>>
34916        {
34917            unsafe { Some(self.table.get(4)?.deref_unchecked()) }
34918        }
34919
34920        pub fn take_offers(
34921            &mut self,
34922        ) -> ::core::option::Option<::fidl_next::wire::Vector<'de, crate::wire::Offer<'de>>>
34923        {
34924            unsafe { Some(self.table.get_mut(4)?.take_unchecked()) }
34925        }
34926
34927        pub fn capabilities(
34928            &self,
34929        ) -> ::core::option::Option<&::fidl_next::wire::Vector<'de, crate::wire::Capability<'de>>>
34930        {
34931            unsafe { Some(self.table.get(5)?.deref_unchecked()) }
34932        }
34933
34934        pub fn take_capabilities(
34935            &mut self,
34936        ) -> ::core::option::Option<::fidl_next::wire::Vector<'de, crate::wire::Capability<'de>>>
34937        {
34938            unsafe { Some(self.table.get_mut(5)?.take_unchecked()) }
34939        }
34940
34941        pub fn children(
34942            &self,
34943        ) -> ::core::option::Option<&::fidl_next::wire::Vector<'de, crate::wire::Child<'de>>>
34944        {
34945            unsafe { Some(self.table.get(6)?.deref_unchecked()) }
34946        }
34947
34948        pub fn take_children(
34949            &mut self,
34950        ) -> ::core::option::Option<::fidl_next::wire::Vector<'de, crate::wire::Child<'de>>>
34951        {
34952            unsafe { Some(self.table.get_mut(6)?.take_unchecked()) }
34953        }
34954
34955        pub fn collections(
34956            &self,
34957        ) -> ::core::option::Option<&::fidl_next::wire::Vector<'de, crate::wire::Collection<'de>>>
34958        {
34959            unsafe { Some(self.table.get(7)?.deref_unchecked()) }
34960        }
34961
34962        pub fn take_collections(
34963            &mut self,
34964        ) -> ::core::option::Option<::fidl_next::wire::Vector<'de, crate::wire::Collection<'de>>>
34965        {
34966            unsafe { Some(self.table.get_mut(7)?.take_unchecked()) }
34967        }
34968
34969        pub fn environments(
34970            &self,
34971        ) -> ::core::option::Option<&::fidl_next::wire::Vector<'de, crate::wire::Environment<'de>>>
34972        {
34973            unsafe { Some(self.table.get(8)?.deref_unchecked()) }
34974        }
34975
34976        pub fn take_environments(
34977            &mut self,
34978        ) -> ::core::option::Option<::fidl_next::wire::Vector<'de, crate::wire::Environment<'de>>>
34979        {
34980            unsafe { Some(self.table.get_mut(8)?.take_unchecked()) }
34981        }
34982
34983        pub fn facets(
34984            &self,
34985        ) -> ::core::option::Option<&::fidl_next_common_fuchsia_data::wire::Dictionary<'de>>
34986        {
34987            unsafe { Some(self.table.get(9)?.deref_unchecked()) }
34988        }
34989
34990        pub fn take_facets(
34991            &mut self,
34992        ) -> ::core::option::Option<::fidl_next_common_fuchsia_data::wire::Dictionary<'de>>
34993        {
34994            unsafe { Some(self.table.get_mut(9)?.take_unchecked()) }
34995        }
34996
34997        pub fn config(&self) -> ::core::option::Option<&crate::wire::ConfigSchema<'de>> {
34998            unsafe { Some(self.table.get(10)?.deref_unchecked()) }
34999        }
35000
35001        pub fn take_config(&mut self) -> ::core::option::Option<crate::wire::ConfigSchema<'de>> {
35002            unsafe { Some(self.table.get_mut(10)?.take_unchecked()) }
35003        }
35004
35005        pub fn debug_info(&self) -> ::core::option::Option<&crate::wire::DebugInfo<'de>> {
35006            unsafe { Some(self.table.get(11)?.deref_unchecked()) }
35007        }
35008
35009        pub fn take_debug_info(&mut self) -> ::core::option::Option<crate::wire::DebugInfo<'de>> {
35010            unsafe { Some(self.table.get_mut(11)?.take_unchecked()) }
35011        }
35012    }
35013
35014    impl<'de> ::core::fmt::Debug for Component<'de> {
35015        fn fmt(
35016            &self,
35017            f: &mut ::core::fmt::Formatter<'_>,
35018        ) -> ::core::result::Result<(), ::core::fmt::Error> {
35019            f.debug_struct("Component")
35020                .field("program", &self.program())
35021                .field("uses", &self.uses())
35022                .field("exposes", &self.exposes())
35023                .field("offers", &self.offers())
35024                .field("capabilities", &self.capabilities())
35025                .field("children", &self.children())
35026                .field("collections", &self.collections())
35027                .field("environments", &self.environments())
35028                .field("facets", &self.facets())
35029                .field("config", &self.config())
35030                .field("debug_info", &self.debug_info())
35031                .finish()
35032        }
35033    }
35034
35035    impl<'de> ::fidl_next::IntoNatural for Component<'de> {
35036        type Natural = crate::natural::Component;
35037    }
35038
35039    /// The wire type corresponding to [`ConfigValueSpec`].
35040    #[repr(C)]
35041    pub struct ConfigValueSpec<'de> {
35042        pub(crate) table: ::fidl_next::wire::Table<'de>,
35043    }
35044
35045    impl<'de> Drop for ConfigValueSpec<'de> {
35046        fn drop(&mut self) {
35047            let _ = self.table.get(1).map(|envelope| unsafe {
35048                envelope.read_unchecked::<crate::wire::ConfigValue<'de>>()
35049            });
35050        }
35051    }
35052
35053    impl ::fidl_next::Constrained for ConfigValueSpec<'_> {
35054        type Constraint = ();
35055
35056        fn validate(
35057            _: ::fidl_next::Slot<'_, Self>,
35058            _: Self::Constraint,
35059        ) -> Result<(), ::fidl_next::ValidationError> {
35060            Ok(())
35061        }
35062    }
35063
35064    unsafe impl ::fidl_next::Wire for ConfigValueSpec<'static> {
35065        type Narrowed<'de> = ConfigValueSpec<'de>;
35066
35067        #[inline]
35068        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
35069            ::fidl_next::munge!(let Self { table } = out);
35070            ::fidl_next::wire::Table::zero_padding(table);
35071        }
35072    }
35073
35074    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for ConfigValueSpec<'de>
35075    where
35076        ___D: ::fidl_next::Decoder<'de> + ?Sized,
35077    {
35078        fn decode(
35079            slot: ::fidl_next::Slot<'_, Self>,
35080            decoder: &mut ___D,
35081            _: (),
35082        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
35083            ::fidl_next::munge!(let Self { table } = slot);
35084
35085            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
35086                match ordinal {
35087                    0 => unsafe { ::core::hint::unreachable_unchecked() },
35088
35089                    1 => {
35090                        ::fidl_next::wire::Envelope::decode_as::<
35091                            ___D,
35092                            crate::wire::ConfigValue<'de>,
35093                        >(slot.as_mut(), decoder, ())?;
35094
35095                        Ok(())
35096                    }
35097
35098                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
35099                }
35100            })
35101        }
35102    }
35103
35104    impl<'de> ConfigValueSpec<'de> {
35105        pub fn value(&self) -> ::core::option::Option<&crate::wire::ConfigValue<'de>> {
35106            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
35107        }
35108
35109        pub fn take_value(&mut self) -> ::core::option::Option<crate::wire::ConfigValue<'de>> {
35110            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
35111        }
35112    }
35113
35114    impl<'de> ::core::fmt::Debug for ConfigValueSpec<'de> {
35115        fn fmt(
35116            &self,
35117            f: &mut ::core::fmt::Formatter<'_>,
35118        ) -> ::core::result::Result<(), ::core::fmt::Error> {
35119            f.debug_struct("ConfigValueSpec").field("value", &self.value()).finish()
35120        }
35121    }
35122
35123    impl<'de> ::fidl_next::IntoNatural for ConfigValueSpec<'de> {
35124        type Natural = crate::natural::ConfigValueSpec;
35125    }
35126
35127    /// The wire type corresponding to [`ConfigValuesData`].
35128    #[repr(C)]
35129    pub struct ConfigValuesData<'de> {
35130        pub(crate) table: ::fidl_next::wire::Table<'de>,
35131    }
35132
35133    impl<'de> Drop for ConfigValuesData<'de> {
35134        fn drop(&mut self) {
35135            let _ = self.table.get(1)
35136                .map(|envelope| unsafe {
35137                    envelope.read_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::ConfigValueSpec<'de>>>()
35138                });
35139
35140            let _ = self.table.get(2).map(|envelope| unsafe {
35141                envelope.read_unchecked::<crate::wire::ConfigChecksum<'de>>()
35142            });
35143        }
35144    }
35145
35146    impl ::fidl_next::Constrained for ConfigValuesData<'_> {
35147        type Constraint = ();
35148
35149        fn validate(
35150            _: ::fidl_next::Slot<'_, Self>,
35151            _: Self::Constraint,
35152        ) -> Result<(), ::fidl_next::ValidationError> {
35153            Ok(())
35154        }
35155    }
35156
35157    unsafe impl ::fidl_next::Wire for ConfigValuesData<'static> {
35158        type Narrowed<'de> = ConfigValuesData<'de>;
35159
35160        #[inline]
35161        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
35162            ::fidl_next::munge!(let Self { table } = out);
35163            ::fidl_next::wire::Table::zero_padding(table);
35164        }
35165    }
35166
35167    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for ConfigValuesData<'de>
35168    where
35169        ___D: ::fidl_next::Decoder<'de> + ?Sized,
35170    {
35171        fn decode(
35172            slot: ::fidl_next::Slot<'_, Self>,
35173            decoder: &mut ___D,
35174            _: (),
35175        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
35176            ::fidl_next::munge!(let Self { table } = slot);
35177
35178            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
35179                match ordinal {
35180                    0 => unsafe { ::core::hint::unreachable_unchecked() },
35181
35182                    1 => {
35183                        ::fidl_next::wire::Envelope::decode_as::<
35184                            ___D,
35185                            ::fidl_next::wire::Vector<'de, crate::wire::ConfigValueSpec<'de>>,
35186                        >(slot.as_mut(), decoder, (4294967295, ()))?;
35187
35188                        Ok(())
35189                    }
35190
35191                    2 => {
35192                        ::fidl_next::wire::Envelope::decode_as::<
35193                            ___D,
35194                            crate::wire::ConfigChecksum<'de>,
35195                        >(slot.as_mut(), decoder, ())?;
35196
35197                        Ok(())
35198                    }
35199
35200                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
35201                }
35202            })
35203        }
35204    }
35205
35206    impl<'de> ConfigValuesData<'de> {
35207        pub fn values(
35208            &self,
35209        ) -> ::core::option::Option<
35210            &::fidl_next::wire::Vector<'de, crate::wire::ConfigValueSpec<'de>>,
35211        > {
35212            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
35213        }
35214
35215        pub fn take_values(
35216            &mut self,
35217        ) -> ::core::option::Option<::fidl_next::wire::Vector<'de, crate::wire::ConfigValueSpec<'de>>>
35218        {
35219            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
35220        }
35221
35222        pub fn checksum(&self) -> ::core::option::Option<&crate::wire::ConfigChecksum<'de>> {
35223            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
35224        }
35225
35226        pub fn take_checksum(
35227            &mut self,
35228        ) -> ::core::option::Option<crate::wire::ConfigChecksum<'de>> {
35229            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
35230        }
35231    }
35232
35233    impl<'de> ::core::fmt::Debug for ConfigValuesData<'de> {
35234        fn fmt(
35235            &self,
35236            f: &mut ::core::fmt::Formatter<'_>,
35237        ) -> ::core::result::Result<(), ::core::fmt::Error> {
35238            f.debug_struct("ConfigValuesData")
35239                .field("values", &self.values())
35240                .field("checksum", &self.checksum())
35241                .finish()
35242        }
35243    }
35244
35245    impl<'de> ::fidl_next::IntoNatural for ConfigValuesData<'de> {
35246        type Natural = crate::natural::ConfigValuesData;
35247    }
35248
35249    /// The wire type corresponding to [`EventSubscription`].
35250    #[repr(C)]
35251    pub struct EventSubscription<'de> {
35252        pub(crate) table: ::fidl_next::wire::Table<'de>,
35253    }
35254
35255    impl<'de> Drop for EventSubscription<'de> {
35256        fn drop(&mut self) {
35257            let _ = self.table.get(1).map(|envelope| unsafe {
35258                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
35259            });
35260        }
35261    }
35262
35263    impl ::fidl_next::Constrained for EventSubscription<'_> {
35264        type Constraint = ();
35265
35266        fn validate(
35267            _: ::fidl_next::Slot<'_, Self>,
35268            _: Self::Constraint,
35269        ) -> Result<(), ::fidl_next::ValidationError> {
35270            Ok(())
35271        }
35272    }
35273
35274    unsafe impl ::fidl_next::Wire for EventSubscription<'static> {
35275        type Narrowed<'de> = EventSubscription<'de>;
35276
35277        #[inline]
35278        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
35279            ::fidl_next::munge!(let Self { table } = out);
35280            ::fidl_next::wire::Table::zero_padding(table);
35281        }
35282    }
35283
35284    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for EventSubscription<'de>
35285    where
35286        ___D: ::fidl_next::Decoder<'de> + ?Sized,
35287    {
35288        fn decode(
35289            slot: ::fidl_next::Slot<'_, Self>,
35290            decoder: &mut ___D,
35291            _: (),
35292        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
35293            ::fidl_next::munge!(let Self { table } = slot);
35294
35295            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
35296                match ordinal {
35297                    0 => unsafe { ::core::hint::unreachable_unchecked() },
35298
35299                    1 => {
35300                        ::fidl_next::wire::Envelope::decode_as::<
35301                            ___D,
35302                            ::fidl_next::wire::String<'de>,
35303                        >(slot.as_mut(), decoder, 100)?;
35304
35305                        let value = unsafe {
35306                            slot.deref_unchecked()
35307                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
35308                        };
35309
35310                        if value.len() > 100 {
35311                            return Err(::fidl_next::DecodeError::VectorTooLong {
35312                                size: value.len() as u64,
35313                                limit: 100,
35314                            });
35315                        }
35316
35317                        Ok(())
35318                    }
35319
35320                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
35321                }
35322            })
35323        }
35324    }
35325
35326    impl<'de> EventSubscription<'de> {
35327        pub fn event_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
35328            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
35329        }
35330
35331        pub fn take_event_name(
35332            &mut self,
35333        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
35334            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
35335        }
35336    }
35337
35338    impl<'de> ::core::fmt::Debug for EventSubscription<'de> {
35339        fn fmt(
35340            &self,
35341            f: &mut ::core::fmt::Formatter<'_>,
35342        ) -> ::core::result::Result<(), ::core::fmt::Error> {
35343            f.debug_struct("EventSubscription").field("event_name", &self.event_name()).finish()
35344        }
35345    }
35346
35347    impl<'de> ::fidl_next::IntoNatural for EventSubscription<'de> {
35348        type Natural = crate::natural::EventSubscription;
35349    }
35350
35351    /// The wire type corresponding to [`LayoutParameter`].
35352    #[repr(transparent)]
35353    pub struct LayoutParameter<'de> {
35354        pub(crate) raw: ::fidl_next::wire::Union,
35355        pub(crate) _phantom: ::core::marker::PhantomData<&'de mut [::fidl_next::Chunk]>,
35356    }
35357
35358    impl<'de> Drop for LayoutParameter<'de> {
35359        fn drop(&mut self) {
35360            match self.raw.ordinal() {
35361                1 => {
35362                    let _ =
35363                        unsafe { self.raw.get().read_unchecked::<crate::wire::ConfigType<'de>>() };
35364                }
35365
35366                _ => (),
35367            }
35368        }
35369    }
35370
35371    impl ::fidl_next::Constrained for LayoutParameter<'_> {
35372        type Constraint = ();
35373
35374        fn validate(
35375            _: ::fidl_next::Slot<'_, Self>,
35376            _: Self::Constraint,
35377        ) -> Result<(), ::fidl_next::ValidationError> {
35378            Ok(())
35379        }
35380    }
35381
35382    unsafe impl ::fidl_next::Wire for LayoutParameter<'static> {
35383        type Narrowed<'de> = LayoutParameter<'de>;
35384
35385        #[inline]
35386        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
35387            ::fidl_next::munge!(let Self { raw, _phantom: _ } = out);
35388            ::fidl_next::wire::Union::zero_padding(raw);
35389        }
35390    }
35391
35392    pub mod layout_parameter {
35393        pub enum Ref<'de> {
35394            NestedType(&'de crate::wire::ConfigType<'de>),
35395
35396            UnknownOrdinal_(u64),
35397        }
35398
35399        pub enum Value<'de> {
35400            NestedType(crate::wire::ConfigType<'de>),
35401
35402            UnknownOrdinal_(u64),
35403        }
35404    }
35405
35406    impl<'de> LayoutParameter<'de> {
35407        pub fn as_ref(&self) -> crate::wire::layout_parameter::Ref<'_> {
35408            match self.raw.ordinal() {
35409                1 => crate::wire::layout_parameter::Ref::NestedType(unsafe {
35410                    self.raw.get().deref_unchecked::<crate::wire::ConfigType<'_>>()
35411                }),
35412
35413                unknown => crate::wire::layout_parameter::Ref::UnknownOrdinal_(unknown),
35414            }
35415        }
35416
35417        pub fn into_inner(self) -> crate::wire::layout_parameter::Value<'de> {
35418            let this = ::core::mem::ManuallyDrop::new(self);
35419
35420            match this.raw.ordinal() {
35421                1 => crate::wire::layout_parameter::Value::NestedType(unsafe {
35422                    this.raw.get().read_unchecked::<crate::wire::ConfigType<'de>>()
35423                }),
35424
35425                unknown => crate::wire::layout_parameter::Value::UnknownOrdinal_(unknown),
35426            }
35427        }
35428    }
35429
35430    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for LayoutParameter<'de>
35431    where
35432        ___D: ::fidl_next::decoder::InternalHandleDecoder + ?Sized,
35433        ___D: ::fidl_next::Decoder<'de>,
35434    {
35435        fn decode(
35436            mut slot: ::fidl_next::Slot<'_, Self>,
35437            decoder: &mut ___D,
35438            _: (),
35439        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
35440            ::fidl_next::munge!(let Self { mut raw, _phantom: _ } = slot.as_mut());
35441            match ::fidl_next::wire::Union::encoded_ordinal(raw.as_mut()) {
35442                1 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::ConfigType<'de>>(
35443                    raw,
35444                    decoder,
35445                    (),
35446                )?,
35447
35448                _ => ::fidl_next::wire::Union::decode_unknown(raw, decoder)?,
35449            }
35450
35451            Ok(())
35452        }
35453    }
35454
35455    impl<'de> ::core::fmt::Debug for LayoutParameter<'de> {
35456        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
35457            match self.raw.ordinal() {
35458                1 => unsafe {
35459                    self.raw.get().deref_unchecked::<crate::wire::ConfigType<'_>>().fmt(f)
35460                },
35461                _ => unsafe { ::core::hint::unreachable_unchecked() },
35462            }
35463        }
35464    }
35465
35466    impl<'de> ::fidl_next::IntoNatural for LayoutParameter<'de> {
35467        type Natural = crate::natural::LayoutParameter;
35468    }
35469
35470    /// The wire type corresponding to [`ResolvedConfigField`].
35471    #[derive(Debug)]
35472    #[repr(C)]
35473    pub struct ResolvedConfigField<'de> {
35474        pub key: ::fidl_next::wire::String<'de>,
35475
35476        pub value: crate::wire::ConfigValue<'de>,
35477    }
35478
35479    static_assertions::const_assert_eq!(std::mem::size_of::<ResolvedConfigField<'_>>(), 32);
35480    static_assertions::const_assert_eq!(std::mem::align_of::<ResolvedConfigField<'_>>(), 8);
35481
35482    static_assertions::const_assert_eq!(std::mem::offset_of!(ResolvedConfigField<'_>, key), 0);
35483
35484    static_assertions::const_assert_eq!(std::mem::offset_of!(ResolvedConfigField<'_>, value), 16);
35485
35486    impl ::fidl_next::Constrained for ResolvedConfigField<'_> {
35487        type Constraint = ();
35488
35489        fn validate(
35490            _: ::fidl_next::Slot<'_, Self>,
35491            _: Self::Constraint,
35492        ) -> Result<(), ::fidl_next::ValidationError> {
35493            Ok(())
35494        }
35495    }
35496
35497    unsafe impl ::fidl_next::Wire for ResolvedConfigField<'static> {
35498        type Narrowed<'de> = ResolvedConfigField<'de>;
35499
35500        #[inline]
35501        fn zero_padding(out_: &mut ::core::mem::MaybeUninit<Self>) {
35502            ::fidl_next::munge! {
35503                let Self {
35504                    key,
35505                    value,
35506
35507                } = &mut *out_;
35508            }
35509
35510            ::fidl_next::Wire::zero_padding(key);
35511
35512            ::fidl_next::Wire::zero_padding(value);
35513        }
35514    }
35515
35516    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for ResolvedConfigField<'de>
35517    where
35518        ___D: ::fidl_next::decoder::InternalHandleDecoder + ?Sized,
35519        ___D: ::fidl_next::Decoder<'de>,
35520    {
35521        fn decode(
35522            slot_: ::fidl_next::Slot<'_, Self>,
35523            decoder_: &mut ___D,
35524            _: (),
35525        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
35526            ::fidl_next::munge! {
35527                let Self {
35528                    mut key,
35529                    mut value,
35530
35531                } = slot_;
35532            }
35533
35534            let _field = key.as_mut();
35535            ::fidl_next::Constrained::validate(_field, 4294967295)?;
35536            ::fidl_next::Decode::decode(key.as_mut(), decoder_, 4294967295)?;
35537
35538            let _field = value.as_mut();
35539
35540            ::fidl_next::Decode::decode(value.as_mut(), decoder_, ())?;
35541
35542            Ok(())
35543        }
35544    }
35545
35546    impl<'de> ::fidl_next::IntoNatural for ResolvedConfigField<'de> {
35547        type Natural = crate::natural::ResolvedConfigField;
35548    }
35549
35550    /// The wire type corresponding to [`ResolvedConfig`].
35551    #[derive(Debug)]
35552    #[repr(C)]
35553    pub struct ResolvedConfig<'de> {
35554        pub fields: ::fidl_next::wire::Vector<'de, crate::wire::ResolvedConfigField<'de>>,
35555
35556        pub checksum: crate::wire::ConfigChecksum<'de>,
35557    }
35558
35559    static_assertions::const_assert_eq!(std::mem::size_of::<ResolvedConfig<'_>>(), 32);
35560    static_assertions::const_assert_eq!(std::mem::align_of::<ResolvedConfig<'_>>(), 8);
35561
35562    static_assertions::const_assert_eq!(std::mem::offset_of!(ResolvedConfig<'_>, fields), 0);
35563
35564    static_assertions::const_assert_eq!(std::mem::offset_of!(ResolvedConfig<'_>, checksum), 16);
35565
35566    impl ::fidl_next::Constrained for ResolvedConfig<'_> {
35567        type Constraint = ();
35568
35569        fn validate(
35570            _: ::fidl_next::Slot<'_, Self>,
35571            _: Self::Constraint,
35572        ) -> Result<(), ::fidl_next::ValidationError> {
35573            Ok(())
35574        }
35575    }
35576
35577    unsafe impl ::fidl_next::Wire for ResolvedConfig<'static> {
35578        type Narrowed<'de> = ResolvedConfig<'de>;
35579
35580        #[inline]
35581        fn zero_padding(out_: &mut ::core::mem::MaybeUninit<Self>) {
35582            ::fidl_next::munge! {
35583                let Self {
35584                    fields,
35585                    checksum,
35586
35587                } = &mut *out_;
35588            }
35589
35590            ::fidl_next::Wire::zero_padding(fields);
35591
35592            ::fidl_next::Wire::zero_padding(checksum);
35593        }
35594    }
35595
35596    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for ResolvedConfig<'de>
35597    where
35598        ___D: ::fidl_next::decoder::InternalHandleDecoder + ?Sized,
35599        ___D: ::fidl_next::Decoder<'de>,
35600    {
35601        fn decode(
35602            slot_: ::fidl_next::Slot<'_, Self>,
35603            decoder_: &mut ___D,
35604            _: (),
35605        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
35606            ::fidl_next::munge! {
35607                let Self {
35608                    mut fields,
35609                    mut checksum,
35610
35611                } = slot_;
35612            }
35613
35614            let _field = fields.as_mut();
35615            ::fidl_next::Constrained::validate(_field, (4294967295, ()))?;
35616            ::fidl_next::Decode::decode(fields.as_mut(), decoder_, (4294967295, ()))?;
35617
35618            let _field = checksum.as_mut();
35619
35620            ::fidl_next::Decode::decode(checksum.as_mut(), decoder_, ())?;
35621
35622            Ok(())
35623        }
35624    }
35625
35626    impl<'de> ::fidl_next::IntoNatural for ResolvedConfig<'de> {
35627        type Natural = crate::natural::ResolvedConfig;
35628    }
35629}
35630
35631pub mod wire_optional {
35632
35633    #[repr(transparent)]
35634    pub struct ConfigSingleValue<'de> {
35635        pub(crate) raw: ::fidl_next::wire::Union,
35636        pub(crate) _phantom: ::core::marker::PhantomData<&'de mut [::fidl_next::Chunk]>,
35637    }
35638
35639    impl ::fidl_next::Constrained for ConfigSingleValue<'_> {
35640        type Constraint = ();
35641
35642        fn validate(
35643            _: ::fidl_next::Slot<'_, Self>,
35644            _: Self::Constraint,
35645        ) -> Result<(), ::fidl_next::ValidationError> {
35646            Ok(())
35647        }
35648    }
35649
35650    unsafe impl ::fidl_next::Wire for ConfigSingleValue<'static> {
35651        type Narrowed<'de> = ConfigSingleValue<'de>;
35652
35653        #[inline]
35654        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
35655            ::fidl_next::munge!(let Self { raw, _phantom: _ } = out);
35656            ::fidl_next::wire::Union::zero_padding(raw);
35657        }
35658    }
35659
35660    impl<'de> ConfigSingleValue<'de> {
35661        pub fn is_some(&self) -> bool {
35662            self.raw.is_some()
35663        }
35664
35665        pub fn is_none(&self) -> bool {
35666            self.raw.is_none()
35667        }
35668
35669        pub fn as_ref(&self) -> ::core::option::Option<&crate::wire::ConfigSingleValue<'de>> {
35670            if self.is_some() { Some(unsafe { &*(self as *const Self).cast() }) } else { None }
35671        }
35672
35673        pub fn into_option(self) -> ::core::option::Option<crate::wire::ConfigSingleValue<'de>> {
35674            if self.is_some() {
35675                Some(crate::wire::ConfigSingleValue {
35676                    raw: self.raw,
35677                    _phantom: ::core::marker::PhantomData,
35678                })
35679            } else {
35680                None
35681            }
35682        }
35683    }
35684
35685    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for ConfigSingleValue<'de>
35686    where
35687        ___D: ::fidl_next::decoder::InternalHandleDecoder + ?Sized,
35688        ___D: ::fidl_next::Decoder<'de>,
35689    {
35690        fn decode(
35691            mut slot: ::fidl_next::Slot<'_, Self>,
35692            decoder: &mut ___D,
35693            _: (),
35694        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
35695            ::fidl_next::munge!(let Self { mut raw, _phantom: _ } = slot.as_mut());
35696            match ::fidl_next::wire::Union::encoded_ordinal(raw.as_mut()) {
35697                1 => ::fidl_next::wire::Union::decode_as::<___D, bool>(raw, decoder, ())?,
35698
35699                2 => ::fidl_next::wire::Union::decode_as::<___D, u8>(raw, decoder, ())?,
35700
35701                3 => ::fidl_next::wire::Union::decode_as::<___D, ::fidl_next::wire::Uint16>(
35702                    raw,
35703                    decoder,
35704                    (),
35705                )?,
35706
35707                4 => ::fidl_next::wire::Union::decode_as::<___D, ::fidl_next::wire::Uint32>(
35708                    raw,
35709                    decoder,
35710                    (),
35711                )?,
35712
35713                5 => ::fidl_next::wire::Union::decode_as::<___D, ::fidl_next::wire::Uint64>(
35714                    raw,
35715                    decoder,
35716                    (),
35717                )?,
35718
35719                6 => ::fidl_next::wire::Union::decode_as::<___D, i8>(raw, decoder, ())?,
35720
35721                7 => ::fidl_next::wire::Union::decode_as::<___D, ::fidl_next::wire::Int16>(
35722                    raw,
35723                    decoder,
35724                    (),
35725                )?,
35726
35727                8 => ::fidl_next::wire::Union::decode_as::<___D, ::fidl_next::wire::Int32>(
35728                    raw,
35729                    decoder,
35730                    (),
35731                )?,
35732
35733                9 => ::fidl_next::wire::Union::decode_as::<___D, ::fidl_next::wire::Int64>(
35734                    raw,
35735                    decoder,
35736                    (),
35737                )?,
35738
35739                10 => ::fidl_next::wire::Union::decode_as::<___D, ::fidl_next::wire::String<'de>>(
35740                    raw, decoder, 4294967295,
35741                )?,
35742
35743                0 => ::fidl_next::wire::Union::decode_absent(raw)?,
35744                _ => ::fidl_next::wire::Union::decode_unknown(raw, decoder)?,
35745            }
35746
35747            Ok(())
35748        }
35749    }
35750
35751    impl<'de> ::core::fmt::Debug for ConfigSingleValue<'de> {
35752        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
35753            self.as_ref().fmt(f)
35754        }
35755    }
35756
35757    impl<'de> ::fidl_next::IntoNatural for ConfigSingleValue<'de> {
35758        type Natural = ::core::option::Option<crate::natural::ConfigSingleValue>;
35759    }
35760
35761    #[repr(transparent)]
35762    pub struct ConfigVectorValue<'de> {
35763        pub(crate) raw: ::fidl_next::wire::Union,
35764        pub(crate) _phantom: ::core::marker::PhantomData<&'de mut [::fidl_next::Chunk]>,
35765    }
35766
35767    impl ::fidl_next::Constrained for ConfigVectorValue<'_> {
35768        type Constraint = ();
35769
35770        fn validate(
35771            _: ::fidl_next::Slot<'_, Self>,
35772            _: Self::Constraint,
35773        ) -> Result<(), ::fidl_next::ValidationError> {
35774            Ok(())
35775        }
35776    }
35777
35778    unsafe impl ::fidl_next::Wire for ConfigVectorValue<'static> {
35779        type Narrowed<'de> = ConfigVectorValue<'de>;
35780
35781        #[inline]
35782        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
35783            ::fidl_next::munge!(let Self { raw, _phantom: _ } = out);
35784            ::fidl_next::wire::Union::zero_padding(raw);
35785        }
35786    }
35787
35788    impl<'de> ConfigVectorValue<'de> {
35789        pub fn is_some(&self) -> bool {
35790            self.raw.is_some()
35791        }
35792
35793        pub fn is_none(&self) -> bool {
35794            self.raw.is_none()
35795        }
35796
35797        pub fn as_ref(&self) -> ::core::option::Option<&crate::wire::ConfigVectorValue<'de>> {
35798            if self.is_some() { Some(unsafe { &*(self as *const Self).cast() }) } else { None }
35799        }
35800
35801        pub fn into_option(self) -> ::core::option::Option<crate::wire::ConfigVectorValue<'de>> {
35802            if self.is_some() {
35803                Some(crate::wire::ConfigVectorValue {
35804                    raw: self.raw,
35805                    _phantom: ::core::marker::PhantomData,
35806                })
35807            } else {
35808                None
35809            }
35810        }
35811    }
35812
35813    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for ConfigVectorValue<'de>
35814    where
35815        ___D: ::fidl_next::decoder::InternalHandleDecoder + ?Sized,
35816        ___D: ::fidl_next::Decoder<'de>,
35817    {
35818        fn decode(
35819            mut slot: ::fidl_next::Slot<'_, Self>,
35820            decoder: &mut ___D,
35821            _: (),
35822        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
35823            ::fidl_next::munge!(let Self { mut raw, _phantom: _ } = slot.as_mut());
35824            match ::fidl_next::wire::Union::encoded_ordinal(raw.as_mut()) {
35825                1 => ::fidl_next::wire::Union::decode_as::<
35826                    ___D,
35827                    ::fidl_next::wire::Vector<'de, bool>,
35828                >(raw, decoder, (4294967295, ()))?,
35829
35830                2 => {
35831                    ::fidl_next::wire::Union::decode_as::<___D, ::fidl_next::wire::Vector<'de, u8>>(
35832                        raw,
35833                        decoder,
35834                        (4294967295, ()),
35835                    )?
35836                }
35837
35838                3 => ::fidl_next::wire::Union::decode_as::<
35839                    ___D,
35840                    ::fidl_next::wire::Vector<'de, ::fidl_next::wire::Uint16>,
35841                >(raw, decoder, (4294967295, ()))?,
35842
35843                4 => ::fidl_next::wire::Union::decode_as::<
35844                    ___D,
35845                    ::fidl_next::wire::Vector<'de, ::fidl_next::wire::Uint32>,
35846                >(raw, decoder, (4294967295, ()))?,
35847
35848                5 => ::fidl_next::wire::Union::decode_as::<
35849                    ___D,
35850                    ::fidl_next::wire::Vector<'de, ::fidl_next::wire::Uint64>,
35851                >(raw, decoder, (4294967295, ()))?,
35852
35853                6 => {
35854                    ::fidl_next::wire::Union::decode_as::<___D, ::fidl_next::wire::Vector<'de, i8>>(
35855                        raw,
35856                        decoder,
35857                        (4294967295, ()),
35858                    )?
35859                }
35860
35861                7 => ::fidl_next::wire::Union::decode_as::<
35862                    ___D,
35863                    ::fidl_next::wire::Vector<'de, ::fidl_next::wire::Int16>,
35864                >(raw, decoder, (4294967295, ()))?,
35865
35866                8 => ::fidl_next::wire::Union::decode_as::<
35867                    ___D,
35868                    ::fidl_next::wire::Vector<'de, ::fidl_next::wire::Int32>,
35869                >(raw, decoder, (4294967295, ()))?,
35870
35871                9 => ::fidl_next::wire::Union::decode_as::<
35872                    ___D,
35873                    ::fidl_next::wire::Vector<'de, ::fidl_next::wire::Int64>,
35874                >(raw, decoder, (4294967295, ()))?,
35875
35876                10 => ::fidl_next::wire::Union::decode_as::<
35877                    ___D,
35878                    ::fidl_next::wire::Vector<'de, ::fidl_next::wire::String<'de>>,
35879                >(raw, decoder, (4294967295, 4294967295))?,
35880
35881                0 => ::fidl_next::wire::Union::decode_absent(raw)?,
35882                _ => ::fidl_next::wire::Union::decode_unknown(raw, decoder)?,
35883            }
35884
35885            Ok(())
35886        }
35887    }
35888
35889    impl<'de> ::core::fmt::Debug for ConfigVectorValue<'de> {
35890        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
35891            self.as_ref().fmt(f)
35892        }
35893    }
35894
35895    impl<'de> ::fidl_next::IntoNatural for ConfigVectorValue<'de> {
35896        type Natural = ::core::option::Option<crate::natural::ConfigVectorValue>;
35897    }
35898
35899    #[repr(transparent)]
35900    pub struct ConfigValue<'de> {
35901        pub(crate) raw: ::fidl_next::wire::Union,
35902        pub(crate) _phantom: ::core::marker::PhantomData<&'de mut [::fidl_next::Chunk]>,
35903    }
35904
35905    impl ::fidl_next::Constrained for ConfigValue<'_> {
35906        type Constraint = ();
35907
35908        fn validate(
35909            _: ::fidl_next::Slot<'_, Self>,
35910            _: Self::Constraint,
35911        ) -> Result<(), ::fidl_next::ValidationError> {
35912            Ok(())
35913        }
35914    }
35915
35916    unsafe impl ::fidl_next::Wire for ConfigValue<'static> {
35917        type Narrowed<'de> = ConfigValue<'de>;
35918
35919        #[inline]
35920        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
35921            ::fidl_next::munge!(let Self { raw, _phantom: _ } = out);
35922            ::fidl_next::wire::Union::zero_padding(raw);
35923        }
35924    }
35925
35926    impl<'de> ConfigValue<'de> {
35927        pub fn is_some(&self) -> bool {
35928            self.raw.is_some()
35929        }
35930
35931        pub fn is_none(&self) -> bool {
35932            self.raw.is_none()
35933        }
35934
35935        pub fn as_ref(&self) -> ::core::option::Option<&crate::wire::ConfigValue<'de>> {
35936            if self.is_some() { Some(unsafe { &*(self as *const Self).cast() }) } else { None }
35937        }
35938
35939        pub fn into_option(self) -> ::core::option::Option<crate::wire::ConfigValue<'de>> {
35940            if self.is_some() {
35941                Some(crate::wire::ConfigValue {
35942                    raw: self.raw,
35943                    _phantom: ::core::marker::PhantomData,
35944                })
35945            } else {
35946                None
35947            }
35948        }
35949    }
35950
35951    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for ConfigValue<'de>
35952    where
35953        ___D: ::fidl_next::decoder::InternalHandleDecoder + ?Sized,
35954        ___D: ::fidl_next::Decoder<'de>,
35955    {
35956        fn decode(
35957            mut slot: ::fidl_next::Slot<'_, Self>,
35958            decoder: &mut ___D,
35959            _: (),
35960        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
35961            ::fidl_next::munge!(let Self { mut raw, _phantom: _ } = slot.as_mut());
35962            match ::fidl_next::wire::Union::encoded_ordinal(raw.as_mut()) {
35963                1 => ::fidl_next::wire::Union::decode_as::<
35964                    ___D,
35965                    crate::wire::ConfigSingleValue<'de>,
35966                >(raw, decoder, ())?,
35967
35968                2 => ::fidl_next::wire::Union::decode_as::<
35969                    ___D,
35970                    crate::wire::ConfigVectorValue<'de>,
35971                >(raw, decoder, ())?,
35972
35973                0 => ::fidl_next::wire::Union::decode_absent(raw)?,
35974                _ => ::fidl_next::wire::Union::decode_unknown(raw, decoder)?,
35975            }
35976
35977            Ok(())
35978        }
35979    }
35980
35981    impl<'de> ::core::fmt::Debug for ConfigValue<'de> {
35982        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
35983            self.as_ref().fmt(f)
35984        }
35985    }
35986
35987    impl<'de> ::fidl_next::IntoNatural for ConfigValue<'de> {
35988        type Natural = ::core::option::Option<crate::natural::ConfigValue>;
35989    }
35990
35991    #[repr(transparent)]
35992    pub struct Ref<'de> {
35993        pub(crate) raw: ::fidl_next::wire::Union,
35994        pub(crate) _phantom: ::core::marker::PhantomData<&'de mut [::fidl_next::Chunk]>,
35995    }
35996
35997    impl ::fidl_next::Constrained for Ref<'_> {
35998        type Constraint = ();
35999
36000        fn validate(
36001            _: ::fidl_next::Slot<'_, Self>,
36002            _: Self::Constraint,
36003        ) -> Result<(), ::fidl_next::ValidationError> {
36004            Ok(())
36005        }
36006    }
36007
36008    unsafe impl ::fidl_next::Wire for Ref<'static> {
36009        type Narrowed<'de> = Ref<'de>;
36010
36011        #[inline]
36012        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
36013            ::fidl_next::munge!(let Self { raw, _phantom: _ } = out);
36014            ::fidl_next::wire::Union::zero_padding(raw);
36015        }
36016    }
36017
36018    impl<'de> Ref<'de> {
36019        pub fn is_some(&self) -> bool {
36020            self.raw.is_some()
36021        }
36022
36023        pub fn is_none(&self) -> bool {
36024            self.raw.is_none()
36025        }
36026
36027        pub fn as_ref(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
36028            if self.is_some() { Some(unsafe { &*(self as *const Self).cast() }) } else { None }
36029        }
36030
36031        pub fn into_option(self) -> ::core::option::Option<crate::wire::Ref<'de>> {
36032            if self.is_some() {
36033                Some(crate::wire::Ref { raw: self.raw, _phantom: ::core::marker::PhantomData })
36034            } else {
36035                None
36036            }
36037        }
36038    }
36039
36040    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for Ref<'de>
36041    where
36042        ___D: ::fidl_next::decoder::InternalHandleDecoder + ?Sized,
36043        ___D: ::fidl_next::Decoder<'de>,
36044    {
36045        fn decode(
36046            mut slot: ::fidl_next::Slot<'_, Self>,
36047            decoder: &mut ___D,
36048            _: (),
36049        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
36050            ::fidl_next::munge!(let Self { mut raw, _phantom: _ } = slot.as_mut());
36051            match ::fidl_next::wire::Union::encoded_ordinal(raw.as_mut()) {
36052                1 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::ParentRef>(
36053                    raw,
36054                    decoder,
36055                    (),
36056                )?,
36057
36058                2 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::SelfRef>(
36059                    raw,
36060                    decoder,
36061                    (),
36062                )?,
36063
36064                3 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::ChildRef<'de>>(
36065                    raw,
36066                    decoder,
36067                    (),
36068                )?,
36069
36070                4 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::CollectionRef<'de>>(
36071                    raw,
36072                    decoder,
36073                    (),
36074                )?,
36075
36076                5 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::FrameworkRef>(
36077                    raw,
36078                    decoder,
36079                    (),
36080                )?,
36081
36082                6 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::CapabilityRef<'de>>(
36083                    raw,
36084                    decoder,
36085                    (),
36086                )?,
36087
36088                7 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::DebugRef>(
36089                    raw,
36090                    decoder,
36091                    (),
36092                )?,
36093
36094                8 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::VoidRef>(
36095                    raw,
36096                    decoder,
36097                    (),
36098                )?,
36099
36100                9 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::EnvironmentRef>(
36101                    raw,
36102                    decoder,
36103                    (),
36104                )?,
36105
36106                0 => ::fidl_next::wire::Union::decode_absent(raw)?,
36107                _ => ::fidl_next::wire::Union::decode_unknown(raw, decoder)?,
36108            }
36109
36110            Ok(())
36111        }
36112    }
36113
36114    impl<'de> ::core::fmt::Debug for Ref<'de> {
36115        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
36116            self.as_ref().fmt(f)
36117        }
36118    }
36119
36120    impl<'de> ::fidl_next::IntoNatural for Ref<'de> {
36121        type Natural = ::core::option::Option<crate::natural::Ref>;
36122    }
36123
36124    #[repr(transparent)]
36125    pub struct Capability<'de> {
36126        pub(crate) raw: ::fidl_next::wire::Union,
36127        pub(crate) _phantom: ::core::marker::PhantomData<&'de mut [::fidl_next::Chunk]>,
36128    }
36129
36130    impl ::fidl_next::Constrained for Capability<'_> {
36131        type Constraint = ();
36132
36133        fn validate(
36134            _: ::fidl_next::Slot<'_, Self>,
36135            _: Self::Constraint,
36136        ) -> Result<(), ::fidl_next::ValidationError> {
36137            Ok(())
36138        }
36139    }
36140
36141    unsafe impl ::fidl_next::Wire for Capability<'static> {
36142        type Narrowed<'de> = Capability<'de>;
36143
36144        #[inline]
36145        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
36146            ::fidl_next::munge!(let Self { raw, _phantom: _ } = out);
36147            ::fidl_next::wire::Union::zero_padding(raw);
36148        }
36149    }
36150
36151    impl<'de> Capability<'de> {
36152        pub fn is_some(&self) -> bool {
36153            self.raw.is_some()
36154        }
36155
36156        pub fn is_none(&self) -> bool {
36157            self.raw.is_none()
36158        }
36159
36160        pub fn as_ref(&self) -> ::core::option::Option<&crate::wire::Capability<'de>> {
36161            if self.is_some() { Some(unsafe { &*(self as *const Self).cast() }) } else { None }
36162        }
36163
36164        pub fn into_option(self) -> ::core::option::Option<crate::wire::Capability<'de>> {
36165            if self.is_some() {
36166                Some(crate::wire::Capability {
36167                    raw: self.raw,
36168                    _phantom: ::core::marker::PhantomData,
36169                })
36170            } else {
36171                None
36172            }
36173        }
36174    }
36175
36176    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for Capability<'de>
36177    where
36178        ___D: ::fidl_next::decoder::InternalHandleDecoder + ?Sized,
36179        ___D: ::fidl_next::Decoder<'de>,
36180    {
36181        fn decode(
36182            mut slot: ::fidl_next::Slot<'_, Self>,
36183            decoder: &mut ___D,
36184            _: (),
36185        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
36186            ::fidl_next::munge!(let Self { mut raw, _phantom: _ } = slot.as_mut());
36187            match ::fidl_next::wire::Union::encoded_ordinal(raw.as_mut()) {
36188                1 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::Service<'de>>(
36189                    raw,
36190                    decoder,
36191                    (),
36192                )?,
36193
36194                2 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::Protocol<'de>>(
36195                    raw,
36196                    decoder,
36197                    (),
36198                )?,
36199
36200                3 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::Directory<'de>>(
36201                    raw,
36202                    decoder,
36203                    (),
36204                )?,
36205
36206                4 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::Storage<'de>>(
36207                    raw,
36208                    decoder,
36209                    (),
36210                )?,
36211
36212                5 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::Runner<'de>>(
36213                    raw,
36214                    decoder,
36215                    (),
36216                )?,
36217
36218                6 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::Resolver<'de>>(
36219                    raw,
36220                    decoder,
36221                    (),
36222                )?,
36223
36224                8 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::EventStream<'de>>(
36225                    raw,
36226                    decoder,
36227                    (),
36228                )?,
36229
36230                9 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::Dictionary<'de>>(
36231                    raw,
36232                    decoder,
36233                    (),
36234                )?,
36235
36236                10 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::Configuration<'de>>(
36237                    raw,
36238                    decoder,
36239                    (),
36240                )?,
36241
36242                0 => ::fidl_next::wire::Union::decode_absent(raw)?,
36243                _ => ::fidl_next::wire::Union::decode_unknown(raw, decoder)?,
36244            }
36245
36246            Ok(())
36247        }
36248    }
36249
36250    impl<'de> ::core::fmt::Debug for Capability<'de> {
36251        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
36252            self.as_ref().fmt(f)
36253        }
36254    }
36255
36256    impl<'de> ::fidl_next::IntoNatural for Capability<'de> {
36257        type Natural = ::core::option::Option<crate::natural::Capability>;
36258    }
36259
36260    #[repr(transparent)]
36261    pub struct LayoutConstraint<'de> {
36262        pub(crate) raw: ::fidl_next::wire::Union,
36263        pub(crate) _phantom: ::core::marker::PhantomData<&'de mut [::fidl_next::Chunk]>,
36264    }
36265
36266    impl ::fidl_next::Constrained for LayoutConstraint<'_> {
36267        type Constraint = ();
36268
36269        fn validate(
36270            _: ::fidl_next::Slot<'_, Self>,
36271            _: Self::Constraint,
36272        ) -> Result<(), ::fidl_next::ValidationError> {
36273            Ok(())
36274        }
36275    }
36276
36277    unsafe impl ::fidl_next::Wire for LayoutConstraint<'static> {
36278        type Narrowed<'de> = LayoutConstraint<'de>;
36279
36280        #[inline]
36281        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
36282            ::fidl_next::munge!(let Self { raw, _phantom: _ } = out);
36283            ::fidl_next::wire::Union::zero_padding(raw);
36284        }
36285    }
36286
36287    impl<'de> LayoutConstraint<'de> {
36288        pub fn is_some(&self) -> bool {
36289            self.raw.is_some()
36290        }
36291
36292        pub fn is_none(&self) -> bool {
36293            self.raw.is_none()
36294        }
36295
36296        pub fn as_ref(&self) -> ::core::option::Option<&crate::wire::LayoutConstraint<'de>> {
36297            if self.is_some() { Some(unsafe { &*(self as *const Self).cast() }) } else { None }
36298        }
36299
36300        pub fn into_option(self) -> ::core::option::Option<crate::wire::LayoutConstraint<'de>> {
36301            if self.is_some() {
36302                Some(crate::wire::LayoutConstraint {
36303                    raw: self.raw,
36304                    _phantom: ::core::marker::PhantomData,
36305                })
36306            } else {
36307                None
36308            }
36309        }
36310    }
36311
36312    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for LayoutConstraint<'de>
36313    where
36314        ___D: ::fidl_next::decoder::InternalHandleDecoder + ?Sized,
36315        ___D: ::fidl_next::Decoder<'de>,
36316    {
36317        fn decode(
36318            mut slot: ::fidl_next::Slot<'_, Self>,
36319            decoder: &mut ___D,
36320            _: (),
36321        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
36322            ::fidl_next::munge!(let Self { mut raw, _phantom: _ } = slot.as_mut());
36323            match ::fidl_next::wire::Union::encoded_ordinal(raw.as_mut()) {
36324                1 => ::fidl_next::wire::Union::decode_as::<___D, ::fidl_next::wire::Uint32>(
36325                    raw,
36326                    decoder,
36327                    (),
36328                )?,
36329
36330                0 => ::fidl_next::wire::Union::decode_absent(raw)?,
36331                _ => ::fidl_next::wire::Union::decode_unknown(raw, decoder)?,
36332            }
36333
36334            Ok(())
36335        }
36336    }
36337
36338    impl<'de> ::core::fmt::Debug for LayoutConstraint<'de> {
36339        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
36340            self.as_ref().fmt(f)
36341        }
36342    }
36343
36344    impl<'de> ::fidl_next::IntoNatural for LayoutConstraint<'de> {
36345        type Natural = ::core::option::Option<crate::natural::LayoutConstraint>;
36346    }
36347
36348    #[repr(transparent)]
36349    pub struct ConfigChecksum<'de> {
36350        pub(crate) raw: ::fidl_next::wire::Union,
36351        pub(crate) _phantom: ::core::marker::PhantomData<&'de mut [::fidl_next::Chunk]>,
36352    }
36353
36354    impl ::fidl_next::Constrained for ConfigChecksum<'_> {
36355        type Constraint = ();
36356
36357        fn validate(
36358            _: ::fidl_next::Slot<'_, Self>,
36359            _: Self::Constraint,
36360        ) -> Result<(), ::fidl_next::ValidationError> {
36361            Ok(())
36362        }
36363    }
36364
36365    unsafe impl ::fidl_next::Wire for ConfigChecksum<'static> {
36366        type Narrowed<'de> = ConfigChecksum<'de>;
36367
36368        #[inline]
36369        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
36370            ::fidl_next::munge!(let Self { raw, _phantom: _ } = out);
36371            ::fidl_next::wire::Union::zero_padding(raw);
36372        }
36373    }
36374
36375    impl<'de> ConfigChecksum<'de> {
36376        pub fn is_some(&self) -> bool {
36377            self.raw.is_some()
36378        }
36379
36380        pub fn is_none(&self) -> bool {
36381            self.raw.is_none()
36382        }
36383
36384        pub fn as_ref(&self) -> ::core::option::Option<&crate::wire::ConfigChecksum<'de>> {
36385            if self.is_some() { Some(unsafe { &*(self as *const Self).cast() }) } else { None }
36386        }
36387
36388        pub fn into_option(self) -> ::core::option::Option<crate::wire::ConfigChecksum<'de>> {
36389            if self.is_some() {
36390                Some(crate::wire::ConfigChecksum {
36391                    raw: self.raw,
36392                    _phantom: ::core::marker::PhantomData,
36393                })
36394            } else {
36395                None
36396            }
36397        }
36398    }
36399
36400    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for ConfigChecksum<'de>
36401    where
36402        ___D: ::fidl_next::decoder::InternalHandleDecoder + ?Sized,
36403        ___D: ::fidl_next::Decoder<'de>,
36404    {
36405        fn decode(
36406            mut slot: ::fidl_next::Slot<'_, Self>,
36407            decoder: &mut ___D,
36408            _: (),
36409        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
36410            ::fidl_next::munge!(let Self { mut raw, _phantom: _ } = slot.as_mut());
36411            match ::fidl_next::wire::Union::encoded_ordinal(raw.as_mut()) {
36412                1 => ::fidl_next::wire::Union::decode_as::<___D, [u8; 32]>(raw, decoder, ())?,
36413
36414                0 => ::fidl_next::wire::Union::decode_absent(raw)?,
36415                _ => ::fidl_next::wire::Union::decode_unknown(raw, decoder)?,
36416            }
36417
36418            Ok(())
36419        }
36420    }
36421
36422    impl<'de> ::core::fmt::Debug for ConfigChecksum<'de> {
36423        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
36424            self.as_ref().fmt(f)
36425        }
36426    }
36427
36428    impl<'de> ::fidl_next::IntoNatural for ConfigChecksum<'de> {
36429        type Natural = ::core::option::Option<crate::natural::ConfigChecksum>;
36430    }
36431
36432    #[repr(transparent)]
36433    pub struct Use<'de> {
36434        pub(crate) raw: ::fidl_next::wire::Union,
36435        pub(crate) _phantom: ::core::marker::PhantomData<&'de mut [::fidl_next::Chunk]>,
36436    }
36437
36438    impl ::fidl_next::Constrained for Use<'_> {
36439        type Constraint = ();
36440
36441        fn validate(
36442            _: ::fidl_next::Slot<'_, Self>,
36443            _: Self::Constraint,
36444        ) -> Result<(), ::fidl_next::ValidationError> {
36445            Ok(())
36446        }
36447    }
36448
36449    unsafe impl ::fidl_next::Wire for Use<'static> {
36450        type Narrowed<'de> = Use<'de>;
36451
36452        #[inline]
36453        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
36454            ::fidl_next::munge!(let Self { raw, _phantom: _ } = out);
36455            ::fidl_next::wire::Union::zero_padding(raw);
36456        }
36457    }
36458
36459    impl<'de> Use<'de> {
36460        pub fn is_some(&self) -> bool {
36461            self.raw.is_some()
36462        }
36463
36464        pub fn is_none(&self) -> bool {
36465            self.raw.is_none()
36466        }
36467
36468        pub fn as_ref(&self) -> ::core::option::Option<&crate::wire::Use<'de>> {
36469            if self.is_some() { Some(unsafe { &*(self as *const Self).cast() }) } else { None }
36470        }
36471
36472        pub fn into_option(self) -> ::core::option::Option<crate::wire::Use<'de>> {
36473            if self.is_some() {
36474                Some(crate::wire::Use { raw: self.raw, _phantom: ::core::marker::PhantomData })
36475            } else {
36476                None
36477            }
36478        }
36479    }
36480
36481    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for Use<'de>
36482    where
36483        ___D: ::fidl_next::decoder::InternalHandleDecoder + ?Sized,
36484        ___D: ::fidl_next::Decoder<'de>,
36485    {
36486        fn decode(
36487            mut slot: ::fidl_next::Slot<'_, Self>,
36488            decoder: &mut ___D,
36489            _: (),
36490        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
36491            ::fidl_next::munge!(let Self { mut raw, _phantom: _ } = slot.as_mut());
36492            match ::fidl_next::wire::Union::encoded_ordinal(raw.as_mut()) {
36493                1 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::UseService<'de>>(
36494                    raw,
36495                    decoder,
36496                    (),
36497                )?,
36498
36499                2 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::UseProtocol<'de>>(
36500                    raw,
36501                    decoder,
36502                    (),
36503                )?,
36504
36505                3 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::UseDirectory<'de>>(
36506                    raw,
36507                    decoder,
36508                    (),
36509                )?,
36510
36511                4 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::UseStorage<'de>>(
36512                    raw,
36513                    decoder,
36514                    (),
36515                )?,
36516
36517                7 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::UseEventStream<'de>>(
36518                    raw,
36519                    decoder,
36520                    (),
36521                )?,
36522
36523                8 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::UseRunner<'de>>(
36524                    raw,
36525                    decoder,
36526                    (),
36527                )?,
36528
36529                9 => {
36530                    ::fidl_next::wire::Union::decode_as::<___D, crate::wire::UseConfiguration<'de>>(
36531                        raw,
36532                        decoder,
36533                        (),
36534                    )?
36535                }
36536
36537                10 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::UseDictionary<'de>>(
36538                    raw,
36539                    decoder,
36540                    (),
36541                )?,
36542
36543                0 => ::fidl_next::wire::Union::decode_absent(raw)?,
36544                _ => ::fidl_next::wire::Union::decode_unknown(raw, decoder)?,
36545            }
36546
36547            Ok(())
36548        }
36549    }
36550
36551    impl<'de> ::core::fmt::Debug for Use<'de> {
36552        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
36553            self.as_ref().fmt(f)
36554        }
36555    }
36556
36557    impl<'de> ::fidl_next::IntoNatural for Use<'de> {
36558        type Natural = ::core::option::Option<crate::natural::Use>;
36559    }
36560
36561    #[repr(transparent)]
36562    pub struct Expose<'de> {
36563        pub(crate) raw: ::fidl_next::wire::Union,
36564        pub(crate) _phantom: ::core::marker::PhantomData<&'de mut [::fidl_next::Chunk]>,
36565    }
36566
36567    impl ::fidl_next::Constrained for Expose<'_> {
36568        type Constraint = ();
36569
36570        fn validate(
36571            _: ::fidl_next::Slot<'_, Self>,
36572            _: Self::Constraint,
36573        ) -> Result<(), ::fidl_next::ValidationError> {
36574            Ok(())
36575        }
36576    }
36577
36578    unsafe impl ::fidl_next::Wire for Expose<'static> {
36579        type Narrowed<'de> = Expose<'de>;
36580
36581        #[inline]
36582        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
36583            ::fidl_next::munge!(let Self { raw, _phantom: _ } = out);
36584            ::fidl_next::wire::Union::zero_padding(raw);
36585        }
36586    }
36587
36588    impl<'de> Expose<'de> {
36589        pub fn is_some(&self) -> bool {
36590            self.raw.is_some()
36591        }
36592
36593        pub fn is_none(&self) -> bool {
36594            self.raw.is_none()
36595        }
36596
36597        pub fn as_ref(&self) -> ::core::option::Option<&crate::wire::Expose<'de>> {
36598            if self.is_some() { Some(unsafe { &*(self as *const Self).cast() }) } else { None }
36599        }
36600
36601        pub fn into_option(self) -> ::core::option::Option<crate::wire::Expose<'de>> {
36602            if self.is_some() {
36603                Some(crate::wire::Expose { raw: self.raw, _phantom: ::core::marker::PhantomData })
36604            } else {
36605                None
36606            }
36607        }
36608    }
36609
36610    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for Expose<'de>
36611    where
36612        ___D: ::fidl_next::decoder::InternalHandleDecoder + ?Sized,
36613        ___D: ::fidl_next::Decoder<'de>,
36614    {
36615        fn decode(
36616            mut slot: ::fidl_next::Slot<'_, Self>,
36617            decoder: &mut ___D,
36618            _: (),
36619        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
36620            ::fidl_next::munge!(let Self { mut raw, _phantom: _ } = slot.as_mut());
36621            match ::fidl_next::wire::Union::encoded_ordinal(raw.as_mut()) {
36622                1 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::ExposeService<'de>>(
36623                    raw,
36624                    decoder,
36625                    (),
36626                )?,
36627
36628                2 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::ExposeProtocol<'de>>(
36629                    raw,
36630                    decoder,
36631                    (),
36632                )?,
36633
36634                3 => {
36635                    ::fidl_next::wire::Union::decode_as::<___D, crate::wire::ExposeDirectory<'de>>(
36636                        raw,
36637                        decoder,
36638                        (),
36639                    )?
36640                }
36641
36642                4 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::ExposeRunner<'de>>(
36643                    raw,
36644                    decoder,
36645                    (),
36646                )?,
36647
36648                5 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::ExposeResolver<'de>>(
36649                    raw,
36650                    decoder,
36651                    (),
36652                )?,
36653
36654                7 => {
36655                    ::fidl_next::wire::Union::decode_as::<___D, crate::wire::ExposeDictionary<'de>>(
36656                        raw,
36657                        decoder,
36658                        (),
36659                    )?
36660                }
36661
36662                8 => ::fidl_next::wire::Union::decode_as::<
36663                    ___D,
36664                    crate::wire::ExposeConfiguration<'de>,
36665                >(raw, decoder, ())?,
36666
36667                0 => ::fidl_next::wire::Union::decode_absent(raw)?,
36668                _ => ::fidl_next::wire::Union::decode_unknown(raw, decoder)?,
36669            }
36670
36671            Ok(())
36672        }
36673    }
36674
36675    impl<'de> ::core::fmt::Debug for Expose<'de> {
36676        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
36677            self.as_ref().fmt(f)
36678        }
36679    }
36680
36681    impl<'de> ::fidl_next::IntoNatural for Expose<'de> {
36682        type Natural = ::core::option::Option<crate::natural::Expose>;
36683    }
36684
36685    #[repr(transparent)]
36686    pub struct Offer<'de> {
36687        pub(crate) raw: ::fidl_next::wire::Union,
36688        pub(crate) _phantom: ::core::marker::PhantomData<&'de mut [::fidl_next::Chunk]>,
36689    }
36690
36691    impl ::fidl_next::Constrained for Offer<'_> {
36692        type Constraint = ();
36693
36694        fn validate(
36695            _: ::fidl_next::Slot<'_, Self>,
36696            _: Self::Constraint,
36697        ) -> Result<(), ::fidl_next::ValidationError> {
36698            Ok(())
36699        }
36700    }
36701
36702    unsafe impl ::fidl_next::Wire for Offer<'static> {
36703        type Narrowed<'de> = Offer<'de>;
36704
36705        #[inline]
36706        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
36707            ::fidl_next::munge!(let Self { raw, _phantom: _ } = out);
36708            ::fidl_next::wire::Union::zero_padding(raw);
36709        }
36710    }
36711
36712    impl<'de> Offer<'de> {
36713        pub fn is_some(&self) -> bool {
36714            self.raw.is_some()
36715        }
36716
36717        pub fn is_none(&self) -> bool {
36718            self.raw.is_none()
36719        }
36720
36721        pub fn as_ref(&self) -> ::core::option::Option<&crate::wire::Offer<'de>> {
36722            if self.is_some() { Some(unsafe { &*(self as *const Self).cast() }) } else { None }
36723        }
36724
36725        pub fn into_option(self) -> ::core::option::Option<crate::wire::Offer<'de>> {
36726            if self.is_some() {
36727                Some(crate::wire::Offer { raw: self.raw, _phantom: ::core::marker::PhantomData })
36728            } else {
36729                None
36730            }
36731        }
36732    }
36733
36734    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for Offer<'de>
36735    where
36736        ___D: ::fidl_next::decoder::InternalHandleDecoder + ?Sized,
36737        ___D: ::fidl_next::Decoder<'de>,
36738    {
36739        fn decode(
36740            mut slot: ::fidl_next::Slot<'_, Self>,
36741            decoder: &mut ___D,
36742            _: (),
36743        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
36744            ::fidl_next::munge!(let Self { mut raw, _phantom: _ } = slot.as_mut());
36745            match ::fidl_next::wire::Union::encoded_ordinal(raw.as_mut()) {
36746                1 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::OfferService<'de>>(
36747                    raw,
36748                    decoder,
36749                    (),
36750                )?,
36751
36752                2 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::OfferProtocol<'de>>(
36753                    raw,
36754                    decoder,
36755                    (),
36756                )?,
36757
36758                3 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::OfferDirectory<'de>>(
36759                    raw,
36760                    decoder,
36761                    (),
36762                )?,
36763
36764                4 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::OfferStorage<'de>>(
36765                    raw,
36766                    decoder,
36767                    (),
36768                )?,
36769
36770                5 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::OfferRunner<'de>>(
36771                    raw,
36772                    decoder,
36773                    (),
36774                )?,
36775
36776                6 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::OfferResolver<'de>>(
36777                    raw,
36778                    decoder,
36779                    (),
36780                )?,
36781
36782                8 => {
36783                    ::fidl_next::wire::Union::decode_as::<___D, crate::wire::OfferEventStream<'de>>(
36784                        raw,
36785                        decoder,
36786                        (),
36787                    )?
36788                }
36789
36790                9 => {
36791                    ::fidl_next::wire::Union::decode_as::<___D, crate::wire::OfferDictionary<'de>>(
36792                        raw,
36793                        decoder,
36794                        (),
36795                    )?
36796                }
36797
36798                10 => ::fidl_next::wire::Union::decode_as::<
36799                    ___D,
36800                    crate::wire::OfferConfiguration<'de>,
36801                >(raw, decoder, ())?,
36802
36803                0 => ::fidl_next::wire::Union::decode_absent(raw)?,
36804                _ => ::fidl_next::wire::Union::decode_unknown(raw, decoder)?,
36805            }
36806
36807            Ok(())
36808        }
36809    }
36810
36811    impl<'de> ::core::fmt::Debug for Offer<'de> {
36812        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
36813            self.as_ref().fmt(f)
36814        }
36815    }
36816
36817    impl<'de> ::fidl_next::IntoNatural for Offer<'de> {
36818        type Natural = ::core::option::Option<crate::natural::Offer>;
36819    }
36820
36821    #[repr(transparent)]
36822    pub struct DebugRegistration<'de> {
36823        pub(crate) raw: ::fidl_next::wire::Union,
36824        pub(crate) _phantom: ::core::marker::PhantomData<&'de mut [::fidl_next::Chunk]>,
36825    }
36826
36827    impl ::fidl_next::Constrained for DebugRegistration<'_> {
36828        type Constraint = ();
36829
36830        fn validate(
36831            _: ::fidl_next::Slot<'_, Self>,
36832            _: Self::Constraint,
36833        ) -> Result<(), ::fidl_next::ValidationError> {
36834            Ok(())
36835        }
36836    }
36837
36838    unsafe impl ::fidl_next::Wire for DebugRegistration<'static> {
36839        type Narrowed<'de> = DebugRegistration<'de>;
36840
36841        #[inline]
36842        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
36843            ::fidl_next::munge!(let Self { raw, _phantom: _ } = out);
36844            ::fidl_next::wire::Union::zero_padding(raw);
36845        }
36846    }
36847
36848    impl<'de> DebugRegistration<'de> {
36849        pub fn is_some(&self) -> bool {
36850            self.raw.is_some()
36851        }
36852
36853        pub fn is_none(&self) -> bool {
36854            self.raw.is_none()
36855        }
36856
36857        pub fn as_ref(&self) -> ::core::option::Option<&crate::wire::DebugRegistration<'de>> {
36858            if self.is_some() { Some(unsafe { &*(self as *const Self).cast() }) } else { None }
36859        }
36860
36861        pub fn into_option(self) -> ::core::option::Option<crate::wire::DebugRegistration<'de>> {
36862            if self.is_some() {
36863                Some(crate::wire::DebugRegistration {
36864                    raw: self.raw,
36865                    _phantom: ::core::marker::PhantomData,
36866                })
36867            } else {
36868                None
36869            }
36870        }
36871    }
36872
36873    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for DebugRegistration<'de>
36874    where
36875        ___D: ::fidl_next::decoder::InternalHandleDecoder + ?Sized,
36876        ___D: ::fidl_next::Decoder<'de>,
36877    {
36878        fn decode(
36879            mut slot: ::fidl_next::Slot<'_, Self>,
36880            decoder: &mut ___D,
36881            _: (),
36882        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
36883            ::fidl_next::munge!(let Self { mut raw, _phantom: _ } = slot.as_mut());
36884            match ::fidl_next::wire::Union::encoded_ordinal(raw.as_mut()) {
36885                1 => ::fidl_next::wire::Union::decode_as::<
36886                    ___D,
36887                    crate::wire::DebugProtocolRegistration<'de>,
36888                >(raw, decoder, ())?,
36889
36890                0 => ::fidl_next::wire::Union::decode_absent(raw)?,
36891                _ => ::fidl_next::wire::Union::decode_unknown(raw, decoder)?,
36892            }
36893
36894            Ok(())
36895        }
36896    }
36897
36898    impl<'de> ::core::fmt::Debug for DebugRegistration<'de> {
36899        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
36900            self.as_ref().fmt(f)
36901        }
36902    }
36903
36904    impl<'de> ::fidl_next::IntoNatural for DebugRegistration<'de> {
36905        type Natural = ::core::option::Option<crate::natural::DebugRegistration>;
36906    }
36907
36908    #[repr(transparent)]
36909    pub struct ConfigValueSource<'de> {
36910        pub(crate) raw: ::fidl_next::wire::Union,
36911        pub(crate) _phantom: ::core::marker::PhantomData<&'de mut [::fidl_next::Chunk]>,
36912    }
36913
36914    impl ::fidl_next::Constrained for ConfigValueSource<'_> {
36915        type Constraint = ();
36916
36917        fn validate(
36918            _: ::fidl_next::Slot<'_, Self>,
36919            _: Self::Constraint,
36920        ) -> Result<(), ::fidl_next::ValidationError> {
36921            Ok(())
36922        }
36923    }
36924
36925    unsafe impl ::fidl_next::Wire for ConfigValueSource<'static> {
36926        type Narrowed<'de> = ConfigValueSource<'de>;
36927
36928        #[inline]
36929        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
36930            ::fidl_next::munge!(let Self { raw, _phantom: _ } = out);
36931            ::fidl_next::wire::Union::zero_padding(raw);
36932        }
36933    }
36934
36935    impl<'de> ConfigValueSource<'de> {
36936        pub fn is_some(&self) -> bool {
36937            self.raw.is_some()
36938        }
36939
36940        pub fn is_none(&self) -> bool {
36941            self.raw.is_none()
36942        }
36943
36944        pub fn as_ref(&self) -> ::core::option::Option<&crate::wire::ConfigValueSource<'de>> {
36945            if self.is_some() { Some(unsafe { &*(self as *const Self).cast() }) } else { None }
36946        }
36947
36948        pub fn into_option(self) -> ::core::option::Option<crate::wire::ConfigValueSource<'de>> {
36949            if self.is_some() {
36950                Some(crate::wire::ConfigValueSource {
36951                    raw: self.raw,
36952                    _phantom: ::core::marker::PhantomData,
36953                })
36954            } else {
36955                None
36956            }
36957        }
36958    }
36959
36960    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for ConfigValueSource<'de>
36961    where
36962        ___D: ::fidl_next::decoder::InternalHandleDecoder + ?Sized,
36963        ___D: ::fidl_next::Decoder<'de>,
36964    {
36965        fn decode(
36966            mut slot: ::fidl_next::Slot<'_, Self>,
36967            decoder: &mut ___D,
36968            _: (),
36969        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
36970            ::fidl_next::munge!(let Self { mut raw, _phantom: _ } = slot.as_mut());
36971            match ::fidl_next::wire::Union::encoded_ordinal(raw.as_mut()) {
36972                1 => ::fidl_next::wire::Union::decode_as::<___D, ::fidl_next::wire::String<'de>>(
36973                    raw, decoder, 4294967295,
36974                )?,
36975
36976                2 => ::fidl_next::wire::Union::decode_as::<
36977                    ___D,
36978                    crate::wire::ConfigSourceCapabilities<'de>,
36979                >(raw, decoder, ())?,
36980
36981                0 => ::fidl_next::wire::Union::decode_absent(raw)?,
36982                _ => ::fidl_next::wire::Union::decode_unknown(raw, decoder)?,
36983            }
36984
36985            Ok(())
36986        }
36987    }
36988
36989    impl<'de> ::core::fmt::Debug for ConfigValueSource<'de> {
36990        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
36991            self.as_ref().fmt(f)
36992        }
36993    }
36994
36995    impl<'de> ::fidl_next::IntoNatural for ConfigValueSource<'de> {
36996        type Natural = ::core::option::Option<crate::natural::ConfigValueSource>;
36997    }
36998
36999    #[repr(transparent)]
37000    pub struct LayoutParameter<'de> {
37001        pub(crate) raw: ::fidl_next::wire::Union,
37002        pub(crate) _phantom: ::core::marker::PhantomData<&'de mut [::fidl_next::Chunk]>,
37003    }
37004
37005    impl ::fidl_next::Constrained for LayoutParameter<'_> {
37006        type Constraint = ();
37007
37008        fn validate(
37009            _: ::fidl_next::Slot<'_, Self>,
37010            _: Self::Constraint,
37011        ) -> Result<(), ::fidl_next::ValidationError> {
37012            Ok(())
37013        }
37014    }
37015
37016    unsafe impl ::fidl_next::Wire for LayoutParameter<'static> {
37017        type Narrowed<'de> = LayoutParameter<'de>;
37018
37019        #[inline]
37020        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
37021            ::fidl_next::munge!(let Self { raw, _phantom: _ } = out);
37022            ::fidl_next::wire::Union::zero_padding(raw);
37023        }
37024    }
37025
37026    impl<'de> LayoutParameter<'de> {
37027        pub fn is_some(&self) -> bool {
37028            self.raw.is_some()
37029        }
37030
37031        pub fn is_none(&self) -> bool {
37032            self.raw.is_none()
37033        }
37034
37035        pub fn as_ref(&self) -> ::core::option::Option<&crate::wire::LayoutParameter<'de>> {
37036            if self.is_some() { Some(unsafe { &*(self as *const Self).cast() }) } else { None }
37037        }
37038
37039        pub fn into_option(self) -> ::core::option::Option<crate::wire::LayoutParameter<'de>> {
37040            if self.is_some() {
37041                Some(crate::wire::LayoutParameter {
37042                    raw: self.raw,
37043                    _phantom: ::core::marker::PhantomData,
37044                })
37045            } else {
37046                None
37047            }
37048        }
37049    }
37050
37051    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for LayoutParameter<'de>
37052    where
37053        ___D: ::fidl_next::decoder::InternalHandleDecoder + ?Sized,
37054        ___D: ::fidl_next::Decoder<'de>,
37055    {
37056        fn decode(
37057            mut slot: ::fidl_next::Slot<'_, Self>,
37058            decoder: &mut ___D,
37059            _: (),
37060        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
37061            ::fidl_next::munge!(let Self { mut raw, _phantom: _ } = slot.as_mut());
37062            match ::fidl_next::wire::Union::encoded_ordinal(raw.as_mut()) {
37063                1 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::ConfigType<'de>>(
37064                    raw,
37065                    decoder,
37066                    (),
37067                )?,
37068
37069                0 => ::fidl_next::wire::Union::decode_absent(raw)?,
37070                _ => ::fidl_next::wire::Union::decode_unknown(raw, decoder)?,
37071            }
37072
37073            Ok(())
37074        }
37075    }
37076
37077    impl<'de> ::core::fmt::Debug for LayoutParameter<'de> {
37078        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
37079            self.as_ref().fmt(f)
37080        }
37081    }
37082
37083    impl<'de> ::fidl_next::IntoNatural for LayoutParameter<'de> {
37084        type Natural = ::core::option::Option<crate::natural::LayoutParameter>;
37085    }
37086}
37087
37088pub mod generic {
37089
37090    /// The generic type corresponding to [`ParentRef`].
37091    pub type ParentRef = ();
37092
37093    /// The generic type corresponding to [`SelfRef`].
37094    pub type SelfRef = ();
37095
37096    /// The generic type corresponding to [`ChildRef`].
37097    pub struct ChildRef<T0, T1> {
37098        pub name: T0,
37099
37100        pub collection: T1,
37101    }
37102
37103    unsafe impl<___E, T0, T1> ::fidl_next::Encode<crate::wire::ChildRef<'static>, ___E>
37104        for ChildRef<T0, T1>
37105    where
37106        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
37107        ___E: ::fidl_next::Encoder,
37108        T0: ::fidl_next::Encode<::fidl_next::wire::String<'static>, ___E>,
37109        T1: ::fidl_next::Encode<::fidl_next::wire::OptionalString<'static>, ___E>,
37110    {
37111        #[inline]
37112        fn encode(
37113            self,
37114            encoder_: &mut ___E,
37115            out_: &mut ::core::mem::MaybeUninit<crate::wire::ChildRef<'static>>,
37116            _: (),
37117        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
37118            ::fidl_next::munge! {
37119                let crate::wire::ChildRef {
37120                    name,
37121                    collection,
37122
37123                } = out_;
37124            }
37125
37126            ::fidl_next::Encode::encode(self.name, encoder_, name, 1024)?;
37127
37128            ::fidl_next::Encode::encode(self.collection, encoder_, collection, 100)?;
37129
37130            Ok(())
37131        }
37132    }
37133
37134    /// The generic type corresponding to [`CollectionRef`].
37135    pub struct CollectionRef<T0> {
37136        pub name: T0,
37137    }
37138
37139    unsafe impl<___E, T0> ::fidl_next::Encode<crate::wire::CollectionRef<'static>, ___E>
37140        for CollectionRef<T0>
37141    where
37142        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
37143        ___E: ::fidl_next::Encoder,
37144        T0: ::fidl_next::Encode<::fidl_next::wire::String<'static>, ___E>,
37145    {
37146        #[inline]
37147        fn encode(
37148            self,
37149            encoder_: &mut ___E,
37150            out_: &mut ::core::mem::MaybeUninit<crate::wire::CollectionRef<'static>>,
37151            _: (),
37152        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
37153            ::fidl_next::munge! {
37154                let crate::wire::CollectionRef {
37155                    name,
37156
37157                } = out_;
37158            }
37159
37160            ::fidl_next::Encode::encode(self.name, encoder_, name, 100)?;
37161
37162            Ok(())
37163        }
37164    }
37165
37166    /// The generic type corresponding to [`FrameworkRef`].
37167    pub type FrameworkRef = ();
37168
37169    /// The generic type corresponding to [`CapabilityRef`].
37170    pub struct CapabilityRef<T0> {
37171        pub name: T0,
37172    }
37173
37174    unsafe impl<___E, T0> ::fidl_next::Encode<crate::wire::CapabilityRef<'static>, ___E>
37175        for CapabilityRef<T0>
37176    where
37177        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
37178        ___E: ::fidl_next::Encoder,
37179        T0: ::fidl_next::Encode<::fidl_next::wire::String<'static>, ___E>,
37180    {
37181        #[inline]
37182        fn encode(
37183            self,
37184            encoder_: &mut ___E,
37185            out_: &mut ::core::mem::MaybeUninit<crate::wire::CapabilityRef<'static>>,
37186            _: (),
37187        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
37188            ::fidl_next::munge! {
37189                let crate::wire::CapabilityRef {
37190                    name,
37191
37192                } = out_;
37193            }
37194
37195            ::fidl_next::Encode::encode(self.name, encoder_, name, 100)?;
37196
37197            Ok(())
37198        }
37199    }
37200
37201    /// The generic type corresponding to [`DebugRef`].
37202    pub type DebugRef = ();
37203
37204    /// The generic type corresponding to [`VoidRef`].
37205    pub type VoidRef = ();
37206
37207    /// The generic type corresponding to [`EnvironmentRef`].
37208    pub type EnvironmentRef = ();
37209
37210    /// The generic type corresponding to [`NameMapping`].
37211    pub struct NameMapping<T0, T1> {
37212        pub source_name: T0,
37213
37214        pub target_name: T1,
37215    }
37216
37217    unsafe impl<___E, T0, T1> ::fidl_next::Encode<crate::wire::NameMapping<'static>, ___E>
37218        for NameMapping<T0, T1>
37219    where
37220        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
37221        ___E: ::fidl_next::Encoder,
37222        T0: ::fidl_next::Encode<::fidl_next::wire::String<'static>, ___E>,
37223        T1: ::fidl_next::Encode<::fidl_next::wire::String<'static>, ___E>,
37224    {
37225        #[inline]
37226        fn encode(
37227            self,
37228            encoder_: &mut ___E,
37229            out_: &mut ::core::mem::MaybeUninit<crate::wire::NameMapping<'static>>,
37230            _: (),
37231        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
37232            ::fidl_next::munge! {
37233                let crate::wire::NameMapping {
37234                    source_name,
37235                    target_name,
37236
37237                } = out_;
37238            }
37239
37240            ::fidl_next::Encode::encode(self.source_name, encoder_, source_name, 100)?;
37241
37242            ::fidl_next::Encode::encode(self.target_name, encoder_, target_name, 100)?;
37243
37244            Ok(())
37245        }
37246    }
37247
37248    /// The generic type corresponding to [`ConfigType`].
37249    pub struct ConfigType<T0, T1, T2> {
37250        pub layout: T0,
37251
37252        pub parameters: T1,
37253
37254        pub constraints: T2,
37255    }
37256
37257    unsafe impl<___E, T0, T1, T2> ::fidl_next::Encode<crate::wire::ConfigType<'static>, ___E>
37258        for ConfigType<T0, T1, T2>
37259    where
37260        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
37261        ___E: ::fidl_next::Encoder,
37262        T0: ::fidl_next::Encode<crate::wire::ConfigTypeLayout, ___E>,
37263        T1: ::fidl_next::Encode<
37264                ::fidl_next::wire::OptionalVector<'static, crate::wire::LayoutParameter<'static>>,
37265                ___E,
37266            >,
37267        T2: ::fidl_next::Encode<
37268                ::fidl_next::wire::Vector<'static, crate::wire::LayoutConstraint<'static>>,
37269                ___E,
37270            >,
37271    {
37272        #[inline]
37273        fn encode(
37274            self,
37275            encoder_: &mut ___E,
37276            out_: &mut ::core::mem::MaybeUninit<crate::wire::ConfigType<'static>>,
37277            _: (),
37278        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
37279            ::fidl_next::munge! {
37280                let crate::wire::ConfigType {
37281                    layout,
37282                    parameters,
37283                    constraints,
37284
37285                } = out_;
37286            }
37287
37288            ::fidl_next::Encode::encode(self.layout, encoder_, layout, ())?;
37289
37290            ::fidl_next::Encode::encode(self.parameters, encoder_, parameters, (4294967295, ()))?;
37291
37292            ::fidl_next::Encode::encode(self.constraints, encoder_, constraints, (4294967295, ()))?;
37293
37294            Ok(())
37295        }
37296    }
37297
37298    /// The generic type corresponding to [`ResolvedConfigField`].
37299    pub struct ResolvedConfigField<T0, T1> {
37300        pub key: T0,
37301
37302        pub value: T1,
37303    }
37304
37305    unsafe impl<___E, T0, T1> ::fidl_next::Encode<crate::wire::ResolvedConfigField<'static>, ___E>
37306        for ResolvedConfigField<T0, T1>
37307    where
37308        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
37309        ___E: ::fidl_next::Encoder,
37310        T0: ::fidl_next::Encode<::fidl_next::wire::String<'static>, ___E>,
37311        T1: ::fidl_next::Encode<crate::wire::ConfigValue<'static>, ___E>,
37312    {
37313        #[inline]
37314        fn encode(
37315            self,
37316            encoder_: &mut ___E,
37317            out_: &mut ::core::mem::MaybeUninit<crate::wire::ResolvedConfigField<'static>>,
37318            _: (),
37319        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
37320            ::fidl_next::munge! {
37321                let crate::wire::ResolvedConfigField {
37322                    key,
37323                    value,
37324
37325                } = out_;
37326            }
37327
37328            ::fidl_next::Encode::encode(self.key, encoder_, key, 4294967295)?;
37329
37330            ::fidl_next::Encode::encode(self.value, encoder_, value, ())?;
37331
37332            Ok(())
37333        }
37334    }
37335
37336    /// The generic type corresponding to [`ResolvedConfig`].
37337    pub struct ResolvedConfig<T0, T1> {
37338        pub fields: T0,
37339
37340        pub checksum: T1,
37341    }
37342
37343    unsafe impl<___E, T0, T1> ::fidl_next::Encode<crate::wire::ResolvedConfig<'static>, ___E>
37344        for ResolvedConfig<T0, T1>
37345    where
37346        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
37347        ___E: ::fidl_next::Encoder,
37348        T0: ::fidl_next::Encode<
37349                ::fidl_next::wire::Vector<'static, crate::wire::ResolvedConfigField<'static>>,
37350                ___E,
37351            >,
37352        T1: ::fidl_next::Encode<crate::wire::ConfigChecksum<'static>, ___E>,
37353    {
37354        #[inline]
37355        fn encode(
37356            self,
37357            encoder_: &mut ___E,
37358            out_: &mut ::core::mem::MaybeUninit<crate::wire::ResolvedConfig<'static>>,
37359            _: (),
37360        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
37361            ::fidl_next::munge! {
37362                let crate::wire::ResolvedConfig {
37363                    fields,
37364                    checksum,
37365
37366                } = out_;
37367            }
37368
37369            ::fidl_next::Encode::encode(self.fields, encoder_, fields, (4294967295, ()))?;
37370
37371            ::fidl_next::Encode::encode(self.checksum, encoder_, checksum, ())?;
37372
37373            Ok(())
37374        }
37375    }
37376}
37377
37378pub use self::natural::*;
37379
37380#[doc = " Config keys can only consist of these many bytes\n"]
37381pub const CONFIG_KEY_MAX_SIZE: u32 = 64 as u32;
37382
37383pub const MAX_NAME_LENGTH: u32 = 100 as u32;
37384
37385pub const MAX_PATH_LENGTH: u32 = 1024 as u32;
37386
37387pub const MAX_CHILD_NAME_LENGTH: u32 = 1024 as u32;
37388
37389pub const MAX_URL_SCHEME_LENGTH: u32 = 100 as u32;
37390
37391pub const MAX_MONIKER_LENGTH: u32 = 4096 as u32;
37392
37393#[doc = " The maximum number of EventSubscriptions in an EventStream.\n"]
37394pub const MAX_NUM_EVENT_STREAM_SUBSCRIPTIONS: u64 = 100 as u64;