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    impl ::std::convert::From<AllowedOffers> for u32 {
29        fn from(value: AllowedOffers) -> Self {
30            match value {
31                AllowedOffers::StaticOnly => 1,
32                AllowedOffers::StaticAndDynamic => 2,
33            }
34        }
35    }
36
37    unsafe impl<___E> ::fidl_next::Encode<crate::wire::AllowedOffers, ___E> for AllowedOffers
38    where
39        ___E: ?Sized,
40    {
41        #[inline]
42        fn encode(
43            self,
44            encoder: &mut ___E,
45            out: &mut ::core::mem::MaybeUninit<crate::wire::AllowedOffers>,
46            _: (),
47        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
48            ::fidl_next::Encode::encode(&self, encoder, out, ())
49        }
50    }
51
52    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::AllowedOffers, ___E> for &'a AllowedOffers
53    where
54        ___E: ?Sized,
55    {
56        #[inline]
57        fn encode(
58            self,
59            encoder: &mut ___E,
60            out: &mut ::core::mem::MaybeUninit<crate::wire::AllowedOffers>,
61            _: (),
62        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
63            ::fidl_next::munge!(let crate::wire::AllowedOffers { value } = out);
64            let _ = value.write(::fidl_next::wire::Uint32::from(match *self {
65                AllowedOffers::StaticOnly => 1,
66
67                AllowedOffers::StaticAndDynamic => 2,
68            }));
69
70            Ok(())
71        }
72    }
73
74    impl ::core::convert::From<crate::wire::AllowedOffers> for AllowedOffers {
75        fn from(wire: crate::wire::AllowedOffers) -> Self {
76            match u32::from(wire.value) {
77                1 => Self::StaticOnly,
78
79                2 => Self::StaticAndDynamic,
80
81                _ => unsafe { ::core::hint::unreachable_unchecked() },
82            }
83        }
84    }
85
86    impl ::fidl_next::FromWire<crate::wire::AllowedOffers> for AllowedOffers {
87        #[inline]
88        fn from_wire(wire: crate::wire::AllowedOffers) -> Self {
89            Self::from(wire)
90        }
91    }
92
93    impl ::fidl_next::FromWireRef<crate::wire::AllowedOffers> for AllowedOffers {
94        #[inline]
95        fn from_wire_ref(wire: &crate::wire::AllowedOffers) -> Self {
96            Self::from(*wire)
97        }
98    }
99
100    #[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"]
101    #[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
102    #[repr(u32)]
103    pub enum Availability {
104        Required = 1,
105        Optional = 2,
106        SameAsTarget = 3,
107        Transitional = 4,
108    }
109    impl ::core::convert::TryFrom<u32> for Availability {
110        type Error = ::fidl_next::UnknownStrictEnumMemberError;
111        fn try_from(
112            value: u32,
113        ) -> ::core::result::Result<Self, ::fidl_next::UnknownStrictEnumMemberError> {
114            match value {
115                1 => Ok(Self::Required),
116                2 => Ok(Self::Optional),
117                3 => Ok(Self::SameAsTarget),
118                4 => Ok(Self::Transitional),
119
120                _ => Err(::fidl_next::UnknownStrictEnumMemberError::new(value.into())),
121            }
122        }
123    }
124
125    impl ::std::convert::From<Availability> for u32 {
126        fn from(value: Availability) -> Self {
127            match value {
128                Availability::Required => 1,
129                Availability::Optional => 2,
130                Availability::SameAsTarget => 3,
131                Availability::Transitional => 4,
132            }
133        }
134    }
135
136    unsafe impl<___E> ::fidl_next::Encode<crate::wire::Availability, ___E> for Availability
137    where
138        ___E: ?Sized,
139    {
140        #[inline]
141        fn encode(
142            self,
143            encoder: &mut ___E,
144            out: &mut ::core::mem::MaybeUninit<crate::wire::Availability>,
145            _: (),
146        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
147            ::fidl_next::Encode::encode(&self, encoder, out, ())
148        }
149    }
150
151    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::Availability, ___E> for &'a Availability
152    where
153        ___E: ?Sized,
154    {
155        #[inline]
156        fn encode(
157            self,
158            encoder: &mut ___E,
159            out: &mut ::core::mem::MaybeUninit<crate::wire::Availability>,
160            _: (),
161        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
162            ::fidl_next::munge!(let crate::wire::Availability { value } = out);
163            let _ = value.write(::fidl_next::wire::Uint32::from(match *self {
164                Availability::Required => 1,
165
166                Availability::Optional => 2,
167
168                Availability::SameAsTarget => 3,
169
170                Availability::Transitional => 4,
171            }));
172
173            Ok(())
174        }
175    }
176
177    impl ::core::convert::From<crate::wire::Availability> for Availability {
178        fn from(wire: crate::wire::Availability) -> Self {
179            match u32::from(wire.value) {
180                1 => Self::Required,
181
182                2 => Self::Optional,
183
184                3 => Self::SameAsTarget,
185
186                4 => Self::Transitional,
187
188                _ => unsafe { ::core::hint::unreachable_unchecked() },
189            }
190        }
191    }
192
193    impl ::fidl_next::FromWire<crate::wire::Availability> for Availability {
194        #[inline]
195        fn from_wire(wire: crate::wire::Availability) -> Self {
196            Self::from(wire)
197        }
198    }
199
200    impl ::fidl_next::FromWireRef<crate::wire::Availability> for Availability {
201        #[inline]
202        fn from_wire_ref(wire: &crate::wire::Availability) -> Self {
203            Self::from(*wire)
204        }
205    }
206
207    pub type Name = ::std::string::String;
208
209    #[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"]
210    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
211    pub struct Service {
212        pub name: ::core::option::Option<::std::string::String>,
213
214        pub source_path: ::core::option::Option<::std::string::String>,
215    }
216
217    impl Service {
218        fn __max_ordinal(&self) -> usize {
219            if self.source_path.is_some() {
220                return 2;
221            }
222
223            if self.name.is_some() {
224                return 1;
225            }
226
227            0
228        }
229    }
230
231    unsafe impl<___E> ::fidl_next::Encode<crate::wire::Service<'static>, ___E> for Service
232    where
233        ___E: ::fidl_next::Encoder + ?Sized,
234    {
235        #[inline]
236        fn encode(
237            mut self,
238            encoder: &mut ___E,
239            out: &mut ::core::mem::MaybeUninit<crate::wire::Service<'static>>,
240            _: (),
241        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
242            ::fidl_next::munge!(let crate::wire::Service { table } = out);
243
244            let max_ord = self.__max_ordinal();
245
246            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
247            ::fidl_next::Wire::zero_padding(&mut out);
248
249            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
250                ::fidl_next::wire::Envelope,
251            >(encoder, max_ord);
252
253            for i in 1..=max_ord {
254                match i {
255                    2 => {
256                        if let Some(value) = self.source_path.take() {
257                            ::fidl_next::wire::Envelope::encode_value::<
258                                ::fidl_next::wire::String<'static>,
259                                ___E,
260                            >(
261                                value, preallocated.encoder, &mut out, 1024
262                            )?;
263                        } else {
264                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
265                        }
266                    }
267
268                    1 => {
269                        if let Some(value) = self.name.take() {
270                            ::fidl_next::wire::Envelope::encode_value::<
271                                ::fidl_next::wire::String<'static>,
272                                ___E,
273                            >(
274                                value, preallocated.encoder, &mut out, 100
275                            )?;
276                        } else {
277                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
278                        }
279                    }
280
281                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
282                }
283                unsafe {
284                    preallocated.write_next(out.assume_init_ref());
285                }
286            }
287
288            ::fidl_next::wire::Table::encode_len(table, max_ord);
289
290            Ok(())
291        }
292    }
293
294    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::Service<'static>, ___E> for &'a Service
295    where
296        ___E: ::fidl_next::Encoder + ?Sized,
297    {
298        #[inline]
299        fn encode(
300            self,
301            encoder: &mut ___E,
302            out: &mut ::core::mem::MaybeUninit<crate::wire::Service<'static>>,
303            _: (),
304        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
305            ::fidl_next::munge!(let crate::wire::Service { table } = out);
306
307            let max_ord = self.__max_ordinal();
308
309            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
310            ::fidl_next::Wire::zero_padding(&mut out);
311
312            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
313                ::fidl_next::wire::Envelope,
314            >(encoder, max_ord);
315
316            for i in 1..=max_ord {
317                match i {
318                    2 => {
319                        if let Some(value) = &self.source_path {
320                            ::fidl_next::wire::Envelope::encode_value::<
321                                ::fidl_next::wire::String<'static>,
322                                ___E,
323                            >(
324                                value, preallocated.encoder, &mut out, 1024
325                            )?;
326                        } else {
327                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
328                        }
329                    }
330
331                    1 => {
332                        if let Some(value) = &self.name {
333                            ::fidl_next::wire::Envelope::encode_value::<
334                                ::fidl_next::wire::String<'static>,
335                                ___E,
336                            >(
337                                value, preallocated.encoder, &mut out, 100
338                            )?;
339                        } else {
340                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
341                        }
342                    }
343
344                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
345                }
346                unsafe {
347                    preallocated.write_next(out.assume_init_ref());
348                }
349            }
350
351            ::fidl_next::wire::Table::encode_len(table, max_ord);
352
353            Ok(())
354        }
355    }
356
357    impl<'de> ::fidl_next::FromWire<crate::wire::Service<'de>> for Service {
358        #[inline]
359        fn from_wire(wire_: crate::wire::Service<'de>) -> Self {
360            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
361
362            let name = wire_.table.get(1);
363
364            let source_path = wire_.table.get(2);
365
366            Self {
367                name: name.map(|envelope| {
368                    ::fidl_next::FromWire::from_wire(unsafe {
369                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
370                    })
371                }),
372
373                source_path: source_path.map(|envelope| {
374                    ::fidl_next::FromWire::from_wire(unsafe {
375                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
376                    })
377                }),
378            }
379        }
380    }
381
382    impl<'de> ::fidl_next::FromWireRef<crate::wire::Service<'de>> for Service {
383        #[inline]
384        fn from_wire_ref(wire: &crate::wire::Service<'de>) -> Self {
385            Self {
386                name: wire.table.get(1).map(|envelope| {
387                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
388                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
389                    })
390                }),
391
392                source_path: wire.table.get(2).map(|envelope| {
393                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
394                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
395                    })
396                }),
397            }
398        }
399    }
400
401    #[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"]
402    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
403    pub struct Directory {
404        pub name: ::core::option::Option<::std::string::String>,
405
406        pub source_path: ::core::option::Option<::std::string::String>,
407
408        pub rights: ::core::option::Option<::fidl_next_common_fuchsia_io::natural::Operations>,
409    }
410
411    impl Directory {
412        fn __max_ordinal(&self) -> usize {
413            if self.rights.is_some() {
414                return 3;
415            }
416
417            if self.source_path.is_some() {
418                return 2;
419            }
420
421            if self.name.is_some() {
422                return 1;
423            }
424
425            0
426        }
427    }
428
429    unsafe impl<___E> ::fidl_next::Encode<crate::wire::Directory<'static>, ___E> for Directory
430    where
431        ___E: ::fidl_next::Encoder + ?Sized,
432    {
433        #[inline]
434        fn encode(
435            mut self,
436            encoder: &mut ___E,
437            out: &mut ::core::mem::MaybeUninit<crate::wire::Directory<'static>>,
438            _: (),
439        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
440            ::fidl_next::munge!(let crate::wire::Directory { table } = out);
441
442            let max_ord = self.__max_ordinal();
443
444            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
445            ::fidl_next::Wire::zero_padding(&mut out);
446
447            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
448                ::fidl_next::wire::Envelope,
449            >(encoder, max_ord);
450
451            for i in 1..=max_ord {
452                match i {
453                    3 => {
454                        if let Some(value) = self.rights.take() {
455                            ::fidl_next::wire::Envelope::encode_value::<
456                                ::fidl_next_common_fuchsia_io::wire::Operations,
457                                ___E,
458                            >(
459                                value, preallocated.encoder, &mut out, ()
460                            )?;
461                        } else {
462                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
463                        }
464                    }
465
466                    2 => {
467                        if let Some(value) = self.source_path.take() {
468                            ::fidl_next::wire::Envelope::encode_value::<
469                                ::fidl_next::wire::String<'static>,
470                                ___E,
471                            >(
472                                value, preallocated.encoder, &mut out, 1024
473                            )?;
474                        } else {
475                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
476                        }
477                    }
478
479                    1 => {
480                        if let Some(value) = self.name.take() {
481                            ::fidl_next::wire::Envelope::encode_value::<
482                                ::fidl_next::wire::String<'static>,
483                                ___E,
484                            >(
485                                value, preallocated.encoder, &mut out, 100
486                            )?;
487                        } else {
488                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
489                        }
490                    }
491
492                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
493                }
494                unsafe {
495                    preallocated.write_next(out.assume_init_ref());
496                }
497            }
498
499            ::fidl_next::wire::Table::encode_len(table, max_ord);
500
501            Ok(())
502        }
503    }
504
505    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::Directory<'static>, ___E> for &'a Directory
506    where
507        ___E: ::fidl_next::Encoder + ?Sized,
508    {
509        #[inline]
510        fn encode(
511            self,
512            encoder: &mut ___E,
513            out: &mut ::core::mem::MaybeUninit<crate::wire::Directory<'static>>,
514            _: (),
515        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
516            ::fidl_next::munge!(let crate::wire::Directory { table } = out);
517
518            let max_ord = self.__max_ordinal();
519
520            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
521            ::fidl_next::Wire::zero_padding(&mut out);
522
523            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
524                ::fidl_next::wire::Envelope,
525            >(encoder, max_ord);
526
527            for i in 1..=max_ord {
528                match i {
529                    3 => {
530                        if let Some(value) = &self.rights {
531                            ::fidl_next::wire::Envelope::encode_value::<
532                                ::fidl_next_common_fuchsia_io::wire::Operations,
533                                ___E,
534                            >(
535                                value, preallocated.encoder, &mut out, ()
536                            )?;
537                        } else {
538                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
539                        }
540                    }
541
542                    2 => {
543                        if let Some(value) = &self.source_path {
544                            ::fidl_next::wire::Envelope::encode_value::<
545                                ::fidl_next::wire::String<'static>,
546                                ___E,
547                            >(
548                                value, preallocated.encoder, &mut out, 1024
549                            )?;
550                        } else {
551                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
552                        }
553                    }
554
555                    1 => {
556                        if let Some(value) = &self.name {
557                            ::fidl_next::wire::Envelope::encode_value::<
558                                ::fidl_next::wire::String<'static>,
559                                ___E,
560                            >(
561                                value, preallocated.encoder, &mut out, 100
562                            )?;
563                        } else {
564                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
565                        }
566                    }
567
568                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
569                }
570                unsafe {
571                    preallocated.write_next(out.assume_init_ref());
572                }
573            }
574
575            ::fidl_next::wire::Table::encode_len(table, max_ord);
576
577            Ok(())
578        }
579    }
580
581    impl<'de> ::fidl_next::FromWire<crate::wire::Directory<'de>> for Directory {
582        #[inline]
583        fn from_wire(wire_: crate::wire::Directory<'de>) -> Self {
584            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
585
586            let name = wire_.table.get(1);
587
588            let source_path = wire_.table.get(2);
589
590            let rights = wire_.table.get(3);
591
592            Self {
593                name: name.map(|envelope| {
594                    ::fidl_next::FromWire::from_wire(unsafe {
595                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
596                    })
597                }),
598
599                source_path: source_path.map(|envelope| {
600                    ::fidl_next::FromWire::from_wire(unsafe {
601                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
602                    })
603                }),
604
605                rights: rights.map(|envelope| {
606                    ::fidl_next::FromWire::from_wire(unsafe {
607                        envelope.read_unchecked::<::fidl_next_common_fuchsia_io::wire::Operations>()
608                    })
609                }),
610            }
611        }
612    }
613
614    impl<'de> ::fidl_next::FromWireRef<crate::wire::Directory<'de>> for Directory {
615        #[inline]
616        fn from_wire_ref(wire: &crate::wire::Directory<'de>) -> Self {
617            Self {
618                name: wire.table.get(1).map(|envelope| {
619                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
620                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
621                    })
622                }),
623
624                source_path: wire.table.get(2).map(|envelope| {
625                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
626                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
627                    })
628                }),
629
630                rights: wire.table.get(3).map(|envelope| {
631                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
632                        envelope
633                            .deref_unchecked::<::fidl_next_common_fuchsia_io::wire::Operations>()
634                    })
635                }),
636            }
637        }
638    }
639
640    #[doc = " A reference to a component\'s parent instance.\n"]
641    pub type ParentRef = ();
642
643    #[doc = " A reference to the component itself.\n"]
644    pub type SelfRef = ();
645
646    pub type ChildName = ::std::string::String;
647
648    #[doc = " A reference to one of the component\'s child instances.\n"]
649    #[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
650    pub struct ChildRef {
651        pub name: ::std::string::String,
652
653        pub collection: ::core::option::Option<::std::string::String>,
654    }
655
656    unsafe impl<___E> ::fidl_next::Encode<crate::wire::ChildRef<'static>, ___E> for ChildRef
657    where
658        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
659        ___E: ::fidl_next::Encoder,
660    {
661        #[inline]
662        fn encode(
663            self,
664            encoder_: &mut ___E,
665            out_: &mut ::core::mem::MaybeUninit<crate::wire::ChildRef<'static>>,
666            _: (),
667        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
668            ::fidl_next::munge! {
669                let crate::wire::ChildRef {
670                    name,
671                    collection,
672
673                } = out_;
674            }
675
676            ::fidl_next::Encode::encode(self.name, encoder_, name, 1024)?;
677
678            let mut _field = unsafe { ::fidl_next::Slot::new_unchecked(name.as_mut_ptr()) };
679            ::fidl_next::Constrained::validate(_field, 1024)?;
680
681            ::fidl_next::Encode::encode(self.collection, encoder_, collection, 100)?;
682
683            let mut _field = unsafe { ::fidl_next::Slot::new_unchecked(collection.as_mut_ptr()) };
684            ::fidl_next::Constrained::validate(_field, 100)?;
685
686            Ok(())
687        }
688    }
689
690    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::ChildRef<'static>, ___E> for &'a ChildRef
691    where
692        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
693        ___E: ::fidl_next::Encoder,
694    {
695        #[inline]
696        fn encode(
697            self,
698            encoder_: &mut ___E,
699            out_: &mut ::core::mem::MaybeUninit<crate::wire::ChildRef<'static>>,
700            _: (),
701        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
702            ::fidl_next::munge! {
703                let crate::wire::ChildRef {
704                    name,
705                    collection,
706
707                } = out_;
708            }
709
710            ::fidl_next::Encode::encode(&self.name, encoder_, name, 1024)?;
711
712            let mut _field = unsafe { ::fidl_next::Slot::new_unchecked(name.as_mut_ptr()) };
713            ::fidl_next::Constrained::validate(_field, 1024)?;
714
715            ::fidl_next::Encode::encode(&self.collection, encoder_, collection, 100)?;
716
717            let mut _field = unsafe { ::fidl_next::Slot::new_unchecked(collection.as_mut_ptr()) };
718            ::fidl_next::Constrained::validate(_field, 100)?;
719
720            Ok(())
721        }
722    }
723
724    unsafe impl<___E>
725        ::fidl_next::EncodeOption<
726            ::fidl_next::wire::Box<'static, crate::wire::ChildRef<'static>>,
727            ___E,
728        > for ChildRef
729    where
730        ___E: ::fidl_next::Encoder + ?Sized,
731        ChildRef: ::fidl_next::Encode<crate::wire::ChildRef<'static>, ___E>,
732    {
733        #[inline]
734        fn encode_option(
735            this: ::core::option::Option<Self>,
736            encoder: &mut ___E,
737            out: &mut ::core::mem::MaybeUninit<
738                ::fidl_next::wire::Box<'static, crate::wire::ChildRef<'static>>,
739            >,
740            _: (),
741        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
742            if let Some(inner) = this {
743                ::fidl_next::EncoderExt::encode_next(encoder, inner)?;
744                ::fidl_next::wire::Box::encode_present(out);
745            } else {
746                ::fidl_next::wire::Box::encode_absent(out);
747            }
748
749            Ok(())
750        }
751    }
752
753    unsafe impl<'a, ___E>
754        ::fidl_next::EncodeOption<
755            ::fidl_next::wire::Box<'static, crate::wire::ChildRef<'static>>,
756            ___E,
757        > for &'a ChildRef
758    where
759        ___E: ::fidl_next::Encoder + ?Sized,
760        &'a ChildRef: ::fidl_next::Encode<crate::wire::ChildRef<'static>, ___E>,
761    {
762        #[inline]
763        fn encode_option(
764            this: ::core::option::Option<Self>,
765            encoder: &mut ___E,
766            out: &mut ::core::mem::MaybeUninit<
767                ::fidl_next::wire::Box<'static, crate::wire::ChildRef<'static>>,
768            >,
769            _: (),
770        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
771            if let Some(inner) = this {
772                ::fidl_next::EncoderExt::encode_next(encoder, inner)?;
773                ::fidl_next::wire::Box::encode_present(out);
774            } else {
775                ::fidl_next::wire::Box::encode_absent(out);
776            }
777
778            Ok(())
779        }
780    }
781
782    impl<'de> ::fidl_next::FromWire<crate::wire::ChildRef<'de>> for ChildRef {
783        #[inline]
784        fn from_wire(wire: crate::wire::ChildRef<'de>) -> Self {
785            Self {
786                name: ::fidl_next::FromWire::from_wire(wire.name),
787
788                collection: ::fidl_next::FromWire::from_wire(wire.collection),
789            }
790        }
791    }
792
793    impl<'de> ::fidl_next::FromWireRef<crate::wire::ChildRef<'de>> for ChildRef {
794        #[inline]
795        fn from_wire_ref(wire: &crate::wire::ChildRef<'de>) -> Self {
796            Self {
797                name: ::fidl_next::FromWireRef::from_wire_ref(&wire.name),
798
799                collection: ::fidl_next::FromWireRef::from_wire_ref(&wire.collection),
800            }
801        }
802    }
803
804    #[doc = " A reference to one of the component\'s collections.\n"]
805    #[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
806    pub struct CollectionRef {
807        pub name: ::std::string::String,
808    }
809
810    unsafe impl<___E> ::fidl_next::Encode<crate::wire::CollectionRef<'static>, ___E> for CollectionRef
811    where
812        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
813        ___E: ::fidl_next::Encoder,
814    {
815        #[inline]
816        fn encode(
817            self,
818            encoder_: &mut ___E,
819            out_: &mut ::core::mem::MaybeUninit<crate::wire::CollectionRef<'static>>,
820            _: (),
821        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
822            ::fidl_next::munge! {
823                let crate::wire::CollectionRef {
824                    name,
825
826                } = out_;
827            }
828
829            ::fidl_next::Encode::encode(self.name, encoder_, name, 100)?;
830
831            let mut _field = unsafe { ::fidl_next::Slot::new_unchecked(name.as_mut_ptr()) };
832            ::fidl_next::Constrained::validate(_field, 100)?;
833
834            Ok(())
835        }
836    }
837
838    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::CollectionRef<'static>, ___E>
839        for &'a CollectionRef
840    where
841        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
842        ___E: ::fidl_next::Encoder,
843    {
844        #[inline]
845        fn encode(
846            self,
847            encoder_: &mut ___E,
848            out_: &mut ::core::mem::MaybeUninit<crate::wire::CollectionRef<'static>>,
849            _: (),
850        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
851            ::fidl_next::munge! {
852                let crate::wire::CollectionRef {
853                    name,
854
855                } = out_;
856            }
857
858            ::fidl_next::Encode::encode(&self.name, encoder_, name, 100)?;
859
860            let mut _field = unsafe { ::fidl_next::Slot::new_unchecked(name.as_mut_ptr()) };
861            ::fidl_next::Constrained::validate(_field, 100)?;
862
863            Ok(())
864        }
865    }
866
867    unsafe impl<___E>
868        ::fidl_next::EncodeOption<
869            ::fidl_next::wire::Box<'static, crate::wire::CollectionRef<'static>>,
870            ___E,
871        > for CollectionRef
872    where
873        ___E: ::fidl_next::Encoder + ?Sized,
874        CollectionRef: ::fidl_next::Encode<crate::wire::CollectionRef<'static>, ___E>,
875    {
876        #[inline]
877        fn encode_option(
878            this: ::core::option::Option<Self>,
879            encoder: &mut ___E,
880            out: &mut ::core::mem::MaybeUninit<
881                ::fidl_next::wire::Box<'static, crate::wire::CollectionRef<'static>>,
882            >,
883            _: (),
884        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
885            if let Some(inner) = this {
886                ::fidl_next::EncoderExt::encode_next(encoder, inner)?;
887                ::fidl_next::wire::Box::encode_present(out);
888            } else {
889                ::fidl_next::wire::Box::encode_absent(out);
890            }
891
892            Ok(())
893        }
894    }
895
896    unsafe impl<'a, ___E>
897        ::fidl_next::EncodeOption<
898            ::fidl_next::wire::Box<'static, crate::wire::CollectionRef<'static>>,
899            ___E,
900        > for &'a CollectionRef
901    where
902        ___E: ::fidl_next::Encoder + ?Sized,
903        &'a CollectionRef: ::fidl_next::Encode<crate::wire::CollectionRef<'static>, ___E>,
904    {
905        #[inline]
906        fn encode_option(
907            this: ::core::option::Option<Self>,
908            encoder: &mut ___E,
909            out: &mut ::core::mem::MaybeUninit<
910                ::fidl_next::wire::Box<'static, crate::wire::CollectionRef<'static>>,
911            >,
912            _: (),
913        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
914            if let Some(inner) = this {
915                ::fidl_next::EncoderExt::encode_next(encoder, inner)?;
916                ::fidl_next::wire::Box::encode_present(out);
917            } else {
918                ::fidl_next::wire::Box::encode_absent(out);
919            }
920
921            Ok(())
922        }
923    }
924
925    impl<'de> ::fidl_next::FromWire<crate::wire::CollectionRef<'de>> for CollectionRef {
926        #[inline]
927        fn from_wire(wire: crate::wire::CollectionRef<'de>) -> Self {
928            Self { name: ::fidl_next::FromWire::from_wire(wire.name) }
929        }
930    }
931
932    impl<'de> ::fidl_next::FromWireRef<crate::wire::CollectionRef<'de>> for CollectionRef {
933        #[inline]
934        fn from_wire_ref(wire: &crate::wire::CollectionRef<'de>) -> Self {
935            Self { name: ::fidl_next::FromWireRef::from_wire_ref(&wire.name) }
936        }
937    }
938
939    #[doc = " A reference to the component framework itself.\n"]
940    pub type FrameworkRef = ();
941
942    #[doc = " A reference to a capability declared in this component.\n"]
943    #[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
944    pub struct CapabilityRef {
945        pub name: ::std::string::String,
946    }
947
948    unsafe impl<___E> ::fidl_next::Encode<crate::wire::CapabilityRef<'static>, ___E> for CapabilityRef
949    where
950        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
951        ___E: ::fidl_next::Encoder,
952    {
953        #[inline]
954        fn encode(
955            self,
956            encoder_: &mut ___E,
957            out_: &mut ::core::mem::MaybeUninit<crate::wire::CapabilityRef<'static>>,
958            _: (),
959        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
960            ::fidl_next::munge! {
961                let crate::wire::CapabilityRef {
962                    name,
963
964                } = out_;
965            }
966
967            ::fidl_next::Encode::encode(self.name, encoder_, name, 100)?;
968
969            let mut _field = unsafe { ::fidl_next::Slot::new_unchecked(name.as_mut_ptr()) };
970            ::fidl_next::Constrained::validate(_field, 100)?;
971
972            Ok(())
973        }
974    }
975
976    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::CapabilityRef<'static>, ___E>
977        for &'a CapabilityRef
978    where
979        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
980        ___E: ::fidl_next::Encoder,
981    {
982        #[inline]
983        fn encode(
984            self,
985            encoder_: &mut ___E,
986            out_: &mut ::core::mem::MaybeUninit<crate::wire::CapabilityRef<'static>>,
987            _: (),
988        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
989            ::fidl_next::munge! {
990                let crate::wire::CapabilityRef {
991                    name,
992
993                } = out_;
994            }
995
996            ::fidl_next::Encode::encode(&self.name, encoder_, name, 100)?;
997
998            let mut _field = unsafe { ::fidl_next::Slot::new_unchecked(name.as_mut_ptr()) };
999            ::fidl_next::Constrained::validate(_field, 100)?;
1000
1001            Ok(())
1002        }
1003    }
1004
1005    unsafe impl<___E>
1006        ::fidl_next::EncodeOption<
1007            ::fidl_next::wire::Box<'static, crate::wire::CapabilityRef<'static>>,
1008            ___E,
1009        > for CapabilityRef
1010    where
1011        ___E: ::fidl_next::Encoder + ?Sized,
1012        CapabilityRef: ::fidl_next::Encode<crate::wire::CapabilityRef<'static>, ___E>,
1013    {
1014        #[inline]
1015        fn encode_option(
1016            this: ::core::option::Option<Self>,
1017            encoder: &mut ___E,
1018            out: &mut ::core::mem::MaybeUninit<
1019                ::fidl_next::wire::Box<'static, crate::wire::CapabilityRef<'static>>,
1020            >,
1021            _: (),
1022        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
1023            if let Some(inner) = this {
1024                ::fidl_next::EncoderExt::encode_next(encoder, inner)?;
1025                ::fidl_next::wire::Box::encode_present(out);
1026            } else {
1027                ::fidl_next::wire::Box::encode_absent(out);
1028            }
1029
1030            Ok(())
1031        }
1032    }
1033
1034    unsafe impl<'a, ___E>
1035        ::fidl_next::EncodeOption<
1036            ::fidl_next::wire::Box<'static, crate::wire::CapabilityRef<'static>>,
1037            ___E,
1038        > for &'a CapabilityRef
1039    where
1040        ___E: ::fidl_next::Encoder + ?Sized,
1041        &'a CapabilityRef: ::fidl_next::Encode<crate::wire::CapabilityRef<'static>, ___E>,
1042    {
1043        #[inline]
1044        fn encode_option(
1045            this: ::core::option::Option<Self>,
1046            encoder: &mut ___E,
1047            out: &mut ::core::mem::MaybeUninit<
1048                ::fidl_next::wire::Box<'static, crate::wire::CapabilityRef<'static>>,
1049            >,
1050            _: (),
1051        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
1052            if let Some(inner) = this {
1053                ::fidl_next::EncoderExt::encode_next(encoder, inner)?;
1054                ::fidl_next::wire::Box::encode_present(out);
1055            } else {
1056                ::fidl_next::wire::Box::encode_absent(out);
1057            }
1058
1059            Ok(())
1060        }
1061    }
1062
1063    impl<'de> ::fidl_next::FromWire<crate::wire::CapabilityRef<'de>> for CapabilityRef {
1064        #[inline]
1065        fn from_wire(wire: crate::wire::CapabilityRef<'de>) -> Self {
1066            Self { name: ::fidl_next::FromWire::from_wire(wire.name) }
1067        }
1068    }
1069
1070    impl<'de> ::fidl_next::FromWireRef<crate::wire::CapabilityRef<'de>> for CapabilityRef {
1071        #[inline]
1072        fn from_wire_ref(wire: &crate::wire::CapabilityRef<'de>) -> Self {
1073            Self { name: ::fidl_next::FromWireRef::from_wire_ref(&wire.name) }
1074        }
1075    }
1076
1077    #[doc = " A reference to the environment\'s debug capabilities.\n"]
1078    pub type DebugRef = ();
1079
1080    #[doc = " A reference to an intentionally missing offer source.\n"]
1081    pub type VoidRef = ();
1082
1083    #[doc = " Declares which identifier to use to key a component\'s isolated storage\n directory.\n"]
1084    #[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
1085    #[repr(u32)]
1086    pub enum StorageId {
1087        StaticInstanceId = 1,
1088        StaticInstanceIdOrMoniker = 2,
1089    }
1090    impl ::core::convert::TryFrom<u32> for StorageId {
1091        type Error = ::fidl_next::UnknownStrictEnumMemberError;
1092        fn try_from(
1093            value: u32,
1094        ) -> ::core::result::Result<Self, ::fidl_next::UnknownStrictEnumMemberError> {
1095            match value {
1096                1 => Ok(Self::StaticInstanceId),
1097                2 => Ok(Self::StaticInstanceIdOrMoniker),
1098
1099                _ => Err(::fidl_next::UnknownStrictEnumMemberError::new(value.into())),
1100            }
1101        }
1102    }
1103
1104    impl ::std::convert::From<StorageId> for u32 {
1105        fn from(value: StorageId) -> Self {
1106            match value {
1107                StorageId::StaticInstanceId => 1,
1108                StorageId::StaticInstanceIdOrMoniker => 2,
1109            }
1110        }
1111    }
1112
1113    unsafe impl<___E> ::fidl_next::Encode<crate::wire::StorageId, ___E> for StorageId
1114    where
1115        ___E: ?Sized,
1116    {
1117        #[inline]
1118        fn encode(
1119            self,
1120            encoder: &mut ___E,
1121            out: &mut ::core::mem::MaybeUninit<crate::wire::StorageId>,
1122            _: (),
1123        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
1124            ::fidl_next::Encode::encode(&self, encoder, out, ())
1125        }
1126    }
1127
1128    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::StorageId, ___E> for &'a StorageId
1129    where
1130        ___E: ?Sized,
1131    {
1132        #[inline]
1133        fn encode(
1134            self,
1135            encoder: &mut ___E,
1136            out: &mut ::core::mem::MaybeUninit<crate::wire::StorageId>,
1137            _: (),
1138        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
1139            ::fidl_next::munge!(let crate::wire::StorageId { value } = out);
1140            let _ = value.write(::fidl_next::wire::Uint32::from(match *self {
1141                StorageId::StaticInstanceId => 1,
1142
1143                StorageId::StaticInstanceIdOrMoniker => 2,
1144            }));
1145
1146            Ok(())
1147        }
1148    }
1149
1150    impl ::core::convert::From<crate::wire::StorageId> for StorageId {
1151        fn from(wire: crate::wire::StorageId) -> Self {
1152            match u32::from(wire.value) {
1153                1 => Self::StaticInstanceId,
1154
1155                2 => Self::StaticInstanceIdOrMoniker,
1156
1157                _ => unsafe { ::core::hint::unreachable_unchecked() },
1158            }
1159        }
1160    }
1161
1162    impl ::fidl_next::FromWire<crate::wire::StorageId> for StorageId {
1163        #[inline]
1164        fn from_wire(wire: crate::wire::StorageId) -> Self {
1165            Self::from(wire)
1166        }
1167    }
1168
1169    impl ::fidl_next::FromWireRef<crate::wire::StorageId> for StorageId {
1170        #[inline]
1171        fn from_wire_ref(wire: &crate::wire::StorageId) -> Self {
1172            Self::from(*wire)
1173        }
1174    }
1175
1176    #[doc = " Declares a runner capability backed by a service.\n"]
1177    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
1178    pub struct Runner {
1179        pub name: ::core::option::Option<::std::string::String>,
1180
1181        pub source_path: ::core::option::Option<::std::string::String>,
1182    }
1183
1184    impl Runner {
1185        fn __max_ordinal(&self) -> usize {
1186            if self.source_path.is_some() {
1187                return 2;
1188            }
1189
1190            if self.name.is_some() {
1191                return 1;
1192            }
1193
1194            0
1195        }
1196    }
1197
1198    unsafe impl<___E> ::fidl_next::Encode<crate::wire::Runner<'static>, ___E> for Runner
1199    where
1200        ___E: ::fidl_next::Encoder + ?Sized,
1201    {
1202        #[inline]
1203        fn encode(
1204            mut self,
1205            encoder: &mut ___E,
1206            out: &mut ::core::mem::MaybeUninit<crate::wire::Runner<'static>>,
1207            _: (),
1208        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
1209            ::fidl_next::munge!(let crate::wire::Runner { table } = out);
1210
1211            let max_ord = self.__max_ordinal();
1212
1213            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
1214            ::fidl_next::Wire::zero_padding(&mut out);
1215
1216            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
1217                ::fidl_next::wire::Envelope,
1218            >(encoder, max_ord);
1219
1220            for i in 1..=max_ord {
1221                match i {
1222                    2 => {
1223                        if let Some(value) = self.source_path.take() {
1224                            ::fidl_next::wire::Envelope::encode_value::<
1225                                ::fidl_next::wire::String<'static>,
1226                                ___E,
1227                            >(
1228                                value, preallocated.encoder, &mut out, 1024
1229                            )?;
1230                        } else {
1231                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
1232                        }
1233                    }
1234
1235                    1 => {
1236                        if let Some(value) = self.name.take() {
1237                            ::fidl_next::wire::Envelope::encode_value::<
1238                                ::fidl_next::wire::String<'static>,
1239                                ___E,
1240                            >(
1241                                value, preallocated.encoder, &mut out, 100
1242                            )?;
1243                        } else {
1244                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
1245                        }
1246                    }
1247
1248                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
1249                }
1250                unsafe {
1251                    preallocated.write_next(out.assume_init_ref());
1252                }
1253            }
1254
1255            ::fidl_next::wire::Table::encode_len(table, max_ord);
1256
1257            Ok(())
1258        }
1259    }
1260
1261    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::Runner<'static>, ___E> for &'a Runner
1262    where
1263        ___E: ::fidl_next::Encoder + ?Sized,
1264    {
1265        #[inline]
1266        fn encode(
1267            self,
1268            encoder: &mut ___E,
1269            out: &mut ::core::mem::MaybeUninit<crate::wire::Runner<'static>>,
1270            _: (),
1271        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
1272            ::fidl_next::munge!(let crate::wire::Runner { table } = out);
1273
1274            let max_ord = self.__max_ordinal();
1275
1276            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
1277            ::fidl_next::Wire::zero_padding(&mut out);
1278
1279            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
1280                ::fidl_next::wire::Envelope,
1281            >(encoder, max_ord);
1282
1283            for i in 1..=max_ord {
1284                match i {
1285                    2 => {
1286                        if let Some(value) = &self.source_path {
1287                            ::fidl_next::wire::Envelope::encode_value::<
1288                                ::fidl_next::wire::String<'static>,
1289                                ___E,
1290                            >(
1291                                value, preallocated.encoder, &mut out, 1024
1292                            )?;
1293                        } else {
1294                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
1295                        }
1296                    }
1297
1298                    1 => {
1299                        if let Some(value) = &self.name {
1300                            ::fidl_next::wire::Envelope::encode_value::<
1301                                ::fidl_next::wire::String<'static>,
1302                                ___E,
1303                            >(
1304                                value, preallocated.encoder, &mut out, 100
1305                            )?;
1306                        } else {
1307                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
1308                        }
1309                    }
1310
1311                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
1312                }
1313                unsafe {
1314                    preallocated.write_next(out.assume_init_ref());
1315                }
1316            }
1317
1318            ::fidl_next::wire::Table::encode_len(table, max_ord);
1319
1320            Ok(())
1321        }
1322    }
1323
1324    impl<'de> ::fidl_next::FromWire<crate::wire::Runner<'de>> for Runner {
1325        #[inline]
1326        fn from_wire(wire_: crate::wire::Runner<'de>) -> Self {
1327            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
1328
1329            let name = wire_.table.get(1);
1330
1331            let source_path = wire_.table.get(2);
1332
1333            Self {
1334                name: name.map(|envelope| {
1335                    ::fidl_next::FromWire::from_wire(unsafe {
1336                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
1337                    })
1338                }),
1339
1340                source_path: source_path.map(|envelope| {
1341                    ::fidl_next::FromWire::from_wire(unsafe {
1342                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
1343                    })
1344                }),
1345            }
1346        }
1347    }
1348
1349    impl<'de> ::fidl_next::FromWireRef<crate::wire::Runner<'de>> for Runner {
1350        #[inline]
1351        fn from_wire_ref(wire: &crate::wire::Runner<'de>) -> Self {
1352            Self {
1353                name: wire.table.get(1).map(|envelope| {
1354                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
1355                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
1356                    })
1357                }),
1358
1359                source_path: wire.table.get(2).map(|envelope| {
1360                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
1361                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
1362                    })
1363                }),
1364            }
1365        }
1366    }
1367
1368    #[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"]
1369    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
1370    pub struct Resolver {
1371        pub name: ::core::option::Option<::std::string::String>,
1372
1373        pub source_path: ::core::option::Option<::std::string::String>,
1374    }
1375
1376    impl Resolver {
1377        fn __max_ordinal(&self) -> usize {
1378            if self.source_path.is_some() {
1379                return 2;
1380            }
1381
1382            if self.name.is_some() {
1383                return 1;
1384            }
1385
1386            0
1387        }
1388    }
1389
1390    unsafe impl<___E> ::fidl_next::Encode<crate::wire::Resolver<'static>, ___E> for Resolver
1391    where
1392        ___E: ::fidl_next::Encoder + ?Sized,
1393    {
1394        #[inline]
1395        fn encode(
1396            mut self,
1397            encoder: &mut ___E,
1398            out: &mut ::core::mem::MaybeUninit<crate::wire::Resolver<'static>>,
1399            _: (),
1400        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
1401            ::fidl_next::munge!(let crate::wire::Resolver { table } = out);
1402
1403            let max_ord = self.__max_ordinal();
1404
1405            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
1406            ::fidl_next::Wire::zero_padding(&mut out);
1407
1408            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
1409                ::fidl_next::wire::Envelope,
1410            >(encoder, max_ord);
1411
1412            for i in 1..=max_ord {
1413                match i {
1414                    2 => {
1415                        if let Some(value) = self.source_path.take() {
1416                            ::fidl_next::wire::Envelope::encode_value::<
1417                                ::fidl_next::wire::String<'static>,
1418                                ___E,
1419                            >(
1420                                value, preallocated.encoder, &mut out, 1024
1421                            )?;
1422                        } else {
1423                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
1424                        }
1425                    }
1426
1427                    1 => {
1428                        if let Some(value) = self.name.take() {
1429                            ::fidl_next::wire::Envelope::encode_value::<
1430                                ::fidl_next::wire::String<'static>,
1431                                ___E,
1432                            >(
1433                                value, preallocated.encoder, &mut out, 100
1434                            )?;
1435                        } else {
1436                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
1437                        }
1438                    }
1439
1440                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
1441                }
1442                unsafe {
1443                    preallocated.write_next(out.assume_init_ref());
1444                }
1445            }
1446
1447            ::fidl_next::wire::Table::encode_len(table, max_ord);
1448
1449            Ok(())
1450        }
1451    }
1452
1453    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::Resolver<'static>, ___E> for &'a Resolver
1454    where
1455        ___E: ::fidl_next::Encoder + ?Sized,
1456    {
1457        #[inline]
1458        fn encode(
1459            self,
1460            encoder: &mut ___E,
1461            out: &mut ::core::mem::MaybeUninit<crate::wire::Resolver<'static>>,
1462            _: (),
1463        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
1464            ::fidl_next::munge!(let crate::wire::Resolver { table } = out);
1465
1466            let max_ord = self.__max_ordinal();
1467
1468            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
1469            ::fidl_next::Wire::zero_padding(&mut out);
1470
1471            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
1472                ::fidl_next::wire::Envelope,
1473            >(encoder, max_ord);
1474
1475            for i in 1..=max_ord {
1476                match i {
1477                    2 => {
1478                        if let Some(value) = &self.source_path {
1479                            ::fidl_next::wire::Envelope::encode_value::<
1480                                ::fidl_next::wire::String<'static>,
1481                                ___E,
1482                            >(
1483                                value, preallocated.encoder, &mut out, 1024
1484                            )?;
1485                        } else {
1486                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
1487                        }
1488                    }
1489
1490                    1 => {
1491                        if let Some(value) = &self.name {
1492                            ::fidl_next::wire::Envelope::encode_value::<
1493                                ::fidl_next::wire::String<'static>,
1494                                ___E,
1495                            >(
1496                                value, preallocated.encoder, &mut out, 100
1497                            )?;
1498                        } else {
1499                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
1500                        }
1501                    }
1502
1503                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
1504                }
1505                unsafe {
1506                    preallocated.write_next(out.assume_init_ref());
1507                }
1508            }
1509
1510            ::fidl_next::wire::Table::encode_len(table, max_ord);
1511
1512            Ok(())
1513        }
1514    }
1515
1516    impl<'de> ::fidl_next::FromWire<crate::wire::Resolver<'de>> for Resolver {
1517        #[inline]
1518        fn from_wire(wire_: crate::wire::Resolver<'de>) -> Self {
1519            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
1520
1521            let name = wire_.table.get(1);
1522
1523            let source_path = wire_.table.get(2);
1524
1525            Self {
1526                name: name.map(|envelope| {
1527                    ::fidl_next::FromWire::from_wire(unsafe {
1528                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
1529                    })
1530                }),
1531
1532                source_path: source_path.map(|envelope| {
1533                    ::fidl_next::FromWire::from_wire(unsafe {
1534                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
1535                    })
1536                }),
1537            }
1538        }
1539    }
1540
1541    impl<'de> ::fidl_next::FromWireRef<crate::wire::Resolver<'de>> for Resolver {
1542        #[inline]
1543        fn from_wire_ref(wire: &crate::wire::Resolver<'de>) -> Self {
1544            Self {
1545                name: wire.table.get(1).map(|envelope| {
1546                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
1547                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
1548                    })
1549                }),
1550
1551                source_path: wire.table.get(2).map(|envelope| {
1552                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
1553                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
1554                    })
1555                }),
1556            }
1557        }
1558    }
1559
1560    #[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"]
1561    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
1562    pub struct EventStream {
1563        pub name: ::core::option::Option<::std::string::String>,
1564    }
1565
1566    impl EventStream {
1567        fn __max_ordinal(&self) -> usize {
1568            if self.name.is_some() {
1569                return 1;
1570            }
1571
1572            0
1573        }
1574    }
1575
1576    unsafe impl<___E> ::fidl_next::Encode<crate::wire::EventStream<'static>, ___E> for EventStream
1577    where
1578        ___E: ::fidl_next::Encoder + ?Sized,
1579    {
1580        #[inline]
1581        fn encode(
1582            mut self,
1583            encoder: &mut ___E,
1584            out: &mut ::core::mem::MaybeUninit<crate::wire::EventStream<'static>>,
1585            _: (),
1586        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
1587            ::fidl_next::munge!(let crate::wire::EventStream { table } = out);
1588
1589            let max_ord = self.__max_ordinal();
1590
1591            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
1592            ::fidl_next::Wire::zero_padding(&mut out);
1593
1594            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
1595                ::fidl_next::wire::Envelope,
1596            >(encoder, max_ord);
1597
1598            for i in 1..=max_ord {
1599                match i {
1600                    1 => {
1601                        if let Some(value) = self.name.take() {
1602                            ::fidl_next::wire::Envelope::encode_value::<
1603                                ::fidl_next::wire::String<'static>,
1604                                ___E,
1605                            >(
1606                                value, preallocated.encoder, &mut out, 100
1607                            )?;
1608                        } else {
1609                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
1610                        }
1611                    }
1612
1613                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
1614                }
1615                unsafe {
1616                    preallocated.write_next(out.assume_init_ref());
1617                }
1618            }
1619
1620            ::fidl_next::wire::Table::encode_len(table, max_ord);
1621
1622            Ok(())
1623        }
1624    }
1625
1626    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::EventStream<'static>, ___E>
1627        for &'a EventStream
1628    where
1629        ___E: ::fidl_next::Encoder + ?Sized,
1630    {
1631        #[inline]
1632        fn encode(
1633            self,
1634            encoder: &mut ___E,
1635            out: &mut ::core::mem::MaybeUninit<crate::wire::EventStream<'static>>,
1636            _: (),
1637        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
1638            ::fidl_next::munge!(let crate::wire::EventStream { table } = out);
1639
1640            let max_ord = self.__max_ordinal();
1641
1642            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
1643            ::fidl_next::Wire::zero_padding(&mut out);
1644
1645            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
1646                ::fidl_next::wire::Envelope,
1647            >(encoder, max_ord);
1648
1649            for i in 1..=max_ord {
1650                match i {
1651                    1 => {
1652                        if let Some(value) = &self.name {
1653                            ::fidl_next::wire::Envelope::encode_value::<
1654                                ::fidl_next::wire::String<'static>,
1655                                ___E,
1656                            >(
1657                                value, preallocated.encoder, &mut out, 100
1658                            )?;
1659                        } else {
1660                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
1661                        }
1662                    }
1663
1664                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
1665                }
1666                unsafe {
1667                    preallocated.write_next(out.assume_init_ref());
1668                }
1669            }
1670
1671            ::fidl_next::wire::Table::encode_len(table, max_ord);
1672
1673            Ok(())
1674        }
1675    }
1676
1677    impl<'de> ::fidl_next::FromWire<crate::wire::EventStream<'de>> for EventStream {
1678        #[inline]
1679        fn from_wire(wire_: crate::wire::EventStream<'de>) -> Self {
1680            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
1681
1682            let name = wire_.table.get(1);
1683
1684            Self {
1685                name: name.map(|envelope| {
1686                    ::fidl_next::FromWire::from_wire(unsafe {
1687                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
1688                    })
1689                }),
1690            }
1691        }
1692    }
1693
1694    impl<'de> ::fidl_next::FromWireRef<crate::wire::EventStream<'de>> for EventStream {
1695        #[inline]
1696        fn from_wire_ref(wire: &crate::wire::EventStream<'de>) -> Self {
1697            Self {
1698                name: wire.table.get(1).map(|envelope| {
1699                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
1700                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
1701                    })
1702                }),
1703            }
1704        }
1705    }
1706
1707    #[doc = " A single configuration value.\n"]
1708    #[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
1709    pub enum ConfigSingleValue {
1710        Bool(bool),
1711
1712        Uint8(u8),
1713
1714        Uint16(u16),
1715
1716        Uint32(u32),
1717
1718        Uint64(u64),
1719
1720        Int8(i8),
1721
1722        Int16(i16),
1723
1724        Int32(i32),
1725
1726        Int64(i64),
1727
1728        String(::std::string::String),
1729
1730        UnknownOrdinal_(u64),
1731    }
1732
1733    impl ConfigSingleValue {
1734        pub fn is_unknown(&self) -> bool {
1735            #[allow(unreachable_patterns)]
1736            match self {
1737                Self::UnknownOrdinal_(_) => true,
1738                _ => false,
1739            }
1740        }
1741    }
1742
1743    unsafe impl<___E> ::fidl_next::Encode<crate::wire::ConfigSingleValue<'static>, ___E>
1744        for ConfigSingleValue
1745    where
1746        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
1747        ___E: ::fidl_next::Encoder,
1748    {
1749        #[inline]
1750        fn encode(
1751            self,
1752            encoder: &mut ___E,
1753            out: &mut ::core::mem::MaybeUninit<crate::wire::ConfigSingleValue<'static>>,
1754            _: (),
1755        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
1756            ::fidl_next::munge!(let crate::wire::ConfigSingleValue { raw, _phantom: _ } = out);
1757
1758            match self {
1759                Self::Bool(value) => {
1760                    ::fidl_next::wire::Union::encode_as::<___E, bool>(value, 1, encoder, raw, ())?
1761                }
1762
1763                Self::Uint8(value) => {
1764                    ::fidl_next::wire::Union::encode_as::<___E, u8>(value, 2, encoder, raw, ())?
1765                }
1766
1767                Self::Uint16(value) => ::fidl_next::wire::Union::encode_as::<
1768                    ___E,
1769                    ::fidl_next::wire::Uint16,
1770                >(value, 3, encoder, raw, ())?,
1771
1772                Self::Uint32(value) => ::fidl_next::wire::Union::encode_as::<
1773                    ___E,
1774                    ::fidl_next::wire::Uint32,
1775                >(value, 4, encoder, raw, ())?,
1776
1777                Self::Uint64(value) => ::fidl_next::wire::Union::encode_as::<
1778                    ___E,
1779                    ::fidl_next::wire::Uint64,
1780                >(value, 5, encoder, raw, ())?,
1781
1782                Self::Int8(value) => {
1783                    ::fidl_next::wire::Union::encode_as::<___E, i8>(value, 6, encoder, raw, ())?
1784                }
1785
1786                Self::Int16(value) => ::fidl_next::wire::Union::encode_as::<
1787                    ___E,
1788                    ::fidl_next::wire::Int16,
1789                >(value, 7, encoder, raw, ())?,
1790
1791                Self::Int32(value) => ::fidl_next::wire::Union::encode_as::<
1792                    ___E,
1793                    ::fidl_next::wire::Int32,
1794                >(value, 8, encoder, raw, ())?,
1795
1796                Self::Int64(value) => ::fidl_next::wire::Union::encode_as::<
1797                    ___E,
1798                    ::fidl_next::wire::Int64,
1799                >(value, 9, encoder, raw, ())?,
1800
1801                Self::String(value) => ::fidl_next::wire::Union::encode_as::<
1802                    ___E,
1803                    ::fidl_next::wire::String<'static>,
1804                >(value, 10, encoder, raw, 4294967295)?,
1805
1806                Self::UnknownOrdinal_(ordinal) => {
1807                    return Err(::fidl_next::EncodeError::UnknownUnionOrdinal(ordinal as usize));
1808                }
1809            }
1810
1811            Ok(())
1812        }
1813    }
1814
1815    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::ConfigSingleValue<'static>, ___E>
1816        for &'a ConfigSingleValue
1817    where
1818        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
1819        ___E: ::fidl_next::Encoder,
1820    {
1821        #[inline]
1822        fn encode(
1823            self,
1824            encoder: &mut ___E,
1825            out: &mut ::core::mem::MaybeUninit<crate::wire::ConfigSingleValue<'static>>,
1826            _: (),
1827        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
1828            ::fidl_next::munge!(let crate::wire::ConfigSingleValue { raw, _phantom: _ } = out);
1829
1830            match self {
1831                ConfigSingleValue::Bool(value) => {
1832                    ::fidl_next::wire::Union::encode_as::<___E, bool>(value, 1, encoder, raw, ())?
1833                }
1834
1835                ConfigSingleValue::Uint8(value) => {
1836                    ::fidl_next::wire::Union::encode_as::<___E, u8>(value, 2, encoder, raw, ())?
1837                }
1838
1839                ConfigSingleValue::Uint16(value) => ::fidl_next::wire::Union::encode_as::<
1840                    ___E,
1841                    ::fidl_next::wire::Uint16,
1842                >(value, 3, encoder, raw, ())?,
1843
1844                ConfigSingleValue::Uint32(value) => ::fidl_next::wire::Union::encode_as::<
1845                    ___E,
1846                    ::fidl_next::wire::Uint32,
1847                >(value, 4, encoder, raw, ())?,
1848
1849                ConfigSingleValue::Uint64(value) => ::fidl_next::wire::Union::encode_as::<
1850                    ___E,
1851                    ::fidl_next::wire::Uint64,
1852                >(value, 5, encoder, raw, ())?,
1853
1854                ConfigSingleValue::Int8(value) => {
1855                    ::fidl_next::wire::Union::encode_as::<___E, i8>(value, 6, encoder, raw, ())?
1856                }
1857
1858                ConfigSingleValue::Int16(value) => ::fidl_next::wire::Union::encode_as::<
1859                    ___E,
1860                    ::fidl_next::wire::Int16,
1861                >(value, 7, encoder, raw, ())?,
1862
1863                ConfigSingleValue::Int32(value) => ::fidl_next::wire::Union::encode_as::<
1864                    ___E,
1865                    ::fidl_next::wire::Int32,
1866                >(value, 8, encoder, raw, ())?,
1867
1868                ConfigSingleValue::Int64(value) => ::fidl_next::wire::Union::encode_as::<
1869                    ___E,
1870                    ::fidl_next::wire::Int64,
1871                >(value, 9, encoder, raw, ())?,
1872
1873                ConfigSingleValue::String(value) => {
1874                    ::fidl_next::wire::Union::encode_as::<___E, ::fidl_next::wire::String<'static>>(
1875                        value, 10, encoder, raw, 4294967295,
1876                    )?
1877                }
1878
1879                ConfigSingleValue::UnknownOrdinal_(ordinal) => {
1880                    return Err(::fidl_next::EncodeError::UnknownUnionOrdinal(*ordinal as usize));
1881                }
1882            }
1883
1884            Ok(())
1885        }
1886    }
1887
1888    unsafe impl<___E>
1889        ::fidl_next::EncodeOption<crate::wire_optional::ConfigSingleValue<'static>, ___E>
1890        for ConfigSingleValue
1891    where
1892        ___E: ?Sized,
1893        ConfigSingleValue: ::fidl_next::Encode<crate::wire::ConfigSingleValue<'static>, ___E>,
1894    {
1895        #[inline]
1896        fn encode_option(
1897            this: ::core::option::Option<Self>,
1898            encoder: &mut ___E,
1899            out: &mut ::core::mem::MaybeUninit<crate::wire_optional::ConfigSingleValue<'static>>,
1900            _: (),
1901        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
1902            ::fidl_next::munge!(let crate::wire_optional::ConfigSingleValue { raw, _phantom: _ } = &mut *out);
1903
1904            if let Some(inner) = this {
1905                let value_out = unsafe { &mut *out.as_mut_ptr().cast() };
1906                ::fidl_next::Encode::encode(inner, encoder, value_out, ())?;
1907            } else {
1908                ::fidl_next::wire::Union::encode_absent(raw);
1909            }
1910
1911            Ok(())
1912        }
1913    }
1914
1915    unsafe impl<'a, ___E>
1916        ::fidl_next::EncodeOption<crate::wire_optional::ConfigSingleValue<'static>, ___E>
1917        for &'a ConfigSingleValue
1918    where
1919        ___E: ?Sized,
1920        &'a ConfigSingleValue: ::fidl_next::Encode<crate::wire::ConfigSingleValue<'static>, ___E>,
1921    {
1922        #[inline]
1923        fn encode_option(
1924            this: ::core::option::Option<Self>,
1925            encoder: &mut ___E,
1926            out: &mut ::core::mem::MaybeUninit<crate::wire_optional::ConfigSingleValue<'static>>,
1927            _: (),
1928        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
1929            ::fidl_next::munge!(let crate::wire_optional::ConfigSingleValue { raw, _phantom: _ } = &mut *out);
1930
1931            if let Some(inner) = this {
1932                let value_out = unsafe { &mut *out.as_mut_ptr().cast() };
1933                ::fidl_next::Encode::encode(inner, encoder, value_out, ())?;
1934            } else {
1935                ::fidl_next::wire::Union::encode_absent(raw);
1936            }
1937
1938            Ok(())
1939        }
1940    }
1941
1942    impl<'de> ::fidl_next::FromWire<crate::wire::ConfigSingleValue<'de>> for ConfigSingleValue {
1943        #[inline]
1944        fn from_wire(wire: crate::wire::ConfigSingleValue<'de>) -> Self {
1945            let wire = ::core::mem::ManuallyDrop::new(wire);
1946            match wire.raw.ordinal() {
1947                1 => Self::Bool(::fidl_next::FromWire::from_wire(unsafe {
1948                    wire.raw.get().read_unchecked::<bool>()
1949                })),
1950
1951                2 => Self::Uint8(::fidl_next::FromWire::from_wire(unsafe {
1952                    wire.raw.get().read_unchecked::<u8>()
1953                })),
1954
1955                3 => Self::Uint16(::fidl_next::FromWire::from_wire(unsafe {
1956                    wire.raw.get().read_unchecked::<::fidl_next::wire::Uint16>()
1957                })),
1958
1959                4 => Self::Uint32(::fidl_next::FromWire::from_wire(unsafe {
1960                    wire.raw.get().read_unchecked::<::fidl_next::wire::Uint32>()
1961                })),
1962
1963                5 => Self::Uint64(::fidl_next::FromWire::from_wire(unsafe {
1964                    wire.raw.get().read_unchecked::<::fidl_next::wire::Uint64>()
1965                })),
1966
1967                6 => Self::Int8(::fidl_next::FromWire::from_wire(unsafe {
1968                    wire.raw.get().read_unchecked::<i8>()
1969                })),
1970
1971                7 => Self::Int16(::fidl_next::FromWire::from_wire(unsafe {
1972                    wire.raw.get().read_unchecked::<::fidl_next::wire::Int16>()
1973                })),
1974
1975                8 => Self::Int32(::fidl_next::FromWire::from_wire(unsafe {
1976                    wire.raw.get().read_unchecked::<::fidl_next::wire::Int32>()
1977                })),
1978
1979                9 => Self::Int64(::fidl_next::FromWire::from_wire(unsafe {
1980                    wire.raw.get().read_unchecked::<::fidl_next::wire::Int64>()
1981                })),
1982
1983                10 => Self::String(::fidl_next::FromWire::from_wire(unsafe {
1984                    wire.raw.get().read_unchecked::<::fidl_next::wire::String<'de>>()
1985                })),
1986
1987                ord => return Self::UnknownOrdinal_(ord as u64),
1988            }
1989        }
1990    }
1991
1992    impl<'de> ::fidl_next::FromWireRef<crate::wire::ConfigSingleValue<'de>> for ConfigSingleValue {
1993        #[inline]
1994        fn from_wire_ref(wire: &crate::wire::ConfigSingleValue<'de>) -> Self {
1995            match wire.raw.ordinal() {
1996                1 => Self::Bool(::fidl_next::FromWireRef::from_wire_ref(unsafe {
1997                    wire.raw.get().deref_unchecked::<bool>()
1998                })),
1999
2000                2 => Self::Uint8(::fidl_next::FromWireRef::from_wire_ref(unsafe {
2001                    wire.raw.get().deref_unchecked::<u8>()
2002                })),
2003
2004                3 => Self::Uint16(::fidl_next::FromWireRef::from_wire_ref(unsafe {
2005                    wire.raw.get().deref_unchecked::<::fidl_next::wire::Uint16>()
2006                })),
2007
2008                4 => Self::Uint32(::fidl_next::FromWireRef::from_wire_ref(unsafe {
2009                    wire.raw.get().deref_unchecked::<::fidl_next::wire::Uint32>()
2010                })),
2011
2012                5 => Self::Uint64(::fidl_next::FromWireRef::from_wire_ref(unsafe {
2013                    wire.raw.get().deref_unchecked::<::fidl_next::wire::Uint64>()
2014                })),
2015
2016                6 => Self::Int8(::fidl_next::FromWireRef::from_wire_ref(unsafe {
2017                    wire.raw.get().deref_unchecked::<i8>()
2018                })),
2019
2020                7 => Self::Int16(::fidl_next::FromWireRef::from_wire_ref(unsafe {
2021                    wire.raw.get().deref_unchecked::<::fidl_next::wire::Int16>()
2022                })),
2023
2024                8 => Self::Int32(::fidl_next::FromWireRef::from_wire_ref(unsafe {
2025                    wire.raw.get().deref_unchecked::<::fidl_next::wire::Int32>()
2026                })),
2027
2028                9 => Self::Int64(::fidl_next::FromWireRef::from_wire_ref(unsafe {
2029                    wire.raw.get().deref_unchecked::<::fidl_next::wire::Int64>()
2030                })),
2031
2032                10 => Self::String(::fidl_next::FromWireRef::from_wire_ref(unsafe {
2033                    wire.raw.get().deref_unchecked::<::fidl_next::wire::String<'de>>()
2034                })),
2035
2036                ord => return Self::UnknownOrdinal_(ord as u64),
2037            }
2038        }
2039    }
2040
2041    impl<'de> ::fidl_next::FromWireOption<crate::wire_optional::ConfigSingleValue<'de>>
2042        for ConfigSingleValue
2043    {
2044        #[inline]
2045        fn from_wire_option(
2046            wire: crate::wire_optional::ConfigSingleValue<'de>,
2047        ) -> ::core::option::Option<Self> {
2048            if let Some(inner) = wire.into_option() {
2049                Some(::fidl_next::FromWire::from_wire(inner))
2050            } else {
2051                None
2052            }
2053        }
2054    }
2055
2056    impl<'de> ::fidl_next::FromWireOption<crate::wire_optional::ConfigSingleValue<'de>>
2057        for Box<ConfigSingleValue>
2058    {
2059        #[inline]
2060        fn from_wire_option(
2061            wire: crate::wire_optional::ConfigSingleValue<'de>,
2062        ) -> ::core::option::Option<Self> {
2063            <ConfigSingleValue as ::fidl_next::FromWireOption<
2064                crate::wire_optional::ConfigSingleValue<'de>,
2065            >>::from_wire_option(wire)
2066            .map(Box::new)
2067        }
2068    }
2069
2070    impl<'de> ::fidl_next::FromWireOptionRef<crate::wire_optional::ConfigSingleValue<'de>>
2071        for Box<ConfigSingleValue>
2072    {
2073        #[inline]
2074        fn from_wire_option_ref(
2075            wire: &crate::wire_optional::ConfigSingleValue<'de>,
2076        ) -> ::core::option::Option<Self> {
2077            if let Some(inner) = wire.as_ref() {
2078                Some(Box::new(::fidl_next::FromWireRef::from_wire_ref(inner)))
2079            } else {
2080                None
2081            }
2082        }
2083    }
2084
2085    #[doc = " A vector configuration value.\n"]
2086    #[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
2087    pub enum ConfigVectorValue {
2088        BoolVector(::std::vec::Vec<bool>),
2089
2090        Uint8Vector(::std::vec::Vec<u8>),
2091
2092        Uint16Vector(::std::vec::Vec<u16>),
2093
2094        Uint32Vector(::std::vec::Vec<u32>),
2095
2096        Uint64Vector(::std::vec::Vec<u64>),
2097
2098        Int8Vector(::std::vec::Vec<i8>),
2099
2100        Int16Vector(::std::vec::Vec<i16>),
2101
2102        Int32Vector(::std::vec::Vec<i32>),
2103
2104        Int64Vector(::std::vec::Vec<i64>),
2105
2106        StringVector(::std::vec::Vec<::std::string::String>),
2107
2108        UnknownOrdinal_(u64),
2109    }
2110
2111    impl ConfigVectorValue {
2112        pub fn is_unknown(&self) -> bool {
2113            #[allow(unreachable_patterns)]
2114            match self {
2115                Self::UnknownOrdinal_(_) => true,
2116                _ => false,
2117            }
2118        }
2119    }
2120
2121    unsafe impl<___E> ::fidl_next::Encode<crate::wire::ConfigVectorValue<'static>, ___E>
2122        for ConfigVectorValue
2123    where
2124        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
2125        ___E: ::fidl_next::Encoder,
2126    {
2127        #[inline]
2128        fn encode(
2129            self,
2130            encoder: &mut ___E,
2131            out: &mut ::core::mem::MaybeUninit<crate::wire::ConfigVectorValue<'static>>,
2132            _: (),
2133        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
2134            ::fidl_next::munge!(let crate::wire::ConfigVectorValue { raw, _phantom: _ } = out);
2135
2136            match self {
2137                Self::BoolVector(value) => {
2138                    ::fidl_next::wire::Union::encode_as::<
2139                        ___E,
2140                        ::fidl_next::wire::Vector<'static, bool>,
2141                    >(value, 1, encoder, raw, (4294967295, ()))?
2142                }
2143
2144                Self::Uint8Vector(value) => {
2145                    ::fidl_next::wire::Union::encode_as::<
2146                        ___E,
2147                        ::fidl_next::wire::Vector<'static, u8>,
2148                    >(value, 2, encoder, raw, (4294967295, ()))?
2149                }
2150
2151                Self::Uint16Vector(value) => {
2152                    ::fidl_next::wire::Union::encode_as::<
2153                        ___E,
2154                        ::fidl_next::wire::Vector<'static, ::fidl_next::wire::Uint16>,
2155                    >(value, 3, encoder, raw, (4294967295, ()))?
2156                }
2157
2158                Self::Uint32Vector(value) => {
2159                    ::fidl_next::wire::Union::encode_as::<
2160                        ___E,
2161                        ::fidl_next::wire::Vector<'static, ::fidl_next::wire::Uint32>,
2162                    >(value, 4, encoder, raw, (4294967295, ()))?
2163                }
2164
2165                Self::Uint64Vector(value) => {
2166                    ::fidl_next::wire::Union::encode_as::<
2167                        ___E,
2168                        ::fidl_next::wire::Vector<'static, ::fidl_next::wire::Uint64>,
2169                    >(value, 5, encoder, raw, (4294967295, ()))?
2170                }
2171
2172                Self::Int8Vector(value) => {
2173                    ::fidl_next::wire::Union::encode_as::<
2174                        ___E,
2175                        ::fidl_next::wire::Vector<'static, i8>,
2176                    >(value, 6, encoder, raw, (4294967295, ()))?
2177                }
2178
2179                Self::Int16Vector(value) => {
2180                    ::fidl_next::wire::Union::encode_as::<
2181                        ___E,
2182                        ::fidl_next::wire::Vector<'static, ::fidl_next::wire::Int16>,
2183                    >(value, 7, encoder, raw, (4294967295, ()))?
2184                }
2185
2186                Self::Int32Vector(value) => {
2187                    ::fidl_next::wire::Union::encode_as::<
2188                        ___E,
2189                        ::fidl_next::wire::Vector<'static, ::fidl_next::wire::Int32>,
2190                    >(value, 8, encoder, raw, (4294967295, ()))?
2191                }
2192
2193                Self::Int64Vector(value) => {
2194                    ::fidl_next::wire::Union::encode_as::<
2195                        ___E,
2196                        ::fidl_next::wire::Vector<'static, ::fidl_next::wire::Int64>,
2197                    >(value, 9, encoder, raw, (4294967295, ()))?
2198                }
2199
2200                Self::StringVector(value) => {
2201                    ::fidl_next::wire::Union::encode_as::<
2202                        ___E,
2203                        ::fidl_next::wire::Vector<'static, ::fidl_next::wire::String<'static>>,
2204                    >(value, 10, encoder, raw, (4294967295, 4294967295))?
2205                }
2206
2207                Self::UnknownOrdinal_(ordinal) => {
2208                    return Err(::fidl_next::EncodeError::UnknownUnionOrdinal(ordinal as usize));
2209                }
2210            }
2211
2212            Ok(())
2213        }
2214    }
2215
2216    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::ConfigVectorValue<'static>, ___E>
2217        for &'a ConfigVectorValue
2218    where
2219        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
2220        ___E: ::fidl_next::Encoder,
2221    {
2222        #[inline]
2223        fn encode(
2224            self,
2225            encoder: &mut ___E,
2226            out: &mut ::core::mem::MaybeUninit<crate::wire::ConfigVectorValue<'static>>,
2227            _: (),
2228        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
2229            ::fidl_next::munge!(let crate::wire::ConfigVectorValue { raw, _phantom: _ } = out);
2230
2231            match self {
2232                ConfigVectorValue::BoolVector(value) => {
2233                    ::fidl_next::wire::Union::encode_as::<
2234                        ___E,
2235                        ::fidl_next::wire::Vector<'static, bool>,
2236                    >(value, 1, encoder, raw, (4294967295, ()))?
2237                }
2238
2239                ConfigVectorValue::Uint8Vector(value) => {
2240                    ::fidl_next::wire::Union::encode_as::<
2241                        ___E,
2242                        ::fidl_next::wire::Vector<'static, u8>,
2243                    >(value, 2, encoder, raw, (4294967295, ()))?
2244                }
2245
2246                ConfigVectorValue::Uint16Vector(value) => {
2247                    ::fidl_next::wire::Union::encode_as::<
2248                        ___E,
2249                        ::fidl_next::wire::Vector<'static, ::fidl_next::wire::Uint16>,
2250                    >(value, 3, encoder, raw, (4294967295, ()))?
2251                }
2252
2253                ConfigVectorValue::Uint32Vector(value) => {
2254                    ::fidl_next::wire::Union::encode_as::<
2255                        ___E,
2256                        ::fidl_next::wire::Vector<'static, ::fidl_next::wire::Uint32>,
2257                    >(value, 4, encoder, raw, (4294967295, ()))?
2258                }
2259
2260                ConfigVectorValue::Uint64Vector(value) => {
2261                    ::fidl_next::wire::Union::encode_as::<
2262                        ___E,
2263                        ::fidl_next::wire::Vector<'static, ::fidl_next::wire::Uint64>,
2264                    >(value, 5, encoder, raw, (4294967295, ()))?
2265                }
2266
2267                ConfigVectorValue::Int8Vector(value) => {
2268                    ::fidl_next::wire::Union::encode_as::<
2269                        ___E,
2270                        ::fidl_next::wire::Vector<'static, i8>,
2271                    >(value, 6, encoder, raw, (4294967295, ()))?
2272                }
2273
2274                ConfigVectorValue::Int16Vector(value) => {
2275                    ::fidl_next::wire::Union::encode_as::<
2276                        ___E,
2277                        ::fidl_next::wire::Vector<'static, ::fidl_next::wire::Int16>,
2278                    >(value, 7, encoder, raw, (4294967295, ()))?
2279                }
2280
2281                ConfigVectorValue::Int32Vector(value) => {
2282                    ::fidl_next::wire::Union::encode_as::<
2283                        ___E,
2284                        ::fidl_next::wire::Vector<'static, ::fidl_next::wire::Int32>,
2285                    >(value, 8, encoder, raw, (4294967295, ()))?
2286                }
2287
2288                ConfigVectorValue::Int64Vector(value) => {
2289                    ::fidl_next::wire::Union::encode_as::<
2290                        ___E,
2291                        ::fidl_next::wire::Vector<'static, ::fidl_next::wire::Int64>,
2292                    >(value, 9, encoder, raw, (4294967295, ()))?
2293                }
2294
2295                ConfigVectorValue::StringVector(value) => {
2296                    ::fidl_next::wire::Union::encode_as::<
2297                        ___E,
2298                        ::fidl_next::wire::Vector<'static, ::fidl_next::wire::String<'static>>,
2299                    >(value, 10, encoder, raw, (4294967295, 4294967295))?
2300                }
2301
2302                ConfigVectorValue::UnknownOrdinal_(ordinal) => {
2303                    return Err(::fidl_next::EncodeError::UnknownUnionOrdinal(*ordinal as usize));
2304                }
2305            }
2306
2307            Ok(())
2308        }
2309    }
2310
2311    unsafe impl<___E>
2312        ::fidl_next::EncodeOption<crate::wire_optional::ConfigVectorValue<'static>, ___E>
2313        for ConfigVectorValue
2314    where
2315        ___E: ?Sized,
2316        ConfigVectorValue: ::fidl_next::Encode<crate::wire::ConfigVectorValue<'static>, ___E>,
2317    {
2318        #[inline]
2319        fn encode_option(
2320            this: ::core::option::Option<Self>,
2321            encoder: &mut ___E,
2322            out: &mut ::core::mem::MaybeUninit<crate::wire_optional::ConfigVectorValue<'static>>,
2323            _: (),
2324        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
2325            ::fidl_next::munge!(let crate::wire_optional::ConfigVectorValue { raw, _phantom: _ } = &mut *out);
2326
2327            if let Some(inner) = this {
2328                let value_out = unsafe { &mut *out.as_mut_ptr().cast() };
2329                ::fidl_next::Encode::encode(inner, encoder, value_out, ())?;
2330            } else {
2331                ::fidl_next::wire::Union::encode_absent(raw);
2332            }
2333
2334            Ok(())
2335        }
2336    }
2337
2338    unsafe impl<'a, ___E>
2339        ::fidl_next::EncodeOption<crate::wire_optional::ConfigVectorValue<'static>, ___E>
2340        for &'a ConfigVectorValue
2341    where
2342        ___E: ?Sized,
2343        &'a ConfigVectorValue: ::fidl_next::Encode<crate::wire::ConfigVectorValue<'static>, ___E>,
2344    {
2345        #[inline]
2346        fn encode_option(
2347            this: ::core::option::Option<Self>,
2348            encoder: &mut ___E,
2349            out: &mut ::core::mem::MaybeUninit<crate::wire_optional::ConfigVectorValue<'static>>,
2350            _: (),
2351        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
2352            ::fidl_next::munge!(let crate::wire_optional::ConfigVectorValue { raw, _phantom: _ } = &mut *out);
2353
2354            if let Some(inner) = this {
2355                let value_out = unsafe { &mut *out.as_mut_ptr().cast() };
2356                ::fidl_next::Encode::encode(inner, encoder, value_out, ())?;
2357            } else {
2358                ::fidl_next::wire::Union::encode_absent(raw);
2359            }
2360
2361            Ok(())
2362        }
2363    }
2364
2365    impl<'de> ::fidl_next::FromWire<crate::wire::ConfigVectorValue<'de>> for ConfigVectorValue {
2366        #[inline]
2367        fn from_wire(wire: crate::wire::ConfigVectorValue<'de>) -> Self {
2368            let wire = ::core::mem::ManuallyDrop::new(wire);
2369            match wire.raw.ordinal() {
2370                1 => Self::BoolVector(::fidl_next::FromWire::from_wire(unsafe {
2371                    wire.raw.get().read_unchecked::<::fidl_next::wire::Vector<'de, bool>>()
2372                })),
2373
2374                2 => Self::Uint8Vector(::fidl_next::FromWire::from_wire(unsafe {
2375                    wire.raw.get().read_unchecked::<::fidl_next::wire::Vector<'de, u8>>()
2376                })),
2377
2378                3 => Self::Uint16Vector(::fidl_next::FromWire::from_wire(unsafe {
2379                    wire.raw.get().read_unchecked::<::fidl_next::wire::Vector<'de, ::fidl_next::wire::Uint16>>()
2380                })),
2381
2382                4 => Self::Uint32Vector(::fidl_next::FromWire::from_wire(unsafe {
2383                    wire.raw.get().read_unchecked::<::fidl_next::wire::Vector<'de, ::fidl_next::wire::Uint32>>()
2384                })),
2385
2386                5 => Self::Uint64Vector(::fidl_next::FromWire::from_wire(unsafe {
2387                    wire.raw.get().read_unchecked::<::fidl_next::wire::Vector<'de, ::fidl_next::wire::Uint64>>()
2388                })),
2389
2390                6 => Self::Int8Vector(::fidl_next::FromWire::from_wire(unsafe {
2391                    wire.raw.get().read_unchecked::<::fidl_next::wire::Vector<'de, i8>>()
2392                })),
2393
2394                7 => {
2395                    Self::Int16Vector(::fidl_next::FromWire::from_wire(unsafe {
2396                        wire.raw.get().read_unchecked::<::fidl_next::wire::Vector<'de, ::fidl_next::wire::Int16>>()
2397                    }))
2398                }
2399
2400                8 => {
2401                    Self::Int32Vector(::fidl_next::FromWire::from_wire(unsafe {
2402                        wire.raw.get().read_unchecked::<::fidl_next::wire::Vector<'de, ::fidl_next::wire::Int32>>()
2403                    }))
2404                }
2405
2406                9 => {
2407                    Self::Int64Vector(::fidl_next::FromWire::from_wire(unsafe {
2408                        wire.raw.get().read_unchecked::<::fidl_next::wire::Vector<'de, ::fidl_next::wire::Int64>>()
2409                    }))
2410                }
2411
2412                10 => Self::StringVector(::fidl_next::FromWire::from_wire(unsafe {
2413                    wire.raw.get().read_unchecked::<::fidl_next::wire::Vector<'de, ::fidl_next::wire::String<'de>>>()
2414                })),
2415
2416                ord => return Self::UnknownOrdinal_(ord as u64),
2417            }
2418        }
2419    }
2420
2421    impl<'de> ::fidl_next::FromWireRef<crate::wire::ConfigVectorValue<'de>> for ConfigVectorValue {
2422        #[inline]
2423        fn from_wire_ref(wire: &crate::wire::ConfigVectorValue<'de>) -> Self {
2424            match wire.raw.ordinal() {
2425                1 => Self::BoolVector(::fidl_next::FromWireRef::from_wire_ref(unsafe {
2426                    wire.raw.get().deref_unchecked::<::fidl_next::wire::Vector<'de, bool>>()
2427                })),
2428
2429                2 => Self::Uint8Vector(::fidl_next::FromWireRef::from_wire_ref(unsafe {
2430                    wire.raw.get().deref_unchecked::<::fidl_next::wire::Vector<'de, u8>>()
2431                })),
2432
2433                3 => Self::Uint16Vector(::fidl_next::FromWireRef::from_wire_ref(unsafe {
2434                    wire.raw.get().deref_unchecked::<::fidl_next::wire::Vector<'de, ::fidl_next::wire::Uint16>>()
2435                })),
2436
2437                4 => Self::Uint32Vector(::fidl_next::FromWireRef::from_wire_ref(unsafe {
2438                    wire.raw.get().deref_unchecked::<::fidl_next::wire::Vector<'de, ::fidl_next::wire::Uint32>>()
2439                })),
2440
2441                5 => Self::Uint64Vector(::fidl_next::FromWireRef::from_wire_ref(unsafe {
2442                    wire.raw.get().deref_unchecked::<::fidl_next::wire::Vector<'de, ::fidl_next::wire::Uint64>>()
2443                })),
2444
2445                6 => Self::Int8Vector(::fidl_next::FromWireRef::from_wire_ref(unsafe {
2446                    wire.raw.get().deref_unchecked::<::fidl_next::wire::Vector<'de, i8>>()
2447                })),
2448
2449                7 => Self::Int16Vector(::fidl_next::FromWireRef::from_wire_ref(unsafe {
2450                    wire.raw.get().deref_unchecked::<::fidl_next::wire::Vector<'de, ::fidl_next::wire::Int16>>()
2451                })),
2452
2453                8 => Self::Int32Vector(::fidl_next::FromWireRef::from_wire_ref(unsafe {
2454                    wire.raw.get().deref_unchecked::<::fidl_next::wire::Vector<'de, ::fidl_next::wire::Int32>>()
2455                })),
2456
2457                9 => Self::Int64Vector(::fidl_next::FromWireRef::from_wire_ref(unsafe {
2458                    wire.raw.get().deref_unchecked::<::fidl_next::wire::Vector<'de, ::fidl_next::wire::Int64>>()
2459                })),
2460
2461                10 => Self::StringVector(::fidl_next::FromWireRef::from_wire_ref(unsafe {
2462                    wire.raw.get().deref_unchecked::<::fidl_next::wire::Vector<'de, ::fidl_next::wire::String<'de>>>()
2463                })),
2464
2465                ord => return Self::UnknownOrdinal_(ord as u64),
2466            }
2467        }
2468    }
2469
2470    impl<'de> ::fidl_next::FromWireOption<crate::wire_optional::ConfigVectorValue<'de>>
2471        for ConfigVectorValue
2472    {
2473        #[inline]
2474        fn from_wire_option(
2475            wire: crate::wire_optional::ConfigVectorValue<'de>,
2476        ) -> ::core::option::Option<Self> {
2477            if let Some(inner) = wire.into_option() {
2478                Some(::fidl_next::FromWire::from_wire(inner))
2479            } else {
2480                None
2481            }
2482        }
2483    }
2484
2485    impl<'de> ::fidl_next::FromWireOption<crate::wire_optional::ConfigVectorValue<'de>>
2486        for Box<ConfigVectorValue>
2487    {
2488        #[inline]
2489        fn from_wire_option(
2490            wire: crate::wire_optional::ConfigVectorValue<'de>,
2491        ) -> ::core::option::Option<Self> {
2492            <ConfigVectorValue as ::fidl_next::FromWireOption<
2493                crate::wire_optional::ConfigVectorValue<'de>,
2494            >>::from_wire_option(wire)
2495            .map(Box::new)
2496        }
2497    }
2498
2499    impl<'de> ::fidl_next::FromWireOptionRef<crate::wire_optional::ConfigVectorValue<'de>>
2500        for Box<ConfigVectorValue>
2501    {
2502        #[inline]
2503        fn from_wire_option_ref(
2504            wire: &crate::wire_optional::ConfigVectorValue<'de>,
2505        ) -> ::core::option::Option<Self> {
2506            if let Some(inner) = wire.as_ref() {
2507                Some(Box::new(::fidl_next::FromWireRef::from_wire_ref(inner)))
2508            } else {
2509                None
2510            }
2511        }
2512    }
2513
2514    #[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"]
2515    #[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
2516    pub enum ConfigValue {
2517        Single(crate::natural::ConfigSingleValue),
2518
2519        Vector(crate::natural::ConfigVectorValue),
2520
2521        UnknownOrdinal_(u64),
2522    }
2523
2524    impl ConfigValue {
2525        pub fn is_unknown(&self) -> bool {
2526            #[allow(unreachable_patterns)]
2527            match self {
2528                Self::UnknownOrdinal_(_) => true,
2529                _ => false,
2530            }
2531        }
2532    }
2533
2534    unsafe impl<___E> ::fidl_next::Encode<crate::wire::ConfigValue<'static>, ___E> for ConfigValue
2535    where
2536        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
2537        ___E: ::fidl_next::Encoder,
2538    {
2539        #[inline]
2540        fn encode(
2541            self,
2542            encoder: &mut ___E,
2543            out: &mut ::core::mem::MaybeUninit<crate::wire::ConfigValue<'static>>,
2544            _: (),
2545        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
2546            ::fidl_next::munge!(let crate::wire::ConfigValue { raw, _phantom: _ } = out);
2547
2548            match self {
2549                Self::Single(value) => ::fidl_next::wire::Union::encode_as::<
2550                    ___E,
2551                    crate::wire::ConfigSingleValue<'static>,
2552                >(value, 1, encoder, raw, ())?,
2553
2554                Self::Vector(value) => ::fidl_next::wire::Union::encode_as::<
2555                    ___E,
2556                    crate::wire::ConfigVectorValue<'static>,
2557                >(value, 2, encoder, raw, ())?,
2558
2559                Self::UnknownOrdinal_(ordinal) => {
2560                    return Err(::fidl_next::EncodeError::UnknownUnionOrdinal(ordinal as usize));
2561                }
2562            }
2563
2564            Ok(())
2565        }
2566    }
2567
2568    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::ConfigValue<'static>, ___E>
2569        for &'a ConfigValue
2570    where
2571        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
2572        ___E: ::fidl_next::Encoder,
2573    {
2574        #[inline]
2575        fn encode(
2576            self,
2577            encoder: &mut ___E,
2578            out: &mut ::core::mem::MaybeUninit<crate::wire::ConfigValue<'static>>,
2579            _: (),
2580        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
2581            ::fidl_next::munge!(let crate::wire::ConfigValue { raw, _phantom: _ } = out);
2582
2583            match self {
2584                ConfigValue::Single(value) => ::fidl_next::wire::Union::encode_as::<
2585                    ___E,
2586                    crate::wire::ConfigSingleValue<'static>,
2587                >(value, 1, encoder, raw, ())?,
2588
2589                ConfigValue::Vector(value) => ::fidl_next::wire::Union::encode_as::<
2590                    ___E,
2591                    crate::wire::ConfigVectorValue<'static>,
2592                >(value, 2, encoder, raw, ())?,
2593
2594                ConfigValue::UnknownOrdinal_(ordinal) => {
2595                    return Err(::fidl_next::EncodeError::UnknownUnionOrdinal(*ordinal as usize));
2596                }
2597            }
2598
2599            Ok(())
2600        }
2601    }
2602
2603    unsafe impl<___E> ::fidl_next::EncodeOption<crate::wire_optional::ConfigValue<'static>, ___E>
2604        for ConfigValue
2605    where
2606        ___E: ?Sized,
2607        ConfigValue: ::fidl_next::Encode<crate::wire::ConfigValue<'static>, ___E>,
2608    {
2609        #[inline]
2610        fn encode_option(
2611            this: ::core::option::Option<Self>,
2612            encoder: &mut ___E,
2613            out: &mut ::core::mem::MaybeUninit<crate::wire_optional::ConfigValue<'static>>,
2614            _: (),
2615        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
2616            ::fidl_next::munge!(let crate::wire_optional::ConfigValue { raw, _phantom: _ } = &mut *out);
2617
2618            if let Some(inner) = this {
2619                let value_out = unsafe { &mut *out.as_mut_ptr().cast() };
2620                ::fidl_next::Encode::encode(inner, encoder, value_out, ())?;
2621            } else {
2622                ::fidl_next::wire::Union::encode_absent(raw);
2623            }
2624
2625            Ok(())
2626        }
2627    }
2628
2629    unsafe impl<'a, ___E>
2630        ::fidl_next::EncodeOption<crate::wire_optional::ConfigValue<'static>, ___E>
2631        for &'a ConfigValue
2632    where
2633        ___E: ?Sized,
2634        &'a ConfigValue: ::fidl_next::Encode<crate::wire::ConfigValue<'static>, ___E>,
2635    {
2636        #[inline]
2637        fn encode_option(
2638            this: ::core::option::Option<Self>,
2639            encoder: &mut ___E,
2640            out: &mut ::core::mem::MaybeUninit<crate::wire_optional::ConfigValue<'static>>,
2641            _: (),
2642        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
2643            ::fidl_next::munge!(let crate::wire_optional::ConfigValue { raw, _phantom: _ } = &mut *out);
2644
2645            if let Some(inner) = this {
2646                let value_out = unsafe { &mut *out.as_mut_ptr().cast() };
2647                ::fidl_next::Encode::encode(inner, encoder, value_out, ())?;
2648            } else {
2649                ::fidl_next::wire::Union::encode_absent(raw);
2650            }
2651
2652            Ok(())
2653        }
2654    }
2655
2656    impl<'de> ::fidl_next::FromWire<crate::wire::ConfigValue<'de>> for ConfigValue {
2657        #[inline]
2658        fn from_wire(wire: crate::wire::ConfigValue<'de>) -> Self {
2659            let wire = ::core::mem::ManuallyDrop::new(wire);
2660            match wire.raw.ordinal() {
2661                1 => Self::Single(::fidl_next::FromWire::from_wire(unsafe {
2662                    wire.raw.get().read_unchecked::<crate::wire::ConfigSingleValue<'de>>()
2663                })),
2664
2665                2 => Self::Vector(::fidl_next::FromWire::from_wire(unsafe {
2666                    wire.raw.get().read_unchecked::<crate::wire::ConfigVectorValue<'de>>()
2667                })),
2668
2669                ord => return Self::UnknownOrdinal_(ord as u64),
2670            }
2671        }
2672    }
2673
2674    impl<'de> ::fidl_next::FromWireRef<crate::wire::ConfigValue<'de>> for ConfigValue {
2675        #[inline]
2676        fn from_wire_ref(wire: &crate::wire::ConfigValue<'de>) -> Self {
2677            match wire.raw.ordinal() {
2678                1 => Self::Single(::fidl_next::FromWireRef::from_wire_ref(unsafe {
2679                    wire.raw.get().deref_unchecked::<crate::wire::ConfigSingleValue<'de>>()
2680                })),
2681
2682                2 => Self::Vector(::fidl_next::FromWireRef::from_wire_ref(unsafe {
2683                    wire.raw.get().deref_unchecked::<crate::wire::ConfigVectorValue<'de>>()
2684                })),
2685
2686                ord => return Self::UnknownOrdinal_(ord as u64),
2687            }
2688        }
2689    }
2690
2691    impl<'de> ::fidl_next::FromWireOption<crate::wire_optional::ConfigValue<'de>> for ConfigValue {
2692        #[inline]
2693        fn from_wire_option(
2694            wire: crate::wire_optional::ConfigValue<'de>,
2695        ) -> ::core::option::Option<Self> {
2696            if let Some(inner) = wire.into_option() {
2697                Some(::fidl_next::FromWire::from_wire(inner))
2698            } else {
2699                None
2700            }
2701        }
2702    }
2703
2704    impl<'de> ::fidl_next::FromWireOption<crate::wire_optional::ConfigValue<'de>> for Box<ConfigValue> {
2705        #[inline]
2706        fn from_wire_option(
2707            wire: crate::wire_optional::ConfigValue<'de>,
2708        ) -> ::core::option::Option<Self> {
2709            <
2710            ConfigValue as ::fidl_next::FromWireOption<crate::wire_optional::ConfigValue<'de>>
2711        >::from_wire_option(wire).map(Box::new)
2712        }
2713    }
2714
2715    impl<'de> ::fidl_next::FromWireOptionRef<crate::wire_optional::ConfigValue<'de>>
2716        for Box<ConfigValue>
2717    {
2718        #[inline]
2719        fn from_wire_option_ref(
2720            wire: &crate::wire_optional::ConfigValue<'de>,
2721        ) -> ::core::option::Option<Self> {
2722            if let Some(inner) = wire.as_ref() {
2723                Some(Box::new(::fidl_next::FromWireRef::from_wire_ref(inner)))
2724            } else {
2725                None
2726            }
2727        }
2728    }
2729
2730    #[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"]
2731    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
2732    pub struct Configuration {
2733        pub name: ::core::option::Option<::std::string::String>,
2734
2735        pub value: ::core::option::Option<crate::natural::ConfigValue>,
2736    }
2737
2738    impl Configuration {
2739        fn __max_ordinal(&self) -> usize {
2740            if self.value.is_some() {
2741                return 2;
2742            }
2743
2744            if self.name.is_some() {
2745                return 1;
2746            }
2747
2748            0
2749        }
2750    }
2751
2752    unsafe impl<___E> ::fidl_next::Encode<crate::wire::Configuration<'static>, ___E> for Configuration
2753    where
2754        ___E: ::fidl_next::Encoder + ?Sized,
2755    {
2756        #[inline]
2757        fn encode(
2758            mut self,
2759            encoder: &mut ___E,
2760            out: &mut ::core::mem::MaybeUninit<crate::wire::Configuration<'static>>,
2761            _: (),
2762        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
2763            ::fidl_next::munge!(let crate::wire::Configuration { table } = out);
2764
2765            let max_ord = self.__max_ordinal();
2766
2767            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
2768            ::fidl_next::Wire::zero_padding(&mut out);
2769
2770            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
2771                ::fidl_next::wire::Envelope,
2772            >(encoder, max_ord);
2773
2774            for i in 1..=max_ord {
2775                match i {
2776                    2 => {
2777                        if let Some(value) = self.value.take() {
2778                            ::fidl_next::wire::Envelope::encode_value::<
2779                                crate::wire::ConfigValue<'static>,
2780                                ___E,
2781                            >(
2782                                value, preallocated.encoder, &mut out, ()
2783                            )?;
2784                        } else {
2785                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
2786                        }
2787                    }
2788
2789                    1 => {
2790                        if let Some(value) = self.name.take() {
2791                            ::fidl_next::wire::Envelope::encode_value::<
2792                                ::fidl_next::wire::String<'static>,
2793                                ___E,
2794                            >(
2795                                value, preallocated.encoder, &mut out, 100
2796                            )?;
2797                        } else {
2798                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
2799                        }
2800                    }
2801
2802                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
2803                }
2804                unsafe {
2805                    preallocated.write_next(out.assume_init_ref());
2806                }
2807            }
2808
2809            ::fidl_next::wire::Table::encode_len(table, max_ord);
2810
2811            Ok(())
2812        }
2813    }
2814
2815    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::Configuration<'static>, ___E>
2816        for &'a Configuration
2817    where
2818        ___E: ::fidl_next::Encoder + ?Sized,
2819    {
2820        #[inline]
2821        fn encode(
2822            self,
2823            encoder: &mut ___E,
2824            out: &mut ::core::mem::MaybeUninit<crate::wire::Configuration<'static>>,
2825            _: (),
2826        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
2827            ::fidl_next::munge!(let crate::wire::Configuration { table } = out);
2828
2829            let max_ord = self.__max_ordinal();
2830
2831            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
2832            ::fidl_next::Wire::zero_padding(&mut out);
2833
2834            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
2835                ::fidl_next::wire::Envelope,
2836            >(encoder, max_ord);
2837
2838            for i in 1..=max_ord {
2839                match i {
2840                    2 => {
2841                        if let Some(value) = &self.value {
2842                            ::fidl_next::wire::Envelope::encode_value::<
2843                                crate::wire::ConfigValue<'static>,
2844                                ___E,
2845                            >(
2846                                value, preallocated.encoder, &mut out, ()
2847                            )?;
2848                        } else {
2849                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
2850                        }
2851                    }
2852
2853                    1 => {
2854                        if let Some(value) = &self.name {
2855                            ::fidl_next::wire::Envelope::encode_value::<
2856                                ::fidl_next::wire::String<'static>,
2857                                ___E,
2858                            >(
2859                                value, preallocated.encoder, &mut out, 100
2860                            )?;
2861                        } else {
2862                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
2863                        }
2864                    }
2865
2866                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
2867                }
2868                unsafe {
2869                    preallocated.write_next(out.assume_init_ref());
2870                }
2871            }
2872
2873            ::fidl_next::wire::Table::encode_len(table, max_ord);
2874
2875            Ok(())
2876        }
2877    }
2878
2879    impl<'de> ::fidl_next::FromWire<crate::wire::Configuration<'de>> for Configuration {
2880        #[inline]
2881        fn from_wire(wire_: crate::wire::Configuration<'de>) -> Self {
2882            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
2883
2884            let name = wire_.table.get(1);
2885
2886            let value = wire_.table.get(2);
2887
2888            Self {
2889                name: name.map(|envelope| {
2890                    ::fidl_next::FromWire::from_wire(unsafe {
2891                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
2892                    })
2893                }),
2894
2895                value: value.map(|envelope| {
2896                    ::fidl_next::FromWire::from_wire(unsafe {
2897                        envelope.read_unchecked::<crate::wire::ConfigValue<'de>>()
2898                    })
2899                }),
2900            }
2901        }
2902    }
2903
2904    impl<'de> ::fidl_next::FromWireRef<crate::wire::Configuration<'de>> for Configuration {
2905        #[inline]
2906        fn from_wire_ref(wire: &crate::wire::Configuration<'de>) -> Self {
2907            Self {
2908                name: wire.table.get(1).map(|envelope| {
2909                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
2910                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
2911                    })
2912                }),
2913
2914                value: wire.table.get(2).map(|envelope| {
2915                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
2916                        envelope.deref_unchecked::<crate::wire::ConfigValue<'de>>()
2917                    })
2918                }),
2919            }
2920        }
2921    }
2922
2923    #[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"]
2924    pub type DictionaryPath = ::std::string::String;
2925
2926    #[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"]
2927    #[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
2928    #[repr(u32)]
2929    pub enum DeliveryType {
2930        Immediate = 0,
2931        OnReadable = 1,
2932        UnknownOrdinal_(u32) = 2,
2933    }
2934    impl ::std::convert::From<u32> for DeliveryType {
2935        fn from(value: u32) -> Self {
2936            match value {
2937                0 => Self::Immediate,
2938                1 => Self::OnReadable,
2939
2940                _ => Self::UnknownOrdinal_(value),
2941            }
2942        }
2943    }
2944
2945    impl ::std::convert::From<DeliveryType> for u32 {
2946        fn from(value: DeliveryType) -> Self {
2947            match value {
2948                DeliveryType::Immediate => 0,
2949                DeliveryType::OnReadable => 1,
2950
2951                DeliveryType::UnknownOrdinal_(value) => value,
2952            }
2953        }
2954    }
2955
2956    unsafe impl<___E> ::fidl_next::Encode<crate::wire::DeliveryType, ___E> for DeliveryType
2957    where
2958        ___E: ?Sized,
2959    {
2960        #[inline]
2961        fn encode(
2962            self,
2963            encoder: &mut ___E,
2964            out: &mut ::core::mem::MaybeUninit<crate::wire::DeliveryType>,
2965            _: (),
2966        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
2967            ::fidl_next::Encode::encode(&self, encoder, out, ())
2968        }
2969    }
2970
2971    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::DeliveryType, ___E> for &'a DeliveryType
2972    where
2973        ___E: ?Sized,
2974    {
2975        #[inline]
2976        fn encode(
2977            self,
2978            encoder: &mut ___E,
2979            out: &mut ::core::mem::MaybeUninit<crate::wire::DeliveryType>,
2980            _: (),
2981        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
2982            ::fidl_next::munge!(let crate::wire::DeliveryType { value } = out);
2983            let _ = value.write(::fidl_next::wire::Uint32::from(match *self {
2984                DeliveryType::Immediate => 0,
2985
2986                DeliveryType::OnReadable => 1,
2987
2988                DeliveryType::UnknownOrdinal_(value) => value,
2989            }));
2990
2991            Ok(())
2992        }
2993    }
2994
2995    impl ::core::convert::From<crate::wire::DeliveryType> for DeliveryType {
2996        fn from(wire: crate::wire::DeliveryType) -> Self {
2997            match u32::from(wire.value) {
2998                0 => Self::Immediate,
2999
3000                1 => Self::OnReadable,
3001
3002                value => Self::UnknownOrdinal_(value),
3003            }
3004        }
3005    }
3006
3007    impl ::fidl_next::FromWire<crate::wire::DeliveryType> for DeliveryType {
3008        #[inline]
3009        fn from_wire(wire: crate::wire::DeliveryType) -> Self {
3010            Self::from(wire)
3011        }
3012    }
3013
3014    impl ::fidl_next::FromWireRef<crate::wire::DeliveryType> for DeliveryType {
3015        #[inline]
3016        fn from_wire_ref(wire: &crate::wire::DeliveryType) -> Self {
3017            Self::from(*wire)
3018        }
3019    }
3020
3021    #[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"]
3022    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
3023    pub struct Protocol {
3024        pub name: ::core::option::Option<::std::string::String>,
3025
3026        pub source_path: ::core::option::Option<::std::string::String>,
3027
3028        pub delivery: ::core::option::Option<crate::natural::DeliveryType>,
3029    }
3030
3031    impl Protocol {
3032        fn __max_ordinal(&self) -> usize {
3033            if self.delivery.is_some() {
3034                return 3;
3035            }
3036
3037            if self.source_path.is_some() {
3038                return 2;
3039            }
3040
3041            if self.name.is_some() {
3042                return 1;
3043            }
3044
3045            0
3046        }
3047    }
3048
3049    unsafe impl<___E> ::fidl_next::Encode<crate::wire::Protocol<'static>, ___E> for Protocol
3050    where
3051        ___E: ::fidl_next::Encoder + ?Sized,
3052    {
3053        #[inline]
3054        fn encode(
3055            mut self,
3056            encoder: &mut ___E,
3057            out: &mut ::core::mem::MaybeUninit<crate::wire::Protocol<'static>>,
3058            _: (),
3059        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
3060            ::fidl_next::munge!(let crate::wire::Protocol { table } = out);
3061
3062            let max_ord = self.__max_ordinal();
3063
3064            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
3065            ::fidl_next::Wire::zero_padding(&mut out);
3066
3067            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
3068                ::fidl_next::wire::Envelope,
3069            >(encoder, max_ord);
3070
3071            for i in 1..=max_ord {
3072                match i {
3073                    3 => {
3074                        if let Some(value) = self.delivery.take() {
3075                            ::fidl_next::wire::Envelope::encode_value::<
3076                                crate::wire::DeliveryType,
3077                                ___E,
3078                            >(
3079                                value, preallocated.encoder, &mut out, ()
3080                            )?;
3081                        } else {
3082                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
3083                        }
3084                    }
3085
3086                    2 => {
3087                        if let Some(value) = self.source_path.take() {
3088                            ::fidl_next::wire::Envelope::encode_value::<
3089                                ::fidl_next::wire::String<'static>,
3090                                ___E,
3091                            >(
3092                                value, preallocated.encoder, &mut out, 1024
3093                            )?;
3094                        } else {
3095                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
3096                        }
3097                    }
3098
3099                    1 => {
3100                        if let Some(value) = self.name.take() {
3101                            ::fidl_next::wire::Envelope::encode_value::<
3102                                ::fidl_next::wire::String<'static>,
3103                                ___E,
3104                            >(
3105                                value, preallocated.encoder, &mut out, 100
3106                            )?;
3107                        } else {
3108                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
3109                        }
3110                    }
3111
3112                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
3113                }
3114                unsafe {
3115                    preallocated.write_next(out.assume_init_ref());
3116                }
3117            }
3118
3119            ::fidl_next::wire::Table::encode_len(table, max_ord);
3120
3121            Ok(())
3122        }
3123    }
3124
3125    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::Protocol<'static>, ___E> for &'a Protocol
3126    where
3127        ___E: ::fidl_next::Encoder + ?Sized,
3128    {
3129        #[inline]
3130        fn encode(
3131            self,
3132            encoder: &mut ___E,
3133            out: &mut ::core::mem::MaybeUninit<crate::wire::Protocol<'static>>,
3134            _: (),
3135        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
3136            ::fidl_next::munge!(let crate::wire::Protocol { table } = out);
3137
3138            let max_ord = self.__max_ordinal();
3139
3140            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
3141            ::fidl_next::Wire::zero_padding(&mut out);
3142
3143            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
3144                ::fidl_next::wire::Envelope,
3145            >(encoder, max_ord);
3146
3147            for i in 1..=max_ord {
3148                match i {
3149                    3 => {
3150                        if let Some(value) = &self.delivery {
3151                            ::fidl_next::wire::Envelope::encode_value::<
3152                                crate::wire::DeliveryType,
3153                                ___E,
3154                            >(
3155                                value, preallocated.encoder, &mut out, ()
3156                            )?;
3157                        } else {
3158                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
3159                        }
3160                    }
3161
3162                    2 => {
3163                        if let Some(value) = &self.source_path {
3164                            ::fidl_next::wire::Envelope::encode_value::<
3165                                ::fidl_next::wire::String<'static>,
3166                                ___E,
3167                            >(
3168                                value, preallocated.encoder, &mut out, 1024
3169                            )?;
3170                        } else {
3171                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
3172                        }
3173                    }
3174
3175                    1 => {
3176                        if let Some(value) = &self.name {
3177                            ::fidl_next::wire::Envelope::encode_value::<
3178                                ::fidl_next::wire::String<'static>,
3179                                ___E,
3180                            >(
3181                                value, preallocated.encoder, &mut out, 100
3182                            )?;
3183                        } else {
3184                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
3185                        }
3186                    }
3187
3188                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
3189                }
3190                unsafe {
3191                    preallocated.write_next(out.assume_init_ref());
3192                }
3193            }
3194
3195            ::fidl_next::wire::Table::encode_len(table, max_ord);
3196
3197            Ok(())
3198        }
3199    }
3200
3201    impl<'de> ::fidl_next::FromWire<crate::wire::Protocol<'de>> for Protocol {
3202        #[inline]
3203        fn from_wire(wire_: crate::wire::Protocol<'de>) -> Self {
3204            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
3205
3206            let name = wire_.table.get(1);
3207
3208            let source_path = wire_.table.get(2);
3209
3210            let delivery = wire_.table.get(3);
3211
3212            Self {
3213                name: name.map(|envelope| {
3214                    ::fidl_next::FromWire::from_wire(unsafe {
3215                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
3216                    })
3217                }),
3218
3219                source_path: source_path.map(|envelope| {
3220                    ::fidl_next::FromWire::from_wire(unsafe {
3221                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
3222                    })
3223                }),
3224
3225                delivery: delivery.map(|envelope| {
3226                    ::fidl_next::FromWire::from_wire(unsafe {
3227                        envelope.read_unchecked::<crate::wire::DeliveryType>()
3228                    })
3229                }),
3230            }
3231        }
3232    }
3233
3234    impl<'de> ::fidl_next::FromWireRef<crate::wire::Protocol<'de>> for Protocol {
3235        #[inline]
3236        fn from_wire_ref(wire: &crate::wire::Protocol<'de>) -> Self {
3237            Self {
3238                name: wire.table.get(1).map(|envelope| {
3239                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
3240                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
3241                    })
3242                }),
3243
3244                source_path: wire.table.get(2).map(|envelope| {
3245                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
3246                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
3247                    })
3248                }),
3249
3250                delivery: wire.table.get(3).map(|envelope| {
3251                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
3252                        envelope.deref_unchecked::<crate::wire::DeliveryType>()
3253                    })
3254                }),
3255            }
3256        }
3257    }
3258
3259    #[doc = " A reference to the environment.\n"]
3260    pub type EnvironmentRef = ();
3261
3262    #[doc = " A reference to a capability source or destination relative to this\n component.\n"]
3263    #[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
3264    pub enum Ref {
3265        Parent(crate::natural::ParentRef),
3266
3267        Self_(crate::natural::SelfRef),
3268
3269        Child(crate::natural::ChildRef),
3270
3271        Collection(crate::natural::CollectionRef),
3272
3273        Framework(crate::natural::FrameworkRef),
3274
3275        Capability(crate::natural::CapabilityRef),
3276
3277        Debug(crate::natural::DebugRef),
3278
3279        VoidType(crate::natural::VoidRef),
3280
3281        Environment(crate::natural::EnvironmentRef),
3282
3283        UnknownOrdinal_(u64),
3284    }
3285
3286    impl Ref {
3287        pub fn is_unknown(&self) -> bool {
3288            #[allow(unreachable_patterns)]
3289            match self {
3290                Self::UnknownOrdinal_(_) => true,
3291                _ => false,
3292            }
3293        }
3294    }
3295
3296    unsafe impl<___E> ::fidl_next::Encode<crate::wire::Ref<'static>, ___E> for Ref
3297    where
3298        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
3299        ___E: ::fidl_next::Encoder,
3300    {
3301        #[inline]
3302        fn encode(
3303            self,
3304            encoder: &mut ___E,
3305            out: &mut ::core::mem::MaybeUninit<crate::wire::Ref<'static>>,
3306            _: (),
3307        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
3308            ::fidl_next::munge!(let crate::wire::Ref { raw, _phantom: _ } = out);
3309
3310            match self {
3311                Self::Parent(value) => ::fidl_next::wire::Union::encode_as::<
3312                    ___E,
3313                    crate::wire::ParentRef,
3314                >(value, 1, encoder, raw, ())?,
3315
3316                Self::Self_(value) => ::fidl_next::wire::Union::encode_as::<
3317                    ___E,
3318                    crate::wire::SelfRef,
3319                >(value, 2, encoder, raw, ())?,
3320
3321                Self::Child(value) => ::fidl_next::wire::Union::encode_as::<
3322                    ___E,
3323                    crate::wire::ChildRef<'static>,
3324                >(value, 3, encoder, raw, ())?,
3325
3326                Self::Collection(value) => ::fidl_next::wire::Union::encode_as::<
3327                    ___E,
3328                    crate::wire::CollectionRef<'static>,
3329                >(value, 4, encoder, raw, ())?,
3330
3331                Self::Framework(value) => ::fidl_next::wire::Union::encode_as::<
3332                    ___E,
3333                    crate::wire::FrameworkRef,
3334                >(value, 5, encoder, raw, ())?,
3335
3336                Self::Capability(value) => ::fidl_next::wire::Union::encode_as::<
3337                    ___E,
3338                    crate::wire::CapabilityRef<'static>,
3339                >(value, 6, encoder, raw, ())?,
3340
3341                Self::Debug(value) => ::fidl_next::wire::Union::encode_as::<
3342                    ___E,
3343                    crate::wire::DebugRef,
3344                >(value, 7, encoder, raw, ())?,
3345
3346                Self::VoidType(value) => ::fidl_next::wire::Union::encode_as::<
3347                    ___E,
3348                    crate::wire::VoidRef,
3349                >(value, 8, encoder, raw, ())?,
3350
3351                Self::Environment(value) => ::fidl_next::wire::Union::encode_as::<
3352                    ___E,
3353                    crate::wire::EnvironmentRef,
3354                >(value, 9, encoder, raw, ())?,
3355
3356                Self::UnknownOrdinal_(ordinal) => {
3357                    return Err(::fidl_next::EncodeError::UnknownUnionOrdinal(ordinal as usize));
3358                }
3359            }
3360
3361            Ok(())
3362        }
3363    }
3364
3365    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::Ref<'static>, ___E> for &'a Ref
3366    where
3367        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
3368        ___E: ::fidl_next::Encoder,
3369    {
3370        #[inline]
3371        fn encode(
3372            self,
3373            encoder: &mut ___E,
3374            out: &mut ::core::mem::MaybeUninit<crate::wire::Ref<'static>>,
3375            _: (),
3376        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
3377            ::fidl_next::munge!(let crate::wire::Ref { raw, _phantom: _ } = out);
3378
3379            match self {
3380                Ref::Parent(value) => ::fidl_next::wire::Union::encode_as::<
3381                    ___E,
3382                    crate::wire::ParentRef,
3383                >(value, 1, encoder, raw, ())?,
3384
3385                Ref::Self_(value) => ::fidl_next::wire::Union::encode_as::<
3386                    ___E,
3387                    crate::wire::SelfRef,
3388                >(value, 2, encoder, raw, ())?,
3389
3390                Ref::Child(value) => ::fidl_next::wire::Union::encode_as::<
3391                    ___E,
3392                    crate::wire::ChildRef<'static>,
3393                >(value, 3, encoder, raw, ())?,
3394
3395                Ref::Collection(value) => ::fidl_next::wire::Union::encode_as::<
3396                    ___E,
3397                    crate::wire::CollectionRef<'static>,
3398                >(value, 4, encoder, raw, ())?,
3399
3400                Ref::Framework(value) => ::fidl_next::wire::Union::encode_as::<
3401                    ___E,
3402                    crate::wire::FrameworkRef,
3403                >(value, 5, encoder, raw, ())?,
3404
3405                Ref::Capability(value) => ::fidl_next::wire::Union::encode_as::<
3406                    ___E,
3407                    crate::wire::CapabilityRef<'static>,
3408                >(value, 6, encoder, raw, ())?,
3409
3410                Ref::Debug(value) => ::fidl_next::wire::Union::encode_as::<
3411                    ___E,
3412                    crate::wire::DebugRef,
3413                >(value, 7, encoder, raw, ())?,
3414
3415                Ref::VoidType(value) => ::fidl_next::wire::Union::encode_as::<
3416                    ___E,
3417                    crate::wire::VoidRef,
3418                >(value, 8, encoder, raw, ())?,
3419
3420                Ref::Environment(value) => ::fidl_next::wire::Union::encode_as::<
3421                    ___E,
3422                    crate::wire::EnvironmentRef,
3423                >(value, 9, encoder, raw, ())?,
3424
3425                Ref::UnknownOrdinal_(ordinal) => {
3426                    return Err(::fidl_next::EncodeError::UnknownUnionOrdinal(*ordinal as usize));
3427                }
3428            }
3429
3430            Ok(())
3431        }
3432    }
3433
3434    unsafe impl<___E> ::fidl_next::EncodeOption<crate::wire_optional::Ref<'static>, ___E> for Ref
3435    where
3436        ___E: ?Sized,
3437        Ref: ::fidl_next::Encode<crate::wire::Ref<'static>, ___E>,
3438    {
3439        #[inline]
3440        fn encode_option(
3441            this: ::core::option::Option<Self>,
3442            encoder: &mut ___E,
3443            out: &mut ::core::mem::MaybeUninit<crate::wire_optional::Ref<'static>>,
3444            _: (),
3445        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
3446            ::fidl_next::munge!(let crate::wire_optional::Ref { raw, _phantom: _ } = &mut *out);
3447
3448            if let Some(inner) = this {
3449                let value_out = unsafe { &mut *out.as_mut_ptr().cast() };
3450                ::fidl_next::Encode::encode(inner, encoder, value_out, ())?;
3451            } else {
3452                ::fidl_next::wire::Union::encode_absent(raw);
3453            }
3454
3455            Ok(())
3456        }
3457    }
3458
3459    unsafe impl<'a, ___E> ::fidl_next::EncodeOption<crate::wire_optional::Ref<'static>, ___E>
3460        for &'a Ref
3461    where
3462        ___E: ?Sized,
3463        &'a Ref: ::fidl_next::Encode<crate::wire::Ref<'static>, ___E>,
3464    {
3465        #[inline]
3466        fn encode_option(
3467            this: ::core::option::Option<Self>,
3468            encoder: &mut ___E,
3469            out: &mut ::core::mem::MaybeUninit<crate::wire_optional::Ref<'static>>,
3470            _: (),
3471        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
3472            ::fidl_next::munge!(let crate::wire_optional::Ref { raw, _phantom: _ } = &mut *out);
3473
3474            if let Some(inner) = this {
3475                let value_out = unsafe { &mut *out.as_mut_ptr().cast() };
3476                ::fidl_next::Encode::encode(inner, encoder, value_out, ())?;
3477            } else {
3478                ::fidl_next::wire::Union::encode_absent(raw);
3479            }
3480
3481            Ok(())
3482        }
3483    }
3484
3485    impl<'de> ::fidl_next::FromWire<crate::wire::Ref<'de>> for Ref {
3486        #[inline]
3487        fn from_wire(wire: crate::wire::Ref<'de>) -> Self {
3488            let wire = ::core::mem::ManuallyDrop::new(wire);
3489            match wire.raw.ordinal() {
3490                1 => Self::Parent(::fidl_next::FromWire::from_wire(unsafe {
3491                    wire.raw.get().read_unchecked::<crate::wire::ParentRef>()
3492                })),
3493
3494                2 => Self::Self_(::fidl_next::FromWire::from_wire(unsafe {
3495                    wire.raw.get().read_unchecked::<crate::wire::SelfRef>()
3496                })),
3497
3498                3 => Self::Child(::fidl_next::FromWire::from_wire(unsafe {
3499                    wire.raw.get().read_unchecked::<crate::wire::ChildRef<'de>>()
3500                })),
3501
3502                4 => Self::Collection(::fidl_next::FromWire::from_wire(unsafe {
3503                    wire.raw.get().read_unchecked::<crate::wire::CollectionRef<'de>>()
3504                })),
3505
3506                5 => Self::Framework(::fidl_next::FromWire::from_wire(unsafe {
3507                    wire.raw.get().read_unchecked::<crate::wire::FrameworkRef>()
3508                })),
3509
3510                6 => Self::Capability(::fidl_next::FromWire::from_wire(unsafe {
3511                    wire.raw.get().read_unchecked::<crate::wire::CapabilityRef<'de>>()
3512                })),
3513
3514                7 => Self::Debug(::fidl_next::FromWire::from_wire(unsafe {
3515                    wire.raw.get().read_unchecked::<crate::wire::DebugRef>()
3516                })),
3517
3518                8 => Self::VoidType(::fidl_next::FromWire::from_wire(unsafe {
3519                    wire.raw.get().read_unchecked::<crate::wire::VoidRef>()
3520                })),
3521
3522                9 => Self::Environment(::fidl_next::FromWire::from_wire(unsafe {
3523                    wire.raw.get().read_unchecked::<crate::wire::EnvironmentRef>()
3524                })),
3525
3526                ord => return Self::UnknownOrdinal_(ord as u64),
3527            }
3528        }
3529    }
3530
3531    impl<'de> ::fidl_next::FromWireRef<crate::wire::Ref<'de>> for Ref {
3532        #[inline]
3533        fn from_wire_ref(wire: &crate::wire::Ref<'de>) -> Self {
3534            match wire.raw.ordinal() {
3535                1 => Self::Parent(::fidl_next::FromWireRef::from_wire_ref(unsafe {
3536                    wire.raw.get().deref_unchecked::<crate::wire::ParentRef>()
3537                })),
3538
3539                2 => Self::Self_(::fidl_next::FromWireRef::from_wire_ref(unsafe {
3540                    wire.raw.get().deref_unchecked::<crate::wire::SelfRef>()
3541                })),
3542
3543                3 => Self::Child(::fidl_next::FromWireRef::from_wire_ref(unsafe {
3544                    wire.raw.get().deref_unchecked::<crate::wire::ChildRef<'de>>()
3545                })),
3546
3547                4 => Self::Collection(::fidl_next::FromWireRef::from_wire_ref(unsafe {
3548                    wire.raw.get().deref_unchecked::<crate::wire::CollectionRef<'de>>()
3549                })),
3550
3551                5 => Self::Framework(::fidl_next::FromWireRef::from_wire_ref(unsafe {
3552                    wire.raw.get().deref_unchecked::<crate::wire::FrameworkRef>()
3553                })),
3554
3555                6 => Self::Capability(::fidl_next::FromWireRef::from_wire_ref(unsafe {
3556                    wire.raw.get().deref_unchecked::<crate::wire::CapabilityRef<'de>>()
3557                })),
3558
3559                7 => Self::Debug(::fidl_next::FromWireRef::from_wire_ref(unsafe {
3560                    wire.raw.get().deref_unchecked::<crate::wire::DebugRef>()
3561                })),
3562
3563                8 => Self::VoidType(::fidl_next::FromWireRef::from_wire_ref(unsafe {
3564                    wire.raw.get().deref_unchecked::<crate::wire::VoidRef>()
3565                })),
3566
3567                9 => Self::Environment(::fidl_next::FromWireRef::from_wire_ref(unsafe {
3568                    wire.raw.get().deref_unchecked::<crate::wire::EnvironmentRef>()
3569                })),
3570
3571                ord => return Self::UnknownOrdinal_(ord as u64),
3572            }
3573        }
3574    }
3575
3576    impl<'de> ::fidl_next::FromWireOption<crate::wire_optional::Ref<'de>> for Ref {
3577        #[inline]
3578        fn from_wire_option(wire: crate::wire_optional::Ref<'de>) -> ::core::option::Option<Self> {
3579            if let Some(inner) = wire.into_option() {
3580                Some(::fidl_next::FromWire::from_wire(inner))
3581            } else {
3582                None
3583            }
3584        }
3585    }
3586
3587    impl<'de> ::fidl_next::FromWireOption<crate::wire_optional::Ref<'de>> for Box<Ref> {
3588        #[inline]
3589        fn from_wire_option(wire: crate::wire_optional::Ref<'de>) -> ::core::option::Option<Self> {
3590            <Ref as ::fidl_next::FromWireOption<crate::wire_optional::Ref<'de>>>::from_wire_option(
3591                wire,
3592            )
3593            .map(Box::new)
3594        }
3595    }
3596
3597    impl<'de> ::fidl_next::FromWireOptionRef<crate::wire_optional::Ref<'de>> for Box<Ref> {
3598        #[inline]
3599        fn from_wire_option_ref(
3600            wire: &crate::wire_optional::Ref<'de>,
3601        ) -> ::core::option::Option<Self> {
3602            if let Some(inner) = wire.as_ref() {
3603                Some(Box::new(::fidl_next::FromWireRef::from_wire_ref(inner)))
3604            } else {
3605                None
3606            }
3607        }
3608    }
3609
3610    #[doc = " Declares a storage capability backed by a directory from which data, cache,\n or meta storage can be offered.\n"]
3611    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
3612    pub struct Storage {
3613        pub name: ::core::option::Option<::std::string::String>,
3614
3615        pub source: ::core::option::Option<crate::natural::Ref>,
3616
3617        pub backing_dir: ::core::option::Option<::std::string::String>,
3618
3619        pub subdir: ::core::option::Option<::std::string::String>,
3620
3621        pub storage_id: ::core::option::Option<crate::natural::StorageId>,
3622    }
3623
3624    impl Storage {
3625        fn __max_ordinal(&self) -> usize {
3626            if self.storage_id.is_some() {
3627                return 5;
3628            }
3629
3630            if self.subdir.is_some() {
3631                return 4;
3632            }
3633
3634            if self.backing_dir.is_some() {
3635                return 3;
3636            }
3637
3638            if self.source.is_some() {
3639                return 2;
3640            }
3641
3642            if self.name.is_some() {
3643                return 1;
3644            }
3645
3646            0
3647        }
3648    }
3649
3650    unsafe impl<___E> ::fidl_next::Encode<crate::wire::Storage<'static>, ___E> for Storage
3651    where
3652        ___E: ::fidl_next::Encoder + ?Sized,
3653    {
3654        #[inline]
3655        fn encode(
3656            mut self,
3657            encoder: &mut ___E,
3658            out: &mut ::core::mem::MaybeUninit<crate::wire::Storage<'static>>,
3659            _: (),
3660        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
3661            ::fidl_next::munge!(let crate::wire::Storage { table } = out);
3662
3663            let max_ord = self.__max_ordinal();
3664
3665            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
3666            ::fidl_next::Wire::zero_padding(&mut out);
3667
3668            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
3669                ::fidl_next::wire::Envelope,
3670            >(encoder, max_ord);
3671
3672            for i in 1..=max_ord {
3673                match i {
3674                    5 => {
3675                        if let Some(value) = self.storage_id.take() {
3676                            ::fidl_next::wire::Envelope::encode_value::<
3677                                crate::wire::StorageId,
3678                                ___E,
3679                            >(
3680                                value, preallocated.encoder, &mut out, ()
3681                            )?;
3682                        } else {
3683                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
3684                        }
3685                    }
3686
3687                    4 => {
3688                        if let Some(value) = self.subdir.take() {
3689                            ::fidl_next::wire::Envelope::encode_value::<
3690                                ::fidl_next::wire::String<'static>,
3691                                ___E,
3692                            >(
3693                                value, preallocated.encoder, &mut out, 1024
3694                            )?;
3695                        } else {
3696                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
3697                        }
3698                    }
3699
3700                    3 => {
3701                        if let Some(value) = self.backing_dir.take() {
3702                            ::fidl_next::wire::Envelope::encode_value::<
3703                                ::fidl_next::wire::String<'static>,
3704                                ___E,
3705                            >(
3706                                value, preallocated.encoder, &mut out, 100
3707                            )?;
3708                        } else {
3709                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
3710                        }
3711                    }
3712
3713                    2 => {
3714                        if let Some(value) = self.source.take() {
3715                            ::fidl_next::wire::Envelope::encode_value::<
3716                                crate::wire::Ref<'static>,
3717                                ___E,
3718                            >(
3719                                value, preallocated.encoder, &mut out, ()
3720                            )?;
3721                        } else {
3722                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
3723                        }
3724                    }
3725
3726                    1 => {
3727                        if let Some(value) = self.name.take() {
3728                            ::fidl_next::wire::Envelope::encode_value::<
3729                                ::fidl_next::wire::String<'static>,
3730                                ___E,
3731                            >(
3732                                value, preallocated.encoder, &mut out, 100
3733                            )?;
3734                        } else {
3735                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
3736                        }
3737                    }
3738
3739                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
3740                }
3741                unsafe {
3742                    preallocated.write_next(out.assume_init_ref());
3743                }
3744            }
3745
3746            ::fidl_next::wire::Table::encode_len(table, max_ord);
3747
3748            Ok(())
3749        }
3750    }
3751
3752    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::Storage<'static>, ___E> for &'a Storage
3753    where
3754        ___E: ::fidl_next::Encoder + ?Sized,
3755    {
3756        #[inline]
3757        fn encode(
3758            self,
3759            encoder: &mut ___E,
3760            out: &mut ::core::mem::MaybeUninit<crate::wire::Storage<'static>>,
3761            _: (),
3762        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
3763            ::fidl_next::munge!(let crate::wire::Storage { table } = out);
3764
3765            let max_ord = self.__max_ordinal();
3766
3767            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
3768            ::fidl_next::Wire::zero_padding(&mut out);
3769
3770            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
3771                ::fidl_next::wire::Envelope,
3772            >(encoder, max_ord);
3773
3774            for i in 1..=max_ord {
3775                match i {
3776                    5 => {
3777                        if let Some(value) = &self.storage_id {
3778                            ::fidl_next::wire::Envelope::encode_value::<
3779                                crate::wire::StorageId,
3780                                ___E,
3781                            >(
3782                                value, preallocated.encoder, &mut out, ()
3783                            )?;
3784                        } else {
3785                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
3786                        }
3787                    }
3788
3789                    4 => {
3790                        if let Some(value) = &self.subdir {
3791                            ::fidl_next::wire::Envelope::encode_value::<
3792                                ::fidl_next::wire::String<'static>,
3793                                ___E,
3794                            >(
3795                                value, preallocated.encoder, &mut out, 1024
3796                            )?;
3797                        } else {
3798                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
3799                        }
3800                    }
3801
3802                    3 => {
3803                        if let Some(value) = &self.backing_dir {
3804                            ::fidl_next::wire::Envelope::encode_value::<
3805                                ::fidl_next::wire::String<'static>,
3806                                ___E,
3807                            >(
3808                                value, preallocated.encoder, &mut out, 100
3809                            )?;
3810                        } else {
3811                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
3812                        }
3813                    }
3814
3815                    2 => {
3816                        if let Some(value) = &self.source {
3817                            ::fidl_next::wire::Envelope::encode_value::<
3818                                crate::wire::Ref<'static>,
3819                                ___E,
3820                            >(
3821                                value, preallocated.encoder, &mut out, ()
3822                            )?;
3823                        } else {
3824                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
3825                        }
3826                    }
3827
3828                    1 => {
3829                        if let Some(value) = &self.name {
3830                            ::fidl_next::wire::Envelope::encode_value::<
3831                                ::fidl_next::wire::String<'static>,
3832                                ___E,
3833                            >(
3834                                value, preallocated.encoder, &mut out, 100
3835                            )?;
3836                        } else {
3837                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
3838                        }
3839                    }
3840
3841                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
3842                }
3843                unsafe {
3844                    preallocated.write_next(out.assume_init_ref());
3845                }
3846            }
3847
3848            ::fidl_next::wire::Table::encode_len(table, max_ord);
3849
3850            Ok(())
3851        }
3852    }
3853
3854    impl<'de> ::fidl_next::FromWire<crate::wire::Storage<'de>> for Storage {
3855        #[inline]
3856        fn from_wire(wire_: crate::wire::Storage<'de>) -> Self {
3857            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
3858
3859            let name = wire_.table.get(1);
3860
3861            let source = wire_.table.get(2);
3862
3863            let backing_dir = wire_.table.get(3);
3864
3865            let subdir = wire_.table.get(4);
3866
3867            let storage_id = wire_.table.get(5);
3868
3869            Self {
3870                name: name.map(|envelope| {
3871                    ::fidl_next::FromWire::from_wire(unsafe {
3872                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
3873                    })
3874                }),
3875
3876                source: source.map(|envelope| {
3877                    ::fidl_next::FromWire::from_wire(unsafe {
3878                        envelope.read_unchecked::<crate::wire::Ref<'de>>()
3879                    })
3880                }),
3881
3882                backing_dir: backing_dir.map(|envelope| {
3883                    ::fidl_next::FromWire::from_wire(unsafe {
3884                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
3885                    })
3886                }),
3887
3888                subdir: subdir.map(|envelope| {
3889                    ::fidl_next::FromWire::from_wire(unsafe {
3890                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
3891                    })
3892                }),
3893
3894                storage_id: storage_id.map(|envelope| {
3895                    ::fidl_next::FromWire::from_wire(unsafe {
3896                        envelope.read_unchecked::<crate::wire::StorageId>()
3897                    })
3898                }),
3899            }
3900        }
3901    }
3902
3903    impl<'de> ::fidl_next::FromWireRef<crate::wire::Storage<'de>> for Storage {
3904        #[inline]
3905        fn from_wire_ref(wire: &crate::wire::Storage<'de>) -> Self {
3906            Self {
3907                name: wire.table.get(1).map(|envelope| {
3908                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
3909                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
3910                    })
3911                }),
3912
3913                source: wire.table.get(2).map(|envelope| {
3914                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
3915                        envelope.deref_unchecked::<crate::wire::Ref<'de>>()
3916                    })
3917                }),
3918
3919                backing_dir: wire.table.get(3).map(|envelope| {
3920                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
3921                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
3922                    })
3923                }),
3924
3925                subdir: wire.table.get(4).map(|envelope| {
3926                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
3927                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
3928                    })
3929                }),
3930
3931                storage_id: wire.table.get(5).map(|envelope| {
3932                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
3933                        envelope.deref_unchecked::<crate::wire::StorageId>()
3934                    })
3935                }),
3936            }
3937        }
3938    }
3939
3940    #[doc = " Declares a dictionary capability.\n"]
3941    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
3942    pub struct Dictionary {
3943        pub name: ::core::option::Option<::std::string::String>,
3944
3945        pub source: ::core::option::Option<crate::natural::Ref>,
3946
3947        pub source_dictionary: ::core::option::Option<::std::string::String>,
3948
3949        pub source_path: ::core::option::Option<::std::string::String>,
3950    }
3951
3952    impl Dictionary {
3953        fn __max_ordinal(&self) -> usize {
3954            if self.source_path.is_some() {
3955                return 4;
3956            }
3957
3958            if self.source_dictionary.is_some() {
3959                return 3;
3960            }
3961
3962            if self.source.is_some() {
3963                return 2;
3964            }
3965
3966            if self.name.is_some() {
3967                return 1;
3968            }
3969
3970            0
3971        }
3972    }
3973
3974    unsafe impl<___E> ::fidl_next::Encode<crate::wire::Dictionary<'static>, ___E> for Dictionary
3975    where
3976        ___E: ::fidl_next::Encoder + ?Sized,
3977    {
3978        #[inline]
3979        fn encode(
3980            mut self,
3981            encoder: &mut ___E,
3982            out: &mut ::core::mem::MaybeUninit<crate::wire::Dictionary<'static>>,
3983            _: (),
3984        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
3985            ::fidl_next::munge!(let crate::wire::Dictionary { table } = out);
3986
3987            let max_ord = self.__max_ordinal();
3988
3989            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
3990            ::fidl_next::Wire::zero_padding(&mut out);
3991
3992            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
3993                ::fidl_next::wire::Envelope,
3994            >(encoder, max_ord);
3995
3996            for i in 1..=max_ord {
3997                match i {
3998                    4 => {
3999                        if let Some(value) = self.source_path.take() {
4000                            ::fidl_next::wire::Envelope::encode_value::<
4001                                ::fidl_next::wire::String<'static>,
4002                                ___E,
4003                            >(
4004                                value, preallocated.encoder, &mut out, 1024
4005                            )?;
4006                        } else {
4007                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
4008                        }
4009                    }
4010
4011                    3 => {
4012                        if let Some(value) = self.source_dictionary.take() {
4013                            ::fidl_next::wire::Envelope::encode_value::<
4014                                ::fidl_next::wire::String<'static>,
4015                                ___E,
4016                            >(
4017                                value, preallocated.encoder, &mut out, 1024
4018                            )?;
4019                        } else {
4020                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
4021                        }
4022                    }
4023
4024                    2 => {
4025                        if let Some(value) = self.source.take() {
4026                            ::fidl_next::wire::Envelope::encode_value::<
4027                                crate::wire::Ref<'static>,
4028                                ___E,
4029                            >(
4030                                value, preallocated.encoder, &mut out, ()
4031                            )?;
4032                        } else {
4033                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
4034                        }
4035                    }
4036
4037                    1 => {
4038                        if let Some(value) = self.name.take() {
4039                            ::fidl_next::wire::Envelope::encode_value::<
4040                                ::fidl_next::wire::String<'static>,
4041                                ___E,
4042                            >(
4043                                value, preallocated.encoder, &mut out, 100
4044                            )?;
4045                        } else {
4046                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
4047                        }
4048                    }
4049
4050                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
4051                }
4052                unsafe {
4053                    preallocated.write_next(out.assume_init_ref());
4054                }
4055            }
4056
4057            ::fidl_next::wire::Table::encode_len(table, max_ord);
4058
4059            Ok(())
4060        }
4061    }
4062
4063    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::Dictionary<'static>, ___E> for &'a Dictionary
4064    where
4065        ___E: ::fidl_next::Encoder + ?Sized,
4066    {
4067        #[inline]
4068        fn encode(
4069            self,
4070            encoder: &mut ___E,
4071            out: &mut ::core::mem::MaybeUninit<crate::wire::Dictionary<'static>>,
4072            _: (),
4073        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
4074            ::fidl_next::munge!(let crate::wire::Dictionary { table } = out);
4075
4076            let max_ord = self.__max_ordinal();
4077
4078            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
4079            ::fidl_next::Wire::zero_padding(&mut out);
4080
4081            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
4082                ::fidl_next::wire::Envelope,
4083            >(encoder, max_ord);
4084
4085            for i in 1..=max_ord {
4086                match i {
4087                    4 => {
4088                        if let Some(value) = &self.source_path {
4089                            ::fidl_next::wire::Envelope::encode_value::<
4090                                ::fidl_next::wire::String<'static>,
4091                                ___E,
4092                            >(
4093                                value, preallocated.encoder, &mut out, 1024
4094                            )?;
4095                        } else {
4096                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
4097                        }
4098                    }
4099
4100                    3 => {
4101                        if let Some(value) = &self.source_dictionary {
4102                            ::fidl_next::wire::Envelope::encode_value::<
4103                                ::fidl_next::wire::String<'static>,
4104                                ___E,
4105                            >(
4106                                value, preallocated.encoder, &mut out, 1024
4107                            )?;
4108                        } else {
4109                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
4110                        }
4111                    }
4112
4113                    2 => {
4114                        if let Some(value) = &self.source {
4115                            ::fidl_next::wire::Envelope::encode_value::<
4116                                crate::wire::Ref<'static>,
4117                                ___E,
4118                            >(
4119                                value, preallocated.encoder, &mut out, ()
4120                            )?;
4121                        } else {
4122                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
4123                        }
4124                    }
4125
4126                    1 => {
4127                        if let Some(value) = &self.name {
4128                            ::fidl_next::wire::Envelope::encode_value::<
4129                                ::fidl_next::wire::String<'static>,
4130                                ___E,
4131                            >(
4132                                value, preallocated.encoder, &mut out, 100
4133                            )?;
4134                        } else {
4135                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
4136                        }
4137                    }
4138
4139                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
4140                }
4141                unsafe {
4142                    preallocated.write_next(out.assume_init_ref());
4143                }
4144            }
4145
4146            ::fidl_next::wire::Table::encode_len(table, max_ord);
4147
4148            Ok(())
4149        }
4150    }
4151
4152    impl<'de> ::fidl_next::FromWire<crate::wire::Dictionary<'de>> for Dictionary {
4153        #[inline]
4154        fn from_wire(wire_: crate::wire::Dictionary<'de>) -> Self {
4155            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
4156
4157            let name = wire_.table.get(1);
4158
4159            let source = wire_.table.get(2);
4160
4161            let source_dictionary = wire_.table.get(3);
4162
4163            let source_path = wire_.table.get(4);
4164
4165            Self {
4166                name: name.map(|envelope| {
4167                    ::fidl_next::FromWire::from_wire(unsafe {
4168                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
4169                    })
4170                }),
4171
4172                source: source.map(|envelope| {
4173                    ::fidl_next::FromWire::from_wire(unsafe {
4174                        envelope.read_unchecked::<crate::wire::Ref<'de>>()
4175                    })
4176                }),
4177
4178                source_dictionary: source_dictionary.map(|envelope| {
4179                    ::fidl_next::FromWire::from_wire(unsafe {
4180                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
4181                    })
4182                }),
4183
4184                source_path: source_path.map(|envelope| {
4185                    ::fidl_next::FromWire::from_wire(unsafe {
4186                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
4187                    })
4188                }),
4189            }
4190        }
4191    }
4192
4193    impl<'de> ::fidl_next::FromWireRef<crate::wire::Dictionary<'de>> for Dictionary {
4194        #[inline]
4195        fn from_wire_ref(wire: &crate::wire::Dictionary<'de>) -> Self {
4196            Self {
4197                name: wire.table.get(1).map(|envelope| {
4198                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
4199                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
4200                    })
4201                }),
4202
4203                source: wire.table.get(2).map(|envelope| {
4204                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
4205                        envelope.deref_unchecked::<crate::wire::Ref<'de>>()
4206                    })
4207                }),
4208
4209                source_dictionary: wire.table.get(3).map(|envelope| {
4210                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
4211                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
4212                    })
4213                }),
4214
4215                source_path: wire.table.get(4).map(|envelope| {
4216                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
4217                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
4218                    })
4219                }),
4220            }
4221        }
4222    }
4223
4224    #[doc = " Declares a capability defined by this component.\n"]
4225    #[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
4226    pub enum Capability {
4227        Service(crate::natural::Service),
4228
4229        Protocol(crate::natural::Protocol),
4230
4231        Directory(crate::natural::Directory),
4232
4233        Storage(crate::natural::Storage),
4234
4235        Runner(crate::natural::Runner),
4236
4237        Resolver(crate::natural::Resolver),
4238
4239        EventStream(crate::natural::EventStream),
4240
4241        Dictionary(crate::natural::Dictionary),
4242
4243        Config(crate::natural::Configuration),
4244
4245        UnknownOrdinal_(u64),
4246    }
4247
4248    impl Capability {
4249        pub fn is_unknown(&self) -> bool {
4250            #[allow(unreachable_patterns)]
4251            match self {
4252                Self::UnknownOrdinal_(_) => true,
4253                _ => false,
4254            }
4255        }
4256    }
4257
4258    unsafe impl<___E> ::fidl_next::Encode<crate::wire::Capability<'static>, ___E> for Capability
4259    where
4260        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
4261        ___E: ::fidl_next::Encoder,
4262    {
4263        #[inline]
4264        fn encode(
4265            self,
4266            encoder: &mut ___E,
4267            out: &mut ::core::mem::MaybeUninit<crate::wire::Capability<'static>>,
4268            _: (),
4269        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
4270            ::fidl_next::munge!(let crate::wire::Capability { raw, _phantom: _ } = out);
4271
4272            match self {
4273                Self::Service(value) => ::fidl_next::wire::Union::encode_as::<
4274                    ___E,
4275                    crate::wire::Service<'static>,
4276                >(value, 1, encoder, raw, ())?,
4277
4278                Self::Protocol(value) => ::fidl_next::wire::Union::encode_as::<
4279                    ___E,
4280                    crate::wire::Protocol<'static>,
4281                >(value, 2, encoder, raw, ())?,
4282
4283                Self::Directory(value) => ::fidl_next::wire::Union::encode_as::<
4284                    ___E,
4285                    crate::wire::Directory<'static>,
4286                >(value, 3, encoder, raw, ())?,
4287
4288                Self::Storage(value) => ::fidl_next::wire::Union::encode_as::<
4289                    ___E,
4290                    crate::wire::Storage<'static>,
4291                >(value, 4, encoder, raw, ())?,
4292
4293                Self::Runner(value) => ::fidl_next::wire::Union::encode_as::<
4294                    ___E,
4295                    crate::wire::Runner<'static>,
4296                >(value, 5, encoder, raw, ())?,
4297
4298                Self::Resolver(value) => ::fidl_next::wire::Union::encode_as::<
4299                    ___E,
4300                    crate::wire::Resolver<'static>,
4301                >(value, 6, encoder, raw, ())?,
4302
4303                Self::EventStream(value) => ::fidl_next::wire::Union::encode_as::<
4304                    ___E,
4305                    crate::wire::EventStream<'static>,
4306                >(value, 8, encoder, raw, ())?,
4307
4308                Self::Dictionary(value) => ::fidl_next::wire::Union::encode_as::<
4309                    ___E,
4310                    crate::wire::Dictionary<'static>,
4311                >(value, 9, encoder, raw, ())?,
4312
4313                Self::Config(value) => ::fidl_next::wire::Union::encode_as::<
4314                    ___E,
4315                    crate::wire::Configuration<'static>,
4316                >(value, 10, encoder, raw, ())?,
4317
4318                Self::UnknownOrdinal_(ordinal) => {
4319                    return Err(::fidl_next::EncodeError::UnknownUnionOrdinal(ordinal as usize));
4320                }
4321            }
4322
4323            Ok(())
4324        }
4325    }
4326
4327    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::Capability<'static>, ___E> for &'a Capability
4328    where
4329        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
4330        ___E: ::fidl_next::Encoder,
4331    {
4332        #[inline]
4333        fn encode(
4334            self,
4335            encoder: &mut ___E,
4336            out: &mut ::core::mem::MaybeUninit<crate::wire::Capability<'static>>,
4337            _: (),
4338        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
4339            ::fidl_next::munge!(let crate::wire::Capability { raw, _phantom: _ } = out);
4340
4341            match self {
4342                Capability::Service(value) => ::fidl_next::wire::Union::encode_as::<
4343                    ___E,
4344                    crate::wire::Service<'static>,
4345                >(value, 1, encoder, raw, ())?,
4346
4347                Capability::Protocol(value) => ::fidl_next::wire::Union::encode_as::<
4348                    ___E,
4349                    crate::wire::Protocol<'static>,
4350                >(value, 2, encoder, raw, ())?,
4351
4352                Capability::Directory(value) => ::fidl_next::wire::Union::encode_as::<
4353                    ___E,
4354                    crate::wire::Directory<'static>,
4355                >(value, 3, encoder, raw, ())?,
4356
4357                Capability::Storage(value) => ::fidl_next::wire::Union::encode_as::<
4358                    ___E,
4359                    crate::wire::Storage<'static>,
4360                >(value, 4, encoder, raw, ())?,
4361
4362                Capability::Runner(value) => ::fidl_next::wire::Union::encode_as::<
4363                    ___E,
4364                    crate::wire::Runner<'static>,
4365                >(value, 5, encoder, raw, ())?,
4366
4367                Capability::Resolver(value) => ::fidl_next::wire::Union::encode_as::<
4368                    ___E,
4369                    crate::wire::Resolver<'static>,
4370                >(value, 6, encoder, raw, ())?,
4371
4372                Capability::EventStream(value) => ::fidl_next::wire::Union::encode_as::<
4373                    ___E,
4374                    crate::wire::EventStream<'static>,
4375                >(value, 8, encoder, raw, ())?,
4376
4377                Capability::Dictionary(value) => ::fidl_next::wire::Union::encode_as::<
4378                    ___E,
4379                    crate::wire::Dictionary<'static>,
4380                >(value, 9, encoder, raw, ())?,
4381
4382                Capability::Config(value) => ::fidl_next::wire::Union::encode_as::<
4383                    ___E,
4384                    crate::wire::Configuration<'static>,
4385                >(value, 10, encoder, raw, ())?,
4386
4387                Capability::UnknownOrdinal_(ordinal) => {
4388                    return Err(::fidl_next::EncodeError::UnknownUnionOrdinal(*ordinal as usize));
4389                }
4390            }
4391
4392            Ok(())
4393        }
4394    }
4395
4396    unsafe impl<___E> ::fidl_next::EncodeOption<crate::wire_optional::Capability<'static>, ___E>
4397        for Capability
4398    where
4399        ___E: ?Sized,
4400        Capability: ::fidl_next::Encode<crate::wire::Capability<'static>, ___E>,
4401    {
4402        #[inline]
4403        fn encode_option(
4404            this: ::core::option::Option<Self>,
4405            encoder: &mut ___E,
4406            out: &mut ::core::mem::MaybeUninit<crate::wire_optional::Capability<'static>>,
4407            _: (),
4408        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
4409            ::fidl_next::munge!(let crate::wire_optional::Capability { raw, _phantom: _ } = &mut *out);
4410
4411            if let Some(inner) = this {
4412                let value_out = unsafe { &mut *out.as_mut_ptr().cast() };
4413                ::fidl_next::Encode::encode(inner, encoder, value_out, ())?;
4414            } else {
4415                ::fidl_next::wire::Union::encode_absent(raw);
4416            }
4417
4418            Ok(())
4419        }
4420    }
4421
4422    unsafe impl<'a, ___E> ::fidl_next::EncodeOption<crate::wire_optional::Capability<'static>, ___E>
4423        for &'a Capability
4424    where
4425        ___E: ?Sized,
4426        &'a Capability: ::fidl_next::Encode<crate::wire::Capability<'static>, ___E>,
4427    {
4428        #[inline]
4429        fn encode_option(
4430            this: ::core::option::Option<Self>,
4431            encoder: &mut ___E,
4432            out: &mut ::core::mem::MaybeUninit<crate::wire_optional::Capability<'static>>,
4433            _: (),
4434        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
4435            ::fidl_next::munge!(let crate::wire_optional::Capability { raw, _phantom: _ } = &mut *out);
4436
4437            if let Some(inner) = this {
4438                let value_out = unsafe { &mut *out.as_mut_ptr().cast() };
4439                ::fidl_next::Encode::encode(inner, encoder, value_out, ())?;
4440            } else {
4441                ::fidl_next::wire::Union::encode_absent(raw);
4442            }
4443
4444            Ok(())
4445        }
4446    }
4447
4448    impl<'de> ::fidl_next::FromWire<crate::wire::Capability<'de>> for Capability {
4449        #[inline]
4450        fn from_wire(wire: crate::wire::Capability<'de>) -> Self {
4451            let wire = ::core::mem::ManuallyDrop::new(wire);
4452            match wire.raw.ordinal() {
4453                1 => Self::Service(::fidl_next::FromWire::from_wire(unsafe {
4454                    wire.raw.get().read_unchecked::<crate::wire::Service<'de>>()
4455                })),
4456
4457                2 => Self::Protocol(::fidl_next::FromWire::from_wire(unsafe {
4458                    wire.raw.get().read_unchecked::<crate::wire::Protocol<'de>>()
4459                })),
4460
4461                3 => Self::Directory(::fidl_next::FromWire::from_wire(unsafe {
4462                    wire.raw.get().read_unchecked::<crate::wire::Directory<'de>>()
4463                })),
4464
4465                4 => Self::Storage(::fidl_next::FromWire::from_wire(unsafe {
4466                    wire.raw.get().read_unchecked::<crate::wire::Storage<'de>>()
4467                })),
4468
4469                5 => Self::Runner(::fidl_next::FromWire::from_wire(unsafe {
4470                    wire.raw.get().read_unchecked::<crate::wire::Runner<'de>>()
4471                })),
4472
4473                6 => Self::Resolver(::fidl_next::FromWire::from_wire(unsafe {
4474                    wire.raw.get().read_unchecked::<crate::wire::Resolver<'de>>()
4475                })),
4476
4477                8 => Self::EventStream(::fidl_next::FromWire::from_wire(unsafe {
4478                    wire.raw.get().read_unchecked::<crate::wire::EventStream<'de>>()
4479                })),
4480
4481                9 => Self::Dictionary(::fidl_next::FromWire::from_wire(unsafe {
4482                    wire.raw.get().read_unchecked::<crate::wire::Dictionary<'de>>()
4483                })),
4484
4485                10 => Self::Config(::fidl_next::FromWire::from_wire(unsafe {
4486                    wire.raw.get().read_unchecked::<crate::wire::Configuration<'de>>()
4487                })),
4488
4489                ord => return Self::UnknownOrdinal_(ord as u64),
4490            }
4491        }
4492    }
4493
4494    impl<'de> ::fidl_next::FromWireRef<crate::wire::Capability<'de>> for Capability {
4495        #[inline]
4496        fn from_wire_ref(wire: &crate::wire::Capability<'de>) -> Self {
4497            match wire.raw.ordinal() {
4498                1 => Self::Service(::fidl_next::FromWireRef::from_wire_ref(unsafe {
4499                    wire.raw.get().deref_unchecked::<crate::wire::Service<'de>>()
4500                })),
4501
4502                2 => Self::Protocol(::fidl_next::FromWireRef::from_wire_ref(unsafe {
4503                    wire.raw.get().deref_unchecked::<crate::wire::Protocol<'de>>()
4504                })),
4505
4506                3 => Self::Directory(::fidl_next::FromWireRef::from_wire_ref(unsafe {
4507                    wire.raw.get().deref_unchecked::<crate::wire::Directory<'de>>()
4508                })),
4509
4510                4 => Self::Storage(::fidl_next::FromWireRef::from_wire_ref(unsafe {
4511                    wire.raw.get().deref_unchecked::<crate::wire::Storage<'de>>()
4512                })),
4513
4514                5 => Self::Runner(::fidl_next::FromWireRef::from_wire_ref(unsafe {
4515                    wire.raw.get().deref_unchecked::<crate::wire::Runner<'de>>()
4516                })),
4517
4518                6 => Self::Resolver(::fidl_next::FromWireRef::from_wire_ref(unsafe {
4519                    wire.raw.get().deref_unchecked::<crate::wire::Resolver<'de>>()
4520                })),
4521
4522                8 => Self::EventStream(::fidl_next::FromWireRef::from_wire_ref(unsafe {
4523                    wire.raw.get().deref_unchecked::<crate::wire::EventStream<'de>>()
4524                })),
4525
4526                9 => Self::Dictionary(::fidl_next::FromWireRef::from_wire_ref(unsafe {
4527                    wire.raw.get().deref_unchecked::<crate::wire::Dictionary<'de>>()
4528                })),
4529
4530                10 => Self::Config(::fidl_next::FromWireRef::from_wire_ref(unsafe {
4531                    wire.raw.get().deref_unchecked::<crate::wire::Configuration<'de>>()
4532                })),
4533
4534                ord => return Self::UnknownOrdinal_(ord as u64),
4535            }
4536        }
4537    }
4538
4539    impl<'de> ::fidl_next::FromWireOption<crate::wire_optional::Capability<'de>> for Capability {
4540        #[inline]
4541        fn from_wire_option(
4542            wire: crate::wire_optional::Capability<'de>,
4543        ) -> ::core::option::Option<Self> {
4544            if let Some(inner) = wire.into_option() {
4545                Some(::fidl_next::FromWire::from_wire(inner))
4546            } else {
4547                None
4548            }
4549        }
4550    }
4551
4552    impl<'de> ::fidl_next::FromWireOption<crate::wire_optional::Capability<'de>> for Box<Capability> {
4553        #[inline]
4554        fn from_wire_option(
4555            wire: crate::wire_optional::Capability<'de>,
4556        ) -> ::core::option::Option<Self> {
4557            <
4558            Capability as ::fidl_next::FromWireOption<crate::wire_optional::Capability<'de>>
4559        >::from_wire_option(wire).map(Box::new)
4560        }
4561    }
4562
4563    impl<'de> ::fidl_next::FromWireOptionRef<crate::wire_optional::Capability<'de>>
4564        for Box<Capability>
4565    {
4566        #[inline]
4567        fn from_wire_option_ref(
4568            wire: &crate::wire_optional::Capability<'de>,
4569        ) -> ::core::option::Option<Self> {
4570            if let Some(inner) = wire.as_ref() {
4571                Some(Box::new(::fidl_next::FromWireRef::from_wire_ref(inner)))
4572            } else {
4573                None
4574            }
4575        }
4576    }
4577
4578    #[doc = " Describes under what conditions the component may be started.\n"]
4579    #[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
4580    #[repr(u32)]
4581    pub enum StartupMode {
4582        Lazy = 0,
4583        Eager = 1,
4584    }
4585    impl ::core::convert::TryFrom<u32> for StartupMode {
4586        type Error = ::fidl_next::UnknownStrictEnumMemberError;
4587        fn try_from(
4588            value: u32,
4589        ) -> ::core::result::Result<Self, ::fidl_next::UnknownStrictEnumMemberError> {
4590            match value {
4591                0 => Ok(Self::Lazy),
4592                1 => Ok(Self::Eager),
4593
4594                _ => Err(::fidl_next::UnknownStrictEnumMemberError::new(value.into())),
4595            }
4596        }
4597    }
4598
4599    impl ::std::convert::From<StartupMode> for u32 {
4600        fn from(value: StartupMode) -> Self {
4601            match value {
4602                StartupMode::Lazy => 0,
4603                StartupMode::Eager => 1,
4604            }
4605        }
4606    }
4607
4608    unsafe impl<___E> ::fidl_next::Encode<crate::wire::StartupMode, ___E> for StartupMode
4609    where
4610        ___E: ?Sized,
4611    {
4612        #[inline]
4613        fn encode(
4614            self,
4615            encoder: &mut ___E,
4616            out: &mut ::core::mem::MaybeUninit<crate::wire::StartupMode>,
4617            _: (),
4618        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
4619            ::fidl_next::Encode::encode(&self, encoder, out, ())
4620        }
4621    }
4622
4623    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::StartupMode, ___E> for &'a StartupMode
4624    where
4625        ___E: ?Sized,
4626    {
4627        #[inline]
4628        fn encode(
4629            self,
4630            encoder: &mut ___E,
4631            out: &mut ::core::mem::MaybeUninit<crate::wire::StartupMode>,
4632            _: (),
4633        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
4634            ::fidl_next::munge!(let crate::wire::StartupMode { value } = out);
4635            let _ = value.write(::fidl_next::wire::Uint32::from(match *self {
4636                StartupMode::Lazy => 0,
4637
4638                StartupMode::Eager => 1,
4639            }));
4640
4641            Ok(())
4642        }
4643    }
4644
4645    impl ::core::convert::From<crate::wire::StartupMode> for StartupMode {
4646        fn from(wire: crate::wire::StartupMode) -> Self {
4647            match u32::from(wire.value) {
4648                0 => Self::Lazy,
4649
4650                1 => Self::Eager,
4651
4652                _ => unsafe { ::core::hint::unreachable_unchecked() },
4653            }
4654        }
4655    }
4656
4657    impl ::fidl_next::FromWire<crate::wire::StartupMode> for StartupMode {
4658        #[inline]
4659        fn from_wire(wire: crate::wire::StartupMode) -> Self {
4660            Self::from(wire)
4661        }
4662    }
4663
4664    impl ::fidl_next::FromWireRef<crate::wire::StartupMode> for StartupMode {
4665        #[inline]
4666        fn from_wire_ref(wire: &crate::wire::StartupMode) -> Self {
4667            Self::from(*wire)
4668        }
4669    }
4670
4671    #[doc = " Describes the action to take if this component instance terminates\n unexpectedly.\n"]
4672    #[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
4673    #[repr(u32)]
4674    pub enum OnTerminate {
4675        None = 0,
4676        Reboot = 1,
4677    }
4678    impl ::core::convert::TryFrom<u32> for OnTerminate {
4679        type Error = ::fidl_next::UnknownStrictEnumMemberError;
4680        fn try_from(
4681            value: u32,
4682        ) -> ::core::result::Result<Self, ::fidl_next::UnknownStrictEnumMemberError> {
4683            match value {
4684                0 => Ok(Self::None),
4685                1 => Ok(Self::Reboot),
4686
4687                _ => Err(::fidl_next::UnknownStrictEnumMemberError::new(value.into())),
4688            }
4689        }
4690    }
4691
4692    impl ::std::convert::From<OnTerminate> for u32 {
4693        fn from(value: OnTerminate) -> Self {
4694            match value {
4695                OnTerminate::None => 0,
4696                OnTerminate::Reboot => 1,
4697            }
4698        }
4699    }
4700
4701    unsafe impl<___E> ::fidl_next::Encode<crate::wire::OnTerminate, ___E> for OnTerminate
4702    where
4703        ___E: ?Sized,
4704    {
4705        #[inline]
4706        fn encode(
4707            self,
4708            encoder: &mut ___E,
4709            out: &mut ::core::mem::MaybeUninit<crate::wire::OnTerminate>,
4710            _: (),
4711        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
4712            ::fidl_next::Encode::encode(&self, encoder, out, ())
4713        }
4714    }
4715
4716    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::OnTerminate, ___E> for &'a OnTerminate
4717    where
4718        ___E: ?Sized,
4719    {
4720        #[inline]
4721        fn encode(
4722            self,
4723            encoder: &mut ___E,
4724            out: &mut ::core::mem::MaybeUninit<crate::wire::OnTerminate>,
4725            _: (),
4726        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
4727            ::fidl_next::munge!(let crate::wire::OnTerminate { value } = out);
4728            let _ = value.write(::fidl_next::wire::Uint32::from(match *self {
4729                OnTerminate::None => 0,
4730
4731                OnTerminate::Reboot => 1,
4732            }));
4733
4734            Ok(())
4735        }
4736    }
4737
4738    impl ::core::convert::From<crate::wire::OnTerminate> for OnTerminate {
4739        fn from(wire: crate::wire::OnTerminate) -> Self {
4740            match u32::from(wire.value) {
4741                0 => Self::None,
4742
4743                1 => Self::Reboot,
4744
4745                _ => unsafe { ::core::hint::unreachable_unchecked() },
4746            }
4747        }
4748    }
4749
4750    impl ::fidl_next::FromWire<crate::wire::OnTerminate> for OnTerminate {
4751        #[inline]
4752        fn from_wire(wire: crate::wire::OnTerminate) -> Self {
4753            Self::from(wire)
4754        }
4755    }
4756
4757    impl ::fidl_next::FromWireRef<crate::wire::OnTerminate> for OnTerminate {
4758        #[inline]
4759        fn from_wire_ref(wire: &crate::wire::OnTerminate) -> Self {
4760            Self::from(*wire)
4761        }
4762    }
4763
4764    #[doc = " The string identifier for a config field.\n"]
4765    pub type ConfigKey = ::std::string::String;
4766
4767    #[doc = " A directive to override the value of a particular configuration field in the child.\n"]
4768    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
4769    pub struct ConfigOverride {
4770        pub key: ::core::option::Option<::std::string::String>,
4771
4772        pub value: ::core::option::Option<crate::natural::ConfigValue>,
4773    }
4774
4775    impl ConfigOverride {
4776        fn __max_ordinal(&self) -> usize {
4777            if self.value.is_some() {
4778                return 2;
4779            }
4780
4781            if self.key.is_some() {
4782                return 1;
4783            }
4784
4785            0
4786        }
4787    }
4788
4789    unsafe impl<___E> ::fidl_next::Encode<crate::wire::ConfigOverride<'static>, ___E> for ConfigOverride
4790    where
4791        ___E: ::fidl_next::Encoder + ?Sized,
4792    {
4793        #[inline]
4794        fn encode(
4795            mut self,
4796            encoder: &mut ___E,
4797            out: &mut ::core::mem::MaybeUninit<crate::wire::ConfigOverride<'static>>,
4798            _: (),
4799        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
4800            ::fidl_next::munge!(let crate::wire::ConfigOverride { table } = out);
4801
4802            let max_ord = self.__max_ordinal();
4803
4804            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
4805            ::fidl_next::Wire::zero_padding(&mut out);
4806
4807            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
4808                ::fidl_next::wire::Envelope,
4809            >(encoder, max_ord);
4810
4811            for i in 1..=max_ord {
4812                match i {
4813                    2 => {
4814                        if let Some(value) = self.value.take() {
4815                            ::fidl_next::wire::Envelope::encode_value::<
4816                                crate::wire::ConfigValue<'static>,
4817                                ___E,
4818                            >(
4819                                value, preallocated.encoder, &mut out, ()
4820                            )?;
4821                        } else {
4822                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
4823                        }
4824                    }
4825
4826                    1 => {
4827                        if let Some(value) = self.key.take() {
4828                            ::fidl_next::wire::Envelope::encode_value::<
4829                                ::fidl_next::wire::String<'static>,
4830                                ___E,
4831                            >(
4832                                value, preallocated.encoder, &mut out, 64
4833                            )?;
4834                        } else {
4835                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
4836                        }
4837                    }
4838
4839                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
4840                }
4841                unsafe {
4842                    preallocated.write_next(out.assume_init_ref());
4843                }
4844            }
4845
4846            ::fidl_next::wire::Table::encode_len(table, max_ord);
4847
4848            Ok(())
4849        }
4850    }
4851
4852    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::ConfigOverride<'static>, ___E>
4853        for &'a ConfigOverride
4854    where
4855        ___E: ::fidl_next::Encoder + ?Sized,
4856    {
4857        #[inline]
4858        fn encode(
4859            self,
4860            encoder: &mut ___E,
4861            out: &mut ::core::mem::MaybeUninit<crate::wire::ConfigOverride<'static>>,
4862            _: (),
4863        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
4864            ::fidl_next::munge!(let crate::wire::ConfigOverride { table } = out);
4865
4866            let max_ord = self.__max_ordinal();
4867
4868            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
4869            ::fidl_next::Wire::zero_padding(&mut out);
4870
4871            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
4872                ::fidl_next::wire::Envelope,
4873            >(encoder, max_ord);
4874
4875            for i in 1..=max_ord {
4876                match i {
4877                    2 => {
4878                        if let Some(value) = &self.value {
4879                            ::fidl_next::wire::Envelope::encode_value::<
4880                                crate::wire::ConfigValue<'static>,
4881                                ___E,
4882                            >(
4883                                value, preallocated.encoder, &mut out, ()
4884                            )?;
4885                        } else {
4886                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
4887                        }
4888                    }
4889
4890                    1 => {
4891                        if let Some(value) = &self.key {
4892                            ::fidl_next::wire::Envelope::encode_value::<
4893                                ::fidl_next::wire::String<'static>,
4894                                ___E,
4895                            >(
4896                                value, preallocated.encoder, &mut out, 64
4897                            )?;
4898                        } else {
4899                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
4900                        }
4901                    }
4902
4903                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
4904                }
4905                unsafe {
4906                    preallocated.write_next(out.assume_init_ref());
4907                }
4908            }
4909
4910            ::fidl_next::wire::Table::encode_len(table, max_ord);
4911
4912            Ok(())
4913        }
4914    }
4915
4916    impl<'de> ::fidl_next::FromWire<crate::wire::ConfigOverride<'de>> for ConfigOverride {
4917        #[inline]
4918        fn from_wire(wire_: crate::wire::ConfigOverride<'de>) -> Self {
4919            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
4920
4921            let key = wire_.table.get(1);
4922
4923            let value = wire_.table.get(2);
4924
4925            Self {
4926                key: key.map(|envelope| {
4927                    ::fidl_next::FromWire::from_wire(unsafe {
4928                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
4929                    })
4930                }),
4931
4932                value: value.map(|envelope| {
4933                    ::fidl_next::FromWire::from_wire(unsafe {
4934                        envelope.read_unchecked::<crate::wire::ConfigValue<'de>>()
4935                    })
4936                }),
4937            }
4938        }
4939    }
4940
4941    impl<'de> ::fidl_next::FromWireRef<crate::wire::ConfigOverride<'de>> for ConfigOverride {
4942        #[inline]
4943        fn from_wire_ref(wire: &crate::wire::ConfigOverride<'de>) -> Self {
4944            Self {
4945                key: wire.table.get(1).map(|envelope| {
4946                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
4947                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
4948                    })
4949                }),
4950
4951                value: wire.table.get(2).map(|envelope| {
4952                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
4953                        envelope.deref_unchecked::<crate::wire::ConfigValue<'de>>()
4954                    })
4955                }),
4956            }
4957        }
4958    }
4959
4960    #[doc = " Statically declares a child component instance.\n"]
4961    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
4962    pub struct Child {
4963        pub name: ::core::option::Option<::std::string::String>,
4964
4965        pub url: ::core::option::Option<::std::string::String>,
4966
4967        pub startup: ::core::option::Option<crate::natural::StartupMode>,
4968
4969        pub environment: ::core::option::Option<::std::string::String>,
4970
4971        pub on_terminate: ::core::option::Option<crate::natural::OnTerminate>,
4972
4973        pub config_overrides:
4974            ::core::option::Option<::std::vec::Vec<crate::natural::ConfigOverride>>,
4975    }
4976
4977    impl Child {
4978        fn __max_ordinal(&self) -> usize {
4979            if self.config_overrides.is_some() {
4980                return 6;
4981            }
4982
4983            if self.on_terminate.is_some() {
4984                return 5;
4985            }
4986
4987            if self.environment.is_some() {
4988                return 4;
4989            }
4990
4991            if self.startup.is_some() {
4992                return 3;
4993            }
4994
4995            if self.url.is_some() {
4996                return 2;
4997            }
4998
4999            if self.name.is_some() {
5000                return 1;
5001            }
5002
5003            0
5004        }
5005    }
5006
5007    unsafe impl<___E> ::fidl_next::Encode<crate::wire::Child<'static>, ___E> for Child
5008    where
5009        ___E: ::fidl_next::Encoder + ?Sized,
5010    {
5011        #[inline]
5012        fn encode(
5013            mut self,
5014            encoder: &mut ___E,
5015            out: &mut ::core::mem::MaybeUninit<crate::wire::Child<'static>>,
5016            _: (),
5017        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
5018            ::fidl_next::munge!(let crate::wire::Child { table } = out);
5019
5020            let max_ord = self.__max_ordinal();
5021
5022            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
5023            ::fidl_next::Wire::zero_padding(&mut out);
5024
5025            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
5026                ::fidl_next::wire::Envelope,
5027            >(encoder, max_ord);
5028
5029            for i in 1..=max_ord {
5030                match i {
5031                    6 => {
5032                        if let Some(value) = self.config_overrides.take() {
5033                            ::fidl_next::wire::Envelope::encode_value::<
5034                                ::fidl_next::wire::Vector<
5035                                    'static,
5036                                    crate::wire::ConfigOverride<'static>,
5037                                >,
5038                                ___E,
5039                            >(
5040                                value, preallocated.encoder, &mut out, (4294967295, ())
5041                            )?;
5042                        } else {
5043                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
5044                        }
5045                    }
5046
5047                    5 => {
5048                        if let Some(value) = self.on_terminate.take() {
5049                            ::fidl_next::wire::Envelope::encode_value::<
5050                                crate::wire::OnTerminate,
5051                                ___E,
5052                            >(
5053                                value, preallocated.encoder, &mut out, ()
5054                            )?;
5055                        } else {
5056                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
5057                        }
5058                    }
5059
5060                    4 => {
5061                        if let Some(value) = self.environment.take() {
5062                            ::fidl_next::wire::Envelope::encode_value::<
5063                                ::fidl_next::wire::String<'static>,
5064                                ___E,
5065                            >(
5066                                value, preallocated.encoder, &mut out, 100
5067                            )?;
5068                        } else {
5069                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
5070                        }
5071                    }
5072
5073                    3 => {
5074                        if let Some(value) = self.startup.take() {
5075                            ::fidl_next::wire::Envelope::encode_value::<
5076                                crate::wire::StartupMode,
5077                                ___E,
5078                            >(
5079                                value, preallocated.encoder, &mut out, ()
5080                            )?;
5081                        } else {
5082                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
5083                        }
5084                    }
5085
5086                    2 => {
5087                        if let Some(value) = self.url.take() {
5088                            ::fidl_next::wire::Envelope::encode_value::<
5089                                ::fidl_next::wire::String<'static>,
5090                                ___E,
5091                            >(
5092                                value, preallocated.encoder, &mut out, 4096
5093                            )?;
5094                        } else {
5095                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
5096                        }
5097                    }
5098
5099                    1 => {
5100                        if let Some(value) = self.name.take() {
5101                            ::fidl_next::wire::Envelope::encode_value::<
5102                                ::fidl_next::wire::String<'static>,
5103                                ___E,
5104                            >(
5105                                value, preallocated.encoder, &mut out, 1024
5106                            )?;
5107                        } else {
5108                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
5109                        }
5110                    }
5111
5112                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
5113                }
5114                unsafe {
5115                    preallocated.write_next(out.assume_init_ref());
5116                }
5117            }
5118
5119            ::fidl_next::wire::Table::encode_len(table, max_ord);
5120
5121            Ok(())
5122        }
5123    }
5124
5125    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::Child<'static>, ___E> for &'a Child
5126    where
5127        ___E: ::fidl_next::Encoder + ?Sized,
5128    {
5129        #[inline]
5130        fn encode(
5131            self,
5132            encoder: &mut ___E,
5133            out: &mut ::core::mem::MaybeUninit<crate::wire::Child<'static>>,
5134            _: (),
5135        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
5136            ::fidl_next::munge!(let crate::wire::Child { table } = out);
5137
5138            let max_ord = self.__max_ordinal();
5139
5140            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
5141            ::fidl_next::Wire::zero_padding(&mut out);
5142
5143            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
5144                ::fidl_next::wire::Envelope,
5145            >(encoder, max_ord);
5146
5147            for i in 1..=max_ord {
5148                match i {
5149                    6 => {
5150                        if let Some(value) = &self.config_overrides {
5151                            ::fidl_next::wire::Envelope::encode_value::<
5152                                ::fidl_next::wire::Vector<
5153                                    'static,
5154                                    crate::wire::ConfigOverride<'static>,
5155                                >,
5156                                ___E,
5157                            >(
5158                                value, preallocated.encoder, &mut out, (4294967295, ())
5159                            )?;
5160                        } else {
5161                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
5162                        }
5163                    }
5164
5165                    5 => {
5166                        if let Some(value) = &self.on_terminate {
5167                            ::fidl_next::wire::Envelope::encode_value::<
5168                                crate::wire::OnTerminate,
5169                                ___E,
5170                            >(
5171                                value, preallocated.encoder, &mut out, ()
5172                            )?;
5173                        } else {
5174                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
5175                        }
5176                    }
5177
5178                    4 => {
5179                        if let Some(value) = &self.environment {
5180                            ::fidl_next::wire::Envelope::encode_value::<
5181                                ::fidl_next::wire::String<'static>,
5182                                ___E,
5183                            >(
5184                                value, preallocated.encoder, &mut out, 100
5185                            )?;
5186                        } else {
5187                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
5188                        }
5189                    }
5190
5191                    3 => {
5192                        if let Some(value) = &self.startup {
5193                            ::fidl_next::wire::Envelope::encode_value::<
5194                                crate::wire::StartupMode,
5195                                ___E,
5196                            >(
5197                                value, preallocated.encoder, &mut out, ()
5198                            )?;
5199                        } else {
5200                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
5201                        }
5202                    }
5203
5204                    2 => {
5205                        if let Some(value) = &self.url {
5206                            ::fidl_next::wire::Envelope::encode_value::<
5207                                ::fidl_next::wire::String<'static>,
5208                                ___E,
5209                            >(
5210                                value, preallocated.encoder, &mut out, 4096
5211                            )?;
5212                        } else {
5213                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
5214                        }
5215                    }
5216
5217                    1 => {
5218                        if let Some(value) = &self.name {
5219                            ::fidl_next::wire::Envelope::encode_value::<
5220                                ::fidl_next::wire::String<'static>,
5221                                ___E,
5222                            >(
5223                                value, preallocated.encoder, &mut out, 1024
5224                            )?;
5225                        } else {
5226                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
5227                        }
5228                    }
5229
5230                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
5231                }
5232                unsafe {
5233                    preallocated.write_next(out.assume_init_ref());
5234                }
5235            }
5236
5237            ::fidl_next::wire::Table::encode_len(table, max_ord);
5238
5239            Ok(())
5240        }
5241    }
5242
5243    impl<'de> ::fidl_next::FromWire<crate::wire::Child<'de>> for Child {
5244        #[inline]
5245        fn from_wire(wire_: crate::wire::Child<'de>) -> Self {
5246            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
5247
5248            let name = wire_.table.get(1);
5249
5250            let url = wire_.table.get(2);
5251
5252            let startup = wire_.table.get(3);
5253
5254            let environment = wire_.table.get(4);
5255
5256            let on_terminate = wire_.table.get(5);
5257
5258            let config_overrides = wire_.table.get(6);
5259
5260            Self {
5261
5262
5263                name: name.map(|envelope| ::fidl_next::FromWire::from_wire(
5264                    unsafe { envelope.read_unchecked::<::fidl_next::wire::String<'de>>() }
5265                )),
5266
5267
5268                url: url.map(|envelope| ::fidl_next::FromWire::from_wire(
5269                    unsafe { envelope.read_unchecked::<::fidl_next::wire::String<'de>>() }
5270                )),
5271
5272
5273                startup: startup.map(|envelope| ::fidl_next::FromWire::from_wire(
5274                    unsafe { envelope.read_unchecked::<crate::wire::StartupMode>() }
5275                )),
5276
5277
5278                environment: environment.map(|envelope| ::fidl_next::FromWire::from_wire(
5279                    unsafe { envelope.read_unchecked::<::fidl_next::wire::String<'de>>() }
5280                )),
5281
5282
5283                on_terminate: on_terminate.map(|envelope| ::fidl_next::FromWire::from_wire(
5284                    unsafe { envelope.read_unchecked::<crate::wire::OnTerminate>() }
5285                )),
5286
5287
5288                config_overrides: config_overrides.map(|envelope| ::fidl_next::FromWire::from_wire(
5289                    unsafe { envelope.read_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::ConfigOverride<'de>>>() }
5290                )),
5291
5292        }
5293        }
5294    }
5295
5296    impl<'de> ::fidl_next::FromWireRef<crate::wire::Child<'de>> for Child {
5297        #[inline]
5298        fn from_wire_ref(wire: &crate::wire::Child<'de>) -> Self {
5299            Self {
5300
5301
5302                name: wire.table.get(1)
5303                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
5304                        unsafe { envelope.deref_unchecked::<::fidl_next::wire::String<'de>>() }
5305                    )),
5306
5307
5308                url: wire.table.get(2)
5309                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
5310                        unsafe { envelope.deref_unchecked::<::fidl_next::wire::String<'de>>() }
5311                    )),
5312
5313
5314                startup: wire.table.get(3)
5315                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
5316                        unsafe { envelope.deref_unchecked::<crate::wire::StartupMode>() }
5317                    )),
5318
5319
5320                environment: wire.table.get(4)
5321                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
5322                        unsafe { envelope.deref_unchecked::<::fidl_next::wire::String<'de>>() }
5323                    )),
5324
5325
5326                on_terminate: wire.table.get(5)
5327                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
5328                        unsafe { envelope.deref_unchecked::<crate::wire::OnTerminate>() }
5329                    )),
5330
5331
5332                config_overrides: wire.table.get(6)
5333                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
5334                        unsafe { envelope.deref_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::ConfigOverride<'de>>>() }
5335                    )),
5336
5337        }
5338        }
5339    }
5340
5341    #[doc = " The durability of component instances created in a collection.\n"]
5342    #[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
5343    #[repr(u32)]
5344    pub enum Durability {
5345        Transient = 2,
5346        SingleRun = 3,
5347    }
5348    impl ::core::convert::TryFrom<u32> for Durability {
5349        type Error = ::fidl_next::UnknownStrictEnumMemberError;
5350        fn try_from(
5351            value: u32,
5352        ) -> ::core::result::Result<Self, ::fidl_next::UnknownStrictEnumMemberError> {
5353            match value {
5354                2 => Ok(Self::Transient),
5355                3 => Ok(Self::SingleRun),
5356
5357                _ => Err(::fidl_next::UnknownStrictEnumMemberError::new(value.into())),
5358            }
5359        }
5360    }
5361
5362    impl ::std::convert::From<Durability> for u32 {
5363        fn from(value: Durability) -> Self {
5364            match value {
5365                Durability::Transient => 2,
5366                Durability::SingleRun => 3,
5367            }
5368        }
5369    }
5370
5371    unsafe impl<___E> ::fidl_next::Encode<crate::wire::Durability, ___E> for Durability
5372    where
5373        ___E: ?Sized,
5374    {
5375        #[inline]
5376        fn encode(
5377            self,
5378            encoder: &mut ___E,
5379            out: &mut ::core::mem::MaybeUninit<crate::wire::Durability>,
5380            _: (),
5381        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
5382            ::fidl_next::Encode::encode(&self, encoder, out, ())
5383        }
5384    }
5385
5386    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::Durability, ___E> for &'a Durability
5387    where
5388        ___E: ?Sized,
5389    {
5390        #[inline]
5391        fn encode(
5392            self,
5393            encoder: &mut ___E,
5394            out: &mut ::core::mem::MaybeUninit<crate::wire::Durability>,
5395            _: (),
5396        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
5397            ::fidl_next::munge!(let crate::wire::Durability { value } = out);
5398            let _ = value.write(::fidl_next::wire::Uint32::from(match *self {
5399                Durability::Transient => 2,
5400
5401                Durability::SingleRun => 3,
5402            }));
5403
5404            Ok(())
5405        }
5406    }
5407
5408    impl ::core::convert::From<crate::wire::Durability> for Durability {
5409        fn from(wire: crate::wire::Durability) -> Self {
5410            match u32::from(wire.value) {
5411                2 => Self::Transient,
5412
5413                3 => Self::SingleRun,
5414
5415                _ => unsafe { ::core::hint::unreachable_unchecked() },
5416            }
5417        }
5418    }
5419
5420    impl ::fidl_next::FromWire<crate::wire::Durability> for Durability {
5421        #[inline]
5422        fn from_wire(wire: crate::wire::Durability) -> Self {
5423            Self::from(wire)
5424        }
5425    }
5426
5427    impl ::fidl_next::FromWireRef<crate::wire::Durability> for Durability {
5428        #[inline]
5429        fn from_wire_ref(wire: &crate::wire::Durability) -> Self {
5430            Self::from(*wire)
5431        }
5432    }
5433
5434    #[doc = " Statically declares a component instance collection.\n"]
5435    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
5436    pub struct Collection {
5437        pub name: ::core::option::Option<::std::string::String>,
5438
5439        pub durability: ::core::option::Option<crate::natural::Durability>,
5440
5441        pub environment: ::core::option::Option<::std::string::String>,
5442
5443        pub allowed_offers: ::core::option::Option<crate::natural::AllowedOffers>,
5444
5445        pub allow_long_names: ::core::option::Option<bool>,
5446
5447        pub persistent_storage: ::core::option::Option<bool>,
5448    }
5449
5450    impl Collection {
5451        fn __max_ordinal(&self) -> usize {
5452            if self.persistent_storage.is_some() {
5453                return 6;
5454            }
5455
5456            if self.allow_long_names.is_some() {
5457                return 5;
5458            }
5459
5460            if self.allowed_offers.is_some() {
5461                return 4;
5462            }
5463
5464            if self.environment.is_some() {
5465                return 3;
5466            }
5467
5468            if self.durability.is_some() {
5469                return 2;
5470            }
5471
5472            if self.name.is_some() {
5473                return 1;
5474            }
5475
5476            0
5477        }
5478    }
5479
5480    unsafe impl<___E> ::fidl_next::Encode<crate::wire::Collection<'static>, ___E> for Collection
5481    where
5482        ___E: ::fidl_next::Encoder + ?Sized,
5483    {
5484        #[inline]
5485        fn encode(
5486            mut self,
5487            encoder: &mut ___E,
5488            out: &mut ::core::mem::MaybeUninit<crate::wire::Collection<'static>>,
5489            _: (),
5490        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
5491            ::fidl_next::munge!(let crate::wire::Collection { table } = out);
5492
5493            let max_ord = self.__max_ordinal();
5494
5495            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
5496            ::fidl_next::Wire::zero_padding(&mut out);
5497
5498            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
5499                ::fidl_next::wire::Envelope,
5500            >(encoder, max_ord);
5501
5502            for i in 1..=max_ord {
5503                match i {
5504                    6 => {
5505                        if let Some(value) = self.persistent_storage.take() {
5506                            ::fidl_next::wire::Envelope::encode_value::<bool, ___E>(
5507                                value,
5508                                preallocated.encoder,
5509                                &mut out,
5510                                (),
5511                            )?;
5512                        } else {
5513                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
5514                        }
5515                    }
5516
5517                    5 => {
5518                        if let Some(value) = self.allow_long_names.take() {
5519                            ::fidl_next::wire::Envelope::encode_value::<bool, ___E>(
5520                                value,
5521                                preallocated.encoder,
5522                                &mut out,
5523                                (),
5524                            )?;
5525                        } else {
5526                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
5527                        }
5528                    }
5529
5530                    4 => {
5531                        if let Some(value) = self.allowed_offers.take() {
5532                            ::fidl_next::wire::Envelope::encode_value::<
5533                                crate::wire::AllowedOffers,
5534                                ___E,
5535                            >(
5536                                value, preallocated.encoder, &mut out, ()
5537                            )?;
5538                        } else {
5539                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
5540                        }
5541                    }
5542
5543                    3 => {
5544                        if let Some(value) = self.environment.take() {
5545                            ::fidl_next::wire::Envelope::encode_value::<
5546                                ::fidl_next::wire::String<'static>,
5547                                ___E,
5548                            >(
5549                                value, preallocated.encoder, &mut out, 100
5550                            )?;
5551                        } else {
5552                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
5553                        }
5554                    }
5555
5556                    2 => {
5557                        if let Some(value) = self.durability.take() {
5558                            ::fidl_next::wire::Envelope::encode_value::<
5559                                crate::wire::Durability,
5560                                ___E,
5561                            >(
5562                                value, preallocated.encoder, &mut out, ()
5563                            )?;
5564                        } else {
5565                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
5566                        }
5567                    }
5568
5569                    1 => {
5570                        if let Some(value) = self.name.take() {
5571                            ::fidl_next::wire::Envelope::encode_value::<
5572                                ::fidl_next::wire::String<'static>,
5573                                ___E,
5574                            >(
5575                                value, preallocated.encoder, &mut out, 100
5576                            )?;
5577                        } else {
5578                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
5579                        }
5580                    }
5581
5582                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
5583                }
5584                unsafe {
5585                    preallocated.write_next(out.assume_init_ref());
5586                }
5587            }
5588
5589            ::fidl_next::wire::Table::encode_len(table, max_ord);
5590
5591            Ok(())
5592        }
5593    }
5594
5595    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::Collection<'static>, ___E> for &'a Collection
5596    where
5597        ___E: ::fidl_next::Encoder + ?Sized,
5598    {
5599        #[inline]
5600        fn encode(
5601            self,
5602            encoder: &mut ___E,
5603            out: &mut ::core::mem::MaybeUninit<crate::wire::Collection<'static>>,
5604            _: (),
5605        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
5606            ::fidl_next::munge!(let crate::wire::Collection { table } = out);
5607
5608            let max_ord = self.__max_ordinal();
5609
5610            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
5611            ::fidl_next::Wire::zero_padding(&mut out);
5612
5613            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
5614                ::fidl_next::wire::Envelope,
5615            >(encoder, max_ord);
5616
5617            for i in 1..=max_ord {
5618                match i {
5619                    6 => {
5620                        if let Some(value) = &self.persistent_storage {
5621                            ::fidl_next::wire::Envelope::encode_value::<bool, ___E>(
5622                                value,
5623                                preallocated.encoder,
5624                                &mut out,
5625                                (),
5626                            )?;
5627                        } else {
5628                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
5629                        }
5630                    }
5631
5632                    5 => {
5633                        if let Some(value) = &self.allow_long_names {
5634                            ::fidl_next::wire::Envelope::encode_value::<bool, ___E>(
5635                                value,
5636                                preallocated.encoder,
5637                                &mut out,
5638                                (),
5639                            )?;
5640                        } else {
5641                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
5642                        }
5643                    }
5644
5645                    4 => {
5646                        if let Some(value) = &self.allowed_offers {
5647                            ::fidl_next::wire::Envelope::encode_value::<
5648                                crate::wire::AllowedOffers,
5649                                ___E,
5650                            >(
5651                                value, preallocated.encoder, &mut out, ()
5652                            )?;
5653                        } else {
5654                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
5655                        }
5656                    }
5657
5658                    3 => {
5659                        if let Some(value) = &self.environment {
5660                            ::fidl_next::wire::Envelope::encode_value::<
5661                                ::fidl_next::wire::String<'static>,
5662                                ___E,
5663                            >(
5664                                value, preallocated.encoder, &mut out, 100
5665                            )?;
5666                        } else {
5667                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
5668                        }
5669                    }
5670
5671                    2 => {
5672                        if let Some(value) = &self.durability {
5673                            ::fidl_next::wire::Envelope::encode_value::<
5674                                crate::wire::Durability,
5675                                ___E,
5676                            >(
5677                                value, preallocated.encoder, &mut out, ()
5678                            )?;
5679                        } else {
5680                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
5681                        }
5682                    }
5683
5684                    1 => {
5685                        if let Some(value) = &self.name {
5686                            ::fidl_next::wire::Envelope::encode_value::<
5687                                ::fidl_next::wire::String<'static>,
5688                                ___E,
5689                            >(
5690                                value, preallocated.encoder, &mut out, 100
5691                            )?;
5692                        } else {
5693                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
5694                        }
5695                    }
5696
5697                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
5698                }
5699                unsafe {
5700                    preallocated.write_next(out.assume_init_ref());
5701                }
5702            }
5703
5704            ::fidl_next::wire::Table::encode_len(table, max_ord);
5705
5706            Ok(())
5707        }
5708    }
5709
5710    impl<'de> ::fidl_next::FromWire<crate::wire::Collection<'de>> for Collection {
5711        #[inline]
5712        fn from_wire(wire_: crate::wire::Collection<'de>) -> Self {
5713            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
5714
5715            let name = wire_.table.get(1);
5716
5717            let durability = wire_.table.get(2);
5718
5719            let environment = wire_.table.get(3);
5720
5721            let allowed_offers = wire_.table.get(4);
5722
5723            let allow_long_names = wire_.table.get(5);
5724
5725            let persistent_storage = wire_.table.get(6);
5726
5727            Self {
5728                name: name.map(|envelope| {
5729                    ::fidl_next::FromWire::from_wire(unsafe {
5730                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
5731                    })
5732                }),
5733
5734                durability: durability.map(|envelope| {
5735                    ::fidl_next::FromWire::from_wire(unsafe {
5736                        envelope.read_unchecked::<crate::wire::Durability>()
5737                    })
5738                }),
5739
5740                environment: environment.map(|envelope| {
5741                    ::fidl_next::FromWire::from_wire(unsafe {
5742                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
5743                    })
5744                }),
5745
5746                allowed_offers: allowed_offers.map(|envelope| {
5747                    ::fidl_next::FromWire::from_wire(unsafe {
5748                        envelope.read_unchecked::<crate::wire::AllowedOffers>()
5749                    })
5750                }),
5751
5752                allow_long_names: allow_long_names.map(|envelope| {
5753                    ::fidl_next::FromWire::from_wire(unsafe { envelope.read_unchecked::<bool>() })
5754                }),
5755
5756                persistent_storage: persistent_storage.map(|envelope| {
5757                    ::fidl_next::FromWire::from_wire(unsafe { envelope.read_unchecked::<bool>() })
5758                }),
5759            }
5760        }
5761    }
5762
5763    impl<'de> ::fidl_next::FromWireRef<crate::wire::Collection<'de>> for Collection {
5764        #[inline]
5765        fn from_wire_ref(wire: &crate::wire::Collection<'de>) -> Self {
5766            Self {
5767                name: wire.table.get(1).map(|envelope| {
5768                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
5769                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
5770                    })
5771                }),
5772
5773                durability: wire.table.get(2).map(|envelope| {
5774                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
5775                        envelope.deref_unchecked::<crate::wire::Durability>()
5776                    })
5777                }),
5778
5779                environment: wire.table.get(3).map(|envelope| {
5780                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
5781                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
5782                    })
5783                }),
5784
5785                allowed_offers: wire.table.get(4).map(|envelope| {
5786                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
5787                        envelope.deref_unchecked::<crate::wire::AllowedOffers>()
5788                    })
5789                }),
5790
5791                allow_long_names: wire.table.get(5).map(|envelope| {
5792                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
5793                        envelope.deref_unchecked::<bool>()
5794                    })
5795                }),
5796
5797                persistent_storage: wire.table.get(6).map(|envelope| {
5798                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
5799                        envelope.deref_unchecked::<bool>()
5800                    })
5801                }),
5802            }
5803        }
5804    }
5805
5806    #[doc = " Describes the type of dependency implied by the capability.\n"]
5807    #[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
5808    #[repr(u32)]
5809    pub enum DependencyType {
5810        Strong = 1,
5811        Weak = 2,
5812    }
5813    impl ::core::convert::TryFrom<u32> for DependencyType {
5814        type Error = ::fidl_next::UnknownStrictEnumMemberError;
5815        fn try_from(
5816            value: u32,
5817        ) -> ::core::result::Result<Self, ::fidl_next::UnknownStrictEnumMemberError> {
5818            match value {
5819                1 => Ok(Self::Strong),
5820                2 => Ok(Self::Weak),
5821
5822                _ => Err(::fidl_next::UnknownStrictEnumMemberError::new(value.into())),
5823            }
5824        }
5825    }
5826
5827    impl ::std::convert::From<DependencyType> for u32 {
5828        fn from(value: DependencyType) -> Self {
5829            match value {
5830                DependencyType::Strong => 1,
5831                DependencyType::Weak => 2,
5832            }
5833        }
5834    }
5835
5836    unsafe impl<___E> ::fidl_next::Encode<crate::wire::DependencyType, ___E> for DependencyType
5837    where
5838        ___E: ?Sized,
5839    {
5840        #[inline]
5841        fn encode(
5842            self,
5843            encoder: &mut ___E,
5844            out: &mut ::core::mem::MaybeUninit<crate::wire::DependencyType>,
5845            _: (),
5846        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
5847            ::fidl_next::Encode::encode(&self, encoder, out, ())
5848        }
5849    }
5850
5851    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::DependencyType, ___E> for &'a DependencyType
5852    where
5853        ___E: ?Sized,
5854    {
5855        #[inline]
5856        fn encode(
5857            self,
5858            encoder: &mut ___E,
5859            out: &mut ::core::mem::MaybeUninit<crate::wire::DependencyType>,
5860            _: (),
5861        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
5862            ::fidl_next::munge!(let crate::wire::DependencyType { value } = out);
5863            let _ = value.write(::fidl_next::wire::Uint32::from(match *self {
5864                DependencyType::Strong => 1,
5865
5866                DependencyType::Weak => 2,
5867            }));
5868
5869            Ok(())
5870        }
5871    }
5872
5873    impl ::core::convert::From<crate::wire::DependencyType> for DependencyType {
5874        fn from(wire: crate::wire::DependencyType) -> Self {
5875            match u32::from(wire.value) {
5876                1 => Self::Strong,
5877
5878                2 => Self::Weak,
5879
5880                _ => unsafe { ::core::hint::unreachable_unchecked() },
5881            }
5882        }
5883    }
5884
5885    impl ::fidl_next::FromWire<crate::wire::DependencyType> for DependencyType {
5886        #[inline]
5887        fn from_wire(wire: crate::wire::DependencyType) -> Self {
5888            Self::from(wire)
5889        }
5890    }
5891
5892    impl ::fidl_next::FromWireRef<crate::wire::DependencyType> for DependencyType {
5893        #[inline]
5894        fn from_wire_ref(wire: &crate::wire::DependencyType) -> Self {
5895            Self::from(*wire)
5896        }
5897    }
5898
5899    #[doc = " Type used to create a mapping between 2 names. Used to rename service or component instances\n in FIDL declarations.\n"]
5900    #[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
5901    pub struct NameMapping {
5902        pub source_name: ::std::string::String,
5903
5904        pub target_name: ::std::string::String,
5905    }
5906
5907    unsafe impl<___E> ::fidl_next::Encode<crate::wire::NameMapping<'static>, ___E> for NameMapping
5908    where
5909        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
5910        ___E: ::fidl_next::Encoder,
5911    {
5912        #[inline]
5913        fn encode(
5914            self,
5915            encoder_: &mut ___E,
5916            out_: &mut ::core::mem::MaybeUninit<crate::wire::NameMapping<'static>>,
5917            _: (),
5918        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
5919            ::fidl_next::munge! {
5920                let crate::wire::NameMapping {
5921                    source_name,
5922                    target_name,
5923
5924                } = out_;
5925            }
5926
5927            ::fidl_next::Encode::encode(self.source_name, encoder_, source_name, 100)?;
5928
5929            let mut _field = unsafe { ::fidl_next::Slot::new_unchecked(source_name.as_mut_ptr()) };
5930            ::fidl_next::Constrained::validate(_field, 100)?;
5931
5932            ::fidl_next::Encode::encode(self.target_name, encoder_, target_name, 100)?;
5933
5934            let mut _field = unsafe { ::fidl_next::Slot::new_unchecked(target_name.as_mut_ptr()) };
5935            ::fidl_next::Constrained::validate(_field, 100)?;
5936
5937            Ok(())
5938        }
5939    }
5940
5941    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::NameMapping<'static>, ___E>
5942        for &'a NameMapping
5943    where
5944        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
5945        ___E: ::fidl_next::Encoder,
5946    {
5947        #[inline]
5948        fn encode(
5949            self,
5950            encoder_: &mut ___E,
5951            out_: &mut ::core::mem::MaybeUninit<crate::wire::NameMapping<'static>>,
5952            _: (),
5953        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
5954            ::fidl_next::munge! {
5955                let crate::wire::NameMapping {
5956                    source_name,
5957                    target_name,
5958
5959                } = out_;
5960            }
5961
5962            ::fidl_next::Encode::encode(&self.source_name, encoder_, source_name, 100)?;
5963
5964            let mut _field = unsafe { ::fidl_next::Slot::new_unchecked(source_name.as_mut_ptr()) };
5965            ::fidl_next::Constrained::validate(_field, 100)?;
5966
5967            ::fidl_next::Encode::encode(&self.target_name, encoder_, target_name, 100)?;
5968
5969            let mut _field = unsafe { ::fidl_next::Slot::new_unchecked(target_name.as_mut_ptr()) };
5970            ::fidl_next::Constrained::validate(_field, 100)?;
5971
5972            Ok(())
5973        }
5974    }
5975
5976    unsafe impl<___E>
5977        ::fidl_next::EncodeOption<
5978            ::fidl_next::wire::Box<'static, crate::wire::NameMapping<'static>>,
5979            ___E,
5980        > for NameMapping
5981    where
5982        ___E: ::fidl_next::Encoder + ?Sized,
5983        NameMapping: ::fidl_next::Encode<crate::wire::NameMapping<'static>, ___E>,
5984    {
5985        #[inline]
5986        fn encode_option(
5987            this: ::core::option::Option<Self>,
5988            encoder: &mut ___E,
5989            out: &mut ::core::mem::MaybeUninit<
5990                ::fidl_next::wire::Box<'static, crate::wire::NameMapping<'static>>,
5991            >,
5992            _: (),
5993        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
5994            if let Some(inner) = this {
5995                ::fidl_next::EncoderExt::encode_next(encoder, inner)?;
5996                ::fidl_next::wire::Box::encode_present(out);
5997            } else {
5998                ::fidl_next::wire::Box::encode_absent(out);
5999            }
6000
6001            Ok(())
6002        }
6003    }
6004
6005    unsafe impl<'a, ___E>
6006        ::fidl_next::EncodeOption<
6007            ::fidl_next::wire::Box<'static, crate::wire::NameMapping<'static>>,
6008            ___E,
6009        > for &'a NameMapping
6010    where
6011        ___E: ::fidl_next::Encoder + ?Sized,
6012        &'a NameMapping: ::fidl_next::Encode<crate::wire::NameMapping<'static>, ___E>,
6013    {
6014        #[inline]
6015        fn encode_option(
6016            this: ::core::option::Option<Self>,
6017            encoder: &mut ___E,
6018            out: &mut ::core::mem::MaybeUninit<
6019                ::fidl_next::wire::Box<'static, crate::wire::NameMapping<'static>>,
6020            >,
6021            _: (),
6022        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
6023            if let Some(inner) = this {
6024                ::fidl_next::EncoderExt::encode_next(encoder, inner)?;
6025                ::fidl_next::wire::Box::encode_present(out);
6026            } else {
6027                ::fidl_next::wire::Box::encode_absent(out);
6028            }
6029
6030            Ok(())
6031        }
6032    }
6033
6034    impl<'de> ::fidl_next::FromWire<crate::wire::NameMapping<'de>> for NameMapping {
6035        #[inline]
6036        fn from_wire(wire: crate::wire::NameMapping<'de>) -> Self {
6037            Self {
6038                source_name: ::fidl_next::FromWire::from_wire(wire.source_name),
6039
6040                target_name: ::fidl_next::FromWire::from_wire(wire.target_name),
6041            }
6042        }
6043    }
6044
6045    impl<'de> ::fidl_next::FromWireRef<crate::wire::NameMapping<'de>> for NameMapping {
6046        #[inline]
6047        fn from_wire_ref(wire: &crate::wire::NameMapping<'de>) -> Self {
6048            Self {
6049                source_name: ::fidl_next::FromWireRef::from_wire_ref(&wire.source_name),
6050
6051                target_name: ::fidl_next::FromWireRef::from_wire_ref(&wire.target_name),
6052            }
6053        }
6054    }
6055
6056    #[doc = " Specifies how a declared environment\'s initial set of properties are assigned.\n"]
6057    #[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
6058    #[repr(u32)]
6059    pub enum EnvironmentExtends {
6060        None = 0,
6061        Realm = 1,
6062    }
6063    impl ::core::convert::TryFrom<u32> for EnvironmentExtends {
6064        type Error = ::fidl_next::UnknownStrictEnumMemberError;
6065        fn try_from(
6066            value: u32,
6067        ) -> ::core::result::Result<Self, ::fidl_next::UnknownStrictEnumMemberError> {
6068            match value {
6069                0 => Ok(Self::None),
6070                1 => Ok(Self::Realm),
6071
6072                _ => Err(::fidl_next::UnknownStrictEnumMemberError::new(value.into())),
6073            }
6074        }
6075    }
6076
6077    impl ::std::convert::From<EnvironmentExtends> for u32 {
6078        fn from(value: EnvironmentExtends) -> Self {
6079            match value {
6080                EnvironmentExtends::None => 0,
6081                EnvironmentExtends::Realm => 1,
6082            }
6083        }
6084    }
6085
6086    unsafe impl<___E> ::fidl_next::Encode<crate::wire::EnvironmentExtends, ___E> for EnvironmentExtends
6087    where
6088        ___E: ?Sized,
6089    {
6090        #[inline]
6091        fn encode(
6092            self,
6093            encoder: &mut ___E,
6094            out: &mut ::core::mem::MaybeUninit<crate::wire::EnvironmentExtends>,
6095            _: (),
6096        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
6097            ::fidl_next::Encode::encode(&self, encoder, out, ())
6098        }
6099    }
6100
6101    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::EnvironmentExtends, ___E>
6102        for &'a EnvironmentExtends
6103    where
6104        ___E: ?Sized,
6105    {
6106        #[inline]
6107        fn encode(
6108            self,
6109            encoder: &mut ___E,
6110            out: &mut ::core::mem::MaybeUninit<crate::wire::EnvironmentExtends>,
6111            _: (),
6112        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
6113            ::fidl_next::munge!(let crate::wire::EnvironmentExtends { value } = out);
6114            let _ = value.write(::fidl_next::wire::Uint32::from(match *self {
6115                EnvironmentExtends::None => 0,
6116
6117                EnvironmentExtends::Realm => 1,
6118            }));
6119
6120            Ok(())
6121        }
6122    }
6123
6124    impl ::core::convert::From<crate::wire::EnvironmentExtends> for EnvironmentExtends {
6125        fn from(wire: crate::wire::EnvironmentExtends) -> Self {
6126            match u32::from(wire.value) {
6127                0 => Self::None,
6128
6129                1 => Self::Realm,
6130
6131                _ => unsafe { ::core::hint::unreachable_unchecked() },
6132            }
6133        }
6134    }
6135
6136    impl ::fidl_next::FromWire<crate::wire::EnvironmentExtends> for EnvironmentExtends {
6137        #[inline]
6138        fn from_wire(wire: crate::wire::EnvironmentExtends) -> Self {
6139            Self::from(wire)
6140        }
6141    }
6142
6143    impl ::fidl_next::FromWireRef<crate::wire::EnvironmentExtends> for EnvironmentExtends {
6144        #[inline]
6145        fn from_wire_ref(wire: &crate::wire::EnvironmentExtends) -> Self {
6146            Self::from(*wire)
6147        }
6148    }
6149
6150    pub type UrlScheme = ::std::string::String;
6151
6152    #[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
6153    #[repr(u32)]
6154    pub enum ConfigTypeLayout {
6155        Bool = 1,
6156        Uint8 = 2,
6157        Uint16 = 3,
6158        Uint32 = 4,
6159        Uint64 = 5,
6160        Int8 = 6,
6161        Int16 = 7,
6162        Int32 = 8,
6163        Int64 = 9,
6164        String = 10,
6165        Vector = 11,
6166        UnknownOrdinal_(u32) = 12,
6167    }
6168    impl ::std::convert::From<u32> for ConfigTypeLayout {
6169        fn from(value: u32) -> Self {
6170            match value {
6171                1 => Self::Bool,
6172                2 => Self::Uint8,
6173                3 => Self::Uint16,
6174                4 => Self::Uint32,
6175                5 => Self::Uint64,
6176                6 => Self::Int8,
6177                7 => Self::Int16,
6178                8 => Self::Int32,
6179                9 => Self::Int64,
6180                10 => Self::String,
6181                11 => Self::Vector,
6182
6183                _ => Self::UnknownOrdinal_(value),
6184            }
6185        }
6186    }
6187
6188    impl ::std::convert::From<ConfigTypeLayout> for u32 {
6189        fn from(value: ConfigTypeLayout) -> Self {
6190            match value {
6191                ConfigTypeLayout::Bool => 1,
6192                ConfigTypeLayout::Uint8 => 2,
6193                ConfigTypeLayout::Uint16 => 3,
6194                ConfigTypeLayout::Uint32 => 4,
6195                ConfigTypeLayout::Uint64 => 5,
6196                ConfigTypeLayout::Int8 => 6,
6197                ConfigTypeLayout::Int16 => 7,
6198                ConfigTypeLayout::Int32 => 8,
6199                ConfigTypeLayout::Int64 => 9,
6200                ConfigTypeLayout::String => 10,
6201                ConfigTypeLayout::Vector => 11,
6202
6203                ConfigTypeLayout::UnknownOrdinal_(value) => value,
6204            }
6205        }
6206    }
6207
6208    unsafe impl<___E> ::fidl_next::Encode<crate::wire::ConfigTypeLayout, ___E> for ConfigTypeLayout
6209    where
6210        ___E: ?Sized,
6211    {
6212        #[inline]
6213        fn encode(
6214            self,
6215            encoder: &mut ___E,
6216            out: &mut ::core::mem::MaybeUninit<crate::wire::ConfigTypeLayout>,
6217            _: (),
6218        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
6219            ::fidl_next::Encode::encode(&self, encoder, out, ())
6220        }
6221    }
6222
6223    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::ConfigTypeLayout, ___E>
6224        for &'a ConfigTypeLayout
6225    where
6226        ___E: ?Sized,
6227    {
6228        #[inline]
6229        fn encode(
6230            self,
6231            encoder: &mut ___E,
6232            out: &mut ::core::mem::MaybeUninit<crate::wire::ConfigTypeLayout>,
6233            _: (),
6234        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
6235            ::fidl_next::munge!(let crate::wire::ConfigTypeLayout { value } = out);
6236            let _ = value.write(::fidl_next::wire::Uint32::from(match *self {
6237                ConfigTypeLayout::Bool => 1,
6238
6239                ConfigTypeLayout::Uint8 => 2,
6240
6241                ConfigTypeLayout::Uint16 => 3,
6242
6243                ConfigTypeLayout::Uint32 => 4,
6244
6245                ConfigTypeLayout::Uint64 => 5,
6246
6247                ConfigTypeLayout::Int8 => 6,
6248
6249                ConfigTypeLayout::Int16 => 7,
6250
6251                ConfigTypeLayout::Int32 => 8,
6252
6253                ConfigTypeLayout::Int64 => 9,
6254
6255                ConfigTypeLayout::String => 10,
6256
6257                ConfigTypeLayout::Vector => 11,
6258
6259                ConfigTypeLayout::UnknownOrdinal_(value) => value,
6260            }));
6261
6262            Ok(())
6263        }
6264    }
6265
6266    impl ::core::convert::From<crate::wire::ConfigTypeLayout> for ConfigTypeLayout {
6267        fn from(wire: crate::wire::ConfigTypeLayout) -> Self {
6268            match u32::from(wire.value) {
6269                1 => Self::Bool,
6270
6271                2 => Self::Uint8,
6272
6273                3 => Self::Uint16,
6274
6275                4 => Self::Uint32,
6276
6277                5 => Self::Uint64,
6278
6279                6 => Self::Int8,
6280
6281                7 => Self::Int16,
6282
6283                8 => Self::Int32,
6284
6285                9 => Self::Int64,
6286
6287                10 => Self::String,
6288
6289                11 => Self::Vector,
6290
6291                value => Self::UnknownOrdinal_(value),
6292            }
6293        }
6294    }
6295
6296    impl ::fidl_next::FromWire<crate::wire::ConfigTypeLayout> for ConfigTypeLayout {
6297        #[inline]
6298        fn from_wire(wire: crate::wire::ConfigTypeLayout) -> Self {
6299            Self::from(wire)
6300        }
6301    }
6302
6303    impl ::fidl_next::FromWireRef<crate::wire::ConfigTypeLayout> for ConfigTypeLayout {
6304        #[inline]
6305        fn from_wire_ref(wire: &crate::wire::ConfigTypeLayout) -> Self {
6306            Self::from(*wire)
6307        }
6308    }
6309
6310    #[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
6311    pub enum LayoutConstraint {
6312        MaxSize(u32),
6313
6314        UnknownOrdinal_(u64),
6315    }
6316
6317    impl LayoutConstraint {
6318        pub fn is_unknown(&self) -> bool {
6319            #[allow(unreachable_patterns)]
6320            match self {
6321                Self::UnknownOrdinal_(_) => true,
6322                _ => false,
6323            }
6324        }
6325    }
6326
6327    unsafe impl<___E> ::fidl_next::Encode<crate::wire::LayoutConstraint<'static>, ___E>
6328        for LayoutConstraint
6329    where
6330        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
6331        ___E: ::fidl_next::Encoder,
6332    {
6333        #[inline]
6334        fn encode(
6335            self,
6336            encoder: &mut ___E,
6337            out: &mut ::core::mem::MaybeUninit<crate::wire::LayoutConstraint<'static>>,
6338            _: (),
6339        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
6340            ::fidl_next::munge!(let crate::wire::LayoutConstraint { raw, _phantom: _ } = out);
6341
6342            match self {
6343                Self::MaxSize(value) => ::fidl_next::wire::Union::encode_as::<
6344                    ___E,
6345                    ::fidl_next::wire::Uint32,
6346                >(value, 1, encoder, raw, ())?,
6347
6348                Self::UnknownOrdinal_(ordinal) => {
6349                    return Err(::fidl_next::EncodeError::UnknownUnionOrdinal(ordinal as usize));
6350                }
6351            }
6352
6353            Ok(())
6354        }
6355    }
6356
6357    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::LayoutConstraint<'static>, ___E>
6358        for &'a LayoutConstraint
6359    where
6360        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
6361        ___E: ::fidl_next::Encoder,
6362    {
6363        #[inline]
6364        fn encode(
6365            self,
6366            encoder: &mut ___E,
6367            out: &mut ::core::mem::MaybeUninit<crate::wire::LayoutConstraint<'static>>,
6368            _: (),
6369        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
6370            ::fidl_next::munge!(let crate::wire::LayoutConstraint { raw, _phantom: _ } = out);
6371
6372            match self {
6373                LayoutConstraint::MaxSize(value) => ::fidl_next::wire::Union::encode_as::<
6374                    ___E,
6375                    ::fidl_next::wire::Uint32,
6376                >(value, 1, encoder, raw, ())?,
6377
6378                LayoutConstraint::UnknownOrdinal_(ordinal) => {
6379                    return Err(::fidl_next::EncodeError::UnknownUnionOrdinal(*ordinal as usize));
6380                }
6381            }
6382
6383            Ok(())
6384        }
6385    }
6386
6387    unsafe impl<___E>
6388        ::fidl_next::EncodeOption<crate::wire_optional::LayoutConstraint<'static>, ___E>
6389        for LayoutConstraint
6390    where
6391        ___E: ?Sized,
6392        LayoutConstraint: ::fidl_next::Encode<crate::wire::LayoutConstraint<'static>, ___E>,
6393    {
6394        #[inline]
6395        fn encode_option(
6396            this: ::core::option::Option<Self>,
6397            encoder: &mut ___E,
6398            out: &mut ::core::mem::MaybeUninit<crate::wire_optional::LayoutConstraint<'static>>,
6399            _: (),
6400        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
6401            ::fidl_next::munge!(let crate::wire_optional::LayoutConstraint { raw, _phantom: _ } = &mut *out);
6402
6403            if let Some(inner) = this {
6404                let value_out = unsafe { &mut *out.as_mut_ptr().cast() };
6405                ::fidl_next::Encode::encode(inner, encoder, value_out, ())?;
6406            } else {
6407                ::fidl_next::wire::Union::encode_absent(raw);
6408            }
6409
6410            Ok(())
6411        }
6412    }
6413
6414    unsafe impl<'a, ___E>
6415        ::fidl_next::EncodeOption<crate::wire_optional::LayoutConstraint<'static>, ___E>
6416        for &'a LayoutConstraint
6417    where
6418        ___E: ?Sized,
6419        &'a LayoutConstraint: ::fidl_next::Encode<crate::wire::LayoutConstraint<'static>, ___E>,
6420    {
6421        #[inline]
6422        fn encode_option(
6423            this: ::core::option::Option<Self>,
6424            encoder: &mut ___E,
6425            out: &mut ::core::mem::MaybeUninit<crate::wire_optional::LayoutConstraint<'static>>,
6426            _: (),
6427        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
6428            ::fidl_next::munge!(let crate::wire_optional::LayoutConstraint { raw, _phantom: _ } = &mut *out);
6429
6430            if let Some(inner) = this {
6431                let value_out = unsafe { &mut *out.as_mut_ptr().cast() };
6432                ::fidl_next::Encode::encode(inner, encoder, value_out, ())?;
6433            } else {
6434                ::fidl_next::wire::Union::encode_absent(raw);
6435            }
6436
6437            Ok(())
6438        }
6439    }
6440
6441    impl<'de> ::fidl_next::FromWire<crate::wire::LayoutConstraint<'de>> for LayoutConstraint {
6442        #[inline]
6443        fn from_wire(wire: crate::wire::LayoutConstraint<'de>) -> Self {
6444            let wire = ::core::mem::ManuallyDrop::new(wire);
6445            match wire.raw.ordinal() {
6446                1 => Self::MaxSize(::fidl_next::FromWire::from_wire(unsafe {
6447                    wire.raw.get().read_unchecked::<::fidl_next::wire::Uint32>()
6448                })),
6449
6450                ord => return Self::UnknownOrdinal_(ord as u64),
6451            }
6452        }
6453    }
6454
6455    impl<'de> ::fidl_next::FromWireRef<crate::wire::LayoutConstraint<'de>> for LayoutConstraint {
6456        #[inline]
6457        fn from_wire_ref(wire: &crate::wire::LayoutConstraint<'de>) -> Self {
6458            match wire.raw.ordinal() {
6459                1 => Self::MaxSize(::fidl_next::FromWireRef::from_wire_ref(unsafe {
6460                    wire.raw.get().deref_unchecked::<::fidl_next::wire::Uint32>()
6461                })),
6462
6463                ord => return Self::UnknownOrdinal_(ord as u64),
6464            }
6465        }
6466    }
6467
6468    impl<'de> ::fidl_next::FromWireOption<crate::wire_optional::LayoutConstraint<'de>>
6469        for LayoutConstraint
6470    {
6471        #[inline]
6472        fn from_wire_option(
6473            wire: crate::wire_optional::LayoutConstraint<'de>,
6474        ) -> ::core::option::Option<Self> {
6475            if let Some(inner) = wire.into_option() {
6476                Some(::fidl_next::FromWire::from_wire(inner))
6477            } else {
6478                None
6479            }
6480        }
6481    }
6482
6483    impl<'de> ::fidl_next::FromWireOption<crate::wire_optional::LayoutConstraint<'de>>
6484        for Box<LayoutConstraint>
6485    {
6486        #[inline]
6487        fn from_wire_option(
6488            wire: crate::wire_optional::LayoutConstraint<'de>,
6489        ) -> ::core::option::Option<Self> {
6490            <LayoutConstraint as ::fidl_next::FromWireOption<
6491                crate::wire_optional::LayoutConstraint<'de>,
6492            >>::from_wire_option(wire)
6493            .map(Box::new)
6494        }
6495    }
6496
6497    impl<'de> ::fidl_next::FromWireOptionRef<crate::wire_optional::LayoutConstraint<'de>>
6498        for Box<LayoutConstraint>
6499    {
6500        #[inline]
6501        fn from_wire_option_ref(
6502            wire: &crate::wire_optional::LayoutConstraint<'de>,
6503        ) -> ::core::option::Option<Self> {
6504            if let Some(inner) = wire.as_ref() {
6505                Some(Box::new(::fidl_next::FromWireRef::from_wire_ref(inner)))
6506            } else {
6507                None
6508            }
6509        }
6510    }
6511
6512    #[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
6513    pub struct ConfigType {
6514        pub layout: crate::natural::ConfigTypeLayout,
6515
6516        pub parameters: ::core::option::Option<::std::vec::Vec<crate::natural::LayoutParameter>>,
6517
6518        pub constraints: ::std::vec::Vec<crate::natural::LayoutConstraint>,
6519    }
6520
6521    unsafe impl<___E> ::fidl_next::Encode<crate::wire::ConfigType<'static>, ___E> for ConfigType
6522    where
6523        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
6524        ___E: ::fidl_next::Encoder,
6525    {
6526        #[inline]
6527        fn encode(
6528            self,
6529            encoder_: &mut ___E,
6530            out_: &mut ::core::mem::MaybeUninit<crate::wire::ConfigType<'static>>,
6531            _: (),
6532        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
6533            ::fidl_next::munge! {
6534                let crate::wire::ConfigType {
6535                    layout,
6536                    parameters,
6537                    constraints,
6538
6539                } = out_;
6540            }
6541
6542            ::fidl_next::Encode::encode(self.layout, encoder_, layout, ())?;
6543
6544            let mut _field = unsafe { ::fidl_next::Slot::new_unchecked(layout.as_mut_ptr()) };
6545
6546            ::fidl_next::Encode::encode(self.parameters, encoder_, parameters, (4294967295, ()))?;
6547
6548            let mut _field = unsafe { ::fidl_next::Slot::new_unchecked(parameters.as_mut_ptr()) };
6549            ::fidl_next::Constrained::validate(_field, (4294967295, ()))?;
6550
6551            ::fidl_next::Encode::encode(self.constraints, encoder_, constraints, (4294967295, ()))?;
6552
6553            let mut _field = unsafe { ::fidl_next::Slot::new_unchecked(constraints.as_mut_ptr()) };
6554            ::fidl_next::Constrained::validate(_field, (4294967295, ()))?;
6555
6556            Ok(())
6557        }
6558    }
6559
6560    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::ConfigType<'static>, ___E> for &'a ConfigType
6561    where
6562        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
6563        ___E: ::fidl_next::Encoder,
6564    {
6565        #[inline]
6566        fn encode(
6567            self,
6568            encoder_: &mut ___E,
6569            out_: &mut ::core::mem::MaybeUninit<crate::wire::ConfigType<'static>>,
6570            _: (),
6571        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
6572            ::fidl_next::munge! {
6573                let crate::wire::ConfigType {
6574                    layout,
6575                    parameters,
6576                    constraints,
6577
6578                } = out_;
6579            }
6580
6581            ::fidl_next::Encode::encode(&self.layout, encoder_, layout, ())?;
6582
6583            let mut _field = unsafe { ::fidl_next::Slot::new_unchecked(layout.as_mut_ptr()) };
6584
6585            ::fidl_next::Encode::encode(&self.parameters, encoder_, parameters, (4294967295, ()))?;
6586
6587            let mut _field = unsafe { ::fidl_next::Slot::new_unchecked(parameters.as_mut_ptr()) };
6588            ::fidl_next::Constrained::validate(_field, (4294967295, ()))?;
6589
6590            ::fidl_next::Encode::encode(
6591                &self.constraints,
6592                encoder_,
6593                constraints,
6594                (4294967295, ()),
6595            )?;
6596
6597            let mut _field = unsafe { ::fidl_next::Slot::new_unchecked(constraints.as_mut_ptr()) };
6598            ::fidl_next::Constrained::validate(_field, (4294967295, ()))?;
6599
6600            Ok(())
6601        }
6602    }
6603
6604    unsafe impl<___E>
6605        ::fidl_next::EncodeOption<
6606            ::fidl_next::wire::Box<'static, crate::wire::ConfigType<'static>>,
6607            ___E,
6608        > for ConfigType
6609    where
6610        ___E: ::fidl_next::Encoder + ?Sized,
6611        ConfigType: ::fidl_next::Encode<crate::wire::ConfigType<'static>, ___E>,
6612    {
6613        #[inline]
6614        fn encode_option(
6615            this: ::core::option::Option<Self>,
6616            encoder: &mut ___E,
6617            out: &mut ::core::mem::MaybeUninit<
6618                ::fidl_next::wire::Box<'static, crate::wire::ConfigType<'static>>,
6619            >,
6620            _: (),
6621        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
6622            if let Some(inner) = this {
6623                ::fidl_next::EncoderExt::encode_next(encoder, inner)?;
6624                ::fidl_next::wire::Box::encode_present(out);
6625            } else {
6626                ::fidl_next::wire::Box::encode_absent(out);
6627            }
6628
6629            Ok(())
6630        }
6631    }
6632
6633    unsafe impl<'a, ___E>
6634        ::fidl_next::EncodeOption<
6635            ::fidl_next::wire::Box<'static, crate::wire::ConfigType<'static>>,
6636            ___E,
6637        > for &'a ConfigType
6638    where
6639        ___E: ::fidl_next::Encoder + ?Sized,
6640        &'a ConfigType: ::fidl_next::Encode<crate::wire::ConfigType<'static>, ___E>,
6641    {
6642        #[inline]
6643        fn encode_option(
6644            this: ::core::option::Option<Self>,
6645            encoder: &mut ___E,
6646            out: &mut ::core::mem::MaybeUninit<
6647                ::fidl_next::wire::Box<'static, crate::wire::ConfigType<'static>>,
6648            >,
6649            _: (),
6650        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
6651            if let Some(inner) = this {
6652                ::fidl_next::EncoderExt::encode_next(encoder, inner)?;
6653                ::fidl_next::wire::Box::encode_present(out);
6654            } else {
6655                ::fidl_next::wire::Box::encode_absent(out);
6656            }
6657
6658            Ok(())
6659        }
6660    }
6661
6662    impl<'de> ::fidl_next::FromWire<crate::wire::ConfigType<'de>> for ConfigType {
6663        #[inline]
6664        fn from_wire(wire: crate::wire::ConfigType<'de>) -> Self {
6665            Self {
6666                layout: ::fidl_next::FromWire::from_wire(wire.layout),
6667
6668                parameters: ::fidl_next::FromWire::from_wire(wire.parameters),
6669
6670                constraints: ::fidl_next::FromWire::from_wire(wire.constraints),
6671            }
6672        }
6673    }
6674
6675    impl<'de> ::fidl_next::FromWireRef<crate::wire::ConfigType<'de>> for ConfigType {
6676        #[inline]
6677        fn from_wire_ref(wire: &crate::wire::ConfigType<'de>) -> Self {
6678            Self {
6679                layout: ::fidl_next::FromWireRef::from_wire_ref(&wire.layout),
6680
6681                parameters: ::fidl_next::FromWireRef::from_wire_ref(&wire.parameters),
6682
6683                constraints: ::fidl_next::FromWireRef::from_wire_ref(&wire.constraints),
6684            }
6685        }
6686    }
6687
6688    #[doc = " The checksum produced for a configuration interface.\n Two configuration interfaces are the same if their checksums are the same.\n"]
6689    #[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
6690    pub enum ConfigChecksum {
6691        Sha256([u8; 32]),
6692
6693        UnknownOrdinal_(u64),
6694    }
6695
6696    impl ConfigChecksum {
6697        pub fn is_unknown(&self) -> bool {
6698            #[allow(unreachable_patterns)]
6699            match self {
6700                Self::UnknownOrdinal_(_) => true,
6701                _ => false,
6702            }
6703        }
6704    }
6705
6706    unsafe impl<___E> ::fidl_next::Encode<crate::wire::ConfigChecksum<'static>, ___E> for ConfigChecksum
6707    where
6708        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
6709        ___E: ::fidl_next::Encoder,
6710    {
6711        #[inline]
6712        fn encode(
6713            self,
6714            encoder: &mut ___E,
6715            out: &mut ::core::mem::MaybeUninit<crate::wire::ConfigChecksum<'static>>,
6716            _: (),
6717        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
6718            ::fidl_next::munge!(let crate::wire::ConfigChecksum { raw, _phantom: _ } = out);
6719
6720            match self {
6721                Self::Sha256(value) => ::fidl_next::wire::Union::encode_as::<___E, [u8; 32]>(
6722                    value,
6723                    1,
6724                    encoder,
6725                    raw,
6726                    (),
6727                )?,
6728
6729                Self::UnknownOrdinal_(ordinal) => {
6730                    return Err(::fidl_next::EncodeError::UnknownUnionOrdinal(ordinal as usize));
6731                }
6732            }
6733
6734            Ok(())
6735        }
6736    }
6737
6738    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::ConfigChecksum<'static>, ___E>
6739        for &'a ConfigChecksum
6740    where
6741        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
6742        ___E: ::fidl_next::Encoder,
6743    {
6744        #[inline]
6745        fn encode(
6746            self,
6747            encoder: &mut ___E,
6748            out: &mut ::core::mem::MaybeUninit<crate::wire::ConfigChecksum<'static>>,
6749            _: (),
6750        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
6751            ::fidl_next::munge!(let crate::wire::ConfigChecksum { raw, _phantom: _ } = out);
6752
6753            match self {
6754                ConfigChecksum::Sha256(value) => ::fidl_next::wire::Union::encode_as::<
6755                    ___E,
6756                    [u8; 32],
6757                >(value, 1, encoder, raw, ())?,
6758
6759                ConfigChecksum::UnknownOrdinal_(ordinal) => {
6760                    return Err(::fidl_next::EncodeError::UnknownUnionOrdinal(*ordinal as usize));
6761                }
6762            }
6763
6764            Ok(())
6765        }
6766    }
6767
6768    unsafe impl<___E> ::fidl_next::EncodeOption<crate::wire_optional::ConfigChecksum<'static>, ___E>
6769        for ConfigChecksum
6770    where
6771        ___E: ?Sized,
6772        ConfigChecksum: ::fidl_next::Encode<crate::wire::ConfigChecksum<'static>, ___E>,
6773    {
6774        #[inline]
6775        fn encode_option(
6776            this: ::core::option::Option<Self>,
6777            encoder: &mut ___E,
6778            out: &mut ::core::mem::MaybeUninit<crate::wire_optional::ConfigChecksum<'static>>,
6779            _: (),
6780        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
6781            ::fidl_next::munge!(let crate::wire_optional::ConfigChecksum { raw, _phantom: _ } = &mut *out);
6782
6783            if let Some(inner) = this {
6784                let value_out = unsafe { &mut *out.as_mut_ptr().cast() };
6785                ::fidl_next::Encode::encode(inner, encoder, value_out, ())?;
6786            } else {
6787                ::fidl_next::wire::Union::encode_absent(raw);
6788            }
6789
6790            Ok(())
6791        }
6792    }
6793
6794    unsafe impl<'a, ___E>
6795        ::fidl_next::EncodeOption<crate::wire_optional::ConfigChecksum<'static>, ___E>
6796        for &'a ConfigChecksum
6797    where
6798        ___E: ?Sized,
6799        &'a ConfigChecksum: ::fidl_next::Encode<crate::wire::ConfigChecksum<'static>, ___E>,
6800    {
6801        #[inline]
6802        fn encode_option(
6803            this: ::core::option::Option<Self>,
6804            encoder: &mut ___E,
6805            out: &mut ::core::mem::MaybeUninit<crate::wire_optional::ConfigChecksum<'static>>,
6806            _: (),
6807        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
6808            ::fidl_next::munge!(let crate::wire_optional::ConfigChecksum { raw, _phantom: _ } = &mut *out);
6809
6810            if let Some(inner) = this {
6811                let value_out = unsafe { &mut *out.as_mut_ptr().cast() };
6812                ::fidl_next::Encode::encode(inner, encoder, value_out, ())?;
6813            } else {
6814                ::fidl_next::wire::Union::encode_absent(raw);
6815            }
6816
6817            Ok(())
6818        }
6819    }
6820
6821    impl<'de> ::fidl_next::FromWire<crate::wire::ConfigChecksum<'de>> for ConfigChecksum {
6822        #[inline]
6823        fn from_wire(wire: crate::wire::ConfigChecksum<'de>) -> Self {
6824            let wire = ::core::mem::ManuallyDrop::new(wire);
6825            match wire.raw.ordinal() {
6826                1 => Self::Sha256(::fidl_next::FromWire::from_wire(unsafe {
6827                    wire.raw.get().read_unchecked::<[u8; 32]>()
6828                })),
6829
6830                ord => return Self::UnknownOrdinal_(ord as u64),
6831            }
6832        }
6833    }
6834
6835    impl<'de> ::fidl_next::FromWireRef<crate::wire::ConfigChecksum<'de>> for ConfigChecksum {
6836        #[inline]
6837        fn from_wire_ref(wire: &crate::wire::ConfigChecksum<'de>) -> Self {
6838            match wire.raw.ordinal() {
6839                1 => Self::Sha256(::fidl_next::FromWireRef::from_wire_ref(unsafe {
6840                    wire.raw.get().deref_unchecked::<[u8; 32]>()
6841                })),
6842
6843                ord => return Self::UnknownOrdinal_(ord as u64),
6844            }
6845        }
6846    }
6847
6848    impl<'de> ::fidl_next::FromWireOption<crate::wire_optional::ConfigChecksum<'de>>
6849        for ConfigChecksum
6850    {
6851        #[inline]
6852        fn from_wire_option(
6853            wire: crate::wire_optional::ConfigChecksum<'de>,
6854        ) -> ::core::option::Option<Self> {
6855            if let Some(inner) = wire.into_option() {
6856                Some(::fidl_next::FromWire::from_wire(inner))
6857            } else {
6858                None
6859            }
6860        }
6861    }
6862
6863    impl<'de> ::fidl_next::FromWireOption<crate::wire_optional::ConfigChecksum<'de>>
6864        for Box<ConfigChecksum>
6865    {
6866        #[inline]
6867        fn from_wire_option(
6868            wire: crate::wire_optional::ConfigChecksum<'de>,
6869        ) -> ::core::option::Option<Self> {
6870            <ConfigChecksum as ::fidl_next::FromWireOption<
6871                crate::wire_optional::ConfigChecksum<'de>,
6872            >>::from_wire_option(wire)
6873            .map(Box::new)
6874        }
6875    }
6876
6877    impl<'de> ::fidl_next::FromWireOptionRef<crate::wire_optional::ConfigChecksum<'de>>
6878        for Box<ConfigChecksum>
6879    {
6880        #[inline]
6881        fn from_wire_option_ref(
6882            wire: &crate::wire_optional::ConfigChecksum<'de>,
6883        ) -> ::core::option::Option<Self> {
6884            if let Some(inner) = wire.as_ref() {
6885                Some(Box::new(::fidl_next::FromWireRef::from_wire_ref(inner)))
6886            } else {
6887                None
6888            }
6889        }
6890    }
6891
6892    #[doc = " Declares storage used by a component, which was offered to it.\n"]
6893    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
6894    pub struct UseStorage {
6895        pub source_name: ::core::option::Option<::std::string::String>,
6896
6897        pub target_path: ::core::option::Option<::std::string::String>,
6898
6899        pub availability: ::core::option::Option<crate::natural::Availability>,
6900    }
6901
6902    impl UseStorage {
6903        fn __max_ordinal(&self) -> usize {
6904            if self.availability.is_some() {
6905                return 3;
6906            }
6907
6908            if self.target_path.is_some() {
6909                return 2;
6910            }
6911
6912            if self.source_name.is_some() {
6913                return 1;
6914            }
6915
6916            0
6917        }
6918    }
6919
6920    unsafe impl<___E> ::fidl_next::Encode<crate::wire::UseStorage<'static>, ___E> for UseStorage
6921    where
6922        ___E: ::fidl_next::Encoder + ?Sized,
6923    {
6924        #[inline]
6925        fn encode(
6926            mut self,
6927            encoder: &mut ___E,
6928            out: &mut ::core::mem::MaybeUninit<crate::wire::UseStorage<'static>>,
6929            _: (),
6930        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
6931            ::fidl_next::munge!(let crate::wire::UseStorage { table } = out);
6932
6933            let max_ord = self.__max_ordinal();
6934
6935            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
6936            ::fidl_next::Wire::zero_padding(&mut out);
6937
6938            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
6939                ::fidl_next::wire::Envelope,
6940            >(encoder, max_ord);
6941
6942            for i in 1..=max_ord {
6943                match i {
6944                    3 => {
6945                        if let Some(value) = self.availability.take() {
6946                            ::fidl_next::wire::Envelope::encode_value::<
6947                                crate::wire::Availability,
6948                                ___E,
6949                            >(
6950                                value, preallocated.encoder, &mut out, ()
6951                            )?;
6952                        } else {
6953                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
6954                        }
6955                    }
6956
6957                    2 => {
6958                        if let Some(value) = self.target_path.take() {
6959                            ::fidl_next::wire::Envelope::encode_value::<
6960                                ::fidl_next::wire::String<'static>,
6961                                ___E,
6962                            >(
6963                                value, preallocated.encoder, &mut out, 1024
6964                            )?;
6965                        } else {
6966                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
6967                        }
6968                    }
6969
6970                    1 => {
6971                        if let Some(value) = self.source_name.take() {
6972                            ::fidl_next::wire::Envelope::encode_value::<
6973                                ::fidl_next::wire::String<'static>,
6974                                ___E,
6975                            >(
6976                                value, preallocated.encoder, &mut out, 100
6977                            )?;
6978                        } else {
6979                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
6980                        }
6981                    }
6982
6983                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
6984                }
6985                unsafe {
6986                    preallocated.write_next(out.assume_init_ref());
6987                }
6988            }
6989
6990            ::fidl_next::wire::Table::encode_len(table, max_ord);
6991
6992            Ok(())
6993        }
6994    }
6995
6996    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::UseStorage<'static>, ___E> for &'a UseStorage
6997    where
6998        ___E: ::fidl_next::Encoder + ?Sized,
6999    {
7000        #[inline]
7001        fn encode(
7002            self,
7003            encoder: &mut ___E,
7004            out: &mut ::core::mem::MaybeUninit<crate::wire::UseStorage<'static>>,
7005            _: (),
7006        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
7007            ::fidl_next::munge!(let crate::wire::UseStorage { table } = out);
7008
7009            let max_ord = self.__max_ordinal();
7010
7011            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
7012            ::fidl_next::Wire::zero_padding(&mut out);
7013
7014            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
7015                ::fidl_next::wire::Envelope,
7016            >(encoder, max_ord);
7017
7018            for i in 1..=max_ord {
7019                match i {
7020                    3 => {
7021                        if let Some(value) = &self.availability {
7022                            ::fidl_next::wire::Envelope::encode_value::<
7023                                crate::wire::Availability,
7024                                ___E,
7025                            >(
7026                                value, preallocated.encoder, &mut out, ()
7027                            )?;
7028                        } else {
7029                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
7030                        }
7031                    }
7032
7033                    2 => {
7034                        if let Some(value) = &self.target_path {
7035                            ::fidl_next::wire::Envelope::encode_value::<
7036                                ::fidl_next::wire::String<'static>,
7037                                ___E,
7038                            >(
7039                                value, preallocated.encoder, &mut out, 1024
7040                            )?;
7041                        } else {
7042                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
7043                        }
7044                    }
7045
7046                    1 => {
7047                        if let Some(value) = &self.source_name {
7048                            ::fidl_next::wire::Envelope::encode_value::<
7049                                ::fidl_next::wire::String<'static>,
7050                                ___E,
7051                            >(
7052                                value, preallocated.encoder, &mut out, 100
7053                            )?;
7054                        } else {
7055                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
7056                        }
7057                    }
7058
7059                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
7060                }
7061                unsafe {
7062                    preallocated.write_next(out.assume_init_ref());
7063                }
7064            }
7065
7066            ::fidl_next::wire::Table::encode_len(table, max_ord);
7067
7068            Ok(())
7069        }
7070    }
7071
7072    impl<'de> ::fidl_next::FromWire<crate::wire::UseStorage<'de>> for UseStorage {
7073        #[inline]
7074        fn from_wire(wire_: crate::wire::UseStorage<'de>) -> Self {
7075            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
7076
7077            let source_name = wire_.table.get(1);
7078
7079            let target_path = wire_.table.get(2);
7080
7081            let availability = wire_.table.get(3);
7082
7083            Self {
7084                source_name: source_name.map(|envelope| {
7085                    ::fidl_next::FromWire::from_wire(unsafe {
7086                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
7087                    })
7088                }),
7089
7090                target_path: target_path.map(|envelope| {
7091                    ::fidl_next::FromWire::from_wire(unsafe {
7092                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
7093                    })
7094                }),
7095
7096                availability: availability.map(|envelope| {
7097                    ::fidl_next::FromWire::from_wire(unsafe {
7098                        envelope.read_unchecked::<crate::wire::Availability>()
7099                    })
7100                }),
7101            }
7102        }
7103    }
7104
7105    impl<'de> ::fidl_next::FromWireRef<crate::wire::UseStorage<'de>> for UseStorage {
7106        #[inline]
7107        fn from_wire_ref(wire: &crate::wire::UseStorage<'de>) -> Self {
7108            Self {
7109                source_name: wire.table.get(1).map(|envelope| {
7110                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
7111                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
7112                    })
7113                }),
7114
7115                target_path: wire.table.get(2).map(|envelope| {
7116                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
7117                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
7118                    })
7119                }),
7120
7121                availability: wire.table.get(3).map(|envelope| {
7122                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
7123                        envelope.deref_unchecked::<crate::wire::Availability>()
7124                    })
7125                }),
7126            }
7127        }
7128    }
7129
7130    ::fidl_next::bitflags::bitflags! {
7131        #[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 {
7132            #[doc = " Allow parent components to provide overrides for the configuration field.\n"]const PARENT = 1;
7133            const _ = !0;
7134        }
7135    }
7136
7137    unsafe impl<___E> ::fidl_next::Encode<crate::wire::ConfigMutability, ___E> for ConfigMutability
7138    where
7139        ___E: ?Sized,
7140    {
7141        #[inline]
7142        fn encode(
7143            self,
7144            encoder: &mut ___E,
7145            out: &mut ::core::mem::MaybeUninit<crate::wire::ConfigMutability>,
7146            _: (),
7147        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
7148            ::fidl_next::Encode::encode(&self, encoder, out, ())
7149        }
7150    }
7151
7152    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::ConfigMutability, ___E>
7153        for &'a ConfigMutability
7154    where
7155        ___E: ?Sized,
7156    {
7157        #[inline]
7158        fn encode(
7159            self,
7160            _: &mut ___E,
7161            out: &mut ::core::mem::MaybeUninit<crate::wire::ConfigMutability>,
7162            _: (),
7163        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
7164            ::fidl_next::munge!(let crate::wire::ConfigMutability { value } = out);
7165
7166            let _ = value.write(::fidl_next::wire::Uint32::from(self.bits()));
7167            Ok(())
7168        }
7169    }
7170
7171    impl ::core::convert::From<crate::wire::ConfigMutability> for ConfigMutability {
7172        fn from(wire: crate::wire::ConfigMutability) -> Self {
7173            Self::from_bits_retain(u32::from(wire.value))
7174        }
7175    }
7176
7177    impl ::fidl_next::FromWire<crate::wire::ConfigMutability> for ConfigMutability {
7178        #[inline]
7179        fn from_wire(wire: crate::wire::ConfigMutability) -> Self {
7180            Self::from(wire)
7181        }
7182    }
7183
7184    impl ::fidl_next::FromWireRef<crate::wire::ConfigMutability> for ConfigMutability {
7185        #[inline]
7186        fn from_wire_ref(wire: &crate::wire::ConfigMutability) -> Self {
7187            Self::from(*wire)
7188        }
7189    }
7190
7191    #[doc = " Declares a single config field (key + type)\n"]
7192    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
7193    pub struct ConfigField {
7194        pub key: ::core::option::Option<::std::string::String>,
7195
7196        pub type_: ::core::option::Option<crate::natural::ConfigType>,
7197
7198        pub mutability: ::core::option::Option<crate::natural::ConfigMutability>,
7199    }
7200
7201    impl ConfigField {
7202        fn __max_ordinal(&self) -> usize {
7203            if self.mutability.is_some() {
7204                return 3;
7205            }
7206
7207            if self.type_.is_some() {
7208                return 2;
7209            }
7210
7211            if self.key.is_some() {
7212                return 1;
7213            }
7214
7215            0
7216        }
7217    }
7218
7219    unsafe impl<___E> ::fidl_next::Encode<crate::wire::ConfigField<'static>, ___E> for ConfigField
7220    where
7221        ___E: ::fidl_next::Encoder + ?Sized,
7222    {
7223        #[inline]
7224        fn encode(
7225            mut self,
7226            encoder: &mut ___E,
7227            out: &mut ::core::mem::MaybeUninit<crate::wire::ConfigField<'static>>,
7228            _: (),
7229        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
7230            ::fidl_next::munge!(let crate::wire::ConfigField { table } = out);
7231
7232            let max_ord = self.__max_ordinal();
7233
7234            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
7235            ::fidl_next::Wire::zero_padding(&mut out);
7236
7237            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
7238                ::fidl_next::wire::Envelope,
7239            >(encoder, max_ord);
7240
7241            for i in 1..=max_ord {
7242                match i {
7243                    3 => {
7244                        if let Some(value) = self.mutability.take() {
7245                            ::fidl_next::wire::Envelope::encode_value::<
7246                                crate::wire::ConfigMutability,
7247                                ___E,
7248                            >(
7249                                value, preallocated.encoder, &mut out, ()
7250                            )?;
7251                        } else {
7252                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
7253                        }
7254                    }
7255
7256                    2 => {
7257                        if let Some(value) = self.type_.take() {
7258                            ::fidl_next::wire::Envelope::encode_value::<
7259                                crate::wire::ConfigType<'static>,
7260                                ___E,
7261                            >(
7262                                value, preallocated.encoder, &mut out, ()
7263                            )?;
7264                        } else {
7265                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
7266                        }
7267                    }
7268
7269                    1 => {
7270                        if let Some(value) = self.key.take() {
7271                            ::fidl_next::wire::Envelope::encode_value::<
7272                                ::fidl_next::wire::String<'static>,
7273                                ___E,
7274                            >(
7275                                value, preallocated.encoder, &mut out, 64
7276                            )?;
7277                        } else {
7278                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
7279                        }
7280                    }
7281
7282                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
7283                }
7284                unsafe {
7285                    preallocated.write_next(out.assume_init_ref());
7286                }
7287            }
7288
7289            ::fidl_next::wire::Table::encode_len(table, max_ord);
7290
7291            Ok(())
7292        }
7293    }
7294
7295    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::ConfigField<'static>, ___E>
7296        for &'a ConfigField
7297    where
7298        ___E: ::fidl_next::Encoder + ?Sized,
7299    {
7300        #[inline]
7301        fn encode(
7302            self,
7303            encoder: &mut ___E,
7304            out: &mut ::core::mem::MaybeUninit<crate::wire::ConfigField<'static>>,
7305            _: (),
7306        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
7307            ::fidl_next::munge!(let crate::wire::ConfigField { table } = out);
7308
7309            let max_ord = self.__max_ordinal();
7310
7311            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
7312            ::fidl_next::Wire::zero_padding(&mut out);
7313
7314            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
7315                ::fidl_next::wire::Envelope,
7316            >(encoder, max_ord);
7317
7318            for i in 1..=max_ord {
7319                match i {
7320                    3 => {
7321                        if let Some(value) = &self.mutability {
7322                            ::fidl_next::wire::Envelope::encode_value::<
7323                                crate::wire::ConfigMutability,
7324                                ___E,
7325                            >(
7326                                value, preallocated.encoder, &mut out, ()
7327                            )?;
7328                        } else {
7329                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
7330                        }
7331                    }
7332
7333                    2 => {
7334                        if let Some(value) = &self.type_ {
7335                            ::fidl_next::wire::Envelope::encode_value::<
7336                                crate::wire::ConfigType<'static>,
7337                                ___E,
7338                            >(
7339                                value, preallocated.encoder, &mut out, ()
7340                            )?;
7341                        } else {
7342                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
7343                        }
7344                    }
7345
7346                    1 => {
7347                        if let Some(value) = &self.key {
7348                            ::fidl_next::wire::Envelope::encode_value::<
7349                                ::fidl_next::wire::String<'static>,
7350                                ___E,
7351                            >(
7352                                value, preallocated.encoder, &mut out, 64
7353                            )?;
7354                        } else {
7355                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
7356                        }
7357                    }
7358
7359                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
7360                }
7361                unsafe {
7362                    preallocated.write_next(out.assume_init_ref());
7363                }
7364            }
7365
7366            ::fidl_next::wire::Table::encode_len(table, max_ord);
7367
7368            Ok(())
7369        }
7370    }
7371
7372    impl<'de> ::fidl_next::FromWire<crate::wire::ConfigField<'de>> for ConfigField {
7373        #[inline]
7374        fn from_wire(wire_: crate::wire::ConfigField<'de>) -> Self {
7375            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
7376
7377            let key = wire_.table.get(1);
7378
7379            let type_ = wire_.table.get(2);
7380
7381            let mutability = wire_.table.get(3);
7382
7383            Self {
7384                key: key.map(|envelope| {
7385                    ::fidl_next::FromWire::from_wire(unsafe {
7386                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
7387                    })
7388                }),
7389
7390                type_: type_.map(|envelope| {
7391                    ::fidl_next::FromWire::from_wire(unsafe {
7392                        envelope.read_unchecked::<crate::wire::ConfigType<'de>>()
7393                    })
7394                }),
7395
7396                mutability: mutability.map(|envelope| {
7397                    ::fidl_next::FromWire::from_wire(unsafe {
7398                        envelope.read_unchecked::<crate::wire::ConfigMutability>()
7399                    })
7400                }),
7401            }
7402        }
7403    }
7404
7405    impl<'de> ::fidl_next::FromWireRef<crate::wire::ConfigField<'de>> for ConfigField {
7406        #[inline]
7407        fn from_wire_ref(wire: &crate::wire::ConfigField<'de>) -> Self {
7408            Self {
7409                key: wire.table.get(1).map(|envelope| {
7410                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
7411                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
7412                    })
7413                }),
7414
7415                type_: wire.table.get(2).map(|envelope| {
7416                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
7417                        envelope.deref_unchecked::<crate::wire::ConfigType<'de>>()
7418                    })
7419                }),
7420
7421                mutability: wire.table.get(3).map(|envelope| {
7422                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
7423                        envelope.deref_unchecked::<crate::wire::ConfigMutability>()
7424                    })
7425                }),
7426            }
7427        }
7428    }
7429
7430    #[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"]
7431    #[derive(Debug, Default, Clone, PartialEq)]
7432    pub struct Program {
7433        pub runner: ::core::option::Option<::std::string::String>,
7434
7435        pub info: ::core::option::Option<::fidl_next_common_fuchsia_data::natural::Dictionary>,
7436    }
7437
7438    impl Program {
7439        fn __max_ordinal(&self) -> usize {
7440            if self.info.is_some() {
7441                return 2;
7442            }
7443
7444            if self.runner.is_some() {
7445                return 1;
7446            }
7447
7448            0
7449        }
7450    }
7451
7452    unsafe impl<___E> ::fidl_next::Encode<crate::wire::Program<'static>, ___E> for Program
7453    where
7454        ___E: ::fidl_next::Encoder + ?Sized,
7455    {
7456        #[inline]
7457        fn encode(
7458            mut self,
7459            encoder: &mut ___E,
7460            out: &mut ::core::mem::MaybeUninit<crate::wire::Program<'static>>,
7461            _: (),
7462        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
7463            ::fidl_next::munge!(let crate::wire::Program { table } = out);
7464
7465            let max_ord = self.__max_ordinal();
7466
7467            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
7468            ::fidl_next::Wire::zero_padding(&mut out);
7469
7470            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
7471                ::fidl_next::wire::Envelope,
7472            >(encoder, max_ord);
7473
7474            for i in 1..=max_ord {
7475                match i {
7476                    2 => {
7477                        if let Some(value) = self.info.take() {
7478                            ::fidl_next::wire::Envelope::encode_value::<
7479                                ::fidl_next_common_fuchsia_data::wire::Dictionary<'static>,
7480                                ___E,
7481                            >(
7482                                value, preallocated.encoder, &mut out, ()
7483                            )?;
7484                        } else {
7485                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
7486                        }
7487                    }
7488
7489                    1 => {
7490                        if let Some(value) = self.runner.take() {
7491                            ::fidl_next::wire::Envelope::encode_value::<
7492                                ::fidl_next::wire::String<'static>,
7493                                ___E,
7494                            >(
7495                                value, preallocated.encoder, &mut out, 100
7496                            )?;
7497                        } else {
7498                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
7499                        }
7500                    }
7501
7502                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
7503                }
7504                unsafe {
7505                    preallocated.write_next(out.assume_init_ref());
7506                }
7507            }
7508
7509            ::fidl_next::wire::Table::encode_len(table, max_ord);
7510
7511            Ok(())
7512        }
7513    }
7514
7515    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::Program<'static>, ___E> for &'a Program
7516    where
7517        ___E: ::fidl_next::Encoder + ?Sized,
7518    {
7519        #[inline]
7520        fn encode(
7521            self,
7522            encoder: &mut ___E,
7523            out: &mut ::core::mem::MaybeUninit<crate::wire::Program<'static>>,
7524            _: (),
7525        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
7526            ::fidl_next::munge!(let crate::wire::Program { table } = out);
7527
7528            let max_ord = self.__max_ordinal();
7529
7530            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
7531            ::fidl_next::Wire::zero_padding(&mut out);
7532
7533            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
7534                ::fidl_next::wire::Envelope,
7535            >(encoder, max_ord);
7536
7537            for i in 1..=max_ord {
7538                match i {
7539                    2 => {
7540                        if let Some(value) = &self.info {
7541                            ::fidl_next::wire::Envelope::encode_value::<
7542                                ::fidl_next_common_fuchsia_data::wire::Dictionary<'static>,
7543                                ___E,
7544                            >(
7545                                value, preallocated.encoder, &mut out, ()
7546                            )?;
7547                        } else {
7548                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
7549                        }
7550                    }
7551
7552                    1 => {
7553                        if let Some(value) = &self.runner {
7554                            ::fidl_next::wire::Envelope::encode_value::<
7555                                ::fidl_next::wire::String<'static>,
7556                                ___E,
7557                            >(
7558                                value, preallocated.encoder, &mut out, 100
7559                            )?;
7560                        } else {
7561                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
7562                        }
7563                    }
7564
7565                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
7566                }
7567                unsafe {
7568                    preallocated.write_next(out.assume_init_ref());
7569                }
7570            }
7571
7572            ::fidl_next::wire::Table::encode_len(table, max_ord);
7573
7574            Ok(())
7575        }
7576    }
7577
7578    impl<'de> ::fidl_next::FromWire<crate::wire::Program<'de>> for Program {
7579        #[inline]
7580        fn from_wire(wire_: crate::wire::Program<'de>) -> Self {
7581            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
7582
7583            let runner = wire_.table.get(1);
7584
7585            let info = wire_.table.get(2);
7586
7587            Self {
7588
7589
7590                runner: runner.map(|envelope| ::fidl_next::FromWire::from_wire(
7591                    unsafe { envelope.read_unchecked::<::fidl_next::wire::String<'de>>() }
7592                )),
7593
7594
7595                info: info.map(|envelope| ::fidl_next::FromWire::from_wire(
7596                    unsafe { envelope.read_unchecked::<::fidl_next_common_fuchsia_data::wire::Dictionary<'de>>() }
7597                )),
7598
7599        }
7600        }
7601    }
7602
7603    impl<'de> ::fidl_next::FromWireRef<crate::wire::Program<'de>> for Program {
7604        #[inline]
7605        fn from_wire_ref(wire: &crate::wire::Program<'de>) -> Self {
7606            Self {
7607
7608
7609                runner: wire.table.get(1)
7610                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
7611                        unsafe { envelope.deref_unchecked::<::fidl_next::wire::String<'de>>() }
7612                    )),
7613
7614
7615                info: wire.table.get(2)
7616                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
7617                        unsafe { envelope.deref_unchecked::<::fidl_next_common_fuchsia_data::wire::Dictionary<'de>>() }
7618                    )),
7619
7620        }
7621        }
7622    }
7623
7624    #[doc = " Debug information about the component.\n"]
7625    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
7626    pub struct DebugInfo {
7627        pub manifest_sources: ::core::option::Option<::std::vec::Vec<::std::string::String>>,
7628    }
7629
7630    impl DebugInfo {
7631        fn __max_ordinal(&self) -> usize {
7632            if self.manifest_sources.is_some() {
7633                return 1;
7634            }
7635
7636            0
7637        }
7638    }
7639
7640    unsafe impl<___E> ::fidl_next::Encode<crate::wire::DebugInfo<'static>, ___E> for DebugInfo
7641    where
7642        ___E: ::fidl_next::Encoder + ?Sized,
7643    {
7644        #[inline]
7645        fn encode(
7646            mut self,
7647            encoder: &mut ___E,
7648            out: &mut ::core::mem::MaybeUninit<crate::wire::DebugInfo<'static>>,
7649            _: (),
7650        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
7651            ::fidl_next::munge!(let crate::wire::DebugInfo { table } = out);
7652
7653            let max_ord = self.__max_ordinal();
7654
7655            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
7656            ::fidl_next::Wire::zero_padding(&mut out);
7657
7658            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
7659                ::fidl_next::wire::Envelope,
7660            >(encoder, max_ord);
7661
7662            for i in 1..=max_ord {
7663                match i {
7664                    1 => {
7665                        if let Some(value) = self.manifest_sources.take() {
7666                            ::fidl_next::wire::Envelope::encode_value::<
7667                                ::fidl_next::wire::Vector<
7668                                    'static,
7669                                    ::fidl_next::wire::String<'static>,
7670                                >,
7671                                ___E,
7672                            >(
7673                                value, preallocated.encoder, &mut out, (4294967295, 4294967295)
7674                            )?;
7675                        } else {
7676                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
7677                        }
7678                    }
7679
7680                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
7681                }
7682                unsafe {
7683                    preallocated.write_next(out.assume_init_ref());
7684                }
7685            }
7686
7687            ::fidl_next::wire::Table::encode_len(table, max_ord);
7688
7689            Ok(())
7690        }
7691    }
7692
7693    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::DebugInfo<'static>, ___E> for &'a DebugInfo
7694    where
7695        ___E: ::fidl_next::Encoder + ?Sized,
7696    {
7697        #[inline]
7698        fn encode(
7699            self,
7700            encoder: &mut ___E,
7701            out: &mut ::core::mem::MaybeUninit<crate::wire::DebugInfo<'static>>,
7702            _: (),
7703        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
7704            ::fidl_next::munge!(let crate::wire::DebugInfo { table } = out);
7705
7706            let max_ord = self.__max_ordinal();
7707
7708            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
7709            ::fidl_next::Wire::zero_padding(&mut out);
7710
7711            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
7712                ::fidl_next::wire::Envelope,
7713            >(encoder, max_ord);
7714
7715            for i in 1..=max_ord {
7716                match i {
7717                    1 => {
7718                        if let Some(value) = &self.manifest_sources {
7719                            ::fidl_next::wire::Envelope::encode_value::<
7720                                ::fidl_next::wire::Vector<
7721                                    'static,
7722                                    ::fidl_next::wire::String<'static>,
7723                                >,
7724                                ___E,
7725                            >(
7726                                value, preallocated.encoder, &mut out, (4294967295, 4294967295)
7727                            )?;
7728                        } else {
7729                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
7730                        }
7731                    }
7732
7733                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
7734                }
7735                unsafe {
7736                    preallocated.write_next(out.assume_init_ref());
7737                }
7738            }
7739
7740            ::fidl_next::wire::Table::encode_len(table, max_ord);
7741
7742            Ok(())
7743        }
7744    }
7745
7746    impl<'de> ::fidl_next::FromWire<crate::wire::DebugInfo<'de>> for DebugInfo {
7747        #[inline]
7748        fn from_wire(wire_: crate::wire::DebugInfo<'de>) -> Self {
7749            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
7750
7751            let manifest_sources = wire_.table.get(1);
7752
7753            Self {
7754
7755
7756                manifest_sources: manifest_sources.map(|envelope| ::fidl_next::FromWire::from_wire(
7757                    unsafe { envelope.read_unchecked::<::fidl_next::wire::Vector<'de, ::fidl_next::wire::String<'de>>>() }
7758                )),
7759
7760        }
7761        }
7762    }
7763
7764    impl<'de> ::fidl_next::FromWireRef<crate::wire::DebugInfo<'de>> for DebugInfo {
7765        #[inline]
7766        fn from_wire_ref(wire: &crate::wire::DebugInfo<'de>) -> Self {
7767            Self {
7768
7769
7770                manifest_sources: wire.table.get(1)
7771                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
7772                        unsafe { envelope.deref_unchecked::<::fidl_next::wire::Vector<'de, ::fidl_next::wire::String<'de>>>() }
7773                    )),
7774
7775        }
7776        }
7777    }
7778
7779    #[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"]
7780    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
7781    pub struct UseService {
7782        pub source: ::core::option::Option<crate::natural::Ref>,
7783
7784        pub source_name: ::core::option::Option<::std::string::String>,
7785
7786        pub target_path: ::core::option::Option<::std::string::String>,
7787
7788        pub dependency_type: ::core::option::Option<crate::natural::DependencyType>,
7789
7790        pub availability: ::core::option::Option<crate::natural::Availability>,
7791
7792        pub source_dictionary: ::core::option::Option<::std::string::String>,
7793    }
7794
7795    impl UseService {
7796        fn __max_ordinal(&self) -> usize {
7797            if self.source_dictionary.is_some() {
7798                return 6;
7799            }
7800
7801            if self.availability.is_some() {
7802                return 5;
7803            }
7804
7805            if self.dependency_type.is_some() {
7806                return 4;
7807            }
7808
7809            if self.target_path.is_some() {
7810                return 3;
7811            }
7812
7813            if self.source_name.is_some() {
7814                return 2;
7815            }
7816
7817            if self.source.is_some() {
7818                return 1;
7819            }
7820
7821            0
7822        }
7823    }
7824
7825    unsafe impl<___E> ::fidl_next::Encode<crate::wire::UseService<'static>, ___E> for UseService
7826    where
7827        ___E: ::fidl_next::Encoder + ?Sized,
7828    {
7829        #[inline]
7830        fn encode(
7831            mut self,
7832            encoder: &mut ___E,
7833            out: &mut ::core::mem::MaybeUninit<crate::wire::UseService<'static>>,
7834            _: (),
7835        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
7836            ::fidl_next::munge!(let crate::wire::UseService { table } = out);
7837
7838            let max_ord = self.__max_ordinal();
7839
7840            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
7841            ::fidl_next::Wire::zero_padding(&mut out);
7842
7843            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
7844                ::fidl_next::wire::Envelope,
7845            >(encoder, max_ord);
7846
7847            for i in 1..=max_ord {
7848                match i {
7849                    6 => {
7850                        if let Some(value) = self.source_dictionary.take() {
7851                            ::fidl_next::wire::Envelope::encode_value::<
7852                                ::fidl_next::wire::String<'static>,
7853                                ___E,
7854                            >(
7855                                value, preallocated.encoder, &mut out, 1024
7856                            )?;
7857                        } else {
7858                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
7859                        }
7860                    }
7861
7862                    5 => {
7863                        if let Some(value) = self.availability.take() {
7864                            ::fidl_next::wire::Envelope::encode_value::<
7865                                crate::wire::Availability,
7866                                ___E,
7867                            >(
7868                                value, preallocated.encoder, &mut out, ()
7869                            )?;
7870                        } else {
7871                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
7872                        }
7873                    }
7874
7875                    4 => {
7876                        if let Some(value) = self.dependency_type.take() {
7877                            ::fidl_next::wire::Envelope::encode_value::<
7878                                crate::wire::DependencyType,
7879                                ___E,
7880                            >(
7881                                value, preallocated.encoder, &mut out, ()
7882                            )?;
7883                        } else {
7884                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
7885                        }
7886                    }
7887
7888                    3 => {
7889                        if let Some(value) = self.target_path.take() {
7890                            ::fidl_next::wire::Envelope::encode_value::<
7891                                ::fidl_next::wire::String<'static>,
7892                                ___E,
7893                            >(
7894                                value, preallocated.encoder, &mut out, 1024
7895                            )?;
7896                        } else {
7897                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
7898                        }
7899                    }
7900
7901                    2 => {
7902                        if let Some(value) = self.source_name.take() {
7903                            ::fidl_next::wire::Envelope::encode_value::<
7904                                ::fidl_next::wire::String<'static>,
7905                                ___E,
7906                            >(
7907                                value, preallocated.encoder, &mut out, 100
7908                            )?;
7909                        } else {
7910                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
7911                        }
7912                    }
7913
7914                    1 => {
7915                        if let Some(value) = self.source.take() {
7916                            ::fidl_next::wire::Envelope::encode_value::<
7917                                crate::wire::Ref<'static>,
7918                                ___E,
7919                            >(
7920                                value, preallocated.encoder, &mut out, ()
7921                            )?;
7922                        } else {
7923                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
7924                        }
7925                    }
7926
7927                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
7928                }
7929                unsafe {
7930                    preallocated.write_next(out.assume_init_ref());
7931                }
7932            }
7933
7934            ::fidl_next::wire::Table::encode_len(table, max_ord);
7935
7936            Ok(())
7937        }
7938    }
7939
7940    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::UseService<'static>, ___E> for &'a UseService
7941    where
7942        ___E: ::fidl_next::Encoder + ?Sized,
7943    {
7944        #[inline]
7945        fn encode(
7946            self,
7947            encoder: &mut ___E,
7948            out: &mut ::core::mem::MaybeUninit<crate::wire::UseService<'static>>,
7949            _: (),
7950        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
7951            ::fidl_next::munge!(let crate::wire::UseService { table } = out);
7952
7953            let max_ord = self.__max_ordinal();
7954
7955            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
7956            ::fidl_next::Wire::zero_padding(&mut out);
7957
7958            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
7959                ::fidl_next::wire::Envelope,
7960            >(encoder, max_ord);
7961
7962            for i in 1..=max_ord {
7963                match i {
7964                    6 => {
7965                        if let Some(value) = &self.source_dictionary {
7966                            ::fidl_next::wire::Envelope::encode_value::<
7967                                ::fidl_next::wire::String<'static>,
7968                                ___E,
7969                            >(
7970                                value, preallocated.encoder, &mut out, 1024
7971                            )?;
7972                        } else {
7973                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
7974                        }
7975                    }
7976
7977                    5 => {
7978                        if let Some(value) = &self.availability {
7979                            ::fidl_next::wire::Envelope::encode_value::<
7980                                crate::wire::Availability,
7981                                ___E,
7982                            >(
7983                                value, preallocated.encoder, &mut out, ()
7984                            )?;
7985                        } else {
7986                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
7987                        }
7988                    }
7989
7990                    4 => {
7991                        if let Some(value) = &self.dependency_type {
7992                            ::fidl_next::wire::Envelope::encode_value::<
7993                                crate::wire::DependencyType,
7994                                ___E,
7995                            >(
7996                                value, preallocated.encoder, &mut out, ()
7997                            )?;
7998                        } else {
7999                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
8000                        }
8001                    }
8002
8003                    3 => {
8004                        if let Some(value) = &self.target_path {
8005                            ::fidl_next::wire::Envelope::encode_value::<
8006                                ::fidl_next::wire::String<'static>,
8007                                ___E,
8008                            >(
8009                                value, preallocated.encoder, &mut out, 1024
8010                            )?;
8011                        } else {
8012                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
8013                        }
8014                    }
8015
8016                    2 => {
8017                        if let Some(value) = &self.source_name {
8018                            ::fidl_next::wire::Envelope::encode_value::<
8019                                ::fidl_next::wire::String<'static>,
8020                                ___E,
8021                            >(
8022                                value, preallocated.encoder, &mut out, 100
8023                            )?;
8024                        } else {
8025                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
8026                        }
8027                    }
8028
8029                    1 => {
8030                        if let Some(value) = &self.source {
8031                            ::fidl_next::wire::Envelope::encode_value::<
8032                                crate::wire::Ref<'static>,
8033                                ___E,
8034                            >(
8035                                value, preallocated.encoder, &mut out, ()
8036                            )?;
8037                        } else {
8038                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
8039                        }
8040                    }
8041
8042                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
8043                }
8044                unsafe {
8045                    preallocated.write_next(out.assume_init_ref());
8046                }
8047            }
8048
8049            ::fidl_next::wire::Table::encode_len(table, max_ord);
8050
8051            Ok(())
8052        }
8053    }
8054
8055    impl<'de> ::fidl_next::FromWire<crate::wire::UseService<'de>> for UseService {
8056        #[inline]
8057        fn from_wire(wire_: crate::wire::UseService<'de>) -> Self {
8058            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
8059
8060            let source = wire_.table.get(1);
8061
8062            let source_name = wire_.table.get(2);
8063
8064            let target_path = wire_.table.get(3);
8065
8066            let dependency_type = wire_.table.get(4);
8067
8068            let availability = wire_.table.get(5);
8069
8070            let source_dictionary = wire_.table.get(6);
8071
8072            Self {
8073                source: source.map(|envelope| {
8074                    ::fidl_next::FromWire::from_wire(unsafe {
8075                        envelope.read_unchecked::<crate::wire::Ref<'de>>()
8076                    })
8077                }),
8078
8079                source_name: source_name.map(|envelope| {
8080                    ::fidl_next::FromWire::from_wire(unsafe {
8081                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
8082                    })
8083                }),
8084
8085                target_path: target_path.map(|envelope| {
8086                    ::fidl_next::FromWire::from_wire(unsafe {
8087                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
8088                    })
8089                }),
8090
8091                dependency_type: dependency_type.map(|envelope| {
8092                    ::fidl_next::FromWire::from_wire(unsafe {
8093                        envelope.read_unchecked::<crate::wire::DependencyType>()
8094                    })
8095                }),
8096
8097                availability: availability.map(|envelope| {
8098                    ::fidl_next::FromWire::from_wire(unsafe {
8099                        envelope.read_unchecked::<crate::wire::Availability>()
8100                    })
8101                }),
8102
8103                source_dictionary: source_dictionary.map(|envelope| {
8104                    ::fidl_next::FromWire::from_wire(unsafe {
8105                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
8106                    })
8107                }),
8108            }
8109        }
8110    }
8111
8112    impl<'de> ::fidl_next::FromWireRef<crate::wire::UseService<'de>> for UseService {
8113        #[inline]
8114        fn from_wire_ref(wire: &crate::wire::UseService<'de>) -> Self {
8115            Self {
8116                source: wire.table.get(1).map(|envelope| {
8117                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
8118                        envelope.deref_unchecked::<crate::wire::Ref<'de>>()
8119                    })
8120                }),
8121
8122                source_name: wire.table.get(2).map(|envelope| {
8123                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
8124                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
8125                    })
8126                }),
8127
8128                target_path: wire.table.get(3).map(|envelope| {
8129                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
8130                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
8131                    })
8132                }),
8133
8134                dependency_type: wire.table.get(4).map(|envelope| {
8135                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
8136                        envelope.deref_unchecked::<crate::wire::DependencyType>()
8137                    })
8138                }),
8139
8140                availability: wire.table.get(5).map(|envelope| {
8141                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
8142                        envelope.deref_unchecked::<crate::wire::Availability>()
8143                    })
8144                }),
8145
8146                source_dictionary: wire.table.get(6).map(|envelope| {
8147                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
8148                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
8149                    })
8150                }),
8151            }
8152        }
8153    }
8154
8155    #[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"]
8156    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
8157    pub struct UseProtocol {
8158        pub source: ::core::option::Option<crate::natural::Ref>,
8159
8160        pub source_name: ::core::option::Option<::std::string::String>,
8161
8162        pub target_path: ::core::option::Option<::std::string::String>,
8163
8164        pub dependency_type: ::core::option::Option<crate::natural::DependencyType>,
8165
8166        pub availability: ::core::option::Option<crate::natural::Availability>,
8167
8168        pub source_dictionary: ::core::option::Option<::std::string::String>,
8169
8170        pub numbered_handle: ::core::option::Option<u8>,
8171    }
8172
8173    impl UseProtocol {
8174        fn __max_ordinal(&self) -> usize {
8175            if self.numbered_handle.is_some() {
8176                return 7;
8177            }
8178
8179            if self.source_dictionary.is_some() {
8180                return 6;
8181            }
8182
8183            if self.availability.is_some() {
8184                return 5;
8185            }
8186
8187            if self.dependency_type.is_some() {
8188                return 4;
8189            }
8190
8191            if self.target_path.is_some() {
8192                return 3;
8193            }
8194
8195            if self.source_name.is_some() {
8196                return 2;
8197            }
8198
8199            if self.source.is_some() {
8200                return 1;
8201            }
8202
8203            0
8204        }
8205    }
8206
8207    unsafe impl<___E> ::fidl_next::Encode<crate::wire::UseProtocol<'static>, ___E> for UseProtocol
8208    where
8209        ___E: ::fidl_next::Encoder + ?Sized,
8210    {
8211        #[inline]
8212        fn encode(
8213            mut self,
8214            encoder: &mut ___E,
8215            out: &mut ::core::mem::MaybeUninit<crate::wire::UseProtocol<'static>>,
8216            _: (),
8217        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
8218            ::fidl_next::munge!(let crate::wire::UseProtocol { table } = out);
8219
8220            let max_ord = self.__max_ordinal();
8221
8222            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
8223            ::fidl_next::Wire::zero_padding(&mut out);
8224
8225            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
8226                ::fidl_next::wire::Envelope,
8227            >(encoder, max_ord);
8228
8229            for i in 1..=max_ord {
8230                match i {
8231                    7 => {
8232                        if let Some(value) = self.numbered_handle.take() {
8233                            ::fidl_next::wire::Envelope::encode_value::<u8, ___E>(
8234                                value,
8235                                preallocated.encoder,
8236                                &mut out,
8237                                (),
8238                            )?;
8239                        } else {
8240                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
8241                        }
8242                    }
8243
8244                    6 => {
8245                        if let Some(value) = self.source_dictionary.take() {
8246                            ::fidl_next::wire::Envelope::encode_value::<
8247                                ::fidl_next::wire::String<'static>,
8248                                ___E,
8249                            >(
8250                                value, preallocated.encoder, &mut out, 1024
8251                            )?;
8252                        } else {
8253                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
8254                        }
8255                    }
8256
8257                    5 => {
8258                        if let Some(value) = self.availability.take() {
8259                            ::fidl_next::wire::Envelope::encode_value::<
8260                                crate::wire::Availability,
8261                                ___E,
8262                            >(
8263                                value, preallocated.encoder, &mut out, ()
8264                            )?;
8265                        } else {
8266                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
8267                        }
8268                    }
8269
8270                    4 => {
8271                        if let Some(value) = self.dependency_type.take() {
8272                            ::fidl_next::wire::Envelope::encode_value::<
8273                                crate::wire::DependencyType,
8274                                ___E,
8275                            >(
8276                                value, preallocated.encoder, &mut out, ()
8277                            )?;
8278                        } else {
8279                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
8280                        }
8281                    }
8282
8283                    3 => {
8284                        if let Some(value) = self.target_path.take() {
8285                            ::fidl_next::wire::Envelope::encode_value::<
8286                                ::fidl_next::wire::String<'static>,
8287                                ___E,
8288                            >(
8289                                value, preallocated.encoder, &mut out, 1024
8290                            )?;
8291                        } else {
8292                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
8293                        }
8294                    }
8295
8296                    2 => {
8297                        if let Some(value) = self.source_name.take() {
8298                            ::fidl_next::wire::Envelope::encode_value::<
8299                                ::fidl_next::wire::String<'static>,
8300                                ___E,
8301                            >(
8302                                value, preallocated.encoder, &mut out, 100
8303                            )?;
8304                        } else {
8305                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
8306                        }
8307                    }
8308
8309                    1 => {
8310                        if let Some(value) = self.source.take() {
8311                            ::fidl_next::wire::Envelope::encode_value::<
8312                                crate::wire::Ref<'static>,
8313                                ___E,
8314                            >(
8315                                value, preallocated.encoder, &mut out, ()
8316                            )?;
8317                        } else {
8318                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
8319                        }
8320                    }
8321
8322                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
8323                }
8324                unsafe {
8325                    preallocated.write_next(out.assume_init_ref());
8326                }
8327            }
8328
8329            ::fidl_next::wire::Table::encode_len(table, max_ord);
8330
8331            Ok(())
8332        }
8333    }
8334
8335    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::UseProtocol<'static>, ___E>
8336        for &'a UseProtocol
8337    where
8338        ___E: ::fidl_next::Encoder + ?Sized,
8339    {
8340        #[inline]
8341        fn encode(
8342            self,
8343            encoder: &mut ___E,
8344            out: &mut ::core::mem::MaybeUninit<crate::wire::UseProtocol<'static>>,
8345            _: (),
8346        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
8347            ::fidl_next::munge!(let crate::wire::UseProtocol { table } = out);
8348
8349            let max_ord = self.__max_ordinal();
8350
8351            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
8352            ::fidl_next::Wire::zero_padding(&mut out);
8353
8354            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
8355                ::fidl_next::wire::Envelope,
8356            >(encoder, max_ord);
8357
8358            for i in 1..=max_ord {
8359                match i {
8360                    7 => {
8361                        if let Some(value) = &self.numbered_handle {
8362                            ::fidl_next::wire::Envelope::encode_value::<u8, ___E>(
8363                                value,
8364                                preallocated.encoder,
8365                                &mut out,
8366                                (),
8367                            )?;
8368                        } else {
8369                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
8370                        }
8371                    }
8372
8373                    6 => {
8374                        if let Some(value) = &self.source_dictionary {
8375                            ::fidl_next::wire::Envelope::encode_value::<
8376                                ::fidl_next::wire::String<'static>,
8377                                ___E,
8378                            >(
8379                                value, preallocated.encoder, &mut out, 1024
8380                            )?;
8381                        } else {
8382                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
8383                        }
8384                    }
8385
8386                    5 => {
8387                        if let Some(value) = &self.availability {
8388                            ::fidl_next::wire::Envelope::encode_value::<
8389                                crate::wire::Availability,
8390                                ___E,
8391                            >(
8392                                value, preallocated.encoder, &mut out, ()
8393                            )?;
8394                        } else {
8395                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
8396                        }
8397                    }
8398
8399                    4 => {
8400                        if let Some(value) = &self.dependency_type {
8401                            ::fidl_next::wire::Envelope::encode_value::<
8402                                crate::wire::DependencyType,
8403                                ___E,
8404                            >(
8405                                value, preallocated.encoder, &mut out, ()
8406                            )?;
8407                        } else {
8408                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
8409                        }
8410                    }
8411
8412                    3 => {
8413                        if let Some(value) = &self.target_path {
8414                            ::fidl_next::wire::Envelope::encode_value::<
8415                                ::fidl_next::wire::String<'static>,
8416                                ___E,
8417                            >(
8418                                value, preallocated.encoder, &mut out, 1024
8419                            )?;
8420                        } else {
8421                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
8422                        }
8423                    }
8424
8425                    2 => {
8426                        if let Some(value) = &self.source_name {
8427                            ::fidl_next::wire::Envelope::encode_value::<
8428                                ::fidl_next::wire::String<'static>,
8429                                ___E,
8430                            >(
8431                                value, preallocated.encoder, &mut out, 100
8432                            )?;
8433                        } else {
8434                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
8435                        }
8436                    }
8437
8438                    1 => {
8439                        if let Some(value) = &self.source {
8440                            ::fidl_next::wire::Envelope::encode_value::<
8441                                crate::wire::Ref<'static>,
8442                                ___E,
8443                            >(
8444                                value, preallocated.encoder, &mut out, ()
8445                            )?;
8446                        } else {
8447                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
8448                        }
8449                    }
8450
8451                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
8452                }
8453                unsafe {
8454                    preallocated.write_next(out.assume_init_ref());
8455                }
8456            }
8457
8458            ::fidl_next::wire::Table::encode_len(table, max_ord);
8459
8460            Ok(())
8461        }
8462    }
8463
8464    impl<'de> ::fidl_next::FromWire<crate::wire::UseProtocol<'de>> for UseProtocol {
8465        #[inline]
8466        fn from_wire(wire_: crate::wire::UseProtocol<'de>) -> Self {
8467            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
8468
8469            let source = wire_.table.get(1);
8470
8471            let source_name = wire_.table.get(2);
8472
8473            let target_path = wire_.table.get(3);
8474
8475            let dependency_type = wire_.table.get(4);
8476
8477            let availability = wire_.table.get(5);
8478
8479            let source_dictionary = wire_.table.get(6);
8480
8481            let numbered_handle = wire_.table.get(7);
8482
8483            Self {
8484                source: source.map(|envelope| {
8485                    ::fidl_next::FromWire::from_wire(unsafe {
8486                        envelope.read_unchecked::<crate::wire::Ref<'de>>()
8487                    })
8488                }),
8489
8490                source_name: source_name.map(|envelope| {
8491                    ::fidl_next::FromWire::from_wire(unsafe {
8492                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
8493                    })
8494                }),
8495
8496                target_path: target_path.map(|envelope| {
8497                    ::fidl_next::FromWire::from_wire(unsafe {
8498                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
8499                    })
8500                }),
8501
8502                dependency_type: dependency_type.map(|envelope| {
8503                    ::fidl_next::FromWire::from_wire(unsafe {
8504                        envelope.read_unchecked::<crate::wire::DependencyType>()
8505                    })
8506                }),
8507
8508                availability: availability.map(|envelope| {
8509                    ::fidl_next::FromWire::from_wire(unsafe {
8510                        envelope.read_unchecked::<crate::wire::Availability>()
8511                    })
8512                }),
8513
8514                source_dictionary: source_dictionary.map(|envelope| {
8515                    ::fidl_next::FromWire::from_wire(unsafe {
8516                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
8517                    })
8518                }),
8519
8520                numbered_handle: numbered_handle.map(|envelope| {
8521                    ::fidl_next::FromWire::from_wire(unsafe { envelope.read_unchecked::<u8>() })
8522                }),
8523            }
8524        }
8525    }
8526
8527    impl<'de> ::fidl_next::FromWireRef<crate::wire::UseProtocol<'de>> for UseProtocol {
8528        #[inline]
8529        fn from_wire_ref(wire: &crate::wire::UseProtocol<'de>) -> Self {
8530            Self {
8531                source: wire.table.get(1).map(|envelope| {
8532                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
8533                        envelope.deref_unchecked::<crate::wire::Ref<'de>>()
8534                    })
8535                }),
8536
8537                source_name: wire.table.get(2).map(|envelope| {
8538                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
8539                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
8540                    })
8541                }),
8542
8543                target_path: wire.table.get(3).map(|envelope| {
8544                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
8545                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
8546                    })
8547                }),
8548
8549                dependency_type: wire.table.get(4).map(|envelope| {
8550                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
8551                        envelope.deref_unchecked::<crate::wire::DependencyType>()
8552                    })
8553                }),
8554
8555                availability: wire.table.get(5).map(|envelope| {
8556                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
8557                        envelope.deref_unchecked::<crate::wire::Availability>()
8558                    })
8559                }),
8560
8561                source_dictionary: wire.table.get(6).map(|envelope| {
8562                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
8563                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
8564                    })
8565                }),
8566
8567                numbered_handle: wire.table.get(7).map(|envelope| {
8568                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
8569                        envelope.deref_unchecked::<u8>()
8570                    })
8571                }),
8572            }
8573        }
8574    }
8575
8576    #[doc = " Declares a directory used by a component, which was offered to it.\n"]
8577    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
8578    pub struct UseDirectory {
8579        pub source: ::core::option::Option<crate::natural::Ref>,
8580
8581        pub source_name: ::core::option::Option<::std::string::String>,
8582
8583        pub target_path: ::core::option::Option<::std::string::String>,
8584
8585        pub rights: ::core::option::Option<::fidl_next_common_fuchsia_io::natural::Operations>,
8586
8587        pub subdir: ::core::option::Option<::std::string::String>,
8588
8589        pub dependency_type: ::core::option::Option<crate::natural::DependencyType>,
8590
8591        pub availability: ::core::option::Option<crate::natural::Availability>,
8592
8593        pub source_dictionary: ::core::option::Option<::std::string::String>,
8594    }
8595
8596    impl UseDirectory {
8597        fn __max_ordinal(&self) -> usize {
8598            if self.source_dictionary.is_some() {
8599                return 8;
8600            }
8601
8602            if self.availability.is_some() {
8603                return 7;
8604            }
8605
8606            if self.dependency_type.is_some() {
8607                return 6;
8608            }
8609
8610            if self.subdir.is_some() {
8611                return 5;
8612            }
8613
8614            if self.rights.is_some() {
8615                return 4;
8616            }
8617
8618            if self.target_path.is_some() {
8619                return 3;
8620            }
8621
8622            if self.source_name.is_some() {
8623                return 2;
8624            }
8625
8626            if self.source.is_some() {
8627                return 1;
8628            }
8629
8630            0
8631        }
8632    }
8633
8634    unsafe impl<___E> ::fidl_next::Encode<crate::wire::UseDirectory<'static>, ___E> for UseDirectory
8635    where
8636        ___E: ::fidl_next::Encoder + ?Sized,
8637    {
8638        #[inline]
8639        fn encode(
8640            mut self,
8641            encoder: &mut ___E,
8642            out: &mut ::core::mem::MaybeUninit<crate::wire::UseDirectory<'static>>,
8643            _: (),
8644        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
8645            ::fidl_next::munge!(let crate::wire::UseDirectory { table } = out);
8646
8647            let max_ord = self.__max_ordinal();
8648
8649            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
8650            ::fidl_next::Wire::zero_padding(&mut out);
8651
8652            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
8653                ::fidl_next::wire::Envelope,
8654            >(encoder, max_ord);
8655
8656            for i in 1..=max_ord {
8657                match i {
8658                    8 => {
8659                        if let Some(value) = self.source_dictionary.take() {
8660                            ::fidl_next::wire::Envelope::encode_value::<
8661                                ::fidl_next::wire::String<'static>,
8662                                ___E,
8663                            >(
8664                                value, preallocated.encoder, &mut out, 1024
8665                            )?;
8666                        } else {
8667                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
8668                        }
8669                    }
8670
8671                    7 => {
8672                        if let Some(value) = self.availability.take() {
8673                            ::fidl_next::wire::Envelope::encode_value::<
8674                                crate::wire::Availability,
8675                                ___E,
8676                            >(
8677                                value, preallocated.encoder, &mut out, ()
8678                            )?;
8679                        } else {
8680                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
8681                        }
8682                    }
8683
8684                    6 => {
8685                        if let Some(value) = self.dependency_type.take() {
8686                            ::fidl_next::wire::Envelope::encode_value::<
8687                                crate::wire::DependencyType,
8688                                ___E,
8689                            >(
8690                                value, preallocated.encoder, &mut out, ()
8691                            )?;
8692                        } else {
8693                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
8694                        }
8695                    }
8696
8697                    5 => {
8698                        if let Some(value) = self.subdir.take() {
8699                            ::fidl_next::wire::Envelope::encode_value::<
8700                                ::fidl_next::wire::String<'static>,
8701                                ___E,
8702                            >(
8703                                value, preallocated.encoder, &mut out, 1024
8704                            )?;
8705                        } else {
8706                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
8707                        }
8708                    }
8709
8710                    4 => {
8711                        if let Some(value) = self.rights.take() {
8712                            ::fidl_next::wire::Envelope::encode_value::<
8713                                ::fidl_next_common_fuchsia_io::wire::Operations,
8714                                ___E,
8715                            >(
8716                                value, preallocated.encoder, &mut out, ()
8717                            )?;
8718                        } else {
8719                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
8720                        }
8721                    }
8722
8723                    3 => {
8724                        if let Some(value) = self.target_path.take() {
8725                            ::fidl_next::wire::Envelope::encode_value::<
8726                                ::fidl_next::wire::String<'static>,
8727                                ___E,
8728                            >(
8729                                value, preallocated.encoder, &mut out, 1024
8730                            )?;
8731                        } else {
8732                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
8733                        }
8734                    }
8735
8736                    2 => {
8737                        if let Some(value) = self.source_name.take() {
8738                            ::fidl_next::wire::Envelope::encode_value::<
8739                                ::fidl_next::wire::String<'static>,
8740                                ___E,
8741                            >(
8742                                value, preallocated.encoder, &mut out, 100
8743                            )?;
8744                        } else {
8745                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
8746                        }
8747                    }
8748
8749                    1 => {
8750                        if let Some(value) = self.source.take() {
8751                            ::fidl_next::wire::Envelope::encode_value::<
8752                                crate::wire::Ref<'static>,
8753                                ___E,
8754                            >(
8755                                value, preallocated.encoder, &mut out, ()
8756                            )?;
8757                        } else {
8758                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
8759                        }
8760                    }
8761
8762                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
8763                }
8764                unsafe {
8765                    preallocated.write_next(out.assume_init_ref());
8766                }
8767            }
8768
8769            ::fidl_next::wire::Table::encode_len(table, max_ord);
8770
8771            Ok(())
8772        }
8773    }
8774
8775    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::UseDirectory<'static>, ___E>
8776        for &'a UseDirectory
8777    where
8778        ___E: ::fidl_next::Encoder + ?Sized,
8779    {
8780        #[inline]
8781        fn encode(
8782            self,
8783            encoder: &mut ___E,
8784            out: &mut ::core::mem::MaybeUninit<crate::wire::UseDirectory<'static>>,
8785            _: (),
8786        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
8787            ::fidl_next::munge!(let crate::wire::UseDirectory { table } = out);
8788
8789            let max_ord = self.__max_ordinal();
8790
8791            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
8792            ::fidl_next::Wire::zero_padding(&mut out);
8793
8794            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
8795                ::fidl_next::wire::Envelope,
8796            >(encoder, max_ord);
8797
8798            for i in 1..=max_ord {
8799                match i {
8800                    8 => {
8801                        if let Some(value) = &self.source_dictionary {
8802                            ::fidl_next::wire::Envelope::encode_value::<
8803                                ::fidl_next::wire::String<'static>,
8804                                ___E,
8805                            >(
8806                                value, preallocated.encoder, &mut out, 1024
8807                            )?;
8808                        } else {
8809                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
8810                        }
8811                    }
8812
8813                    7 => {
8814                        if let Some(value) = &self.availability {
8815                            ::fidl_next::wire::Envelope::encode_value::<
8816                                crate::wire::Availability,
8817                                ___E,
8818                            >(
8819                                value, preallocated.encoder, &mut out, ()
8820                            )?;
8821                        } else {
8822                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
8823                        }
8824                    }
8825
8826                    6 => {
8827                        if let Some(value) = &self.dependency_type {
8828                            ::fidl_next::wire::Envelope::encode_value::<
8829                                crate::wire::DependencyType,
8830                                ___E,
8831                            >(
8832                                value, preallocated.encoder, &mut out, ()
8833                            )?;
8834                        } else {
8835                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
8836                        }
8837                    }
8838
8839                    5 => {
8840                        if let Some(value) = &self.subdir {
8841                            ::fidl_next::wire::Envelope::encode_value::<
8842                                ::fidl_next::wire::String<'static>,
8843                                ___E,
8844                            >(
8845                                value, preallocated.encoder, &mut out, 1024
8846                            )?;
8847                        } else {
8848                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
8849                        }
8850                    }
8851
8852                    4 => {
8853                        if let Some(value) = &self.rights {
8854                            ::fidl_next::wire::Envelope::encode_value::<
8855                                ::fidl_next_common_fuchsia_io::wire::Operations,
8856                                ___E,
8857                            >(
8858                                value, preallocated.encoder, &mut out, ()
8859                            )?;
8860                        } else {
8861                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
8862                        }
8863                    }
8864
8865                    3 => {
8866                        if let Some(value) = &self.target_path {
8867                            ::fidl_next::wire::Envelope::encode_value::<
8868                                ::fidl_next::wire::String<'static>,
8869                                ___E,
8870                            >(
8871                                value, preallocated.encoder, &mut out, 1024
8872                            )?;
8873                        } else {
8874                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
8875                        }
8876                    }
8877
8878                    2 => {
8879                        if let Some(value) = &self.source_name {
8880                            ::fidl_next::wire::Envelope::encode_value::<
8881                                ::fidl_next::wire::String<'static>,
8882                                ___E,
8883                            >(
8884                                value, preallocated.encoder, &mut out, 100
8885                            )?;
8886                        } else {
8887                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
8888                        }
8889                    }
8890
8891                    1 => {
8892                        if let Some(value) = &self.source {
8893                            ::fidl_next::wire::Envelope::encode_value::<
8894                                crate::wire::Ref<'static>,
8895                                ___E,
8896                            >(
8897                                value, preallocated.encoder, &mut out, ()
8898                            )?;
8899                        } else {
8900                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
8901                        }
8902                    }
8903
8904                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
8905                }
8906                unsafe {
8907                    preallocated.write_next(out.assume_init_ref());
8908                }
8909            }
8910
8911            ::fidl_next::wire::Table::encode_len(table, max_ord);
8912
8913            Ok(())
8914        }
8915    }
8916
8917    impl<'de> ::fidl_next::FromWire<crate::wire::UseDirectory<'de>> for UseDirectory {
8918        #[inline]
8919        fn from_wire(wire_: crate::wire::UseDirectory<'de>) -> Self {
8920            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
8921
8922            let source = wire_.table.get(1);
8923
8924            let source_name = wire_.table.get(2);
8925
8926            let target_path = wire_.table.get(3);
8927
8928            let rights = wire_.table.get(4);
8929
8930            let subdir = wire_.table.get(5);
8931
8932            let dependency_type = wire_.table.get(6);
8933
8934            let availability = wire_.table.get(7);
8935
8936            let source_dictionary = wire_.table.get(8);
8937
8938            Self {
8939                source: source.map(|envelope| {
8940                    ::fidl_next::FromWire::from_wire(unsafe {
8941                        envelope.read_unchecked::<crate::wire::Ref<'de>>()
8942                    })
8943                }),
8944
8945                source_name: source_name.map(|envelope| {
8946                    ::fidl_next::FromWire::from_wire(unsafe {
8947                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
8948                    })
8949                }),
8950
8951                target_path: target_path.map(|envelope| {
8952                    ::fidl_next::FromWire::from_wire(unsafe {
8953                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
8954                    })
8955                }),
8956
8957                rights: rights.map(|envelope| {
8958                    ::fidl_next::FromWire::from_wire(unsafe {
8959                        envelope.read_unchecked::<::fidl_next_common_fuchsia_io::wire::Operations>()
8960                    })
8961                }),
8962
8963                subdir: subdir.map(|envelope| {
8964                    ::fidl_next::FromWire::from_wire(unsafe {
8965                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
8966                    })
8967                }),
8968
8969                dependency_type: dependency_type.map(|envelope| {
8970                    ::fidl_next::FromWire::from_wire(unsafe {
8971                        envelope.read_unchecked::<crate::wire::DependencyType>()
8972                    })
8973                }),
8974
8975                availability: availability.map(|envelope| {
8976                    ::fidl_next::FromWire::from_wire(unsafe {
8977                        envelope.read_unchecked::<crate::wire::Availability>()
8978                    })
8979                }),
8980
8981                source_dictionary: source_dictionary.map(|envelope| {
8982                    ::fidl_next::FromWire::from_wire(unsafe {
8983                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
8984                    })
8985                }),
8986            }
8987        }
8988    }
8989
8990    impl<'de> ::fidl_next::FromWireRef<crate::wire::UseDirectory<'de>> for UseDirectory {
8991        #[inline]
8992        fn from_wire_ref(wire: &crate::wire::UseDirectory<'de>) -> Self {
8993            Self {
8994                source: wire.table.get(1).map(|envelope| {
8995                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
8996                        envelope.deref_unchecked::<crate::wire::Ref<'de>>()
8997                    })
8998                }),
8999
9000                source_name: wire.table.get(2).map(|envelope| {
9001                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
9002                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
9003                    })
9004                }),
9005
9006                target_path: wire.table.get(3).map(|envelope| {
9007                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
9008                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
9009                    })
9010                }),
9011
9012                rights: wire.table.get(4).map(|envelope| {
9013                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
9014                        envelope
9015                            .deref_unchecked::<::fidl_next_common_fuchsia_io::wire::Operations>()
9016                    })
9017                }),
9018
9019                subdir: wire.table.get(5).map(|envelope| {
9020                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
9021                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
9022                    })
9023                }),
9024
9025                dependency_type: wire.table.get(6).map(|envelope| {
9026                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
9027                        envelope.deref_unchecked::<crate::wire::DependencyType>()
9028                    })
9029                }),
9030
9031                availability: wire.table.get(7).map(|envelope| {
9032                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
9033                        envelope.deref_unchecked::<crate::wire::Availability>()
9034                    })
9035                }),
9036
9037                source_dictionary: wire.table.get(8).map(|envelope| {
9038                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
9039                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
9040                    })
9041                }),
9042            }
9043        }
9044    }
9045
9046    #[doc = " Declares an EventStream used by a component.\n"]
9047    #[derive(Debug, Default, Clone, PartialEq)]
9048    pub struct UseEventStream {
9049        pub source_name: ::core::option::Option<::std::string::String>,
9050
9051        pub source: ::core::option::Option<crate::natural::Ref>,
9052
9053        pub scope: ::core::option::Option<::std::vec::Vec<crate::natural::Ref>>,
9054
9055        pub target_path: ::core::option::Option<::std::string::String>,
9056
9057        pub availability: ::core::option::Option<crate::natural::Availability>,
9058
9059        pub filter: ::core::option::Option<::fidl_next_common_fuchsia_data::natural::Dictionary>,
9060    }
9061
9062    impl UseEventStream {
9063        fn __max_ordinal(&self) -> usize {
9064            if self.filter.is_some() {
9065                return 6;
9066            }
9067
9068            if self.availability.is_some() {
9069                return 5;
9070            }
9071
9072            if self.target_path.is_some() {
9073                return 4;
9074            }
9075
9076            if self.scope.is_some() {
9077                return 3;
9078            }
9079
9080            if self.source.is_some() {
9081                return 2;
9082            }
9083
9084            if self.source_name.is_some() {
9085                return 1;
9086            }
9087
9088            0
9089        }
9090    }
9091
9092    unsafe impl<___E> ::fidl_next::Encode<crate::wire::UseEventStream<'static>, ___E> for UseEventStream
9093    where
9094        ___E: ::fidl_next::Encoder + ?Sized,
9095    {
9096        #[inline]
9097        fn encode(
9098            mut self,
9099            encoder: &mut ___E,
9100            out: &mut ::core::mem::MaybeUninit<crate::wire::UseEventStream<'static>>,
9101            _: (),
9102        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
9103            ::fidl_next::munge!(let crate::wire::UseEventStream { table } = out);
9104
9105            let max_ord = self.__max_ordinal();
9106
9107            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
9108            ::fidl_next::Wire::zero_padding(&mut out);
9109
9110            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
9111                ::fidl_next::wire::Envelope,
9112            >(encoder, max_ord);
9113
9114            for i in 1..=max_ord {
9115                match i {
9116                    6 => {
9117                        if let Some(value) = self.filter.take() {
9118                            ::fidl_next::wire::Envelope::encode_value::<
9119                                ::fidl_next_common_fuchsia_data::wire::Dictionary<'static>,
9120                                ___E,
9121                            >(
9122                                value, preallocated.encoder, &mut out, ()
9123                            )?;
9124                        } else {
9125                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
9126                        }
9127                    }
9128
9129                    5 => {
9130                        if let Some(value) = self.availability.take() {
9131                            ::fidl_next::wire::Envelope::encode_value::<
9132                                crate::wire::Availability,
9133                                ___E,
9134                            >(
9135                                value, preallocated.encoder, &mut out, ()
9136                            )?;
9137                        } else {
9138                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
9139                        }
9140                    }
9141
9142                    4 => {
9143                        if let Some(value) = self.target_path.take() {
9144                            ::fidl_next::wire::Envelope::encode_value::<
9145                                ::fidl_next::wire::String<'static>,
9146                                ___E,
9147                            >(
9148                                value, preallocated.encoder, &mut out, 100
9149                            )?;
9150                        } else {
9151                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
9152                        }
9153                    }
9154
9155                    3 => {
9156                        if let Some(value) = self.scope.take() {
9157                            ::fidl_next::wire::Envelope::encode_value::<
9158                                ::fidl_next::wire::Vector<'static, crate::wire::Ref<'static>>,
9159                                ___E,
9160                            >(
9161                                value, preallocated.encoder, &mut out, (4294967295, ())
9162                            )?;
9163                        } else {
9164                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
9165                        }
9166                    }
9167
9168                    2 => {
9169                        if let Some(value) = self.source.take() {
9170                            ::fidl_next::wire::Envelope::encode_value::<
9171                                crate::wire::Ref<'static>,
9172                                ___E,
9173                            >(
9174                                value, preallocated.encoder, &mut out, ()
9175                            )?;
9176                        } else {
9177                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
9178                        }
9179                    }
9180
9181                    1 => {
9182                        if let Some(value) = self.source_name.take() {
9183                            ::fidl_next::wire::Envelope::encode_value::<
9184                                ::fidl_next::wire::String<'static>,
9185                                ___E,
9186                            >(
9187                                value, preallocated.encoder, &mut out, 100
9188                            )?;
9189                        } else {
9190                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
9191                        }
9192                    }
9193
9194                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
9195                }
9196                unsafe {
9197                    preallocated.write_next(out.assume_init_ref());
9198                }
9199            }
9200
9201            ::fidl_next::wire::Table::encode_len(table, max_ord);
9202
9203            Ok(())
9204        }
9205    }
9206
9207    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::UseEventStream<'static>, ___E>
9208        for &'a UseEventStream
9209    where
9210        ___E: ::fidl_next::Encoder + ?Sized,
9211    {
9212        #[inline]
9213        fn encode(
9214            self,
9215            encoder: &mut ___E,
9216            out: &mut ::core::mem::MaybeUninit<crate::wire::UseEventStream<'static>>,
9217            _: (),
9218        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
9219            ::fidl_next::munge!(let crate::wire::UseEventStream { table } = out);
9220
9221            let max_ord = self.__max_ordinal();
9222
9223            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
9224            ::fidl_next::Wire::zero_padding(&mut out);
9225
9226            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
9227                ::fidl_next::wire::Envelope,
9228            >(encoder, max_ord);
9229
9230            for i in 1..=max_ord {
9231                match i {
9232                    6 => {
9233                        if let Some(value) = &self.filter {
9234                            ::fidl_next::wire::Envelope::encode_value::<
9235                                ::fidl_next_common_fuchsia_data::wire::Dictionary<'static>,
9236                                ___E,
9237                            >(
9238                                value, preallocated.encoder, &mut out, ()
9239                            )?;
9240                        } else {
9241                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
9242                        }
9243                    }
9244
9245                    5 => {
9246                        if let Some(value) = &self.availability {
9247                            ::fidl_next::wire::Envelope::encode_value::<
9248                                crate::wire::Availability,
9249                                ___E,
9250                            >(
9251                                value, preallocated.encoder, &mut out, ()
9252                            )?;
9253                        } else {
9254                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
9255                        }
9256                    }
9257
9258                    4 => {
9259                        if let Some(value) = &self.target_path {
9260                            ::fidl_next::wire::Envelope::encode_value::<
9261                                ::fidl_next::wire::String<'static>,
9262                                ___E,
9263                            >(
9264                                value, preallocated.encoder, &mut out, 100
9265                            )?;
9266                        } else {
9267                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
9268                        }
9269                    }
9270
9271                    3 => {
9272                        if let Some(value) = &self.scope {
9273                            ::fidl_next::wire::Envelope::encode_value::<
9274                                ::fidl_next::wire::Vector<'static, crate::wire::Ref<'static>>,
9275                                ___E,
9276                            >(
9277                                value, preallocated.encoder, &mut out, (4294967295, ())
9278                            )?;
9279                        } else {
9280                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
9281                        }
9282                    }
9283
9284                    2 => {
9285                        if let Some(value) = &self.source {
9286                            ::fidl_next::wire::Envelope::encode_value::<
9287                                crate::wire::Ref<'static>,
9288                                ___E,
9289                            >(
9290                                value, preallocated.encoder, &mut out, ()
9291                            )?;
9292                        } else {
9293                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
9294                        }
9295                    }
9296
9297                    1 => {
9298                        if let Some(value) = &self.source_name {
9299                            ::fidl_next::wire::Envelope::encode_value::<
9300                                ::fidl_next::wire::String<'static>,
9301                                ___E,
9302                            >(
9303                                value, preallocated.encoder, &mut out, 100
9304                            )?;
9305                        } else {
9306                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
9307                        }
9308                    }
9309
9310                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
9311                }
9312                unsafe {
9313                    preallocated.write_next(out.assume_init_ref());
9314                }
9315            }
9316
9317            ::fidl_next::wire::Table::encode_len(table, max_ord);
9318
9319            Ok(())
9320        }
9321    }
9322
9323    impl<'de> ::fidl_next::FromWire<crate::wire::UseEventStream<'de>> for UseEventStream {
9324        #[inline]
9325        fn from_wire(wire_: crate::wire::UseEventStream<'de>) -> Self {
9326            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
9327
9328            let source_name = wire_.table.get(1);
9329
9330            let source = wire_.table.get(2);
9331
9332            let scope = wire_.table.get(3);
9333
9334            let target_path = wire_.table.get(4);
9335
9336            let availability = wire_.table.get(5);
9337
9338            let filter = wire_.table.get(6);
9339
9340            Self {
9341
9342
9343                source_name: source_name.map(|envelope| ::fidl_next::FromWire::from_wire(
9344                    unsafe { envelope.read_unchecked::<::fidl_next::wire::String<'de>>() }
9345                )),
9346
9347
9348                source: source.map(|envelope| ::fidl_next::FromWire::from_wire(
9349                    unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() }
9350                )),
9351
9352
9353                scope: scope.map(|envelope| ::fidl_next::FromWire::from_wire(
9354                    unsafe { envelope.read_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::Ref<'de>>>() }
9355                )),
9356
9357
9358                target_path: target_path.map(|envelope| ::fidl_next::FromWire::from_wire(
9359                    unsafe { envelope.read_unchecked::<::fidl_next::wire::String<'de>>() }
9360                )),
9361
9362
9363                availability: availability.map(|envelope| ::fidl_next::FromWire::from_wire(
9364                    unsafe { envelope.read_unchecked::<crate::wire::Availability>() }
9365                )),
9366
9367
9368                filter: filter.map(|envelope| ::fidl_next::FromWire::from_wire(
9369                    unsafe { envelope.read_unchecked::<::fidl_next_common_fuchsia_data::wire::Dictionary<'de>>() }
9370                )),
9371
9372        }
9373        }
9374    }
9375
9376    impl<'de> ::fidl_next::FromWireRef<crate::wire::UseEventStream<'de>> for UseEventStream {
9377        #[inline]
9378        fn from_wire_ref(wire: &crate::wire::UseEventStream<'de>) -> Self {
9379            Self {
9380
9381
9382                source_name: wire.table.get(1)
9383                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
9384                        unsafe { envelope.deref_unchecked::<::fidl_next::wire::String<'de>>() }
9385                    )),
9386
9387
9388                source: wire.table.get(2)
9389                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
9390                        unsafe { envelope.deref_unchecked::<crate::wire::Ref<'de>>() }
9391                    )),
9392
9393
9394                scope: wire.table.get(3)
9395                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
9396                        unsafe { envelope.deref_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::Ref<'de>>>() }
9397                    )),
9398
9399
9400                target_path: wire.table.get(4)
9401                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
9402                        unsafe { envelope.deref_unchecked::<::fidl_next::wire::String<'de>>() }
9403                    )),
9404
9405
9406                availability: wire.table.get(5)
9407                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
9408                        unsafe { envelope.deref_unchecked::<crate::wire::Availability>() }
9409                    )),
9410
9411
9412                filter: wire.table.get(6)
9413                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
9414                        unsafe { envelope.deref_unchecked::<::fidl_next_common_fuchsia_data::wire::Dictionary<'de>>() }
9415                    )),
9416
9417        }
9418        }
9419    }
9420
9421    #[doc = " Declares runner used by a component.\n"]
9422    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
9423    pub struct UseRunner {
9424        pub source: ::core::option::Option<crate::natural::Ref>,
9425
9426        pub source_name: ::core::option::Option<::std::string::String>,
9427
9428        pub source_dictionary: ::core::option::Option<::std::string::String>,
9429    }
9430
9431    impl UseRunner {
9432        fn __max_ordinal(&self) -> usize {
9433            if self.source_dictionary.is_some() {
9434                return 3;
9435            }
9436
9437            if self.source_name.is_some() {
9438                return 2;
9439            }
9440
9441            if self.source.is_some() {
9442                return 1;
9443            }
9444
9445            0
9446        }
9447    }
9448
9449    unsafe impl<___E> ::fidl_next::Encode<crate::wire::UseRunner<'static>, ___E> for UseRunner
9450    where
9451        ___E: ::fidl_next::Encoder + ?Sized,
9452    {
9453        #[inline]
9454        fn encode(
9455            mut self,
9456            encoder: &mut ___E,
9457            out: &mut ::core::mem::MaybeUninit<crate::wire::UseRunner<'static>>,
9458            _: (),
9459        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
9460            ::fidl_next::munge!(let crate::wire::UseRunner { table } = out);
9461
9462            let max_ord = self.__max_ordinal();
9463
9464            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
9465            ::fidl_next::Wire::zero_padding(&mut out);
9466
9467            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
9468                ::fidl_next::wire::Envelope,
9469            >(encoder, max_ord);
9470
9471            for i in 1..=max_ord {
9472                match i {
9473                    3 => {
9474                        if let Some(value) = self.source_dictionary.take() {
9475                            ::fidl_next::wire::Envelope::encode_value::<
9476                                ::fidl_next::wire::String<'static>,
9477                                ___E,
9478                            >(
9479                                value, preallocated.encoder, &mut out, 1024
9480                            )?;
9481                        } else {
9482                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
9483                        }
9484                    }
9485
9486                    2 => {
9487                        if let Some(value) = self.source_name.take() {
9488                            ::fidl_next::wire::Envelope::encode_value::<
9489                                ::fidl_next::wire::String<'static>,
9490                                ___E,
9491                            >(
9492                                value, preallocated.encoder, &mut out, 100
9493                            )?;
9494                        } else {
9495                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
9496                        }
9497                    }
9498
9499                    1 => {
9500                        if let Some(value) = self.source.take() {
9501                            ::fidl_next::wire::Envelope::encode_value::<
9502                                crate::wire::Ref<'static>,
9503                                ___E,
9504                            >(
9505                                value, preallocated.encoder, &mut out, ()
9506                            )?;
9507                        } else {
9508                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
9509                        }
9510                    }
9511
9512                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
9513                }
9514                unsafe {
9515                    preallocated.write_next(out.assume_init_ref());
9516                }
9517            }
9518
9519            ::fidl_next::wire::Table::encode_len(table, max_ord);
9520
9521            Ok(())
9522        }
9523    }
9524
9525    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::UseRunner<'static>, ___E> for &'a UseRunner
9526    where
9527        ___E: ::fidl_next::Encoder + ?Sized,
9528    {
9529        #[inline]
9530        fn encode(
9531            self,
9532            encoder: &mut ___E,
9533            out: &mut ::core::mem::MaybeUninit<crate::wire::UseRunner<'static>>,
9534            _: (),
9535        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
9536            ::fidl_next::munge!(let crate::wire::UseRunner { table } = out);
9537
9538            let max_ord = self.__max_ordinal();
9539
9540            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
9541            ::fidl_next::Wire::zero_padding(&mut out);
9542
9543            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
9544                ::fidl_next::wire::Envelope,
9545            >(encoder, max_ord);
9546
9547            for i in 1..=max_ord {
9548                match i {
9549                    3 => {
9550                        if let Some(value) = &self.source_dictionary {
9551                            ::fidl_next::wire::Envelope::encode_value::<
9552                                ::fidl_next::wire::String<'static>,
9553                                ___E,
9554                            >(
9555                                value, preallocated.encoder, &mut out, 1024
9556                            )?;
9557                        } else {
9558                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
9559                        }
9560                    }
9561
9562                    2 => {
9563                        if let Some(value) = &self.source_name {
9564                            ::fidl_next::wire::Envelope::encode_value::<
9565                                ::fidl_next::wire::String<'static>,
9566                                ___E,
9567                            >(
9568                                value, preallocated.encoder, &mut out, 100
9569                            )?;
9570                        } else {
9571                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
9572                        }
9573                    }
9574
9575                    1 => {
9576                        if let Some(value) = &self.source {
9577                            ::fidl_next::wire::Envelope::encode_value::<
9578                                crate::wire::Ref<'static>,
9579                                ___E,
9580                            >(
9581                                value, preallocated.encoder, &mut out, ()
9582                            )?;
9583                        } else {
9584                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
9585                        }
9586                    }
9587
9588                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
9589                }
9590                unsafe {
9591                    preallocated.write_next(out.assume_init_ref());
9592                }
9593            }
9594
9595            ::fidl_next::wire::Table::encode_len(table, max_ord);
9596
9597            Ok(())
9598        }
9599    }
9600
9601    impl<'de> ::fidl_next::FromWire<crate::wire::UseRunner<'de>> for UseRunner {
9602        #[inline]
9603        fn from_wire(wire_: crate::wire::UseRunner<'de>) -> Self {
9604            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
9605
9606            let source = wire_.table.get(1);
9607
9608            let source_name = wire_.table.get(2);
9609
9610            let source_dictionary = wire_.table.get(3);
9611
9612            Self {
9613                source: source.map(|envelope| {
9614                    ::fidl_next::FromWire::from_wire(unsafe {
9615                        envelope.read_unchecked::<crate::wire::Ref<'de>>()
9616                    })
9617                }),
9618
9619                source_name: source_name.map(|envelope| {
9620                    ::fidl_next::FromWire::from_wire(unsafe {
9621                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
9622                    })
9623                }),
9624
9625                source_dictionary: source_dictionary.map(|envelope| {
9626                    ::fidl_next::FromWire::from_wire(unsafe {
9627                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
9628                    })
9629                }),
9630            }
9631        }
9632    }
9633
9634    impl<'de> ::fidl_next::FromWireRef<crate::wire::UseRunner<'de>> for UseRunner {
9635        #[inline]
9636        fn from_wire_ref(wire: &crate::wire::UseRunner<'de>) -> Self {
9637            Self {
9638                source: wire.table.get(1).map(|envelope| {
9639                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
9640                        envelope.deref_unchecked::<crate::wire::Ref<'de>>()
9641                    })
9642                }),
9643
9644                source_name: wire.table.get(2).map(|envelope| {
9645                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
9646                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
9647                    })
9648                }),
9649
9650                source_dictionary: wire.table.get(3).map(|envelope| {
9651                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
9652                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
9653                    })
9654                }),
9655            }
9656        }
9657    }
9658
9659    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
9660    pub struct UseConfiguration {
9661        pub source: ::core::option::Option<crate::natural::Ref>,
9662
9663        pub source_name: ::core::option::Option<::std::string::String>,
9664
9665        pub target_name: ::core::option::Option<::std::string::String>,
9666
9667        pub availability: ::core::option::Option<crate::natural::Availability>,
9668
9669        pub type_: ::core::option::Option<crate::natural::ConfigType>,
9670
9671        pub default: ::core::option::Option<crate::natural::ConfigValue>,
9672
9673        pub source_dictionary: ::core::option::Option<::std::string::String>,
9674    }
9675
9676    impl UseConfiguration {
9677        fn __max_ordinal(&self) -> usize {
9678            if self.source_dictionary.is_some() {
9679                return 7;
9680            }
9681
9682            if self.default.is_some() {
9683                return 6;
9684            }
9685
9686            if self.type_.is_some() {
9687                return 5;
9688            }
9689
9690            if self.availability.is_some() {
9691                return 4;
9692            }
9693
9694            if self.target_name.is_some() {
9695                return 3;
9696            }
9697
9698            if self.source_name.is_some() {
9699                return 2;
9700            }
9701
9702            if self.source.is_some() {
9703                return 1;
9704            }
9705
9706            0
9707        }
9708    }
9709
9710    unsafe impl<___E> ::fidl_next::Encode<crate::wire::UseConfiguration<'static>, ___E>
9711        for UseConfiguration
9712    where
9713        ___E: ::fidl_next::Encoder + ?Sized,
9714    {
9715        #[inline]
9716        fn encode(
9717            mut self,
9718            encoder: &mut ___E,
9719            out: &mut ::core::mem::MaybeUninit<crate::wire::UseConfiguration<'static>>,
9720            _: (),
9721        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
9722            ::fidl_next::munge!(let crate::wire::UseConfiguration { table } = out);
9723
9724            let max_ord = self.__max_ordinal();
9725
9726            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
9727            ::fidl_next::Wire::zero_padding(&mut out);
9728
9729            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
9730                ::fidl_next::wire::Envelope,
9731            >(encoder, max_ord);
9732
9733            for i in 1..=max_ord {
9734                match i {
9735                    7 => {
9736                        if let Some(value) = self.source_dictionary.take() {
9737                            ::fidl_next::wire::Envelope::encode_value::<
9738                                ::fidl_next::wire::String<'static>,
9739                                ___E,
9740                            >(
9741                                value, preallocated.encoder, &mut out, 1024
9742                            )?;
9743                        } else {
9744                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
9745                        }
9746                    }
9747
9748                    6 => {
9749                        if let Some(value) = self.default.take() {
9750                            ::fidl_next::wire::Envelope::encode_value::<
9751                                crate::wire::ConfigValue<'static>,
9752                                ___E,
9753                            >(
9754                                value, preallocated.encoder, &mut out, ()
9755                            )?;
9756                        } else {
9757                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
9758                        }
9759                    }
9760
9761                    5 => {
9762                        if let Some(value) = self.type_.take() {
9763                            ::fidl_next::wire::Envelope::encode_value::<
9764                                crate::wire::ConfigType<'static>,
9765                                ___E,
9766                            >(
9767                                value, preallocated.encoder, &mut out, ()
9768                            )?;
9769                        } else {
9770                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
9771                        }
9772                    }
9773
9774                    4 => {
9775                        if let Some(value) = self.availability.take() {
9776                            ::fidl_next::wire::Envelope::encode_value::<
9777                                crate::wire::Availability,
9778                                ___E,
9779                            >(
9780                                value, preallocated.encoder, &mut out, ()
9781                            )?;
9782                        } else {
9783                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
9784                        }
9785                    }
9786
9787                    3 => {
9788                        if let Some(value) = self.target_name.take() {
9789                            ::fidl_next::wire::Envelope::encode_value::<
9790                                ::fidl_next::wire::String<'static>,
9791                                ___E,
9792                            >(
9793                                value, preallocated.encoder, &mut out, 100
9794                            )?;
9795                        } else {
9796                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
9797                        }
9798                    }
9799
9800                    2 => {
9801                        if let Some(value) = self.source_name.take() {
9802                            ::fidl_next::wire::Envelope::encode_value::<
9803                                ::fidl_next::wire::String<'static>,
9804                                ___E,
9805                            >(
9806                                value, preallocated.encoder, &mut out, 100
9807                            )?;
9808                        } else {
9809                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
9810                        }
9811                    }
9812
9813                    1 => {
9814                        if let Some(value) = self.source.take() {
9815                            ::fidl_next::wire::Envelope::encode_value::<
9816                                crate::wire::Ref<'static>,
9817                                ___E,
9818                            >(
9819                                value, preallocated.encoder, &mut out, ()
9820                            )?;
9821                        } else {
9822                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
9823                        }
9824                    }
9825
9826                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
9827                }
9828                unsafe {
9829                    preallocated.write_next(out.assume_init_ref());
9830                }
9831            }
9832
9833            ::fidl_next::wire::Table::encode_len(table, max_ord);
9834
9835            Ok(())
9836        }
9837    }
9838
9839    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::UseConfiguration<'static>, ___E>
9840        for &'a UseConfiguration
9841    where
9842        ___E: ::fidl_next::Encoder + ?Sized,
9843    {
9844        #[inline]
9845        fn encode(
9846            self,
9847            encoder: &mut ___E,
9848            out: &mut ::core::mem::MaybeUninit<crate::wire::UseConfiguration<'static>>,
9849            _: (),
9850        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
9851            ::fidl_next::munge!(let crate::wire::UseConfiguration { table } = out);
9852
9853            let max_ord = self.__max_ordinal();
9854
9855            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
9856            ::fidl_next::Wire::zero_padding(&mut out);
9857
9858            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
9859                ::fidl_next::wire::Envelope,
9860            >(encoder, max_ord);
9861
9862            for i in 1..=max_ord {
9863                match i {
9864                    7 => {
9865                        if let Some(value) = &self.source_dictionary {
9866                            ::fidl_next::wire::Envelope::encode_value::<
9867                                ::fidl_next::wire::String<'static>,
9868                                ___E,
9869                            >(
9870                                value, preallocated.encoder, &mut out, 1024
9871                            )?;
9872                        } else {
9873                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
9874                        }
9875                    }
9876
9877                    6 => {
9878                        if let Some(value) = &self.default {
9879                            ::fidl_next::wire::Envelope::encode_value::<
9880                                crate::wire::ConfigValue<'static>,
9881                                ___E,
9882                            >(
9883                                value, preallocated.encoder, &mut out, ()
9884                            )?;
9885                        } else {
9886                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
9887                        }
9888                    }
9889
9890                    5 => {
9891                        if let Some(value) = &self.type_ {
9892                            ::fidl_next::wire::Envelope::encode_value::<
9893                                crate::wire::ConfigType<'static>,
9894                                ___E,
9895                            >(
9896                                value, preallocated.encoder, &mut out, ()
9897                            )?;
9898                        } else {
9899                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
9900                        }
9901                    }
9902
9903                    4 => {
9904                        if let Some(value) = &self.availability {
9905                            ::fidl_next::wire::Envelope::encode_value::<
9906                                crate::wire::Availability,
9907                                ___E,
9908                            >(
9909                                value, preallocated.encoder, &mut out, ()
9910                            )?;
9911                        } else {
9912                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
9913                        }
9914                    }
9915
9916                    3 => {
9917                        if let Some(value) = &self.target_name {
9918                            ::fidl_next::wire::Envelope::encode_value::<
9919                                ::fidl_next::wire::String<'static>,
9920                                ___E,
9921                            >(
9922                                value, preallocated.encoder, &mut out, 100
9923                            )?;
9924                        } else {
9925                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
9926                        }
9927                    }
9928
9929                    2 => {
9930                        if let Some(value) = &self.source_name {
9931                            ::fidl_next::wire::Envelope::encode_value::<
9932                                ::fidl_next::wire::String<'static>,
9933                                ___E,
9934                            >(
9935                                value, preallocated.encoder, &mut out, 100
9936                            )?;
9937                        } else {
9938                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
9939                        }
9940                    }
9941
9942                    1 => {
9943                        if let Some(value) = &self.source {
9944                            ::fidl_next::wire::Envelope::encode_value::<
9945                                crate::wire::Ref<'static>,
9946                                ___E,
9947                            >(
9948                                value, preallocated.encoder, &mut out, ()
9949                            )?;
9950                        } else {
9951                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
9952                        }
9953                    }
9954
9955                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
9956                }
9957                unsafe {
9958                    preallocated.write_next(out.assume_init_ref());
9959                }
9960            }
9961
9962            ::fidl_next::wire::Table::encode_len(table, max_ord);
9963
9964            Ok(())
9965        }
9966    }
9967
9968    impl<'de> ::fidl_next::FromWire<crate::wire::UseConfiguration<'de>> for UseConfiguration {
9969        #[inline]
9970        fn from_wire(wire_: crate::wire::UseConfiguration<'de>) -> Self {
9971            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
9972
9973            let source = wire_.table.get(1);
9974
9975            let source_name = wire_.table.get(2);
9976
9977            let target_name = wire_.table.get(3);
9978
9979            let availability = wire_.table.get(4);
9980
9981            let type_ = wire_.table.get(5);
9982
9983            let default = wire_.table.get(6);
9984
9985            let source_dictionary = wire_.table.get(7);
9986
9987            Self {
9988                source: source.map(|envelope| {
9989                    ::fidl_next::FromWire::from_wire(unsafe {
9990                        envelope.read_unchecked::<crate::wire::Ref<'de>>()
9991                    })
9992                }),
9993
9994                source_name: source_name.map(|envelope| {
9995                    ::fidl_next::FromWire::from_wire(unsafe {
9996                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
9997                    })
9998                }),
9999
10000                target_name: target_name.map(|envelope| {
10001                    ::fidl_next::FromWire::from_wire(unsafe {
10002                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
10003                    })
10004                }),
10005
10006                availability: availability.map(|envelope| {
10007                    ::fidl_next::FromWire::from_wire(unsafe {
10008                        envelope.read_unchecked::<crate::wire::Availability>()
10009                    })
10010                }),
10011
10012                type_: type_.map(|envelope| {
10013                    ::fidl_next::FromWire::from_wire(unsafe {
10014                        envelope.read_unchecked::<crate::wire::ConfigType<'de>>()
10015                    })
10016                }),
10017
10018                default: default.map(|envelope| {
10019                    ::fidl_next::FromWire::from_wire(unsafe {
10020                        envelope.read_unchecked::<crate::wire::ConfigValue<'de>>()
10021                    })
10022                }),
10023
10024                source_dictionary: source_dictionary.map(|envelope| {
10025                    ::fidl_next::FromWire::from_wire(unsafe {
10026                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
10027                    })
10028                }),
10029            }
10030        }
10031    }
10032
10033    impl<'de> ::fidl_next::FromWireRef<crate::wire::UseConfiguration<'de>> for UseConfiguration {
10034        #[inline]
10035        fn from_wire_ref(wire: &crate::wire::UseConfiguration<'de>) -> Self {
10036            Self {
10037                source: wire.table.get(1).map(|envelope| {
10038                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
10039                        envelope.deref_unchecked::<crate::wire::Ref<'de>>()
10040                    })
10041                }),
10042
10043                source_name: wire.table.get(2).map(|envelope| {
10044                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
10045                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
10046                    })
10047                }),
10048
10049                target_name: wire.table.get(3).map(|envelope| {
10050                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
10051                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
10052                    })
10053                }),
10054
10055                availability: wire.table.get(4).map(|envelope| {
10056                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
10057                        envelope.deref_unchecked::<crate::wire::Availability>()
10058                    })
10059                }),
10060
10061                type_: wire.table.get(5).map(|envelope| {
10062                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
10063                        envelope.deref_unchecked::<crate::wire::ConfigType<'de>>()
10064                    })
10065                }),
10066
10067                default: wire.table.get(6).map(|envelope| {
10068                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
10069                        envelope.deref_unchecked::<crate::wire::ConfigValue<'de>>()
10070                    })
10071                }),
10072
10073                source_dictionary: wire.table.get(7).map(|envelope| {
10074                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
10075                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
10076                    })
10077                }),
10078            }
10079        }
10080    }
10081
10082    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
10083    pub struct UseDictionary {
10084        pub source: ::core::option::Option<crate::natural::Ref>,
10085
10086        pub source_name: ::core::option::Option<::std::string::String>,
10087
10088        pub target_path: ::core::option::Option<::std::string::String>,
10089
10090        pub dependency_type: ::core::option::Option<crate::natural::DependencyType>,
10091
10092        pub availability: ::core::option::Option<crate::natural::Availability>,
10093
10094        pub source_dictionary: ::core::option::Option<::std::string::String>,
10095    }
10096
10097    impl UseDictionary {
10098        fn __max_ordinal(&self) -> usize {
10099            if self.source_dictionary.is_some() {
10100                return 8;
10101            }
10102
10103            if self.availability.is_some() {
10104                return 7;
10105            }
10106
10107            if self.dependency_type.is_some() {
10108                return 6;
10109            }
10110
10111            if self.target_path.is_some() {
10112                return 3;
10113            }
10114
10115            if self.source_name.is_some() {
10116                return 2;
10117            }
10118
10119            if self.source.is_some() {
10120                return 1;
10121            }
10122
10123            0
10124        }
10125    }
10126
10127    unsafe impl<___E> ::fidl_next::Encode<crate::wire::UseDictionary<'static>, ___E> for UseDictionary
10128    where
10129        ___E: ::fidl_next::Encoder + ?Sized,
10130    {
10131        #[inline]
10132        fn encode(
10133            mut self,
10134            encoder: &mut ___E,
10135            out: &mut ::core::mem::MaybeUninit<crate::wire::UseDictionary<'static>>,
10136            _: (),
10137        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
10138            ::fidl_next::munge!(let crate::wire::UseDictionary { table } = out);
10139
10140            let max_ord = self.__max_ordinal();
10141
10142            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
10143            ::fidl_next::Wire::zero_padding(&mut out);
10144
10145            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
10146                ::fidl_next::wire::Envelope,
10147            >(encoder, max_ord);
10148
10149            for i in 1..=max_ord {
10150                match i {
10151                    8 => {
10152                        if let Some(value) = self.source_dictionary.take() {
10153                            ::fidl_next::wire::Envelope::encode_value::<
10154                                ::fidl_next::wire::String<'static>,
10155                                ___E,
10156                            >(
10157                                value, preallocated.encoder, &mut out, 1024
10158                            )?;
10159                        } else {
10160                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
10161                        }
10162                    }
10163
10164                    7 => {
10165                        if let Some(value) = self.availability.take() {
10166                            ::fidl_next::wire::Envelope::encode_value::<
10167                                crate::wire::Availability,
10168                                ___E,
10169                            >(
10170                                value, preallocated.encoder, &mut out, ()
10171                            )?;
10172                        } else {
10173                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
10174                        }
10175                    }
10176
10177                    6 => {
10178                        if let Some(value) = self.dependency_type.take() {
10179                            ::fidl_next::wire::Envelope::encode_value::<
10180                                crate::wire::DependencyType,
10181                                ___E,
10182                            >(
10183                                value, preallocated.encoder, &mut out, ()
10184                            )?;
10185                        } else {
10186                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
10187                        }
10188                    }
10189
10190                    3 => {
10191                        if let Some(value) = self.target_path.take() {
10192                            ::fidl_next::wire::Envelope::encode_value::<
10193                                ::fidl_next::wire::String<'static>,
10194                                ___E,
10195                            >(
10196                                value, preallocated.encoder, &mut out, 1024
10197                            )?;
10198                        } else {
10199                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
10200                        }
10201                    }
10202
10203                    2 => {
10204                        if let Some(value) = self.source_name.take() {
10205                            ::fidl_next::wire::Envelope::encode_value::<
10206                                ::fidl_next::wire::String<'static>,
10207                                ___E,
10208                            >(
10209                                value, preallocated.encoder, &mut out, 100
10210                            )?;
10211                        } else {
10212                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
10213                        }
10214                    }
10215
10216                    1 => {
10217                        if let Some(value) = self.source.take() {
10218                            ::fidl_next::wire::Envelope::encode_value::<
10219                                crate::wire::Ref<'static>,
10220                                ___E,
10221                            >(
10222                                value, preallocated.encoder, &mut out, ()
10223                            )?;
10224                        } else {
10225                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
10226                        }
10227                    }
10228
10229                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
10230                }
10231                unsafe {
10232                    preallocated.write_next(out.assume_init_ref());
10233                }
10234            }
10235
10236            ::fidl_next::wire::Table::encode_len(table, max_ord);
10237
10238            Ok(())
10239        }
10240    }
10241
10242    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::UseDictionary<'static>, ___E>
10243        for &'a UseDictionary
10244    where
10245        ___E: ::fidl_next::Encoder + ?Sized,
10246    {
10247        #[inline]
10248        fn encode(
10249            self,
10250            encoder: &mut ___E,
10251            out: &mut ::core::mem::MaybeUninit<crate::wire::UseDictionary<'static>>,
10252            _: (),
10253        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
10254            ::fidl_next::munge!(let crate::wire::UseDictionary { table } = out);
10255
10256            let max_ord = self.__max_ordinal();
10257
10258            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
10259            ::fidl_next::Wire::zero_padding(&mut out);
10260
10261            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
10262                ::fidl_next::wire::Envelope,
10263            >(encoder, max_ord);
10264
10265            for i in 1..=max_ord {
10266                match i {
10267                    8 => {
10268                        if let Some(value) = &self.source_dictionary {
10269                            ::fidl_next::wire::Envelope::encode_value::<
10270                                ::fidl_next::wire::String<'static>,
10271                                ___E,
10272                            >(
10273                                value, preallocated.encoder, &mut out, 1024
10274                            )?;
10275                        } else {
10276                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
10277                        }
10278                    }
10279
10280                    7 => {
10281                        if let Some(value) = &self.availability {
10282                            ::fidl_next::wire::Envelope::encode_value::<
10283                                crate::wire::Availability,
10284                                ___E,
10285                            >(
10286                                value, preallocated.encoder, &mut out, ()
10287                            )?;
10288                        } else {
10289                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
10290                        }
10291                    }
10292
10293                    6 => {
10294                        if let Some(value) = &self.dependency_type {
10295                            ::fidl_next::wire::Envelope::encode_value::<
10296                                crate::wire::DependencyType,
10297                                ___E,
10298                            >(
10299                                value, preallocated.encoder, &mut out, ()
10300                            )?;
10301                        } else {
10302                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
10303                        }
10304                    }
10305
10306                    3 => {
10307                        if let Some(value) = &self.target_path {
10308                            ::fidl_next::wire::Envelope::encode_value::<
10309                                ::fidl_next::wire::String<'static>,
10310                                ___E,
10311                            >(
10312                                value, preallocated.encoder, &mut out, 1024
10313                            )?;
10314                        } else {
10315                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
10316                        }
10317                    }
10318
10319                    2 => {
10320                        if let Some(value) = &self.source_name {
10321                            ::fidl_next::wire::Envelope::encode_value::<
10322                                ::fidl_next::wire::String<'static>,
10323                                ___E,
10324                            >(
10325                                value, preallocated.encoder, &mut out, 100
10326                            )?;
10327                        } else {
10328                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
10329                        }
10330                    }
10331
10332                    1 => {
10333                        if let Some(value) = &self.source {
10334                            ::fidl_next::wire::Envelope::encode_value::<
10335                                crate::wire::Ref<'static>,
10336                                ___E,
10337                            >(
10338                                value, preallocated.encoder, &mut out, ()
10339                            )?;
10340                        } else {
10341                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
10342                        }
10343                    }
10344
10345                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
10346                }
10347                unsafe {
10348                    preallocated.write_next(out.assume_init_ref());
10349                }
10350            }
10351
10352            ::fidl_next::wire::Table::encode_len(table, max_ord);
10353
10354            Ok(())
10355        }
10356    }
10357
10358    impl<'de> ::fidl_next::FromWire<crate::wire::UseDictionary<'de>> for UseDictionary {
10359        #[inline]
10360        fn from_wire(wire_: crate::wire::UseDictionary<'de>) -> Self {
10361            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
10362
10363            let source = wire_.table.get(1);
10364
10365            let source_name = wire_.table.get(2);
10366
10367            let target_path = wire_.table.get(3);
10368
10369            let dependency_type = wire_.table.get(6);
10370
10371            let availability = wire_.table.get(7);
10372
10373            let source_dictionary = wire_.table.get(8);
10374
10375            Self {
10376                source: source.map(|envelope| {
10377                    ::fidl_next::FromWire::from_wire(unsafe {
10378                        envelope.read_unchecked::<crate::wire::Ref<'de>>()
10379                    })
10380                }),
10381
10382                source_name: source_name.map(|envelope| {
10383                    ::fidl_next::FromWire::from_wire(unsafe {
10384                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
10385                    })
10386                }),
10387
10388                target_path: target_path.map(|envelope| {
10389                    ::fidl_next::FromWire::from_wire(unsafe {
10390                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
10391                    })
10392                }),
10393
10394                dependency_type: dependency_type.map(|envelope| {
10395                    ::fidl_next::FromWire::from_wire(unsafe {
10396                        envelope.read_unchecked::<crate::wire::DependencyType>()
10397                    })
10398                }),
10399
10400                availability: availability.map(|envelope| {
10401                    ::fidl_next::FromWire::from_wire(unsafe {
10402                        envelope.read_unchecked::<crate::wire::Availability>()
10403                    })
10404                }),
10405
10406                source_dictionary: source_dictionary.map(|envelope| {
10407                    ::fidl_next::FromWire::from_wire(unsafe {
10408                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
10409                    })
10410                }),
10411            }
10412        }
10413    }
10414
10415    impl<'de> ::fidl_next::FromWireRef<crate::wire::UseDictionary<'de>> for UseDictionary {
10416        #[inline]
10417        fn from_wire_ref(wire: &crate::wire::UseDictionary<'de>) -> Self {
10418            Self {
10419                source: wire.table.get(1).map(|envelope| {
10420                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
10421                        envelope.deref_unchecked::<crate::wire::Ref<'de>>()
10422                    })
10423                }),
10424
10425                source_name: wire.table.get(2).map(|envelope| {
10426                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
10427                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
10428                    })
10429                }),
10430
10431                target_path: wire.table.get(3).map(|envelope| {
10432                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
10433                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
10434                    })
10435                }),
10436
10437                dependency_type: wire.table.get(6).map(|envelope| {
10438                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
10439                        envelope.deref_unchecked::<crate::wire::DependencyType>()
10440                    })
10441                }),
10442
10443                availability: wire.table.get(7).map(|envelope| {
10444                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
10445                        envelope.deref_unchecked::<crate::wire::Availability>()
10446                    })
10447                }),
10448
10449                source_dictionary: wire.table.get(8).map(|envelope| {
10450                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
10451                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
10452                    })
10453                }),
10454            }
10455        }
10456    }
10457
10458    #[doc = " Declares a capability used by a component, which was offered to it.\n"]
10459    #[derive(Debug, Clone, PartialEq)]
10460    pub enum Use {
10461        Service(crate::natural::UseService),
10462
10463        Protocol(crate::natural::UseProtocol),
10464
10465        Directory(crate::natural::UseDirectory),
10466
10467        Storage(crate::natural::UseStorage),
10468
10469        EventStream(crate::natural::UseEventStream),
10470
10471        Runner(crate::natural::UseRunner),
10472
10473        Config(crate::natural::UseConfiguration),
10474
10475        Dictionary(crate::natural::UseDictionary),
10476
10477        UnknownOrdinal_(u64),
10478    }
10479
10480    impl Use {
10481        pub fn is_unknown(&self) -> bool {
10482            #[allow(unreachable_patterns)]
10483            match self {
10484                Self::UnknownOrdinal_(_) => true,
10485                _ => false,
10486            }
10487        }
10488    }
10489
10490    unsafe impl<___E> ::fidl_next::Encode<crate::wire::Use<'static>, ___E> for Use
10491    where
10492        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
10493        ___E: ::fidl_next::Encoder,
10494    {
10495        #[inline]
10496        fn encode(
10497            self,
10498            encoder: &mut ___E,
10499            out: &mut ::core::mem::MaybeUninit<crate::wire::Use<'static>>,
10500            _: (),
10501        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
10502            ::fidl_next::munge!(let crate::wire::Use { raw, _phantom: _ } = out);
10503
10504            match self {
10505                Self::Service(value) => ::fidl_next::wire::Union::encode_as::<
10506                    ___E,
10507                    crate::wire::UseService<'static>,
10508                >(value, 1, encoder, raw, ())?,
10509
10510                Self::Protocol(value) => ::fidl_next::wire::Union::encode_as::<
10511                    ___E,
10512                    crate::wire::UseProtocol<'static>,
10513                >(value, 2, encoder, raw, ())?,
10514
10515                Self::Directory(value) => ::fidl_next::wire::Union::encode_as::<
10516                    ___E,
10517                    crate::wire::UseDirectory<'static>,
10518                >(value, 3, encoder, raw, ())?,
10519
10520                Self::Storage(value) => ::fidl_next::wire::Union::encode_as::<
10521                    ___E,
10522                    crate::wire::UseStorage<'static>,
10523                >(value, 4, encoder, raw, ())?,
10524
10525                Self::EventStream(value) => ::fidl_next::wire::Union::encode_as::<
10526                    ___E,
10527                    crate::wire::UseEventStream<'static>,
10528                >(value, 7, encoder, raw, ())?,
10529
10530                Self::Runner(value) => ::fidl_next::wire::Union::encode_as::<
10531                    ___E,
10532                    crate::wire::UseRunner<'static>,
10533                >(value, 8, encoder, raw, ())?,
10534
10535                Self::Config(value) => ::fidl_next::wire::Union::encode_as::<
10536                    ___E,
10537                    crate::wire::UseConfiguration<'static>,
10538                >(value, 9, encoder, raw, ())?,
10539
10540                Self::Dictionary(value) => ::fidl_next::wire::Union::encode_as::<
10541                    ___E,
10542                    crate::wire::UseDictionary<'static>,
10543                >(value, 10, encoder, raw, ())?,
10544
10545                Self::UnknownOrdinal_(ordinal) => {
10546                    return Err(::fidl_next::EncodeError::UnknownUnionOrdinal(ordinal as usize));
10547                }
10548            }
10549
10550            Ok(())
10551        }
10552    }
10553
10554    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::Use<'static>, ___E> for &'a Use
10555    where
10556        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
10557        ___E: ::fidl_next::Encoder,
10558    {
10559        #[inline]
10560        fn encode(
10561            self,
10562            encoder: &mut ___E,
10563            out: &mut ::core::mem::MaybeUninit<crate::wire::Use<'static>>,
10564            _: (),
10565        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
10566            ::fidl_next::munge!(let crate::wire::Use { raw, _phantom: _ } = out);
10567
10568            match self {
10569                Use::Service(value) => ::fidl_next::wire::Union::encode_as::<
10570                    ___E,
10571                    crate::wire::UseService<'static>,
10572                >(value, 1, encoder, raw, ())?,
10573
10574                Use::Protocol(value) => ::fidl_next::wire::Union::encode_as::<
10575                    ___E,
10576                    crate::wire::UseProtocol<'static>,
10577                >(value, 2, encoder, raw, ())?,
10578
10579                Use::Directory(value) => ::fidl_next::wire::Union::encode_as::<
10580                    ___E,
10581                    crate::wire::UseDirectory<'static>,
10582                >(value, 3, encoder, raw, ())?,
10583
10584                Use::Storage(value) => ::fidl_next::wire::Union::encode_as::<
10585                    ___E,
10586                    crate::wire::UseStorage<'static>,
10587                >(value, 4, encoder, raw, ())?,
10588
10589                Use::EventStream(value) => ::fidl_next::wire::Union::encode_as::<
10590                    ___E,
10591                    crate::wire::UseEventStream<'static>,
10592                >(value, 7, encoder, raw, ())?,
10593
10594                Use::Runner(value) => ::fidl_next::wire::Union::encode_as::<
10595                    ___E,
10596                    crate::wire::UseRunner<'static>,
10597                >(value, 8, encoder, raw, ())?,
10598
10599                Use::Config(value) => ::fidl_next::wire::Union::encode_as::<
10600                    ___E,
10601                    crate::wire::UseConfiguration<'static>,
10602                >(value, 9, encoder, raw, ())?,
10603
10604                Use::Dictionary(value) => ::fidl_next::wire::Union::encode_as::<
10605                    ___E,
10606                    crate::wire::UseDictionary<'static>,
10607                >(value, 10, encoder, raw, ())?,
10608
10609                Use::UnknownOrdinal_(ordinal) => {
10610                    return Err(::fidl_next::EncodeError::UnknownUnionOrdinal(*ordinal as usize));
10611                }
10612            }
10613
10614            Ok(())
10615        }
10616    }
10617
10618    unsafe impl<___E> ::fidl_next::EncodeOption<crate::wire_optional::Use<'static>, ___E> for Use
10619    where
10620        ___E: ?Sized,
10621        Use: ::fidl_next::Encode<crate::wire::Use<'static>, ___E>,
10622    {
10623        #[inline]
10624        fn encode_option(
10625            this: ::core::option::Option<Self>,
10626            encoder: &mut ___E,
10627            out: &mut ::core::mem::MaybeUninit<crate::wire_optional::Use<'static>>,
10628            _: (),
10629        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
10630            ::fidl_next::munge!(let crate::wire_optional::Use { raw, _phantom: _ } = &mut *out);
10631
10632            if let Some(inner) = this {
10633                let value_out = unsafe { &mut *out.as_mut_ptr().cast() };
10634                ::fidl_next::Encode::encode(inner, encoder, value_out, ())?;
10635            } else {
10636                ::fidl_next::wire::Union::encode_absent(raw);
10637            }
10638
10639            Ok(())
10640        }
10641    }
10642
10643    unsafe impl<'a, ___E> ::fidl_next::EncodeOption<crate::wire_optional::Use<'static>, ___E>
10644        for &'a Use
10645    where
10646        ___E: ?Sized,
10647        &'a Use: ::fidl_next::Encode<crate::wire::Use<'static>, ___E>,
10648    {
10649        #[inline]
10650        fn encode_option(
10651            this: ::core::option::Option<Self>,
10652            encoder: &mut ___E,
10653            out: &mut ::core::mem::MaybeUninit<crate::wire_optional::Use<'static>>,
10654            _: (),
10655        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
10656            ::fidl_next::munge!(let crate::wire_optional::Use { raw, _phantom: _ } = &mut *out);
10657
10658            if let Some(inner) = this {
10659                let value_out = unsafe { &mut *out.as_mut_ptr().cast() };
10660                ::fidl_next::Encode::encode(inner, encoder, value_out, ())?;
10661            } else {
10662                ::fidl_next::wire::Union::encode_absent(raw);
10663            }
10664
10665            Ok(())
10666        }
10667    }
10668
10669    impl<'de> ::fidl_next::FromWire<crate::wire::Use<'de>> for Use {
10670        #[inline]
10671        fn from_wire(wire: crate::wire::Use<'de>) -> Self {
10672            let wire = ::core::mem::ManuallyDrop::new(wire);
10673            match wire.raw.ordinal() {
10674                1 => Self::Service(::fidl_next::FromWire::from_wire(unsafe {
10675                    wire.raw.get().read_unchecked::<crate::wire::UseService<'de>>()
10676                })),
10677
10678                2 => Self::Protocol(::fidl_next::FromWire::from_wire(unsafe {
10679                    wire.raw.get().read_unchecked::<crate::wire::UseProtocol<'de>>()
10680                })),
10681
10682                3 => Self::Directory(::fidl_next::FromWire::from_wire(unsafe {
10683                    wire.raw.get().read_unchecked::<crate::wire::UseDirectory<'de>>()
10684                })),
10685
10686                4 => Self::Storage(::fidl_next::FromWire::from_wire(unsafe {
10687                    wire.raw.get().read_unchecked::<crate::wire::UseStorage<'de>>()
10688                })),
10689
10690                7 => Self::EventStream(::fidl_next::FromWire::from_wire(unsafe {
10691                    wire.raw.get().read_unchecked::<crate::wire::UseEventStream<'de>>()
10692                })),
10693
10694                8 => Self::Runner(::fidl_next::FromWire::from_wire(unsafe {
10695                    wire.raw.get().read_unchecked::<crate::wire::UseRunner<'de>>()
10696                })),
10697
10698                9 => Self::Config(::fidl_next::FromWire::from_wire(unsafe {
10699                    wire.raw.get().read_unchecked::<crate::wire::UseConfiguration<'de>>()
10700                })),
10701
10702                10 => Self::Dictionary(::fidl_next::FromWire::from_wire(unsafe {
10703                    wire.raw.get().read_unchecked::<crate::wire::UseDictionary<'de>>()
10704                })),
10705
10706                ord => return Self::UnknownOrdinal_(ord as u64),
10707            }
10708        }
10709    }
10710
10711    impl<'de> ::fidl_next::FromWireRef<crate::wire::Use<'de>> for Use {
10712        #[inline]
10713        fn from_wire_ref(wire: &crate::wire::Use<'de>) -> Self {
10714            match wire.raw.ordinal() {
10715                1 => Self::Service(::fidl_next::FromWireRef::from_wire_ref(unsafe {
10716                    wire.raw.get().deref_unchecked::<crate::wire::UseService<'de>>()
10717                })),
10718
10719                2 => Self::Protocol(::fidl_next::FromWireRef::from_wire_ref(unsafe {
10720                    wire.raw.get().deref_unchecked::<crate::wire::UseProtocol<'de>>()
10721                })),
10722
10723                3 => Self::Directory(::fidl_next::FromWireRef::from_wire_ref(unsafe {
10724                    wire.raw.get().deref_unchecked::<crate::wire::UseDirectory<'de>>()
10725                })),
10726
10727                4 => Self::Storage(::fidl_next::FromWireRef::from_wire_ref(unsafe {
10728                    wire.raw.get().deref_unchecked::<crate::wire::UseStorage<'de>>()
10729                })),
10730
10731                7 => Self::EventStream(::fidl_next::FromWireRef::from_wire_ref(unsafe {
10732                    wire.raw.get().deref_unchecked::<crate::wire::UseEventStream<'de>>()
10733                })),
10734
10735                8 => Self::Runner(::fidl_next::FromWireRef::from_wire_ref(unsafe {
10736                    wire.raw.get().deref_unchecked::<crate::wire::UseRunner<'de>>()
10737                })),
10738
10739                9 => Self::Config(::fidl_next::FromWireRef::from_wire_ref(unsafe {
10740                    wire.raw.get().deref_unchecked::<crate::wire::UseConfiguration<'de>>()
10741                })),
10742
10743                10 => Self::Dictionary(::fidl_next::FromWireRef::from_wire_ref(unsafe {
10744                    wire.raw.get().deref_unchecked::<crate::wire::UseDictionary<'de>>()
10745                })),
10746
10747                ord => return Self::UnknownOrdinal_(ord as u64),
10748            }
10749        }
10750    }
10751
10752    impl<'de> ::fidl_next::FromWireOption<crate::wire_optional::Use<'de>> for Use {
10753        #[inline]
10754        fn from_wire_option(wire: crate::wire_optional::Use<'de>) -> ::core::option::Option<Self> {
10755            if let Some(inner) = wire.into_option() {
10756                Some(::fidl_next::FromWire::from_wire(inner))
10757            } else {
10758                None
10759            }
10760        }
10761    }
10762
10763    impl<'de> ::fidl_next::FromWireOption<crate::wire_optional::Use<'de>> for Box<Use> {
10764        #[inline]
10765        fn from_wire_option(wire: crate::wire_optional::Use<'de>) -> ::core::option::Option<Self> {
10766            <Use as ::fidl_next::FromWireOption<crate::wire_optional::Use<'de>>>::from_wire_option(
10767                wire,
10768            )
10769            .map(Box::new)
10770        }
10771    }
10772
10773    impl<'de> ::fidl_next::FromWireOptionRef<crate::wire_optional::Use<'de>> for Box<Use> {
10774        #[inline]
10775        fn from_wire_option_ref(
10776            wire: &crate::wire_optional::Use<'de>,
10777        ) -> ::core::option::Option<Self> {
10778            if let Some(inner) = wire.as_ref() {
10779                Some(Box::new(::fidl_next::FromWireRef::from_wire_ref(inner)))
10780            } else {
10781                None
10782            }
10783        }
10784    }
10785
10786    #[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"]
10787    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
10788    pub struct ExposeService {
10789        pub source: ::core::option::Option<crate::natural::Ref>,
10790
10791        pub source_name: ::core::option::Option<::std::string::String>,
10792
10793        pub target: ::core::option::Option<crate::natural::Ref>,
10794
10795        pub target_name: ::core::option::Option<::std::string::String>,
10796
10797        pub availability: ::core::option::Option<crate::natural::Availability>,
10798
10799        pub source_dictionary: ::core::option::Option<::std::string::String>,
10800    }
10801
10802    impl ExposeService {
10803        fn __max_ordinal(&self) -> usize {
10804            if self.source_dictionary.is_some() {
10805                return 6;
10806            }
10807
10808            if self.availability.is_some() {
10809                return 5;
10810            }
10811
10812            if self.target_name.is_some() {
10813                return 4;
10814            }
10815
10816            if self.target.is_some() {
10817                return 3;
10818            }
10819
10820            if self.source_name.is_some() {
10821                return 2;
10822            }
10823
10824            if self.source.is_some() {
10825                return 1;
10826            }
10827
10828            0
10829        }
10830    }
10831
10832    unsafe impl<___E> ::fidl_next::Encode<crate::wire::ExposeService<'static>, ___E> for ExposeService
10833    where
10834        ___E: ::fidl_next::Encoder + ?Sized,
10835    {
10836        #[inline]
10837        fn encode(
10838            mut self,
10839            encoder: &mut ___E,
10840            out: &mut ::core::mem::MaybeUninit<crate::wire::ExposeService<'static>>,
10841            _: (),
10842        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
10843            ::fidl_next::munge!(let crate::wire::ExposeService { table } = out);
10844
10845            let max_ord = self.__max_ordinal();
10846
10847            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
10848            ::fidl_next::Wire::zero_padding(&mut out);
10849
10850            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
10851                ::fidl_next::wire::Envelope,
10852            >(encoder, max_ord);
10853
10854            for i in 1..=max_ord {
10855                match i {
10856                    6 => {
10857                        if let Some(value) = self.source_dictionary.take() {
10858                            ::fidl_next::wire::Envelope::encode_value::<
10859                                ::fidl_next::wire::String<'static>,
10860                                ___E,
10861                            >(
10862                                value, preallocated.encoder, &mut out, 1024
10863                            )?;
10864                        } else {
10865                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
10866                        }
10867                    }
10868
10869                    5 => {
10870                        if let Some(value) = self.availability.take() {
10871                            ::fidl_next::wire::Envelope::encode_value::<
10872                                crate::wire::Availability,
10873                                ___E,
10874                            >(
10875                                value, preallocated.encoder, &mut out, ()
10876                            )?;
10877                        } else {
10878                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
10879                        }
10880                    }
10881
10882                    4 => {
10883                        if let Some(value) = self.target_name.take() {
10884                            ::fidl_next::wire::Envelope::encode_value::<
10885                                ::fidl_next::wire::String<'static>,
10886                                ___E,
10887                            >(
10888                                value, preallocated.encoder, &mut out, 100
10889                            )?;
10890                        } else {
10891                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
10892                        }
10893                    }
10894
10895                    3 => {
10896                        if let Some(value) = self.target.take() {
10897                            ::fidl_next::wire::Envelope::encode_value::<
10898                                crate::wire::Ref<'static>,
10899                                ___E,
10900                            >(
10901                                value, preallocated.encoder, &mut out, ()
10902                            )?;
10903                        } else {
10904                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
10905                        }
10906                    }
10907
10908                    2 => {
10909                        if let Some(value) = self.source_name.take() {
10910                            ::fidl_next::wire::Envelope::encode_value::<
10911                                ::fidl_next::wire::String<'static>,
10912                                ___E,
10913                            >(
10914                                value, preallocated.encoder, &mut out, 100
10915                            )?;
10916                        } else {
10917                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
10918                        }
10919                    }
10920
10921                    1 => {
10922                        if let Some(value) = self.source.take() {
10923                            ::fidl_next::wire::Envelope::encode_value::<
10924                                crate::wire::Ref<'static>,
10925                                ___E,
10926                            >(
10927                                value, preallocated.encoder, &mut out, ()
10928                            )?;
10929                        } else {
10930                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
10931                        }
10932                    }
10933
10934                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
10935                }
10936                unsafe {
10937                    preallocated.write_next(out.assume_init_ref());
10938                }
10939            }
10940
10941            ::fidl_next::wire::Table::encode_len(table, max_ord);
10942
10943            Ok(())
10944        }
10945    }
10946
10947    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::ExposeService<'static>, ___E>
10948        for &'a ExposeService
10949    where
10950        ___E: ::fidl_next::Encoder + ?Sized,
10951    {
10952        #[inline]
10953        fn encode(
10954            self,
10955            encoder: &mut ___E,
10956            out: &mut ::core::mem::MaybeUninit<crate::wire::ExposeService<'static>>,
10957            _: (),
10958        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
10959            ::fidl_next::munge!(let crate::wire::ExposeService { table } = out);
10960
10961            let max_ord = self.__max_ordinal();
10962
10963            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
10964            ::fidl_next::Wire::zero_padding(&mut out);
10965
10966            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
10967                ::fidl_next::wire::Envelope,
10968            >(encoder, max_ord);
10969
10970            for i in 1..=max_ord {
10971                match i {
10972                    6 => {
10973                        if let Some(value) = &self.source_dictionary {
10974                            ::fidl_next::wire::Envelope::encode_value::<
10975                                ::fidl_next::wire::String<'static>,
10976                                ___E,
10977                            >(
10978                                value, preallocated.encoder, &mut out, 1024
10979                            )?;
10980                        } else {
10981                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
10982                        }
10983                    }
10984
10985                    5 => {
10986                        if let Some(value) = &self.availability {
10987                            ::fidl_next::wire::Envelope::encode_value::<
10988                                crate::wire::Availability,
10989                                ___E,
10990                            >(
10991                                value, preallocated.encoder, &mut out, ()
10992                            )?;
10993                        } else {
10994                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
10995                        }
10996                    }
10997
10998                    4 => {
10999                        if let Some(value) = &self.target_name {
11000                            ::fidl_next::wire::Envelope::encode_value::<
11001                                ::fidl_next::wire::String<'static>,
11002                                ___E,
11003                            >(
11004                                value, preallocated.encoder, &mut out, 100
11005                            )?;
11006                        } else {
11007                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
11008                        }
11009                    }
11010
11011                    3 => {
11012                        if let Some(value) = &self.target {
11013                            ::fidl_next::wire::Envelope::encode_value::<
11014                                crate::wire::Ref<'static>,
11015                                ___E,
11016                            >(
11017                                value, preallocated.encoder, &mut out, ()
11018                            )?;
11019                        } else {
11020                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
11021                        }
11022                    }
11023
11024                    2 => {
11025                        if let Some(value) = &self.source_name {
11026                            ::fidl_next::wire::Envelope::encode_value::<
11027                                ::fidl_next::wire::String<'static>,
11028                                ___E,
11029                            >(
11030                                value, preallocated.encoder, &mut out, 100
11031                            )?;
11032                        } else {
11033                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
11034                        }
11035                    }
11036
11037                    1 => {
11038                        if let Some(value) = &self.source {
11039                            ::fidl_next::wire::Envelope::encode_value::<
11040                                crate::wire::Ref<'static>,
11041                                ___E,
11042                            >(
11043                                value, preallocated.encoder, &mut out, ()
11044                            )?;
11045                        } else {
11046                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
11047                        }
11048                    }
11049
11050                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
11051                }
11052                unsafe {
11053                    preallocated.write_next(out.assume_init_ref());
11054                }
11055            }
11056
11057            ::fidl_next::wire::Table::encode_len(table, max_ord);
11058
11059            Ok(())
11060        }
11061    }
11062
11063    impl<'de> ::fidl_next::FromWire<crate::wire::ExposeService<'de>> for ExposeService {
11064        #[inline]
11065        fn from_wire(wire_: crate::wire::ExposeService<'de>) -> Self {
11066            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
11067
11068            let source = wire_.table.get(1);
11069
11070            let source_name = wire_.table.get(2);
11071
11072            let target = wire_.table.get(3);
11073
11074            let target_name = wire_.table.get(4);
11075
11076            let availability = wire_.table.get(5);
11077
11078            let source_dictionary = wire_.table.get(6);
11079
11080            Self {
11081                source: source.map(|envelope| {
11082                    ::fidl_next::FromWire::from_wire(unsafe {
11083                        envelope.read_unchecked::<crate::wire::Ref<'de>>()
11084                    })
11085                }),
11086
11087                source_name: source_name.map(|envelope| {
11088                    ::fidl_next::FromWire::from_wire(unsafe {
11089                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
11090                    })
11091                }),
11092
11093                target: target.map(|envelope| {
11094                    ::fidl_next::FromWire::from_wire(unsafe {
11095                        envelope.read_unchecked::<crate::wire::Ref<'de>>()
11096                    })
11097                }),
11098
11099                target_name: target_name.map(|envelope| {
11100                    ::fidl_next::FromWire::from_wire(unsafe {
11101                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
11102                    })
11103                }),
11104
11105                availability: availability.map(|envelope| {
11106                    ::fidl_next::FromWire::from_wire(unsafe {
11107                        envelope.read_unchecked::<crate::wire::Availability>()
11108                    })
11109                }),
11110
11111                source_dictionary: source_dictionary.map(|envelope| {
11112                    ::fidl_next::FromWire::from_wire(unsafe {
11113                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
11114                    })
11115                }),
11116            }
11117        }
11118    }
11119
11120    impl<'de> ::fidl_next::FromWireRef<crate::wire::ExposeService<'de>> for ExposeService {
11121        #[inline]
11122        fn from_wire_ref(wire: &crate::wire::ExposeService<'de>) -> Self {
11123            Self {
11124                source: wire.table.get(1).map(|envelope| {
11125                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
11126                        envelope.deref_unchecked::<crate::wire::Ref<'de>>()
11127                    })
11128                }),
11129
11130                source_name: wire.table.get(2).map(|envelope| {
11131                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
11132                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
11133                    })
11134                }),
11135
11136                target: wire.table.get(3).map(|envelope| {
11137                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
11138                        envelope.deref_unchecked::<crate::wire::Ref<'de>>()
11139                    })
11140                }),
11141
11142                target_name: wire.table.get(4).map(|envelope| {
11143                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
11144                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
11145                    })
11146                }),
11147
11148                availability: wire.table.get(5).map(|envelope| {
11149                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
11150                        envelope.deref_unchecked::<crate::wire::Availability>()
11151                    })
11152                }),
11153
11154                source_dictionary: wire.table.get(6).map(|envelope| {
11155                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
11156                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
11157                    })
11158                }),
11159            }
11160        }
11161    }
11162
11163    #[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"]
11164    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
11165    pub struct ExposeProtocol {
11166        pub source: ::core::option::Option<crate::natural::Ref>,
11167
11168        pub source_name: ::core::option::Option<::std::string::String>,
11169
11170        pub target: ::core::option::Option<crate::natural::Ref>,
11171
11172        pub target_name: ::core::option::Option<::std::string::String>,
11173
11174        pub availability: ::core::option::Option<crate::natural::Availability>,
11175
11176        pub source_dictionary: ::core::option::Option<::std::string::String>,
11177    }
11178
11179    impl ExposeProtocol {
11180        fn __max_ordinal(&self) -> usize {
11181            if self.source_dictionary.is_some() {
11182                return 6;
11183            }
11184
11185            if self.availability.is_some() {
11186                return 5;
11187            }
11188
11189            if self.target_name.is_some() {
11190                return 4;
11191            }
11192
11193            if self.target.is_some() {
11194                return 3;
11195            }
11196
11197            if self.source_name.is_some() {
11198                return 2;
11199            }
11200
11201            if self.source.is_some() {
11202                return 1;
11203            }
11204
11205            0
11206        }
11207    }
11208
11209    unsafe impl<___E> ::fidl_next::Encode<crate::wire::ExposeProtocol<'static>, ___E> for ExposeProtocol
11210    where
11211        ___E: ::fidl_next::Encoder + ?Sized,
11212    {
11213        #[inline]
11214        fn encode(
11215            mut self,
11216            encoder: &mut ___E,
11217            out: &mut ::core::mem::MaybeUninit<crate::wire::ExposeProtocol<'static>>,
11218            _: (),
11219        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
11220            ::fidl_next::munge!(let crate::wire::ExposeProtocol { table } = out);
11221
11222            let max_ord = self.__max_ordinal();
11223
11224            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
11225            ::fidl_next::Wire::zero_padding(&mut out);
11226
11227            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
11228                ::fidl_next::wire::Envelope,
11229            >(encoder, max_ord);
11230
11231            for i in 1..=max_ord {
11232                match i {
11233                    6 => {
11234                        if let Some(value) = self.source_dictionary.take() {
11235                            ::fidl_next::wire::Envelope::encode_value::<
11236                                ::fidl_next::wire::String<'static>,
11237                                ___E,
11238                            >(
11239                                value, preallocated.encoder, &mut out, 1024
11240                            )?;
11241                        } else {
11242                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
11243                        }
11244                    }
11245
11246                    5 => {
11247                        if let Some(value) = self.availability.take() {
11248                            ::fidl_next::wire::Envelope::encode_value::<
11249                                crate::wire::Availability,
11250                                ___E,
11251                            >(
11252                                value, preallocated.encoder, &mut out, ()
11253                            )?;
11254                        } else {
11255                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
11256                        }
11257                    }
11258
11259                    4 => {
11260                        if let Some(value) = self.target_name.take() {
11261                            ::fidl_next::wire::Envelope::encode_value::<
11262                                ::fidl_next::wire::String<'static>,
11263                                ___E,
11264                            >(
11265                                value, preallocated.encoder, &mut out, 100
11266                            )?;
11267                        } else {
11268                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
11269                        }
11270                    }
11271
11272                    3 => {
11273                        if let Some(value) = self.target.take() {
11274                            ::fidl_next::wire::Envelope::encode_value::<
11275                                crate::wire::Ref<'static>,
11276                                ___E,
11277                            >(
11278                                value, preallocated.encoder, &mut out, ()
11279                            )?;
11280                        } else {
11281                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
11282                        }
11283                    }
11284
11285                    2 => {
11286                        if let Some(value) = self.source_name.take() {
11287                            ::fidl_next::wire::Envelope::encode_value::<
11288                                ::fidl_next::wire::String<'static>,
11289                                ___E,
11290                            >(
11291                                value, preallocated.encoder, &mut out, 100
11292                            )?;
11293                        } else {
11294                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
11295                        }
11296                    }
11297
11298                    1 => {
11299                        if let Some(value) = self.source.take() {
11300                            ::fidl_next::wire::Envelope::encode_value::<
11301                                crate::wire::Ref<'static>,
11302                                ___E,
11303                            >(
11304                                value, preallocated.encoder, &mut out, ()
11305                            )?;
11306                        } else {
11307                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
11308                        }
11309                    }
11310
11311                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
11312                }
11313                unsafe {
11314                    preallocated.write_next(out.assume_init_ref());
11315                }
11316            }
11317
11318            ::fidl_next::wire::Table::encode_len(table, max_ord);
11319
11320            Ok(())
11321        }
11322    }
11323
11324    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::ExposeProtocol<'static>, ___E>
11325        for &'a ExposeProtocol
11326    where
11327        ___E: ::fidl_next::Encoder + ?Sized,
11328    {
11329        #[inline]
11330        fn encode(
11331            self,
11332            encoder: &mut ___E,
11333            out: &mut ::core::mem::MaybeUninit<crate::wire::ExposeProtocol<'static>>,
11334            _: (),
11335        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
11336            ::fidl_next::munge!(let crate::wire::ExposeProtocol { table } = out);
11337
11338            let max_ord = self.__max_ordinal();
11339
11340            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
11341            ::fidl_next::Wire::zero_padding(&mut out);
11342
11343            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
11344                ::fidl_next::wire::Envelope,
11345            >(encoder, max_ord);
11346
11347            for i in 1..=max_ord {
11348                match i {
11349                    6 => {
11350                        if let Some(value) = &self.source_dictionary {
11351                            ::fidl_next::wire::Envelope::encode_value::<
11352                                ::fidl_next::wire::String<'static>,
11353                                ___E,
11354                            >(
11355                                value, preallocated.encoder, &mut out, 1024
11356                            )?;
11357                        } else {
11358                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
11359                        }
11360                    }
11361
11362                    5 => {
11363                        if let Some(value) = &self.availability {
11364                            ::fidl_next::wire::Envelope::encode_value::<
11365                                crate::wire::Availability,
11366                                ___E,
11367                            >(
11368                                value, preallocated.encoder, &mut out, ()
11369                            )?;
11370                        } else {
11371                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
11372                        }
11373                    }
11374
11375                    4 => {
11376                        if let Some(value) = &self.target_name {
11377                            ::fidl_next::wire::Envelope::encode_value::<
11378                                ::fidl_next::wire::String<'static>,
11379                                ___E,
11380                            >(
11381                                value, preallocated.encoder, &mut out, 100
11382                            )?;
11383                        } else {
11384                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
11385                        }
11386                    }
11387
11388                    3 => {
11389                        if let Some(value) = &self.target {
11390                            ::fidl_next::wire::Envelope::encode_value::<
11391                                crate::wire::Ref<'static>,
11392                                ___E,
11393                            >(
11394                                value, preallocated.encoder, &mut out, ()
11395                            )?;
11396                        } else {
11397                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
11398                        }
11399                    }
11400
11401                    2 => {
11402                        if let Some(value) = &self.source_name {
11403                            ::fidl_next::wire::Envelope::encode_value::<
11404                                ::fidl_next::wire::String<'static>,
11405                                ___E,
11406                            >(
11407                                value, preallocated.encoder, &mut out, 100
11408                            )?;
11409                        } else {
11410                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
11411                        }
11412                    }
11413
11414                    1 => {
11415                        if let Some(value) = &self.source {
11416                            ::fidl_next::wire::Envelope::encode_value::<
11417                                crate::wire::Ref<'static>,
11418                                ___E,
11419                            >(
11420                                value, preallocated.encoder, &mut out, ()
11421                            )?;
11422                        } else {
11423                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
11424                        }
11425                    }
11426
11427                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
11428                }
11429                unsafe {
11430                    preallocated.write_next(out.assume_init_ref());
11431                }
11432            }
11433
11434            ::fidl_next::wire::Table::encode_len(table, max_ord);
11435
11436            Ok(())
11437        }
11438    }
11439
11440    impl<'de> ::fidl_next::FromWire<crate::wire::ExposeProtocol<'de>> for ExposeProtocol {
11441        #[inline]
11442        fn from_wire(wire_: crate::wire::ExposeProtocol<'de>) -> Self {
11443            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
11444
11445            let source = wire_.table.get(1);
11446
11447            let source_name = wire_.table.get(2);
11448
11449            let target = wire_.table.get(3);
11450
11451            let target_name = wire_.table.get(4);
11452
11453            let availability = wire_.table.get(5);
11454
11455            let source_dictionary = wire_.table.get(6);
11456
11457            Self {
11458                source: source.map(|envelope| {
11459                    ::fidl_next::FromWire::from_wire(unsafe {
11460                        envelope.read_unchecked::<crate::wire::Ref<'de>>()
11461                    })
11462                }),
11463
11464                source_name: source_name.map(|envelope| {
11465                    ::fidl_next::FromWire::from_wire(unsafe {
11466                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
11467                    })
11468                }),
11469
11470                target: target.map(|envelope| {
11471                    ::fidl_next::FromWire::from_wire(unsafe {
11472                        envelope.read_unchecked::<crate::wire::Ref<'de>>()
11473                    })
11474                }),
11475
11476                target_name: target_name.map(|envelope| {
11477                    ::fidl_next::FromWire::from_wire(unsafe {
11478                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
11479                    })
11480                }),
11481
11482                availability: availability.map(|envelope| {
11483                    ::fidl_next::FromWire::from_wire(unsafe {
11484                        envelope.read_unchecked::<crate::wire::Availability>()
11485                    })
11486                }),
11487
11488                source_dictionary: source_dictionary.map(|envelope| {
11489                    ::fidl_next::FromWire::from_wire(unsafe {
11490                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
11491                    })
11492                }),
11493            }
11494        }
11495    }
11496
11497    impl<'de> ::fidl_next::FromWireRef<crate::wire::ExposeProtocol<'de>> for ExposeProtocol {
11498        #[inline]
11499        fn from_wire_ref(wire: &crate::wire::ExposeProtocol<'de>) -> Self {
11500            Self {
11501                source: wire.table.get(1).map(|envelope| {
11502                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
11503                        envelope.deref_unchecked::<crate::wire::Ref<'de>>()
11504                    })
11505                }),
11506
11507                source_name: wire.table.get(2).map(|envelope| {
11508                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
11509                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
11510                    })
11511                }),
11512
11513                target: wire.table.get(3).map(|envelope| {
11514                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
11515                        envelope.deref_unchecked::<crate::wire::Ref<'de>>()
11516                    })
11517                }),
11518
11519                target_name: wire.table.get(4).map(|envelope| {
11520                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
11521                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
11522                    })
11523                }),
11524
11525                availability: wire.table.get(5).map(|envelope| {
11526                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
11527                        envelope.deref_unchecked::<crate::wire::Availability>()
11528                    })
11529                }),
11530
11531                source_dictionary: wire.table.get(6).map(|envelope| {
11532                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
11533                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
11534                    })
11535                }),
11536            }
11537        }
11538    }
11539
11540    #[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"]
11541    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
11542    pub struct ExposeDirectory {
11543        pub source: ::core::option::Option<crate::natural::Ref>,
11544
11545        pub source_name: ::core::option::Option<::std::string::String>,
11546
11547        pub target: ::core::option::Option<crate::natural::Ref>,
11548
11549        pub target_name: ::core::option::Option<::std::string::String>,
11550
11551        pub rights: ::core::option::Option<::fidl_next_common_fuchsia_io::natural::Operations>,
11552
11553        pub subdir: ::core::option::Option<::std::string::String>,
11554
11555        pub availability: ::core::option::Option<crate::natural::Availability>,
11556
11557        pub source_dictionary: ::core::option::Option<::std::string::String>,
11558    }
11559
11560    impl ExposeDirectory {
11561        fn __max_ordinal(&self) -> usize {
11562            if self.source_dictionary.is_some() {
11563                return 8;
11564            }
11565
11566            if self.availability.is_some() {
11567                return 7;
11568            }
11569
11570            if self.subdir.is_some() {
11571                return 6;
11572            }
11573
11574            if self.rights.is_some() {
11575                return 5;
11576            }
11577
11578            if self.target_name.is_some() {
11579                return 4;
11580            }
11581
11582            if self.target.is_some() {
11583                return 3;
11584            }
11585
11586            if self.source_name.is_some() {
11587                return 2;
11588            }
11589
11590            if self.source.is_some() {
11591                return 1;
11592            }
11593
11594            0
11595        }
11596    }
11597
11598    unsafe impl<___E> ::fidl_next::Encode<crate::wire::ExposeDirectory<'static>, ___E>
11599        for ExposeDirectory
11600    where
11601        ___E: ::fidl_next::Encoder + ?Sized,
11602    {
11603        #[inline]
11604        fn encode(
11605            mut self,
11606            encoder: &mut ___E,
11607            out: &mut ::core::mem::MaybeUninit<crate::wire::ExposeDirectory<'static>>,
11608            _: (),
11609        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
11610            ::fidl_next::munge!(let crate::wire::ExposeDirectory { table } = out);
11611
11612            let max_ord = self.__max_ordinal();
11613
11614            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
11615            ::fidl_next::Wire::zero_padding(&mut out);
11616
11617            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
11618                ::fidl_next::wire::Envelope,
11619            >(encoder, max_ord);
11620
11621            for i in 1..=max_ord {
11622                match i {
11623                    8 => {
11624                        if let Some(value) = self.source_dictionary.take() {
11625                            ::fidl_next::wire::Envelope::encode_value::<
11626                                ::fidl_next::wire::String<'static>,
11627                                ___E,
11628                            >(
11629                                value, preallocated.encoder, &mut out, 1024
11630                            )?;
11631                        } else {
11632                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
11633                        }
11634                    }
11635
11636                    7 => {
11637                        if let Some(value) = self.availability.take() {
11638                            ::fidl_next::wire::Envelope::encode_value::<
11639                                crate::wire::Availability,
11640                                ___E,
11641                            >(
11642                                value, preallocated.encoder, &mut out, ()
11643                            )?;
11644                        } else {
11645                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
11646                        }
11647                    }
11648
11649                    6 => {
11650                        if let Some(value) = self.subdir.take() {
11651                            ::fidl_next::wire::Envelope::encode_value::<
11652                                ::fidl_next::wire::String<'static>,
11653                                ___E,
11654                            >(
11655                                value, preallocated.encoder, &mut out, 1024
11656                            )?;
11657                        } else {
11658                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
11659                        }
11660                    }
11661
11662                    5 => {
11663                        if let Some(value) = self.rights.take() {
11664                            ::fidl_next::wire::Envelope::encode_value::<
11665                                ::fidl_next_common_fuchsia_io::wire::Operations,
11666                                ___E,
11667                            >(
11668                                value, preallocated.encoder, &mut out, ()
11669                            )?;
11670                        } else {
11671                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
11672                        }
11673                    }
11674
11675                    4 => {
11676                        if let Some(value) = self.target_name.take() {
11677                            ::fidl_next::wire::Envelope::encode_value::<
11678                                ::fidl_next::wire::String<'static>,
11679                                ___E,
11680                            >(
11681                                value, preallocated.encoder, &mut out, 100
11682                            )?;
11683                        } else {
11684                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
11685                        }
11686                    }
11687
11688                    3 => {
11689                        if let Some(value) = self.target.take() {
11690                            ::fidl_next::wire::Envelope::encode_value::<
11691                                crate::wire::Ref<'static>,
11692                                ___E,
11693                            >(
11694                                value, preallocated.encoder, &mut out, ()
11695                            )?;
11696                        } else {
11697                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
11698                        }
11699                    }
11700
11701                    2 => {
11702                        if let Some(value) = self.source_name.take() {
11703                            ::fidl_next::wire::Envelope::encode_value::<
11704                                ::fidl_next::wire::String<'static>,
11705                                ___E,
11706                            >(
11707                                value, preallocated.encoder, &mut out, 100
11708                            )?;
11709                        } else {
11710                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
11711                        }
11712                    }
11713
11714                    1 => {
11715                        if let Some(value) = self.source.take() {
11716                            ::fidl_next::wire::Envelope::encode_value::<
11717                                crate::wire::Ref<'static>,
11718                                ___E,
11719                            >(
11720                                value, preallocated.encoder, &mut out, ()
11721                            )?;
11722                        } else {
11723                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
11724                        }
11725                    }
11726
11727                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
11728                }
11729                unsafe {
11730                    preallocated.write_next(out.assume_init_ref());
11731                }
11732            }
11733
11734            ::fidl_next::wire::Table::encode_len(table, max_ord);
11735
11736            Ok(())
11737        }
11738    }
11739
11740    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::ExposeDirectory<'static>, ___E>
11741        for &'a ExposeDirectory
11742    where
11743        ___E: ::fidl_next::Encoder + ?Sized,
11744    {
11745        #[inline]
11746        fn encode(
11747            self,
11748            encoder: &mut ___E,
11749            out: &mut ::core::mem::MaybeUninit<crate::wire::ExposeDirectory<'static>>,
11750            _: (),
11751        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
11752            ::fidl_next::munge!(let crate::wire::ExposeDirectory { table } = out);
11753
11754            let max_ord = self.__max_ordinal();
11755
11756            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
11757            ::fidl_next::Wire::zero_padding(&mut out);
11758
11759            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
11760                ::fidl_next::wire::Envelope,
11761            >(encoder, max_ord);
11762
11763            for i in 1..=max_ord {
11764                match i {
11765                    8 => {
11766                        if let Some(value) = &self.source_dictionary {
11767                            ::fidl_next::wire::Envelope::encode_value::<
11768                                ::fidl_next::wire::String<'static>,
11769                                ___E,
11770                            >(
11771                                value, preallocated.encoder, &mut out, 1024
11772                            )?;
11773                        } else {
11774                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
11775                        }
11776                    }
11777
11778                    7 => {
11779                        if let Some(value) = &self.availability {
11780                            ::fidl_next::wire::Envelope::encode_value::<
11781                                crate::wire::Availability,
11782                                ___E,
11783                            >(
11784                                value, preallocated.encoder, &mut out, ()
11785                            )?;
11786                        } else {
11787                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
11788                        }
11789                    }
11790
11791                    6 => {
11792                        if let Some(value) = &self.subdir {
11793                            ::fidl_next::wire::Envelope::encode_value::<
11794                                ::fidl_next::wire::String<'static>,
11795                                ___E,
11796                            >(
11797                                value, preallocated.encoder, &mut out, 1024
11798                            )?;
11799                        } else {
11800                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
11801                        }
11802                    }
11803
11804                    5 => {
11805                        if let Some(value) = &self.rights {
11806                            ::fidl_next::wire::Envelope::encode_value::<
11807                                ::fidl_next_common_fuchsia_io::wire::Operations,
11808                                ___E,
11809                            >(
11810                                value, preallocated.encoder, &mut out, ()
11811                            )?;
11812                        } else {
11813                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
11814                        }
11815                    }
11816
11817                    4 => {
11818                        if let Some(value) = &self.target_name {
11819                            ::fidl_next::wire::Envelope::encode_value::<
11820                                ::fidl_next::wire::String<'static>,
11821                                ___E,
11822                            >(
11823                                value, preallocated.encoder, &mut out, 100
11824                            )?;
11825                        } else {
11826                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
11827                        }
11828                    }
11829
11830                    3 => {
11831                        if let Some(value) = &self.target {
11832                            ::fidl_next::wire::Envelope::encode_value::<
11833                                crate::wire::Ref<'static>,
11834                                ___E,
11835                            >(
11836                                value, preallocated.encoder, &mut out, ()
11837                            )?;
11838                        } else {
11839                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
11840                        }
11841                    }
11842
11843                    2 => {
11844                        if let Some(value) = &self.source_name {
11845                            ::fidl_next::wire::Envelope::encode_value::<
11846                                ::fidl_next::wire::String<'static>,
11847                                ___E,
11848                            >(
11849                                value, preallocated.encoder, &mut out, 100
11850                            )?;
11851                        } else {
11852                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
11853                        }
11854                    }
11855
11856                    1 => {
11857                        if let Some(value) = &self.source {
11858                            ::fidl_next::wire::Envelope::encode_value::<
11859                                crate::wire::Ref<'static>,
11860                                ___E,
11861                            >(
11862                                value, preallocated.encoder, &mut out, ()
11863                            )?;
11864                        } else {
11865                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
11866                        }
11867                    }
11868
11869                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
11870                }
11871                unsafe {
11872                    preallocated.write_next(out.assume_init_ref());
11873                }
11874            }
11875
11876            ::fidl_next::wire::Table::encode_len(table, max_ord);
11877
11878            Ok(())
11879        }
11880    }
11881
11882    impl<'de> ::fidl_next::FromWire<crate::wire::ExposeDirectory<'de>> for ExposeDirectory {
11883        #[inline]
11884        fn from_wire(wire_: crate::wire::ExposeDirectory<'de>) -> Self {
11885            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
11886
11887            let source = wire_.table.get(1);
11888
11889            let source_name = wire_.table.get(2);
11890
11891            let target = wire_.table.get(3);
11892
11893            let target_name = wire_.table.get(4);
11894
11895            let rights = wire_.table.get(5);
11896
11897            let subdir = wire_.table.get(6);
11898
11899            let availability = wire_.table.get(7);
11900
11901            let source_dictionary = wire_.table.get(8);
11902
11903            Self {
11904                source: source.map(|envelope| {
11905                    ::fidl_next::FromWire::from_wire(unsafe {
11906                        envelope.read_unchecked::<crate::wire::Ref<'de>>()
11907                    })
11908                }),
11909
11910                source_name: source_name.map(|envelope| {
11911                    ::fidl_next::FromWire::from_wire(unsafe {
11912                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
11913                    })
11914                }),
11915
11916                target: target.map(|envelope| {
11917                    ::fidl_next::FromWire::from_wire(unsafe {
11918                        envelope.read_unchecked::<crate::wire::Ref<'de>>()
11919                    })
11920                }),
11921
11922                target_name: target_name.map(|envelope| {
11923                    ::fidl_next::FromWire::from_wire(unsafe {
11924                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
11925                    })
11926                }),
11927
11928                rights: rights.map(|envelope| {
11929                    ::fidl_next::FromWire::from_wire(unsafe {
11930                        envelope.read_unchecked::<::fidl_next_common_fuchsia_io::wire::Operations>()
11931                    })
11932                }),
11933
11934                subdir: subdir.map(|envelope| {
11935                    ::fidl_next::FromWire::from_wire(unsafe {
11936                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
11937                    })
11938                }),
11939
11940                availability: availability.map(|envelope| {
11941                    ::fidl_next::FromWire::from_wire(unsafe {
11942                        envelope.read_unchecked::<crate::wire::Availability>()
11943                    })
11944                }),
11945
11946                source_dictionary: source_dictionary.map(|envelope| {
11947                    ::fidl_next::FromWire::from_wire(unsafe {
11948                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
11949                    })
11950                }),
11951            }
11952        }
11953    }
11954
11955    impl<'de> ::fidl_next::FromWireRef<crate::wire::ExposeDirectory<'de>> for ExposeDirectory {
11956        #[inline]
11957        fn from_wire_ref(wire: &crate::wire::ExposeDirectory<'de>) -> Self {
11958            Self {
11959                source: wire.table.get(1).map(|envelope| {
11960                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
11961                        envelope.deref_unchecked::<crate::wire::Ref<'de>>()
11962                    })
11963                }),
11964
11965                source_name: wire.table.get(2).map(|envelope| {
11966                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
11967                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
11968                    })
11969                }),
11970
11971                target: wire.table.get(3).map(|envelope| {
11972                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
11973                        envelope.deref_unchecked::<crate::wire::Ref<'de>>()
11974                    })
11975                }),
11976
11977                target_name: wire.table.get(4).map(|envelope| {
11978                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
11979                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
11980                    })
11981                }),
11982
11983                rights: wire.table.get(5).map(|envelope| {
11984                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
11985                        envelope
11986                            .deref_unchecked::<::fidl_next_common_fuchsia_io::wire::Operations>()
11987                    })
11988                }),
11989
11990                subdir: wire.table.get(6).map(|envelope| {
11991                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
11992                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
11993                    })
11994                }),
11995
11996                availability: wire.table.get(7).map(|envelope| {
11997                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
11998                        envelope.deref_unchecked::<crate::wire::Availability>()
11999                    })
12000                }),
12001
12002                source_dictionary: wire.table.get(8).map(|envelope| {
12003                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
12004                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
12005                    })
12006                }),
12007            }
12008        }
12009    }
12010
12011    #[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"]
12012    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
12013    pub struct ExposeRunner {
12014        pub source: ::core::option::Option<crate::natural::Ref>,
12015
12016        pub source_name: ::core::option::Option<::std::string::String>,
12017
12018        pub target: ::core::option::Option<crate::natural::Ref>,
12019
12020        pub target_name: ::core::option::Option<::std::string::String>,
12021
12022        pub source_dictionary: ::core::option::Option<::std::string::String>,
12023    }
12024
12025    impl ExposeRunner {
12026        fn __max_ordinal(&self) -> usize {
12027            if self.source_dictionary.is_some() {
12028                return 6;
12029            }
12030
12031            if self.target_name.is_some() {
12032                return 4;
12033            }
12034
12035            if self.target.is_some() {
12036                return 3;
12037            }
12038
12039            if self.source_name.is_some() {
12040                return 2;
12041            }
12042
12043            if self.source.is_some() {
12044                return 1;
12045            }
12046
12047            0
12048        }
12049    }
12050
12051    unsafe impl<___E> ::fidl_next::Encode<crate::wire::ExposeRunner<'static>, ___E> for ExposeRunner
12052    where
12053        ___E: ::fidl_next::Encoder + ?Sized,
12054    {
12055        #[inline]
12056        fn encode(
12057            mut self,
12058            encoder: &mut ___E,
12059            out: &mut ::core::mem::MaybeUninit<crate::wire::ExposeRunner<'static>>,
12060            _: (),
12061        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
12062            ::fidl_next::munge!(let crate::wire::ExposeRunner { table } = out);
12063
12064            let max_ord = self.__max_ordinal();
12065
12066            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
12067            ::fidl_next::Wire::zero_padding(&mut out);
12068
12069            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
12070                ::fidl_next::wire::Envelope,
12071            >(encoder, max_ord);
12072
12073            for i in 1..=max_ord {
12074                match i {
12075                    6 => {
12076                        if let Some(value) = self.source_dictionary.take() {
12077                            ::fidl_next::wire::Envelope::encode_value::<
12078                                ::fidl_next::wire::String<'static>,
12079                                ___E,
12080                            >(
12081                                value, preallocated.encoder, &mut out, 1024
12082                            )?;
12083                        } else {
12084                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
12085                        }
12086                    }
12087
12088                    4 => {
12089                        if let Some(value) = self.target_name.take() {
12090                            ::fidl_next::wire::Envelope::encode_value::<
12091                                ::fidl_next::wire::String<'static>,
12092                                ___E,
12093                            >(
12094                                value, preallocated.encoder, &mut out, 100
12095                            )?;
12096                        } else {
12097                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
12098                        }
12099                    }
12100
12101                    3 => {
12102                        if let Some(value) = self.target.take() {
12103                            ::fidl_next::wire::Envelope::encode_value::<
12104                                crate::wire::Ref<'static>,
12105                                ___E,
12106                            >(
12107                                value, preallocated.encoder, &mut out, ()
12108                            )?;
12109                        } else {
12110                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
12111                        }
12112                    }
12113
12114                    2 => {
12115                        if let Some(value) = self.source_name.take() {
12116                            ::fidl_next::wire::Envelope::encode_value::<
12117                                ::fidl_next::wire::String<'static>,
12118                                ___E,
12119                            >(
12120                                value, preallocated.encoder, &mut out, 100
12121                            )?;
12122                        } else {
12123                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
12124                        }
12125                    }
12126
12127                    1 => {
12128                        if let Some(value) = self.source.take() {
12129                            ::fidl_next::wire::Envelope::encode_value::<
12130                                crate::wire::Ref<'static>,
12131                                ___E,
12132                            >(
12133                                value, preallocated.encoder, &mut out, ()
12134                            )?;
12135                        } else {
12136                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
12137                        }
12138                    }
12139
12140                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
12141                }
12142                unsafe {
12143                    preallocated.write_next(out.assume_init_ref());
12144                }
12145            }
12146
12147            ::fidl_next::wire::Table::encode_len(table, max_ord);
12148
12149            Ok(())
12150        }
12151    }
12152
12153    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::ExposeRunner<'static>, ___E>
12154        for &'a ExposeRunner
12155    where
12156        ___E: ::fidl_next::Encoder + ?Sized,
12157    {
12158        #[inline]
12159        fn encode(
12160            self,
12161            encoder: &mut ___E,
12162            out: &mut ::core::mem::MaybeUninit<crate::wire::ExposeRunner<'static>>,
12163            _: (),
12164        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
12165            ::fidl_next::munge!(let crate::wire::ExposeRunner { table } = out);
12166
12167            let max_ord = self.__max_ordinal();
12168
12169            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
12170            ::fidl_next::Wire::zero_padding(&mut out);
12171
12172            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
12173                ::fidl_next::wire::Envelope,
12174            >(encoder, max_ord);
12175
12176            for i in 1..=max_ord {
12177                match i {
12178                    6 => {
12179                        if let Some(value) = &self.source_dictionary {
12180                            ::fidl_next::wire::Envelope::encode_value::<
12181                                ::fidl_next::wire::String<'static>,
12182                                ___E,
12183                            >(
12184                                value, preallocated.encoder, &mut out, 1024
12185                            )?;
12186                        } else {
12187                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
12188                        }
12189                    }
12190
12191                    4 => {
12192                        if let Some(value) = &self.target_name {
12193                            ::fidl_next::wire::Envelope::encode_value::<
12194                                ::fidl_next::wire::String<'static>,
12195                                ___E,
12196                            >(
12197                                value, preallocated.encoder, &mut out, 100
12198                            )?;
12199                        } else {
12200                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
12201                        }
12202                    }
12203
12204                    3 => {
12205                        if let Some(value) = &self.target {
12206                            ::fidl_next::wire::Envelope::encode_value::<
12207                                crate::wire::Ref<'static>,
12208                                ___E,
12209                            >(
12210                                value, preallocated.encoder, &mut out, ()
12211                            )?;
12212                        } else {
12213                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
12214                        }
12215                    }
12216
12217                    2 => {
12218                        if let Some(value) = &self.source_name {
12219                            ::fidl_next::wire::Envelope::encode_value::<
12220                                ::fidl_next::wire::String<'static>,
12221                                ___E,
12222                            >(
12223                                value, preallocated.encoder, &mut out, 100
12224                            )?;
12225                        } else {
12226                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
12227                        }
12228                    }
12229
12230                    1 => {
12231                        if let Some(value) = &self.source {
12232                            ::fidl_next::wire::Envelope::encode_value::<
12233                                crate::wire::Ref<'static>,
12234                                ___E,
12235                            >(
12236                                value, preallocated.encoder, &mut out, ()
12237                            )?;
12238                        } else {
12239                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
12240                        }
12241                    }
12242
12243                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
12244                }
12245                unsafe {
12246                    preallocated.write_next(out.assume_init_ref());
12247                }
12248            }
12249
12250            ::fidl_next::wire::Table::encode_len(table, max_ord);
12251
12252            Ok(())
12253        }
12254    }
12255
12256    impl<'de> ::fidl_next::FromWire<crate::wire::ExposeRunner<'de>> for ExposeRunner {
12257        #[inline]
12258        fn from_wire(wire_: crate::wire::ExposeRunner<'de>) -> Self {
12259            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
12260
12261            let source = wire_.table.get(1);
12262
12263            let source_name = wire_.table.get(2);
12264
12265            let target = wire_.table.get(3);
12266
12267            let target_name = wire_.table.get(4);
12268
12269            let source_dictionary = wire_.table.get(6);
12270
12271            Self {
12272                source: source.map(|envelope| {
12273                    ::fidl_next::FromWire::from_wire(unsafe {
12274                        envelope.read_unchecked::<crate::wire::Ref<'de>>()
12275                    })
12276                }),
12277
12278                source_name: source_name.map(|envelope| {
12279                    ::fidl_next::FromWire::from_wire(unsafe {
12280                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
12281                    })
12282                }),
12283
12284                target: target.map(|envelope| {
12285                    ::fidl_next::FromWire::from_wire(unsafe {
12286                        envelope.read_unchecked::<crate::wire::Ref<'de>>()
12287                    })
12288                }),
12289
12290                target_name: target_name.map(|envelope| {
12291                    ::fidl_next::FromWire::from_wire(unsafe {
12292                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
12293                    })
12294                }),
12295
12296                source_dictionary: source_dictionary.map(|envelope| {
12297                    ::fidl_next::FromWire::from_wire(unsafe {
12298                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
12299                    })
12300                }),
12301            }
12302        }
12303    }
12304
12305    impl<'de> ::fidl_next::FromWireRef<crate::wire::ExposeRunner<'de>> for ExposeRunner {
12306        #[inline]
12307        fn from_wire_ref(wire: &crate::wire::ExposeRunner<'de>) -> Self {
12308            Self {
12309                source: wire.table.get(1).map(|envelope| {
12310                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
12311                        envelope.deref_unchecked::<crate::wire::Ref<'de>>()
12312                    })
12313                }),
12314
12315                source_name: wire.table.get(2).map(|envelope| {
12316                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
12317                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
12318                    })
12319                }),
12320
12321                target: wire.table.get(3).map(|envelope| {
12322                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
12323                        envelope.deref_unchecked::<crate::wire::Ref<'de>>()
12324                    })
12325                }),
12326
12327                target_name: wire.table.get(4).map(|envelope| {
12328                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
12329                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
12330                    })
12331                }),
12332
12333                source_dictionary: wire.table.get(6).map(|envelope| {
12334                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
12335                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
12336                    })
12337                }),
12338            }
12339        }
12340    }
12341
12342    #[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"]
12343    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
12344    pub struct ExposeResolver {
12345        pub source: ::core::option::Option<crate::natural::Ref>,
12346
12347        pub source_name: ::core::option::Option<::std::string::String>,
12348
12349        pub target: ::core::option::Option<crate::natural::Ref>,
12350
12351        pub target_name: ::core::option::Option<::std::string::String>,
12352
12353        pub source_dictionary: ::core::option::Option<::std::string::String>,
12354    }
12355
12356    impl ExposeResolver {
12357        fn __max_ordinal(&self) -> usize {
12358            if self.source_dictionary.is_some() {
12359                return 6;
12360            }
12361
12362            if self.target_name.is_some() {
12363                return 4;
12364            }
12365
12366            if self.target.is_some() {
12367                return 3;
12368            }
12369
12370            if self.source_name.is_some() {
12371                return 2;
12372            }
12373
12374            if self.source.is_some() {
12375                return 1;
12376            }
12377
12378            0
12379        }
12380    }
12381
12382    unsafe impl<___E> ::fidl_next::Encode<crate::wire::ExposeResolver<'static>, ___E> for ExposeResolver
12383    where
12384        ___E: ::fidl_next::Encoder + ?Sized,
12385    {
12386        #[inline]
12387        fn encode(
12388            mut self,
12389            encoder: &mut ___E,
12390            out: &mut ::core::mem::MaybeUninit<crate::wire::ExposeResolver<'static>>,
12391            _: (),
12392        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
12393            ::fidl_next::munge!(let crate::wire::ExposeResolver { table } = out);
12394
12395            let max_ord = self.__max_ordinal();
12396
12397            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
12398            ::fidl_next::Wire::zero_padding(&mut out);
12399
12400            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
12401                ::fidl_next::wire::Envelope,
12402            >(encoder, max_ord);
12403
12404            for i in 1..=max_ord {
12405                match i {
12406                    6 => {
12407                        if let Some(value) = self.source_dictionary.take() {
12408                            ::fidl_next::wire::Envelope::encode_value::<
12409                                ::fidl_next::wire::String<'static>,
12410                                ___E,
12411                            >(
12412                                value, preallocated.encoder, &mut out, 1024
12413                            )?;
12414                        } else {
12415                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
12416                        }
12417                    }
12418
12419                    4 => {
12420                        if let Some(value) = self.target_name.take() {
12421                            ::fidl_next::wire::Envelope::encode_value::<
12422                                ::fidl_next::wire::String<'static>,
12423                                ___E,
12424                            >(
12425                                value, preallocated.encoder, &mut out, 100
12426                            )?;
12427                        } else {
12428                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
12429                        }
12430                    }
12431
12432                    3 => {
12433                        if let Some(value) = self.target.take() {
12434                            ::fidl_next::wire::Envelope::encode_value::<
12435                                crate::wire::Ref<'static>,
12436                                ___E,
12437                            >(
12438                                value, preallocated.encoder, &mut out, ()
12439                            )?;
12440                        } else {
12441                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
12442                        }
12443                    }
12444
12445                    2 => {
12446                        if let Some(value) = self.source_name.take() {
12447                            ::fidl_next::wire::Envelope::encode_value::<
12448                                ::fidl_next::wire::String<'static>,
12449                                ___E,
12450                            >(
12451                                value, preallocated.encoder, &mut out, 100
12452                            )?;
12453                        } else {
12454                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
12455                        }
12456                    }
12457
12458                    1 => {
12459                        if let Some(value) = self.source.take() {
12460                            ::fidl_next::wire::Envelope::encode_value::<
12461                                crate::wire::Ref<'static>,
12462                                ___E,
12463                            >(
12464                                value, preallocated.encoder, &mut out, ()
12465                            )?;
12466                        } else {
12467                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
12468                        }
12469                    }
12470
12471                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
12472                }
12473                unsafe {
12474                    preallocated.write_next(out.assume_init_ref());
12475                }
12476            }
12477
12478            ::fidl_next::wire::Table::encode_len(table, max_ord);
12479
12480            Ok(())
12481        }
12482    }
12483
12484    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::ExposeResolver<'static>, ___E>
12485        for &'a ExposeResolver
12486    where
12487        ___E: ::fidl_next::Encoder + ?Sized,
12488    {
12489        #[inline]
12490        fn encode(
12491            self,
12492            encoder: &mut ___E,
12493            out: &mut ::core::mem::MaybeUninit<crate::wire::ExposeResolver<'static>>,
12494            _: (),
12495        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
12496            ::fidl_next::munge!(let crate::wire::ExposeResolver { table } = out);
12497
12498            let max_ord = self.__max_ordinal();
12499
12500            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
12501            ::fidl_next::Wire::zero_padding(&mut out);
12502
12503            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
12504                ::fidl_next::wire::Envelope,
12505            >(encoder, max_ord);
12506
12507            for i in 1..=max_ord {
12508                match i {
12509                    6 => {
12510                        if let Some(value) = &self.source_dictionary {
12511                            ::fidl_next::wire::Envelope::encode_value::<
12512                                ::fidl_next::wire::String<'static>,
12513                                ___E,
12514                            >(
12515                                value, preallocated.encoder, &mut out, 1024
12516                            )?;
12517                        } else {
12518                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
12519                        }
12520                    }
12521
12522                    4 => {
12523                        if let Some(value) = &self.target_name {
12524                            ::fidl_next::wire::Envelope::encode_value::<
12525                                ::fidl_next::wire::String<'static>,
12526                                ___E,
12527                            >(
12528                                value, preallocated.encoder, &mut out, 100
12529                            )?;
12530                        } else {
12531                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
12532                        }
12533                    }
12534
12535                    3 => {
12536                        if let Some(value) = &self.target {
12537                            ::fidl_next::wire::Envelope::encode_value::<
12538                                crate::wire::Ref<'static>,
12539                                ___E,
12540                            >(
12541                                value, preallocated.encoder, &mut out, ()
12542                            )?;
12543                        } else {
12544                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
12545                        }
12546                    }
12547
12548                    2 => {
12549                        if let Some(value) = &self.source_name {
12550                            ::fidl_next::wire::Envelope::encode_value::<
12551                                ::fidl_next::wire::String<'static>,
12552                                ___E,
12553                            >(
12554                                value, preallocated.encoder, &mut out, 100
12555                            )?;
12556                        } else {
12557                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
12558                        }
12559                    }
12560
12561                    1 => {
12562                        if let Some(value) = &self.source {
12563                            ::fidl_next::wire::Envelope::encode_value::<
12564                                crate::wire::Ref<'static>,
12565                                ___E,
12566                            >(
12567                                value, preallocated.encoder, &mut out, ()
12568                            )?;
12569                        } else {
12570                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
12571                        }
12572                    }
12573
12574                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
12575                }
12576                unsafe {
12577                    preallocated.write_next(out.assume_init_ref());
12578                }
12579            }
12580
12581            ::fidl_next::wire::Table::encode_len(table, max_ord);
12582
12583            Ok(())
12584        }
12585    }
12586
12587    impl<'de> ::fidl_next::FromWire<crate::wire::ExposeResolver<'de>> for ExposeResolver {
12588        #[inline]
12589        fn from_wire(wire_: crate::wire::ExposeResolver<'de>) -> Self {
12590            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
12591
12592            let source = wire_.table.get(1);
12593
12594            let source_name = wire_.table.get(2);
12595
12596            let target = wire_.table.get(3);
12597
12598            let target_name = wire_.table.get(4);
12599
12600            let source_dictionary = wire_.table.get(6);
12601
12602            Self {
12603                source: source.map(|envelope| {
12604                    ::fidl_next::FromWire::from_wire(unsafe {
12605                        envelope.read_unchecked::<crate::wire::Ref<'de>>()
12606                    })
12607                }),
12608
12609                source_name: source_name.map(|envelope| {
12610                    ::fidl_next::FromWire::from_wire(unsafe {
12611                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
12612                    })
12613                }),
12614
12615                target: target.map(|envelope| {
12616                    ::fidl_next::FromWire::from_wire(unsafe {
12617                        envelope.read_unchecked::<crate::wire::Ref<'de>>()
12618                    })
12619                }),
12620
12621                target_name: target_name.map(|envelope| {
12622                    ::fidl_next::FromWire::from_wire(unsafe {
12623                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
12624                    })
12625                }),
12626
12627                source_dictionary: source_dictionary.map(|envelope| {
12628                    ::fidl_next::FromWire::from_wire(unsafe {
12629                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
12630                    })
12631                }),
12632            }
12633        }
12634    }
12635
12636    impl<'de> ::fidl_next::FromWireRef<crate::wire::ExposeResolver<'de>> for ExposeResolver {
12637        #[inline]
12638        fn from_wire_ref(wire: &crate::wire::ExposeResolver<'de>) -> Self {
12639            Self {
12640                source: wire.table.get(1).map(|envelope| {
12641                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
12642                        envelope.deref_unchecked::<crate::wire::Ref<'de>>()
12643                    })
12644                }),
12645
12646                source_name: wire.table.get(2).map(|envelope| {
12647                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
12648                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
12649                    })
12650                }),
12651
12652                target: wire.table.get(3).map(|envelope| {
12653                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
12654                        envelope.deref_unchecked::<crate::wire::Ref<'de>>()
12655                    })
12656                }),
12657
12658                target_name: wire.table.get(4).map(|envelope| {
12659                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
12660                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
12661                    })
12662                }),
12663
12664                source_dictionary: wire.table.get(6).map(|envelope| {
12665                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
12666                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
12667                    })
12668                }),
12669            }
12670        }
12671    }
12672
12673    #[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"]
12674    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
12675    pub struct ExposeDictionary {
12676        pub source: ::core::option::Option<crate::natural::Ref>,
12677
12678        pub source_name: ::core::option::Option<::std::string::String>,
12679
12680        pub target: ::core::option::Option<crate::natural::Ref>,
12681
12682        pub target_name: ::core::option::Option<::std::string::String>,
12683
12684        pub availability: ::core::option::Option<crate::natural::Availability>,
12685
12686        pub source_dictionary: ::core::option::Option<::std::string::String>,
12687    }
12688
12689    impl ExposeDictionary {
12690        fn __max_ordinal(&self) -> usize {
12691            if self.source_dictionary.is_some() {
12692                return 6;
12693            }
12694
12695            if self.availability.is_some() {
12696                return 5;
12697            }
12698
12699            if self.target_name.is_some() {
12700                return 4;
12701            }
12702
12703            if self.target.is_some() {
12704                return 3;
12705            }
12706
12707            if self.source_name.is_some() {
12708                return 2;
12709            }
12710
12711            if self.source.is_some() {
12712                return 1;
12713            }
12714
12715            0
12716        }
12717    }
12718
12719    unsafe impl<___E> ::fidl_next::Encode<crate::wire::ExposeDictionary<'static>, ___E>
12720        for ExposeDictionary
12721    where
12722        ___E: ::fidl_next::Encoder + ?Sized,
12723    {
12724        #[inline]
12725        fn encode(
12726            mut self,
12727            encoder: &mut ___E,
12728            out: &mut ::core::mem::MaybeUninit<crate::wire::ExposeDictionary<'static>>,
12729            _: (),
12730        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
12731            ::fidl_next::munge!(let crate::wire::ExposeDictionary { table } = out);
12732
12733            let max_ord = self.__max_ordinal();
12734
12735            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
12736            ::fidl_next::Wire::zero_padding(&mut out);
12737
12738            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
12739                ::fidl_next::wire::Envelope,
12740            >(encoder, max_ord);
12741
12742            for i in 1..=max_ord {
12743                match i {
12744                    6 => {
12745                        if let Some(value) = self.source_dictionary.take() {
12746                            ::fidl_next::wire::Envelope::encode_value::<
12747                                ::fidl_next::wire::String<'static>,
12748                                ___E,
12749                            >(
12750                                value, preallocated.encoder, &mut out, 1024
12751                            )?;
12752                        } else {
12753                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
12754                        }
12755                    }
12756
12757                    5 => {
12758                        if let Some(value) = self.availability.take() {
12759                            ::fidl_next::wire::Envelope::encode_value::<
12760                                crate::wire::Availability,
12761                                ___E,
12762                            >(
12763                                value, preallocated.encoder, &mut out, ()
12764                            )?;
12765                        } else {
12766                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
12767                        }
12768                    }
12769
12770                    4 => {
12771                        if let Some(value) = self.target_name.take() {
12772                            ::fidl_next::wire::Envelope::encode_value::<
12773                                ::fidl_next::wire::String<'static>,
12774                                ___E,
12775                            >(
12776                                value, preallocated.encoder, &mut out, 100
12777                            )?;
12778                        } else {
12779                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
12780                        }
12781                    }
12782
12783                    3 => {
12784                        if let Some(value) = self.target.take() {
12785                            ::fidl_next::wire::Envelope::encode_value::<
12786                                crate::wire::Ref<'static>,
12787                                ___E,
12788                            >(
12789                                value, preallocated.encoder, &mut out, ()
12790                            )?;
12791                        } else {
12792                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
12793                        }
12794                    }
12795
12796                    2 => {
12797                        if let Some(value) = self.source_name.take() {
12798                            ::fidl_next::wire::Envelope::encode_value::<
12799                                ::fidl_next::wire::String<'static>,
12800                                ___E,
12801                            >(
12802                                value, preallocated.encoder, &mut out, 100
12803                            )?;
12804                        } else {
12805                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
12806                        }
12807                    }
12808
12809                    1 => {
12810                        if let Some(value) = self.source.take() {
12811                            ::fidl_next::wire::Envelope::encode_value::<
12812                                crate::wire::Ref<'static>,
12813                                ___E,
12814                            >(
12815                                value, preallocated.encoder, &mut out, ()
12816                            )?;
12817                        } else {
12818                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
12819                        }
12820                    }
12821
12822                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
12823                }
12824                unsafe {
12825                    preallocated.write_next(out.assume_init_ref());
12826                }
12827            }
12828
12829            ::fidl_next::wire::Table::encode_len(table, max_ord);
12830
12831            Ok(())
12832        }
12833    }
12834
12835    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::ExposeDictionary<'static>, ___E>
12836        for &'a ExposeDictionary
12837    where
12838        ___E: ::fidl_next::Encoder + ?Sized,
12839    {
12840        #[inline]
12841        fn encode(
12842            self,
12843            encoder: &mut ___E,
12844            out: &mut ::core::mem::MaybeUninit<crate::wire::ExposeDictionary<'static>>,
12845            _: (),
12846        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
12847            ::fidl_next::munge!(let crate::wire::ExposeDictionary { table } = out);
12848
12849            let max_ord = self.__max_ordinal();
12850
12851            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
12852            ::fidl_next::Wire::zero_padding(&mut out);
12853
12854            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
12855                ::fidl_next::wire::Envelope,
12856            >(encoder, max_ord);
12857
12858            for i in 1..=max_ord {
12859                match i {
12860                    6 => {
12861                        if let Some(value) = &self.source_dictionary {
12862                            ::fidl_next::wire::Envelope::encode_value::<
12863                                ::fidl_next::wire::String<'static>,
12864                                ___E,
12865                            >(
12866                                value, preallocated.encoder, &mut out, 1024
12867                            )?;
12868                        } else {
12869                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
12870                        }
12871                    }
12872
12873                    5 => {
12874                        if let Some(value) = &self.availability {
12875                            ::fidl_next::wire::Envelope::encode_value::<
12876                                crate::wire::Availability,
12877                                ___E,
12878                            >(
12879                                value, preallocated.encoder, &mut out, ()
12880                            )?;
12881                        } else {
12882                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
12883                        }
12884                    }
12885
12886                    4 => {
12887                        if let Some(value) = &self.target_name {
12888                            ::fidl_next::wire::Envelope::encode_value::<
12889                                ::fidl_next::wire::String<'static>,
12890                                ___E,
12891                            >(
12892                                value, preallocated.encoder, &mut out, 100
12893                            )?;
12894                        } else {
12895                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
12896                        }
12897                    }
12898
12899                    3 => {
12900                        if let Some(value) = &self.target {
12901                            ::fidl_next::wire::Envelope::encode_value::<
12902                                crate::wire::Ref<'static>,
12903                                ___E,
12904                            >(
12905                                value, preallocated.encoder, &mut out, ()
12906                            )?;
12907                        } else {
12908                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
12909                        }
12910                    }
12911
12912                    2 => {
12913                        if let Some(value) = &self.source_name {
12914                            ::fidl_next::wire::Envelope::encode_value::<
12915                                ::fidl_next::wire::String<'static>,
12916                                ___E,
12917                            >(
12918                                value, preallocated.encoder, &mut out, 100
12919                            )?;
12920                        } else {
12921                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
12922                        }
12923                    }
12924
12925                    1 => {
12926                        if let Some(value) = &self.source {
12927                            ::fidl_next::wire::Envelope::encode_value::<
12928                                crate::wire::Ref<'static>,
12929                                ___E,
12930                            >(
12931                                value, preallocated.encoder, &mut out, ()
12932                            )?;
12933                        } else {
12934                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
12935                        }
12936                    }
12937
12938                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
12939                }
12940                unsafe {
12941                    preallocated.write_next(out.assume_init_ref());
12942                }
12943            }
12944
12945            ::fidl_next::wire::Table::encode_len(table, max_ord);
12946
12947            Ok(())
12948        }
12949    }
12950
12951    impl<'de> ::fidl_next::FromWire<crate::wire::ExposeDictionary<'de>> for ExposeDictionary {
12952        #[inline]
12953        fn from_wire(wire_: crate::wire::ExposeDictionary<'de>) -> Self {
12954            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
12955
12956            let source = wire_.table.get(1);
12957
12958            let source_name = wire_.table.get(2);
12959
12960            let target = wire_.table.get(3);
12961
12962            let target_name = wire_.table.get(4);
12963
12964            let availability = wire_.table.get(5);
12965
12966            let source_dictionary = wire_.table.get(6);
12967
12968            Self {
12969                source: source.map(|envelope| {
12970                    ::fidl_next::FromWire::from_wire(unsafe {
12971                        envelope.read_unchecked::<crate::wire::Ref<'de>>()
12972                    })
12973                }),
12974
12975                source_name: source_name.map(|envelope| {
12976                    ::fidl_next::FromWire::from_wire(unsafe {
12977                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
12978                    })
12979                }),
12980
12981                target: target.map(|envelope| {
12982                    ::fidl_next::FromWire::from_wire(unsafe {
12983                        envelope.read_unchecked::<crate::wire::Ref<'de>>()
12984                    })
12985                }),
12986
12987                target_name: target_name.map(|envelope| {
12988                    ::fidl_next::FromWire::from_wire(unsafe {
12989                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
12990                    })
12991                }),
12992
12993                availability: availability.map(|envelope| {
12994                    ::fidl_next::FromWire::from_wire(unsafe {
12995                        envelope.read_unchecked::<crate::wire::Availability>()
12996                    })
12997                }),
12998
12999                source_dictionary: source_dictionary.map(|envelope| {
13000                    ::fidl_next::FromWire::from_wire(unsafe {
13001                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
13002                    })
13003                }),
13004            }
13005        }
13006    }
13007
13008    impl<'de> ::fidl_next::FromWireRef<crate::wire::ExposeDictionary<'de>> for ExposeDictionary {
13009        #[inline]
13010        fn from_wire_ref(wire: &crate::wire::ExposeDictionary<'de>) -> Self {
13011            Self {
13012                source: wire.table.get(1).map(|envelope| {
13013                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
13014                        envelope.deref_unchecked::<crate::wire::Ref<'de>>()
13015                    })
13016                }),
13017
13018                source_name: wire.table.get(2).map(|envelope| {
13019                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
13020                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
13021                    })
13022                }),
13023
13024                target: wire.table.get(3).map(|envelope| {
13025                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
13026                        envelope.deref_unchecked::<crate::wire::Ref<'de>>()
13027                    })
13028                }),
13029
13030                target_name: wire.table.get(4).map(|envelope| {
13031                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
13032                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
13033                    })
13034                }),
13035
13036                availability: wire.table.get(5).map(|envelope| {
13037                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
13038                        envelope.deref_unchecked::<crate::wire::Availability>()
13039                    })
13040                }),
13041
13042                source_dictionary: wire.table.get(6).map(|envelope| {
13043                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
13044                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
13045                    })
13046                }),
13047            }
13048        }
13049    }
13050
13051    #[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"]
13052    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
13053    pub struct ExposeConfiguration {
13054        pub source: ::core::option::Option<crate::natural::Ref>,
13055
13056        pub source_name: ::core::option::Option<::std::string::String>,
13057
13058        pub target: ::core::option::Option<crate::natural::Ref>,
13059
13060        pub target_name: ::core::option::Option<::std::string::String>,
13061
13062        pub availability: ::core::option::Option<crate::natural::Availability>,
13063
13064        pub source_dictionary: ::core::option::Option<::std::string::String>,
13065    }
13066
13067    impl ExposeConfiguration {
13068        fn __max_ordinal(&self) -> usize {
13069            if self.source_dictionary.is_some() {
13070                return 6;
13071            }
13072
13073            if self.availability.is_some() {
13074                return 5;
13075            }
13076
13077            if self.target_name.is_some() {
13078                return 4;
13079            }
13080
13081            if self.target.is_some() {
13082                return 3;
13083            }
13084
13085            if self.source_name.is_some() {
13086                return 2;
13087            }
13088
13089            if self.source.is_some() {
13090                return 1;
13091            }
13092
13093            0
13094        }
13095    }
13096
13097    unsafe impl<___E> ::fidl_next::Encode<crate::wire::ExposeConfiguration<'static>, ___E>
13098        for ExposeConfiguration
13099    where
13100        ___E: ::fidl_next::Encoder + ?Sized,
13101    {
13102        #[inline]
13103        fn encode(
13104            mut self,
13105            encoder: &mut ___E,
13106            out: &mut ::core::mem::MaybeUninit<crate::wire::ExposeConfiguration<'static>>,
13107            _: (),
13108        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
13109            ::fidl_next::munge!(let crate::wire::ExposeConfiguration { table } = out);
13110
13111            let max_ord = self.__max_ordinal();
13112
13113            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
13114            ::fidl_next::Wire::zero_padding(&mut out);
13115
13116            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
13117                ::fidl_next::wire::Envelope,
13118            >(encoder, max_ord);
13119
13120            for i in 1..=max_ord {
13121                match i {
13122                    6 => {
13123                        if let Some(value) = self.source_dictionary.take() {
13124                            ::fidl_next::wire::Envelope::encode_value::<
13125                                ::fidl_next::wire::String<'static>,
13126                                ___E,
13127                            >(
13128                                value, preallocated.encoder, &mut out, 1024
13129                            )?;
13130                        } else {
13131                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
13132                        }
13133                    }
13134
13135                    5 => {
13136                        if let Some(value) = self.availability.take() {
13137                            ::fidl_next::wire::Envelope::encode_value::<
13138                                crate::wire::Availability,
13139                                ___E,
13140                            >(
13141                                value, preallocated.encoder, &mut out, ()
13142                            )?;
13143                        } else {
13144                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
13145                        }
13146                    }
13147
13148                    4 => {
13149                        if let Some(value) = self.target_name.take() {
13150                            ::fidl_next::wire::Envelope::encode_value::<
13151                                ::fidl_next::wire::String<'static>,
13152                                ___E,
13153                            >(
13154                                value, preallocated.encoder, &mut out, 100
13155                            )?;
13156                        } else {
13157                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
13158                        }
13159                    }
13160
13161                    3 => {
13162                        if let Some(value) = self.target.take() {
13163                            ::fidl_next::wire::Envelope::encode_value::<
13164                                crate::wire::Ref<'static>,
13165                                ___E,
13166                            >(
13167                                value, preallocated.encoder, &mut out, ()
13168                            )?;
13169                        } else {
13170                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
13171                        }
13172                    }
13173
13174                    2 => {
13175                        if let Some(value) = self.source_name.take() {
13176                            ::fidl_next::wire::Envelope::encode_value::<
13177                                ::fidl_next::wire::String<'static>,
13178                                ___E,
13179                            >(
13180                                value, preallocated.encoder, &mut out, 100
13181                            )?;
13182                        } else {
13183                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
13184                        }
13185                    }
13186
13187                    1 => {
13188                        if let Some(value) = self.source.take() {
13189                            ::fidl_next::wire::Envelope::encode_value::<
13190                                crate::wire::Ref<'static>,
13191                                ___E,
13192                            >(
13193                                value, preallocated.encoder, &mut out, ()
13194                            )?;
13195                        } else {
13196                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
13197                        }
13198                    }
13199
13200                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
13201                }
13202                unsafe {
13203                    preallocated.write_next(out.assume_init_ref());
13204                }
13205            }
13206
13207            ::fidl_next::wire::Table::encode_len(table, max_ord);
13208
13209            Ok(())
13210        }
13211    }
13212
13213    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::ExposeConfiguration<'static>, ___E>
13214        for &'a ExposeConfiguration
13215    where
13216        ___E: ::fidl_next::Encoder + ?Sized,
13217    {
13218        #[inline]
13219        fn encode(
13220            self,
13221            encoder: &mut ___E,
13222            out: &mut ::core::mem::MaybeUninit<crate::wire::ExposeConfiguration<'static>>,
13223            _: (),
13224        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
13225            ::fidl_next::munge!(let crate::wire::ExposeConfiguration { table } = out);
13226
13227            let max_ord = self.__max_ordinal();
13228
13229            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
13230            ::fidl_next::Wire::zero_padding(&mut out);
13231
13232            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
13233                ::fidl_next::wire::Envelope,
13234            >(encoder, max_ord);
13235
13236            for i in 1..=max_ord {
13237                match i {
13238                    6 => {
13239                        if let Some(value) = &self.source_dictionary {
13240                            ::fidl_next::wire::Envelope::encode_value::<
13241                                ::fidl_next::wire::String<'static>,
13242                                ___E,
13243                            >(
13244                                value, preallocated.encoder, &mut out, 1024
13245                            )?;
13246                        } else {
13247                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
13248                        }
13249                    }
13250
13251                    5 => {
13252                        if let Some(value) = &self.availability {
13253                            ::fidl_next::wire::Envelope::encode_value::<
13254                                crate::wire::Availability,
13255                                ___E,
13256                            >(
13257                                value, preallocated.encoder, &mut out, ()
13258                            )?;
13259                        } else {
13260                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
13261                        }
13262                    }
13263
13264                    4 => {
13265                        if let Some(value) = &self.target_name {
13266                            ::fidl_next::wire::Envelope::encode_value::<
13267                                ::fidl_next::wire::String<'static>,
13268                                ___E,
13269                            >(
13270                                value, preallocated.encoder, &mut out, 100
13271                            )?;
13272                        } else {
13273                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
13274                        }
13275                    }
13276
13277                    3 => {
13278                        if let Some(value) = &self.target {
13279                            ::fidl_next::wire::Envelope::encode_value::<
13280                                crate::wire::Ref<'static>,
13281                                ___E,
13282                            >(
13283                                value, preallocated.encoder, &mut out, ()
13284                            )?;
13285                        } else {
13286                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
13287                        }
13288                    }
13289
13290                    2 => {
13291                        if let Some(value) = &self.source_name {
13292                            ::fidl_next::wire::Envelope::encode_value::<
13293                                ::fidl_next::wire::String<'static>,
13294                                ___E,
13295                            >(
13296                                value, preallocated.encoder, &mut out, 100
13297                            )?;
13298                        } else {
13299                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
13300                        }
13301                    }
13302
13303                    1 => {
13304                        if let Some(value) = &self.source {
13305                            ::fidl_next::wire::Envelope::encode_value::<
13306                                crate::wire::Ref<'static>,
13307                                ___E,
13308                            >(
13309                                value, preallocated.encoder, &mut out, ()
13310                            )?;
13311                        } else {
13312                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
13313                        }
13314                    }
13315
13316                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
13317                }
13318                unsafe {
13319                    preallocated.write_next(out.assume_init_ref());
13320                }
13321            }
13322
13323            ::fidl_next::wire::Table::encode_len(table, max_ord);
13324
13325            Ok(())
13326        }
13327    }
13328
13329    impl<'de> ::fidl_next::FromWire<crate::wire::ExposeConfiguration<'de>> for ExposeConfiguration {
13330        #[inline]
13331        fn from_wire(wire_: crate::wire::ExposeConfiguration<'de>) -> Self {
13332            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
13333
13334            let source = wire_.table.get(1);
13335
13336            let source_name = wire_.table.get(2);
13337
13338            let target = wire_.table.get(3);
13339
13340            let target_name = wire_.table.get(4);
13341
13342            let availability = wire_.table.get(5);
13343
13344            let source_dictionary = wire_.table.get(6);
13345
13346            Self {
13347                source: source.map(|envelope| {
13348                    ::fidl_next::FromWire::from_wire(unsafe {
13349                        envelope.read_unchecked::<crate::wire::Ref<'de>>()
13350                    })
13351                }),
13352
13353                source_name: source_name.map(|envelope| {
13354                    ::fidl_next::FromWire::from_wire(unsafe {
13355                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
13356                    })
13357                }),
13358
13359                target: target.map(|envelope| {
13360                    ::fidl_next::FromWire::from_wire(unsafe {
13361                        envelope.read_unchecked::<crate::wire::Ref<'de>>()
13362                    })
13363                }),
13364
13365                target_name: target_name.map(|envelope| {
13366                    ::fidl_next::FromWire::from_wire(unsafe {
13367                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
13368                    })
13369                }),
13370
13371                availability: availability.map(|envelope| {
13372                    ::fidl_next::FromWire::from_wire(unsafe {
13373                        envelope.read_unchecked::<crate::wire::Availability>()
13374                    })
13375                }),
13376
13377                source_dictionary: source_dictionary.map(|envelope| {
13378                    ::fidl_next::FromWire::from_wire(unsafe {
13379                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
13380                    })
13381                }),
13382            }
13383        }
13384    }
13385
13386    impl<'de> ::fidl_next::FromWireRef<crate::wire::ExposeConfiguration<'de>> for ExposeConfiguration {
13387        #[inline]
13388        fn from_wire_ref(wire: &crate::wire::ExposeConfiguration<'de>) -> Self {
13389            Self {
13390                source: wire.table.get(1).map(|envelope| {
13391                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
13392                        envelope.deref_unchecked::<crate::wire::Ref<'de>>()
13393                    })
13394                }),
13395
13396                source_name: wire.table.get(2).map(|envelope| {
13397                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
13398                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
13399                    })
13400                }),
13401
13402                target: wire.table.get(3).map(|envelope| {
13403                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
13404                        envelope.deref_unchecked::<crate::wire::Ref<'de>>()
13405                    })
13406                }),
13407
13408                target_name: wire.table.get(4).map(|envelope| {
13409                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
13410                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
13411                    })
13412                }),
13413
13414                availability: wire.table.get(5).map(|envelope| {
13415                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
13416                        envelope.deref_unchecked::<crate::wire::Availability>()
13417                    })
13418                }),
13419
13420                source_dictionary: wire.table.get(6).map(|envelope| {
13421                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
13422                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
13423                    })
13424                }),
13425            }
13426        }
13427    }
13428
13429    #[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"]
13430    #[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
13431    pub enum Expose {
13432        Service(crate::natural::ExposeService),
13433
13434        Protocol(crate::natural::ExposeProtocol),
13435
13436        Directory(crate::natural::ExposeDirectory),
13437
13438        Runner(crate::natural::ExposeRunner),
13439
13440        Resolver(crate::natural::ExposeResolver),
13441
13442        Dictionary(crate::natural::ExposeDictionary),
13443
13444        Config(crate::natural::ExposeConfiguration),
13445
13446        UnknownOrdinal_(u64),
13447    }
13448
13449    impl Expose {
13450        pub fn is_unknown(&self) -> bool {
13451            #[allow(unreachable_patterns)]
13452            match self {
13453                Self::UnknownOrdinal_(_) => true,
13454                _ => false,
13455            }
13456        }
13457    }
13458
13459    unsafe impl<___E> ::fidl_next::Encode<crate::wire::Expose<'static>, ___E> for Expose
13460    where
13461        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
13462        ___E: ::fidl_next::Encoder,
13463    {
13464        #[inline]
13465        fn encode(
13466            self,
13467            encoder: &mut ___E,
13468            out: &mut ::core::mem::MaybeUninit<crate::wire::Expose<'static>>,
13469            _: (),
13470        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
13471            ::fidl_next::munge!(let crate::wire::Expose { raw, _phantom: _ } = out);
13472
13473            match self {
13474                Self::Service(value) => ::fidl_next::wire::Union::encode_as::<
13475                    ___E,
13476                    crate::wire::ExposeService<'static>,
13477                >(value, 1, encoder, raw, ())?,
13478
13479                Self::Protocol(value) => ::fidl_next::wire::Union::encode_as::<
13480                    ___E,
13481                    crate::wire::ExposeProtocol<'static>,
13482                >(value, 2, encoder, raw, ())?,
13483
13484                Self::Directory(value) => ::fidl_next::wire::Union::encode_as::<
13485                    ___E,
13486                    crate::wire::ExposeDirectory<'static>,
13487                >(value, 3, encoder, raw, ())?,
13488
13489                Self::Runner(value) => ::fidl_next::wire::Union::encode_as::<
13490                    ___E,
13491                    crate::wire::ExposeRunner<'static>,
13492                >(value, 4, encoder, raw, ())?,
13493
13494                Self::Resolver(value) => ::fidl_next::wire::Union::encode_as::<
13495                    ___E,
13496                    crate::wire::ExposeResolver<'static>,
13497                >(value, 5, encoder, raw, ())?,
13498
13499                Self::Dictionary(value) => ::fidl_next::wire::Union::encode_as::<
13500                    ___E,
13501                    crate::wire::ExposeDictionary<'static>,
13502                >(value, 7, encoder, raw, ())?,
13503
13504                Self::Config(value) => ::fidl_next::wire::Union::encode_as::<
13505                    ___E,
13506                    crate::wire::ExposeConfiguration<'static>,
13507                >(value, 8, encoder, raw, ())?,
13508
13509                Self::UnknownOrdinal_(ordinal) => {
13510                    return Err(::fidl_next::EncodeError::UnknownUnionOrdinal(ordinal as usize));
13511                }
13512            }
13513
13514            Ok(())
13515        }
13516    }
13517
13518    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::Expose<'static>, ___E> for &'a Expose
13519    where
13520        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
13521        ___E: ::fidl_next::Encoder,
13522    {
13523        #[inline]
13524        fn encode(
13525            self,
13526            encoder: &mut ___E,
13527            out: &mut ::core::mem::MaybeUninit<crate::wire::Expose<'static>>,
13528            _: (),
13529        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
13530            ::fidl_next::munge!(let crate::wire::Expose { raw, _phantom: _ } = out);
13531
13532            match self {
13533                Expose::Service(value) => ::fidl_next::wire::Union::encode_as::<
13534                    ___E,
13535                    crate::wire::ExposeService<'static>,
13536                >(value, 1, encoder, raw, ())?,
13537
13538                Expose::Protocol(value) => ::fidl_next::wire::Union::encode_as::<
13539                    ___E,
13540                    crate::wire::ExposeProtocol<'static>,
13541                >(value, 2, encoder, raw, ())?,
13542
13543                Expose::Directory(value) => ::fidl_next::wire::Union::encode_as::<
13544                    ___E,
13545                    crate::wire::ExposeDirectory<'static>,
13546                >(value, 3, encoder, raw, ())?,
13547
13548                Expose::Runner(value) => ::fidl_next::wire::Union::encode_as::<
13549                    ___E,
13550                    crate::wire::ExposeRunner<'static>,
13551                >(value, 4, encoder, raw, ())?,
13552
13553                Expose::Resolver(value) => ::fidl_next::wire::Union::encode_as::<
13554                    ___E,
13555                    crate::wire::ExposeResolver<'static>,
13556                >(value, 5, encoder, raw, ())?,
13557
13558                Expose::Dictionary(value) => ::fidl_next::wire::Union::encode_as::<
13559                    ___E,
13560                    crate::wire::ExposeDictionary<'static>,
13561                >(value, 7, encoder, raw, ())?,
13562
13563                Expose::Config(value) => ::fidl_next::wire::Union::encode_as::<
13564                    ___E,
13565                    crate::wire::ExposeConfiguration<'static>,
13566                >(value, 8, encoder, raw, ())?,
13567
13568                Expose::UnknownOrdinal_(ordinal) => {
13569                    return Err(::fidl_next::EncodeError::UnknownUnionOrdinal(*ordinal as usize));
13570                }
13571            }
13572
13573            Ok(())
13574        }
13575    }
13576
13577    unsafe impl<___E> ::fidl_next::EncodeOption<crate::wire_optional::Expose<'static>, ___E> for Expose
13578    where
13579        ___E: ?Sized,
13580        Expose: ::fidl_next::Encode<crate::wire::Expose<'static>, ___E>,
13581    {
13582        #[inline]
13583        fn encode_option(
13584            this: ::core::option::Option<Self>,
13585            encoder: &mut ___E,
13586            out: &mut ::core::mem::MaybeUninit<crate::wire_optional::Expose<'static>>,
13587            _: (),
13588        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
13589            ::fidl_next::munge!(let crate::wire_optional::Expose { raw, _phantom: _ } = &mut *out);
13590
13591            if let Some(inner) = this {
13592                let value_out = unsafe { &mut *out.as_mut_ptr().cast() };
13593                ::fidl_next::Encode::encode(inner, encoder, value_out, ())?;
13594            } else {
13595                ::fidl_next::wire::Union::encode_absent(raw);
13596            }
13597
13598            Ok(())
13599        }
13600    }
13601
13602    unsafe impl<'a, ___E> ::fidl_next::EncodeOption<crate::wire_optional::Expose<'static>, ___E>
13603        for &'a Expose
13604    where
13605        ___E: ?Sized,
13606        &'a Expose: ::fidl_next::Encode<crate::wire::Expose<'static>, ___E>,
13607    {
13608        #[inline]
13609        fn encode_option(
13610            this: ::core::option::Option<Self>,
13611            encoder: &mut ___E,
13612            out: &mut ::core::mem::MaybeUninit<crate::wire_optional::Expose<'static>>,
13613            _: (),
13614        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
13615            ::fidl_next::munge!(let crate::wire_optional::Expose { raw, _phantom: _ } = &mut *out);
13616
13617            if let Some(inner) = this {
13618                let value_out = unsafe { &mut *out.as_mut_ptr().cast() };
13619                ::fidl_next::Encode::encode(inner, encoder, value_out, ())?;
13620            } else {
13621                ::fidl_next::wire::Union::encode_absent(raw);
13622            }
13623
13624            Ok(())
13625        }
13626    }
13627
13628    impl<'de> ::fidl_next::FromWire<crate::wire::Expose<'de>> for Expose {
13629        #[inline]
13630        fn from_wire(wire: crate::wire::Expose<'de>) -> Self {
13631            let wire = ::core::mem::ManuallyDrop::new(wire);
13632            match wire.raw.ordinal() {
13633                1 => Self::Service(::fidl_next::FromWire::from_wire(unsafe {
13634                    wire.raw.get().read_unchecked::<crate::wire::ExposeService<'de>>()
13635                })),
13636
13637                2 => Self::Protocol(::fidl_next::FromWire::from_wire(unsafe {
13638                    wire.raw.get().read_unchecked::<crate::wire::ExposeProtocol<'de>>()
13639                })),
13640
13641                3 => Self::Directory(::fidl_next::FromWire::from_wire(unsafe {
13642                    wire.raw.get().read_unchecked::<crate::wire::ExposeDirectory<'de>>()
13643                })),
13644
13645                4 => Self::Runner(::fidl_next::FromWire::from_wire(unsafe {
13646                    wire.raw.get().read_unchecked::<crate::wire::ExposeRunner<'de>>()
13647                })),
13648
13649                5 => Self::Resolver(::fidl_next::FromWire::from_wire(unsafe {
13650                    wire.raw.get().read_unchecked::<crate::wire::ExposeResolver<'de>>()
13651                })),
13652
13653                7 => Self::Dictionary(::fidl_next::FromWire::from_wire(unsafe {
13654                    wire.raw.get().read_unchecked::<crate::wire::ExposeDictionary<'de>>()
13655                })),
13656
13657                8 => Self::Config(::fidl_next::FromWire::from_wire(unsafe {
13658                    wire.raw.get().read_unchecked::<crate::wire::ExposeConfiguration<'de>>()
13659                })),
13660
13661                ord => return Self::UnknownOrdinal_(ord as u64),
13662            }
13663        }
13664    }
13665
13666    impl<'de> ::fidl_next::FromWireRef<crate::wire::Expose<'de>> for Expose {
13667        #[inline]
13668        fn from_wire_ref(wire: &crate::wire::Expose<'de>) -> Self {
13669            match wire.raw.ordinal() {
13670                1 => Self::Service(::fidl_next::FromWireRef::from_wire_ref(unsafe {
13671                    wire.raw.get().deref_unchecked::<crate::wire::ExposeService<'de>>()
13672                })),
13673
13674                2 => Self::Protocol(::fidl_next::FromWireRef::from_wire_ref(unsafe {
13675                    wire.raw.get().deref_unchecked::<crate::wire::ExposeProtocol<'de>>()
13676                })),
13677
13678                3 => Self::Directory(::fidl_next::FromWireRef::from_wire_ref(unsafe {
13679                    wire.raw.get().deref_unchecked::<crate::wire::ExposeDirectory<'de>>()
13680                })),
13681
13682                4 => Self::Runner(::fidl_next::FromWireRef::from_wire_ref(unsafe {
13683                    wire.raw.get().deref_unchecked::<crate::wire::ExposeRunner<'de>>()
13684                })),
13685
13686                5 => Self::Resolver(::fidl_next::FromWireRef::from_wire_ref(unsafe {
13687                    wire.raw.get().deref_unchecked::<crate::wire::ExposeResolver<'de>>()
13688                })),
13689
13690                7 => Self::Dictionary(::fidl_next::FromWireRef::from_wire_ref(unsafe {
13691                    wire.raw.get().deref_unchecked::<crate::wire::ExposeDictionary<'de>>()
13692                })),
13693
13694                8 => Self::Config(::fidl_next::FromWireRef::from_wire_ref(unsafe {
13695                    wire.raw.get().deref_unchecked::<crate::wire::ExposeConfiguration<'de>>()
13696                })),
13697
13698                ord => return Self::UnknownOrdinal_(ord as u64),
13699            }
13700        }
13701    }
13702
13703    impl<'de> ::fidl_next::FromWireOption<crate::wire_optional::Expose<'de>> for Expose {
13704        #[inline]
13705        fn from_wire_option(
13706            wire: crate::wire_optional::Expose<'de>,
13707        ) -> ::core::option::Option<Self> {
13708            if let Some(inner) = wire.into_option() {
13709                Some(::fidl_next::FromWire::from_wire(inner))
13710            } else {
13711                None
13712            }
13713        }
13714    }
13715
13716    impl<'de> ::fidl_next::FromWireOption<crate::wire_optional::Expose<'de>> for Box<Expose> {
13717        #[inline]
13718        fn from_wire_option(
13719            wire: crate::wire_optional::Expose<'de>,
13720        ) -> ::core::option::Option<Self> {
13721            <
13722            Expose as ::fidl_next::FromWireOption<crate::wire_optional::Expose<'de>>
13723        >::from_wire_option(wire).map(Box::new)
13724        }
13725    }
13726
13727    impl<'de> ::fidl_next::FromWireOptionRef<crate::wire_optional::Expose<'de>> for Box<Expose> {
13728        #[inline]
13729        fn from_wire_option_ref(
13730            wire: &crate::wire_optional::Expose<'de>,
13731        ) -> ::core::option::Option<Self> {
13732            if let Some(inner) = wire.as_ref() {
13733                Some(Box::new(::fidl_next::FromWireRef::from_wire_ref(inner)))
13734            } else {
13735                None
13736            }
13737        }
13738    }
13739
13740    #[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"]
13741    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
13742    pub struct OfferService {
13743        pub source: ::core::option::Option<crate::natural::Ref>,
13744
13745        pub source_name: ::core::option::Option<::std::string::String>,
13746
13747        pub target: ::core::option::Option<crate::natural::Ref>,
13748
13749        pub target_name: ::core::option::Option<::std::string::String>,
13750
13751        pub source_instance_filter: ::core::option::Option<::std::vec::Vec<::std::string::String>>,
13752
13753        pub renamed_instances: ::core::option::Option<::std::vec::Vec<crate::natural::NameMapping>>,
13754
13755        pub availability: ::core::option::Option<crate::natural::Availability>,
13756
13757        pub source_dictionary: ::core::option::Option<::std::string::String>,
13758
13759        pub dependency_type: ::core::option::Option<crate::natural::DependencyType>,
13760    }
13761
13762    impl OfferService {
13763        fn __max_ordinal(&self) -> usize {
13764            if self.dependency_type.is_some() {
13765                return 9;
13766            }
13767
13768            if self.source_dictionary.is_some() {
13769                return 8;
13770            }
13771
13772            if self.availability.is_some() {
13773                return 7;
13774            }
13775
13776            if self.renamed_instances.is_some() {
13777                return 6;
13778            }
13779
13780            if self.source_instance_filter.is_some() {
13781                return 5;
13782            }
13783
13784            if self.target_name.is_some() {
13785                return 4;
13786            }
13787
13788            if self.target.is_some() {
13789                return 3;
13790            }
13791
13792            if self.source_name.is_some() {
13793                return 2;
13794            }
13795
13796            if self.source.is_some() {
13797                return 1;
13798            }
13799
13800            0
13801        }
13802    }
13803
13804    unsafe impl<___E> ::fidl_next::Encode<crate::wire::OfferService<'static>, ___E> for OfferService
13805    where
13806        ___E: ::fidl_next::Encoder + ?Sized,
13807    {
13808        #[inline]
13809        fn encode(
13810            mut self,
13811            encoder: &mut ___E,
13812            out: &mut ::core::mem::MaybeUninit<crate::wire::OfferService<'static>>,
13813            _: (),
13814        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
13815            ::fidl_next::munge!(let crate::wire::OfferService { table } = out);
13816
13817            let max_ord = self.__max_ordinal();
13818
13819            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
13820            ::fidl_next::Wire::zero_padding(&mut out);
13821
13822            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
13823                ::fidl_next::wire::Envelope,
13824            >(encoder, max_ord);
13825
13826            for i in 1..=max_ord {
13827                match i {
13828                    9 => {
13829                        if let Some(value) = self.dependency_type.take() {
13830                            ::fidl_next::wire::Envelope::encode_value::<
13831                                crate::wire::DependencyType,
13832                                ___E,
13833                            >(
13834                                value, preallocated.encoder, &mut out, ()
13835                            )?;
13836                        } else {
13837                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
13838                        }
13839                    }
13840
13841                    8 => {
13842                        if let Some(value) = self.source_dictionary.take() {
13843                            ::fidl_next::wire::Envelope::encode_value::<
13844                                ::fidl_next::wire::String<'static>,
13845                                ___E,
13846                            >(
13847                                value, preallocated.encoder, &mut out, 1024
13848                            )?;
13849                        } else {
13850                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
13851                        }
13852                    }
13853
13854                    7 => {
13855                        if let Some(value) = self.availability.take() {
13856                            ::fidl_next::wire::Envelope::encode_value::<
13857                                crate::wire::Availability,
13858                                ___E,
13859                            >(
13860                                value, preallocated.encoder, &mut out, ()
13861                            )?;
13862                        } else {
13863                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
13864                        }
13865                    }
13866
13867                    6 => {
13868                        if let Some(value) = self.renamed_instances.take() {
13869                            ::fidl_next::wire::Envelope::encode_value::<
13870                                ::fidl_next::wire::Vector<
13871                                    'static,
13872                                    crate::wire::NameMapping<'static>,
13873                                >,
13874                                ___E,
13875                            >(
13876                                value, preallocated.encoder, &mut out, (4294967295, ())
13877                            )?;
13878                        } else {
13879                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
13880                        }
13881                    }
13882
13883                    5 => {
13884                        if let Some(value) = self.source_instance_filter.take() {
13885                            ::fidl_next::wire::Envelope::encode_value::<
13886                                ::fidl_next::wire::Vector<
13887                                    'static,
13888                                    ::fidl_next::wire::String<'static>,
13889                                >,
13890                                ___E,
13891                            >(
13892                                value, preallocated.encoder, &mut out, (4294967295, 100)
13893                            )?;
13894                        } else {
13895                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
13896                        }
13897                    }
13898
13899                    4 => {
13900                        if let Some(value) = self.target_name.take() {
13901                            ::fidl_next::wire::Envelope::encode_value::<
13902                                ::fidl_next::wire::String<'static>,
13903                                ___E,
13904                            >(
13905                                value, preallocated.encoder, &mut out, 100
13906                            )?;
13907                        } else {
13908                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
13909                        }
13910                    }
13911
13912                    3 => {
13913                        if let Some(value) = self.target.take() {
13914                            ::fidl_next::wire::Envelope::encode_value::<
13915                                crate::wire::Ref<'static>,
13916                                ___E,
13917                            >(
13918                                value, preallocated.encoder, &mut out, ()
13919                            )?;
13920                        } else {
13921                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
13922                        }
13923                    }
13924
13925                    2 => {
13926                        if let Some(value) = self.source_name.take() {
13927                            ::fidl_next::wire::Envelope::encode_value::<
13928                                ::fidl_next::wire::String<'static>,
13929                                ___E,
13930                            >(
13931                                value, preallocated.encoder, &mut out, 100
13932                            )?;
13933                        } else {
13934                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
13935                        }
13936                    }
13937
13938                    1 => {
13939                        if let Some(value) = self.source.take() {
13940                            ::fidl_next::wire::Envelope::encode_value::<
13941                                crate::wire::Ref<'static>,
13942                                ___E,
13943                            >(
13944                                value, preallocated.encoder, &mut out, ()
13945                            )?;
13946                        } else {
13947                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
13948                        }
13949                    }
13950
13951                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
13952                }
13953                unsafe {
13954                    preallocated.write_next(out.assume_init_ref());
13955                }
13956            }
13957
13958            ::fidl_next::wire::Table::encode_len(table, max_ord);
13959
13960            Ok(())
13961        }
13962    }
13963
13964    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::OfferService<'static>, ___E>
13965        for &'a OfferService
13966    where
13967        ___E: ::fidl_next::Encoder + ?Sized,
13968    {
13969        #[inline]
13970        fn encode(
13971            self,
13972            encoder: &mut ___E,
13973            out: &mut ::core::mem::MaybeUninit<crate::wire::OfferService<'static>>,
13974            _: (),
13975        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
13976            ::fidl_next::munge!(let crate::wire::OfferService { table } = out);
13977
13978            let max_ord = self.__max_ordinal();
13979
13980            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
13981            ::fidl_next::Wire::zero_padding(&mut out);
13982
13983            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
13984                ::fidl_next::wire::Envelope,
13985            >(encoder, max_ord);
13986
13987            for i in 1..=max_ord {
13988                match i {
13989                    9 => {
13990                        if let Some(value) = &self.dependency_type {
13991                            ::fidl_next::wire::Envelope::encode_value::<
13992                                crate::wire::DependencyType,
13993                                ___E,
13994                            >(
13995                                value, preallocated.encoder, &mut out, ()
13996                            )?;
13997                        } else {
13998                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
13999                        }
14000                    }
14001
14002                    8 => {
14003                        if let Some(value) = &self.source_dictionary {
14004                            ::fidl_next::wire::Envelope::encode_value::<
14005                                ::fidl_next::wire::String<'static>,
14006                                ___E,
14007                            >(
14008                                value, preallocated.encoder, &mut out, 1024
14009                            )?;
14010                        } else {
14011                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
14012                        }
14013                    }
14014
14015                    7 => {
14016                        if let Some(value) = &self.availability {
14017                            ::fidl_next::wire::Envelope::encode_value::<
14018                                crate::wire::Availability,
14019                                ___E,
14020                            >(
14021                                value, preallocated.encoder, &mut out, ()
14022                            )?;
14023                        } else {
14024                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
14025                        }
14026                    }
14027
14028                    6 => {
14029                        if let Some(value) = &self.renamed_instances {
14030                            ::fidl_next::wire::Envelope::encode_value::<
14031                                ::fidl_next::wire::Vector<
14032                                    'static,
14033                                    crate::wire::NameMapping<'static>,
14034                                >,
14035                                ___E,
14036                            >(
14037                                value, preallocated.encoder, &mut out, (4294967295, ())
14038                            )?;
14039                        } else {
14040                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
14041                        }
14042                    }
14043
14044                    5 => {
14045                        if let Some(value) = &self.source_instance_filter {
14046                            ::fidl_next::wire::Envelope::encode_value::<
14047                                ::fidl_next::wire::Vector<
14048                                    'static,
14049                                    ::fidl_next::wire::String<'static>,
14050                                >,
14051                                ___E,
14052                            >(
14053                                value, preallocated.encoder, &mut out, (4294967295, 100)
14054                            )?;
14055                        } else {
14056                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
14057                        }
14058                    }
14059
14060                    4 => {
14061                        if let Some(value) = &self.target_name {
14062                            ::fidl_next::wire::Envelope::encode_value::<
14063                                ::fidl_next::wire::String<'static>,
14064                                ___E,
14065                            >(
14066                                value, preallocated.encoder, &mut out, 100
14067                            )?;
14068                        } else {
14069                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
14070                        }
14071                    }
14072
14073                    3 => {
14074                        if let Some(value) = &self.target {
14075                            ::fidl_next::wire::Envelope::encode_value::<
14076                                crate::wire::Ref<'static>,
14077                                ___E,
14078                            >(
14079                                value, preallocated.encoder, &mut out, ()
14080                            )?;
14081                        } else {
14082                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
14083                        }
14084                    }
14085
14086                    2 => {
14087                        if let Some(value) = &self.source_name {
14088                            ::fidl_next::wire::Envelope::encode_value::<
14089                                ::fidl_next::wire::String<'static>,
14090                                ___E,
14091                            >(
14092                                value, preallocated.encoder, &mut out, 100
14093                            )?;
14094                        } else {
14095                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
14096                        }
14097                    }
14098
14099                    1 => {
14100                        if let Some(value) = &self.source {
14101                            ::fidl_next::wire::Envelope::encode_value::<
14102                                crate::wire::Ref<'static>,
14103                                ___E,
14104                            >(
14105                                value, preallocated.encoder, &mut out, ()
14106                            )?;
14107                        } else {
14108                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
14109                        }
14110                    }
14111
14112                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
14113                }
14114                unsafe {
14115                    preallocated.write_next(out.assume_init_ref());
14116                }
14117            }
14118
14119            ::fidl_next::wire::Table::encode_len(table, max_ord);
14120
14121            Ok(())
14122        }
14123    }
14124
14125    impl<'de> ::fidl_next::FromWire<crate::wire::OfferService<'de>> for OfferService {
14126        #[inline]
14127        fn from_wire(wire_: crate::wire::OfferService<'de>) -> Self {
14128            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
14129
14130            let source = wire_.table.get(1);
14131
14132            let source_name = wire_.table.get(2);
14133
14134            let target = wire_.table.get(3);
14135
14136            let target_name = wire_.table.get(4);
14137
14138            let source_instance_filter = wire_.table.get(5);
14139
14140            let renamed_instances = wire_.table.get(6);
14141
14142            let availability = wire_.table.get(7);
14143
14144            let source_dictionary = wire_.table.get(8);
14145
14146            let dependency_type = wire_.table.get(9);
14147
14148            Self {
14149
14150
14151                source: source.map(|envelope| ::fidl_next::FromWire::from_wire(
14152                    unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() }
14153                )),
14154
14155
14156                source_name: source_name.map(|envelope| ::fidl_next::FromWire::from_wire(
14157                    unsafe { envelope.read_unchecked::<::fidl_next::wire::String<'de>>() }
14158                )),
14159
14160
14161                target: target.map(|envelope| ::fidl_next::FromWire::from_wire(
14162                    unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() }
14163                )),
14164
14165
14166                target_name: target_name.map(|envelope| ::fidl_next::FromWire::from_wire(
14167                    unsafe { envelope.read_unchecked::<::fidl_next::wire::String<'de>>() }
14168                )),
14169
14170
14171                source_instance_filter: source_instance_filter.map(|envelope| ::fidl_next::FromWire::from_wire(
14172                    unsafe { envelope.read_unchecked::<::fidl_next::wire::Vector<'de, ::fidl_next::wire::String<'de>>>() }
14173                )),
14174
14175
14176                renamed_instances: renamed_instances.map(|envelope| ::fidl_next::FromWire::from_wire(
14177                    unsafe { envelope.read_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::NameMapping<'de>>>() }
14178                )),
14179
14180
14181                availability: availability.map(|envelope| ::fidl_next::FromWire::from_wire(
14182                    unsafe { envelope.read_unchecked::<crate::wire::Availability>() }
14183                )),
14184
14185
14186                source_dictionary: source_dictionary.map(|envelope| ::fidl_next::FromWire::from_wire(
14187                    unsafe { envelope.read_unchecked::<::fidl_next::wire::String<'de>>() }
14188                )),
14189
14190
14191                dependency_type: dependency_type.map(|envelope| ::fidl_next::FromWire::from_wire(
14192                    unsafe { envelope.read_unchecked::<crate::wire::DependencyType>() }
14193                )),
14194
14195        }
14196        }
14197    }
14198
14199    impl<'de> ::fidl_next::FromWireRef<crate::wire::OfferService<'de>> for OfferService {
14200        #[inline]
14201        fn from_wire_ref(wire: &crate::wire::OfferService<'de>) -> Self {
14202            Self {
14203
14204
14205                source: wire.table.get(1)
14206                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
14207                        unsafe { envelope.deref_unchecked::<crate::wire::Ref<'de>>() }
14208                    )),
14209
14210
14211                source_name: wire.table.get(2)
14212                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
14213                        unsafe { envelope.deref_unchecked::<::fidl_next::wire::String<'de>>() }
14214                    )),
14215
14216
14217                target: wire.table.get(3)
14218                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
14219                        unsafe { envelope.deref_unchecked::<crate::wire::Ref<'de>>() }
14220                    )),
14221
14222
14223                target_name: wire.table.get(4)
14224                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
14225                        unsafe { envelope.deref_unchecked::<::fidl_next::wire::String<'de>>() }
14226                    )),
14227
14228
14229                source_instance_filter: wire.table.get(5)
14230                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
14231                        unsafe { envelope.deref_unchecked::<::fidl_next::wire::Vector<'de, ::fidl_next::wire::String<'de>>>() }
14232                    )),
14233
14234
14235                renamed_instances: wire.table.get(6)
14236                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
14237                        unsafe { envelope.deref_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::NameMapping<'de>>>() }
14238                    )),
14239
14240
14241                availability: wire.table.get(7)
14242                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
14243                        unsafe { envelope.deref_unchecked::<crate::wire::Availability>() }
14244                    )),
14245
14246
14247                source_dictionary: wire.table.get(8)
14248                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
14249                        unsafe { envelope.deref_unchecked::<::fidl_next::wire::String<'de>>() }
14250                    )),
14251
14252
14253                dependency_type: wire.table.get(9)
14254                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
14255                        unsafe { envelope.deref_unchecked::<crate::wire::DependencyType>() }
14256                    )),
14257
14258        }
14259        }
14260    }
14261
14262    #[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"]
14263    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
14264    pub struct OfferProtocol {
14265        pub source: ::core::option::Option<crate::natural::Ref>,
14266
14267        pub source_name: ::core::option::Option<::std::string::String>,
14268
14269        pub target: ::core::option::Option<crate::natural::Ref>,
14270
14271        pub target_name: ::core::option::Option<::std::string::String>,
14272
14273        pub dependency_type: ::core::option::Option<crate::natural::DependencyType>,
14274
14275        pub availability: ::core::option::Option<crate::natural::Availability>,
14276
14277        pub source_dictionary: ::core::option::Option<::std::string::String>,
14278    }
14279
14280    impl OfferProtocol {
14281        fn __max_ordinal(&self) -> usize {
14282            if self.source_dictionary.is_some() {
14283                return 7;
14284            }
14285
14286            if self.availability.is_some() {
14287                return 6;
14288            }
14289
14290            if self.dependency_type.is_some() {
14291                return 5;
14292            }
14293
14294            if self.target_name.is_some() {
14295                return 4;
14296            }
14297
14298            if self.target.is_some() {
14299                return 3;
14300            }
14301
14302            if self.source_name.is_some() {
14303                return 2;
14304            }
14305
14306            if self.source.is_some() {
14307                return 1;
14308            }
14309
14310            0
14311        }
14312    }
14313
14314    unsafe impl<___E> ::fidl_next::Encode<crate::wire::OfferProtocol<'static>, ___E> for OfferProtocol
14315    where
14316        ___E: ::fidl_next::Encoder + ?Sized,
14317    {
14318        #[inline]
14319        fn encode(
14320            mut self,
14321            encoder: &mut ___E,
14322            out: &mut ::core::mem::MaybeUninit<crate::wire::OfferProtocol<'static>>,
14323            _: (),
14324        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
14325            ::fidl_next::munge!(let crate::wire::OfferProtocol { table } = out);
14326
14327            let max_ord = self.__max_ordinal();
14328
14329            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
14330            ::fidl_next::Wire::zero_padding(&mut out);
14331
14332            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
14333                ::fidl_next::wire::Envelope,
14334            >(encoder, max_ord);
14335
14336            for i in 1..=max_ord {
14337                match i {
14338                    7 => {
14339                        if let Some(value) = self.source_dictionary.take() {
14340                            ::fidl_next::wire::Envelope::encode_value::<
14341                                ::fidl_next::wire::String<'static>,
14342                                ___E,
14343                            >(
14344                                value, preallocated.encoder, &mut out, 1024
14345                            )?;
14346                        } else {
14347                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
14348                        }
14349                    }
14350
14351                    6 => {
14352                        if let Some(value) = self.availability.take() {
14353                            ::fidl_next::wire::Envelope::encode_value::<
14354                                crate::wire::Availability,
14355                                ___E,
14356                            >(
14357                                value, preallocated.encoder, &mut out, ()
14358                            )?;
14359                        } else {
14360                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
14361                        }
14362                    }
14363
14364                    5 => {
14365                        if let Some(value) = self.dependency_type.take() {
14366                            ::fidl_next::wire::Envelope::encode_value::<
14367                                crate::wire::DependencyType,
14368                                ___E,
14369                            >(
14370                                value, preallocated.encoder, &mut out, ()
14371                            )?;
14372                        } else {
14373                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
14374                        }
14375                    }
14376
14377                    4 => {
14378                        if let Some(value) = self.target_name.take() {
14379                            ::fidl_next::wire::Envelope::encode_value::<
14380                                ::fidl_next::wire::String<'static>,
14381                                ___E,
14382                            >(
14383                                value, preallocated.encoder, &mut out, 100
14384                            )?;
14385                        } else {
14386                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
14387                        }
14388                    }
14389
14390                    3 => {
14391                        if let Some(value) = self.target.take() {
14392                            ::fidl_next::wire::Envelope::encode_value::<
14393                                crate::wire::Ref<'static>,
14394                                ___E,
14395                            >(
14396                                value, preallocated.encoder, &mut out, ()
14397                            )?;
14398                        } else {
14399                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
14400                        }
14401                    }
14402
14403                    2 => {
14404                        if let Some(value) = self.source_name.take() {
14405                            ::fidl_next::wire::Envelope::encode_value::<
14406                                ::fidl_next::wire::String<'static>,
14407                                ___E,
14408                            >(
14409                                value, preallocated.encoder, &mut out, 100
14410                            )?;
14411                        } else {
14412                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
14413                        }
14414                    }
14415
14416                    1 => {
14417                        if let Some(value) = self.source.take() {
14418                            ::fidl_next::wire::Envelope::encode_value::<
14419                                crate::wire::Ref<'static>,
14420                                ___E,
14421                            >(
14422                                value, preallocated.encoder, &mut out, ()
14423                            )?;
14424                        } else {
14425                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
14426                        }
14427                    }
14428
14429                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
14430                }
14431                unsafe {
14432                    preallocated.write_next(out.assume_init_ref());
14433                }
14434            }
14435
14436            ::fidl_next::wire::Table::encode_len(table, max_ord);
14437
14438            Ok(())
14439        }
14440    }
14441
14442    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::OfferProtocol<'static>, ___E>
14443        for &'a OfferProtocol
14444    where
14445        ___E: ::fidl_next::Encoder + ?Sized,
14446    {
14447        #[inline]
14448        fn encode(
14449            self,
14450            encoder: &mut ___E,
14451            out: &mut ::core::mem::MaybeUninit<crate::wire::OfferProtocol<'static>>,
14452            _: (),
14453        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
14454            ::fidl_next::munge!(let crate::wire::OfferProtocol { table } = out);
14455
14456            let max_ord = self.__max_ordinal();
14457
14458            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
14459            ::fidl_next::Wire::zero_padding(&mut out);
14460
14461            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
14462                ::fidl_next::wire::Envelope,
14463            >(encoder, max_ord);
14464
14465            for i in 1..=max_ord {
14466                match i {
14467                    7 => {
14468                        if let Some(value) = &self.source_dictionary {
14469                            ::fidl_next::wire::Envelope::encode_value::<
14470                                ::fidl_next::wire::String<'static>,
14471                                ___E,
14472                            >(
14473                                value, preallocated.encoder, &mut out, 1024
14474                            )?;
14475                        } else {
14476                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
14477                        }
14478                    }
14479
14480                    6 => {
14481                        if let Some(value) = &self.availability {
14482                            ::fidl_next::wire::Envelope::encode_value::<
14483                                crate::wire::Availability,
14484                                ___E,
14485                            >(
14486                                value, preallocated.encoder, &mut out, ()
14487                            )?;
14488                        } else {
14489                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
14490                        }
14491                    }
14492
14493                    5 => {
14494                        if let Some(value) = &self.dependency_type {
14495                            ::fidl_next::wire::Envelope::encode_value::<
14496                                crate::wire::DependencyType,
14497                                ___E,
14498                            >(
14499                                value, preallocated.encoder, &mut out, ()
14500                            )?;
14501                        } else {
14502                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
14503                        }
14504                    }
14505
14506                    4 => {
14507                        if let Some(value) = &self.target_name {
14508                            ::fidl_next::wire::Envelope::encode_value::<
14509                                ::fidl_next::wire::String<'static>,
14510                                ___E,
14511                            >(
14512                                value, preallocated.encoder, &mut out, 100
14513                            )?;
14514                        } else {
14515                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
14516                        }
14517                    }
14518
14519                    3 => {
14520                        if let Some(value) = &self.target {
14521                            ::fidl_next::wire::Envelope::encode_value::<
14522                                crate::wire::Ref<'static>,
14523                                ___E,
14524                            >(
14525                                value, preallocated.encoder, &mut out, ()
14526                            )?;
14527                        } else {
14528                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
14529                        }
14530                    }
14531
14532                    2 => {
14533                        if let Some(value) = &self.source_name {
14534                            ::fidl_next::wire::Envelope::encode_value::<
14535                                ::fidl_next::wire::String<'static>,
14536                                ___E,
14537                            >(
14538                                value, preallocated.encoder, &mut out, 100
14539                            )?;
14540                        } else {
14541                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
14542                        }
14543                    }
14544
14545                    1 => {
14546                        if let Some(value) = &self.source {
14547                            ::fidl_next::wire::Envelope::encode_value::<
14548                                crate::wire::Ref<'static>,
14549                                ___E,
14550                            >(
14551                                value, preallocated.encoder, &mut out, ()
14552                            )?;
14553                        } else {
14554                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
14555                        }
14556                    }
14557
14558                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
14559                }
14560                unsafe {
14561                    preallocated.write_next(out.assume_init_ref());
14562                }
14563            }
14564
14565            ::fidl_next::wire::Table::encode_len(table, max_ord);
14566
14567            Ok(())
14568        }
14569    }
14570
14571    impl<'de> ::fidl_next::FromWire<crate::wire::OfferProtocol<'de>> for OfferProtocol {
14572        #[inline]
14573        fn from_wire(wire_: crate::wire::OfferProtocol<'de>) -> Self {
14574            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
14575
14576            let source = wire_.table.get(1);
14577
14578            let source_name = wire_.table.get(2);
14579
14580            let target = wire_.table.get(3);
14581
14582            let target_name = wire_.table.get(4);
14583
14584            let dependency_type = wire_.table.get(5);
14585
14586            let availability = wire_.table.get(6);
14587
14588            let source_dictionary = wire_.table.get(7);
14589
14590            Self {
14591                source: source.map(|envelope| {
14592                    ::fidl_next::FromWire::from_wire(unsafe {
14593                        envelope.read_unchecked::<crate::wire::Ref<'de>>()
14594                    })
14595                }),
14596
14597                source_name: source_name.map(|envelope| {
14598                    ::fidl_next::FromWire::from_wire(unsafe {
14599                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
14600                    })
14601                }),
14602
14603                target: target.map(|envelope| {
14604                    ::fidl_next::FromWire::from_wire(unsafe {
14605                        envelope.read_unchecked::<crate::wire::Ref<'de>>()
14606                    })
14607                }),
14608
14609                target_name: target_name.map(|envelope| {
14610                    ::fidl_next::FromWire::from_wire(unsafe {
14611                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
14612                    })
14613                }),
14614
14615                dependency_type: dependency_type.map(|envelope| {
14616                    ::fidl_next::FromWire::from_wire(unsafe {
14617                        envelope.read_unchecked::<crate::wire::DependencyType>()
14618                    })
14619                }),
14620
14621                availability: availability.map(|envelope| {
14622                    ::fidl_next::FromWire::from_wire(unsafe {
14623                        envelope.read_unchecked::<crate::wire::Availability>()
14624                    })
14625                }),
14626
14627                source_dictionary: source_dictionary.map(|envelope| {
14628                    ::fidl_next::FromWire::from_wire(unsafe {
14629                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
14630                    })
14631                }),
14632            }
14633        }
14634    }
14635
14636    impl<'de> ::fidl_next::FromWireRef<crate::wire::OfferProtocol<'de>> for OfferProtocol {
14637        #[inline]
14638        fn from_wire_ref(wire: &crate::wire::OfferProtocol<'de>) -> Self {
14639            Self {
14640                source: wire.table.get(1).map(|envelope| {
14641                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
14642                        envelope.deref_unchecked::<crate::wire::Ref<'de>>()
14643                    })
14644                }),
14645
14646                source_name: wire.table.get(2).map(|envelope| {
14647                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
14648                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
14649                    })
14650                }),
14651
14652                target: wire.table.get(3).map(|envelope| {
14653                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
14654                        envelope.deref_unchecked::<crate::wire::Ref<'de>>()
14655                    })
14656                }),
14657
14658                target_name: wire.table.get(4).map(|envelope| {
14659                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
14660                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
14661                    })
14662                }),
14663
14664                dependency_type: wire.table.get(5).map(|envelope| {
14665                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
14666                        envelope.deref_unchecked::<crate::wire::DependencyType>()
14667                    })
14668                }),
14669
14670                availability: wire.table.get(6).map(|envelope| {
14671                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
14672                        envelope.deref_unchecked::<crate::wire::Availability>()
14673                    })
14674                }),
14675
14676                source_dictionary: wire.table.get(7).map(|envelope| {
14677                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
14678                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
14679                    })
14680                }),
14681            }
14682        }
14683    }
14684
14685    #[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"]
14686    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
14687    pub struct OfferDirectory {
14688        pub source: ::core::option::Option<crate::natural::Ref>,
14689
14690        pub source_name: ::core::option::Option<::std::string::String>,
14691
14692        pub target: ::core::option::Option<crate::natural::Ref>,
14693
14694        pub target_name: ::core::option::Option<::std::string::String>,
14695
14696        pub rights: ::core::option::Option<::fidl_next_common_fuchsia_io::natural::Operations>,
14697
14698        pub subdir: ::core::option::Option<::std::string::String>,
14699
14700        pub dependency_type: ::core::option::Option<crate::natural::DependencyType>,
14701
14702        pub availability: ::core::option::Option<crate::natural::Availability>,
14703
14704        pub source_dictionary: ::core::option::Option<::std::string::String>,
14705    }
14706
14707    impl OfferDirectory {
14708        fn __max_ordinal(&self) -> usize {
14709            if self.source_dictionary.is_some() {
14710                return 9;
14711            }
14712
14713            if self.availability.is_some() {
14714                return 8;
14715            }
14716
14717            if self.dependency_type.is_some() {
14718                return 7;
14719            }
14720
14721            if self.subdir.is_some() {
14722                return 6;
14723            }
14724
14725            if self.rights.is_some() {
14726                return 5;
14727            }
14728
14729            if self.target_name.is_some() {
14730                return 4;
14731            }
14732
14733            if self.target.is_some() {
14734                return 3;
14735            }
14736
14737            if self.source_name.is_some() {
14738                return 2;
14739            }
14740
14741            if self.source.is_some() {
14742                return 1;
14743            }
14744
14745            0
14746        }
14747    }
14748
14749    unsafe impl<___E> ::fidl_next::Encode<crate::wire::OfferDirectory<'static>, ___E> for OfferDirectory
14750    where
14751        ___E: ::fidl_next::Encoder + ?Sized,
14752    {
14753        #[inline]
14754        fn encode(
14755            mut self,
14756            encoder: &mut ___E,
14757            out: &mut ::core::mem::MaybeUninit<crate::wire::OfferDirectory<'static>>,
14758            _: (),
14759        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
14760            ::fidl_next::munge!(let crate::wire::OfferDirectory { table } = out);
14761
14762            let max_ord = self.__max_ordinal();
14763
14764            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
14765            ::fidl_next::Wire::zero_padding(&mut out);
14766
14767            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
14768                ::fidl_next::wire::Envelope,
14769            >(encoder, max_ord);
14770
14771            for i in 1..=max_ord {
14772                match i {
14773                    9 => {
14774                        if let Some(value) = self.source_dictionary.take() {
14775                            ::fidl_next::wire::Envelope::encode_value::<
14776                                ::fidl_next::wire::String<'static>,
14777                                ___E,
14778                            >(
14779                                value, preallocated.encoder, &mut out, 1024
14780                            )?;
14781                        } else {
14782                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
14783                        }
14784                    }
14785
14786                    8 => {
14787                        if let Some(value) = self.availability.take() {
14788                            ::fidl_next::wire::Envelope::encode_value::<
14789                                crate::wire::Availability,
14790                                ___E,
14791                            >(
14792                                value, preallocated.encoder, &mut out, ()
14793                            )?;
14794                        } else {
14795                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
14796                        }
14797                    }
14798
14799                    7 => {
14800                        if let Some(value) = self.dependency_type.take() {
14801                            ::fidl_next::wire::Envelope::encode_value::<
14802                                crate::wire::DependencyType,
14803                                ___E,
14804                            >(
14805                                value, preallocated.encoder, &mut out, ()
14806                            )?;
14807                        } else {
14808                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
14809                        }
14810                    }
14811
14812                    6 => {
14813                        if let Some(value) = self.subdir.take() {
14814                            ::fidl_next::wire::Envelope::encode_value::<
14815                                ::fidl_next::wire::String<'static>,
14816                                ___E,
14817                            >(
14818                                value, preallocated.encoder, &mut out, 1024
14819                            )?;
14820                        } else {
14821                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
14822                        }
14823                    }
14824
14825                    5 => {
14826                        if let Some(value) = self.rights.take() {
14827                            ::fidl_next::wire::Envelope::encode_value::<
14828                                ::fidl_next_common_fuchsia_io::wire::Operations,
14829                                ___E,
14830                            >(
14831                                value, preallocated.encoder, &mut out, ()
14832                            )?;
14833                        } else {
14834                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
14835                        }
14836                    }
14837
14838                    4 => {
14839                        if let Some(value) = self.target_name.take() {
14840                            ::fidl_next::wire::Envelope::encode_value::<
14841                                ::fidl_next::wire::String<'static>,
14842                                ___E,
14843                            >(
14844                                value, preallocated.encoder, &mut out, 100
14845                            )?;
14846                        } else {
14847                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
14848                        }
14849                    }
14850
14851                    3 => {
14852                        if let Some(value) = self.target.take() {
14853                            ::fidl_next::wire::Envelope::encode_value::<
14854                                crate::wire::Ref<'static>,
14855                                ___E,
14856                            >(
14857                                value, preallocated.encoder, &mut out, ()
14858                            )?;
14859                        } else {
14860                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
14861                        }
14862                    }
14863
14864                    2 => {
14865                        if let Some(value) = self.source_name.take() {
14866                            ::fidl_next::wire::Envelope::encode_value::<
14867                                ::fidl_next::wire::String<'static>,
14868                                ___E,
14869                            >(
14870                                value, preallocated.encoder, &mut out, 100
14871                            )?;
14872                        } else {
14873                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
14874                        }
14875                    }
14876
14877                    1 => {
14878                        if let Some(value) = self.source.take() {
14879                            ::fidl_next::wire::Envelope::encode_value::<
14880                                crate::wire::Ref<'static>,
14881                                ___E,
14882                            >(
14883                                value, preallocated.encoder, &mut out, ()
14884                            )?;
14885                        } else {
14886                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
14887                        }
14888                    }
14889
14890                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
14891                }
14892                unsafe {
14893                    preallocated.write_next(out.assume_init_ref());
14894                }
14895            }
14896
14897            ::fidl_next::wire::Table::encode_len(table, max_ord);
14898
14899            Ok(())
14900        }
14901    }
14902
14903    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::OfferDirectory<'static>, ___E>
14904        for &'a OfferDirectory
14905    where
14906        ___E: ::fidl_next::Encoder + ?Sized,
14907    {
14908        #[inline]
14909        fn encode(
14910            self,
14911            encoder: &mut ___E,
14912            out: &mut ::core::mem::MaybeUninit<crate::wire::OfferDirectory<'static>>,
14913            _: (),
14914        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
14915            ::fidl_next::munge!(let crate::wire::OfferDirectory { table } = out);
14916
14917            let max_ord = self.__max_ordinal();
14918
14919            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
14920            ::fidl_next::Wire::zero_padding(&mut out);
14921
14922            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
14923                ::fidl_next::wire::Envelope,
14924            >(encoder, max_ord);
14925
14926            for i in 1..=max_ord {
14927                match i {
14928                    9 => {
14929                        if let Some(value) = &self.source_dictionary {
14930                            ::fidl_next::wire::Envelope::encode_value::<
14931                                ::fidl_next::wire::String<'static>,
14932                                ___E,
14933                            >(
14934                                value, preallocated.encoder, &mut out, 1024
14935                            )?;
14936                        } else {
14937                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
14938                        }
14939                    }
14940
14941                    8 => {
14942                        if let Some(value) = &self.availability {
14943                            ::fidl_next::wire::Envelope::encode_value::<
14944                                crate::wire::Availability,
14945                                ___E,
14946                            >(
14947                                value, preallocated.encoder, &mut out, ()
14948                            )?;
14949                        } else {
14950                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
14951                        }
14952                    }
14953
14954                    7 => {
14955                        if let Some(value) = &self.dependency_type {
14956                            ::fidl_next::wire::Envelope::encode_value::<
14957                                crate::wire::DependencyType,
14958                                ___E,
14959                            >(
14960                                value, preallocated.encoder, &mut out, ()
14961                            )?;
14962                        } else {
14963                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
14964                        }
14965                    }
14966
14967                    6 => {
14968                        if let Some(value) = &self.subdir {
14969                            ::fidl_next::wire::Envelope::encode_value::<
14970                                ::fidl_next::wire::String<'static>,
14971                                ___E,
14972                            >(
14973                                value, preallocated.encoder, &mut out, 1024
14974                            )?;
14975                        } else {
14976                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
14977                        }
14978                    }
14979
14980                    5 => {
14981                        if let Some(value) = &self.rights {
14982                            ::fidl_next::wire::Envelope::encode_value::<
14983                                ::fidl_next_common_fuchsia_io::wire::Operations,
14984                                ___E,
14985                            >(
14986                                value, preallocated.encoder, &mut out, ()
14987                            )?;
14988                        } else {
14989                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
14990                        }
14991                    }
14992
14993                    4 => {
14994                        if let Some(value) = &self.target_name {
14995                            ::fidl_next::wire::Envelope::encode_value::<
14996                                ::fidl_next::wire::String<'static>,
14997                                ___E,
14998                            >(
14999                                value, preallocated.encoder, &mut out, 100
15000                            )?;
15001                        } else {
15002                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
15003                        }
15004                    }
15005
15006                    3 => {
15007                        if let Some(value) = &self.target {
15008                            ::fidl_next::wire::Envelope::encode_value::<
15009                                crate::wire::Ref<'static>,
15010                                ___E,
15011                            >(
15012                                value, preallocated.encoder, &mut out, ()
15013                            )?;
15014                        } else {
15015                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
15016                        }
15017                    }
15018
15019                    2 => {
15020                        if let Some(value) = &self.source_name {
15021                            ::fidl_next::wire::Envelope::encode_value::<
15022                                ::fidl_next::wire::String<'static>,
15023                                ___E,
15024                            >(
15025                                value, preallocated.encoder, &mut out, 100
15026                            )?;
15027                        } else {
15028                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
15029                        }
15030                    }
15031
15032                    1 => {
15033                        if let Some(value) = &self.source {
15034                            ::fidl_next::wire::Envelope::encode_value::<
15035                                crate::wire::Ref<'static>,
15036                                ___E,
15037                            >(
15038                                value, preallocated.encoder, &mut out, ()
15039                            )?;
15040                        } else {
15041                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
15042                        }
15043                    }
15044
15045                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
15046                }
15047                unsafe {
15048                    preallocated.write_next(out.assume_init_ref());
15049                }
15050            }
15051
15052            ::fidl_next::wire::Table::encode_len(table, max_ord);
15053
15054            Ok(())
15055        }
15056    }
15057
15058    impl<'de> ::fidl_next::FromWire<crate::wire::OfferDirectory<'de>> for OfferDirectory {
15059        #[inline]
15060        fn from_wire(wire_: crate::wire::OfferDirectory<'de>) -> Self {
15061            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
15062
15063            let source = wire_.table.get(1);
15064
15065            let source_name = wire_.table.get(2);
15066
15067            let target = wire_.table.get(3);
15068
15069            let target_name = wire_.table.get(4);
15070
15071            let rights = wire_.table.get(5);
15072
15073            let subdir = wire_.table.get(6);
15074
15075            let dependency_type = wire_.table.get(7);
15076
15077            let availability = wire_.table.get(8);
15078
15079            let source_dictionary = wire_.table.get(9);
15080
15081            Self {
15082                source: source.map(|envelope| {
15083                    ::fidl_next::FromWire::from_wire(unsafe {
15084                        envelope.read_unchecked::<crate::wire::Ref<'de>>()
15085                    })
15086                }),
15087
15088                source_name: source_name.map(|envelope| {
15089                    ::fidl_next::FromWire::from_wire(unsafe {
15090                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
15091                    })
15092                }),
15093
15094                target: target.map(|envelope| {
15095                    ::fidl_next::FromWire::from_wire(unsafe {
15096                        envelope.read_unchecked::<crate::wire::Ref<'de>>()
15097                    })
15098                }),
15099
15100                target_name: target_name.map(|envelope| {
15101                    ::fidl_next::FromWire::from_wire(unsafe {
15102                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
15103                    })
15104                }),
15105
15106                rights: rights.map(|envelope| {
15107                    ::fidl_next::FromWire::from_wire(unsafe {
15108                        envelope.read_unchecked::<::fidl_next_common_fuchsia_io::wire::Operations>()
15109                    })
15110                }),
15111
15112                subdir: subdir.map(|envelope| {
15113                    ::fidl_next::FromWire::from_wire(unsafe {
15114                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
15115                    })
15116                }),
15117
15118                dependency_type: dependency_type.map(|envelope| {
15119                    ::fidl_next::FromWire::from_wire(unsafe {
15120                        envelope.read_unchecked::<crate::wire::DependencyType>()
15121                    })
15122                }),
15123
15124                availability: availability.map(|envelope| {
15125                    ::fidl_next::FromWire::from_wire(unsafe {
15126                        envelope.read_unchecked::<crate::wire::Availability>()
15127                    })
15128                }),
15129
15130                source_dictionary: source_dictionary.map(|envelope| {
15131                    ::fidl_next::FromWire::from_wire(unsafe {
15132                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
15133                    })
15134                }),
15135            }
15136        }
15137    }
15138
15139    impl<'de> ::fidl_next::FromWireRef<crate::wire::OfferDirectory<'de>> for OfferDirectory {
15140        #[inline]
15141        fn from_wire_ref(wire: &crate::wire::OfferDirectory<'de>) -> Self {
15142            Self {
15143                source: wire.table.get(1).map(|envelope| {
15144                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
15145                        envelope.deref_unchecked::<crate::wire::Ref<'de>>()
15146                    })
15147                }),
15148
15149                source_name: wire.table.get(2).map(|envelope| {
15150                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
15151                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
15152                    })
15153                }),
15154
15155                target: wire.table.get(3).map(|envelope| {
15156                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
15157                        envelope.deref_unchecked::<crate::wire::Ref<'de>>()
15158                    })
15159                }),
15160
15161                target_name: wire.table.get(4).map(|envelope| {
15162                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
15163                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
15164                    })
15165                }),
15166
15167                rights: wire.table.get(5).map(|envelope| {
15168                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
15169                        envelope
15170                            .deref_unchecked::<::fidl_next_common_fuchsia_io::wire::Operations>()
15171                    })
15172                }),
15173
15174                subdir: wire.table.get(6).map(|envelope| {
15175                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
15176                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
15177                    })
15178                }),
15179
15180                dependency_type: wire.table.get(7).map(|envelope| {
15181                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
15182                        envelope.deref_unchecked::<crate::wire::DependencyType>()
15183                    })
15184                }),
15185
15186                availability: wire.table.get(8).map(|envelope| {
15187                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
15188                        envelope.deref_unchecked::<crate::wire::Availability>()
15189                    })
15190                }),
15191
15192                source_dictionary: wire.table.get(9).map(|envelope| {
15193                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
15194                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
15195                    })
15196                }),
15197            }
15198        }
15199    }
15200
15201    #[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"]
15202    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
15203    pub struct OfferStorage {
15204        pub source_name: ::core::option::Option<::std::string::String>,
15205
15206        pub source: ::core::option::Option<crate::natural::Ref>,
15207
15208        pub target: ::core::option::Option<crate::natural::Ref>,
15209
15210        pub target_name: ::core::option::Option<::std::string::String>,
15211
15212        pub availability: ::core::option::Option<crate::natural::Availability>,
15213    }
15214
15215    impl OfferStorage {
15216        fn __max_ordinal(&self) -> usize {
15217            if self.availability.is_some() {
15218                return 5;
15219            }
15220
15221            if self.target_name.is_some() {
15222                return 4;
15223            }
15224
15225            if self.target.is_some() {
15226                return 3;
15227            }
15228
15229            if self.source.is_some() {
15230                return 2;
15231            }
15232
15233            if self.source_name.is_some() {
15234                return 1;
15235            }
15236
15237            0
15238        }
15239    }
15240
15241    unsafe impl<___E> ::fidl_next::Encode<crate::wire::OfferStorage<'static>, ___E> for OfferStorage
15242    where
15243        ___E: ::fidl_next::Encoder + ?Sized,
15244    {
15245        #[inline]
15246        fn encode(
15247            mut self,
15248            encoder: &mut ___E,
15249            out: &mut ::core::mem::MaybeUninit<crate::wire::OfferStorage<'static>>,
15250            _: (),
15251        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
15252            ::fidl_next::munge!(let crate::wire::OfferStorage { table } = out);
15253
15254            let max_ord = self.__max_ordinal();
15255
15256            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
15257            ::fidl_next::Wire::zero_padding(&mut out);
15258
15259            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
15260                ::fidl_next::wire::Envelope,
15261            >(encoder, max_ord);
15262
15263            for i in 1..=max_ord {
15264                match i {
15265                    5 => {
15266                        if let Some(value) = self.availability.take() {
15267                            ::fidl_next::wire::Envelope::encode_value::<
15268                                crate::wire::Availability,
15269                                ___E,
15270                            >(
15271                                value, preallocated.encoder, &mut out, ()
15272                            )?;
15273                        } else {
15274                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
15275                        }
15276                    }
15277
15278                    4 => {
15279                        if let Some(value) = self.target_name.take() {
15280                            ::fidl_next::wire::Envelope::encode_value::<
15281                                ::fidl_next::wire::String<'static>,
15282                                ___E,
15283                            >(
15284                                value, preallocated.encoder, &mut out, 100
15285                            )?;
15286                        } else {
15287                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
15288                        }
15289                    }
15290
15291                    3 => {
15292                        if let Some(value) = self.target.take() {
15293                            ::fidl_next::wire::Envelope::encode_value::<
15294                                crate::wire::Ref<'static>,
15295                                ___E,
15296                            >(
15297                                value, preallocated.encoder, &mut out, ()
15298                            )?;
15299                        } else {
15300                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
15301                        }
15302                    }
15303
15304                    2 => {
15305                        if let Some(value) = self.source.take() {
15306                            ::fidl_next::wire::Envelope::encode_value::<
15307                                crate::wire::Ref<'static>,
15308                                ___E,
15309                            >(
15310                                value, preallocated.encoder, &mut out, ()
15311                            )?;
15312                        } else {
15313                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
15314                        }
15315                    }
15316
15317                    1 => {
15318                        if let Some(value) = self.source_name.take() {
15319                            ::fidl_next::wire::Envelope::encode_value::<
15320                                ::fidl_next::wire::String<'static>,
15321                                ___E,
15322                            >(
15323                                value, preallocated.encoder, &mut out, 100
15324                            )?;
15325                        } else {
15326                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
15327                        }
15328                    }
15329
15330                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
15331                }
15332                unsafe {
15333                    preallocated.write_next(out.assume_init_ref());
15334                }
15335            }
15336
15337            ::fidl_next::wire::Table::encode_len(table, max_ord);
15338
15339            Ok(())
15340        }
15341    }
15342
15343    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::OfferStorage<'static>, ___E>
15344        for &'a OfferStorage
15345    where
15346        ___E: ::fidl_next::Encoder + ?Sized,
15347    {
15348        #[inline]
15349        fn encode(
15350            self,
15351            encoder: &mut ___E,
15352            out: &mut ::core::mem::MaybeUninit<crate::wire::OfferStorage<'static>>,
15353            _: (),
15354        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
15355            ::fidl_next::munge!(let crate::wire::OfferStorage { table } = out);
15356
15357            let max_ord = self.__max_ordinal();
15358
15359            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
15360            ::fidl_next::Wire::zero_padding(&mut out);
15361
15362            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
15363                ::fidl_next::wire::Envelope,
15364            >(encoder, max_ord);
15365
15366            for i in 1..=max_ord {
15367                match i {
15368                    5 => {
15369                        if let Some(value) = &self.availability {
15370                            ::fidl_next::wire::Envelope::encode_value::<
15371                                crate::wire::Availability,
15372                                ___E,
15373                            >(
15374                                value, preallocated.encoder, &mut out, ()
15375                            )?;
15376                        } else {
15377                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
15378                        }
15379                    }
15380
15381                    4 => {
15382                        if let Some(value) = &self.target_name {
15383                            ::fidl_next::wire::Envelope::encode_value::<
15384                                ::fidl_next::wire::String<'static>,
15385                                ___E,
15386                            >(
15387                                value, preallocated.encoder, &mut out, 100
15388                            )?;
15389                        } else {
15390                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
15391                        }
15392                    }
15393
15394                    3 => {
15395                        if let Some(value) = &self.target {
15396                            ::fidl_next::wire::Envelope::encode_value::<
15397                                crate::wire::Ref<'static>,
15398                                ___E,
15399                            >(
15400                                value, preallocated.encoder, &mut out, ()
15401                            )?;
15402                        } else {
15403                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
15404                        }
15405                    }
15406
15407                    2 => {
15408                        if let Some(value) = &self.source {
15409                            ::fidl_next::wire::Envelope::encode_value::<
15410                                crate::wire::Ref<'static>,
15411                                ___E,
15412                            >(
15413                                value, preallocated.encoder, &mut out, ()
15414                            )?;
15415                        } else {
15416                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
15417                        }
15418                    }
15419
15420                    1 => {
15421                        if let Some(value) = &self.source_name {
15422                            ::fidl_next::wire::Envelope::encode_value::<
15423                                ::fidl_next::wire::String<'static>,
15424                                ___E,
15425                            >(
15426                                value, preallocated.encoder, &mut out, 100
15427                            )?;
15428                        } else {
15429                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
15430                        }
15431                    }
15432
15433                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
15434                }
15435                unsafe {
15436                    preallocated.write_next(out.assume_init_ref());
15437                }
15438            }
15439
15440            ::fidl_next::wire::Table::encode_len(table, max_ord);
15441
15442            Ok(())
15443        }
15444    }
15445
15446    impl<'de> ::fidl_next::FromWire<crate::wire::OfferStorage<'de>> for OfferStorage {
15447        #[inline]
15448        fn from_wire(wire_: crate::wire::OfferStorage<'de>) -> Self {
15449            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
15450
15451            let source_name = wire_.table.get(1);
15452
15453            let source = wire_.table.get(2);
15454
15455            let target = wire_.table.get(3);
15456
15457            let target_name = wire_.table.get(4);
15458
15459            let availability = wire_.table.get(5);
15460
15461            Self {
15462                source_name: source_name.map(|envelope| {
15463                    ::fidl_next::FromWire::from_wire(unsafe {
15464                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
15465                    })
15466                }),
15467
15468                source: source.map(|envelope| {
15469                    ::fidl_next::FromWire::from_wire(unsafe {
15470                        envelope.read_unchecked::<crate::wire::Ref<'de>>()
15471                    })
15472                }),
15473
15474                target: target.map(|envelope| {
15475                    ::fidl_next::FromWire::from_wire(unsafe {
15476                        envelope.read_unchecked::<crate::wire::Ref<'de>>()
15477                    })
15478                }),
15479
15480                target_name: target_name.map(|envelope| {
15481                    ::fidl_next::FromWire::from_wire(unsafe {
15482                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
15483                    })
15484                }),
15485
15486                availability: availability.map(|envelope| {
15487                    ::fidl_next::FromWire::from_wire(unsafe {
15488                        envelope.read_unchecked::<crate::wire::Availability>()
15489                    })
15490                }),
15491            }
15492        }
15493    }
15494
15495    impl<'de> ::fidl_next::FromWireRef<crate::wire::OfferStorage<'de>> for OfferStorage {
15496        #[inline]
15497        fn from_wire_ref(wire: &crate::wire::OfferStorage<'de>) -> Self {
15498            Self {
15499                source_name: wire.table.get(1).map(|envelope| {
15500                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
15501                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
15502                    })
15503                }),
15504
15505                source: wire.table.get(2).map(|envelope| {
15506                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
15507                        envelope.deref_unchecked::<crate::wire::Ref<'de>>()
15508                    })
15509                }),
15510
15511                target: wire.table.get(3).map(|envelope| {
15512                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
15513                        envelope.deref_unchecked::<crate::wire::Ref<'de>>()
15514                    })
15515                }),
15516
15517                target_name: wire.table.get(4).map(|envelope| {
15518                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
15519                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
15520                    })
15521                }),
15522
15523                availability: wire.table.get(5).map(|envelope| {
15524                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
15525                        envelope.deref_unchecked::<crate::wire::Availability>()
15526                    })
15527                }),
15528            }
15529        }
15530    }
15531
15532    #[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"]
15533    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
15534    pub struct OfferRunner {
15535        pub source: ::core::option::Option<crate::natural::Ref>,
15536
15537        pub source_name: ::core::option::Option<::std::string::String>,
15538
15539        pub target: ::core::option::Option<crate::natural::Ref>,
15540
15541        pub target_name: ::core::option::Option<::std::string::String>,
15542
15543        pub source_dictionary: ::core::option::Option<::std::string::String>,
15544    }
15545
15546    impl OfferRunner {
15547        fn __max_ordinal(&self) -> usize {
15548            if self.source_dictionary.is_some() {
15549                return 5;
15550            }
15551
15552            if self.target_name.is_some() {
15553                return 4;
15554            }
15555
15556            if self.target.is_some() {
15557                return 3;
15558            }
15559
15560            if self.source_name.is_some() {
15561                return 2;
15562            }
15563
15564            if self.source.is_some() {
15565                return 1;
15566            }
15567
15568            0
15569        }
15570    }
15571
15572    unsafe impl<___E> ::fidl_next::Encode<crate::wire::OfferRunner<'static>, ___E> for OfferRunner
15573    where
15574        ___E: ::fidl_next::Encoder + ?Sized,
15575    {
15576        #[inline]
15577        fn encode(
15578            mut self,
15579            encoder: &mut ___E,
15580            out: &mut ::core::mem::MaybeUninit<crate::wire::OfferRunner<'static>>,
15581            _: (),
15582        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
15583            ::fidl_next::munge!(let crate::wire::OfferRunner { table } = out);
15584
15585            let max_ord = self.__max_ordinal();
15586
15587            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
15588            ::fidl_next::Wire::zero_padding(&mut out);
15589
15590            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
15591                ::fidl_next::wire::Envelope,
15592            >(encoder, max_ord);
15593
15594            for i in 1..=max_ord {
15595                match i {
15596                    5 => {
15597                        if let Some(value) = self.source_dictionary.take() {
15598                            ::fidl_next::wire::Envelope::encode_value::<
15599                                ::fidl_next::wire::String<'static>,
15600                                ___E,
15601                            >(
15602                                value, preallocated.encoder, &mut out, 1024
15603                            )?;
15604                        } else {
15605                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
15606                        }
15607                    }
15608
15609                    4 => {
15610                        if let Some(value) = self.target_name.take() {
15611                            ::fidl_next::wire::Envelope::encode_value::<
15612                                ::fidl_next::wire::String<'static>,
15613                                ___E,
15614                            >(
15615                                value, preallocated.encoder, &mut out, 100
15616                            )?;
15617                        } else {
15618                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
15619                        }
15620                    }
15621
15622                    3 => {
15623                        if let Some(value) = self.target.take() {
15624                            ::fidl_next::wire::Envelope::encode_value::<
15625                                crate::wire::Ref<'static>,
15626                                ___E,
15627                            >(
15628                                value, preallocated.encoder, &mut out, ()
15629                            )?;
15630                        } else {
15631                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
15632                        }
15633                    }
15634
15635                    2 => {
15636                        if let Some(value) = self.source_name.take() {
15637                            ::fidl_next::wire::Envelope::encode_value::<
15638                                ::fidl_next::wire::String<'static>,
15639                                ___E,
15640                            >(
15641                                value, preallocated.encoder, &mut out, 100
15642                            )?;
15643                        } else {
15644                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
15645                        }
15646                    }
15647
15648                    1 => {
15649                        if let Some(value) = self.source.take() {
15650                            ::fidl_next::wire::Envelope::encode_value::<
15651                                crate::wire::Ref<'static>,
15652                                ___E,
15653                            >(
15654                                value, preallocated.encoder, &mut out, ()
15655                            )?;
15656                        } else {
15657                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
15658                        }
15659                    }
15660
15661                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
15662                }
15663                unsafe {
15664                    preallocated.write_next(out.assume_init_ref());
15665                }
15666            }
15667
15668            ::fidl_next::wire::Table::encode_len(table, max_ord);
15669
15670            Ok(())
15671        }
15672    }
15673
15674    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::OfferRunner<'static>, ___E>
15675        for &'a OfferRunner
15676    where
15677        ___E: ::fidl_next::Encoder + ?Sized,
15678    {
15679        #[inline]
15680        fn encode(
15681            self,
15682            encoder: &mut ___E,
15683            out: &mut ::core::mem::MaybeUninit<crate::wire::OfferRunner<'static>>,
15684            _: (),
15685        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
15686            ::fidl_next::munge!(let crate::wire::OfferRunner { table } = out);
15687
15688            let max_ord = self.__max_ordinal();
15689
15690            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
15691            ::fidl_next::Wire::zero_padding(&mut out);
15692
15693            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
15694                ::fidl_next::wire::Envelope,
15695            >(encoder, max_ord);
15696
15697            for i in 1..=max_ord {
15698                match i {
15699                    5 => {
15700                        if let Some(value) = &self.source_dictionary {
15701                            ::fidl_next::wire::Envelope::encode_value::<
15702                                ::fidl_next::wire::String<'static>,
15703                                ___E,
15704                            >(
15705                                value, preallocated.encoder, &mut out, 1024
15706                            )?;
15707                        } else {
15708                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
15709                        }
15710                    }
15711
15712                    4 => {
15713                        if let Some(value) = &self.target_name {
15714                            ::fidl_next::wire::Envelope::encode_value::<
15715                                ::fidl_next::wire::String<'static>,
15716                                ___E,
15717                            >(
15718                                value, preallocated.encoder, &mut out, 100
15719                            )?;
15720                        } else {
15721                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
15722                        }
15723                    }
15724
15725                    3 => {
15726                        if let Some(value) = &self.target {
15727                            ::fidl_next::wire::Envelope::encode_value::<
15728                                crate::wire::Ref<'static>,
15729                                ___E,
15730                            >(
15731                                value, preallocated.encoder, &mut out, ()
15732                            )?;
15733                        } else {
15734                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
15735                        }
15736                    }
15737
15738                    2 => {
15739                        if let Some(value) = &self.source_name {
15740                            ::fidl_next::wire::Envelope::encode_value::<
15741                                ::fidl_next::wire::String<'static>,
15742                                ___E,
15743                            >(
15744                                value, preallocated.encoder, &mut out, 100
15745                            )?;
15746                        } else {
15747                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
15748                        }
15749                    }
15750
15751                    1 => {
15752                        if let Some(value) = &self.source {
15753                            ::fidl_next::wire::Envelope::encode_value::<
15754                                crate::wire::Ref<'static>,
15755                                ___E,
15756                            >(
15757                                value, preallocated.encoder, &mut out, ()
15758                            )?;
15759                        } else {
15760                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
15761                        }
15762                    }
15763
15764                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
15765                }
15766                unsafe {
15767                    preallocated.write_next(out.assume_init_ref());
15768                }
15769            }
15770
15771            ::fidl_next::wire::Table::encode_len(table, max_ord);
15772
15773            Ok(())
15774        }
15775    }
15776
15777    impl<'de> ::fidl_next::FromWire<crate::wire::OfferRunner<'de>> for OfferRunner {
15778        #[inline]
15779        fn from_wire(wire_: crate::wire::OfferRunner<'de>) -> Self {
15780            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
15781
15782            let source = wire_.table.get(1);
15783
15784            let source_name = wire_.table.get(2);
15785
15786            let target = wire_.table.get(3);
15787
15788            let target_name = wire_.table.get(4);
15789
15790            let source_dictionary = wire_.table.get(5);
15791
15792            Self {
15793                source: source.map(|envelope| {
15794                    ::fidl_next::FromWire::from_wire(unsafe {
15795                        envelope.read_unchecked::<crate::wire::Ref<'de>>()
15796                    })
15797                }),
15798
15799                source_name: source_name.map(|envelope| {
15800                    ::fidl_next::FromWire::from_wire(unsafe {
15801                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
15802                    })
15803                }),
15804
15805                target: target.map(|envelope| {
15806                    ::fidl_next::FromWire::from_wire(unsafe {
15807                        envelope.read_unchecked::<crate::wire::Ref<'de>>()
15808                    })
15809                }),
15810
15811                target_name: target_name.map(|envelope| {
15812                    ::fidl_next::FromWire::from_wire(unsafe {
15813                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
15814                    })
15815                }),
15816
15817                source_dictionary: source_dictionary.map(|envelope| {
15818                    ::fidl_next::FromWire::from_wire(unsafe {
15819                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
15820                    })
15821                }),
15822            }
15823        }
15824    }
15825
15826    impl<'de> ::fidl_next::FromWireRef<crate::wire::OfferRunner<'de>> for OfferRunner {
15827        #[inline]
15828        fn from_wire_ref(wire: &crate::wire::OfferRunner<'de>) -> Self {
15829            Self {
15830                source: wire.table.get(1).map(|envelope| {
15831                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
15832                        envelope.deref_unchecked::<crate::wire::Ref<'de>>()
15833                    })
15834                }),
15835
15836                source_name: wire.table.get(2).map(|envelope| {
15837                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
15838                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
15839                    })
15840                }),
15841
15842                target: wire.table.get(3).map(|envelope| {
15843                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
15844                        envelope.deref_unchecked::<crate::wire::Ref<'de>>()
15845                    })
15846                }),
15847
15848                target_name: wire.table.get(4).map(|envelope| {
15849                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
15850                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
15851                    })
15852                }),
15853
15854                source_dictionary: wire.table.get(5).map(|envelope| {
15855                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
15856                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
15857                    })
15858                }),
15859            }
15860        }
15861    }
15862
15863    #[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"]
15864    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
15865    pub struct OfferResolver {
15866        pub source: ::core::option::Option<crate::natural::Ref>,
15867
15868        pub source_name: ::core::option::Option<::std::string::String>,
15869
15870        pub target: ::core::option::Option<crate::natural::Ref>,
15871
15872        pub target_name: ::core::option::Option<::std::string::String>,
15873
15874        pub source_dictionary: ::core::option::Option<::std::string::String>,
15875    }
15876
15877    impl OfferResolver {
15878        fn __max_ordinal(&self) -> usize {
15879            if self.source_dictionary.is_some() {
15880                return 5;
15881            }
15882
15883            if self.target_name.is_some() {
15884                return 4;
15885            }
15886
15887            if self.target.is_some() {
15888                return 3;
15889            }
15890
15891            if self.source_name.is_some() {
15892                return 2;
15893            }
15894
15895            if self.source.is_some() {
15896                return 1;
15897            }
15898
15899            0
15900        }
15901    }
15902
15903    unsafe impl<___E> ::fidl_next::Encode<crate::wire::OfferResolver<'static>, ___E> for OfferResolver
15904    where
15905        ___E: ::fidl_next::Encoder + ?Sized,
15906    {
15907        #[inline]
15908        fn encode(
15909            mut self,
15910            encoder: &mut ___E,
15911            out: &mut ::core::mem::MaybeUninit<crate::wire::OfferResolver<'static>>,
15912            _: (),
15913        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
15914            ::fidl_next::munge!(let crate::wire::OfferResolver { table } = out);
15915
15916            let max_ord = self.__max_ordinal();
15917
15918            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
15919            ::fidl_next::Wire::zero_padding(&mut out);
15920
15921            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
15922                ::fidl_next::wire::Envelope,
15923            >(encoder, max_ord);
15924
15925            for i in 1..=max_ord {
15926                match i {
15927                    5 => {
15928                        if let Some(value) = self.source_dictionary.take() {
15929                            ::fidl_next::wire::Envelope::encode_value::<
15930                                ::fidl_next::wire::String<'static>,
15931                                ___E,
15932                            >(
15933                                value, preallocated.encoder, &mut out, 1024
15934                            )?;
15935                        } else {
15936                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
15937                        }
15938                    }
15939
15940                    4 => {
15941                        if let Some(value) = self.target_name.take() {
15942                            ::fidl_next::wire::Envelope::encode_value::<
15943                                ::fidl_next::wire::String<'static>,
15944                                ___E,
15945                            >(
15946                                value, preallocated.encoder, &mut out, 100
15947                            )?;
15948                        } else {
15949                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
15950                        }
15951                    }
15952
15953                    3 => {
15954                        if let Some(value) = self.target.take() {
15955                            ::fidl_next::wire::Envelope::encode_value::<
15956                                crate::wire::Ref<'static>,
15957                                ___E,
15958                            >(
15959                                value, preallocated.encoder, &mut out, ()
15960                            )?;
15961                        } else {
15962                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
15963                        }
15964                    }
15965
15966                    2 => {
15967                        if let Some(value) = self.source_name.take() {
15968                            ::fidl_next::wire::Envelope::encode_value::<
15969                                ::fidl_next::wire::String<'static>,
15970                                ___E,
15971                            >(
15972                                value, preallocated.encoder, &mut out, 100
15973                            )?;
15974                        } else {
15975                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
15976                        }
15977                    }
15978
15979                    1 => {
15980                        if let Some(value) = self.source.take() {
15981                            ::fidl_next::wire::Envelope::encode_value::<
15982                                crate::wire::Ref<'static>,
15983                                ___E,
15984                            >(
15985                                value, preallocated.encoder, &mut out, ()
15986                            )?;
15987                        } else {
15988                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
15989                        }
15990                    }
15991
15992                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
15993                }
15994                unsafe {
15995                    preallocated.write_next(out.assume_init_ref());
15996                }
15997            }
15998
15999            ::fidl_next::wire::Table::encode_len(table, max_ord);
16000
16001            Ok(())
16002        }
16003    }
16004
16005    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::OfferResolver<'static>, ___E>
16006        for &'a OfferResolver
16007    where
16008        ___E: ::fidl_next::Encoder + ?Sized,
16009    {
16010        #[inline]
16011        fn encode(
16012            self,
16013            encoder: &mut ___E,
16014            out: &mut ::core::mem::MaybeUninit<crate::wire::OfferResolver<'static>>,
16015            _: (),
16016        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
16017            ::fidl_next::munge!(let crate::wire::OfferResolver { table } = out);
16018
16019            let max_ord = self.__max_ordinal();
16020
16021            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
16022            ::fidl_next::Wire::zero_padding(&mut out);
16023
16024            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
16025                ::fidl_next::wire::Envelope,
16026            >(encoder, max_ord);
16027
16028            for i in 1..=max_ord {
16029                match i {
16030                    5 => {
16031                        if let Some(value) = &self.source_dictionary {
16032                            ::fidl_next::wire::Envelope::encode_value::<
16033                                ::fidl_next::wire::String<'static>,
16034                                ___E,
16035                            >(
16036                                value, preallocated.encoder, &mut out, 1024
16037                            )?;
16038                        } else {
16039                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
16040                        }
16041                    }
16042
16043                    4 => {
16044                        if let Some(value) = &self.target_name {
16045                            ::fidl_next::wire::Envelope::encode_value::<
16046                                ::fidl_next::wire::String<'static>,
16047                                ___E,
16048                            >(
16049                                value, preallocated.encoder, &mut out, 100
16050                            )?;
16051                        } else {
16052                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
16053                        }
16054                    }
16055
16056                    3 => {
16057                        if let Some(value) = &self.target {
16058                            ::fidl_next::wire::Envelope::encode_value::<
16059                                crate::wire::Ref<'static>,
16060                                ___E,
16061                            >(
16062                                value, preallocated.encoder, &mut out, ()
16063                            )?;
16064                        } else {
16065                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
16066                        }
16067                    }
16068
16069                    2 => {
16070                        if let Some(value) = &self.source_name {
16071                            ::fidl_next::wire::Envelope::encode_value::<
16072                                ::fidl_next::wire::String<'static>,
16073                                ___E,
16074                            >(
16075                                value, preallocated.encoder, &mut out, 100
16076                            )?;
16077                        } else {
16078                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
16079                        }
16080                    }
16081
16082                    1 => {
16083                        if let Some(value) = &self.source {
16084                            ::fidl_next::wire::Envelope::encode_value::<
16085                                crate::wire::Ref<'static>,
16086                                ___E,
16087                            >(
16088                                value, preallocated.encoder, &mut out, ()
16089                            )?;
16090                        } else {
16091                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
16092                        }
16093                    }
16094
16095                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
16096                }
16097                unsafe {
16098                    preallocated.write_next(out.assume_init_ref());
16099                }
16100            }
16101
16102            ::fidl_next::wire::Table::encode_len(table, max_ord);
16103
16104            Ok(())
16105        }
16106    }
16107
16108    impl<'de> ::fidl_next::FromWire<crate::wire::OfferResolver<'de>> for OfferResolver {
16109        #[inline]
16110        fn from_wire(wire_: crate::wire::OfferResolver<'de>) -> Self {
16111            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
16112
16113            let source = wire_.table.get(1);
16114
16115            let source_name = wire_.table.get(2);
16116
16117            let target = wire_.table.get(3);
16118
16119            let target_name = wire_.table.get(4);
16120
16121            let source_dictionary = wire_.table.get(5);
16122
16123            Self {
16124                source: source.map(|envelope| {
16125                    ::fidl_next::FromWire::from_wire(unsafe {
16126                        envelope.read_unchecked::<crate::wire::Ref<'de>>()
16127                    })
16128                }),
16129
16130                source_name: source_name.map(|envelope| {
16131                    ::fidl_next::FromWire::from_wire(unsafe {
16132                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
16133                    })
16134                }),
16135
16136                target: target.map(|envelope| {
16137                    ::fidl_next::FromWire::from_wire(unsafe {
16138                        envelope.read_unchecked::<crate::wire::Ref<'de>>()
16139                    })
16140                }),
16141
16142                target_name: target_name.map(|envelope| {
16143                    ::fidl_next::FromWire::from_wire(unsafe {
16144                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
16145                    })
16146                }),
16147
16148                source_dictionary: source_dictionary.map(|envelope| {
16149                    ::fidl_next::FromWire::from_wire(unsafe {
16150                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
16151                    })
16152                }),
16153            }
16154        }
16155    }
16156
16157    impl<'de> ::fidl_next::FromWireRef<crate::wire::OfferResolver<'de>> for OfferResolver {
16158        #[inline]
16159        fn from_wire_ref(wire: &crate::wire::OfferResolver<'de>) -> Self {
16160            Self {
16161                source: wire.table.get(1).map(|envelope| {
16162                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
16163                        envelope.deref_unchecked::<crate::wire::Ref<'de>>()
16164                    })
16165                }),
16166
16167                source_name: wire.table.get(2).map(|envelope| {
16168                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
16169                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
16170                    })
16171                }),
16172
16173                target: wire.table.get(3).map(|envelope| {
16174                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
16175                        envelope.deref_unchecked::<crate::wire::Ref<'de>>()
16176                    })
16177                }),
16178
16179                target_name: wire.table.get(4).map(|envelope| {
16180                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
16181                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
16182                    })
16183                }),
16184
16185                source_dictionary: wire.table.get(5).map(|envelope| {
16186                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
16187                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
16188                    })
16189                }),
16190            }
16191        }
16192    }
16193
16194    #[doc = " Declares an event stream offered by a component.\n"]
16195    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
16196    pub struct OfferEventStream {
16197        pub source: ::core::option::Option<crate::natural::Ref>,
16198
16199        pub source_name: ::core::option::Option<::std::string::String>,
16200
16201        pub scope: ::core::option::Option<::std::vec::Vec<crate::natural::Ref>>,
16202
16203        pub target: ::core::option::Option<crate::natural::Ref>,
16204
16205        pub target_name: ::core::option::Option<::std::string::String>,
16206
16207        pub availability: ::core::option::Option<crate::natural::Availability>,
16208    }
16209
16210    impl OfferEventStream {
16211        fn __max_ordinal(&self) -> usize {
16212            if self.availability.is_some() {
16213                return 7;
16214            }
16215
16216            if self.target_name.is_some() {
16217                return 5;
16218            }
16219
16220            if self.target.is_some() {
16221                return 4;
16222            }
16223
16224            if self.scope.is_some() {
16225                return 3;
16226            }
16227
16228            if self.source_name.is_some() {
16229                return 2;
16230            }
16231
16232            if self.source.is_some() {
16233                return 1;
16234            }
16235
16236            0
16237        }
16238    }
16239
16240    unsafe impl<___E> ::fidl_next::Encode<crate::wire::OfferEventStream<'static>, ___E>
16241        for OfferEventStream
16242    where
16243        ___E: ::fidl_next::Encoder + ?Sized,
16244    {
16245        #[inline]
16246        fn encode(
16247            mut self,
16248            encoder: &mut ___E,
16249            out: &mut ::core::mem::MaybeUninit<crate::wire::OfferEventStream<'static>>,
16250            _: (),
16251        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
16252            ::fidl_next::munge!(let crate::wire::OfferEventStream { table } = out);
16253
16254            let max_ord = self.__max_ordinal();
16255
16256            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
16257            ::fidl_next::Wire::zero_padding(&mut out);
16258
16259            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
16260                ::fidl_next::wire::Envelope,
16261            >(encoder, max_ord);
16262
16263            for i in 1..=max_ord {
16264                match i {
16265                    7 => {
16266                        if let Some(value) = self.availability.take() {
16267                            ::fidl_next::wire::Envelope::encode_value::<
16268                                crate::wire::Availability,
16269                                ___E,
16270                            >(
16271                                value, preallocated.encoder, &mut out, ()
16272                            )?;
16273                        } else {
16274                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
16275                        }
16276                    }
16277
16278                    5 => {
16279                        if let Some(value) = self.target_name.take() {
16280                            ::fidl_next::wire::Envelope::encode_value::<
16281                                ::fidl_next::wire::String<'static>,
16282                                ___E,
16283                            >(
16284                                value, preallocated.encoder, &mut out, 100
16285                            )?;
16286                        } else {
16287                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
16288                        }
16289                    }
16290
16291                    4 => {
16292                        if let Some(value) = self.target.take() {
16293                            ::fidl_next::wire::Envelope::encode_value::<
16294                                crate::wire::Ref<'static>,
16295                                ___E,
16296                            >(
16297                                value, preallocated.encoder, &mut out, ()
16298                            )?;
16299                        } else {
16300                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
16301                        }
16302                    }
16303
16304                    3 => {
16305                        if let Some(value) = self.scope.take() {
16306                            ::fidl_next::wire::Envelope::encode_value::<
16307                                ::fidl_next::wire::Vector<'static, crate::wire::Ref<'static>>,
16308                                ___E,
16309                            >(
16310                                value, preallocated.encoder, &mut out, (4294967295, ())
16311                            )?;
16312                        } else {
16313                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
16314                        }
16315                    }
16316
16317                    2 => {
16318                        if let Some(value) = self.source_name.take() {
16319                            ::fidl_next::wire::Envelope::encode_value::<
16320                                ::fidl_next::wire::String<'static>,
16321                                ___E,
16322                            >(
16323                                value, preallocated.encoder, &mut out, 100
16324                            )?;
16325                        } else {
16326                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
16327                        }
16328                    }
16329
16330                    1 => {
16331                        if let Some(value) = self.source.take() {
16332                            ::fidl_next::wire::Envelope::encode_value::<
16333                                crate::wire::Ref<'static>,
16334                                ___E,
16335                            >(
16336                                value, preallocated.encoder, &mut out, ()
16337                            )?;
16338                        } else {
16339                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
16340                        }
16341                    }
16342
16343                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
16344                }
16345                unsafe {
16346                    preallocated.write_next(out.assume_init_ref());
16347                }
16348            }
16349
16350            ::fidl_next::wire::Table::encode_len(table, max_ord);
16351
16352            Ok(())
16353        }
16354    }
16355
16356    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::OfferEventStream<'static>, ___E>
16357        for &'a OfferEventStream
16358    where
16359        ___E: ::fidl_next::Encoder + ?Sized,
16360    {
16361        #[inline]
16362        fn encode(
16363            self,
16364            encoder: &mut ___E,
16365            out: &mut ::core::mem::MaybeUninit<crate::wire::OfferEventStream<'static>>,
16366            _: (),
16367        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
16368            ::fidl_next::munge!(let crate::wire::OfferEventStream { table } = out);
16369
16370            let max_ord = self.__max_ordinal();
16371
16372            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
16373            ::fidl_next::Wire::zero_padding(&mut out);
16374
16375            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
16376                ::fidl_next::wire::Envelope,
16377            >(encoder, max_ord);
16378
16379            for i in 1..=max_ord {
16380                match i {
16381                    7 => {
16382                        if let Some(value) = &self.availability {
16383                            ::fidl_next::wire::Envelope::encode_value::<
16384                                crate::wire::Availability,
16385                                ___E,
16386                            >(
16387                                value, preallocated.encoder, &mut out, ()
16388                            )?;
16389                        } else {
16390                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
16391                        }
16392                    }
16393
16394                    5 => {
16395                        if let Some(value) = &self.target_name {
16396                            ::fidl_next::wire::Envelope::encode_value::<
16397                                ::fidl_next::wire::String<'static>,
16398                                ___E,
16399                            >(
16400                                value, preallocated.encoder, &mut out, 100
16401                            )?;
16402                        } else {
16403                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
16404                        }
16405                    }
16406
16407                    4 => {
16408                        if let Some(value) = &self.target {
16409                            ::fidl_next::wire::Envelope::encode_value::<
16410                                crate::wire::Ref<'static>,
16411                                ___E,
16412                            >(
16413                                value, preallocated.encoder, &mut out, ()
16414                            )?;
16415                        } else {
16416                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
16417                        }
16418                    }
16419
16420                    3 => {
16421                        if let Some(value) = &self.scope {
16422                            ::fidl_next::wire::Envelope::encode_value::<
16423                                ::fidl_next::wire::Vector<'static, crate::wire::Ref<'static>>,
16424                                ___E,
16425                            >(
16426                                value, preallocated.encoder, &mut out, (4294967295, ())
16427                            )?;
16428                        } else {
16429                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
16430                        }
16431                    }
16432
16433                    2 => {
16434                        if let Some(value) = &self.source_name {
16435                            ::fidl_next::wire::Envelope::encode_value::<
16436                                ::fidl_next::wire::String<'static>,
16437                                ___E,
16438                            >(
16439                                value, preallocated.encoder, &mut out, 100
16440                            )?;
16441                        } else {
16442                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
16443                        }
16444                    }
16445
16446                    1 => {
16447                        if let Some(value) = &self.source {
16448                            ::fidl_next::wire::Envelope::encode_value::<
16449                                crate::wire::Ref<'static>,
16450                                ___E,
16451                            >(
16452                                value, preallocated.encoder, &mut out, ()
16453                            )?;
16454                        } else {
16455                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
16456                        }
16457                    }
16458
16459                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
16460                }
16461                unsafe {
16462                    preallocated.write_next(out.assume_init_ref());
16463                }
16464            }
16465
16466            ::fidl_next::wire::Table::encode_len(table, max_ord);
16467
16468            Ok(())
16469        }
16470    }
16471
16472    impl<'de> ::fidl_next::FromWire<crate::wire::OfferEventStream<'de>> for OfferEventStream {
16473        #[inline]
16474        fn from_wire(wire_: crate::wire::OfferEventStream<'de>) -> Self {
16475            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
16476
16477            let source = wire_.table.get(1);
16478
16479            let source_name = wire_.table.get(2);
16480
16481            let scope = wire_.table.get(3);
16482
16483            let target = wire_.table.get(4);
16484
16485            let target_name = wire_.table.get(5);
16486
16487            let availability = wire_.table.get(7);
16488
16489            Self {
16490
16491
16492                source: source.map(|envelope| ::fidl_next::FromWire::from_wire(
16493                    unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() }
16494                )),
16495
16496
16497                source_name: source_name.map(|envelope| ::fidl_next::FromWire::from_wire(
16498                    unsafe { envelope.read_unchecked::<::fidl_next::wire::String<'de>>() }
16499                )),
16500
16501
16502                scope: scope.map(|envelope| ::fidl_next::FromWire::from_wire(
16503                    unsafe { envelope.read_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::Ref<'de>>>() }
16504                )),
16505
16506
16507                target: target.map(|envelope| ::fidl_next::FromWire::from_wire(
16508                    unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() }
16509                )),
16510
16511
16512                target_name: target_name.map(|envelope| ::fidl_next::FromWire::from_wire(
16513                    unsafe { envelope.read_unchecked::<::fidl_next::wire::String<'de>>() }
16514                )),
16515
16516
16517                availability: availability.map(|envelope| ::fidl_next::FromWire::from_wire(
16518                    unsafe { envelope.read_unchecked::<crate::wire::Availability>() }
16519                )),
16520
16521        }
16522        }
16523    }
16524
16525    impl<'de> ::fidl_next::FromWireRef<crate::wire::OfferEventStream<'de>> for OfferEventStream {
16526        #[inline]
16527        fn from_wire_ref(wire: &crate::wire::OfferEventStream<'de>) -> Self {
16528            Self {
16529
16530
16531                source: wire.table.get(1)
16532                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
16533                        unsafe { envelope.deref_unchecked::<crate::wire::Ref<'de>>() }
16534                    )),
16535
16536
16537                source_name: wire.table.get(2)
16538                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
16539                        unsafe { envelope.deref_unchecked::<::fidl_next::wire::String<'de>>() }
16540                    )),
16541
16542
16543                scope: wire.table.get(3)
16544                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
16545                        unsafe { envelope.deref_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::Ref<'de>>>() }
16546                    )),
16547
16548
16549                target: wire.table.get(4)
16550                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
16551                        unsafe { envelope.deref_unchecked::<crate::wire::Ref<'de>>() }
16552                    )),
16553
16554
16555                target_name: wire.table.get(5)
16556                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
16557                        unsafe { envelope.deref_unchecked::<::fidl_next::wire::String<'de>>() }
16558                    )),
16559
16560
16561                availability: wire.table.get(7)
16562                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
16563                        unsafe { envelope.deref_unchecked::<crate::wire::Availability>() }
16564                    )),
16565
16566        }
16567        }
16568    }
16569
16570    #[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"]
16571    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
16572    pub struct OfferDictionary {
16573        pub source: ::core::option::Option<crate::natural::Ref>,
16574
16575        pub source_name: ::core::option::Option<::std::string::String>,
16576
16577        pub target: ::core::option::Option<crate::natural::Ref>,
16578
16579        pub target_name: ::core::option::Option<::std::string::String>,
16580
16581        pub dependency_type: ::core::option::Option<crate::natural::DependencyType>,
16582
16583        pub availability: ::core::option::Option<crate::natural::Availability>,
16584
16585        pub source_dictionary: ::core::option::Option<::std::string::String>,
16586    }
16587
16588    impl OfferDictionary {
16589        fn __max_ordinal(&self) -> usize {
16590            if self.source_dictionary.is_some() {
16591                return 7;
16592            }
16593
16594            if self.availability.is_some() {
16595                return 6;
16596            }
16597
16598            if self.dependency_type.is_some() {
16599                return 5;
16600            }
16601
16602            if self.target_name.is_some() {
16603                return 4;
16604            }
16605
16606            if self.target.is_some() {
16607                return 3;
16608            }
16609
16610            if self.source_name.is_some() {
16611                return 2;
16612            }
16613
16614            if self.source.is_some() {
16615                return 1;
16616            }
16617
16618            0
16619        }
16620    }
16621
16622    unsafe impl<___E> ::fidl_next::Encode<crate::wire::OfferDictionary<'static>, ___E>
16623        for OfferDictionary
16624    where
16625        ___E: ::fidl_next::Encoder + ?Sized,
16626    {
16627        #[inline]
16628        fn encode(
16629            mut self,
16630            encoder: &mut ___E,
16631            out: &mut ::core::mem::MaybeUninit<crate::wire::OfferDictionary<'static>>,
16632            _: (),
16633        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
16634            ::fidl_next::munge!(let crate::wire::OfferDictionary { table } = out);
16635
16636            let max_ord = self.__max_ordinal();
16637
16638            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
16639            ::fidl_next::Wire::zero_padding(&mut out);
16640
16641            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
16642                ::fidl_next::wire::Envelope,
16643            >(encoder, max_ord);
16644
16645            for i in 1..=max_ord {
16646                match i {
16647                    7 => {
16648                        if let Some(value) = self.source_dictionary.take() {
16649                            ::fidl_next::wire::Envelope::encode_value::<
16650                                ::fidl_next::wire::String<'static>,
16651                                ___E,
16652                            >(
16653                                value, preallocated.encoder, &mut out, 1024
16654                            )?;
16655                        } else {
16656                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
16657                        }
16658                    }
16659
16660                    6 => {
16661                        if let Some(value) = self.availability.take() {
16662                            ::fidl_next::wire::Envelope::encode_value::<
16663                                crate::wire::Availability,
16664                                ___E,
16665                            >(
16666                                value, preallocated.encoder, &mut out, ()
16667                            )?;
16668                        } else {
16669                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
16670                        }
16671                    }
16672
16673                    5 => {
16674                        if let Some(value) = self.dependency_type.take() {
16675                            ::fidl_next::wire::Envelope::encode_value::<
16676                                crate::wire::DependencyType,
16677                                ___E,
16678                            >(
16679                                value, preallocated.encoder, &mut out, ()
16680                            )?;
16681                        } else {
16682                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
16683                        }
16684                    }
16685
16686                    4 => {
16687                        if let Some(value) = self.target_name.take() {
16688                            ::fidl_next::wire::Envelope::encode_value::<
16689                                ::fidl_next::wire::String<'static>,
16690                                ___E,
16691                            >(
16692                                value, preallocated.encoder, &mut out, 100
16693                            )?;
16694                        } else {
16695                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
16696                        }
16697                    }
16698
16699                    3 => {
16700                        if let Some(value) = self.target.take() {
16701                            ::fidl_next::wire::Envelope::encode_value::<
16702                                crate::wire::Ref<'static>,
16703                                ___E,
16704                            >(
16705                                value, preallocated.encoder, &mut out, ()
16706                            )?;
16707                        } else {
16708                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
16709                        }
16710                    }
16711
16712                    2 => {
16713                        if let Some(value) = self.source_name.take() {
16714                            ::fidl_next::wire::Envelope::encode_value::<
16715                                ::fidl_next::wire::String<'static>,
16716                                ___E,
16717                            >(
16718                                value, preallocated.encoder, &mut out, 100
16719                            )?;
16720                        } else {
16721                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
16722                        }
16723                    }
16724
16725                    1 => {
16726                        if let Some(value) = self.source.take() {
16727                            ::fidl_next::wire::Envelope::encode_value::<
16728                                crate::wire::Ref<'static>,
16729                                ___E,
16730                            >(
16731                                value, preallocated.encoder, &mut out, ()
16732                            )?;
16733                        } else {
16734                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
16735                        }
16736                    }
16737
16738                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
16739                }
16740                unsafe {
16741                    preallocated.write_next(out.assume_init_ref());
16742                }
16743            }
16744
16745            ::fidl_next::wire::Table::encode_len(table, max_ord);
16746
16747            Ok(())
16748        }
16749    }
16750
16751    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::OfferDictionary<'static>, ___E>
16752        for &'a OfferDictionary
16753    where
16754        ___E: ::fidl_next::Encoder + ?Sized,
16755    {
16756        #[inline]
16757        fn encode(
16758            self,
16759            encoder: &mut ___E,
16760            out: &mut ::core::mem::MaybeUninit<crate::wire::OfferDictionary<'static>>,
16761            _: (),
16762        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
16763            ::fidl_next::munge!(let crate::wire::OfferDictionary { table } = out);
16764
16765            let max_ord = self.__max_ordinal();
16766
16767            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
16768            ::fidl_next::Wire::zero_padding(&mut out);
16769
16770            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
16771                ::fidl_next::wire::Envelope,
16772            >(encoder, max_ord);
16773
16774            for i in 1..=max_ord {
16775                match i {
16776                    7 => {
16777                        if let Some(value) = &self.source_dictionary {
16778                            ::fidl_next::wire::Envelope::encode_value::<
16779                                ::fidl_next::wire::String<'static>,
16780                                ___E,
16781                            >(
16782                                value, preallocated.encoder, &mut out, 1024
16783                            )?;
16784                        } else {
16785                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
16786                        }
16787                    }
16788
16789                    6 => {
16790                        if let Some(value) = &self.availability {
16791                            ::fidl_next::wire::Envelope::encode_value::<
16792                                crate::wire::Availability,
16793                                ___E,
16794                            >(
16795                                value, preallocated.encoder, &mut out, ()
16796                            )?;
16797                        } else {
16798                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
16799                        }
16800                    }
16801
16802                    5 => {
16803                        if let Some(value) = &self.dependency_type {
16804                            ::fidl_next::wire::Envelope::encode_value::<
16805                                crate::wire::DependencyType,
16806                                ___E,
16807                            >(
16808                                value, preallocated.encoder, &mut out, ()
16809                            )?;
16810                        } else {
16811                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
16812                        }
16813                    }
16814
16815                    4 => {
16816                        if let Some(value) = &self.target_name {
16817                            ::fidl_next::wire::Envelope::encode_value::<
16818                                ::fidl_next::wire::String<'static>,
16819                                ___E,
16820                            >(
16821                                value, preallocated.encoder, &mut out, 100
16822                            )?;
16823                        } else {
16824                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
16825                        }
16826                    }
16827
16828                    3 => {
16829                        if let Some(value) = &self.target {
16830                            ::fidl_next::wire::Envelope::encode_value::<
16831                                crate::wire::Ref<'static>,
16832                                ___E,
16833                            >(
16834                                value, preallocated.encoder, &mut out, ()
16835                            )?;
16836                        } else {
16837                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
16838                        }
16839                    }
16840
16841                    2 => {
16842                        if let Some(value) = &self.source_name {
16843                            ::fidl_next::wire::Envelope::encode_value::<
16844                                ::fidl_next::wire::String<'static>,
16845                                ___E,
16846                            >(
16847                                value, preallocated.encoder, &mut out, 100
16848                            )?;
16849                        } else {
16850                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
16851                        }
16852                    }
16853
16854                    1 => {
16855                        if let Some(value) = &self.source {
16856                            ::fidl_next::wire::Envelope::encode_value::<
16857                                crate::wire::Ref<'static>,
16858                                ___E,
16859                            >(
16860                                value, preallocated.encoder, &mut out, ()
16861                            )?;
16862                        } else {
16863                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
16864                        }
16865                    }
16866
16867                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
16868                }
16869                unsafe {
16870                    preallocated.write_next(out.assume_init_ref());
16871                }
16872            }
16873
16874            ::fidl_next::wire::Table::encode_len(table, max_ord);
16875
16876            Ok(())
16877        }
16878    }
16879
16880    impl<'de> ::fidl_next::FromWire<crate::wire::OfferDictionary<'de>> for OfferDictionary {
16881        #[inline]
16882        fn from_wire(wire_: crate::wire::OfferDictionary<'de>) -> Self {
16883            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
16884
16885            let source = wire_.table.get(1);
16886
16887            let source_name = wire_.table.get(2);
16888
16889            let target = wire_.table.get(3);
16890
16891            let target_name = wire_.table.get(4);
16892
16893            let dependency_type = wire_.table.get(5);
16894
16895            let availability = wire_.table.get(6);
16896
16897            let source_dictionary = wire_.table.get(7);
16898
16899            Self {
16900                source: source.map(|envelope| {
16901                    ::fidl_next::FromWire::from_wire(unsafe {
16902                        envelope.read_unchecked::<crate::wire::Ref<'de>>()
16903                    })
16904                }),
16905
16906                source_name: source_name.map(|envelope| {
16907                    ::fidl_next::FromWire::from_wire(unsafe {
16908                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
16909                    })
16910                }),
16911
16912                target: target.map(|envelope| {
16913                    ::fidl_next::FromWire::from_wire(unsafe {
16914                        envelope.read_unchecked::<crate::wire::Ref<'de>>()
16915                    })
16916                }),
16917
16918                target_name: target_name.map(|envelope| {
16919                    ::fidl_next::FromWire::from_wire(unsafe {
16920                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
16921                    })
16922                }),
16923
16924                dependency_type: dependency_type.map(|envelope| {
16925                    ::fidl_next::FromWire::from_wire(unsafe {
16926                        envelope.read_unchecked::<crate::wire::DependencyType>()
16927                    })
16928                }),
16929
16930                availability: availability.map(|envelope| {
16931                    ::fidl_next::FromWire::from_wire(unsafe {
16932                        envelope.read_unchecked::<crate::wire::Availability>()
16933                    })
16934                }),
16935
16936                source_dictionary: source_dictionary.map(|envelope| {
16937                    ::fidl_next::FromWire::from_wire(unsafe {
16938                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
16939                    })
16940                }),
16941            }
16942        }
16943    }
16944
16945    impl<'de> ::fidl_next::FromWireRef<crate::wire::OfferDictionary<'de>> for OfferDictionary {
16946        #[inline]
16947        fn from_wire_ref(wire: &crate::wire::OfferDictionary<'de>) -> Self {
16948            Self {
16949                source: wire.table.get(1).map(|envelope| {
16950                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
16951                        envelope.deref_unchecked::<crate::wire::Ref<'de>>()
16952                    })
16953                }),
16954
16955                source_name: wire.table.get(2).map(|envelope| {
16956                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
16957                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
16958                    })
16959                }),
16960
16961                target: wire.table.get(3).map(|envelope| {
16962                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
16963                        envelope.deref_unchecked::<crate::wire::Ref<'de>>()
16964                    })
16965                }),
16966
16967                target_name: wire.table.get(4).map(|envelope| {
16968                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
16969                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
16970                    })
16971                }),
16972
16973                dependency_type: wire.table.get(5).map(|envelope| {
16974                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
16975                        envelope.deref_unchecked::<crate::wire::DependencyType>()
16976                    })
16977                }),
16978
16979                availability: wire.table.get(6).map(|envelope| {
16980                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
16981                        envelope.deref_unchecked::<crate::wire::Availability>()
16982                    })
16983                }),
16984
16985                source_dictionary: wire.table.get(7).map(|envelope| {
16986                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
16987                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
16988                    })
16989                }),
16990            }
16991        }
16992    }
16993
16994    #[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"]
16995    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
16996    pub struct OfferConfiguration {
16997        pub source: ::core::option::Option<crate::natural::Ref>,
16998
16999        pub source_name: ::core::option::Option<::std::string::String>,
17000
17001        pub target: ::core::option::Option<crate::natural::Ref>,
17002
17003        pub target_name: ::core::option::Option<::std::string::String>,
17004
17005        pub availability: ::core::option::Option<crate::natural::Availability>,
17006
17007        pub source_dictionary: ::core::option::Option<::std::string::String>,
17008    }
17009
17010    impl OfferConfiguration {
17011        fn __max_ordinal(&self) -> usize {
17012            if self.source_dictionary.is_some() {
17013                return 6;
17014            }
17015
17016            if self.availability.is_some() {
17017                return 5;
17018            }
17019
17020            if self.target_name.is_some() {
17021                return 4;
17022            }
17023
17024            if self.target.is_some() {
17025                return 3;
17026            }
17027
17028            if self.source_name.is_some() {
17029                return 2;
17030            }
17031
17032            if self.source.is_some() {
17033                return 1;
17034            }
17035
17036            0
17037        }
17038    }
17039
17040    unsafe impl<___E> ::fidl_next::Encode<crate::wire::OfferConfiguration<'static>, ___E>
17041        for OfferConfiguration
17042    where
17043        ___E: ::fidl_next::Encoder + ?Sized,
17044    {
17045        #[inline]
17046        fn encode(
17047            mut self,
17048            encoder: &mut ___E,
17049            out: &mut ::core::mem::MaybeUninit<crate::wire::OfferConfiguration<'static>>,
17050            _: (),
17051        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
17052            ::fidl_next::munge!(let crate::wire::OfferConfiguration { table } = out);
17053
17054            let max_ord = self.__max_ordinal();
17055
17056            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
17057            ::fidl_next::Wire::zero_padding(&mut out);
17058
17059            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
17060                ::fidl_next::wire::Envelope,
17061            >(encoder, max_ord);
17062
17063            for i in 1..=max_ord {
17064                match i {
17065                    6 => {
17066                        if let Some(value) = self.source_dictionary.take() {
17067                            ::fidl_next::wire::Envelope::encode_value::<
17068                                ::fidl_next::wire::String<'static>,
17069                                ___E,
17070                            >(
17071                                value, preallocated.encoder, &mut out, 1024
17072                            )?;
17073                        } else {
17074                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
17075                        }
17076                    }
17077
17078                    5 => {
17079                        if let Some(value) = self.availability.take() {
17080                            ::fidl_next::wire::Envelope::encode_value::<
17081                                crate::wire::Availability,
17082                                ___E,
17083                            >(
17084                                value, preallocated.encoder, &mut out, ()
17085                            )?;
17086                        } else {
17087                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
17088                        }
17089                    }
17090
17091                    4 => {
17092                        if let Some(value) = self.target_name.take() {
17093                            ::fidl_next::wire::Envelope::encode_value::<
17094                                ::fidl_next::wire::String<'static>,
17095                                ___E,
17096                            >(
17097                                value, preallocated.encoder, &mut out, 100
17098                            )?;
17099                        } else {
17100                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
17101                        }
17102                    }
17103
17104                    3 => {
17105                        if let Some(value) = self.target.take() {
17106                            ::fidl_next::wire::Envelope::encode_value::<
17107                                crate::wire::Ref<'static>,
17108                                ___E,
17109                            >(
17110                                value, preallocated.encoder, &mut out, ()
17111                            )?;
17112                        } else {
17113                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
17114                        }
17115                    }
17116
17117                    2 => {
17118                        if let Some(value) = self.source_name.take() {
17119                            ::fidl_next::wire::Envelope::encode_value::<
17120                                ::fidl_next::wire::String<'static>,
17121                                ___E,
17122                            >(
17123                                value, preallocated.encoder, &mut out, 100
17124                            )?;
17125                        } else {
17126                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
17127                        }
17128                    }
17129
17130                    1 => {
17131                        if let Some(value) = self.source.take() {
17132                            ::fidl_next::wire::Envelope::encode_value::<
17133                                crate::wire::Ref<'static>,
17134                                ___E,
17135                            >(
17136                                value, preallocated.encoder, &mut out, ()
17137                            )?;
17138                        } else {
17139                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
17140                        }
17141                    }
17142
17143                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
17144                }
17145                unsafe {
17146                    preallocated.write_next(out.assume_init_ref());
17147                }
17148            }
17149
17150            ::fidl_next::wire::Table::encode_len(table, max_ord);
17151
17152            Ok(())
17153        }
17154    }
17155
17156    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::OfferConfiguration<'static>, ___E>
17157        for &'a OfferConfiguration
17158    where
17159        ___E: ::fidl_next::Encoder + ?Sized,
17160    {
17161        #[inline]
17162        fn encode(
17163            self,
17164            encoder: &mut ___E,
17165            out: &mut ::core::mem::MaybeUninit<crate::wire::OfferConfiguration<'static>>,
17166            _: (),
17167        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
17168            ::fidl_next::munge!(let crate::wire::OfferConfiguration { table } = out);
17169
17170            let max_ord = self.__max_ordinal();
17171
17172            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
17173            ::fidl_next::Wire::zero_padding(&mut out);
17174
17175            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
17176                ::fidl_next::wire::Envelope,
17177            >(encoder, max_ord);
17178
17179            for i in 1..=max_ord {
17180                match i {
17181                    6 => {
17182                        if let Some(value) = &self.source_dictionary {
17183                            ::fidl_next::wire::Envelope::encode_value::<
17184                                ::fidl_next::wire::String<'static>,
17185                                ___E,
17186                            >(
17187                                value, preallocated.encoder, &mut out, 1024
17188                            )?;
17189                        } else {
17190                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
17191                        }
17192                    }
17193
17194                    5 => {
17195                        if let Some(value) = &self.availability {
17196                            ::fidl_next::wire::Envelope::encode_value::<
17197                                crate::wire::Availability,
17198                                ___E,
17199                            >(
17200                                value, preallocated.encoder, &mut out, ()
17201                            )?;
17202                        } else {
17203                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
17204                        }
17205                    }
17206
17207                    4 => {
17208                        if let Some(value) = &self.target_name {
17209                            ::fidl_next::wire::Envelope::encode_value::<
17210                                ::fidl_next::wire::String<'static>,
17211                                ___E,
17212                            >(
17213                                value, preallocated.encoder, &mut out, 100
17214                            )?;
17215                        } else {
17216                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
17217                        }
17218                    }
17219
17220                    3 => {
17221                        if let Some(value) = &self.target {
17222                            ::fidl_next::wire::Envelope::encode_value::<
17223                                crate::wire::Ref<'static>,
17224                                ___E,
17225                            >(
17226                                value, preallocated.encoder, &mut out, ()
17227                            )?;
17228                        } else {
17229                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
17230                        }
17231                    }
17232
17233                    2 => {
17234                        if let Some(value) = &self.source_name {
17235                            ::fidl_next::wire::Envelope::encode_value::<
17236                                ::fidl_next::wire::String<'static>,
17237                                ___E,
17238                            >(
17239                                value, preallocated.encoder, &mut out, 100
17240                            )?;
17241                        } else {
17242                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
17243                        }
17244                    }
17245
17246                    1 => {
17247                        if let Some(value) = &self.source {
17248                            ::fidl_next::wire::Envelope::encode_value::<
17249                                crate::wire::Ref<'static>,
17250                                ___E,
17251                            >(
17252                                value, preallocated.encoder, &mut out, ()
17253                            )?;
17254                        } else {
17255                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
17256                        }
17257                    }
17258
17259                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
17260                }
17261                unsafe {
17262                    preallocated.write_next(out.assume_init_ref());
17263                }
17264            }
17265
17266            ::fidl_next::wire::Table::encode_len(table, max_ord);
17267
17268            Ok(())
17269        }
17270    }
17271
17272    impl<'de> ::fidl_next::FromWire<crate::wire::OfferConfiguration<'de>> for OfferConfiguration {
17273        #[inline]
17274        fn from_wire(wire_: crate::wire::OfferConfiguration<'de>) -> Self {
17275            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
17276
17277            let source = wire_.table.get(1);
17278
17279            let source_name = wire_.table.get(2);
17280
17281            let target = wire_.table.get(3);
17282
17283            let target_name = wire_.table.get(4);
17284
17285            let availability = wire_.table.get(5);
17286
17287            let source_dictionary = wire_.table.get(6);
17288
17289            Self {
17290                source: source.map(|envelope| {
17291                    ::fidl_next::FromWire::from_wire(unsafe {
17292                        envelope.read_unchecked::<crate::wire::Ref<'de>>()
17293                    })
17294                }),
17295
17296                source_name: source_name.map(|envelope| {
17297                    ::fidl_next::FromWire::from_wire(unsafe {
17298                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
17299                    })
17300                }),
17301
17302                target: target.map(|envelope| {
17303                    ::fidl_next::FromWire::from_wire(unsafe {
17304                        envelope.read_unchecked::<crate::wire::Ref<'de>>()
17305                    })
17306                }),
17307
17308                target_name: target_name.map(|envelope| {
17309                    ::fidl_next::FromWire::from_wire(unsafe {
17310                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
17311                    })
17312                }),
17313
17314                availability: availability.map(|envelope| {
17315                    ::fidl_next::FromWire::from_wire(unsafe {
17316                        envelope.read_unchecked::<crate::wire::Availability>()
17317                    })
17318                }),
17319
17320                source_dictionary: source_dictionary.map(|envelope| {
17321                    ::fidl_next::FromWire::from_wire(unsafe {
17322                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
17323                    })
17324                }),
17325            }
17326        }
17327    }
17328
17329    impl<'de> ::fidl_next::FromWireRef<crate::wire::OfferConfiguration<'de>> for OfferConfiguration {
17330        #[inline]
17331        fn from_wire_ref(wire: &crate::wire::OfferConfiguration<'de>) -> Self {
17332            Self {
17333                source: wire.table.get(1).map(|envelope| {
17334                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
17335                        envelope.deref_unchecked::<crate::wire::Ref<'de>>()
17336                    })
17337                }),
17338
17339                source_name: wire.table.get(2).map(|envelope| {
17340                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
17341                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
17342                    })
17343                }),
17344
17345                target: wire.table.get(3).map(|envelope| {
17346                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
17347                        envelope.deref_unchecked::<crate::wire::Ref<'de>>()
17348                    })
17349                }),
17350
17351                target_name: wire.table.get(4).map(|envelope| {
17352                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
17353                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
17354                    })
17355                }),
17356
17357                availability: wire.table.get(5).map(|envelope| {
17358                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
17359                        envelope.deref_unchecked::<crate::wire::Availability>()
17360                    })
17361                }),
17362
17363                source_dictionary: wire.table.get(6).map(|envelope| {
17364                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
17365                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
17366                    })
17367                }),
17368            }
17369        }
17370    }
17371
17372    #[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"]
17373    #[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
17374    pub enum Offer {
17375        Service(crate::natural::OfferService),
17376
17377        Protocol(crate::natural::OfferProtocol),
17378
17379        Directory(crate::natural::OfferDirectory),
17380
17381        Storage(crate::natural::OfferStorage),
17382
17383        Runner(crate::natural::OfferRunner),
17384
17385        Resolver(crate::natural::OfferResolver),
17386
17387        EventStream(crate::natural::OfferEventStream),
17388
17389        Dictionary(crate::natural::OfferDictionary),
17390
17391        Config(crate::natural::OfferConfiguration),
17392
17393        UnknownOrdinal_(u64),
17394    }
17395
17396    impl Offer {
17397        pub fn is_unknown(&self) -> bool {
17398            #[allow(unreachable_patterns)]
17399            match self {
17400                Self::UnknownOrdinal_(_) => true,
17401                _ => false,
17402            }
17403        }
17404    }
17405
17406    unsafe impl<___E> ::fidl_next::Encode<crate::wire::Offer<'static>, ___E> for Offer
17407    where
17408        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
17409        ___E: ::fidl_next::Encoder,
17410    {
17411        #[inline]
17412        fn encode(
17413            self,
17414            encoder: &mut ___E,
17415            out: &mut ::core::mem::MaybeUninit<crate::wire::Offer<'static>>,
17416            _: (),
17417        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
17418            ::fidl_next::munge!(let crate::wire::Offer { raw, _phantom: _ } = out);
17419
17420            match self {
17421                Self::Service(value) => ::fidl_next::wire::Union::encode_as::<
17422                    ___E,
17423                    crate::wire::OfferService<'static>,
17424                >(value, 1, encoder, raw, ())?,
17425
17426                Self::Protocol(value) => ::fidl_next::wire::Union::encode_as::<
17427                    ___E,
17428                    crate::wire::OfferProtocol<'static>,
17429                >(value, 2, encoder, raw, ())?,
17430
17431                Self::Directory(value) => ::fidl_next::wire::Union::encode_as::<
17432                    ___E,
17433                    crate::wire::OfferDirectory<'static>,
17434                >(value, 3, encoder, raw, ())?,
17435
17436                Self::Storage(value) => ::fidl_next::wire::Union::encode_as::<
17437                    ___E,
17438                    crate::wire::OfferStorage<'static>,
17439                >(value, 4, encoder, raw, ())?,
17440
17441                Self::Runner(value) => ::fidl_next::wire::Union::encode_as::<
17442                    ___E,
17443                    crate::wire::OfferRunner<'static>,
17444                >(value, 5, encoder, raw, ())?,
17445
17446                Self::Resolver(value) => ::fidl_next::wire::Union::encode_as::<
17447                    ___E,
17448                    crate::wire::OfferResolver<'static>,
17449                >(value, 6, encoder, raw, ())?,
17450
17451                Self::EventStream(value) => ::fidl_next::wire::Union::encode_as::<
17452                    ___E,
17453                    crate::wire::OfferEventStream<'static>,
17454                >(value, 8, encoder, raw, ())?,
17455
17456                Self::Dictionary(value) => ::fidl_next::wire::Union::encode_as::<
17457                    ___E,
17458                    crate::wire::OfferDictionary<'static>,
17459                >(value, 9, encoder, raw, ())?,
17460
17461                Self::Config(value) => ::fidl_next::wire::Union::encode_as::<
17462                    ___E,
17463                    crate::wire::OfferConfiguration<'static>,
17464                >(value, 10, encoder, raw, ())?,
17465
17466                Self::UnknownOrdinal_(ordinal) => {
17467                    return Err(::fidl_next::EncodeError::UnknownUnionOrdinal(ordinal as usize));
17468                }
17469            }
17470
17471            Ok(())
17472        }
17473    }
17474
17475    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::Offer<'static>, ___E> for &'a Offer
17476    where
17477        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
17478        ___E: ::fidl_next::Encoder,
17479    {
17480        #[inline]
17481        fn encode(
17482            self,
17483            encoder: &mut ___E,
17484            out: &mut ::core::mem::MaybeUninit<crate::wire::Offer<'static>>,
17485            _: (),
17486        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
17487            ::fidl_next::munge!(let crate::wire::Offer { raw, _phantom: _ } = out);
17488
17489            match self {
17490                Offer::Service(value) => ::fidl_next::wire::Union::encode_as::<
17491                    ___E,
17492                    crate::wire::OfferService<'static>,
17493                >(value, 1, encoder, raw, ())?,
17494
17495                Offer::Protocol(value) => ::fidl_next::wire::Union::encode_as::<
17496                    ___E,
17497                    crate::wire::OfferProtocol<'static>,
17498                >(value, 2, encoder, raw, ())?,
17499
17500                Offer::Directory(value) => ::fidl_next::wire::Union::encode_as::<
17501                    ___E,
17502                    crate::wire::OfferDirectory<'static>,
17503                >(value, 3, encoder, raw, ())?,
17504
17505                Offer::Storage(value) => ::fidl_next::wire::Union::encode_as::<
17506                    ___E,
17507                    crate::wire::OfferStorage<'static>,
17508                >(value, 4, encoder, raw, ())?,
17509
17510                Offer::Runner(value) => ::fidl_next::wire::Union::encode_as::<
17511                    ___E,
17512                    crate::wire::OfferRunner<'static>,
17513                >(value, 5, encoder, raw, ())?,
17514
17515                Offer::Resolver(value) => ::fidl_next::wire::Union::encode_as::<
17516                    ___E,
17517                    crate::wire::OfferResolver<'static>,
17518                >(value, 6, encoder, raw, ())?,
17519
17520                Offer::EventStream(value) => ::fidl_next::wire::Union::encode_as::<
17521                    ___E,
17522                    crate::wire::OfferEventStream<'static>,
17523                >(value, 8, encoder, raw, ())?,
17524
17525                Offer::Dictionary(value) => ::fidl_next::wire::Union::encode_as::<
17526                    ___E,
17527                    crate::wire::OfferDictionary<'static>,
17528                >(value, 9, encoder, raw, ())?,
17529
17530                Offer::Config(value) => ::fidl_next::wire::Union::encode_as::<
17531                    ___E,
17532                    crate::wire::OfferConfiguration<'static>,
17533                >(value, 10, encoder, raw, ())?,
17534
17535                Offer::UnknownOrdinal_(ordinal) => {
17536                    return Err(::fidl_next::EncodeError::UnknownUnionOrdinal(*ordinal as usize));
17537                }
17538            }
17539
17540            Ok(())
17541        }
17542    }
17543
17544    unsafe impl<___E> ::fidl_next::EncodeOption<crate::wire_optional::Offer<'static>, ___E> for Offer
17545    where
17546        ___E: ?Sized,
17547        Offer: ::fidl_next::Encode<crate::wire::Offer<'static>, ___E>,
17548    {
17549        #[inline]
17550        fn encode_option(
17551            this: ::core::option::Option<Self>,
17552            encoder: &mut ___E,
17553            out: &mut ::core::mem::MaybeUninit<crate::wire_optional::Offer<'static>>,
17554            _: (),
17555        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
17556            ::fidl_next::munge!(let crate::wire_optional::Offer { raw, _phantom: _ } = &mut *out);
17557
17558            if let Some(inner) = this {
17559                let value_out = unsafe { &mut *out.as_mut_ptr().cast() };
17560                ::fidl_next::Encode::encode(inner, encoder, value_out, ())?;
17561            } else {
17562                ::fidl_next::wire::Union::encode_absent(raw);
17563            }
17564
17565            Ok(())
17566        }
17567    }
17568
17569    unsafe impl<'a, ___E> ::fidl_next::EncodeOption<crate::wire_optional::Offer<'static>, ___E>
17570        for &'a Offer
17571    where
17572        ___E: ?Sized,
17573        &'a Offer: ::fidl_next::Encode<crate::wire::Offer<'static>, ___E>,
17574    {
17575        #[inline]
17576        fn encode_option(
17577            this: ::core::option::Option<Self>,
17578            encoder: &mut ___E,
17579            out: &mut ::core::mem::MaybeUninit<crate::wire_optional::Offer<'static>>,
17580            _: (),
17581        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
17582            ::fidl_next::munge!(let crate::wire_optional::Offer { raw, _phantom: _ } = &mut *out);
17583
17584            if let Some(inner) = this {
17585                let value_out = unsafe { &mut *out.as_mut_ptr().cast() };
17586                ::fidl_next::Encode::encode(inner, encoder, value_out, ())?;
17587            } else {
17588                ::fidl_next::wire::Union::encode_absent(raw);
17589            }
17590
17591            Ok(())
17592        }
17593    }
17594
17595    impl<'de> ::fidl_next::FromWire<crate::wire::Offer<'de>> for Offer {
17596        #[inline]
17597        fn from_wire(wire: crate::wire::Offer<'de>) -> Self {
17598            let wire = ::core::mem::ManuallyDrop::new(wire);
17599            match wire.raw.ordinal() {
17600                1 => Self::Service(::fidl_next::FromWire::from_wire(unsafe {
17601                    wire.raw.get().read_unchecked::<crate::wire::OfferService<'de>>()
17602                })),
17603
17604                2 => Self::Protocol(::fidl_next::FromWire::from_wire(unsafe {
17605                    wire.raw.get().read_unchecked::<crate::wire::OfferProtocol<'de>>()
17606                })),
17607
17608                3 => Self::Directory(::fidl_next::FromWire::from_wire(unsafe {
17609                    wire.raw.get().read_unchecked::<crate::wire::OfferDirectory<'de>>()
17610                })),
17611
17612                4 => Self::Storage(::fidl_next::FromWire::from_wire(unsafe {
17613                    wire.raw.get().read_unchecked::<crate::wire::OfferStorage<'de>>()
17614                })),
17615
17616                5 => Self::Runner(::fidl_next::FromWire::from_wire(unsafe {
17617                    wire.raw.get().read_unchecked::<crate::wire::OfferRunner<'de>>()
17618                })),
17619
17620                6 => Self::Resolver(::fidl_next::FromWire::from_wire(unsafe {
17621                    wire.raw.get().read_unchecked::<crate::wire::OfferResolver<'de>>()
17622                })),
17623
17624                8 => Self::EventStream(::fidl_next::FromWire::from_wire(unsafe {
17625                    wire.raw.get().read_unchecked::<crate::wire::OfferEventStream<'de>>()
17626                })),
17627
17628                9 => Self::Dictionary(::fidl_next::FromWire::from_wire(unsafe {
17629                    wire.raw.get().read_unchecked::<crate::wire::OfferDictionary<'de>>()
17630                })),
17631
17632                10 => Self::Config(::fidl_next::FromWire::from_wire(unsafe {
17633                    wire.raw.get().read_unchecked::<crate::wire::OfferConfiguration<'de>>()
17634                })),
17635
17636                ord => return Self::UnknownOrdinal_(ord as u64),
17637            }
17638        }
17639    }
17640
17641    impl<'de> ::fidl_next::FromWireRef<crate::wire::Offer<'de>> for Offer {
17642        #[inline]
17643        fn from_wire_ref(wire: &crate::wire::Offer<'de>) -> Self {
17644            match wire.raw.ordinal() {
17645                1 => Self::Service(::fidl_next::FromWireRef::from_wire_ref(unsafe {
17646                    wire.raw.get().deref_unchecked::<crate::wire::OfferService<'de>>()
17647                })),
17648
17649                2 => Self::Protocol(::fidl_next::FromWireRef::from_wire_ref(unsafe {
17650                    wire.raw.get().deref_unchecked::<crate::wire::OfferProtocol<'de>>()
17651                })),
17652
17653                3 => Self::Directory(::fidl_next::FromWireRef::from_wire_ref(unsafe {
17654                    wire.raw.get().deref_unchecked::<crate::wire::OfferDirectory<'de>>()
17655                })),
17656
17657                4 => Self::Storage(::fidl_next::FromWireRef::from_wire_ref(unsafe {
17658                    wire.raw.get().deref_unchecked::<crate::wire::OfferStorage<'de>>()
17659                })),
17660
17661                5 => Self::Runner(::fidl_next::FromWireRef::from_wire_ref(unsafe {
17662                    wire.raw.get().deref_unchecked::<crate::wire::OfferRunner<'de>>()
17663                })),
17664
17665                6 => Self::Resolver(::fidl_next::FromWireRef::from_wire_ref(unsafe {
17666                    wire.raw.get().deref_unchecked::<crate::wire::OfferResolver<'de>>()
17667                })),
17668
17669                8 => Self::EventStream(::fidl_next::FromWireRef::from_wire_ref(unsafe {
17670                    wire.raw.get().deref_unchecked::<crate::wire::OfferEventStream<'de>>()
17671                })),
17672
17673                9 => Self::Dictionary(::fidl_next::FromWireRef::from_wire_ref(unsafe {
17674                    wire.raw.get().deref_unchecked::<crate::wire::OfferDictionary<'de>>()
17675                })),
17676
17677                10 => Self::Config(::fidl_next::FromWireRef::from_wire_ref(unsafe {
17678                    wire.raw.get().deref_unchecked::<crate::wire::OfferConfiguration<'de>>()
17679                })),
17680
17681                ord => return Self::UnknownOrdinal_(ord as u64),
17682            }
17683        }
17684    }
17685
17686    impl<'de> ::fidl_next::FromWireOption<crate::wire_optional::Offer<'de>> for Offer {
17687        #[inline]
17688        fn from_wire_option(
17689            wire: crate::wire_optional::Offer<'de>,
17690        ) -> ::core::option::Option<Self> {
17691            if let Some(inner) = wire.into_option() {
17692                Some(::fidl_next::FromWire::from_wire(inner))
17693            } else {
17694                None
17695            }
17696        }
17697    }
17698
17699    impl<'de> ::fidl_next::FromWireOption<crate::wire_optional::Offer<'de>> for Box<Offer> {
17700        #[inline]
17701        fn from_wire_option(
17702            wire: crate::wire_optional::Offer<'de>,
17703        ) -> ::core::option::Option<Self> {
17704            <
17705            Offer as ::fidl_next::FromWireOption<crate::wire_optional::Offer<'de>>
17706        >::from_wire_option(wire).map(Box::new)
17707        }
17708    }
17709
17710    impl<'de> ::fidl_next::FromWireOptionRef<crate::wire_optional::Offer<'de>> for Box<Offer> {
17711        #[inline]
17712        fn from_wire_option_ref(
17713            wire: &crate::wire_optional::Offer<'de>,
17714        ) -> ::core::option::Option<Self> {
17715            if let Some(inner) = wire.as_ref() {
17716                Some(Box::new(::fidl_next::FromWireRef::from_wire_ref(inner)))
17717            } else {
17718                None
17719            }
17720        }
17721    }
17722
17723    #[doc = " A repository of the runners available in an environment.\n"]
17724    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
17725    pub struct RunnerRegistration {
17726        pub source_name: ::core::option::Option<::std::string::String>,
17727
17728        pub source: ::core::option::Option<crate::natural::Ref>,
17729
17730        pub target_name: ::core::option::Option<::std::string::String>,
17731    }
17732
17733    impl RunnerRegistration {
17734        fn __max_ordinal(&self) -> usize {
17735            if self.target_name.is_some() {
17736                return 3;
17737            }
17738
17739            if self.source.is_some() {
17740                return 2;
17741            }
17742
17743            if self.source_name.is_some() {
17744                return 1;
17745            }
17746
17747            0
17748        }
17749    }
17750
17751    unsafe impl<___E> ::fidl_next::Encode<crate::wire::RunnerRegistration<'static>, ___E>
17752        for RunnerRegistration
17753    where
17754        ___E: ::fidl_next::Encoder + ?Sized,
17755    {
17756        #[inline]
17757        fn encode(
17758            mut self,
17759            encoder: &mut ___E,
17760            out: &mut ::core::mem::MaybeUninit<crate::wire::RunnerRegistration<'static>>,
17761            _: (),
17762        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
17763            ::fidl_next::munge!(let crate::wire::RunnerRegistration { table } = out);
17764
17765            let max_ord = self.__max_ordinal();
17766
17767            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
17768            ::fidl_next::Wire::zero_padding(&mut out);
17769
17770            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
17771                ::fidl_next::wire::Envelope,
17772            >(encoder, max_ord);
17773
17774            for i in 1..=max_ord {
17775                match i {
17776                    3 => {
17777                        if let Some(value) = self.target_name.take() {
17778                            ::fidl_next::wire::Envelope::encode_value::<
17779                                ::fidl_next::wire::String<'static>,
17780                                ___E,
17781                            >(
17782                                value, preallocated.encoder, &mut out, 100
17783                            )?;
17784                        } else {
17785                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
17786                        }
17787                    }
17788
17789                    2 => {
17790                        if let Some(value) = self.source.take() {
17791                            ::fidl_next::wire::Envelope::encode_value::<
17792                                crate::wire::Ref<'static>,
17793                                ___E,
17794                            >(
17795                                value, preallocated.encoder, &mut out, ()
17796                            )?;
17797                        } else {
17798                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
17799                        }
17800                    }
17801
17802                    1 => {
17803                        if let Some(value) = self.source_name.take() {
17804                            ::fidl_next::wire::Envelope::encode_value::<
17805                                ::fidl_next::wire::String<'static>,
17806                                ___E,
17807                            >(
17808                                value, preallocated.encoder, &mut out, 100
17809                            )?;
17810                        } else {
17811                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
17812                        }
17813                    }
17814
17815                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
17816                }
17817                unsafe {
17818                    preallocated.write_next(out.assume_init_ref());
17819                }
17820            }
17821
17822            ::fidl_next::wire::Table::encode_len(table, max_ord);
17823
17824            Ok(())
17825        }
17826    }
17827
17828    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::RunnerRegistration<'static>, ___E>
17829        for &'a RunnerRegistration
17830    where
17831        ___E: ::fidl_next::Encoder + ?Sized,
17832    {
17833        #[inline]
17834        fn encode(
17835            self,
17836            encoder: &mut ___E,
17837            out: &mut ::core::mem::MaybeUninit<crate::wire::RunnerRegistration<'static>>,
17838            _: (),
17839        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
17840            ::fidl_next::munge!(let crate::wire::RunnerRegistration { table } = out);
17841
17842            let max_ord = self.__max_ordinal();
17843
17844            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
17845            ::fidl_next::Wire::zero_padding(&mut out);
17846
17847            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
17848                ::fidl_next::wire::Envelope,
17849            >(encoder, max_ord);
17850
17851            for i in 1..=max_ord {
17852                match i {
17853                    3 => {
17854                        if let Some(value) = &self.target_name {
17855                            ::fidl_next::wire::Envelope::encode_value::<
17856                                ::fidl_next::wire::String<'static>,
17857                                ___E,
17858                            >(
17859                                value, preallocated.encoder, &mut out, 100
17860                            )?;
17861                        } else {
17862                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
17863                        }
17864                    }
17865
17866                    2 => {
17867                        if let Some(value) = &self.source {
17868                            ::fidl_next::wire::Envelope::encode_value::<
17869                                crate::wire::Ref<'static>,
17870                                ___E,
17871                            >(
17872                                value, preallocated.encoder, &mut out, ()
17873                            )?;
17874                        } else {
17875                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
17876                        }
17877                    }
17878
17879                    1 => {
17880                        if let Some(value) = &self.source_name {
17881                            ::fidl_next::wire::Envelope::encode_value::<
17882                                ::fidl_next::wire::String<'static>,
17883                                ___E,
17884                            >(
17885                                value, preallocated.encoder, &mut out, 100
17886                            )?;
17887                        } else {
17888                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
17889                        }
17890                    }
17891
17892                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
17893                }
17894                unsafe {
17895                    preallocated.write_next(out.assume_init_ref());
17896                }
17897            }
17898
17899            ::fidl_next::wire::Table::encode_len(table, max_ord);
17900
17901            Ok(())
17902        }
17903    }
17904
17905    impl<'de> ::fidl_next::FromWire<crate::wire::RunnerRegistration<'de>> for RunnerRegistration {
17906        #[inline]
17907        fn from_wire(wire_: crate::wire::RunnerRegistration<'de>) -> Self {
17908            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
17909
17910            let source_name = wire_.table.get(1);
17911
17912            let source = wire_.table.get(2);
17913
17914            let target_name = wire_.table.get(3);
17915
17916            Self {
17917                source_name: source_name.map(|envelope| {
17918                    ::fidl_next::FromWire::from_wire(unsafe {
17919                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
17920                    })
17921                }),
17922
17923                source: source.map(|envelope| {
17924                    ::fidl_next::FromWire::from_wire(unsafe {
17925                        envelope.read_unchecked::<crate::wire::Ref<'de>>()
17926                    })
17927                }),
17928
17929                target_name: target_name.map(|envelope| {
17930                    ::fidl_next::FromWire::from_wire(unsafe {
17931                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
17932                    })
17933                }),
17934            }
17935        }
17936    }
17937
17938    impl<'de> ::fidl_next::FromWireRef<crate::wire::RunnerRegistration<'de>> for RunnerRegistration {
17939        #[inline]
17940        fn from_wire_ref(wire: &crate::wire::RunnerRegistration<'de>) -> Self {
17941            Self {
17942                source_name: wire.table.get(1).map(|envelope| {
17943                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
17944                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
17945                    })
17946                }),
17947
17948                source: wire.table.get(2).map(|envelope| {
17949                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
17950                        envelope.deref_unchecked::<crate::wire::Ref<'de>>()
17951                    })
17952                }),
17953
17954                target_name: wire.table.get(3).map(|envelope| {
17955                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
17956                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
17957                    })
17958                }),
17959            }
17960        }
17961    }
17962
17963    #[doc = " A mapping of URL scheme to resolver name.\n"]
17964    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
17965    pub struct ResolverRegistration {
17966        pub resolver: ::core::option::Option<::std::string::String>,
17967
17968        pub source: ::core::option::Option<crate::natural::Ref>,
17969
17970        pub scheme: ::core::option::Option<::std::string::String>,
17971    }
17972
17973    impl ResolverRegistration {
17974        fn __max_ordinal(&self) -> usize {
17975            if self.scheme.is_some() {
17976                return 3;
17977            }
17978
17979            if self.source.is_some() {
17980                return 2;
17981            }
17982
17983            if self.resolver.is_some() {
17984                return 1;
17985            }
17986
17987            0
17988        }
17989    }
17990
17991    unsafe impl<___E> ::fidl_next::Encode<crate::wire::ResolverRegistration<'static>, ___E>
17992        for ResolverRegistration
17993    where
17994        ___E: ::fidl_next::Encoder + ?Sized,
17995    {
17996        #[inline]
17997        fn encode(
17998            mut self,
17999            encoder: &mut ___E,
18000            out: &mut ::core::mem::MaybeUninit<crate::wire::ResolverRegistration<'static>>,
18001            _: (),
18002        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
18003            ::fidl_next::munge!(let crate::wire::ResolverRegistration { table } = out);
18004
18005            let max_ord = self.__max_ordinal();
18006
18007            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
18008            ::fidl_next::Wire::zero_padding(&mut out);
18009
18010            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
18011                ::fidl_next::wire::Envelope,
18012            >(encoder, max_ord);
18013
18014            for i in 1..=max_ord {
18015                match i {
18016                    3 => {
18017                        if let Some(value) = self.scheme.take() {
18018                            ::fidl_next::wire::Envelope::encode_value::<
18019                                ::fidl_next::wire::String<'static>,
18020                                ___E,
18021                            >(
18022                                value, preallocated.encoder, &mut out, 100
18023                            )?;
18024                        } else {
18025                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
18026                        }
18027                    }
18028
18029                    2 => {
18030                        if let Some(value) = self.source.take() {
18031                            ::fidl_next::wire::Envelope::encode_value::<
18032                                crate::wire::Ref<'static>,
18033                                ___E,
18034                            >(
18035                                value, preallocated.encoder, &mut out, ()
18036                            )?;
18037                        } else {
18038                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
18039                        }
18040                    }
18041
18042                    1 => {
18043                        if let Some(value) = self.resolver.take() {
18044                            ::fidl_next::wire::Envelope::encode_value::<
18045                                ::fidl_next::wire::String<'static>,
18046                                ___E,
18047                            >(
18048                                value, preallocated.encoder, &mut out, 100
18049                            )?;
18050                        } else {
18051                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
18052                        }
18053                    }
18054
18055                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
18056                }
18057                unsafe {
18058                    preallocated.write_next(out.assume_init_ref());
18059                }
18060            }
18061
18062            ::fidl_next::wire::Table::encode_len(table, max_ord);
18063
18064            Ok(())
18065        }
18066    }
18067
18068    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::ResolverRegistration<'static>, ___E>
18069        for &'a ResolverRegistration
18070    where
18071        ___E: ::fidl_next::Encoder + ?Sized,
18072    {
18073        #[inline]
18074        fn encode(
18075            self,
18076            encoder: &mut ___E,
18077            out: &mut ::core::mem::MaybeUninit<crate::wire::ResolverRegistration<'static>>,
18078            _: (),
18079        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
18080            ::fidl_next::munge!(let crate::wire::ResolverRegistration { table } = out);
18081
18082            let max_ord = self.__max_ordinal();
18083
18084            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
18085            ::fidl_next::Wire::zero_padding(&mut out);
18086
18087            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
18088                ::fidl_next::wire::Envelope,
18089            >(encoder, max_ord);
18090
18091            for i in 1..=max_ord {
18092                match i {
18093                    3 => {
18094                        if let Some(value) = &self.scheme {
18095                            ::fidl_next::wire::Envelope::encode_value::<
18096                                ::fidl_next::wire::String<'static>,
18097                                ___E,
18098                            >(
18099                                value, preallocated.encoder, &mut out, 100
18100                            )?;
18101                        } else {
18102                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
18103                        }
18104                    }
18105
18106                    2 => {
18107                        if let Some(value) = &self.source {
18108                            ::fidl_next::wire::Envelope::encode_value::<
18109                                crate::wire::Ref<'static>,
18110                                ___E,
18111                            >(
18112                                value, preallocated.encoder, &mut out, ()
18113                            )?;
18114                        } else {
18115                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
18116                        }
18117                    }
18118
18119                    1 => {
18120                        if let Some(value) = &self.resolver {
18121                            ::fidl_next::wire::Envelope::encode_value::<
18122                                ::fidl_next::wire::String<'static>,
18123                                ___E,
18124                            >(
18125                                value, preallocated.encoder, &mut out, 100
18126                            )?;
18127                        } else {
18128                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
18129                        }
18130                    }
18131
18132                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
18133                }
18134                unsafe {
18135                    preallocated.write_next(out.assume_init_ref());
18136                }
18137            }
18138
18139            ::fidl_next::wire::Table::encode_len(table, max_ord);
18140
18141            Ok(())
18142        }
18143    }
18144
18145    impl<'de> ::fidl_next::FromWire<crate::wire::ResolverRegistration<'de>> for ResolverRegistration {
18146        #[inline]
18147        fn from_wire(wire_: crate::wire::ResolverRegistration<'de>) -> Self {
18148            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
18149
18150            let resolver = wire_.table.get(1);
18151
18152            let source = wire_.table.get(2);
18153
18154            let scheme = wire_.table.get(3);
18155
18156            Self {
18157                resolver: resolver.map(|envelope| {
18158                    ::fidl_next::FromWire::from_wire(unsafe {
18159                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
18160                    })
18161                }),
18162
18163                source: source.map(|envelope| {
18164                    ::fidl_next::FromWire::from_wire(unsafe {
18165                        envelope.read_unchecked::<crate::wire::Ref<'de>>()
18166                    })
18167                }),
18168
18169                scheme: scheme.map(|envelope| {
18170                    ::fidl_next::FromWire::from_wire(unsafe {
18171                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
18172                    })
18173                }),
18174            }
18175        }
18176    }
18177
18178    impl<'de> ::fidl_next::FromWireRef<crate::wire::ResolverRegistration<'de>>
18179        for ResolverRegistration
18180    {
18181        #[inline]
18182        fn from_wire_ref(wire: &crate::wire::ResolverRegistration<'de>) -> Self {
18183            Self {
18184                resolver: wire.table.get(1).map(|envelope| {
18185                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
18186                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
18187                    })
18188                }),
18189
18190                source: wire.table.get(2).map(|envelope| {
18191                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
18192                        envelope.deref_unchecked::<crate::wire::Ref<'de>>()
18193                    })
18194                }),
18195
18196                scheme: wire.table.get(3).map(|envelope| {
18197                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
18198                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
18199                    })
18200                }),
18201            }
18202        }
18203    }
18204
18205    #[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"]
18206    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
18207    pub struct DebugProtocolRegistration {
18208        pub source: ::core::option::Option<crate::natural::Ref>,
18209
18210        pub source_name: ::core::option::Option<::std::string::String>,
18211
18212        pub target_name: ::core::option::Option<::std::string::String>,
18213    }
18214
18215    impl DebugProtocolRegistration {
18216        fn __max_ordinal(&self) -> usize {
18217            if self.target_name.is_some() {
18218                return 3;
18219            }
18220
18221            if self.source_name.is_some() {
18222                return 2;
18223            }
18224
18225            if self.source.is_some() {
18226                return 1;
18227            }
18228
18229            0
18230        }
18231    }
18232
18233    unsafe impl<___E> ::fidl_next::Encode<crate::wire::DebugProtocolRegistration<'static>, ___E>
18234        for DebugProtocolRegistration
18235    where
18236        ___E: ::fidl_next::Encoder + ?Sized,
18237    {
18238        #[inline]
18239        fn encode(
18240            mut self,
18241            encoder: &mut ___E,
18242            out: &mut ::core::mem::MaybeUninit<crate::wire::DebugProtocolRegistration<'static>>,
18243            _: (),
18244        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
18245            ::fidl_next::munge!(let crate::wire::DebugProtocolRegistration { table } = out);
18246
18247            let max_ord = self.__max_ordinal();
18248
18249            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
18250            ::fidl_next::Wire::zero_padding(&mut out);
18251
18252            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
18253                ::fidl_next::wire::Envelope,
18254            >(encoder, max_ord);
18255
18256            for i in 1..=max_ord {
18257                match i {
18258                    3 => {
18259                        if let Some(value) = self.target_name.take() {
18260                            ::fidl_next::wire::Envelope::encode_value::<
18261                                ::fidl_next::wire::String<'static>,
18262                                ___E,
18263                            >(
18264                                value, preallocated.encoder, &mut out, 100
18265                            )?;
18266                        } else {
18267                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
18268                        }
18269                    }
18270
18271                    2 => {
18272                        if let Some(value) = self.source_name.take() {
18273                            ::fidl_next::wire::Envelope::encode_value::<
18274                                ::fidl_next::wire::String<'static>,
18275                                ___E,
18276                            >(
18277                                value, preallocated.encoder, &mut out, 100
18278                            )?;
18279                        } else {
18280                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
18281                        }
18282                    }
18283
18284                    1 => {
18285                        if let Some(value) = self.source.take() {
18286                            ::fidl_next::wire::Envelope::encode_value::<
18287                                crate::wire::Ref<'static>,
18288                                ___E,
18289                            >(
18290                                value, preallocated.encoder, &mut out, ()
18291                            )?;
18292                        } else {
18293                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
18294                        }
18295                    }
18296
18297                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
18298                }
18299                unsafe {
18300                    preallocated.write_next(out.assume_init_ref());
18301                }
18302            }
18303
18304            ::fidl_next::wire::Table::encode_len(table, max_ord);
18305
18306            Ok(())
18307        }
18308    }
18309
18310    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::DebugProtocolRegistration<'static>, ___E>
18311        for &'a DebugProtocolRegistration
18312    where
18313        ___E: ::fidl_next::Encoder + ?Sized,
18314    {
18315        #[inline]
18316        fn encode(
18317            self,
18318            encoder: &mut ___E,
18319            out: &mut ::core::mem::MaybeUninit<crate::wire::DebugProtocolRegistration<'static>>,
18320            _: (),
18321        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
18322            ::fidl_next::munge!(let crate::wire::DebugProtocolRegistration { table } = out);
18323
18324            let max_ord = self.__max_ordinal();
18325
18326            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
18327            ::fidl_next::Wire::zero_padding(&mut out);
18328
18329            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
18330                ::fidl_next::wire::Envelope,
18331            >(encoder, max_ord);
18332
18333            for i in 1..=max_ord {
18334                match i {
18335                    3 => {
18336                        if let Some(value) = &self.target_name {
18337                            ::fidl_next::wire::Envelope::encode_value::<
18338                                ::fidl_next::wire::String<'static>,
18339                                ___E,
18340                            >(
18341                                value, preallocated.encoder, &mut out, 100
18342                            )?;
18343                        } else {
18344                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
18345                        }
18346                    }
18347
18348                    2 => {
18349                        if let Some(value) = &self.source_name {
18350                            ::fidl_next::wire::Envelope::encode_value::<
18351                                ::fidl_next::wire::String<'static>,
18352                                ___E,
18353                            >(
18354                                value, preallocated.encoder, &mut out, 100
18355                            )?;
18356                        } else {
18357                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
18358                        }
18359                    }
18360
18361                    1 => {
18362                        if let Some(value) = &self.source {
18363                            ::fidl_next::wire::Envelope::encode_value::<
18364                                crate::wire::Ref<'static>,
18365                                ___E,
18366                            >(
18367                                value, preallocated.encoder, &mut out, ()
18368                            )?;
18369                        } else {
18370                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
18371                        }
18372                    }
18373
18374                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
18375                }
18376                unsafe {
18377                    preallocated.write_next(out.assume_init_ref());
18378                }
18379            }
18380
18381            ::fidl_next::wire::Table::encode_len(table, max_ord);
18382
18383            Ok(())
18384        }
18385    }
18386
18387    impl<'de> ::fidl_next::FromWire<crate::wire::DebugProtocolRegistration<'de>>
18388        for DebugProtocolRegistration
18389    {
18390        #[inline]
18391        fn from_wire(wire_: crate::wire::DebugProtocolRegistration<'de>) -> Self {
18392            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
18393
18394            let source = wire_.table.get(1);
18395
18396            let source_name = wire_.table.get(2);
18397
18398            let target_name = wire_.table.get(3);
18399
18400            Self {
18401                source: source.map(|envelope| {
18402                    ::fidl_next::FromWire::from_wire(unsafe {
18403                        envelope.read_unchecked::<crate::wire::Ref<'de>>()
18404                    })
18405                }),
18406
18407                source_name: source_name.map(|envelope| {
18408                    ::fidl_next::FromWire::from_wire(unsafe {
18409                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
18410                    })
18411                }),
18412
18413                target_name: target_name.map(|envelope| {
18414                    ::fidl_next::FromWire::from_wire(unsafe {
18415                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
18416                    })
18417                }),
18418            }
18419        }
18420    }
18421
18422    impl<'de> ::fidl_next::FromWireRef<crate::wire::DebugProtocolRegistration<'de>>
18423        for DebugProtocolRegistration
18424    {
18425        #[inline]
18426        fn from_wire_ref(wire: &crate::wire::DebugProtocolRegistration<'de>) -> Self {
18427            Self {
18428                source: wire.table.get(1).map(|envelope| {
18429                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
18430                        envelope.deref_unchecked::<crate::wire::Ref<'de>>()
18431                    })
18432                }),
18433
18434                source_name: wire.table.get(2).map(|envelope| {
18435                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
18436                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
18437                    })
18438                }),
18439
18440                target_name: wire.table.get(3).map(|envelope| {
18441                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
18442                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
18443                    })
18444                }),
18445            }
18446        }
18447    }
18448
18449    #[doc = " Declares a capability registered in the debug section of an environment.\n"]
18450    #[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
18451    pub enum DebugRegistration {
18452        Protocol(crate::natural::DebugProtocolRegistration),
18453
18454        UnknownOrdinal_(u64),
18455    }
18456
18457    impl DebugRegistration {
18458        pub fn is_unknown(&self) -> bool {
18459            #[allow(unreachable_patterns)]
18460            match self {
18461                Self::UnknownOrdinal_(_) => true,
18462                _ => false,
18463            }
18464        }
18465    }
18466
18467    unsafe impl<___E> ::fidl_next::Encode<crate::wire::DebugRegistration<'static>, ___E>
18468        for DebugRegistration
18469    where
18470        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
18471        ___E: ::fidl_next::Encoder,
18472    {
18473        #[inline]
18474        fn encode(
18475            self,
18476            encoder: &mut ___E,
18477            out: &mut ::core::mem::MaybeUninit<crate::wire::DebugRegistration<'static>>,
18478            _: (),
18479        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
18480            ::fidl_next::munge!(let crate::wire::DebugRegistration { raw, _phantom: _ } = out);
18481
18482            match self {
18483                Self::Protocol(value) => ::fidl_next::wire::Union::encode_as::<
18484                    ___E,
18485                    crate::wire::DebugProtocolRegistration<'static>,
18486                >(value, 1, encoder, raw, ())?,
18487
18488                Self::UnknownOrdinal_(ordinal) => {
18489                    return Err(::fidl_next::EncodeError::UnknownUnionOrdinal(ordinal as usize));
18490                }
18491            }
18492
18493            Ok(())
18494        }
18495    }
18496
18497    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::DebugRegistration<'static>, ___E>
18498        for &'a DebugRegistration
18499    where
18500        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
18501        ___E: ::fidl_next::Encoder,
18502    {
18503        #[inline]
18504        fn encode(
18505            self,
18506            encoder: &mut ___E,
18507            out: &mut ::core::mem::MaybeUninit<crate::wire::DebugRegistration<'static>>,
18508            _: (),
18509        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
18510            ::fidl_next::munge!(let crate::wire::DebugRegistration { raw, _phantom: _ } = out);
18511
18512            match self {
18513                DebugRegistration::Protocol(value) => ::fidl_next::wire::Union::encode_as::<
18514                    ___E,
18515                    crate::wire::DebugProtocolRegistration<'static>,
18516                >(value, 1, encoder, raw, ())?,
18517
18518                DebugRegistration::UnknownOrdinal_(ordinal) => {
18519                    return Err(::fidl_next::EncodeError::UnknownUnionOrdinal(*ordinal as usize));
18520                }
18521            }
18522
18523            Ok(())
18524        }
18525    }
18526
18527    unsafe impl<___E>
18528        ::fidl_next::EncodeOption<crate::wire_optional::DebugRegistration<'static>, ___E>
18529        for DebugRegistration
18530    where
18531        ___E: ?Sized,
18532        DebugRegistration: ::fidl_next::Encode<crate::wire::DebugRegistration<'static>, ___E>,
18533    {
18534        #[inline]
18535        fn encode_option(
18536            this: ::core::option::Option<Self>,
18537            encoder: &mut ___E,
18538            out: &mut ::core::mem::MaybeUninit<crate::wire_optional::DebugRegistration<'static>>,
18539            _: (),
18540        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
18541            ::fidl_next::munge!(let crate::wire_optional::DebugRegistration { raw, _phantom: _ } = &mut *out);
18542
18543            if let Some(inner) = this {
18544                let value_out = unsafe { &mut *out.as_mut_ptr().cast() };
18545                ::fidl_next::Encode::encode(inner, encoder, value_out, ())?;
18546            } else {
18547                ::fidl_next::wire::Union::encode_absent(raw);
18548            }
18549
18550            Ok(())
18551        }
18552    }
18553
18554    unsafe impl<'a, ___E>
18555        ::fidl_next::EncodeOption<crate::wire_optional::DebugRegistration<'static>, ___E>
18556        for &'a DebugRegistration
18557    where
18558        ___E: ?Sized,
18559        &'a DebugRegistration: ::fidl_next::Encode<crate::wire::DebugRegistration<'static>, ___E>,
18560    {
18561        #[inline]
18562        fn encode_option(
18563            this: ::core::option::Option<Self>,
18564            encoder: &mut ___E,
18565            out: &mut ::core::mem::MaybeUninit<crate::wire_optional::DebugRegistration<'static>>,
18566            _: (),
18567        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
18568            ::fidl_next::munge!(let crate::wire_optional::DebugRegistration { raw, _phantom: _ } = &mut *out);
18569
18570            if let Some(inner) = this {
18571                let value_out = unsafe { &mut *out.as_mut_ptr().cast() };
18572                ::fidl_next::Encode::encode(inner, encoder, value_out, ())?;
18573            } else {
18574                ::fidl_next::wire::Union::encode_absent(raw);
18575            }
18576
18577            Ok(())
18578        }
18579    }
18580
18581    impl<'de> ::fidl_next::FromWire<crate::wire::DebugRegistration<'de>> for DebugRegistration {
18582        #[inline]
18583        fn from_wire(wire: crate::wire::DebugRegistration<'de>) -> Self {
18584            let wire = ::core::mem::ManuallyDrop::new(wire);
18585            match wire.raw.ordinal() {
18586                1 => Self::Protocol(::fidl_next::FromWire::from_wire(unsafe {
18587                    wire.raw.get().read_unchecked::<crate::wire::DebugProtocolRegistration<'de>>()
18588                })),
18589
18590                ord => return Self::UnknownOrdinal_(ord as u64),
18591            }
18592        }
18593    }
18594
18595    impl<'de> ::fidl_next::FromWireRef<crate::wire::DebugRegistration<'de>> for DebugRegistration {
18596        #[inline]
18597        fn from_wire_ref(wire: &crate::wire::DebugRegistration<'de>) -> Self {
18598            match wire.raw.ordinal() {
18599                1 => Self::Protocol(::fidl_next::FromWireRef::from_wire_ref(unsafe {
18600                    wire.raw.get().deref_unchecked::<crate::wire::DebugProtocolRegistration<'de>>()
18601                })),
18602
18603                ord => return Self::UnknownOrdinal_(ord as u64),
18604            }
18605        }
18606    }
18607
18608    impl<'de> ::fidl_next::FromWireOption<crate::wire_optional::DebugRegistration<'de>>
18609        for DebugRegistration
18610    {
18611        #[inline]
18612        fn from_wire_option(
18613            wire: crate::wire_optional::DebugRegistration<'de>,
18614        ) -> ::core::option::Option<Self> {
18615            if let Some(inner) = wire.into_option() {
18616                Some(::fidl_next::FromWire::from_wire(inner))
18617            } else {
18618                None
18619            }
18620        }
18621    }
18622
18623    impl<'de> ::fidl_next::FromWireOption<crate::wire_optional::DebugRegistration<'de>>
18624        for Box<DebugRegistration>
18625    {
18626        #[inline]
18627        fn from_wire_option(
18628            wire: crate::wire_optional::DebugRegistration<'de>,
18629        ) -> ::core::option::Option<Self> {
18630            <DebugRegistration as ::fidl_next::FromWireOption<
18631                crate::wire_optional::DebugRegistration<'de>,
18632            >>::from_wire_option(wire)
18633            .map(Box::new)
18634        }
18635    }
18636
18637    impl<'de> ::fidl_next::FromWireOptionRef<crate::wire_optional::DebugRegistration<'de>>
18638        for Box<DebugRegistration>
18639    {
18640        #[inline]
18641        fn from_wire_option_ref(
18642            wire: &crate::wire_optional::DebugRegistration<'de>,
18643        ) -> ::core::option::Option<Self> {
18644            if let Some(inner) = wire.as_ref() {
18645                Some(Box::new(::fidl_next::FromWireRef::from_wire_ref(inner)))
18646            } else {
18647                None
18648            }
18649        }
18650    }
18651
18652    #[doc = " Declares an environment which configures a realm.\n"]
18653    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
18654    pub struct Environment {
18655        pub name: ::core::option::Option<::std::string::String>,
18656
18657        pub extends: ::core::option::Option<crate::natural::EnvironmentExtends>,
18658
18659        pub runners: ::core::option::Option<::std::vec::Vec<crate::natural::RunnerRegistration>>,
18660
18661        pub resolvers:
18662            ::core::option::Option<::std::vec::Vec<crate::natural::ResolverRegistration>>,
18663
18664        pub debug_capabilities:
18665            ::core::option::Option<::std::vec::Vec<crate::natural::DebugRegistration>>,
18666
18667        pub stop_timeout_ms: ::core::option::Option<u32>,
18668    }
18669
18670    impl Environment {
18671        fn __max_ordinal(&self) -> usize {
18672            if self.stop_timeout_ms.is_some() {
18673                return 6;
18674            }
18675
18676            if self.debug_capabilities.is_some() {
18677                return 5;
18678            }
18679
18680            if self.resolvers.is_some() {
18681                return 4;
18682            }
18683
18684            if self.runners.is_some() {
18685                return 3;
18686            }
18687
18688            if self.extends.is_some() {
18689                return 2;
18690            }
18691
18692            if self.name.is_some() {
18693                return 1;
18694            }
18695
18696            0
18697        }
18698    }
18699
18700    unsafe impl<___E> ::fidl_next::Encode<crate::wire::Environment<'static>, ___E> for Environment
18701    where
18702        ___E: ::fidl_next::Encoder + ?Sized,
18703    {
18704        #[inline]
18705        fn encode(
18706            mut self,
18707            encoder: &mut ___E,
18708            out: &mut ::core::mem::MaybeUninit<crate::wire::Environment<'static>>,
18709            _: (),
18710        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
18711            ::fidl_next::munge!(let crate::wire::Environment { table } = out);
18712
18713            let max_ord = self.__max_ordinal();
18714
18715            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
18716            ::fidl_next::Wire::zero_padding(&mut out);
18717
18718            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
18719                ::fidl_next::wire::Envelope,
18720            >(encoder, max_ord);
18721
18722            for i in 1..=max_ord {
18723                match i {
18724                    6 => {
18725                        if let Some(value) = self.stop_timeout_ms.take() {
18726                            ::fidl_next::wire::Envelope::encode_value::<
18727                                ::fidl_next::wire::Uint32,
18728                                ___E,
18729                            >(
18730                                value, preallocated.encoder, &mut out, ()
18731                            )?;
18732                        } else {
18733                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
18734                        }
18735                    }
18736
18737                    5 => {
18738                        if let Some(value) = self.debug_capabilities.take() {
18739                            ::fidl_next::wire::Envelope::encode_value::<
18740                                ::fidl_next::wire::Vector<
18741                                    'static,
18742                                    crate::wire::DebugRegistration<'static>,
18743                                >,
18744                                ___E,
18745                            >(
18746                                value, preallocated.encoder, &mut out, (4294967295, ())
18747                            )?;
18748                        } else {
18749                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
18750                        }
18751                    }
18752
18753                    4 => {
18754                        if let Some(value) = self.resolvers.take() {
18755                            ::fidl_next::wire::Envelope::encode_value::<
18756                                ::fidl_next::wire::Vector<
18757                                    'static,
18758                                    crate::wire::ResolverRegistration<'static>,
18759                                >,
18760                                ___E,
18761                            >(
18762                                value, preallocated.encoder, &mut out, (4294967295, ())
18763                            )?;
18764                        } else {
18765                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
18766                        }
18767                    }
18768
18769                    3 => {
18770                        if let Some(value) = self.runners.take() {
18771                            ::fidl_next::wire::Envelope::encode_value::<
18772                                ::fidl_next::wire::Vector<
18773                                    'static,
18774                                    crate::wire::RunnerRegistration<'static>,
18775                                >,
18776                                ___E,
18777                            >(
18778                                value, preallocated.encoder, &mut out, (4294967295, ())
18779                            )?;
18780                        } else {
18781                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
18782                        }
18783                    }
18784
18785                    2 => {
18786                        if let Some(value) = self.extends.take() {
18787                            ::fidl_next::wire::Envelope::encode_value::<
18788                                crate::wire::EnvironmentExtends,
18789                                ___E,
18790                            >(
18791                                value, preallocated.encoder, &mut out, ()
18792                            )?;
18793                        } else {
18794                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
18795                        }
18796                    }
18797
18798                    1 => {
18799                        if let Some(value) = self.name.take() {
18800                            ::fidl_next::wire::Envelope::encode_value::<
18801                                ::fidl_next::wire::String<'static>,
18802                                ___E,
18803                            >(
18804                                value, preallocated.encoder, &mut out, 100
18805                            )?;
18806                        } else {
18807                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
18808                        }
18809                    }
18810
18811                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
18812                }
18813                unsafe {
18814                    preallocated.write_next(out.assume_init_ref());
18815                }
18816            }
18817
18818            ::fidl_next::wire::Table::encode_len(table, max_ord);
18819
18820            Ok(())
18821        }
18822    }
18823
18824    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::Environment<'static>, ___E>
18825        for &'a Environment
18826    where
18827        ___E: ::fidl_next::Encoder + ?Sized,
18828    {
18829        #[inline]
18830        fn encode(
18831            self,
18832            encoder: &mut ___E,
18833            out: &mut ::core::mem::MaybeUninit<crate::wire::Environment<'static>>,
18834            _: (),
18835        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
18836            ::fidl_next::munge!(let crate::wire::Environment { table } = out);
18837
18838            let max_ord = self.__max_ordinal();
18839
18840            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
18841            ::fidl_next::Wire::zero_padding(&mut out);
18842
18843            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
18844                ::fidl_next::wire::Envelope,
18845            >(encoder, max_ord);
18846
18847            for i in 1..=max_ord {
18848                match i {
18849                    6 => {
18850                        if let Some(value) = &self.stop_timeout_ms {
18851                            ::fidl_next::wire::Envelope::encode_value::<
18852                                ::fidl_next::wire::Uint32,
18853                                ___E,
18854                            >(
18855                                value, preallocated.encoder, &mut out, ()
18856                            )?;
18857                        } else {
18858                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
18859                        }
18860                    }
18861
18862                    5 => {
18863                        if let Some(value) = &self.debug_capabilities {
18864                            ::fidl_next::wire::Envelope::encode_value::<
18865                                ::fidl_next::wire::Vector<
18866                                    'static,
18867                                    crate::wire::DebugRegistration<'static>,
18868                                >,
18869                                ___E,
18870                            >(
18871                                value, preallocated.encoder, &mut out, (4294967295, ())
18872                            )?;
18873                        } else {
18874                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
18875                        }
18876                    }
18877
18878                    4 => {
18879                        if let Some(value) = &self.resolvers {
18880                            ::fidl_next::wire::Envelope::encode_value::<
18881                                ::fidl_next::wire::Vector<
18882                                    'static,
18883                                    crate::wire::ResolverRegistration<'static>,
18884                                >,
18885                                ___E,
18886                            >(
18887                                value, preallocated.encoder, &mut out, (4294967295, ())
18888                            )?;
18889                        } else {
18890                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
18891                        }
18892                    }
18893
18894                    3 => {
18895                        if let Some(value) = &self.runners {
18896                            ::fidl_next::wire::Envelope::encode_value::<
18897                                ::fidl_next::wire::Vector<
18898                                    'static,
18899                                    crate::wire::RunnerRegistration<'static>,
18900                                >,
18901                                ___E,
18902                            >(
18903                                value, preallocated.encoder, &mut out, (4294967295, ())
18904                            )?;
18905                        } else {
18906                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
18907                        }
18908                    }
18909
18910                    2 => {
18911                        if let Some(value) = &self.extends {
18912                            ::fidl_next::wire::Envelope::encode_value::<
18913                                crate::wire::EnvironmentExtends,
18914                                ___E,
18915                            >(
18916                                value, preallocated.encoder, &mut out, ()
18917                            )?;
18918                        } else {
18919                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
18920                        }
18921                    }
18922
18923                    1 => {
18924                        if let Some(value) = &self.name {
18925                            ::fidl_next::wire::Envelope::encode_value::<
18926                                ::fidl_next::wire::String<'static>,
18927                                ___E,
18928                            >(
18929                                value, preallocated.encoder, &mut out, 100
18930                            )?;
18931                        } else {
18932                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
18933                        }
18934                    }
18935
18936                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
18937                }
18938                unsafe {
18939                    preallocated.write_next(out.assume_init_ref());
18940                }
18941            }
18942
18943            ::fidl_next::wire::Table::encode_len(table, max_ord);
18944
18945            Ok(())
18946        }
18947    }
18948
18949    impl<'de> ::fidl_next::FromWire<crate::wire::Environment<'de>> for Environment {
18950        #[inline]
18951        fn from_wire(wire_: crate::wire::Environment<'de>) -> Self {
18952            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
18953
18954            let name = wire_.table.get(1);
18955
18956            let extends = wire_.table.get(2);
18957
18958            let runners = wire_.table.get(3);
18959
18960            let resolvers = wire_.table.get(4);
18961
18962            let debug_capabilities = wire_.table.get(5);
18963
18964            let stop_timeout_ms = wire_.table.get(6);
18965
18966            Self {
18967
18968
18969                name: name.map(|envelope| ::fidl_next::FromWire::from_wire(
18970                    unsafe { envelope.read_unchecked::<::fidl_next::wire::String<'de>>() }
18971                )),
18972
18973
18974                extends: extends.map(|envelope| ::fidl_next::FromWire::from_wire(
18975                    unsafe { envelope.read_unchecked::<crate::wire::EnvironmentExtends>() }
18976                )),
18977
18978
18979                runners: runners.map(|envelope| ::fidl_next::FromWire::from_wire(
18980                    unsafe { envelope.read_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::RunnerRegistration<'de>>>() }
18981                )),
18982
18983
18984                resolvers: resolvers.map(|envelope| ::fidl_next::FromWire::from_wire(
18985                    unsafe { envelope.read_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::ResolverRegistration<'de>>>() }
18986                )),
18987
18988
18989                debug_capabilities: debug_capabilities.map(|envelope| ::fidl_next::FromWire::from_wire(
18990                    unsafe { envelope.read_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::DebugRegistration<'de>>>() }
18991                )),
18992
18993
18994                stop_timeout_ms: stop_timeout_ms.map(|envelope| ::fidl_next::FromWire::from_wire(
18995                    unsafe { envelope.read_unchecked::<::fidl_next::wire::Uint32>() }
18996                )),
18997
18998        }
18999        }
19000    }
19001
19002    impl<'de> ::fidl_next::FromWireRef<crate::wire::Environment<'de>> for Environment {
19003        #[inline]
19004        fn from_wire_ref(wire: &crate::wire::Environment<'de>) -> Self {
19005            Self {
19006
19007
19008                name: wire.table.get(1)
19009                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
19010                        unsafe { envelope.deref_unchecked::<::fidl_next::wire::String<'de>>() }
19011                    )),
19012
19013
19014                extends: wire.table.get(2)
19015                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
19016                        unsafe { envelope.deref_unchecked::<crate::wire::EnvironmentExtends>() }
19017                    )),
19018
19019
19020                runners: wire.table.get(3)
19021                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
19022                        unsafe { envelope.deref_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::RunnerRegistration<'de>>>() }
19023                    )),
19024
19025
19026                resolvers: wire.table.get(4)
19027                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
19028                        unsafe { envelope.deref_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::ResolverRegistration<'de>>>() }
19029                    )),
19030
19031
19032                debug_capabilities: wire.table.get(5)
19033                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
19034                        unsafe { envelope.deref_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::DebugRegistration<'de>>>() }
19035                    )),
19036
19037
19038                stop_timeout_ms: wire.table.get(6)
19039                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
19040                        unsafe { envelope.deref_unchecked::<::fidl_next::wire::Uint32>() }
19041                    )),
19042
19043        }
19044        }
19045    }
19046
19047    #[derive(Debug, Default, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
19048    pub struct ConfigSourceCapabilities {}
19049
19050    impl ConfigSourceCapabilities {
19051        fn __max_ordinal(&self) -> usize {
19052            0
19053        }
19054    }
19055
19056    unsafe impl<___E> ::fidl_next::Encode<crate::wire::ConfigSourceCapabilities<'static>, ___E>
19057        for ConfigSourceCapabilities
19058    where
19059        ___E: ::fidl_next::Encoder + ?Sized,
19060    {
19061        #[inline]
19062        fn encode(
19063            mut self,
19064            encoder: &mut ___E,
19065            out: &mut ::core::mem::MaybeUninit<crate::wire::ConfigSourceCapabilities<'static>>,
19066            _: (),
19067        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
19068            ::fidl_next::munge!(let crate::wire::ConfigSourceCapabilities { table } = out);
19069
19070            let max_ord = self.__max_ordinal();
19071
19072            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
19073            ::fidl_next::Wire::zero_padding(&mut out);
19074
19075            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
19076                ::fidl_next::wire::Envelope,
19077            >(encoder, max_ord);
19078
19079            for i in 1..=max_ord {
19080                match i {
19081                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
19082                }
19083                unsafe {
19084                    preallocated.write_next(out.assume_init_ref());
19085                }
19086            }
19087
19088            ::fidl_next::wire::Table::encode_len(table, max_ord);
19089
19090            Ok(())
19091        }
19092    }
19093
19094    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::ConfigSourceCapabilities<'static>, ___E>
19095        for &'a ConfigSourceCapabilities
19096    where
19097        ___E: ::fidl_next::Encoder + ?Sized,
19098    {
19099        #[inline]
19100        fn encode(
19101            self,
19102            encoder: &mut ___E,
19103            out: &mut ::core::mem::MaybeUninit<crate::wire::ConfigSourceCapabilities<'static>>,
19104            _: (),
19105        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
19106            ::fidl_next::munge!(let crate::wire::ConfigSourceCapabilities { table } = out);
19107
19108            let max_ord = self.__max_ordinal();
19109
19110            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
19111            ::fidl_next::Wire::zero_padding(&mut out);
19112
19113            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
19114                ::fidl_next::wire::Envelope,
19115            >(encoder, max_ord);
19116
19117            for i in 1..=max_ord {
19118                match i {
19119                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
19120                }
19121                unsafe {
19122                    preallocated.write_next(out.assume_init_ref());
19123                }
19124            }
19125
19126            ::fidl_next::wire::Table::encode_len(table, max_ord);
19127
19128            Ok(())
19129        }
19130    }
19131
19132    impl<'de> ::fidl_next::FromWire<crate::wire::ConfigSourceCapabilities<'de>>
19133        for ConfigSourceCapabilities
19134    {
19135        #[inline]
19136        fn from_wire(wire_: crate::wire::ConfigSourceCapabilities<'de>) -> Self {
19137            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
19138
19139            Self {}
19140        }
19141    }
19142
19143    impl<'de> ::fidl_next::FromWireRef<crate::wire::ConfigSourceCapabilities<'de>>
19144        for ConfigSourceCapabilities
19145    {
19146        #[inline]
19147        fn from_wire_ref(wire: &crate::wire::ConfigSourceCapabilities<'de>) -> Self {
19148            Self {}
19149        }
19150    }
19151
19152    #[doc = " Strategies available for resolving configuration values.\n"]
19153    #[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
19154    pub enum ConfigValueSource {
19155        PackagePath(::std::string::String),
19156
19157        Capabilities(crate::natural::ConfigSourceCapabilities),
19158
19159        UnknownOrdinal_(u64),
19160    }
19161
19162    impl ConfigValueSource {
19163        pub fn is_unknown(&self) -> bool {
19164            #[allow(unreachable_patterns)]
19165            match self {
19166                Self::UnknownOrdinal_(_) => true,
19167                _ => false,
19168            }
19169        }
19170    }
19171
19172    unsafe impl<___E> ::fidl_next::Encode<crate::wire::ConfigValueSource<'static>, ___E>
19173        for ConfigValueSource
19174    where
19175        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
19176        ___E: ::fidl_next::Encoder,
19177    {
19178        #[inline]
19179        fn encode(
19180            self,
19181            encoder: &mut ___E,
19182            out: &mut ::core::mem::MaybeUninit<crate::wire::ConfigValueSource<'static>>,
19183            _: (),
19184        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
19185            ::fidl_next::munge!(let crate::wire::ConfigValueSource { raw, _phantom: _ } = out);
19186
19187            match self {
19188                Self::PackagePath(value) => ::fidl_next::wire::Union::encode_as::<
19189                    ___E,
19190                    ::fidl_next::wire::String<'static>,
19191                >(value, 1, encoder, raw, 4294967295)?,
19192
19193                Self::Capabilities(value) => ::fidl_next::wire::Union::encode_as::<
19194                    ___E,
19195                    crate::wire::ConfigSourceCapabilities<'static>,
19196                >(value, 2, encoder, raw, ())?,
19197
19198                Self::UnknownOrdinal_(ordinal) => {
19199                    return Err(::fidl_next::EncodeError::UnknownUnionOrdinal(ordinal as usize));
19200                }
19201            }
19202
19203            Ok(())
19204        }
19205    }
19206
19207    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::ConfigValueSource<'static>, ___E>
19208        for &'a ConfigValueSource
19209    where
19210        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
19211        ___E: ::fidl_next::Encoder,
19212    {
19213        #[inline]
19214        fn encode(
19215            self,
19216            encoder: &mut ___E,
19217            out: &mut ::core::mem::MaybeUninit<crate::wire::ConfigValueSource<'static>>,
19218            _: (),
19219        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
19220            ::fidl_next::munge!(let crate::wire::ConfigValueSource { raw, _phantom: _ } = out);
19221
19222            match self {
19223                ConfigValueSource::PackagePath(value) => {
19224                    ::fidl_next::wire::Union::encode_as::<___E, ::fidl_next::wire::String<'static>>(
19225                        value, 1, encoder, raw, 4294967295,
19226                    )?
19227                }
19228
19229                ConfigValueSource::Capabilities(value) => {
19230                    ::fidl_next::wire::Union::encode_as::<
19231                        ___E,
19232                        crate::wire::ConfigSourceCapabilities<'static>,
19233                    >(value, 2, encoder, raw, ())?
19234                }
19235
19236                ConfigValueSource::UnknownOrdinal_(ordinal) => {
19237                    return Err(::fidl_next::EncodeError::UnknownUnionOrdinal(*ordinal as usize));
19238                }
19239            }
19240
19241            Ok(())
19242        }
19243    }
19244
19245    unsafe impl<___E>
19246        ::fidl_next::EncodeOption<crate::wire_optional::ConfigValueSource<'static>, ___E>
19247        for ConfigValueSource
19248    where
19249        ___E: ?Sized,
19250        ConfigValueSource: ::fidl_next::Encode<crate::wire::ConfigValueSource<'static>, ___E>,
19251    {
19252        #[inline]
19253        fn encode_option(
19254            this: ::core::option::Option<Self>,
19255            encoder: &mut ___E,
19256            out: &mut ::core::mem::MaybeUninit<crate::wire_optional::ConfigValueSource<'static>>,
19257            _: (),
19258        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
19259            ::fidl_next::munge!(let crate::wire_optional::ConfigValueSource { raw, _phantom: _ } = &mut *out);
19260
19261            if let Some(inner) = this {
19262                let value_out = unsafe { &mut *out.as_mut_ptr().cast() };
19263                ::fidl_next::Encode::encode(inner, encoder, value_out, ())?;
19264            } else {
19265                ::fidl_next::wire::Union::encode_absent(raw);
19266            }
19267
19268            Ok(())
19269        }
19270    }
19271
19272    unsafe impl<'a, ___E>
19273        ::fidl_next::EncodeOption<crate::wire_optional::ConfigValueSource<'static>, ___E>
19274        for &'a ConfigValueSource
19275    where
19276        ___E: ?Sized,
19277        &'a ConfigValueSource: ::fidl_next::Encode<crate::wire::ConfigValueSource<'static>, ___E>,
19278    {
19279        #[inline]
19280        fn encode_option(
19281            this: ::core::option::Option<Self>,
19282            encoder: &mut ___E,
19283            out: &mut ::core::mem::MaybeUninit<crate::wire_optional::ConfigValueSource<'static>>,
19284            _: (),
19285        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
19286            ::fidl_next::munge!(let crate::wire_optional::ConfigValueSource { raw, _phantom: _ } = &mut *out);
19287
19288            if let Some(inner) = this {
19289                let value_out = unsafe { &mut *out.as_mut_ptr().cast() };
19290                ::fidl_next::Encode::encode(inner, encoder, value_out, ())?;
19291            } else {
19292                ::fidl_next::wire::Union::encode_absent(raw);
19293            }
19294
19295            Ok(())
19296        }
19297    }
19298
19299    impl<'de> ::fidl_next::FromWire<crate::wire::ConfigValueSource<'de>> for ConfigValueSource {
19300        #[inline]
19301        fn from_wire(wire: crate::wire::ConfigValueSource<'de>) -> Self {
19302            let wire = ::core::mem::ManuallyDrop::new(wire);
19303            match wire.raw.ordinal() {
19304                1 => Self::PackagePath(::fidl_next::FromWire::from_wire(unsafe {
19305                    wire.raw.get().read_unchecked::<::fidl_next::wire::String<'de>>()
19306                })),
19307
19308                2 => Self::Capabilities(::fidl_next::FromWire::from_wire(unsafe {
19309                    wire.raw.get().read_unchecked::<crate::wire::ConfigSourceCapabilities<'de>>()
19310                })),
19311
19312                ord => return Self::UnknownOrdinal_(ord as u64),
19313            }
19314        }
19315    }
19316
19317    impl<'de> ::fidl_next::FromWireRef<crate::wire::ConfigValueSource<'de>> for ConfigValueSource {
19318        #[inline]
19319        fn from_wire_ref(wire: &crate::wire::ConfigValueSource<'de>) -> Self {
19320            match wire.raw.ordinal() {
19321                1 => Self::PackagePath(::fidl_next::FromWireRef::from_wire_ref(unsafe {
19322                    wire.raw.get().deref_unchecked::<::fidl_next::wire::String<'de>>()
19323                })),
19324
19325                2 => Self::Capabilities(::fidl_next::FromWireRef::from_wire_ref(unsafe {
19326                    wire.raw.get().deref_unchecked::<crate::wire::ConfigSourceCapabilities<'de>>()
19327                })),
19328
19329                ord => return Self::UnknownOrdinal_(ord as u64),
19330            }
19331        }
19332    }
19333
19334    impl<'de> ::fidl_next::FromWireOption<crate::wire_optional::ConfigValueSource<'de>>
19335        for ConfigValueSource
19336    {
19337        #[inline]
19338        fn from_wire_option(
19339            wire: crate::wire_optional::ConfigValueSource<'de>,
19340        ) -> ::core::option::Option<Self> {
19341            if let Some(inner) = wire.into_option() {
19342                Some(::fidl_next::FromWire::from_wire(inner))
19343            } else {
19344                None
19345            }
19346        }
19347    }
19348
19349    impl<'de> ::fidl_next::FromWireOption<crate::wire_optional::ConfigValueSource<'de>>
19350        for Box<ConfigValueSource>
19351    {
19352        #[inline]
19353        fn from_wire_option(
19354            wire: crate::wire_optional::ConfigValueSource<'de>,
19355        ) -> ::core::option::Option<Self> {
19356            <ConfigValueSource as ::fidl_next::FromWireOption<
19357                crate::wire_optional::ConfigValueSource<'de>,
19358            >>::from_wire_option(wire)
19359            .map(Box::new)
19360        }
19361    }
19362
19363    impl<'de> ::fidl_next::FromWireOptionRef<crate::wire_optional::ConfigValueSource<'de>>
19364        for Box<ConfigValueSource>
19365    {
19366        #[inline]
19367        fn from_wire_option_ref(
19368            wire: &crate::wire_optional::ConfigValueSource<'de>,
19369        ) -> ::core::option::Option<Self> {
19370            if let Some(inner) = wire.as_ref() {
19371                Some(Box::new(::fidl_next::FromWireRef::from_wire_ref(inner)))
19372            } else {
19373                None
19374            }
19375        }
19376    }
19377
19378    #[doc = " The schema of a component\'s configuration interface.\n"]
19379    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
19380    pub struct ConfigSchema {
19381        pub fields: ::core::option::Option<::std::vec::Vec<crate::natural::ConfigField>>,
19382
19383        pub checksum: ::core::option::Option<crate::natural::ConfigChecksum>,
19384
19385        pub value_source: ::core::option::Option<crate::natural::ConfigValueSource>,
19386    }
19387
19388    impl ConfigSchema {
19389        fn __max_ordinal(&self) -> usize {
19390            if self.value_source.is_some() {
19391                return 3;
19392            }
19393
19394            if self.checksum.is_some() {
19395                return 2;
19396            }
19397
19398            if self.fields.is_some() {
19399                return 1;
19400            }
19401
19402            0
19403        }
19404    }
19405
19406    unsafe impl<___E> ::fidl_next::Encode<crate::wire::ConfigSchema<'static>, ___E> for ConfigSchema
19407    where
19408        ___E: ::fidl_next::Encoder + ?Sized,
19409    {
19410        #[inline]
19411        fn encode(
19412            mut self,
19413            encoder: &mut ___E,
19414            out: &mut ::core::mem::MaybeUninit<crate::wire::ConfigSchema<'static>>,
19415            _: (),
19416        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
19417            ::fidl_next::munge!(let crate::wire::ConfigSchema { table } = out);
19418
19419            let max_ord = self.__max_ordinal();
19420
19421            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
19422            ::fidl_next::Wire::zero_padding(&mut out);
19423
19424            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
19425                ::fidl_next::wire::Envelope,
19426            >(encoder, max_ord);
19427
19428            for i in 1..=max_ord {
19429                match i {
19430                    3 => {
19431                        if let Some(value) = self.value_source.take() {
19432                            ::fidl_next::wire::Envelope::encode_value::<
19433                                crate::wire::ConfigValueSource<'static>,
19434                                ___E,
19435                            >(
19436                                value, preallocated.encoder, &mut out, ()
19437                            )?;
19438                        } else {
19439                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
19440                        }
19441                    }
19442
19443                    2 => {
19444                        if let Some(value) = self.checksum.take() {
19445                            ::fidl_next::wire::Envelope::encode_value::<
19446                                crate::wire::ConfigChecksum<'static>,
19447                                ___E,
19448                            >(
19449                                value, preallocated.encoder, &mut out, ()
19450                            )?;
19451                        } else {
19452                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
19453                        }
19454                    }
19455
19456                    1 => {
19457                        if let Some(value) = self.fields.take() {
19458                            ::fidl_next::wire::Envelope::encode_value::<
19459                                ::fidl_next::wire::Vector<
19460                                    'static,
19461                                    crate::wire::ConfigField<'static>,
19462                                >,
19463                                ___E,
19464                            >(
19465                                value, preallocated.encoder, &mut out, (4294967295, ())
19466                            )?;
19467                        } else {
19468                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
19469                        }
19470                    }
19471
19472                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
19473                }
19474                unsafe {
19475                    preallocated.write_next(out.assume_init_ref());
19476                }
19477            }
19478
19479            ::fidl_next::wire::Table::encode_len(table, max_ord);
19480
19481            Ok(())
19482        }
19483    }
19484
19485    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::ConfigSchema<'static>, ___E>
19486        for &'a ConfigSchema
19487    where
19488        ___E: ::fidl_next::Encoder + ?Sized,
19489    {
19490        #[inline]
19491        fn encode(
19492            self,
19493            encoder: &mut ___E,
19494            out: &mut ::core::mem::MaybeUninit<crate::wire::ConfigSchema<'static>>,
19495            _: (),
19496        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
19497            ::fidl_next::munge!(let crate::wire::ConfigSchema { table } = out);
19498
19499            let max_ord = self.__max_ordinal();
19500
19501            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
19502            ::fidl_next::Wire::zero_padding(&mut out);
19503
19504            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
19505                ::fidl_next::wire::Envelope,
19506            >(encoder, max_ord);
19507
19508            for i in 1..=max_ord {
19509                match i {
19510                    3 => {
19511                        if let Some(value) = &self.value_source {
19512                            ::fidl_next::wire::Envelope::encode_value::<
19513                                crate::wire::ConfigValueSource<'static>,
19514                                ___E,
19515                            >(
19516                                value, preallocated.encoder, &mut out, ()
19517                            )?;
19518                        } else {
19519                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
19520                        }
19521                    }
19522
19523                    2 => {
19524                        if let Some(value) = &self.checksum {
19525                            ::fidl_next::wire::Envelope::encode_value::<
19526                                crate::wire::ConfigChecksum<'static>,
19527                                ___E,
19528                            >(
19529                                value, preallocated.encoder, &mut out, ()
19530                            )?;
19531                        } else {
19532                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
19533                        }
19534                    }
19535
19536                    1 => {
19537                        if let Some(value) = &self.fields {
19538                            ::fidl_next::wire::Envelope::encode_value::<
19539                                ::fidl_next::wire::Vector<
19540                                    'static,
19541                                    crate::wire::ConfigField<'static>,
19542                                >,
19543                                ___E,
19544                            >(
19545                                value, preallocated.encoder, &mut out, (4294967295, ())
19546                            )?;
19547                        } else {
19548                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
19549                        }
19550                    }
19551
19552                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
19553                }
19554                unsafe {
19555                    preallocated.write_next(out.assume_init_ref());
19556                }
19557            }
19558
19559            ::fidl_next::wire::Table::encode_len(table, max_ord);
19560
19561            Ok(())
19562        }
19563    }
19564
19565    impl<'de> ::fidl_next::FromWire<crate::wire::ConfigSchema<'de>> for ConfigSchema {
19566        #[inline]
19567        fn from_wire(wire_: crate::wire::ConfigSchema<'de>) -> Self {
19568            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
19569
19570            let fields = wire_.table.get(1);
19571
19572            let checksum = wire_.table.get(2);
19573
19574            let value_source = wire_.table.get(3);
19575
19576            Self {
19577
19578
19579                fields: fields.map(|envelope| ::fidl_next::FromWire::from_wire(
19580                    unsafe { envelope.read_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::ConfigField<'de>>>() }
19581                )),
19582
19583
19584                checksum: checksum.map(|envelope| ::fidl_next::FromWire::from_wire(
19585                    unsafe { envelope.read_unchecked::<crate::wire::ConfigChecksum<'de>>() }
19586                )),
19587
19588
19589                value_source: value_source.map(|envelope| ::fidl_next::FromWire::from_wire(
19590                    unsafe { envelope.read_unchecked::<crate::wire::ConfigValueSource<'de>>() }
19591                )),
19592
19593        }
19594        }
19595    }
19596
19597    impl<'de> ::fidl_next::FromWireRef<crate::wire::ConfigSchema<'de>> for ConfigSchema {
19598        #[inline]
19599        fn from_wire_ref(wire: &crate::wire::ConfigSchema<'de>) -> Self {
19600            Self {
19601
19602
19603                fields: wire.table.get(1)
19604                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
19605                        unsafe { envelope.deref_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::ConfigField<'de>>>() }
19606                    )),
19607
19608
19609                checksum: wire.table.get(2)
19610                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
19611                        unsafe { envelope.deref_unchecked::<crate::wire::ConfigChecksum<'de>>() }
19612                    )),
19613
19614
19615                value_source: wire.table.get(3)
19616                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
19617                        unsafe { envelope.deref_unchecked::<crate::wire::ConfigValueSource<'de>>() }
19618                    )),
19619
19620        }
19621        }
19622    }
19623
19624    #[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"]
19625    #[derive(Debug, Default, Clone, PartialEq)]
19626    pub struct Component {
19627        pub program: ::core::option::Option<crate::natural::Program>,
19628
19629        pub uses: ::core::option::Option<::std::vec::Vec<crate::natural::Use>>,
19630
19631        pub exposes: ::core::option::Option<::std::vec::Vec<crate::natural::Expose>>,
19632
19633        pub offers: ::core::option::Option<::std::vec::Vec<crate::natural::Offer>>,
19634
19635        pub capabilities: ::core::option::Option<::std::vec::Vec<crate::natural::Capability>>,
19636
19637        pub children: ::core::option::Option<::std::vec::Vec<crate::natural::Child>>,
19638
19639        pub collections: ::core::option::Option<::std::vec::Vec<crate::natural::Collection>>,
19640
19641        pub environments: ::core::option::Option<::std::vec::Vec<crate::natural::Environment>>,
19642
19643        pub facets: ::core::option::Option<::fidl_next_common_fuchsia_data::natural::Dictionary>,
19644
19645        pub config: ::core::option::Option<crate::natural::ConfigSchema>,
19646
19647        pub debug_info: ::core::option::Option<crate::natural::DebugInfo>,
19648    }
19649
19650    impl Component {
19651        fn __max_ordinal(&self) -> usize {
19652            if self.debug_info.is_some() {
19653                return 11;
19654            }
19655
19656            if self.config.is_some() {
19657                return 10;
19658            }
19659
19660            if self.facets.is_some() {
19661                return 9;
19662            }
19663
19664            if self.environments.is_some() {
19665                return 8;
19666            }
19667
19668            if self.collections.is_some() {
19669                return 7;
19670            }
19671
19672            if self.children.is_some() {
19673                return 6;
19674            }
19675
19676            if self.capabilities.is_some() {
19677                return 5;
19678            }
19679
19680            if self.offers.is_some() {
19681                return 4;
19682            }
19683
19684            if self.exposes.is_some() {
19685                return 3;
19686            }
19687
19688            if self.uses.is_some() {
19689                return 2;
19690            }
19691
19692            if self.program.is_some() {
19693                return 1;
19694            }
19695
19696            0
19697        }
19698    }
19699
19700    unsafe impl<___E> ::fidl_next::Encode<crate::wire::Component<'static>, ___E> for Component
19701    where
19702        ___E: ::fidl_next::Encoder + ?Sized,
19703    {
19704        #[inline]
19705        fn encode(
19706            mut self,
19707            encoder: &mut ___E,
19708            out: &mut ::core::mem::MaybeUninit<crate::wire::Component<'static>>,
19709            _: (),
19710        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
19711            ::fidl_next::munge!(let crate::wire::Component { table } = out);
19712
19713            let max_ord = self.__max_ordinal();
19714
19715            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
19716            ::fidl_next::Wire::zero_padding(&mut out);
19717
19718            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
19719                ::fidl_next::wire::Envelope,
19720            >(encoder, max_ord);
19721
19722            for i in 1..=max_ord {
19723                match i {
19724                    11 => {
19725                        if let Some(value) = self.debug_info.take() {
19726                            ::fidl_next::wire::Envelope::encode_value::<
19727                                crate::wire::DebugInfo<'static>,
19728                                ___E,
19729                            >(
19730                                value, preallocated.encoder, &mut out, ()
19731                            )?;
19732                        } else {
19733                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
19734                        }
19735                    }
19736
19737                    10 => {
19738                        if let Some(value) = self.config.take() {
19739                            ::fidl_next::wire::Envelope::encode_value::<
19740                                crate::wire::ConfigSchema<'static>,
19741                                ___E,
19742                            >(
19743                                value, preallocated.encoder, &mut out, ()
19744                            )?;
19745                        } else {
19746                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
19747                        }
19748                    }
19749
19750                    9 => {
19751                        if let Some(value) = self.facets.take() {
19752                            ::fidl_next::wire::Envelope::encode_value::<
19753                                ::fidl_next_common_fuchsia_data::wire::Dictionary<'static>,
19754                                ___E,
19755                            >(
19756                                value, preallocated.encoder, &mut out, ()
19757                            )?;
19758                        } else {
19759                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
19760                        }
19761                    }
19762
19763                    8 => {
19764                        if let Some(value) = self.environments.take() {
19765                            ::fidl_next::wire::Envelope::encode_value::<
19766                                ::fidl_next::wire::Vector<
19767                                    'static,
19768                                    crate::wire::Environment<'static>,
19769                                >,
19770                                ___E,
19771                            >(
19772                                value, preallocated.encoder, &mut out, (4294967295, ())
19773                            )?;
19774                        } else {
19775                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
19776                        }
19777                    }
19778
19779                    7 => {
19780                        if let Some(value) = self.collections.take() {
19781                            ::fidl_next::wire::Envelope::encode_value::<
19782                                ::fidl_next::wire::Vector<
19783                                    'static,
19784                                    crate::wire::Collection<'static>,
19785                                >,
19786                                ___E,
19787                            >(
19788                                value, preallocated.encoder, &mut out, (4294967295, ())
19789                            )?;
19790                        } else {
19791                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
19792                        }
19793                    }
19794
19795                    6 => {
19796                        if let Some(value) = self.children.take() {
19797                            ::fidl_next::wire::Envelope::encode_value::<
19798                                ::fidl_next::wire::Vector<'static, crate::wire::Child<'static>>,
19799                                ___E,
19800                            >(
19801                                value, preallocated.encoder, &mut out, (4294967295, ())
19802                            )?;
19803                        } else {
19804                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
19805                        }
19806                    }
19807
19808                    5 => {
19809                        if let Some(value) = self.capabilities.take() {
19810                            ::fidl_next::wire::Envelope::encode_value::<
19811                                ::fidl_next::wire::Vector<
19812                                    'static,
19813                                    crate::wire::Capability<'static>,
19814                                >,
19815                                ___E,
19816                            >(
19817                                value, preallocated.encoder, &mut out, (4294967295, ())
19818                            )?;
19819                        } else {
19820                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
19821                        }
19822                    }
19823
19824                    4 => {
19825                        if let Some(value) = self.offers.take() {
19826                            ::fidl_next::wire::Envelope::encode_value::<
19827                                ::fidl_next::wire::Vector<'static, crate::wire::Offer<'static>>,
19828                                ___E,
19829                            >(
19830                                value, preallocated.encoder, &mut out, (4294967295, ())
19831                            )?;
19832                        } else {
19833                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
19834                        }
19835                    }
19836
19837                    3 => {
19838                        if let Some(value) = self.exposes.take() {
19839                            ::fidl_next::wire::Envelope::encode_value::<
19840                                ::fidl_next::wire::Vector<'static, crate::wire::Expose<'static>>,
19841                                ___E,
19842                            >(
19843                                value, preallocated.encoder, &mut out, (4294967295, ())
19844                            )?;
19845                        } else {
19846                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
19847                        }
19848                    }
19849
19850                    2 => {
19851                        if let Some(value) = self.uses.take() {
19852                            ::fidl_next::wire::Envelope::encode_value::<
19853                                ::fidl_next::wire::Vector<'static, crate::wire::Use<'static>>,
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                    1 => {
19864                        if let Some(value) = self.program.take() {
19865                            ::fidl_next::wire::Envelope::encode_value::<
19866                                crate::wire::Program<'static>,
19867                                ___E,
19868                            >(
19869                                value, preallocated.encoder, &mut out, ()
19870                            )?;
19871                        } else {
19872                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
19873                        }
19874                    }
19875
19876                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
19877                }
19878                unsafe {
19879                    preallocated.write_next(out.assume_init_ref());
19880                }
19881            }
19882
19883            ::fidl_next::wire::Table::encode_len(table, max_ord);
19884
19885            Ok(())
19886        }
19887    }
19888
19889    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::Component<'static>, ___E> for &'a Component
19890    where
19891        ___E: ::fidl_next::Encoder + ?Sized,
19892    {
19893        #[inline]
19894        fn encode(
19895            self,
19896            encoder: &mut ___E,
19897            out: &mut ::core::mem::MaybeUninit<crate::wire::Component<'static>>,
19898            _: (),
19899        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
19900            ::fidl_next::munge!(let crate::wire::Component { table } = out);
19901
19902            let max_ord = self.__max_ordinal();
19903
19904            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
19905            ::fidl_next::Wire::zero_padding(&mut out);
19906
19907            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
19908                ::fidl_next::wire::Envelope,
19909            >(encoder, max_ord);
19910
19911            for i in 1..=max_ord {
19912                match i {
19913                    11 => {
19914                        if let Some(value) = &self.debug_info {
19915                            ::fidl_next::wire::Envelope::encode_value::<
19916                                crate::wire::DebugInfo<'static>,
19917                                ___E,
19918                            >(
19919                                value, preallocated.encoder, &mut out, ()
19920                            )?;
19921                        } else {
19922                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
19923                        }
19924                    }
19925
19926                    10 => {
19927                        if let Some(value) = &self.config {
19928                            ::fidl_next::wire::Envelope::encode_value::<
19929                                crate::wire::ConfigSchema<'static>,
19930                                ___E,
19931                            >(
19932                                value, preallocated.encoder, &mut out, ()
19933                            )?;
19934                        } else {
19935                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
19936                        }
19937                    }
19938
19939                    9 => {
19940                        if let Some(value) = &self.facets {
19941                            ::fidl_next::wire::Envelope::encode_value::<
19942                                ::fidl_next_common_fuchsia_data::wire::Dictionary<'static>,
19943                                ___E,
19944                            >(
19945                                value, preallocated.encoder, &mut out, ()
19946                            )?;
19947                        } else {
19948                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
19949                        }
19950                    }
19951
19952                    8 => {
19953                        if let Some(value) = &self.environments {
19954                            ::fidl_next::wire::Envelope::encode_value::<
19955                                ::fidl_next::wire::Vector<
19956                                    'static,
19957                                    crate::wire::Environment<'static>,
19958                                >,
19959                                ___E,
19960                            >(
19961                                value, preallocated.encoder, &mut out, (4294967295, ())
19962                            )?;
19963                        } else {
19964                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
19965                        }
19966                    }
19967
19968                    7 => {
19969                        if let Some(value) = &self.collections {
19970                            ::fidl_next::wire::Envelope::encode_value::<
19971                                ::fidl_next::wire::Vector<
19972                                    'static,
19973                                    crate::wire::Collection<'static>,
19974                                >,
19975                                ___E,
19976                            >(
19977                                value, preallocated.encoder, &mut out, (4294967295, ())
19978                            )?;
19979                        } else {
19980                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
19981                        }
19982                    }
19983
19984                    6 => {
19985                        if let Some(value) = &self.children {
19986                            ::fidl_next::wire::Envelope::encode_value::<
19987                                ::fidl_next::wire::Vector<'static, crate::wire::Child<'static>>,
19988                                ___E,
19989                            >(
19990                                value, preallocated.encoder, &mut out, (4294967295, ())
19991                            )?;
19992                        } else {
19993                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
19994                        }
19995                    }
19996
19997                    5 => {
19998                        if let Some(value) = &self.capabilities {
19999                            ::fidl_next::wire::Envelope::encode_value::<
20000                                ::fidl_next::wire::Vector<
20001                                    'static,
20002                                    crate::wire::Capability<'static>,
20003                                >,
20004                                ___E,
20005                            >(
20006                                value, preallocated.encoder, &mut out, (4294967295, ())
20007                            )?;
20008                        } else {
20009                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
20010                        }
20011                    }
20012
20013                    4 => {
20014                        if let Some(value) = &self.offers {
20015                            ::fidl_next::wire::Envelope::encode_value::<
20016                                ::fidl_next::wire::Vector<'static, crate::wire::Offer<'static>>,
20017                                ___E,
20018                            >(
20019                                value, preallocated.encoder, &mut out, (4294967295, ())
20020                            )?;
20021                        } else {
20022                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
20023                        }
20024                    }
20025
20026                    3 => {
20027                        if let Some(value) = &self.exposes {
20028                            ::fidl_next::wire::Envelope::encode_value::<
20029                                ::fidl_next::wire::Vector<'static, crate::wire::Expose<'static>>,
20030                                ___E,
20031                            >(
20032                                value, preallocated.encoder, &mut out, (4294967295, ())
20033                            )?;
20034                        } else {
20035                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
20036                        }
20037                    }
20038
20039                    2 => {
20040                        if let Some(value) = &self.uses {
20041                            ::fidl_next::wire::Envelope::encode_value::<
20042                                ::fidl_next::wire::Vector<'static, crate::wire::Use<'static>>,
20043                                ___E,
20044                            >(
20045                                value, preallocated.encoder, &mut out, (4294967295, ())
20046                            )?;
20047                        } else {
20048                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
20049                        }
20050                    }
20051
20052                    1 => {
20053                        if let Some(value) = &self.program {
20054                            ::fidl_next::wire::Envelope::encode_value::<
20055                                crate::wire::Program<'static>,
20056                                ___E,
20057                            >(
20058                                value, preallocated.encoder, &mut out, ()
20059                            )?;
20060                        } else {
20061                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
20062                        }
20063                    }
20064
20065                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
20066                }
20067                unsafe {
20068                    preallocated.write_next(out.assume_init_ref());
20069                }
20070            }
20071
20072            ::fidl_next::wire::Table::encode_len(table, max_ord);
20073
20074            Ok(())
20075        }
20076    }
20077
20078    impl<'de> ::fidl_next::FromWire<crate::wire::Component<'de>> for Component {
20079        #[inline]
20080        fn from_wire(wire_: crate::wire::Component<'de>) -> Self {
20081            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
20082
20083            let program = wire_.table.get(1);
20084
20085            let uses = wire_.table.get(2);
20086
20087            let exposes = wire_.table.get(3);
20088
20089            let offers = wire_.table.get(4);
20090
20091            let capabilities = wire_.table.get(5);
20092
20093            let children = wire_.table.get(6);
20094
20095            let collections = wire_.table.get(7);
20096
20097            let environments = wire_.table.get(8);
20098
20099            let facets = wire_.table.get(9);
20100
20101            let config = wire_.table.get(10);
20102
20103            let debug_info = wire_.table.get(11);
20104
20105            Self {
20106
20107
20108                program: program.map(|envelope| ::fidl_next::FromWire::from_wire(
20109                    unsafe { envelope.read_unchecked::<crate::wire::Program<'de>>() }
20110                )),
20111
20112
20113                uses: uses.map(|envelope| ::fidl_next::FromWire::from_wire(
20114                    unsafe { envelope.read_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::Use<'de>>>() }
20115                )),
20116
20117
20118                exposes: exposes.map(|envelope| ::fidl_next::FromWire::from_wire(
20119                    unsafe { envelope.read_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::Expose<'de>>>() }
20120                )),
20121
20122
20123                offers: offers.map(|envelope| ::fidl_next::FromWire::from_wire(
20124                    unsafe { envelope.read_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::Offer<'de>>>() }
20125                )),
20126
20127
20128                capabilities: capabilities.map(|envelope| ::fidl_next::FromWire::from_wire(
20129                    unsafe { envelope.read_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::Capability<'de>>>() }
20130                )),
20131
20132
20133                children: children.map(|envelope| ::fidl_next::FromWire::from_wire(
20134                    unsafe { envelope.read_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::Child<'de>>>() }
20135                )),
20136
20137
20138                collections: collections.map(|envelope| ::fidl_next::FromWire::from_wire(
20139                    unsafe { envelope.read_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::Collection<'de>>>() }
20140                )),
20141
20142
20143                environments: environments.map(|envelope| ::fidl_next::FromWire::from_wire(
20144                    unsafe { envelope.read_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::Environment<'de>>>() }
20145                )),
20146
20147
20148                facets: facets.map(|envelope| ::fidl_next::FromWire::from_wire(
20149                    unsafe { envelope.read_unchecked::<::fidl_next_common_fuchsia_data::wire::Dictionary<'de>>() }
20150                )),
20151
20152
20153                config: config.map(|envelope| ::fidl_next::FromWire::from_wire(
20154                    unsafe { envelope.read_unchecked::<crate::wire::ConfigSchema<'de>>() }
20155                )),
20156
20157
20158                debug_info: debug_info.map(|envelope| ::fidl_next::FromWire::from_wire(
20159                    unsafe { envelope.read_unchecked::<crate::wire::DebugInfo<'de>>() }
20160                )),
20161
20162        }
20163        }
20164    }
20165
20166    impl<'de> ::fidl_next::FromWireRef<crate::wire::Component<'de>> for Component {
20167        #[inline]
20168        fn from_wire_ref(wire: &crate::wire::Component<'de>) -> Self {
20169            Self {
20170
20171
20172                program: wire.table.get(1)
20173                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
20174                        unsafe { envelope.deref_unchecked::<crate::wire::Program<'de>>() }
20175                    )),
20176
20177
20178                uses: wire.table.get(2)
20179                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
20180                        unsafe { envelope.deref_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::Use<'de>>>() }
20181                    )),
20182
20183
20184                exposes: wire.table.get(3)
20185                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
20186                        unsafe { envelope.deref_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::Expose<'de>>>() }
20187                    )),
20188
20189
20190                offers: wire.table.get(4)
20191                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
20192                        unsafe { envelope.deref_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::Offer<'de>>>() }
20193                    )),
20194
20195
20196                capabilities: wire.table.get(5)
20197                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
20198                        unsafe { envelope.deref_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::Capability<'de>>>() }
20199                    )),
20200
20201
20202                children: wire.table.get(6)
20203                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
20204                        unsafe { envelope.deref_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::Child<'de>>>() }
20205                    )),
20206
20207
20208                collections: wire.table.get(7)
20209                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
20210                        unsafe { envelope.deref_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::Collection<'de>>>() }
20211                    )),
20212
20213
20214                environments: wire.table.get(8)
20215                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
20216                        unsafe { envelope.deref_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::Environment<'de>>>() }
20217                    )),
20218
20219
20220                facets: wire.table.get(9)
20221                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
20222                        unsafe { envelope.deref_unchecked::<::fidl_next_common_fuchsia_data::wire::Dictionary<'de>>() }
20223                    )),
20224
20225
20226                config: wire.table.get(10)
20227                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
20228                        unsafe { envelope.deref_unchecked::<crate::wire::ConfigSchema<'de>>() }
20229                    )),
20230
20231
20232                debug_info: wire.table.get(11)
20233                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
20234                        unsafe { envelope.deref_unchecked::<crate::wire::DebugInfo<'de>>() }
20235                    )),
20236
20237        }
20238        }
20239    }
20240
20241    #[doc = " An individual configuration value. It is matched against a specific configuration field based\n on its offset within `ValuesData.values`.\n"]
20242    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
20243    pub struct ConfigValueSpec {
20244        pub value: ::core::option::Option<crate::natural::ConfigValue>,
20245    }
20246
20247    impl ConfigValueSpec {
20248        fn __max_ordinal(&self) -> usize {
20249            if self.value.is_some() {
20250                return 1;
20251            }
20252
20253            0
20254        }
20255    }
20256
20257    unsafe impl<___E> ::fidl_next::Encode<crate::wire::ConfigValueSpec<'static>, ___E>
20258        for ConfigValueSpec
20259    where
20260        ___E: ::fidl_next::Encoder + ?Sized,
20261    {
20262        #[inline]
20263        fn encode(
20264            mut self,
20265            encoder: &mut ___E,
20266            out: &mut ::core::mem::MaybeUninit<crate::wire::ConfigValueSpec<'static>>,
20267            _: (),
20268        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
20269            ::fidl_next::munge!(let crate::wire::ConfigValueSpec { table } = out);
20270
20271            let max_ord = self.__max_ordinal();
20272
20273            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
20274            ::fidl_next::Wire::zero_padding(&mut out);
20275
20276            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
20277                ::fidl_next::wire::Envelope,
20278            >(encoder, max_ord);
20279
20280            for i in 1..=max_ord {
20281                match i {
20282                    1 => {
20283                        if let Some(value) = self.value.take() {
20284                            ::fidl_next::wire::Envelope::encode_value::<
20285                                crate::wire::ConfigValue<'static>,
20286                                ___E,
20287                            >(
20288                                value, preallocated.encoder, &mut out, ()
20289                            )?;
20290                        } else {
20291                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
20292                        }
20293                    }
20294
20295                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
20296                }
20297                unsafe {
20298                    preallocated.write_next(out.assume_init_ref());
20299                }
20300            }
20301
20302            ::fidl_next::wire::Table::encode_len(table, max_ord);
20303
20304            Ok(())
20305        }
20306    }
20307
20308    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::ConfigValueSpec<'static>, ___E>
20309        for &'a ConfigValueSpec
20310    where
20311        ___E: ::fidl_next::Encoder + ?Sized,
20312    {
20313        #[inline]
20314        fn encode(
20315            self,
20316            encoder: &mut ___E,
20317            out: &mut ::core::mem::MaybeUninit<crate::wire::ConfigValueSpec<'static>>,
20318            _: (),
20319        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
20320            ::fidl_next::munge!(let crate::wire::ConfigValueSpec { table } = out);
20321
20322            let max_ord = self.__max_ordinal();
20323
20324            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
20325            ::fidl_next::Wire::zero_padding(&mut out);
20326
20327            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
20328                ::fidl_next::wire::Envelope,
20329            >(encoder, max_ord);
20330
20331            for i in 1..=max_ord {
20332                match i {
20333                    1 => {
20334                        if let Some(value) = &self.value {
20335                            ::fidl_next::wire::Envelope::encode_value::<
20336                                crate::wire::ConfigValue<'static>,
20337                                ___E,
20338                            >(
20339                                value, preallocated.encoder, &mut out, ()
20340                            )?;
20341                        } else {
20342                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
20343                        }
20344                    }
20345
20346                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
20347                }
20348                unsafe {
20349                    preallocated.write_next(out.assume_init_ref());
20350                }
20351            }
20352
20353            ::fidl_next::wire::Table::encode_len(table, max_ord);
20354
20355            Ok(())
20356        }
20357    }
20358
20359    impl<'de> ::fidl_next::FromWire<crate::wire::ConfigValueSpec<'de>> for ConfigValueSpec {
20360        #[inline]
20361        fn from_wire(wire_: crate::wire::ConfigValueSpec<'de>) -> Self {
20362            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
20363
20364            let value = wire_.table.get(1);
20365
20366            Self {
20367                value: value.map(|envelope| {
20368                    ::fidl_next::FromWire::from_wire(unsafe {
20369                        envelope.read_unchecked::<crate::wire::ConfigValue<'de>>()
20370                    })
20371                }),
20372            }
20373        }
20374    }
20375
20376    impl<'de> ::fidl_next::FromWireRef<crate::wire::ConfigValueSpec<'de>> for ConfigValueSpec {
20377        #[inline]
20378        fn from_wire_ref(wire: &crate::wire::ConfigValueSpec<'de>) -> Self {
20379            Self {
20380                value: wire.table.get(1).map(|envelope| {
20381                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
20382                        envelope.deref_unchecked::<crate::wire::ConfigValue<'de>>()
20383                    })
20384                }),
20385            }
20386        }
20387    }
20388
20389    #[doc = " Contents of the configuration value file. Defines the base values for a component\'s config.\n"]
20390    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
20391    pub struct ConfigValuesData {
20392        pub values: ::core::option::Option<::std::vec::Vec<crate::natural::ConfigValueSpec>>,
20393
20394        pub checksum: ::core::option::Option<crate::natural::ConfigChecksum>,
20395    }
20396
20397    impl ConfigValuesData {
20398        fn __max_ordinal(&self) -> usize {
20399            if self.checksum.is_some() {
20400                return 2;
20401            }
20402
20403            if self.values.is_some() {
20404                return 1;
20405            }
20406
20407            0
20408        }
20409    }
20410
20411    unsafe impl<___E> ::fidl_next::Encode<crate::wire::ConfigValuesData<'static>, ___E>
20412        for ConfigValuesData
20413    where
20414        ___E: ::fidl_next::Encoder + ?Sized,
20415    {
20416        #[inline]
20417        fn encode(
20418            mut self,
20419            encoder: &mut ___E,
20420            out: &mut ::core::mem::MaybeUninit<crate::wire::ConfigValuesData<'static>>,
20421            _: (),
20422        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
20423            ::fidl_next::munge!(let crate::wire::ConfigValuesData { table } = out);
20424
20425            let max_ord = self.__max_ordinal();
20426
20427            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
20428            ::fidl_next::Wire::zero_padding(&mut out);
20429
20430            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
20431                ::fidl_next::wire::Envelope,
20432            >(encoder, max_ord);
20433
20434            for i in 1..=max_ord {
20435                match i {
20436                    2 => {
20437                        if let Some(value) = self.checksum.take() {
20438                            ::fidl_next::wire::Envelope::encode_value::<
20439                                crate::wire::ConfigChecksum<'static>,
20440                                ___E,
20441                            >(
20442                                value, preallocated.encoder, &mut out, ()
20443                            )?;
20444                        } else {
20445                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
20446                        }
20447                    }
20448
20449                    1 => {
20450                        if let Some(value) = self.values.take() {
20451                            ::fidl_next::wire::Envelope::encode_value::<
20452                                ::fidl_next::wire::Vector<
20453                                    'static,
20454                                    crate::wire::ConfigValueSpec<'static>,
20455                                >,
20456                                ___E,
20457                            >(
20458                                value, preallocated.encoder, &mut out, (4294967295, ())
20459                            )?;
20460                        } else {
20461                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
20462                        }
20463                    }
20464
20465                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
20466                }
20467                unsafe {
20468                    preallocated.write_next(out.assume_init_ref());
20469                }
20470            }
20471
20472            ::fidl_next::wire::Table::encode_len(table, max_ord);
20473
20474            Ok(())
20475        }
20476    }
20477
20478    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::ConfigValuesData<'static>, ___E>
20479        for &'a ConfigValuesData
20480    where
20481        ___E: ::fidl_next::Encoder + ?Sized,
20482    {
20483        #[inline]
20484        fn encode(
20485            self,
20486            encoder: &mut ___E,
20487            out: &mut ::core::mem::MaybeUninit<crate::wire::ConfigValuesData<'static>>,
20488            _: (),
20489        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
20490            ::fidl_next::munge!(let crate::wire::ConfigValuesData { table } = out);
20491
20492            let max_ord = self.__max_ordinal();
20493
20494            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
20495            ::fidl_next::Wire::zero_padding(&mut out);
20496
20497            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
20498                ::fidl_next::wire::Envelope,
20499            >(encoder, max_ord);
20500
20501            for i in 1..=max_ord {
20502                match i {
20503                    2 => {
20504                        if let Some(value) = &self.checksum {
20505                            ::fidl_next::wire::Envelope::encode_value::<
20506                                crate::wire::ConfigChecksum<'static>,
20507                                ___E,
20508                            >(
20509                                value, preallocated.encoder, &mut out, ()
20510                            )?;
20511                        } else {
20512                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
20513                        }
20514                    }
20515
20516                    1 => {
20517                        if let Some(value) = &self.values {
20518                            ::fidl_next::wire::Envelope::encode_value::<
20519                                ::fidl_next::wire::Vector<
20520                                    'static,
20521                                    crate::wire::ConfigValueSpec<'static>,
20522                                >,
20523                                ___E,
20524                            >(
20525                                value, preallocated.encoder, &mut out, (4294967295, ())
20526                            )?;
20527                        } else {
20528                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
20529                        }
20530                    }
20531
20532                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
20533                }
20534                unsafe {
20535                    preallocated.write_next(out.assume_init_ref());
20536                }
20537            }
20538
20539            ::fidl_next::wire::Table::encode_len(table, max_ord);
20540
20541            Ok(())
20542        }
20543    }
20544
20545    impl<'de> ::fidl_next::FromWire<crate::wire::ConfigValuesData<'de>> for ConfigValuesData {
20546        #[inline]
20547        fn from_wire(wire_: crate::wire::ConfigValuesData<'de>) -> Self {
20548            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
20549
20550            let values = wire_.table.get(1);
20551
20552            let checksum = wire_.table.get(2);
20553
20554            Self {
20555
20556
20557                values: values.map(|envelope| ::fidl_next::FromWire::from_wire(
20558                    unsafe { envelope.read_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::ConfigValueSpec<'de>>>() }
20559                )),
20560
20561
20562                checksum: checksum.map(|envelope| ::fidl_next::FromWire::from_wire(
20563                    unsafe { envelope.read_unchecked::<crate::wire::ConfigChecksum<'de>>() }
20564                )),
20565
20566        }
20567        }
20568    }
20569
20570    impl<'de> ::fidl_next::FromWireRef<crate::wire::ConfigValuesData<'de>> for ConfigValuesData {
20571        #[inline]
20572        fn from_wire_ref(wire: &crate::wire::ConfigValuesData<'de>) -> Self {
20573            Self {
20574
20575
20576                values: wire.table.get(1)
20577                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
20578                        unsafe { envelope.deref_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::ConfigValueSpec<'de>>>() }
20579                    )),
20580
20581
20582                checksum: wire.table.get(2)
20583                    .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
20584                        unsafe { envelope.deref_unchecked::<crate::wire::ConfigChecksum<'de>>() }
20585                    )),
20586
20587        }
20588        }
20589    }
20590
20591    #[doc = " Indicates the event name to subscribe to with a given event mode.\n"]
20592    #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
20593    pub struct EventSubscription {
20594        pub event_name: ::core::option::Option<::std::string::String>,
20595    }
20596
20597    impl EventSubscription {
20598        fn __max_ordinal(&self) -> usize {
20599            if self.event_name.is_some() {
20600                return 1;
20601            }
20602
20603            0
20604        }
20605    }
20606
20607    unsafe impl<___E> ::fidl_next::Encode<crate::wire::EventSubscription<'static>, ___E>
20608        for EventSubscription
20609    where
20610        ___E: ::fidl_next::Encoder + ?Sized,
20611    {
20612        #[inline]
20613        fn encode(
20614            mut self,
20615            encoder: &mut ___E,
20616            out: &mut ::core::mem::MaybeUninit<crate::wire::EventSubscription<'static>>,
20617            _: (),
20618        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
20619            ::fidl_next::munge!(let crate::wire::EventSubscription { table } = out);
20620
20621            let max_ord = self.__max_ordinal();
20622
20623            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
20624            ::fidl_next::Wire::zero_padding(&mut out);
20625
20626            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
20627                ::fidl_next::wire::Envelope,
20628            >(encoder, max_ord);
20629
20630            for i in 1..=max_ord {
20631                match i {
20632                    1 => {
20633                        if let Some(value) = self.event_name.take() {
20634                            ::fidl_next::wire::Envelope::encode_value::<
20635                                ::fidl_next::wire::String<'static>,
20636                                ___E,
20637                            >(
20638                                value, preallocated.encoder, &mut out, 100
20639                            )?;
20640                        } else {
20641                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
20642                        }
20643                    }
20644
20645                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
20646                }
20647                unsafe {
20648                    preallocated.write_next(out.assume_init_ref());
20649                }
20650            }
20651
20652            ::fidl_next::wire::Table::encode_len(table, max_ord);
20653
20654            Ok(())
20655        }
20656    }
20657
20658    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::EventSubscription<'static>, ___E>
20659        for &'a EventSubscription
20660    where
20661        ___E: ::fidl_next::Encoder + ?Sized,
20662    {
20663        #[inline]
20664        fn encode(
20665            self,
20666            encoder: &mut ___E,
20667            out: &mut ::core::mem::MaybeUninit<crate::wire::EventSubscription<'static>>,
20668            _: (),
20669        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
20670            ::fidl_next::munge!(let crate::wire::EventSubscription { table } = out);
20671
20672            let max_ord = self.__max_ordinal();
20673
20674            let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
20675            ::fidl_next::Wire::zero_padding(&mut out);
20676
20677            let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
20678                ::fidl_next::wire::Envelope,
20679            >(encoder, max_ord);
20680
20681            for i in 1..=max_ord {
20682                match i {
20683                    1 => {
20684                        if let Some(value) = &self.event_name {
20685                            ::fidl_next::wire::Envelope::encode_value::<
20686                                ::fidl_next::wire::String<'static>,
20687                                ___E,
20688                            >(
20689                                value, preallocated.encoder, &mut out, 100
20690                            )?;
20691                        } else {
20692                            ::fidl_next::wire::Envelope::encode_zero(&mut out)
20693                        }
20694                    }
20695
20696                    _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
20697                }
20698                unsafe {
20699                    preallocated.write_next(out.assume_init_ref());
20700                }
20701            }
20702
20703            ::fidl_next::wire::Table::encode_len(table, max_ord);
20704
20705            Ok(())
20706        }
20707    }
20708
20709    impl<'de> ::fidl_next::FromWire<crate::wire::EventSubscription<'de>> for EventSubscription {
20710        #[inline]
20711        fn from_wire(wire_: crate::wire::EventSubscription<'de>) -> Self {
20712            let wire_ = ::core::mem::ManuallyDrop::new(wire_);
20713
20714            let event_name = wire_.table.get(1);
20715
20716            Self {
20717                event_name: event_name.map(|envelope| {
20718                    ::fidl_next::FromWire::from_wire(unsafe {
20719                        envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
20720                    })
20721                }),
20722            }
20723        }
20724    }
20725
20726    impl<'de> ::fidl_next::FromWireRef<crate::wire::EventSubscription<'de>> for EventSubscription {
20727        #[inline]
20728        fn from_wire_ref(wire: &crate::wire::EventSubscription<'de>) -> Self {
20729            Self {
20730                event_name: wire.table.get(1).map(|envelope| {
20731                    ::fidl_next::FromWireRef::from_wire_ref(unsafe {
20732                        envelope.deref_unchecked::<::fidl_next::wire::String<'de>>()
20733                    })
20734                }),
20735            }
20736        }
20737    }
20738
20739    #[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
20740    pub enum LayoutParameter {
20741        NestedType(crate::natural::ConfigType),
20742
20743        UnknownOrdinal_(u64),
20744    }
20745
20746    impl LayoutParameter {
20747        pub fn is_unknown(&self) -> bool {
20748            #[allow(unreachable_patterns)]
20749            match self {
20750                Self::UnknownOrdinal_(_) => true,
20751                _ => false,
20752            }
20753        }
20754    }
20755
20756    unsafe impl<___E> ::fidl_next::Encode<crate::wire::LayoutParameter<'static>, ___E>
20757        for LayoutParameter
20758    where
20759        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
20760        ___E: ::fidl_next::Encoder,
20761    {
20762        #[inline]
20763        fn encode(
20764            self,
20765            encoder: &mut ___E,
20766            out: &mut ::core::mem::MaybeUninit<crate::wire::LayoutParameter<'static>>,
20767            _: (),
20768        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
20769            ::fidl_next::munge!(let crate::wire::LayoutParameter { raw, _phantom: _ } = out);
20770
20771            match self {
20772                Self::NestedType(value) => ::fidl_next::wire::Union::encode_as::<
20773                    ___E,
20774                    crate::wire::ConfigType<'static>,
20775                >(value, 1, encoder, raw, ())?,
20776
20777                Self::UnknownOrdinal_(ordinal) => {
20778                    return Err(::fidl_next::EncodeError::UnknownUnionOrdinal(ordinal as usize));
20779                }
20780            }
20781
20782            Ok(())
20783        }
20784    }
20785
20786    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::LayoutParameter<'static>, ___E>
20787        for &'a LayoutParameter
20788    where
20789        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
20790        ___E: ::fidl_next::Encoder,
20791    {
20792        #[inline]
20793        fn encode(
20794            self,
20795            encoder: &mut ___E,
20796            out: &mut ::core::mem::MaybeUninit<crate::wire::LayoutParameter<'static>>,
20797            _: (),
20798        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
20799            ::fidl_next::munge!(let crate::wire::LayoutParameter { raw, _phantom: _ } = out);
20800
20801            match self {
20802                LayoutParameter::NestedType(value) => ::fidl_next::wire::Union::encode_as::<
20803                    ___E,
20804                    crate::wire::ConfigType<'static>,
20805                >(value, 1, encoder, raw, ())?,
20806
20807                LayoutParameter::UnknownOrdinal_(ordinal) => {
20808                    return Err(::fidl_next::EncodeError::UnknownUnionOrdinal(*ordinal as usize));
20809                }
20810            }
20811
20812            Ok(())
20813        }
20814    }
20815
20816    unsafe impl<___E>
20817        ::fidl_next::EncodeOption<crate::wire_optional::LayoutParameter<'static>, ___E>
20818        for LayoutParameter
20819    where
20820        ___E: ?Sized,
20821        LayoutParameter: ::fidl_next::Encode<crate::wire::LayoutParameter<'static>, ___E>,
20822    {
20823        #[inline]
20824        fn encode_option(
20825            this: ::core::option::Option<Self>,
20826            encoder: &mut ___E,
20827            out: &mut ::core::mem::MaybeUninit<crate::wire_optional::LayoutParameter<'static>>,
20828            _: (),
20829        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
20830            ::fidl_next::munge!(let crate::wire_optional::LayoutParameter { raw, _phantom: _ } = &mut *out);
20831
20832            if let Some(inner) = this {
20833                let value_out = unsafe { &mut *out.as_mut_ptr().cast() };
20834                ::fidl_next::Encode::encode(inner, encoder, value_out, ())?;
20835            } else {
20836                ::fidl_next::wire::Union::encode_absent(raw);
20837            }
20838
20839            Ok(())
20840        }
20841    }
20842
20843    unsafe impl<'a, ___E>
20844        ::fidl_next::EncodeOption<crate::wire_optional::LayoutParameter<'static>, ___E>
20845        for &'a LayoutParameter
20846    where
20847        ___E: ?Sized,
20848        &'a LayoutParameter: ::fidl_next::Encode<crate::wire::LayoutParameter<'static>, ___E>,
20849    {
20850        #[inline]
20851        fn encode_option(
20852            this: ::core::option::Option<Self>,
20853            encoder: &mut ___E,
20854            out: &mut ::core::mem::MaybeUninit<crate::wire_optional::LayoutParameter<'static>>,
20855            _: (),
20856        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
20857            ::fidl_next::munge!(let crate::wire_optional::LayoutParameter { raw, _phantom: _ } = &mut *out);
20858
20859            if let Some(inner) = this {
20860                let value_out = unsafe { &mut *out.as_mut_ptr().cast() };
20861                ::fidl_next::Encode::encode(inner, encoder, value_out, ())?;
20862            } else {
20863                ::fidl_next::wire::Union::encode_absent(raw);
20864            }
20865
20866            Ok(())
20867        }
20868    }
20869
20870    impl<'de> ::fidl_next::FromWire<crate::wire::LayoutParameter<'de>> for LayoutParameter {
20871        #[inline]
20872        fn from_wire(wire: crate::wire::LayoutParameter<'de>) -> Self {
20873            let wire = ::core::mem::ManuallyDrop::new(wire);
20874            match wire.raw.ordinal() {
20875                1 => Self::NestedType(::fidl_next::FromWire::from_wire(unsafe {
20876                    wire.raw.get().read_unchecked::<crate::wire::ConfigType<'de>>()
20877                })),
20878
20879                ord => return Self::UnknownOrdinal_(ord as u64),
20880            }
20881        }
20882    }
20883
20884    impl<'de> ::fidl_next::FromWireRef<crate::wire::LayoutParameter<'de>> for LayoutParameter {
20885        #[inline]
20886        fn from_wire_ref(wire: &crate::wire::LayoutParameter<'de>) -> Self {
20887            match wire.raw.ordinal() {
20888                1 => Self::NestedType(::fidl_next::FromWireRef::from_wire_ref(unsafe {
20889                    wire.raw.get().deref_unchecked::<crate::wire::ConfigType<'de>>()
20890                })),
20891
20892                ord => return Self::UnknownOrdinal_(ord as u64),
20893            }
20894        }
20895    }
20896
20897    impl<'de> ::fidl_next::FromWireOption<crate::wire_optional::LayoutParameter<'de>>
20898        for LayoutParameter
20899    {
20900        #[inline]
20901        fn from_wire_option(
20902            wire: crate::wire_optional::LayoutParameter<'de>,
20903        ) -> ::core::option::Option<Self> {
20904            if let Some(inner) = wire.into_option() {
20905                Some(::fidl_next::FromWire::from_wire(inner))
20906            } else {
20907                None
20908            }
20909        }
20910    }
20911
20912    impl<'de> ::fidl_next::FromWireOption<crate::wire_optional::LayoutParameter<'de>>
20913        for Box<LayoutParameter>
20914    {
20915        #[inline]
20916        fn from_wire_option(
20917            wire: crate::wire_optional::LayoutParameter<'de>,
20918        ) -> ::core::option::Option<Self> {
20919            <LayoutParameter as ::fidl_next::FromWireOption<
20920                crate::wire_optional::LayoutParameter<'de>,
20921            >>::from_wire_option(wire)
20922            .map(Box::new)
20923        }
20924    }
20925
20926    impl<'de> ::fidl_next::FromWireOptionRef<crate::wire_optional::LayoutParameter<'de>>
20927        for Box<LayoutParameter>
20928    {
20929        #[inline]
20930        fn from_wire_option_ref(
20931            wire: &crate::wire_optional::LayoutParameter<'de>,
20932        ) -> ::core::option::Option<Self> {
20933            if let Some(inner) = wire.as_ref() {
20934                Some(Box::new(::fidl_next::FromWireRef::from_wire_ref(inner)))
20935            } else {
20936                None
20937            }
20938        }
20939    }
20940
20941    #[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
20942    pub struct ResolvedConfigField {
20943        pub key: ::std::string::String,
20944
20945        pub value: crate::natural::ConfigValue,
20946    }
20947
20948    unsafe impl<___E> ::fidl_next::Encode<crate::wire::ResolvedConfigField<'static>, ___E>
20949        for ResolvedConfigField
20950    where
20951        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
20952        ___E: ::fidl_next::Encoder,
20953    {
20954        #[inline]
20955        fn encode(
20956            self,
20957            encoder_: &mut ___E,
20958            out_: &mut ::core::mem::MaybeUninit<crate::wire::ResolvedConfigField<'static>>,
20959            _: (),
20960        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
20961            ::fidl_next::munge! {
20962                let crate::wire::ResolvedConfigField {
20963                    key,
20964                    value,
20965
20966                } = out_;
20967            }
20968
20969            ::fidl_next::Encode::encode(self.key, encoder_, key, 4294967295)?;
20970
20971            let mut _field = unsafe { ::fidl_next::Slot::new_unchecked(key.as_mut_ptr()) };
20972            ::fidl_next::Constrained::validate(_field, 4294967295)?;
20973
20974            ::fidl_next::Encode::encode(self.value, encoder_, value, ())?;
20975
20976            let mut _field = unsafe { ::fidl_next::Slot::new_unchecked(value.as_mut_ptr()) };
20977
20978            Ok(())
20979        }
20980    }
20981
20982    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::ResolvedConfigField<'static>, ___E>
20983        for &'a ResolvedConfigField
20984    where
20985        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
20986        ___E: ::fidl_next::Encoder,
20987    {
20988        #[inline]
20989        fn encode(
20990            self,
20991            encoder_: &mut ___E,
20992            out_: &mut ::core::mem::MaybeUninit<crate::wire::ResolvedConfigField<'static>>,
20993            _: (),
20994        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
20995            ::fidl_next::munge! {
20996                let crate::wire::ResolvedConfigField {
20997                    key,
20998                    value,
20999
21000                } = out_;
21001            }
21002
21003            ::fidl_next::Encode::encode(&self.key, encoder_, key, 4294967295)?;
21004
21005            let mut _field = unsafe { ::fidl_next::Slot::new_unchecked(key.as_mut_ptr()) };
21006            ::fidl_next::Constrained::validate(_field, 4294967295)?;
21007
21008            ::fidl_next::Encode::encode(&self.value, encoder_, value, ())?;
21009
21010            let mut _field = unsafe { ::fidl_next::Slot::new_unchecked(value.as_mut_ptr()) };
21011
21012            Ok(())
21013        }
21014    }
21015
21016    unsafe impl<___E>
21017        ::fidl_next::EncodeOption<
21018            ::fidl_next::wire::Box<'static, crate::wire::ResolvedConfigField<'static>>,
21019            ___E,
21020        > for ResolvedConfigField
21021    where
21022        ___E: ::fidl_next::Encoder + ?Sized,
21023        ResolvedConfigField: ::fidl_next::Encode<crate::wire::ResolvedConfigField<'static>, ___E>,
21024    {
21025        #[inline]
21026        fn encode_option(
21027            this: ::core::option::Option<Self>,
21028            encoder: &mut ___E,
21029            out: &mut ::core::mem::MaybeUninit<
21030                ::fidl_next::wire::Box<'static, crate::wire::ResolvedConfigField<'static>>,
21031            >,
21032            _: (),
21033        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
21034            if let Some(inner) = this {
21035                ::fidl_next::EncoderExt::encode_next(encoder, inner)?;
21036                ::fidl_next::wire::Box::encode_present(out);
21037            } else {
21038                ::fidl_next::wire::Box::encode_absent(out);
21039            }
21040
21041            Ok(())
21042        }
21043    }
21044
21045    unsafe impl<'a, ___E>
21046        ::fidl_next::EncodeOption<
21047            ::fidl_next::wire::Box<'static, crate::wire::ResolvedConfigField<'static>>,
21048            ___E,
21049        > for &'a ResolvedConfigField
21050    where
21051        ___E: ::fidl_next::Encoder + ?Sized,
21052        &'a ResolvedConfigField:
21053            ::fidl_next::Encode<crate::wire::ResolvedConfigField<'static>, ___E>,
21054    {
21055        #[inline]
21056        fn encode_option(
21057            this: ::core::option::Option<Self>,
21058            encoder: &mut ___E,
21059            out: &mut ::core::mem::MaybeUninit<
21060                ::fidl_next::wire::Box<'static, crate::wire::ResolvedConfigField<'static>>,
21061            >,
21062            _: (),
21063        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
21064            if let Some(inner) = this {
21065                ::fidl_next::EncoderExt::encode_next(encoder, inner)?;
21066                ::fidl_next::wire::Box::encode_present(out);
21067            } else {
21068                ::fidl_next::wire::Box::encode_absent(out);
21069            }
21070
21071            Ok(())
21072        }
21073    }
21074
21075    impl<'de> ::fidl_next::FromWire<crate::wire::ResolvedConfigField<'de>> for ResolvedConfigField {
21076        #[inline]
21077        fn from_wire(wire: crate::wire::ResolvedConfigField<'de>) -> Self {
21078            Self {
21079                key: ::fidl_next::FromWire::from_wire(wire.key),
21080
21081                value: ::fidl_next::FromWire::from_wire(wire.value),
21082            }
21083        }
21084    }
21085
21086    impl<'de> ::fidl_next::FromWireRef<crate::wire::ResolvedConfigField<'de>> for ResolvedConfigField {
21087        #[inline]
21088        fn from_wire_ref(wire: &crate::wire::ResolvedConfigField<'de>) -> Self {
21089            Self {
21090                key: ::fidl_next::FromWireRef::from_wire_ref(&wire.key),
21091
21092                value: ::fidl_next::FromWireRef::from_wire_ref(&wire.value),
21093            }
21094        }
21095    }
21096
21097    #[doc = " A configuration that has been completely resolved by component manager.\n"]
21098    #[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
21099    pub struct ResolvedConfig {
21100        pub fields: ::std::vec::Vec<crate::natural::ResolvedConfigField>,
21101
21102        pub checksum: crate::natural::ConfigChecksum,
21103    }
21104
21105    unsafe impl<___E> ::fidl_next::Encode<crate::wire::ResolvedConfig<'static>, ___E> for ResolvedConfig
21106    where
21107        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
21108        ___E: ::fidl_next::Encoder,
21109    {
21110        #[inline]
21111        fn encode(
21112            self,
21113            encoder_: &mut ___E,
21114            out_: &mut ::core::mem::MaybeUninit<crate::wire::ResolvedConfig<'static>>,
21115            _: (),
21116        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
21117            ::fidl_next::munge! {
21118                let crate::wire::ResolvedConfig {
21119                    fields,
21120                    checksum,
21121
21122                } = out_;
21123            }
21124
21125            ::fidl_next::Encode::encode(self.fields, encoder_, fields, (4294967295, ()))?;
21126
21127            let mut _field = unsafe { ::fidl_next::Slot::new_unchecked(fields.as_mut_ptr()) };
21128            ::fidl_next::Constrained::validate(_field, (4294967295, ()))?;
21129
21130            ::fidl_next::Encode::encode(self.checksum, encoder_, checksum, ())?;
21131
21132            let mut _field = unsafe { ::fidl_next::Slot::new_unchecked(checksum.as_mut_ptr()) };
21133
21134            Ok(())
21135        }
21136    }
21137
21138    unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::ResolvedConfig<'static>, ___E>
21139        for &'a ResolvedConfig
21140    where
21141        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
21142        ___E: ::fidl_next::Encoder,
21143    {
21144        #[inline]
21145        fn encode(
21146            self,
21147            encoder_: &mut ___E,
21148            out_: &mut ::core::mem::MaybeUninit<crate::wire::ResolvedConfig<'static>>,
21149            _: (),
21150        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
21151            ::fidl_next::munge! {
21152                let crate::wire::ResolvedConfig {
21153                    fields,
21154                    checksum,
21155
21156                } = out_;
21157            }
21158
21159            ::fidl_next::Encode::encode(&self.fields, encoder_, fields, (4294967295, ()))?;
21160
21161            let mut _field = unsafe { ::fidl_next::Slot::new_unchecked(fields.as_mut_ptr()) };
21162            ::fidl_next::Constrained::validate(_field, (4294967295, ()))?;
21163
21164            ::fidl_next::Encode::encode(&self.checksum, encoder_, checksum, ())?;
21165
21166            let mut _field = unsafe { ::fidl_next::Slot::new_unchecked(checksum.as_mut_ptr()) };
21167
21168            Ok(())
21169        }
21170    }
21171
21172    unsafe impl<___E>
21173        ::fidl_next::EncodeOption<
21174            ::fidl_next::wire::Box<'static, crate::wire::ResolvedConfig<'static>>,
21175            ___E,
21176        > for ResolvedConfig
21177    where
21178        ___E: ::fidl_next::Encoder + ?Sized,
21179        ResolvedConfig: ::fidl_next::Encode<crate::wire::ResolvedConfig<'static>, ___E>,
21180    {
21181        #[inline]
21182        fn encode_option(
21183            this: ::core::option::Option<Self>,
21184            encoder: &mut ___E,
21185            out: &mut ::core::mem::MaybeUninit<
21186                ::fidl_next::wire::Box<'static, crate::wire::ResolvedConfig<'static>>,
21187            >,
21188            _: (),
21189        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
21190            if let Some(inner) = this {
21191                ::fidl_next::EncoderExt::encode_next(encoder, inner)?;
21192                ::fidl_next::wire::Box::encode_present(out);
21193            } else {
21194                ::fidl_next::wire::Box::encode_absent(out);
21195            }
21196
21197            Ok(())
21198        }
21199    }
21200
21201    unsafe impl<'a, ___E>
21202        ::fidl_next::EncodeOption<
21203            ::fidl_next::wire::Box<'static, crate::wire::ResolvedConfig<'static>>,
21204            ___E,
21205        > for &'a ResolvedConfig
21206    where
21207        ___E: ::fidl_next::Encoder + ?Sized,
21208        &'a ResolvedConfig: ::fidl_next::Encode<crate::wire::ResolvedConfig<'static>, ___E>,
21209    {
21210        #[inline]
21211        fn encode_option(
21212            this: ::core::option::Option<Self>,
21213            encoder: &mut ___E,
21214            out: &mut ::core::mem::MaybeUninit<
21215                ::fidl_next::wire::Box<'static, crate::wire::ResolvedConfig<'static>>,
21216            >,
21217            _: (),
21218        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
21219            if let Some(inner) = this {
21220                ::fidl_next::EncoderExt::encode_next(encoder, inner)?;
21221                ::fidl_next::wire::Box::encode_present(out);
21222            } else {
21223                ::fidl_next::wire::Box::encode_absent(out);
21224            }
21225
21226            Ok(())
21227        }
21228    }
21229
21230    impl<'de> ::fidl_next::FromWire<crate::wire::ResolvedConfig<'de>> for ResolvedConfig {
21231        #[inline]
21232        fn from_wire(wire: crate::wire::ResolvedConfig<'de>) -> Self {
21233            Self {
21234                fields: ::fidl_next::FromWire::from_wire(wire.fields),
21235
21236                checksum: ::fidl_next::FromWire::from_wire(wire.checksum),
21237            }
21238        }
21239    }
21240
21241    impl<'de> ::fidl_next::FromWireRef<crate::wire::ResolvedConfig<'de>> for ResolvedConfig {
21242        #[inline]
21243        fn from_wire_ref(wire: &crate::wire::ResolvedConfig<'de>) -> Self {
21244            Self {
21245                fields: ::fidl_next::FromWireRef::from_wire_ref(&wire.fields),
21246
21247                checksum: ::fidl_next::FromWireRef::from_wire_ref(&wire.checksum),
21248            }
21249        }
21250    }
21251}
21252
21253pub mod wire {
21254
21255    /// The wire type corresponding to [`AllowedOffers`].
21256    #[derive(Clone, Copy, Debug, PartialEq, Eq)]
21257    #[repr(transparent)]
21258    pub struct AllowedOffers {
21259        pub(crate) value: ::fidl_next::wire::Uint32,
21260    }
21261
21262    impl ::fidl_next::Constrained for AllowedOffers {
21263        type Constraint = ();
21264
21265        fn validate(
21266            _: ::fidl_next::Slot<'_, Self>,
21267            _: Self::Constraint,
21268        ) -> Result<(), ::fidl_next::ValidationError> {
21269            Ok(())
21270        }
21271    }
21272
21273    unsafe impl ::fidl_next::Wire for AllowedOffers {
21274        type Narrowed<'de> = Self;
21275
21276        #[inline]
21277        fn zero_padding(_: &mut ::core::mem::MaybeUninit<Self>) {
21278            // Wire enums have no padding
21279        }
21280    }
21281
21282    impl AllowedOffers {
21283        pub const STATIC_ONLY: AllowedOffers =
21284            AllowedOffers { value: ::fidl_next::wire::Uint32(1) };
21285
21286        pub const STATIC_AND_DYNAMIC: AllowedOffers =
21287            AllowedOffers { value: ::fidl_next::wire::Uint32(2) };
21288    }
21289
21290    unsafe impl<___D> ::fidl_next::Decode<___D> for AllowedOffers
21291    where
21292        ___D: ?Sized,
21293    {
21294        fn decode(
21295            slot: ::fidl_next::Slot<'_, Self>,
21296            _: &mut ___D,
21297            _: (),
21298        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
21299            ::fidl_next::munge!(let Self { value } = slot);
21300
21301            match u32::from(*value) {
21302                1 | 2 => (),
21303                unknown => {
21304                    return Err(::fidl_next::DecodeError::InvalidEnumOrdinal(unknown as i128));
21305                }
21306            }
21307
21308            Ok(())
21309        }
21310    }
21311
21312    impl ::core::convert::From<crate::natural::AllowedOffers> for AllowedOffers {
21313        fn from(natural: crate::natural::AllowedOffers) -> Self {
21314            match natural {
21315                crate::natural::AllowedOffers::StaticOnly => AllowedOffers::STATIC_ONLY,
21316
21317                crate::natural::AllowedOffers::StaticAndDynamic => {
21318                    AllowedOffers::STATIC_AND_DYNAMIC
21319                }
21320            }
21321        }
21322    }
21323
21324    impl ::fidl_next::IntoNatural for AllowedOffers {
21325        type Natural = crate::natural::AllowedOffers;
21326    }
21327
21328    /// The wire type corresponding to [`Availability`].
21329    #[derive(Clone, Copy, Debug, PartialEq, Eq)]
21330    #[repr(transparent)]
21331    pub struct Availability {
21332        pub(crate) value: ::fidl_next::wire::Uint32,
21333    }
21334
21335    impl ::fidl_next::Constrained for Availability {
21336        type Constraint = ();
21337
21338        fn validate(
21339            _: ::fidl_next::Slot<'_, Self>,
21340            _: Self::Constraint,
21341        ) -> Result<(), ::fidl_next::ValidationError> {
21342            Ok(())
21343        }
21344    }
21345
21346    unsafe impl ::fidl_next::Wire for Availability {
21347        type Narrowed<'de> = Self;
21348
21349        #[inline]
21350        fn zero_padding(_: &mut ::core::mem::MaybeUninit<Self>) {
21351            // Wire enums have no padding
21352        }
21353    }
21354
21355    impl Availability {
21356        pub const REQUIRED: Availability = Availability { value: ::fidl_next::wire::Uint32(1) };
21357
21358        pub const OPTIONAL: Availability = Availability { value: ::fidl_next::wire::Uint32(2) };
21359
21360        pub const SAME_AS_TARGET: Availability =
21361            Availability { value: ::fidl_next::wire::Uint32(3) };
21362
21363        pub const TRANSITIONAL: Availability = Availability { value: ::fidl_next::wire::Uint32(4) };
21364    }
21365
21366    unsafe impl<___D> ::fidl_next::Decode<___D> for Availability
21367    where
21368        ___D: ?Sized,
21369    {
21370        fn decode(
21371            slot: ::fidl_next::Slot<'_, Self>,
21372            _: &mut ___D,
21373            _: (),
21374        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
21375            ::fidl_next::munge!(let Self { value } = slot);
21376
21377            match u32::from(*value) {
21378                1 | 2 | 3 | 4 => (),
21379                unknown => {
21380                    return Err(::fidl_next::DecodeError::InvalidEnumOrdinal(unknown as i128));
21381                }
21382            }
21383
21384            Ok(())
21385        }
21386    }
21387
21388    impl ::core::convert::From<crate::natural::Availability> for Availability {
21389        fn from(natural: crate::natural::Availability) -> Self {
21390            match natural {
21391                crate::natural::Availability::Required => Availability::REQUIRED,
21392
21393                crate::natural::Availability::Optional => Availability::OPTIONAL,
21394
21395                crate::natural::Availability::SameAsTarget => Availability::SAME_AS_TARGET,
21396
21397                crate::natural::Availability::Transitional => Availability::TRANSITIONAL,
21398            }
21399        }
21400    }
21401
21402    impl ::fidl_next::IntoNatural for Availability {
21403        type Natural = crate::natural::Availability;
21404    }
21405
21406    /// The wire type corresponding to [`Name`](crate::natural::Name).
21407    pub type Name<'de> = ::fidl_next::wire::String<'de>;
21408
21409    /// The wire type corresponding to [`Service`].
21410    #[repr(C)]
21411    pub struct Service<'de> {
21412        pub(crate) table: ::fidl_next::wire::Table<'de>,
21413    }
21414
21415    impl<'de> Drop for Service<'de> {
21416        fn drop(&mut self) {
21417            let _ = self.table.get(1).map(|envelope| unsafe {
21418                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
21419            });
21420
21421            let _ = self.table.get(2).map(|envelope| unsafe {
21422                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
21423            });
21424        }
21425    }
21426
21427    impl ::fidl_next::Constrained for Service<'_> {
21428        type Constraint = ();
21429
21430        fn validate(
21431            _: ::fidl_next::Slot<'_, Self>,
21432            _: Self::Constraint,
21433        ) -> Result<(), ::fidl_next::ValidationError> {
21434            Ok(())
21435        }
21436    }
21437
21438    unsafe impl ::fidl_next::Wire for Service<'static> {
21439        type Narrowed<'de> = Service<'de>;
21440
21441        #[inline]
21442        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
21443            ::fidl_next::munge!(let Self { table } = out);
21444            ::fidl_next::wire::Table::zero_padding(table);
21445        }
21446    }
21447
21448    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for Service<'de>
21449    where
21450        ___D: ::fidl_next::Decoder<'de> + ?Sized,
21451    {
21452        fn decode(
21453            slot: ::fidl_next::Slot<'_, Self>,
21454            decoder: &mut ___D,
21455            _: (),
21456        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
21457            ::fidl_next::munge!(let Self { table } = slot);
21458
21459            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
21460                match ordinal {
21461                    0 => unsafe { ::core::hint::unreachable_unchecked() },
21462
21463                    1 => {
21464                        ::fidl_next::wire::Envelope::decode_as::<
21465                            ___D,
21466                            ::fidl_next::wire::String<'de>,
21467                        >(slot.as_mut(), decoder, 100)?;
21468
21469                        let value = unsafe {
21470                            slot.deref_unchecked()
21471                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
21472                        };
21473
21474                        if value.len() > 100 {
21475                            return Err(::fidl_next::DecodeError::VectorTooLong {
21476                                size: value.len() as u64,
21477                                limit: 100,
21478                            });
21479                        }
21480
21481                        Ok(())
21482                    }
21483
21484                    2 => {
21485                        ::fidl_next::wire::Envelope::decode_as::<
21486                            ___D,
21487                            ::fidl_next::wire::String<'de>,
21488                        >(slot.as_mut(), decoder, 1024)?;
21489
21490                        let value = unsafe {
21491                            slot.deref_unchecked()
21492                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
21493                        };
21494
21495                        if value.len() > 1024 {
21496                            return Err(::fidl_next::DecodeError::VectorTooLong {
21497                                size: value.len() as u64,
21498                                limit: 1024,
21499                            });
21500                        }
21501
21502                        Ok(())
21503                    }
21504
21505                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
21506                }
21507            })
21508        }
21509    }
21510
21511    impl<'de> Service<'de> {
21512        pub fn name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
21513            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
21514        }
21515
21516        pub fn take_name(&mut self) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
21517            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
21518        }
21519
21520        pub fn source_path(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
21521            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
21522        }
21523
21524        pub fn take_source_path(
21525            &mut self,
21526        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
21527            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
21528        }
21529    }
21530
21531    impl<'de> ::core::fmt::Debug for Service<'de> {
21532        fn fmt(
21533            &self,
21534            f: &mut ::core::fmt::Formatter<'_>,
21535        ) -> ::core::result::Result<(), ::core::fmt::Error> {
21536            f.debug_struct("Service")
21537                .field("name", &self.name())
21538                .field("source_path", &self.source_path())
21539                .finish()
21540        }
21541    }
21542
21543    impl<'de> ::fidl_next::IntoNatural for Service<'de> {
21544        type Natural = crate::natural::Service;
21545    }
21546
21547    /// The wire type corresponding to [`Directory`].
21548    #[repr(C)]
21549    pub struct Directory<'de> {
21550        pub(crate) table: ::fidl_next::wire::Table<'de>,
21551    }
21552
21553    impl<'de> Drop for Directory<'de> {
21554        fn drop(&mut self) {
21555            let _ = self.table.get(1).map(|envelope| unsafe {
21556                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
21557            });
21558
21559            let _ = self.table.get(2).map(|envelope| unsafe {
21560                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
21561            });
21562
21563            let _ = self.table.get(3).map(|envelope| unsafe {
21564                envelope.read_unchecked::<::fidl_next_common_fuchsia_io::wire::Operations>()
21565            });
21566        }
21567    }
21568
21569    impl ::fidl_next::Constrained for Directory<'_> {
21570        type Constraint = ();
21571
21572        fn validate(
21573            _: ::fidl_next::Slot<'_, Self>,
21574            _: Self::Constraint,
21575        ) -> Result<(), ::fidl_next::ValidationError> {
21576            Ok(())
21577        }
21578    }
21579
21580    unsafe impl ::fidl_next::Wire for Directory<'static> {
21581        type Narrowed<'de> = Directory<'de>;
21582
21583        #[inline]
21584        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
21585            ::fidl_next::munge!(let Self { table } = out);
21586            ::fidl_next::wire::Table::zero_padding(table);
21587        }
21588    }
21589
21590    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for Directory<'de>
21591    where
21592        ___D: ::fidl_next::Decoder<'de> + ?Sized,
21593    {
21594        fn decode(
21595            slot: ::fidl_next::Slot<'_, Self>,
21596            decoder: &mut ___D,
21597            _: (),
21598        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
21599            ::fidl_next::munge!(let Self { table } = slot);
21600
21601            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
21602                match ordinal {
21603                    0 => unsafe { ::core::hint::unreachable_unchecked() },
21604
21605                    1 => {
21606                        ::fidl_next::wire::Envelope::decode_as::<
21607                            ___D,
21608                            ::fidl_next::wire::String<'de>,
21609                        >(slot.as_mut(), decoder, 100)?;
21610
21611                        let value = unsafe {
21612                            slot.deref_unchecked()
21613                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
21614                        };
21615
21616                        if value.len() > 100 {
21617                            return Err(::fidl_next::DecodeError::VectorTooLong {
21618                                size: value.len() as u64,
21619                                limit: 100,
21620                            });
21621                        }
21622
21623                        Ok(())
21624                    }
21625
21626                    2 => {
21627                        ::fidl_next::wire::Envelope::decode_as::<
21628                            ___D,
21629                            ::fidl_next::wire::String<'de>,
21630                        >(slot.as_mut(), decoder, 1024)?;
21631
21632                        let value = unsafe {
21633                            slot.deref_unchecked()
21634                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
21635                        };
21636
21637                        if value.len() > 1024 {
21638                            return Err(::fidl_next::DecodeError::VectorTooLong {
21639                                size: value.len() as u64,
21640                                limit: 1024,
21641                            });
21642                        }
21643
21644                        Ok(())
21645                    }
21646
21647                    3 => {
21648                        ::fidl_next::wire::Envelope::decode_as::<
21649                            ___D,
21650                            ::fidl_next_common_fuchsia_io::wire::Operations,
21651                        >(slot.as_mut(), decoder, ())?;
21652
21653                        Ok(())
21654                    }
21655
21656                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
21657                }
21658            })
21659        }
21660    }
21661
21662    impl<'de> Directory<'de> {
21663        pub fn name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
21664            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
21665        }
21666
21667        pub fn take_name(&mut self) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
21668            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
21669        }
21670
21671        pub fn source_path(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
21672            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
21673        }
21674
21675        pub fn take_source_path(
21676            &mut self,
21677        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
21678            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
21679        }
21680
21681        pub fn rights(
21682            &self,
21683        ) -> ::core::option::Option<&::fidl_next_common_fuchsia_io::wire::Operations> {
21684            unsafe { Some(self.table.get(3)?.deref_unchecked()) }
21685        }
21686
21687        pub fn take_rights(
21688            &mut self,
21689        ) -> ::core::option::Option<::fidl_next_common_fuchsia_io::wire::Operations> {
21690            unsafe { Some(self.table.get_mut(3)?.take_unchecked()) }
21691        }
21692    }
21693
21694    impl<'de> ::core::fmt::Debug for Directory<'de> {
21695        fn fmt(
21696            &self,
21697            f: &mut ::core::fmt::Formatter<'_>,
21698        ) -> ::core::result::Result<(), ::core::fmt::Error> {
21699            f.debug_struct("Directory")
21700                .field("name", &self.name())
21701                .field("source_path", &self.source_path())
21702                .field("rights", &self.rights())
21703                .finish()
21704        }
21705    }
21706
21707    impl<'de> ::fidl_next::IntoNatural for Directory<'de> {
21708        type Natural = crate::natural::Directory;
21709    }
21710
21711    /// The wire type corresponding to [`ParentRef`].
21712    pub type ParentRef = ::fidl_next::wire::Unit;
21713
21714    /// The wire type corresponding to [`SelfRef`].
21715    pub type SelfRef = ::fidl_next::wire::Unit;
21716
21717    /// The wire type corresponding to [`ChildName`](crate::natural::ChildName).
21718    pub type ChildName<'de> = ::fidl_next::wire::String<'de>;
21719
21720    /// The wire type corresponding to [`ChildRef`].
21721    #[derive(Debug)]
21722    #[repr(C)]
21723    pub struct ChildRef<'de> {
21724        pub name: ::fidl_next::wire::String<'de>,
21725
21726        pub collection: ::fidl_next::wire::OptionalString<'de>,
21727    }
21728
21729    static_assertions::const_assert_eq!(std::mem::size_of::<ChildRef<'_>>(), 32);
21730    static_assertions::const_assert_eq!(std::mem::align_of::<ChildRef<'_>>(), 8);
21731
21732    static_assertions::const_assert_eq!(std::mem::offset_of!(ChildRef<'_>, name), 0);
21733
21734    static_assertions::const_assert_eq!(std::mem::offset_of!(ChildRef<'_>, collection), 16);
21735
21736    impl ::fidl_next::Constrained for ChildRef<'_> {
21737        type Constraint = ();
21738
21739        fn validate(
21740            _: ::fidl_next::Slot<'_, Self>,
21741            _: Self::Constraint,
21742        ) -> Result<(), ::fidl_next::ValidationError> {
21743            Ok(())
21744        }
21745    }
21746
21747    unsafe impl ::fidl_next::Wire for ChildRef<'static> {
21748        type Narrowed<'de> = ChildRef<'de>;
21749
21750        #[inline]
21751        fn zero_padding(out_: &mut ::core::mem::MaybeUninit<Self>) {
21752            ::fidl_next::munge! {
21753                let Self {
21754                    name,
21755                    collection,
21756
21757                } = &mut *out_;
21758            }
21759
21760            ::fidl_next::Wire::zero_padding(name);
21761
21762            ::fidl_next::Wire::zero_padding(collection);
21763        }
21764    }
21765
21766    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for ChildRef<'de>
21767    where
21768        ___D: ::fidl_next::decoder::InternalHandleDecoder + ?Sized,
21769        ___D: ::fidl_next::Decoder<'de>,
21770    {
21771        fn decode(
21772            slot_: ::fidl_next::Slot<'_, Self>,
21773            decoder_: &mut ___D,
21774            _: (),
21775        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
21776            ::fidl_next::munge! {
21777                let Self {
21778                    mut name,
21779                    mut collection,
21780
21781                } = slot_;
21782            }
21783
21784            let _field = name.as_mut();
21785            ::fidl_next::Constrained::validate(_field, 1024)?;
21786            ::fidl_next::Decode::decode(name.as_mut(), decoder_, 1024)?;
21787
21788            let name = unsafe { name.deref_unchecked() };
21789
21790            if name.len() > 1024 {
21791                return Err(::fidl_next::DecodeError::VectorTooLong {
21792                    size: name.len() as u64,
21793                    limit: 1024,
21794                });
21795            }
21796
21797            let _field = collection.as_mut();
21798            ::fidl_next::Constrained::validate(_field, 100)?;
21799            ::fidl_next::Decode::decode(collection.as_mut(), decoder_, 100)?;
21800
21801            let collection = unsafe { collection.deref_unchecked() };
21802
21803            if let Some(collection) = collection.as_ref() {
21804                if collection.len() > 100 {
21805                    return Err(::fidl_next::DecodeError::VectorTooLong {
21806                        size: collection.len() as u64,
21807                        limit: 100,
21808                    });
21809                }
21810            }
21811
21812            Ok(())
21813        }
21814    }
21815
21816    impl<'de> ::fidl_next::IntoNatural for ChildRef<'de> {
21817        type Natural = crate::natural::ChildRef;
21818    }
21819
21820    /// The wire type corresponding to [`CollectionRef`].
21821    #[derive(Debug)]
21822    #[repr(C)]
21823    pub struct CollectionRef<'de> {
21824        pub name: ::fidl_next::wire::String<'de>,
21825    }
21826
21827    static_assertions::const_assert_eq!(std::mem::size_of::<CollectionRef<'_>>(), 16);
21828    static_assertions::const_assert_eq!(std::mem::align_of::<CollectionRef<'_>>(), 8);
21829
21830    static_assertions::const_assert_eq!(std::mem::offset_of!(CollectionRef<'_>, name), 0);
21831
21832    impl ::fidl_next::Constrained for CollectionRef<'_> {
21833        type Constraint = ();
21834
21835        fn validate(
21836            _: ::fidl_next::Slot<'_, Self>,
21837            _: Self::Constraint,
21838        ) -> Result<(), ::fidl_next::ValidationError> {
21839            Ok(())
21840        }
21841    }
21842
21843    unsafe impl ::fidl_next::Wire for CollectionRef<'static> {
21844        type Narrowed<'de> = CollectionRef<'de>;
21845
21846        #[inline]
21847        fn zero_padding(out_: &mut ::core::mem::MaybeUninit<Self>) {
21848            ::fidl_next::munge! {
21849                let Self {
21850                    name,
21851
21852                } = &mut *out_;
21853            }
21854
21855            ::fidl_next::Wire::zero_padding(name);
21856        }
21857    }
21858
21859    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for CollectionRef<'de>
21860    where
21861        ___D: ::fidl_next::decoder::InternalHandleDecoder + ?Sized,
21862        ___D: ::fidl_next::Decoder<'de>,
21863    {
21864        fn decode(
21865            slot_: ::fidl_next::Slot<'_, Self>,
21866            decoder_: &mut ___D,
21867            _: (),
21868        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
21869            ::fidl_next::munge! {
21870                let Self {
21871                    mut name,
21872
21873                } = slot_;
21874            }
21875
21876            let _field = name.as_mut();
21877            ::fidl_next::Constrained::validate(_field, 100)?;
21878            ::fidl_next::Decode::decode(name.as_mut(), decoder_, 100)?;
21879
21880            let name = unsafe { name.deref_unchecked() };
21881
21882            if name.len() > 100 {
21883                return Err(::fidl_next::DecodeError::VectorTooLong {
21884                    size: name.len() as u64,
21885                    limit: 100,
21886                });
21887            }
21888
21889            Ok(())
21890        }
21891    }
21892
21893    impl<'de> ::fidl_next::IntoNatural for CollectionRef<'de> {
21894        type Natural = crate::natural::CollectionRef;
21895    }
21896
21897    /// The wire type corresponding to [`FrameworkRef`].
21898    pub type FrameworkRef = ::fidl_next::wire::Unit;
21899
21900    /// The wire type corresponding to [`CapabilityRef`].
21901    #[derive(Debug)]
21902    #[repr(C)]
21903    pub struct CapabilityRef<'de> {
21904        pub name: ::fidl_next::wire::String<'de>,
21905    }
21906
21907    static_assertions::const_assert_eq!(std::mem::size_of::<CapabilityRef<'_>>(), 16);
21908    static_assertions::const_assert_eq!(std::mem::align_of::<CapabilityRef<'_>>(), 8);
21909
21910    static_assertions::const_assert_eq!(std::mem::offset_of!(CapabilityRef<'_>, name), 0);
21911
21912    impl ::fidl_next::Constrained for CapabilityRef<'_> {
21913        type Constraint = ();
21914
21915        fn validate(
21916            _: ::fidl_next::Slot<'_, Self>,
21917            _: Self::Constraint,
21918        ) -> Result<(), ::fidl_next::ValidationError> {
21919            Ok(())
21920        }
21921    }
21922
21923    unsafe impl ::fidl_next::Wire for CapabilityRef<'static> {
21924        type Narrowed<'de> = CapabilityRef<'de>;
21925
21926        #[inline]
21927        fn zero_padding(out_: &mut ::core::mem::MaybeUninit<Self>) {
21928            ::fidl_next::munge! {
21929                let Self {
21930                    name,
21931
21932                } = &mut *out_;
21933            }
21934
21935            ::fidl_next::Wire::zero_padding(name);
21936        }
21937    }
21938
21939    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for CapabilityRef<'de>
21940    where
21941        ___D: ::fidl_next::decoder::InternalHandleDecoder + ?Sized,
21942        ___D: ::fidl_next::Decoder<'de>,
21943    {
21944        fn decode(
21945            slot_: ::fidl_next::Slot<'_, Self>,
21946            decoder_: &mut ___D,
21947            _: (),
21948        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
21949            ::fidl_next::munge! {
21950                let Self {
21951                    mut name,
21952
21953                } = slot_;
21954            }
21955
21956            let _field = name.as_mut();
21957            ::fidl_next::Constrained::validate(_field, 100)?;
21958            ::fidl_next::Decode::decode(name.as_mut(), decoder_, 100)?;
21959
21960            let name = unsafe { name.deref_unchecked() };
21961
21962            if name.len() > 100 {
21963                return Err(::fidl_next::DecodeError::VectorTooLong {
21964                    size: name.len() as u64,
21965                    limit: 100,
21966                });
21967            }
21968
21969            Ok(())
21970        }
21971    }
21972
21973    impl<'de> ::fidl_next::IntoNatural for CapabilityRef<'de> {
21974        type Natural = crate::natural::CapabilityRef;
21975    }
21976
21977    /// The wire type corresponding to [`DebugRef`].
21978    pub type DebugRef = ::fidl_next::wire::Unit;
21979
21980    /// The wire type corresponding to [`VoidRef`].
21981    pub type VoidRef = ::fidl_next::wire::Unit;
21982
21983    /// The wire type corresponding to [`StorageId`].
21984    #[derive(Clone, Copy, Debug, PartialEq, Eq)]
21985    #[repr(transparent)]
21986    pub struct StorageId {
21987        pub(crate) value: ::fidl_next::wire::Uint32,
21988    }
21989
21990    impl ::fidl_next::Constrained for StorageId {
21991        type Constraint = ();
21992
21993        fn validate(
21994            _: ::fidl_next::Slot<'_, Self>,
21995            _: Self::Constraint,
21996        ) -> Result<(), ::fidl_next::ValidationError> {
21997            Ok(())
21998        }
21999    }
22000
22001    unsafe impl ::fidl_next::Wire for StorageId {
22002        type Narrowed<'de> = Self;
22003
22004        #[inline]
22005        fn zero_padding(_: &mut ::core::mem::MaybeUninit<Self>) {
22006            // Wire enums have no padding
22007        }
22008    }
22009
22010    impl StorageId {
22011        pub const STATIC_INSTANCE_ID: StorageId = StorageId { value: ::fidl_next::wire::Uint32(1) };
22012
22013        pub const STATIC_INSTANCE_ID_OR_MONIKER: StorageId =
22014            StorageId { value: ::fidl_next::wire::Uint32(2) };
22015    }
22016
22017    unsafe impl<___D> ::fidl_next::Decode<___D> for StorageId
22018    where
22019        ___D: ?Sized,
22020    {
22021        fn decode(
22022            slot: ::fidl_next::Slot<'_, Self>,
22023            _: &mut ___D,
22024            _: (),
22025        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
22026            ::fidl_next::munge!(let Self { value } = slot);
22027
22028            match u32::from(*value) {
22029                1 | 2 => (),
22030                unknown => {
22031                    return Err(::fidl_next::DecodeError::InvalidEnumOrdinal(unknown as i128));
22032                }
22033            }
22034
22035            Ok(())
22036        }
22037    }
22038
22039    impl ::core::convert::From<crate::natural::StorageId> for StorageId {
22040        fn from(natural: crate::natural::StorageId) -> Self {
22041            match natural {
22042                crate::natural::StorageId::StaticInstanceId => StorageId::STATIC_INSTANCE_ID,
22043
22044                crate::natural::StorageId::StaticInstanceIdOrMoniker => {
22045                    StorageId::STATIC_INSTANCE_ID_OR_MONIKER
22046                }
22047            }
22048        }
22049    }
22050
22051    impl ::fidl_next::IntoNatural for StorageId {
22052        type Natural = crate::natural::StorageId;
22053    }
22054
22055    /// The wire type corresponding to [`Runner`].
22056    #[repr(C)]
22057    pub struct Runner<'de> {
22058        pub(crate) table: ::fidl_next::wire::Table<'de>,
22059    }
22060
22061    impl<'de> Drop for Runner<'de> {
22062        fn drop(&mut self) {
22063            let _ = self.table.get(1).map(|envelope| unsafe {
22064                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
22065            });
22066
22067            let _ = self.table.get(2).map(|envelope| unsafe {
22068                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
22069            });
22070        }
22071    }
22072
22073    impl ::fidl_next::Constrained for Runner<'_> {
22074        type Constraint = ();
22075
22076        fn validate(
22077            _: ::fidl_next::Slot<'_, Self>,
22078            _: Self::Constraint,
22079        ) -> Result<(), ::fidl_next::ValidationError> {
22080            Ok(())
22081        }
22082    }
22083
22084    unsafe impl ::fidl_next::Wire for Runner<'static> {
22085        type Narrowed<'de> = Runner<'de>;
22086
22087        #[inline]
22088        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
22089            ::fidl_next::munge!(let Self { table } = out);
22090            ::fidl_next::wire::Table::zero_padding(table);
22091        }
22092    }
22093
22094    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for Runner<'de>
22095    where
22096        ___D: ::fidl_next::Decoder<'de> + ?Sized,
22097    {
22098        fn decode(
22099            slot: ::fidl_next::Slot<'_, Self>,
22100            decoder: &mut ___D,
22101            _: (),
22102        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
22103            ::fidl_next::munge!(let Self { table } = slot);
22104
22105            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
22106                match ordinal {
22107                    0 => unsafe { ::core::hint::unreachable_unchecked() },
22108
22109                    1 => {
22110                        ::fidl_next::wire::Envelope::decode_as::<
22111                            ___D,
22112                            ::fidl_next::wire::String<'de>,
22113                        >(slot.as_mut(), decoder, 100)?;
22114
22115                        let value = unsafe {
22116                            slot.deref_unchecked()
22117                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
22118                        };
22119
22120                        if value.len() > 100 {
22121                            return Err(::fidl_next::DecodeError::VectorTooLong {
22122                                size: value.len() as u64,
22123                                limit: 100,
22124                            });
22125                        }
22126
22127                        Ok(())
22128                    }
22129
22130                    2 => {
22131                        ::fidl_next::wire::Envelope::decode_as::<
22132                            ___D,
22133                            ::fidl_next::wire::String<'de>,
22134                        >(slot.as_mut(), decoder, 1024)?;
22135
22136                        let value = unsafe {
22137                            slot.deref_unchecked()
22138                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
22139                        };
22140
22141                        if value.len() > 1024 {
22142                            return Err(::fidl_next::DecodeError::VectorTooLong {
22143                                size: value.len() as u64,
22144                                limit: 1024,
22145                            });
22146                        }
22147
22148                        Ok(())
22149                    }
22150
22151                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
22152                }
22153            })
22154        }
22155    }
22156
22157    impl<'de> Runner<'de> {
22158        pub fn name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
22159            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
22160        }
22161
22162        pub fn take_name(&mut self) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
22163            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
22164        }
22165
22166        pub fn source_path(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
22167            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
22168        }
22169
22170        pub fn take_source_path(
22171            &mut self,
22172        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
22173            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
22174        }
22175    }
22176
22177    impl<'de> ::core::fmt::Debug for Runner<'de> {
22178        fn fmt(
22179            &self,
22180            f: &mut ::core::fmt::Formatter<'_>,
22181        ) -> ::core::result::Result<(), ::core::fmt::Error> {
22182            f.debug_struct("Runner")
22183                .field("name", &self.name())
22184                .field("source_path", &self.source_path())
22185                .finish()
22186        }
22187    }
22188
22189    impl<'de> ::fidl_next::IntoNatural for Runner<'de> {
22190        type Natural = crate::natural::Runner;
22191    }
22192
22193    /// The wire type corresponding to [`Resolver`].
22194    #[repr(C)]
22195    pub struct Resolver<'de> {
22196        pub(crate) table: ::fidl_next::wire::Table<'de>,
22197    }
22198
22199    impl<'de> Drop for Resolver<'de> {
22200        fn drop(&mut self) {
22201            let _ = self.table.get(1).map(|envelope| unsafe {
22202                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
22203            });
22204
22205            let _ = self.table.get(2).map(|envelope| unsafe {
22206                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
22207            });
22208        }
22209    }
22210
22211    impl ::fidl_next::Constrained for Resolver<'_> {
22212        type Constraint = ();
22213
22214        fn validate(
22215            _: ::fidl_next::Slot<'_, Self>,
22216            _: Self::Constraint,
22217        ) -> Result<(), ::fidl_next::ValidationError> {
22218            Ok(())
22219        }
22220    }
22221
22222    unsafe impl ::fidl_next::Wire for Resolver<'static> {
22223        type Narrowed<'de> = Resolver<'de>;
22224
22225        #[inline]
22226        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
22227            ::fidl_next::munge!(let Self { table } = out);
22228            ::fidl_next::wire::Table::zero_padding(table);
22229        }
22230    }
22231
22232    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for Resolver<'de>
22233    where
22234        ___D: ::fidl_next::Decoder<'de> + ?Sized,
22235    {
22236        fn decode(
22237            slot: ::fidl_next::Slot<'_, Self>,
22238            decoder: &mut ___D,
22239            _: (),
22240        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
22241            ::fidl_next::munge!(let Self { table } = slot);
22242
22243            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
22244                match ordinal {
22245                    0 => unsafe { ::core::hint::unreachable_unchecked() },
22246
22247                    1 => {
22248                        ::fidl_next::wire::Envelope::decode_as::<
22249                            ___D,
22250                            ::fidl_next::wire::String<'de>,
22251                        >(slot.as_mut(), decoder, 100)?;
22252
22253                        let value = unsafe {
22254                            slot.deref_unchecked()
22255                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
22256                        };
22257
22258                        if value.len() > 100 {
22259                            return Err(::fidl_next::DecodeError::VectorTooLong {
22260                                size: value.len() as u64,
22261                                limit: 100,
22262                            });
22263                        }
22264
22265                        Ok(())
22266                    }
22267
22268                    2 => {
22269                        ::fidl_next::wire::Envelope::decode_as::<
22270                            ___D,
22271                            ::fidl_next::wire::String<'de>,
22272                        >(slot.as_mut(), decoder, 1024)?;
22273
22274                        let value = unsafe {
22275                            slot.deref_unchecked()
22276                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
22277                        };
22278
22279                        if value.len() > 1024 {
22280                            return Err(::fidl_next::DecodeError::VectorTooLong {
22281                                size: value.len() as u64,
22282                                limit: 1024,
22283                            });
22284                        }
22285
22286                        Ok(())
22287                    }
22288
22289                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
22290                }
22291            })
22292        }
22293    }
22294
22295    impl<'de> Resolver<'de> {
22296        pub fn name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
22297            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
22298        }
22299
22300        pub fn take_name(&mut self) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
22301            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
22302        }
22303
22304        pub fn source_path(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
22305            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
22306        }
22307
22308        pub fn take_source_path(
22309            &mut self,
22310        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
22311            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
22312        }
22313    }
22314
22315    impl<'de> ::core::fmt::Debug for Resolver<'de> {
22316        fn fmt(
22317            &self,
22318            f: &mut ::core::fmt::Formatter<'_>,
22319        ) -> ::core::result::Result<(), ::core::fmt::Error> {
22320            f.debug_struct("Resolver")
22321                .field("name", &self.name())
22322                .field("source_path", &self.source_path())
22323                .finish()
22324        }
22325    }
22326
22327    impl<'de> ::fidl_next::IntoNatural for Resolver<'de> {
22328        type Natural = crate::natural::Resolver;
22329    }
22330
22331    /// The wire type corresponding to [`EventStream`].
22332    #[repr(C)]
22333    pub struct EventStream<'de> {
22334        pub(crate) table: ::fidl_next::wire::Table<'de>,
22335    }
22336
22337    impl<'de> Drop for EventStream<'de> {
22338        fn drop(&mut self) {
22339            let _ = self.table.get(1).map(|envelope| unsafe {
22340                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
22341            });
22342        }
22343    }
22344
22345    impl ::fidl_next::Constrained for EventStream<'_> {
22346        type Constraint = ();
22347
22348        fn validate(
22349            _: ::fidl_next::Slot<'_, Self>,
22350            _: Self::Constraint,
22351        ) -> Result<(), ::fidl_next::ValidationError> {
22352            Ok(())
22353        }
22354    }
22355
22356    unsafe impl ::fidl_next::Wire for EventStream<'static> {
22357        type Narrowed<'de> = EventStream<'de>;
22358
22359        #[inline]
22360        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
22361            ::fidl_next::munge!(let Self { table } = out);
22362            ::fidl_next::wire::Table::zero_padding(table);
22363        }
22364    }
22365
22366    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for EventStream<'de>
22367    where
22368        ___D: ::fidl_next::Decoder<'de> + ?Sized,
22369    {
22370        fn decode(
22371            slot: ::fidl_next::Slot<'_, Self>,
22372            decoder: &mut ___D,
22373            _: (),
22374        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
22375            ::fidl_next::munge!(let Self { table } = slot);
22376
22377            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
22378                match ordinal {
22379                    0 => unsafe { ::core::hint::unreachable_unchecked() },
22380
22381                    1 => {
22382                        ::fidl_next::wire::Envelope::decode_as::<
22383                            ___D,
22384                            ::fidl_next::wire::String<'de>,
22385                        >(slot.as_mut(), decoder, 100)?;
22386
22387                        let value = unsafe {
22388                            slot.deref_unchecked()
22389                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
22390                        };
22391
22392                        if value.len() > 100 {
22393                            return Err(::fidl_next::DecodeError::VectorTooLong {
22394                                size: value.len() as u64,
22395                                limit: 100,
22396                            });
22397                        }
22398
22399                        Ok(())
22400                    }
22401
22402                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
22403                }
22404            })
22405        }
22406    }
22407
22408    impl<'de> EventStream<'de> {
22409        pub fn name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
22410            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
22411        }
22412
22413        pub fn take_name(&mut self) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
22414            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
22415        }
22416    }
22417
22418    impl<'de> ::core::fmt::Debug for EventStream<'de> {
22419        fn fmt(
22420            &self,
22421            f: &mut ::core::fmt::Formatter<'_>,
22422        ) -> ::core::result::Result<(), ::core::fmt::Error> {
22423            f.debug_struct("EventStream").field("name", &self.name()).finish()
22424        }
22425    }
22426
22427    impl<'de> ::fidl_next::IntoNatural for EventStream<'de> {
22428        type Natural = crate::natural::EventStream;
22429    }
22430
22431    /// The wire type corresponding to [`ConfigSingleValue`].
22432    #[repr(transparent)]
22433    pub struct ConfigSingleValue<'de> {
22434        pub(crate) raw: ::fidl_next::wire::Union,
22435        pub(crate) _phantom: ::core::marker::PhantomData<&'de mut [::fidl_next::Chunk]>,
22436    }
22437
22438    impl<'de> Drop for ConfigSingleValue<'de> {
22439        fn drop(&mut self) {
22440            match self.raw.ordinal() {
22441                1 => {
22442                    let _ = unsafe { self.raw.get().read_unchecked::<bool>() };
22443                }
22444
22445                2 => {
22446                    let _ = unsafe { self.raw.get().read_unchecked::<u8>() };
22447                }
22448
22449                3 => {
22450                    let _ = unsafe { self.raw.get().read_unchecked::<::fidl_next::wire::Uint16>() };
22451                }
22452
22453                4 => {
22454                    let _ = unsafe { self.raw.get().read_unchecked::<::fidl_next::wire::Uint32>() };
22455                }
22456
22457                5 => {
22458                    let _ = unsafe { self.raw.get().read_unchecked::<::fidl_next::wire::Uint64>() };
22459                }
22460
22461                6 => {
22462                    let _ = unsafe { self.raw.get().read_unchecked::<i8>() };
22463                }
22464
22465                7 => {
22466                    let _ = unsafe { self.raw.get().read_unchecked::<::fidl_next::wire::Int16>() };
22467                }
22468
22469                8 => {
22470                    let _ = unsafe { self.raw.get().read_unchecked::<::fidl_next::wire::Int32>() };
22471                }
22472
22473                9 => {
22474                    let _ = unsafe { self.raw.get().read_unchecked::<::fidl_next::wire::Int64>() };
22475                }
22476
22477                10 => {
22478                    let _ = unsafe {
22479                        self.raw.get().read_unchecked::<::fidl_next::wire::String<'de>>()
22480                    };
22481                }
22482
22483                _ => (),
22484            }
22485        }
22486    }
22487
22488    impl ::fidl_next::Constrained for ConfigSingleValue<'_> {
22489        type Constraint = ();
22490
22491        fn validate(
22492            _: ::fidl_next::Slot<'_, Self>,
22493            _: Self::Constraint,
22494        ) -> Result<(), ::fidl_next::ValidationError> {
22495            Ok(())
22496        }
22497    }
22498
22499    unsafe impl ::fidl_next::Wire for ConfigSingleValue<'static> {
22500        type Narrowed<'de> = ConfigSingleValue<'de>;
22501
22502        #[inline]
22503        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
22504            ::fidl_next::munge!(let Self { raw, _phantom: _ } = out);
22505            ::fidl_next::wire::Union::zero_padding(raw);
22506        }
22507    }
22508
22509    pub mod config_single_value {
22510        pub enum Ref<'de> {
22511            Bool(&'de bool),
22512
22513            Uint8(&'de u8),
22514
22515            Uint16(&'de ::fidl_next::wire::Uint16),
22516
22517            Uint32(&'de ::fidl_next::wire::Uint32),
22518
22519            Uint64(&'de ::fidl_next::wire::Uint64),
22520
22521            Int8(&'de i8),
22522
22523            Int16(&'de ::fidl_next::wire::Int16),
22524
22525            Int32(&'de ::fidl_next::wire::Int32),
22526
22527            Int64(&'de ::fidl_next::wire::Int64),
22528
22529            String(&'de ::fidl_next::wire::String<'de>),
22530
22531            UnknownOrdinal_(u64),
22532        }
22533
22534        pub enum Value<'de> {
22535            Bool(bool),
22536
22537            Uint8(u8),
22538
22539            Uint16(::fidl_next::wire::Uint16),
22540
22541            Uint32(::fidl_next::wire::Uint32),
22542
22543            Uint64(::fidl_next::wire::Uint64),
22544
22545            Int8(i8),
22546
22547            Int16(::fidl_next::wire::Int16),
22548
22549            Int32(::fidl_next::wire::Int32),
22550
22551            Int64(::fidl_next::wire::Int64),
22552
22553            String(::fidl_next::wire::String<'de>),
22554
22555            UnknownOrdinal_(u64),
22556        }
22557    }
22558
22559    impl<'de> ConfigSingleValue<'de> {
22560        pub fn as_ref(&self) -> crate::wire::config_single_value::Ref<'_> {
22561            match self.raw.ordinal() {
22562                1 => crate::wire::config_single_value::Ref::Bool(unsafe {
22563                    self.raw.get().deref_unchecked::<bool>()
22564                }),
22565
22566                2 => crate::wire::config_single_value::Ref::Uint8(unsafe {
22567                    self.raw.get().deref_unchecked::<u8>()
22568                }),
22569
22570                3 => crate::wire::config_single_value::Ref::Uint16(unsafe {
22571                    self.raw.get().deref_unchecked::<::fidl_next::wire::Uint16>()
22572                }),
22573
22574                4 => crate::wire::config_single_value::Ref::Uint32(unsafe {
22575                    self.raw.get().deref_unchecked::<::fidl_next::wire::Uint32>()
22576                }),
22577
22578                5 => crate::wire::config_single_value::Ref::Uint64(unsafe {
22579                    self.raw.get().deref_unchecked::<::fidl_next::wire::Uint64>()
22580                }),
22581
22582                6 => crate::wire::config_single_value::Ref::Int8(unsafe {
22583                    self.raw.get().deref_unchecked::<i8>()
22584                }),
22585
22586                7 => crate::wire::config_single_value::Ref::Int16(unsafe {
22587                    self.raw.get().deref_unchecked::<::fidl_next::wire::Int16>()
22588                }),
22589
22590                8 => crate::wire::config_single_value::Ref::Int32(unsafe {
22591                    self.raw.get().deref_unchecked::<::fidl_next::wire::Int32>()
22592                }),
22593
22594                9 => crate::wire::config_single_value::Ref::Int64(unsafe {
22595                    self.raw.get().deref_unchecked::<::fidl_next::wire::Int64>()
22596                }),
22597
22598                10 => crate::wire::config_single_value::Ref::String(unsafe {
22599                    self.raw.get().deref_unchecked::<::fidl_next::wire::String<'_>>()
22600                }),
22601
22602                unknown => crate::wire::config_single_value::Ref::UnknownOrdinal_(unknown),
22603            }
22604        }
22605
22606        pub fn into_inner(self) -> crate::wire::config_single_value::Value<'de> {
22607            let this = ::core::mem::ManuallyDrop::new(self);
22608
22609            match this.raw.ordinal() {
22610                1 => crate::wire::config_single_value::Value::Bool(unsafe {
22611                    this.raw.get().read_unchecked::<bool>()
22612                }),
22613
22614                2 => crate::wire::config_single_value::Value::Uint8(unsafe {
22615                    this.raw.get().read_unchecked::<u8>()
22616                }),
22617
22618                3 => crate::wire::config_single_value::Value::Uint16(unsafe {
22619                    this.raw.get().read_unchecked::<::fidl_next::wire::Uint16>()
22620                }),
22621
22622                4 => crate::wire::config_single_value::Value::Uint32(unsafe {
22623                    this.raw.get().read_unchecked::<::fidl_next::wire::Uint32>()
22624                }),
22625
22626                5 => crate::wire::config_single_value::Value::Uint64(unsafe {
22627                    this.raw.get().read_unchecked::<::fidl_next::wire::Uint64>()
22628                }),
22629
22630                6 => crate::wire::config_single_value::Value::Int8(unsafe {
22631                    this.raw.get().read_unchecked::<i8>()
22632                }),
22633
22634                7 => crate::wire::config_single_value::Value::Int16(unsafe {
22635                    this.raw.get().read_unchecked::<::fidl_next::wire::Int16>()
22636                }),
22637
22638                8 => crate::wire::config_single_value::Value::Int32(unsafe {
22639                    this.raw.get().read_unchecked::<::fidl_next::wire::Int32>()
22640                }),
22641
22642                9 => crate::wire::config_single_value::Value::Int64(unsafe {
22643                    this.raw.get().read_unchecked::<::fidl_next::wire::Int64>()
22644                }),
22645
22646                10 => crate::wire::config_single_value::Value::String(unsafe {
22647                    this.raw.get().read_unchecked::<::fidl_next::wire::String<'de>>()
22648                }),
22649
22650                unknown => crate::wire::config_single_value::Value::UnknownOrdinal_(unknown),
22651            }
22652        }
22653    }
22654
22655    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for ConfigSingleValue<'de>
22656    where
22657        ___D: ::fidl_next::decoder::InternalHandleDecoder + ?Sized,
22658        ___D: ::fidl_next::Decoder<'de>,
22659    {
22660        fn decode(
22661            mut slot: ::fidl_next::Slot<'_, Self>,
22662            decoder: &mut ___D,
22663            _: (),
22664        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
22665            ::fidl_next::munge!(let Self { mut raw, _phantom: _ } = slot.as_mut());
22666            match ::fidl_next::wire::Union::encoded_ordinal(raw.as_mut()) {
22667                1 => ::fidl_next::wire::Union::decode_as::<___D, bool>(raw, decoder, ())?,
22668
22669                2 => ::fidl_next::wire::Union::decode_as::<___D, u8>(raw, decoder, ())?,
22670
22671                3 => ::fidl_next::wire::Union::decode_as::<___D, ::fidl_next::wire::Uint16>(
22672                    raw,
22673                    decoder,
22674                    (),
22675                )?,
22676
22677                4 => ::fidl_next::wire::Union::decode_as::<___D, ::fidl_next::wire::Uint32>(
22678                    raw,
22679                    decoder,
22680                    (),
22681                )?,
22682
22683                5 => ::fidl_next::wire::Union::decode_as::<___D, ::fidl_next::wire::Uint64>(
22684                    raw,
22685                    decoder,
22686                    (),
22687                )?,
22688
22689                6 => ::fidl_next::wire::Union::decode_as::<___D, i8>(raw, decoder, ())?,
22690
22691                7 => ::fidl_next::wire::Union::decode_as::<___D, ::fidl_next::wire::Int16>(
22692                    raw,
22693                    decoder,
22694                    (),
22695                )?,
22696
22697                8 => ::fidl_next::wire::Union::decode_as::<___D, ::fidl_next::wire::Int32>(
22698                    raw,
22699                    decoder,
22700                    (),
22701                )?,
22702
22703                9 => ::fidl_next::wire::Union::decode_as::<___D, ::fidl_next::wire::Int64>(
22704                    raw,
22705                    decoder,
22706                    (),
22707                )?,
22708
22709                10 => ::fidl_next::wire::Union::decode_as::<___D, ::fidl_next::wire::String<'de>>(
22710                    raw, decoder, 4294967295,
22711                )?,
22712
22713                _ => ::fidl_next::wire::Union::decode_unknown(raw, decoder)?,
22714            }
22715
22716            Ok(())
22717        }
22718    }
22719
22720    impl<'de> ::core::fmt::Debug for ConfigSingleValue<'de> {
22721        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
22722            match self.raw.ordinal() {
22723                1 => unsafe { self.raw.get().deref_unchecked::<bool>().fmt(f) },
22724                2 => unsafe { self.raw.get().deref_unchecked::<u8>().fmt(f) },
22725                3 => unsafe {
22726                    self.raw.get().deref_unchecked::<::fidl_next::wire::Uint16>().fmt(f)
22727                },
22728                4 => unsafe {
22729                    self.raw.get().deref_unchecked::<::fidl_next::wire::Uint32>().fmt(f)
22730                },
22731                5 => unsafe {
22732                    self.raw.get().deref_unchecked::<::fidl_next::wire::Uint64>().fmt(f)
22733                },
22734                6 => unsafe { self.raw.get().deref_unchecked::<i8>().fmt(f) },
22735                7 => unsafe { self.raw.get().deref_unchecked::<::fidl_next::wire::Int16>().fmt(f) },
22736                8 => unsafe { self.raw.get().deref_unchecked::<::fidl_next::wire::Int32>().fmt(f) },
22737                9 => unsafe { self.raw.get().deref_unchecked::<::fidl_next::wire::Int64>().fmt(f) },
22738                10 => unsafe {
22739                    self.raw.get().deref_unchecked::<::fidl_next::wire::String<'_>>().fmt(f)
22740                },
22741                _ => unsafe { ::core::hint::unreachable_unchecked() },
22742            }
22743        }
22744    }
22745
22746    impl<'de> ::fidl_next::IntoNatural for ConfigSingleValue<'de> {
22747        type Natural = crate::natural::ConfigSingleValue;
22748    }
22749
22750    /// The wire type corresponding to [`ConfigVectorValue`].
22751    #[repr(transparent)]
22752    pub struct ConfigVectorValue<'de> {
22753        pub(crate) raw: ::fidl_next::wire::Union,
22754        pub(crate) _phantom: ::core::marker::PhantomData<&'de mut [::fidl_next::Chunk]>,
22755    }
22756
22757    impl<'de> Drop for ConfigVectorValue<'de> {
22758        fn drop(&mut self) {
22759            match self.raw.ordinal() {
22760                1 => {
22761                    let _ = unsafe {
22762                        self.raw.get().read_unchecked::<::fidl_next::wire::Vector<'de, bool>>()
22763                    };
22764                }
22765
22766                2 => {
22767                    let _ = unsafe {
22768                        self.raw.get().read_unchecked::<::fidl_next::wire::Vector<'de, u8>>()
22769                    };
22770                }
22771
22772                3 => {
22773                    let _ = unsafe {
22774                        self.raw.get().read_unchecked::<::fidl_next::wire::Vector<'de, ::fidl_next::wire::Uint16>>()
22775                    };
22776                }
22777
22778                4 => {
22779                    let _ = unsafe {
22780                        self.raw.get().read_unchecked::<::fidl_next::wire::Vector<'de, ::fidl_next::wire::Uint32>>()
22781                    };
22782                }
22783
22784                5 => {
22785                    let _ = unsafe {
22786                        self.raw.get().read_unchecked::<::fidl_next::wire::Vector<'de, ::fidl_next::wire::Uint64>>()
22787                    };
22788                }
22789
22790                6 => {
22791                    let _ = unsafe {
22792                        self.raw.get().read_unchecked::<::fidl_next::wire::Vector<'de, i8>>()
22793                    };
22794                }
22795
22796                7 => {
22797                    let _ = unsafe {
22798                        self.raw.get().read_unchecked::<::fidl_next::wire::Vector<'de, ::fidl_next::wire::Int16>>()
22799                    };
22800                }
22801
22802                8 => {
22803                    let _ = unsafe {
22804                        self.raw.get().read_unchecked::<::fidl_next::wire::Vector<'de, ::fidl_next::wire::Int32>>()
22805                    };
22806                }
22807
22808                9 => {
22809                    let _ = unsafe {
22810                        self.raw.get().read_unchecked::<::fidl_next::wire::Vector<'de, ::fidl_next::wire::Int64>>()
22811                    };
22812                }
22813
22814                10 => {
22815                    let _ = unsafe {
22816                        self.raw.get().read_unchecked::<::fidl_next::wire::Vector<'de, ::fidl_next::wire::String<'de>>>()
22817                    };
22818                }
22819
22820                _ => (),
22821            }
22822        }
22823    }
22824
22825    impl ::fidl_next::Constrained for ConfigVectorValue<'_> {
22826        type Constraint = ();
22827
22828        fn validate(
22829            _: ::fidl_next::Slot<'_, Self>,
22830            _: Self::Constraint,
22831        ) -> Result<(), ::fidl_next::ValidationError> {
22832            Ok(())
22833        }
22834    }
22835
22836    unsafe impl ::fidl_next::Wire for ConfigVectorValue<'static> {
22837        type Narrowed<'de> = ConfigVectorValue<'de>;
22838
22839        #[inline]
22840        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
22841            ::fidl_next::munge!(let Self { raw, _phantom: _ } = out);
22842            ::fidl_next::wire::Union::zero_padding(raw);
22843        }
22844    }
22845
22846    pub mod config_vector_value {
22847        pub enum Ref<'de> {
22848            BoolVector(&'de ::fidl_next::wire::Vector<'de, bool>),
22849
22850            Uint8Vector(&'de ::fidl_next::wire::Vector<'de, u8>),
22851
22852            Uint16Vector(&'de ::fidl_next::wire::Vector<'de, ::fidl_next::wire::Uint16>),
22853
22854            Uint32Vector(&'de ::fidl_next::wire::Vector<'de, ::fidl_next::wire::Uint32>),
22855
22856            Uint64Vector(&'de ::fidl_next::wire::Vector<'de, ::fidl_next::wire::Uint64>),
22857
22858            Int8Vector(&'de ::fidl_next::wire::Vector<'de, i8>),
22859
22860            Int16Vector(&'de ::fidl_next::wire::Vector<'de, ::fidl_next::wire::Int16>),
22861
22862            Int32Vector(&'de ::fidl_next::wire::Vector<'de, ::fidl_next::wire::Int32>),
22863
22864            Int64Vector(&'de ::fidl_next::wire::Vector<'de, ::fidl_next::wire::Int64>),
22865
22866            StringVector(&'de ::fidl_next::wire::Vector<'de, ::fidl_next::wire::String<'de>>),
22867
22868            UnknownOrdinal_(u64),
22869        }
22870
22871        pub enum Value<'de> {
22872            BoolVector(::fidl_next::wire::Vector<'de, bool>),
22873
22874            Uint8Vector(::fidl_next::wire::Vector<'de, u8>),
22875
22876            Uint16Vector(::fidl_next::wire::Vector<'de, ::fidl_next::wire::Uint16>),
22877
22878            Uint32Vector(::fidl_next::wire::Vector<'de, ::fidl_next::wire::Uint32>),
22879
22880            Uint64Vector(::fidl_next::wire::Vector<'de, ::fidl_next::wire::Uint64>),
22881
22882            Int8Vector(::fidl_next::wire::Vector<'de, i8>),
22883
22884            Int16Vector(::fidl_next::wire::Vector<'de, ::fidl_next::wire::Int16>),
22885
22886            Int32Vector(::fidl_next::wire::Vector<'de, ::fidl_next::wire::Int32>),
22887
22888            Int64Vector(::fidl_next::wire::Vector<'de, ::fidl_next::wire::Int64>),
22889
22890            StringVector(::fidl_next::wire::Vector<'de, ::fidl_next::wire::String<'de>>),
22891
22892            UnknownOrdinal_(u64),
22893        }
22894    }
22895
22896    impl<'de> ConfigVectorValue<'de> {
22897        pub fn as_ref(&self) -> crate::wire::config_vector_value::Ref<'_> {
22898            match self.raw.ordinal() {
22899                1 => crate::wire::config_vector_value::Ref::BoolVector(unsafe {
22900                    self.raw.get().deref_unchecked::<::fidl_next::wire::Vector<'_, bool>>()
22901                }),
22902
22903                2 => crate::wire::config_vector_value::Ref::Uint8Vector(unsafe {
22904                    self.raw.get().deref_unchecked::<::fidl_next::wire::Vector<'_, u8>>()
22905                }),
22906
22907                3 => crate::wire::config_vector_value::Ref::Uint16Vector(unsafe {
22908                    self.raw.get().deref_unchecked::<::fidl_next::wire::Vector<'_, ::fidl_next::wire::Uint16>>()
22909                }),
22910
22911                4 => crate::wire::config_vector_value::Ref::Uint32Vector(unsafe {
22912                    self.raw.get().deref_unchecked::<::fidl_next::wire::Vector<'_, ::fidl_next::wire::Uint32>>()
22913                }),
22914
22915                5 => crate::wire::config_vector_value::Ref::Uint64Vector(unsafe {
22916                    self.raw.get().deref_unchecked::<::fidl_next::wire::Vector<'_, ::fidl_next::wire::Uint64>>()
22917                }),
22918
22919                6 => crate::wire::config_vector_value::Ref::Int8Vector(unsafe {
22920                    self.raw.get().deref_unchecked::<::fidl_next::wire::Vector<'_, i8>>()
22921                }),
22922
22923                7 => {
22924                    crate::wire::config_vector_value::Ref::Int16Vector(unsafe {
22925                        self.raw.get().deref_unchecked::<::fidl_next::wire::Vector<'_, ::fidl_next::wire::Int16>>()
22926                    })
22927                }
22928
22929                8 => {
22930                    crate::wire::config_vector_value::Ref::Int32Vector(unsafe {
22931                        self.raw.get().deref_unchecked::<::fidl_next::wire::Vector<'_, ::fidl_next::wire::Int32>>()
22932                    })
22933                }
22934
22935                9 => {
22936                    crate::wire::config_vector_value::Ref::Int64Vector(unsafe {
22937                        self.raw.get().deref_unchecked::<::fidl_next::wire::Vector<'_, ::fidl_next::wire::Int64>>()
22938                    })
22939                }
22940
22941                10 => crate::wire::config_vector_value::Ref::StringVector(unsafe {
22942                    self.raw.get().deref_unchecked::<::fidl_next::wire::Vector<'_, ::fidl_next::wire::String<'_>>>()
22943                }),
22944
22945                unknown => crate::wire::config_vector_value::Ref::UnknownOrdinal_(unknown),
22946            }
22947        }
22948
22949        pub fn into_inner(self) -> crate::wire::config_vector_value::Value<'de> {
22950            let this = ::core::mem::ManuallyDrop::new(self);
22951
22952            match this.raw.ordinal() {
22953                1 => crate::wire::config_vector_value::Value::BoolVector(unsafe {
22954                    this.raw.get().read_unchecked::<::fidl_next::wire::Vector<'de, bool>>()
22955                }),
22956
22957                2 => crate::wire::config_vector_value::Value::Uint8Vector(unsafe {
22958                    this.raw.get().read_unchecked::<::fidl_next::wire::Vector<'de, u8>>()
22959                }),
22960
22961                3 => crate::wire::config_vector_value::Value::Uint16Vector(unsafe {
22962                    this.raw.get().read_unchecked::<::fidl_next::wire::Vector<'de, ::fidl_next::wire::Uint16>>()
22963                }),
22964
22965                4 => crate::wire::config_vector_value::Value::Uint32Vector(unsafe {
22966                    this.raw.get().read_unchecked::<::fidl_next::wire::Vector<'de, ::fidl_next::wire::Uint32>>()
22967                }),
22968
22969                5 => crate::wire::config_vector_value::Value::Uint64Vector(unsafe {
22970                    this.raw.get().read_unchecked::<::fidl_next::wire::Vector<'de, ::fidl_next::wire::Uint64>>()
22971                }),
22972
22973                6 => crate::wire::config_vector_value::Value::Int8Vector(unsafe {
22974                    this.raw.get().read_unchecked::<::fidl_next::wire::Vector<'de, i8>>()
22975                }),
22976
22977                7 => {
22978                    crate::wire::config_vector_value::Value::Int16Vector(unsafe {
22979                        this.raw.get().read_unchecked::<::fidl_next::wire::Vector<'de, ::fidl_next::wire::Int16>>()
22980                    })
22981                }
22982
22983                8 => {
22984                    crate::wire::config_vector_value::Value::Int32Vector(unsafe {
22985                        this.raw.get().read_unchecked::<::fidl_next::wire::Vector<'de, ::fidl_next::wire::Int32>>()
22986                    })
22987                }
22988
22989                9 => {
22990                    crate::wire::config_vector_value::Value::Int64Vector(unsafe {
22991                        this.raw.get().read_unchecked::<::fidl_next::wire::Vector<'de, ::fidl_next::wire::Int64>>()
22992                    })
22993                }
22994
22995                10 => crate::wire::config_vector_value::Value::StringVector(unsafe {
22996                    this.raw.get().read_unchecked::<::fidl_next::wire::Vector<'de, ::fidl_next::wire::String<'de>>>()
22997                }),
22998
22999                unknown => crate::wire::config_vector_value::Value::UnknownOrdinal_(unknown),
23000            }
23001        }
23002    }
23003
23004    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for ConfigVectorValue<'de>
23005    where
23006        ___D: ::fidl_next::decoder::InternalHandleDecoder + ?Sized,
23007        ___D: ::fidl_next::Decoder<'de>,
23008    {
23009        fn decode(
23010            mut slot: ::fidl_next::Slot<'_, Self>,
23011            decoder: &mut ___D,
23012            _: (),
23013        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
23014            ::fidl_next::munge!(let Self { mut raw, _phantom: _ } = slot.as_mut());
23015            match ::fidl_next::wire::Union::encoded_ordinal(raw.as_mut()) {
23016                1 => ::fidl_next::wire::Union::decode_as::<
23017                    ___D,
23018                    ::fidl_next::wire::Vector<'de, bool>,
23019                >(raw, decoder, (4294967295, ()))?,
23020
23021                2 => {
23022                    ::fidl_next::wire::Union::decode_as::<___D, ::fidl_next::wire::Vector<'de, u8>>(
23023                        raw,
23024                        decoder,
23025                        (4294967295, ()),
23026                    )?
23027                }
23028
23029                3 => ::fidl_next::wire::Union::decode_as::<
23030                    ___D,
23031                    ::fidl_next::wire::Vector<'de, ::fidl_next::wire::Uint16>,
23032                >(raw, decoder, (4294967295, ()))?,
23033
23034                4 => ::fidl_next::wire::Union::decode_as::<
23035                    ___D,
23036                    ::fidl_next::wire::Vector<'de, ::fidl_next::wire::Uint32>,
23037                >(raw, decoder, (4294967295, ()))?,
23038
23039                5 => ::fidl_next::wire::Union::decode_as::<
23040                    ___D,
23041                    ::fidl_next::wire::Vector<'de, ::fidl_next::wire::Uint64>,
23042                >(raw, decoder, (4294967295, ()))?,
23043
23044                6 => {
23045                    ::fidl_next::wire::Union::decode_as::<___D, ::fidl_next::wire::Vector<'de, i8>>(
23046                        raw,
23047                        decoder,
23048                        (4294967295, ()),
23049                    )?
23050                }
23051
23052                7 => ::fidl_next::wire::Union::decode_as::<
23053                    ___D,
23054                    ::fidl_next::wire::Vector<'de, ::fidl_next::wire::Int16>,
23055                >(raw, decoder, (4294967295, ()))?,
23056
23057                8 => ::fidl_next::wire::Union::decode_as::<
23058                    ___D,
23059                    ::fidl_next::wire::Vector<'de, ::fidl_next::wire::Int32>,
23060                >(raw, decoder, (4294967295, ()))?,
23061
23062                9 => ::fidl_next::wire::Union::decode_as::<
23063                    ___D,
23064                    ::fidl_next::wire::Vector<'de, ::fidl_next::wire::Int64>,
23065                >(raw, decoder, (4294967295, ()))?,
23066
23067                10 => ::fidl_next::wire::Union::decode_as::<
23068                    ___D,
23069                    ::fidl_next::wire::Vector<'de, ::fidl_next::wire::String<'de>>,
23070                >(raw, decoder, (4294967295, 4294967295))?,
23071
23072                _ => ::fidl_next::wire::Union::decode_unknown(raw, decoder)?,
23073            }
23074
23075            Ok(())
23076        }
23077    }
23078
23079    impl<'de> ::core::fmt::Debug for ConfigVectorValue<'de> {
23080        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
23081            match self.raw.ordinal() {
23082                1 => unsafe {
23083                    self.raw.get().deref_unchecked::<::fidl_next::wire::Vector<'_, bool>>().fmt(f)
23084                },
23085                2 => unsafe {
23086                    self.raw.get().deref_unchecked::<::fidl_next::wire::Vector<'_, u8>>().fmt(f)
23087                },
23088                3 => unsafe {
23089                    self.raw.get().deref_unchecked::<
23090                            ::fidl_next::wire::Vector<'_, ::fidl_next::wire::Uint16>
23091                        >().fmt(f)
23092                },
23093                4 => unsafe {
23094                    self.raw.get().deref_unchecked::<
23095                            ::fidl_next::wire::Vector<'_, ::fidl_next::wire::Uint32>
23096                        >().fmt(f)
23097                },
23098                5 => unsafe {
23099                    self.raw.get().deref_unchecked::<
23100                            ::fidl_next::wire::Vector<'_, ::fidl_next::wire::Uint64>
23101                        >().fmt(f)
23102                },
23103                6 => unsafe {
23104                    self.raw.get().deref_unchecked::<::fidl_next::wire::Vector<'_, i8>>().fmt(f)
23105                },
23106                7 => unsafe {
23107                    self.raw
23108                        .get()
23109                        .deref_unchecked::<::fidl_next::wire::Vector<'_, ::fidl_next::wire::Int16>>(
23110                        )
23111                        .fmt(f)
23112                },
23113                8 => unsafe {
23114                    self.raw
23115                        .get()
23116                        .deref_unchecked::<::fidl_next::wire::Vector<'_, ::fidl_next::wire::Int32>>(
23117                        )
23118                        .fmt(f)
23119                },
23120                9 => unsafe {
23121                    self.raw
23122                        .get()
23123                        .deref_unchecked::<::fidl_next::wire::Vector<'_, ::fidl_next::wire::Int64>>(
23124                        )
23125                        .fmt(f)
23126                },
23127                10 => unsafe {
23128                    self.raw.get().deref_unchecked::<
23129                            ::fidl_next::wire::Vector<'_, ::fidl_next::wire::String<'_>>
23130                        >().fmt(f)
23131                },
23132                _ => unsafe { ::core::hint::unreachable_unchecked() },
23133            }
23134        }
23135    }
23136
23137    impl<'de> ::fidl_next::IntoNatural for ConfigVectorValue<'de> {
23138        type Natural = crate::natural::ConfigVectorValue;
23139    }
23140
23141    /// The wire type corresponding to [`ConfigValue`].
23142    #[repr(transparent)]
23143    pub struct ConfigValue<'de> {
23144        pub(crate) raw: ::fidl_next::wire::Union,
23145        pub(crate) _phantom: ::core::marker::PhantomData<&'de mut [::fidl_next::Chunk]>,
23146    }
23147
23148    impl<'de> Drop for ConfigValue<'de> {
23149        fn drop(&mut self) {
23150            match self.raw.ordinal() {
23151                1 => {
23152                    let _ = unsafe {
23153                        self.raw.get().read_unchecked::<crate::wire::ConfigSingleValue<'de>>()
23154                    };
23155                }
23156
23157                2 => {
23158                    let _ = unsafe {
23159                        self.raw.get().read_unchecked::<crate::wire::ConfigVectorValue<'de>>()
23160                    };
23161                }
23162
23163                _ => (),
23164            }
23165        }
23166    }
23167
23168    impl ::fidl_next::Constrained for ConfigValue<'_> {
23169        type Constraint = ();
23170
23171        fn validate(
23172            _: ::fidl_next::Slot<'_, Self>,
23173            _: Self::Constraint,
23174        ) -> Result<(), ::fidl_next::ValidationError> {
23175            Ok(())
23176        }
23177    }
23178
23179    unsafe impl ::fidl_next::Wire for ConfigValue<'static> {
23180        type Narrowed<'de> = ConfigValue<'de>;
23181
23182        #[inline]
23183        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
23184            ::fidl_next::munge!(let Self { raw, _phantom: _ } = out);
23185            ::fidl_next::wire::Union::zero_padding(raw);
23186        }
23187    }
23188
23189    pub mod config_value {
23190        pub enum Ref<'de> {
23191            Single(&'de crate::wire::ConfigSingleValue<'de>),
23192
23193            Vector(&'de crate::wire::ConfigVectorValue<'de>),
23194
23195            UnknownOrdinal_(u64),
23196        }
23197
23198        pub enum Value<'de> {
23199            Single(crate::wire::ConfigSingleValue<'de>),
23200
23201            Vector(crate::wire::ConfigVectorValue<'de>),
23202
23203            UnknownOrdinal_(u64),
23204        }
23205    }
23206
23207    impl<'de> ConfigValue<'de> {
23208        pub fn as_ref(&self) -> crate::wire::config_value::Ref<'_> {
23209            match self.raw.ordinal() {
23210                1 => crate::wire::config_value::Ref::Single(unsafe {
23211                    self.raw.get().deref_unchecked::<crate::wire::ConfigSingleValue<'_>>()
23212                }),
23213
23214                2 => crate::wire::config_value::Ref::Vector(unsafe {
23215                    self.raw.get().deref_unchecked::<crate::wire::ConfigVectorValue<'_>>()
23216                }),
23217
23218                unknown => crate::wire::config_value::Ref::UnknownOrdinal_(unknown),
23219            }
23220        }
23221
23222        pub fn into_inner(self) -> crate::wire::config_value::Value<'de> {
23223            let this = ::core::mem::ManuallyDrop::new(self);
23224
23225            match this.raw.ordinal() {
23226                1 => crate::wire::config_value::Value::Single(unsafe {
23227                    this.raw.get().read_unchecked::<crate::wire::ConfigSingleValue<'de>>()
23228                }),
23229
23230                2 => crate::wire::config_value::Value::Vector(unsafe {
23231                    this.raw.get().read_unchecked::<crate::wire::ConfigVectorValue<'de>>()
23232                }),
23233
23234                unknown => crate::wire::config_value::Value::UnknownOrdinal_(unknown),
23235            }
23236        }
23237    }
23238
23239    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for ConfigValue<'de>
23240    where
23241        ___D: ::fidl_next::decoder::InternalHandleDecoder + ?Sized,
23242        ___D: ::fidl_next::Decoder<'de>,
23243    {
23244        fn decode(
23245            mut slot: ::fidl_next::Slot<'_, Self>,
23246            decoder: &mut ___D,
23247            _: (),
23248        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
23249            ::fidl_next::munge!(let Self { mut raw, _phantom: _ } = slot.as_mut());
23250            match ::fidl_next::wire::Union::encoded_ordinal(raw.as_mut()) {
23251                1 => ::fidl_next::wire::Union::decode_as::<
23252                    ___D,
23253                    crate::wire::ConfigSingleValue<'de>,
23254                >(raw, decoder, ())?,
23255
23256                2 => ::fidl_next::wire::Union::decode_as::<
23257                    ___D,
23258                    crate::wire::ConfigVectorValue<'de>,
23259                >(raw, decoder, ())?,
23260
23261                _ => ::fidl_next::wire::Union::decode_unknown(raw, decoder)?,
23262            }
23263
23264            Ok(())
23265        }
23266    }
23267
23268    impl<'de> ::core::fmt::Debug for ConfigValue<'de> {
23269        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
23270            match self.raw.ordinal() {
23271                1 => unsafe {
23272                    self.raw.get().deref_unchecked::<crate::wire::ConfigSingleValue<'_>>().fmt(f)
23273                },
23274                2 => unsafe {
23275                    self.raw.get().deref_unchecked::<crate::wire::ConfigVectorValue<'_>>().fmt(f)
23276                },
23277                _ => unsafe { ::core::hint::unreachable_unchecked() },
23278            }
23279        }
23280    }
23281
23282    impl<'de> ::fidl_next::IntoNatural for ConfigValue<'de> {
23283        type Natural = crate::natural::ConfigValue;
23284    }
23285
23286    /// The wire type corresponding to [`Configuration`].
23287    #[repr(C)]
23288    pub struct Configuration<'de> {
23289        pub(crate) table: ::fidl_next::wire::Table<'de>,
23290    }
23291
23292    impl<'de> Drop for Configuration<'de> {
23293        fn drop(&mut self) {
23294            let _ = self.table.get(1).map(|envelope| unsafe {
23295                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
23296            });
23297
23298            let _ = self.table.get(2).map(|envelope| unsafe {
23299                envelope.read_unchecked::<crate::wire::ConfigValue<'de>>()
23300            });
23301        }
23302    }
23303
23304    impl ::fidl_next::Constrained for Configuration<'_> {
23305        type Constraint = ();
23306
23307        fn validate(
23308            _: ::fidl_next::Slot<'_, Self>,
23309            _: Self::Constraint,
23310        ) -> Result<(), ::fidl_next::ValidationError> {
23311            Ok(())
23312        }
23313    }
23314
23315    unsafe impl ::fidl_next::Wire for Configuration<'static> {
23316        type Narrowed<'de> = Configuration<'de>;
23317
23318        #[inline]
23319        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
23320            ::fidl_next::munge!(let Self { table } = out);
23321            ::fidl_next::wire::Table::zero_padding(table);
23322        }
23323    }
23324
23325    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for Configuration<'de>
23326    where
23327        ___D: ::fidl_next::Decoder<'de> + ?Sized,
23328    {
23329        fn decode(
23330            slot: ::fidl_next::Slot<'_, Self>,
23331            decoder: &mut ___D,
23332            _: (),
23333        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
23334            ::fidl_next::munge!(let Self { table } = slot);
23335
23336            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
23337                match ordinal {
23338                    0 => unsafe { ::core::hint::unreachable_unchecked() },
23339
23340                    1 => {
23341                        ::fidl_next::wire::Envelope::decode_as::<
23342                            ___D,
23343                            ::fidl_next::wire::String<'de>,
23344                        >(slot.as_mut(), decoder, 100)?;
23345
23346                        let value = unsafe {
23347                            slot.deref_unchecked()
23348                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
23349                        };
23350
23351                        if value.len() > 100 {
23352                            return Err(::fidl_next::DecodeError::VectorTooLong {
23353                                size: value.len() as u64,
23354                                limit: 100,
23355                            });
23356                        }
23357
23358                        Ok(())
23359                    }
23360
23361                    2 => {
23362                        ::fidl_next::wire::Envelope::decode_as::<
23363                            ___D,
23364                            crate::wire::ConfigValue<'de>,
23365                        >(slot.as_mut(), decoder, ())?;
23366
23367                        Ok(())
23368                    }
23369
23370                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
23371                }
23372            })
23373        }
23374    }
23375
23376    impl<'de> Configuration<'de> {
23377        pub fn name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
23378            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
23379        }
23380
23381        pub fn take_name(&mut self) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
23382            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
23383        }
23384
23385        pub fn value(&self) -> ::core::option::Option<&crate::wire::ConfigValue<'de>> {
23386            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
23387        }
23388
23389        pub fn take_value(&mut self) -> ::core::option::Option<crate::wire::ConfigValue<'de>> {
23390            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
23391        }
23392    }
23393
23394    impl<'de> ::core::fmt::Debug for Configuration<'de> {
23395        fn fmt(
23396            &self,
23397            f: &mut ::core::fmt::Formatter<'_>,
23398        ) -> ::core::result::Result<(), ::core::fmt::Error> {
23399            f.debug_struct("Configuration")
23400                .field("name", &self.name())
23401                .field("value", &self.value())
23402                .finish()
23403        }
23404    }
23405
23406    impl<'de> ::fidl_next::IntoNatural for Configuration<'de> {
23407        type Natural = crate::natural::Configuration;
23408    }
23409
23410    /// The wire type corresponding to [`DictionaryPath`](crate::natural::DictionaryPath).
23411    pub type DictionaryPath<'de> = ::fidl_next::wire::String<'de>;
23412
23413    /// The wire type corresponding to [`DeliveryType`].
23414    #[derive(Clone, Copy, Debug, PartialEq, Eq)]
23415    #[repr(transparent)]
23416    pub struct DeliveryType {
23417        pub(crate) value: ::fidl_next::wire::Uint32,
23418    }
23419
23420    impl ::fidl_next::Constrained for DeliveryType {
23421        type Constraint = ();
23422
23423        fn validate(
23424            _: ::fidl_next::Slot<'_, Self>,
23425            _: Self::Constraint,
23426        ) -> Result<(), ::fidl_next::ValidationError> {
23427            Ok(())
23428        }
23429    }
23430
23431    unsafe impl ::fidl_next::Wire for DeliveryType {
23432        type Narrowed<'de> = Self;
23433
23434        #[inline]
23435        fn zero_padding(_: &mut ::core::mem::MaybeUninit<Self>) {
23436            // Wire enums have no padding
23437        }
23438    }
23439
23440    impl DeliveryType {
23441        pub const IMMEDIATE: DeliveryType = DeliveryType { value: ::fidl_next::wire::Uint32(0) };
23442
23443        pub const ON_READABLE: DeliveryType = DeliveryType { value: ::fidl_next::wire::Uint32(1) };
23444    }
23445
23446    unsafe impl<___D> ::fidl_next::Decode<___D> for DeliveryType
23447    where
23448        ___D: ?Sized,
23449    {
23450        fn decode(
23451            slot: ::fidl_next::Slot<'_, Self>,
23452            _: &mut ___D,
23453            _: (),
23454        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
23455            Ok(())
23456        }
23457    }
23458
23459    impl ::core::convert::From<crate::natural::DeliveryType> for DeliveryType {
23460        fn from(natural: crate::natural::DeliveryType) -> Self {
23461            match natural {
23462                crate::natural::DeliveryType::Immediate => DeliveryType::IMMEDIATE,
23463
23464                crate::natural::DeliveryType::OnReadable => DeliveryType::ON_READABLE,
23465
23466                crate::natural::DeliveryType::UnknownOrdinal_(value) => {
23467                    DeliveryType { value: ::fidl_next::wire::Uint32::from(value) }
23468                }
23469            }
23470        }
23471    }
23472
23473    impl ::fidl_next::IntoNatural for DeliveryType {
23474        type Natural = crate::natural::DeliveryType;
23475    }
23476
23477    /// The wire type corresponding to [`Protocol`].
23478    #[repr(C)]
23479    pub struct Protocol<'de> {
23480        pub(crate) table: ::fidl_next::wire::Table<'de>,
23481    }
23482
23483    impl<'de> Drop for Protocol<'de> {
23484        fn drop(&mut self) {
23485            let _ = self.table.get(1).map(|envelope| unsafe {
23486                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
23487            });
23488
23489            let _ = self.table.get(2).map(|envelope| unsafe {
23490                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
23491            });
23492
23493            let _ = self
23494                .table
23495                .get(3)
23496                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::DeliveryType>() });
23497        }
23498    }
23499
23500    impl ::fidl_next::Constrained for Protocol<'_> {
23501        type Constraint = ();
23502
23503        fn validate(
23504            _: ::fidl_next::Slot<'_, Self>,
23505            _: Self::Constraint,
23506        ) -> Result<(), ::fidl_next::ValidationError> {
23507            Ok(())
23508        }
23509    }
23510
23511    unsafe impl ::fidl_next::Wire for Protocol<'static> {
23512        type Narrowed<'de> = Protocol<'de>;
23513
23514        #[inline]
23515        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
23516            ::fidl_next::munge!(let Self { table } = out);
23517            ::fidl_next::wire::Table::zero_padding(table);
23518        }
23519    }
23520
23521    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for Protocol<'de>
23522    where
23523        ___D: ::fidl_next::Decoder<'de> + ?Sized,
23524    {
23525        fn decode(
23526            slot: ::fidl_next::Slot<'_, Self>,
23527            decoder: &mut ___D,
23528            _: (),
23529        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
23530            ::fidl_next::munge!(let Self { table } = slot);
23531
23532            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
23533                match ordinal {
23534                    0 => unsafe { ::core::hint::unreachable_unchecked() },
23535
23536                    1 => {
23537                        ::fidl_next::wire::Envelope::decode_as::<
23538                            ___D,
23539                            ::fidl_next::wire::String<'de>,
23540                        >(slot.as_mut(), decoder, 100)?;
23541
23542                        let value = unsafe {
23543                            slot.deref_unchecked()
23544                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
23545                        };
23546
23547                        if value.len() > 100 {
23548                            return Err(::fidl_next::DecodeError::VectorTooLong {
23549                                size: value.len() as u64,
23550                                limit: 100,
23551                            });
23552                        }
23553
23554                        Ok(())
23555                    }
23556
23557                    2 => {
23558                        ::fidl_next::wire::Envelope::decode_as::<
23559                            ___D,
23560                            ::fidl_next::wire::String<'de>,
23561                        >(slot.as_mut(), decoder, 1024)?;
23562
23563                        let value = unsafe {
23564                            slot.deref_unchecked()
23565                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
23566                        };
23567
23568                        if value.len() > 1024 {
23569                            return Err(::fidl_next::DecodeError::VectorTooLong {
23570                                size: value.len() as u64,
23571                                limit: 1024,
23572                            });
23573                        }
23574
23575                        Ok(())
23576                    }
23577
23578                    3 => {
23579                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::DeliveryType>(
23580                            slot.as_mut(),
23581                            decoder,
23582                            (),
23583                        )?;
23584
23585                        Ok(())
23586                    }
23587
23588                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
23589                }
23590            })
23591        }
23592    }
23593
23594    impl<'de> Protocol<'de> {
23595        pub fn name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
23596            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
23597        }
23598
23599        pub fn take_name(&mut self) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
23600            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
23601        }
23602
23603        pub fn source_path(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
23604            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
23605        }
23606
23607        pub fn take_source_path(
23608            &mut self,
23609        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
23610            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
23611        }
23612
23613        pub fn delivery(&self) -> ::core::option::Option<&crate::wire::DeliveryType> {
23614            unsafe { Some(self.table.get(3)?.deref_unchecked()) }
23615        }
23616
23617        pub fn take_delivery(&mut self) -> ::core::option::Option<crate::wire::DeliveryType> {
23618            unsafe { Some(self.table.get_mut(3)?.take_unchecked()) }
23619        }
23620    }
23621
23622    impl<'de> ::core::fmt::Debug for Protocol<'de> {
23623        fn fmt(
23624            &self,
23625            f: &mut ::core::fmt::Formatter<'_>,
23626        ) -> ::core::result::Result<(), ::core::fmt::Error> {
23627            f.debug_struct("Protocol")
23628                .field("name", &self.name())
23629                .field("source_path", &self.source_path())
23630                .field("delivery", &self.delivery())
23631                .finish()
23632        }
23633    }
23634
23635    impl<'de> ::fidl_next::IntoNatural for Protocol<'de> {
23636        type Natural = crate::natural::Protocol;
23637    }
23638
23639    /// The wire type corresponding to [`EnvironmentRef`].
23640    pub type EnvironmentRef = ::fidl_next::wire::Unit;
23641
23642    /// The wire type corresponding to [`Ref`].
23643    #[repr(transparent)]
23644    pub struct Ref<'de> {
23645        pub(crate) raw: ::fidl_next::wire::Union,
23646        pub(crate) _phantom: ::core::marker::PhantomData<&'de mut [::fidl_next::Chunk]>,
23647    }
23648
23649    impl<'de> Drop for Ref<'de> {
23650        fn drop(&mut self) {
23651            match self.raw.ordinal() {
23652                1 => {
23653                    let _ = unsafe { self.raw.get().read_unchecked::<crate::wire::ParentRef>() };
23654                }
23655
23656                2 => {
23657                    let _ = unsafe { self.raw.get().read_unchecked::<crate::wire::SelfRef>() };
23658                }
23659
23660                3 => {
23661                    let _ =
23662                        unsafe { self.raw.get().read_unchecked::<crate::wire::ChildRef<'de>>() };
23663                }
23664
23665                4 => {
23666                    let _ = unsafe {
23667                        self.raw.get().read_unchecked::<crate::wire::CollectionRef<'de>>()
23668                    };
23669                }
23670
23671                5 => {
23672                    let _ = unsafe { self.raw.get().read_unchecked::<crate::wire::FrameworkRef>() };
23673                }
23674
23675                6 => {
23676                    let _ = unsafe {
23677                        self.raw.get().read_unchecked::<crate::wire::CapabilityRef<'de>>()
23678                    };
23679                }
23680
23681                7 => {
23682                    let _ = unsafe { self.raw.get().read_unchecked::<crate::wire::DebugRef>() };
23683                }
23684
23685                8 => {
23686                    let _ = unsafe { self.raw.get().read_unchecked::<crate::wire::VoidRef>() };
23687                }
23688
23689                9 => {
23690                    let _ =
23691                        unsafe { self.raw.get().read_unchecked::<crate::wire::EnvironmentRef>() };
23692                }
23693
23694                _ => (),
23695            }
23696        }
23697    }
23698
23699    impl ::fidl_next::Constrained for Ref<'_> {
23700        type Constraint = ();
23701
23702        fn validate(
23703            _: ::fidl_next::Slot<'_, Self>,
23704            _: Self::Constraint,
23705        ) -> Result<(), ::fidl_next::ValidationError> {
23706            Ok(())
23707        }
23708    }
23709
23710    unsafe impl ::fidl_next::Wire for Ref<'static> {
23711        type Narrowed<'de> = Ref<'de>;
23712
23713        #[inline]
23714        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
23715            ::fidl_next::munge!(let Self { raw, _phantom: _ } = out);
23716            ::fidl_next::wire::Union::zero_padding(raw);
23717        }
23718    }
23719
23720    pub mod ref_ {
23721        pub enum Ref<'de> {
23722            Parent(&'de crate::wire::ParentRef),
23723
23724            Self_(&'de crate::wire::SelfRef),
23725
23726            Child(&'de crate::wire::ChildRef<'de>),
23727
23728            Collection(&'de crate::wire::CollectionRef<'de>),
23729
23730            Framework(&'de crate::wire::FrameworkRef),
23731
23732            Capability(&'de crate::wire::CapabilityRef<'de>),
23733
23734            Debug(&'de crate::wire::DebugRef),
23735
23736            VoidType(&'de crate::wire::VoidRef),
23737
23738            Environment(&'de crate::wire::EnvironmentRef),
23739
23740            UnknownOrdinal_(u64),
23741        }
23742
23743        pub enum Value<'de> {
23744            Parent(crate::wire::ParentRef),
23745
23746            Self_(crate::wire::SelfRef),
23747
23748            Child(crate::wire::ChildRef<'de>),
23749
23750            Collection(crate::wire::CollectionRef<'de>),
23751
23752            Framework(crate::wire::FrameworkRef),
23753
23754            Capability(crate::wire::CapabilityRef<'de>),
23755
23756            Debug(crate::wire::DebugRef),
23757
23758            VoidType(crate::wire::VoidRef),
23759
23760            Environment(crate::wire::EnvironmentRef),
23761
23762            UnknownOrdinal_(u64),
23763        }
23764    }
23765
23766    impl<'de> Ref<'de> {
23767        pub fn as_ref(&self) -> crate::wire::ref_::Ref<'_> {
23768            match self.raw.ordinal() {
23769                1 => crate::wire::ref_::Ref::Parent(unsafe {
23770                    self.raw.get().deref_unchecked::<crate::wire::ParentRef>()
23771                }),
23772
23773                2 => crate::wire::ref_::Ref::Self_(unsafe {
23774                    self.raw.get().deref_unchecked::<crate::wire::SelfRef>()
23775                }),
23776
23777                3 => crate::wire::ref_::Ref::Child(unsafe {
23778                    self.raw.get().deref_unchecked::<crate::wire::ChildRef<'_>>()
23779                }),
23780
23781                4 => crate::wire::ref_::Ref::Collection(unsafe {
23782                    self.raw.get().deref_unchecked::<crate::wire::CollectionRef<'_>>()
23783                }),
23784
23785                5 => crate::wire::ref_::Ref::Framework(unsafe {
23786                    self.raw.get().deref_unchecked::<crate::wire::FrameworkRef>()
23787                }),
23788
23789                6 => crate::wire::ref_::Ref::Capability(unsafe {
23790                    self.raw.get().deref_unchecked::<crate::wire::CapabilityRef<'_>>()
23791                }),
23792
23793                7 => crate::wire::ref_::Ref::Debug(unsafe {
23794                    self.raw.get().deref_unchecked::<crate::wire::DebugRef>()
23795                }),
23796
23797                8 => crate::wire::ref_::Ref::VoidType(unsafe {
23798                    self.raw.get().deref_unchecked::<crate::wire::VoidRef>()
23799                }),
23800
23801                9 => crate::wire::ref_::Ref::Environment(unsafe {
23802                    self.raw.get().deref_unchecked::<crate::wire::EnvironmentRef>()
23803                }),
23804
23805                unknown => crate::wire::ref_::Ref::UnknownOrdinal_(unknown),
23806            }
23807        }
23808
23809        pub fn into_inner(self) -> crate::wire::ref_::Value<'de> {
23810            let this = ::core::mem::ManuallyDrop::new(self);
23811
23812            match this.raw.ordinal() {
23813                1 => crate::wire::ref_::Value::Parent(unsafe {
23814                    this.raw.get().read_unchecked::<crate::wire::ParentRef>()
23815                }),
23816
23817                2 => crate::wire::ref_::Value::Self_(unsafe {
23818                    this.raw.get().read_unchecked::<crate::wire::SelfRef>()
23819                }),
23820
23821                3 => crate::wire::ref_::Value::Child(unsafe {
23822                    this.raw.get().read_unchecked::<crate::wire::ChildRef<'de>>()
23823                }),
23824
23825                4 => crate::wire::ref_::Value::Collection(unsafe {
23826                    this.raw.get().read_unchecked::<crate::wire::CollectionRef<'de>>()
23827                }),
23828
23829                5 => crate::wire::ref_::Value::Framework(unsafe {
23830                    this.raw.get().read_unchecked::<crate::wire::FrameworkRef>()
23831                }),
23832
23833                6 => crate::wire::ref_::Value::Capability(unsafe {
23834                    this.raw.get().read_unchecked::<crate::wire::CapabilityRef<'de>>()
23835                }),
23836
23837                7 => crate::wire::ref_::Value::Debug(unsafe {
23838                    this.raw.get().read_unchecked::<crate::wire::DebugRef>()
23839                }),
23840
23841                8 => crate::wire::ref_::Value::VoidType(unsafe {
23842                    this.raw.get().read_unchecked::<crate::wire::VoidRef>()
23843                }),
23844
23845                9 => crate::wire::ref_::Value::Environment(unsafe {
23846                    this.raw.get().read_unchecked::<crate::wire::EnvironmentRef>()
23847                }),
23848
23849                unknown => crate::wire::ref_::Value::UnknownOrdinal_(unknown),
23850            }
23851        }
23852    }
23853
23854    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for Ref<'de>
23855    where
23856        ___D: ::fidl_next::decoder::InternalHandleDecoder + ?Sized,
23857        ___D: ::fidl_next::Decoder<'de>,
23858    {
23859        fn decode(
23860            mut slot: ::fidl_next::Slot<'_, Self>,
23861            decoder: &mut ___D,
23862            _: (),
23863        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
23864            ::fidl_next::munge!(let Self { mut raw, _phantom: _ } = slot.as_mut());
23865            match ::fidl_next::wire::Union::encoded_ordinal(raw.as_mut()) {
23866                1 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::ParentRef>(
23867                    raw,
23868                    decoder,
23869                    (),
23870                )?,
23871
23872                2 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::SelfRef>(
23873                    raw,
23874                    decoder,
23875                    (),
23876                )?,
23877
23878                3 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::ChildRef<'de>>(
23879                    raw,
23880                    decoder,
23881                    (),
23882                )?,
23883
23884                4 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::CollectionRef<'de>>(
23885                    raw,
23886                    decoder,
23887                    (),
23888                )?,
23889
23890                5 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::FrameworkRef>(
23891                    raw,
23892                    decoder,
23893                    (),
23894                )?,
23895
23896                6 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::CapabilityRef<'de>>(
23897                    raw,
23898                    decoder,
23899                    (),
23900                )?,
23901
23902                7 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::DebugRef>(
23903                    raw,
23904                    decoder,
23905                    (),
23906                )?,
23907
23908                8 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::VoidRef>(
23909                    raw,
23910                    decoder,
23911                    (),
23912                )?,
23913
23914                9 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::EnvironmentRef>(
23915                    raw,
23916                    decoder,
23917                    (),
23918                )?,
23919
23920                _ => ::fidl_next::wire::Union::decode_unknown(raw, decoder)?,
23921            }
23922
23923            Ok(())
23924        }
23925    }
23926
23927    impl<'de> ::core::fmt::Debug for Ref<'de> {
23928        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
23929            match self.raw.ordinal() {
23930                1 => unsafe { self.raw.get().deref_unchecked::<crate::wire::ParentRef>().fmt(f) },
23931                2 => unsafe { self.raw.get().deref_unchecked::<crate::wire::SelfRef>().fmt(f) },
23932                3 => unsafe {
23933                    self.raw.get().deref_unchecked::<crate::wire::ChildRef<'_>>().fmt(f)
23934                },
23935                4 => unsafe {
23936                    self.raw.get().deref_unchecked::<crate::wire::CollectionRef<'_>>().fmt(f)
23937                },
23938                5 => unsafe {
23939                    self.raw.get().deref_unchecked::<crate::wire::FrameworkRef>().fmt(f)
23940                },
23941                6 => unsafe {
23942                    self.raw.get().deref_unchecked::<crate::wire::CapabilityRef<'_>>().fmt(f)
23943                },
23944                7 => unsafe { self.raw.get().deref_unchecked::<crate::wire::DebugRef>().fmt(f) },
23945                8 => unsafe { self.raw.get().deref_unchecked::<crate::wire::VoidRef>().fmt(f) },
23946                9 => unsafe {
23947                    self.raw.get().deref_unchecked::<crate::wire::EnvironmentRef>().fmt(f)
23948                },
23949                _ => unsafe { ::core::hint::unreachable_unchecked() },
23950            }
23951        }
23952    }
23953
23954    impl<'de> ::fidl_next::IntoNatural for Ref<'de> {
23955        type Natural = crate::natural::Ref;
23956    }
23957
23958    /// The wire type corresponding to [`Storage`].
23959    #[repr(C)]
23960    pub struct Storage<'de> {
23961        pub(crate) table: ::fidl_next::wire::Table<'de>,
23962    }
23963
23964    impl<'de> Drop for Storage<'de> {
23965        fn drop(&mut self) {
23966            let _ = self.table.get(1).map(|envelope| unsafe {
23967                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
23968            });
23969
23970            let _ = self
23971                .table
23972                .get(2)
23973                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
23974
23975            let _ = self.table.get(3).map(|envelope| unsafe {
23976                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
23977            });
23978
23979            let _ = self.table.get(4).map(|envelope| unsafe {
23980                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
23981            });
23982
23983            let _ = self
23984                .table
23985                .get(5)
23986                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::StorageId>() });
23987        }
23988    }
23989
23990    impl ::fidl_next::Constrained for Storage<'_> {
23991        type Constraint = ();
23992
23993        fn validate(
23994            _: ::fidl_next::Slot<'_, Self>,
23995            _: Self::Constraint,
23996        ) -> Result<(), ::fidl_next::ValidationError> {
23997            Ok(())
23998        }
23999    }
24000
24001    unsafe impl ::fidl_next::Wire for Storage<'static> {
24002        type Narrowed<'de> = Storage<'de>;
24003
24004        #[inline]
24005        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
24006            ::fidl_next::munge!(let Self { table } = out);
24007            ::fidl_next::wire::Table::zero_padding(table);
24008        }
24009    }
24010
24011    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for Storage<'de>
24012    where
24013        ___D: ::fidl_next::Decoder<'de> + ?Sized,
24014    {
24015        fn decode(
24016            slot: ::fidl_next::Slot<'_, Self>,
24017            decoder: &mut ___D,
24018            _: (),
24019        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
24020            ::fidl_next::munge!(let Self { table } = slot);
24021
24022            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
24023                match ordinal {
24024                    0 => unsafe { ::core::hint::unreachable_unchecked() },
24025
24026                    1 => {
24027                        ::fidl_next::wire::Envelope::decode_as::<
24028                            ___D,
24029                            ::fidl_next::wire::String<'de>,
24030                        >(slot.as_mut(), decoder, 100)?;
24031
24032                        let value = unsafe {
24033                            slot.deref_unchecked()
24034                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
24035                        };
24036
24037                        if value.len() > 100 {
24038                            return Err(::fidl_next::DecodeError::VectorTooLong {
24039                                size: value.len() as u64,
24040                                limit: 100,
24041                            });
24042                        }
24043
24044                        Ok(())
24045                    }
24046
24047                    2 => {
24048                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
24049                            slot.as_mut(),
24050                            decoder,
24051                            (),
24052                        )?;
24053
24054                        Ok(())
24055                    }
24056
24057                    3 => {
24058                        ::fidl_next::wire::Envelope::decode_as::<
24059                            ___D,
24060                            ::fidl_next::wire::String<'de>,
24061                        >(slot.as_mut(), decoder, 100)?;
24062
24063                        let value = unsafe {
24064                            slot.deref_unchecked()
24065                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
24066                        };
24067
24068                        if value.len() > 100 {
24069                            return Err(::fidl_next::DecodeError::VectorTooLong {
24070                                size: value.len() as u64,
24071                                limit: 100,
24072                            });
24073                        }
24074
24075                        Ok(())
24076                    }
24077
24078                    4 => {
24079                        ::fidl_next::wire::Envelope::decode_as::<
24080                            ___D,
24081                            ::fidl_next::wire::String<'de>,
24082                        >(slot.as_mut(), decoder, 1024)?;
24083
24084                        let value = unsafe {
24085                            slot.deref_unchecked()
24086                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
24087                        };
24088
24089                        if value.len() > 1024 {
24090                            return Err(::fidl_next::DecodeError::VectorTooLong {
24091                                size: value.len() as u64,
24092                                limit: 1024,
24093                            });
24094                        }
24095
24096                        Ok(())
24097                    }
24098
24099                    5 => {
24100                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::StorageId>(
24101                            slot.as_mut(),
24102                            decoder,
24103                            (),
24104                        )?;
24105
24106                        Ok(())
24107                    }
24108
24109                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
24110                }
24111            })
24112        }
24113    }
24114
24115    impl<'de> Storage<'de> {
24116        pub fn name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
24117            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
24118        }
24119
24120        pub fn take_name(&mut self) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
24121            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
24122        }
24123
24124        pub fn source(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
24125            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
24126        }
24127
24128        pub fn take_source(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
24129            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
24130        }
24131
24132        pub fn backing_dir(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
24133            unsafe { Some(self.table.get(3)?.deref_unchecked()) }
24134        }
24135
24136        pub fn take_backing_dir(
24137            &mut self,
24138        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
24139            unsafe { Some(self.table.get_mut(3)?.take_unchecked()) }
24140        }
24141
24142        pub fn subdir(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
24143            unsafe { Some(self.table.get(4)?.deref_unchecked()) }
24144        }
24145
24146        pub fn take_subdir(&mut self) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
24147            unsafe { Some(self.table.get_mut(4)?.take_unchecked()) }
24148        }
24149
24150        pub fn storage_id(&self) -> ::core::option::Option<&crate::wire::StorageId> {
24151            unsafe { Some(self.table.get(5)?.deref_unchecked()) }
24152        }
24153
24154        pub fn take_storage_id(&mut self) -> ::core::option::Option<crate::wire::StorageId> {
24155            unsafe { Some(self.table.get_mut(5)?.take_unchecked()) }
24156        }
24157    }
24158
24159    impl<'de> ::core::fmt::Debug for Storage<'de> {
24160        fn fmt(
24161            &self,
24162            f: &mut ::core::fmt::Formatter<'_>,
24163        ) -> ::core::result::Result<(), ::core::fmt::Error> {
24164            f.debug_struct("Storage")
24165                .field("name", &self.name())
24166                .field("source", &self.source())
24167                .field("backing_dir", &self.backing_dir())
24168                .field("subdir", &self.subdir())
24169                .field("storage_id", &self.storage_id())
24170                .finish()
24171        }
24172    }
24173
24174    impl<'de> ::fidl_next::IntoNatural for Storage<'de> {
24175        type Natural = crate::natural::Storage;
24176    }
24177
24178    /// The wire type corresponding to [`Dictionary`].
24179    #[repr(C)]
24180    pub struct Dictionary<'de> {
24181        pub(crate) table: ::fidl_next::wire::Table<'de>,
24182    }
24183
24184    impl<'de> Drop for Dictionary<'de> {
24185        fn drop(&mut self) {
24186            let _ = self.table.get(1).map(|envelope| unsafe {
24187                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
24188            });
24189
24190            let _ = self
24191                .table
24192                .get(2)
24193                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
24194
24195            let _ = self.table.get(3).map(|envelope| unsafe {
24196                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
24197            });
24198
24199            let _ = self.table.get(4).map(|envelope| unsafe {
24200                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
24201            });
24202        }
24203    }
24204
24205    impl ::fidl_next::Constrained for Dictionary<'_> {
24206        type Constraint = ();
24207
24208        fn validate(
24209            _: ::fidl_next::Slot<'_, Self>,
24210            _: Self::Constraint,
24211        ) -> Result<(), ::fidl_next::ValidationError> {
24212            Ok(())
24213        }
24214    }
24215
24216    unsafe impl ::fidl_next::Wire for Dictionary<'static> {
24217        type Narrowed<'de> = Dictionary<'de>;
24218
24219        #[inline]
24220        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
24221            ::fidl_next::munge!(let Self { table } = out);
24222            ::fidl_next::wire::Table::zero_padding(table);
24223        }
24224    }
24225
24226    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for Dictionary<'de>
24227    where
24228        ___D: ::fidl_next::Decoder<'de> + ?Sized,
24229    {
24230        fn decode(
24231            slot: ::fidl_next::Slot<'_, Self>,
24232            decoder: &mut ___D,
24233            _: (),
24234        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
24235            ::fidl_next::munge!(let Self { table } = slot);
24236
24237            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
24238                match ordinal {
24239                    0 => unsafe { ::core::hint::unreachable_unchecked() },
24240
24241                    1 => {
24242                        ::fidl_next::wire::Envelope::decode_as::<
24243                            ___D,
24244                            ::fidl_next::wire::String<'de>,
24245                        >(slot.as_mut(), decoder, 100)?;
24246
24247                        let value = unsafe {
24248                            slot.deref_unchecked()
24249                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
24250                        };
24251
24252                        if value.len() > 100 {
24253                            return Err(::fidl_next::DecodeError::VectorTooLong {
24254                                size: value.len() as u64,
24255                                limit: 100,
24256                            });
24257                        }
24258
24259                        Ok(())
24260                    }
24261
24262                    2 => {
24263                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
24264                            slot.as_mut(),
24265                            decoder,
24266                            (),
24267                        )?;
24268
24269                        Ok(())
24270                    }
24271
24272                    3 => {
24273                        ::fidl_next::wire::Envelope::decode_as::<
24274                            ___D,
24275                            ::fidl_next::wire::String<'de>,
24276                        >(slot.as_mut(), decoder, 1024)?;
24277
24278                        let value = unsafe {
24279                            slot.deref_unchecked()
24280                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
24281                        };
24282
24283                        if value.len() > 1024 {
24284                            return Err(::fidl_next::DecodeError::VectorTooLong {
24285                                size: value.len() as u64,
24286                                limit: 1024,
24287                            });
24288                        }
24289
24290                        Ok(())
24291                    }
24292
24293                    4 => {
24294                        ::fidl_next::wire::Envelope::decode_as::<
24295                            ___D,
24296                            ::fidl_next::wire::String<'de>,
24297                        >(slot.as_mut(), decoder, 1024)?;
24298
24299                        let value = unsafe {
24300                            slot.deref_unchecked()
24301                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
24302                        };
24303
24304                        if value.len() > 1024 {
24305                            return Err(::fidl_next::DecodeError::VectorTooLong {
24306                                size: value.len() as u64,
24307                                limit: 1024,
24308                            });
24309                        }
24310
24311                        Ok(())
24312                    }
24313
24314                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
24315                }
24316            })
24317        }
24318    }
24319
24320    impl<'de> Dictionary<'de> {
24321        pub fn name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
24322            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
24323        }
24324
24325        pub fn take_name(&mut self) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
24326            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
24327        }
24328
24329        pub fn source(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
24330            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
24331        }
24332
24333        pub fn take_source(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
24334            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
24335        }
24336
24337        pub fn source_dictionary(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
24338            unsafe { Some(self.table.get(3)?.deref_unchecked()) }
24339        }
24340
24341        pub fn take_source_dictionary(
24342            &mut self,
24343        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
24344            unsafe { Some(self.table.get_mut(3)?.take_unchecked()) }
24345        }
24346
24347        pub fn source_path(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
24348            unsafe { Some(self.table.get(4)?.deref_unchecked()) }
24349        }
24350
24351        pub fn take_source_path(
24352            &mut self,
24353        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
24354            unsafe { Some(self.table.get_mut(4)?.take_unchecked()) }
24355        }
24356    }
24357
24358    impl<'de> ::core::fmt::Debug for Dictionary<'de> {
24359        fn fmt(
24360            &self,
24361            f: &mut ::core::fmt::Formatter<'_>,
24362        ) -> ::core::result::Result<(), ::core::fmt::Error> {
24363            f.debug_struct("Dictionary")
24364                .field("name", &self.name())
24365                .field("source", &self.source())
24366                .field("source_dictionary", &self.source_dictionary())
24367                .field("source_path", &self.source_path())
24368                .finish()
24369        }
24370    }
24371
24372    impl<'de> ::fidl_next::IntoNatural for Dictionary<'de> {
24373        type Natural = crate::natural::Dictionary;
24374    }
24375
24376    /// The wire type corresponding to [`Capability`].
24377    #[repr(transparent)]
24378    pub struct Capability<'de> {
24379        pub(crate) raw: ::fidl_next::wire::Union,
24380        pub(crate) _phantom: ::core::marker::PhantomData<&'de mut [::fidl_next::Chunk]>,
24381    }
24382
24383    impl<'de> Drop for Capability<'de> {
24384        fn drop(&mut self) {
24385            match self.raw.ordinal() {
24386                1 => {
24387                    let _ = unsafe { self.raw.get().read_unchecked::<crate::wire::Service<'de>>() };
24388                }
24389
24390                2 => {
24391                    let _ =
24392                        unsafe { self.raw.get().read_unchecked::<crate::wire::Protocol<'de>>() };
24393                }
24394
24395                3 => {
24396                    let _ =
24397                        unsafe { self.raw.get().read_unchecked::<crate::wire::Directory<'de>>() };
24398                }
24399
24400                4 => {
24401                    let _ = unsafe { self.raw.get().read_unchecked::<crate::wire::Storage<'de>>() };
24402                }
24403
24404                5 => {
24405                    let _ = unsafe { self.raw.get().read_unchecked::<crate::wire::Runner<'de>>() };
24406                }
24407
24408                6 => {
24409                    let _ =
24410                        unsafe { self.raw.get().read_unchecked::<crate::wire::Resolver<'de>>() };
24411                }
24412
24413                8 => {
24414                    let _ =
24415                        unsafe { self.raw.get().read_unchecked::<crate::wire::EventStream<'de>>() };
24416                }
24417
24418                9 => {
24419                    let _ =
24420                        unsafe { self.raw.get().read_unchecked::<crate::wire::Dictionary<'de>>() };
24421                }
24422
24423                10 => {
24424                    let _ = unsafe {
24425                        self.raw.get().read_unchecked::<crate::wire::Configuration<'de>>()
24426                    };
24427                }
24428
24429                _ => (),
24430            }
24431        }
24432    }
24433
24434    impl ::fidl_next::Constrained for Capability<'_> {
24435        type Constraint = ();
24436
24437        fn validate(
24438            _: ::fidl_next::Slot<'_, Self>,
24439            _: Self::Constraint,
24440        ) -> Result<(), ::fidl_next::ValidationError> {
24441            Ok(())
24442        }
24443    }
24444
24445    unsafe impl ::fidl_next::Wire for Capability<'static> {
24446        type Narrowed<'de> = Capability<'de>;
24447
24448        #[inline]
24449        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
24450            ::fidl_next::munge!(let Self { raw, _phantom: _ } = out);
24451            ::fidl_next::wire::Union::zero_padding(raw);
24452        }
24453    }
24454
24455    pub mod capability {
24456        pub enum Ref<'de> {
24457            Service(&'de crate::wire::Service<'de>),
24458
24459            Protocol(&'de crate::wire::Protocol<'de>),
24460
24461            Directory(&'de crate::wire::Directory<'de>),
24462
24463            Storage(&'de crate::wire::Storage<'de>),
24464
24465            Runner(&'de crate::wire::Runner<'de>),
24466
24467            Resolver(&'de crate::wire::Resolver<'de>),
24468
24469            EventStream(&'de crate::wire::EventStream<'de>),
24470
24471            Dictionary(&'de crate::wire::Dictionary<'de>),
24472
24473            Config(&'de crate::wire::Configuration<'de>),
24474
24475            UnknownOrdinal_(u64),
24476        }
24477
24478        pub enum Value<'de> {
24479            Service(crate::wire::Service<'de>),
24480
24481            Protocol(crate::wire::Protocol<'de>),
24482
24483            Directory(crate::wire::Directory<'de>),
24484
24485            Storage(crate::wire::Storage<'de>),
24486
24487            Runner(crate::wire::Runner<'de>),
24488
24489            Resolver(crate::wire::Resolver<'de>),
24490
24491            EventStream(crate::wire::EventStream<'de>),
24492
24493            Dictionary(crate::wire::Dictionary<'de>),
24494
24495            Config(crate::wire::Configuration<'de>),
24496
24497            UnknownOrdinal_(u64),
24498        }
24499    }
24500
24501    impl<'de> Capability<'de> {
24502        pub fn as_ref(&self) -> crate::wire::capability::Ref<'_> {
24503            match self.raw.ordinal() {
24504                1 => crate::wire::capability::Ref::Service(unsafe {
24505                    self.raw.get().deref_unchecked::<crate::wire::Service<'_>>()
24506                }),
24507
24508                2 => crate::wire::capability::Ref::Protocol(unsafe {
24509                    self.raw.get().deref_unchecked::<crate::wire::Protocol<'_>>()
24510                }),
24511
24512                3 => crate::wire::capability::Ref::Directory(unsafe {
24513                    self.raw.get().deref_unchecked::<crate::wire::Directory<'_>>()
24514                }),
24515
24516                4 => crate::wire::capability::Ref::Storage(unsafe {
24517                    self.raw.get().deref_unchecked::<crate::wire::Storage<'_>>()
24518                }),
24519
24520                5 => crate::wire::capability::Ref::Runner(unsafe {
24521                    self.raw.get().deref_unchecked::<crate::wire::Runner<'_>>()
24522                }),
24523
24524                6 => crate::wire::capability::Ref::Resolver(unsafe {
24525                    self.raw.get().deref_unchecked::<crate::wire::Resolver<'_>>()
24526                }),
24527
24528                8 => crate::wire::capability::Ref::EventStream(unsafe {
24529                    self.raw.get().deref_unchecked::<crate::wire::EventStream<'_>>()
24530                }),
24531
24532                9 => crate::wire::capability::Ref::Dictionary(unsafe {
24533                    self.raw.get().deref_unchecked::<crate::wire::Dictionary<'_>>()
24534                }),
24535
24536                10 => crate::wire::capability::Ref::Config(unsafe {
24537                    self.raw.get().deref_unchecked::<crate::wire::Configuration<'_>>()
24538                }),
24539
24540                unknown => crate::wire::capability::Ref::UnknownOrdinal_(unknown),
24541            }
24542        }
24543
24544        pub fn into_inner(self) -> crate::wire::capability::Value<'de> {
24545            let this = ::core::mem::ManuallyDrop::new(self);
24546
24547            match this.raw.ordinal() {
24548                1 => crate::wire::capability::Value::Service(unsafe {
24549                    this.raw.get().read_unchecked::<crate::wire::Service<'de>>()
24550                }),
24551
24552                2 => crate::wire::capability::Value::Protocol(unsafe {
24553                    this.raw.get().read_unchecked::<crate::wire::Protocol<'de>>()
24554                }),
24555
24556                3 => crate::wire::capability::Value::Directory(unsafe {
24557                    this.raw.get().read_unchecked::<crate::wire::Directory<'de>>()
24558                }),
24559
24560                4 => crate::wire::capability::Value::Storage(unsafe {
24561                    this.raw.get().read_unchecked::<crate::wire::Storage<'de>>()
24562                }),
24563
24564                5 => crate::wire::capability::Value::Runner(unsafe {
24565                    this.raw.get().read_unchecked::<crate::wire::Runner<'de>>()
24566                }),
24567
24568                6 => crate::wire::capability::Value::Resolver(unsafe {
24569                    this.raw.get().read_unchecked::<crate::wire::Resolver<'de>>()
24570                }),
24571
24572                8 => crate::wire::capability::Value::EventStream(unsafe {
24573                    this.raw.get().read_unchecked::<crate::wire::EventStream<'de>>()
24574                }),
24575
24576                9 => crate::wire::capability::Value::Dictionary(unsafe {
24577                    this.raw.get().read_unchecked::<crate::wire::Dictionary<'de>>()
24578                }),
24579
24580                10 => crate::wire::capability::Value::Config(unsafe {
24581                    this.raw.get().read_unchecked::<crate::wire::Configuration<'de>>()
24582                }),
24583
24584                unknown => crate::wire::capability::Value::UnknownOrdinal_(unknown),
24585            }
24586        }
24587    }
24588
24589    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for Capability<'de>
24590    where
24591        ___D: ::fidl_next::decoder::InternalHandleDecoder + ?Sized,
24592        ___D: ::fidl_next::Decoder<'de>,
24593    {
24594        fn decode(
24595            mut slot: ::fidl_next::Slot<'_, Self>,
24596            decoder: &mut ___D,
24597            _: (),
24598        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
24599            ::fidl_next::munge!(let Self { mut raw, _phantom: _ } = slot.as_mut());
24600            match ::fidl_next::wire::Union::encoded_ordinal(raw.as_mut()) {
24601                1 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::Service<'de>>(
24602                    raw,
24603                    decoder,
24604                    (),
24605                )?,
24606
24607                2 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::Protocol<'de>>(
24608                    raw,
24609                    decoder,
24610                    (),
24611                )?,
24612
24613                3 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::Directory<'de>>(
24614                    raw,
24615                    decoder,
24616                    (),
24617                )?,
24618
24619                4 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::Storage<'de>>(
24620                    raw,
24621                    decoder,
24622                    (),
24623                )?,
24624
24625                5 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::Runner<'de>>(
24626                    raw,
24627                    decoder,
24628                    (),
24629                )?,
24630
24631                6 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::Resolver<'de>>(
24632                    raw,
24633                    decoder,
24634                    (),
24635                )?,
24636
24637                8 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::EventStream<'de>>(
24638                    raw,
24639                    decoder,
24640                    (),
24641                )?,
24642
24643                9 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::Dictionary<'de>>(
24644                    raw,
24645                    decoder,
24646                    (),
24647                )?,
24648
24649                10 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::Configuration<'de>>(
24650                    raw,
24651                    decoder,
24652                    (),
24653                )?,
24654
24655                _ => ::fidl_next::wire::Union::decode_unknown(raw, decoder)?,
24656            }
24657
24658            Ok(())
24659        }
24660    }
24661
24662    impl<'de> ::core::fmt::Debug for Capability<'de> {
24663        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
24664            match self.raw.ordinal() {
24665                1 => unsafe { self.raw.get().deref_unchecked::<crate::wire::Service<'_>>().fmt(f) },
24666                2 => unsafe {
24667                    self.raw.get().deref_unchecked::<crate::wire::Protocol<'_>>().fmt(f)
24668                },
24669                3 => unsafe {
24670                    self.raw.get().deref_unchecked::<crate::wire::Directory<'_>>().fmt(f)
24671                },
24672                4 => unsafe { self.raw.get().deref_unchecked::<crate::wire::Storage<'_>>().fmt(f) },
24673                5 => unsafe { self.raw.get().deref_unchecked::<crate::wire::Runner<'_>>().fmt(f) },
24674                6 => unsafe {
24675                    self.raw.get().deref_unchecked::<crate::wire::Resolver<'_>>().fmt(f)
24676                },
24677                8 => unsafe {
24678                    self.raw.get().deref_unchecked::<crate::wire::EventStream<'_>>().fmt(f)
24679                },
24680                9 => unsafe {
24681                    self.raw.get().deref_unchecked::<crate::wire::Dictionary<'_>>().fmt(f)
24682                },
24683                10 => unsafe {
24684                    self.raw.get().deref_unchecked::<crate::wire::Configuration<'_>>().fmt(f)
24685                },
24686                _ => unsafe { ::core::hint::unreachable_unchecked() },
24687            }
24688        }
24689    }
24690
24691    impl<'de> ::fidl_next::IntoNatural for Capability<'de> {
24692        type Natural = crate::natural::Capability;
24693    }
24694
24695    /// The wire type corresponding to [`StartupMode`].
24696    #[derive(Clone, Copy, Debug, PartialEq, Eq)]
24697    #[repr(transparent)]
24698    pub struct StartupMode {
24699        pub(crate) value: ::fidl_next::wire::Uint32,
24700    }
24701
24702    impl ::fidl_next::Constrained for StartupMode {
24703        type Constraint = ();
24704
24705        fn validate(
24706            _: ::fidl_next::Slot<'_, Self>,
24707            _: Self::Constraint,
24708        ) -> Result<(), ::fidl_next::ValidationError> {
24709            Ok(())
24710        }
24711    }
24712
24713    unsafe impl ::fidl_next::Wire for StartupMode {
24714        type Narrowed<'de> = Self;
24715
24716        #[inline]
24717        fn zero_padding(_: &mut ::core::mem::MaybeUninit<Self>) {
24718            // Wire enums have no padding
24719        }
24720    }
24721
24722    impl StartupMode {
24723        pub const LAZY: StartupMode = StartupMode { value: ::fidl_next::wire::Uint32(0) };
24724
24725        pub const EAGER: StartupMode = StartupMode { value: ::fidl_next::wire::Uint32(1) };
24726    }
24727
24728    unsafe impl<___D> ::fidl_next::Decode<___D> for StartupMode
24729    where
24730        ___D: ?Sized,
24731    {
24732        fn decode(
24733            slot: ::fidl_next::Slot<'_, Self>,
24734            _: &mut ___D,
24735            _: (),
24736        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
24737            ::fidl_next::munge!(let Self { value } = slot);
24738
24739            match u32::from(*value) {
24740                0 | 1 => (),
24741                unknown => {
24742                    return Err(::fidl_next::DecodeError::InvalidEnumOrdinal(unknown as i128));
24743                }
24744            }
24745
24746            Ok(())
24747        }
24748    }
24749
24750    impl ::core::convert::From<crate::natural::StartupMode> for StartupMode {
24751        fn from(natural: crate::natural::StartupMode) -> Self {
24752            match natural {
24753                crate::natural::StartupMode::Lazy => StartupMode::LAZY,
24754
24755                crate::natural::StartupMode::Eager => StartupMode::EAGER,
24756            }
24757        }
24758    }
24759
24760    impl ::fidl_next::IntoNatural for StartupMode {
24761        type Natural = crate::natural::StartupMode;
24762    }
24763
24764    /// The wire type corresponding to [`OnTerminate`].
24765    #[derive(Clone, Copy, Debug, PartialEq, Eq)]
24766    #[repr(transparent)]
24767    pub struct OnTerminate {
24768        pub(crate) value: ::fidl_next::wire::Uint32,
24769    }
24770
24771    impl ::fidl_next::Constrained for OnTerminate {
24772        type Constraint = ();
24773
24774        fn validate(
24775            _: ::fidl_next::Slot<'_, Self>,
24776            _: Self::Constraint,
24777        ) -> Result<(), ::fidl_next::ValidationError> {
24778            Ok(())
24779        }
24780    }
24781
24782    unsafe impl ::fidl_next::Wire for OnTerminate {
24783        type Narrowed<'de> = Self;
24784
24785        #[inline]
24786        fn zero_padding(_: &mut ::core::mem::MaybeUninit<Self>) {
24787            // Wire enums have no padding
24788        }
24789    }
24790
24791    impl OnTerminate {
24792        pub const NONE: OnTerminate = OnTerminate { value: ::fidl_next::wire::Uint32(0) };
24793
24794        pub const REBOOT: OnTerminate = OnTerminate { value: ::fidl_next::wire::Uint32(1) };
24795    }
24796
24797    unsafe impl<___D> ::fidl_next::Decode<___D> for OnTerminate
24798    where
24799        ___D: ?Sized,
24800    {
24801        fn decode(
24802            slot: ::fidl_next::Slot<'_, Self>,
24803            _: &mut ___D,
24804            _: (),
24805        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
24806            ::fidl_next::munge!(let Self { value } = slot);
24807
24808            match u32::from(*value) {
24809                0 | 1 => (),
24810                unknown => {
24811                    return Err(::fidl_next::DecodeError::InvalidEnumOrdinal(unknown as i128));
24812                }
24813            }
24814
24815            Ok(())
24816        }
24817    }
24818
24819    impl ::core::convert::From<crate::natural::OnTerminate> for OnTerminate {
24820        fn from(natural: crate::natural::OnTerminate) -> Self {
24821            match natural {
24822                crate::natural::OnTerminate::None => OnTerminate::NONE,
24823
24824                crate::natural::OnTerminate::Reboot => OnTerminate::REBOOT,
24825            }
24826        }
24827    }
24828
24829    impl ::fidl_next::IntoNatural for OnTerminate {
24830        type Natural = crate::natural::OnTerminate;
24831    }
24832
24833    /// The wire type corresponding to [`ConfigKey`](crate::natural::ConfigKey).
24834    pub type ConfigKey<'de> = ::fidl_next::wire::String<'de>;
24835
24836    /// The wire type corresponding to [`ConfigOverride`].
24837    #[repr(C)]
24838    pub struct ConfigOverride<'de> {
24839        pub(crate) table: ::fidl_next::wire::Table<'de>,
24840    }
24841
24842    impl<'de> Drop for ConfigOverride<'de> {
24843        fn drop(&mut self) {
24844            let _ = self.table.get(1).map(|envelope| unsafe {
24845                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
24846            });
24847
24848            let _ = self.table.get(2).map(|envelope| unsafe {
24849                envelope.read_unchecked::<crate::wire::ConfigValue<'de>>()
24850            });
24851        }
24852    }
24853
24854    impl ::fidl_next::Constrained for ConfigOverride<'_> {
24855        type Constraint = ();
24856
24857        fn validate(
24858            _: ::fidl_next::Slot<'_, Self>,
24859            _: Self::Constraint,
24860        ) -> Result<(), ::fidl_next::ValidationError> {
24861            Ok(())
24862        }
24863    }
24864
24865    unsafe impl ::fidl_next::Wire for ConfigOverride<'static> {
24866        type Narrowed<'de> = ConfigOverride<'de>;
24867
24868        #[inline]
24869        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
24870            ::fidl_next::munge!(let Self { table } = out);
24871            ::fidl_next::wire::Table::zero_padding(table);
24872        }
24873    }
24874
24875    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for ConfigOverride<'de>
24876    where
24877        ___D: ::fidl_next::Decoder<'de> + ?Sized,
24878    {
24879        fn decode(
24880            slot: ::fidl_next::Slot<'_, Self>,
24881            decoder: &mut ___D,
24882            _: (),
24883        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
24884            ::fidl_next::munge!(let Self { table } = slot);
24885
24886            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
24887                match ordinal {
24888                    0 => unsafe { ::core::hint::unreachable_unchecked() },
24889
24890                    1 => {
24891                        ::fidl_next::wire::Envelope::decode_as::<
24892                            ___D,
24893                            ::fidl_next::wire::String<'de>,
24894                        >(slot.as_mut(), decoder, 64)?;
24895
24896                        let value = unsafe {
24897                            slot.deref_unchecked()
24898                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
24899                        };
24900
24901                        if value.len() > 64 {
24902                            return Err(::fidl_next::DecodeError::VectorTooLong {
24903                                size: value.len() as u64,
24904                                limit: 64,
24905                            });
24906                        }
24907
24908                        Ok(())
24909                    }
24910
24911                    2 => {
24912                        ::fidl_next::wire::Envelope::decode_as::<
24913                            ___D,
24914                            crate::wire::ConfigValue<'de>,
24915                        >(slot.as_mut(), decoder, ())?;
24916
24917                        Ok(())
24918                    }
24919
24920                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
24921                }
24922            })
24923        }
24924    }
24925
24926    impl<'de> ConfigOverride<'de> {
24927        pub fn key(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
24928            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
24929        }
24930
24931        pub fn take_key(&mut self) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
24932            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
24933        }
24934
24935        pub fn value(&self) -> ::core::option::Option<&crate::wire::ConfigValue<'de>> {
24936            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
24937        }
24938
24939        pub fn take_value(&mut self) -> ::core::option::Option<crate::wire::ConfigValue<'de>> {
24940            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
24941        }
24942    }
24943
24944    impl<'de> ::core::fmt::Debug for ConfigOverride<'de> {
24945        fn fmt(
24946            &self,
24947            f: &mut ::core::fmt::Formatter<'_>,
24948        ) -> ::core::result::Result<(), ::core::fmt::Error> {
24949            f.debug_struct("ConfigOverride")
24950                .field("key", &self.key())
24951                .field("value", &self.value())
24952                .finish()
24953        }
24954    }
24955
24956    impl<'de> ::fidl_next::IntoNatural for ConfigOverride<'de> {
24957        type Natural = crate::natural::ConfigOverride;
24958    }
24959
24960    /// The wire type corresponding to [`Child`].
24961    #[repr(C)]
24962    pub struct Child<'de> {
24963        pub(crate) table: ::fidl_next::wire::Table<'de>,
24964    }
24965
24966    impl<'de> Drop for Child<'de> {
24967        fn drop(&mut self) {
24968            let _ = self.table.get(1).map(|envelope| unsafe {
24969                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
24970            });
24971
24972            let _ = self.table.get(2).map(|envelope| unsafe {
24973                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
24974            });
24975
24976            let _ = self
24977                .table
24978                .get(3)
24979                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::StartupMode>() });
24980
24981            let _ = self.table.get(4).map(|envelope| unsafe {
24982                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
24983            });
24984
24985            let _ = self
24986                .table
24987                .get(5)
24988                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::OnTerminate>() });
24989
24990            let _ = self.table.get(6)
24991                .map(|envelope| unsafe {
24992                    envelope.read_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::ConfigOverride<'de>>>()
24993                });
24994        }
24995    }
24996
24997    impl ::fidl_next::Constrained for Child<'_> {
24998        type Constraint = ();
24999
25000        fn validate(
25001            _: ::fidl_next::Slot<'_, Self>,
25002            _: Self::Constraint,
25003        ) -> Result<(), ::fidl_next::ValidationError> {
25004            Ok(())
25005        }
25006    }
25007
25008    unsafe impl ::fidl_next::Wire for Child<'static> {
25009        type Narrowed<'de> = Child<'de>;
25010
25011        #[inline]
25012        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
25013            ::fidl_next::munge!(let Self { table } = out);
25014            ::fidl_next::wire::Table::zero_padding(table);
25015        }
25016    }
25017
25018    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for Child<'de>
25019    where
25020        ___D: ::fidl_next::Decoder<'de> + ?Sized,
25021    {
25022        fn decode(
25023            slot: ::fidl_next::Slot<'_, Self>,
25024            decoder: &mut ___D,
25025            _: (),
25026        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
25027            ::fidl_next::munge!(let Self { table } = slot);
25028
25029            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
25030                match ordinal {
25031                    0 => unsafe { ::core::hint::unreachable_unchecked() },
25032
25033                    1 => {
25034                        ::fidl_next::wire::Envelope::decode_as::<
25035                            ___D,
25036                            ::fidl_next::wire::String<'de>,
25037                        >(slot.as_mut(), decoder, 1024)?;
25038
25039                        let value = unsafe {
25040                            slot.deref_unchecked()
25041                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
25042                        };
25043
25044                        if value.len() > 1024 {
25045                            return Err(::fidl_next::DecodeError::VectorTooLong {
25046                                size: value.len() as u64,
25047                                limit: 1024,
25048                            });
25049                        }
25050
25051                        Ok(())
25052                    }
25053
25054                    2 => {
25055                        ::fidl_next::wire::Envelope::decode_as::<
25056                            ___D,
25057                            ::fidl_next::wire::String<'de>,
25058                        >(slot.as_mut(), decoder, 4096)?;
25059
25060                        let value = unsafe {
25061                            slot.deref_unchecked()
25062                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
25063                        };
25064
25065                        if value.len() > 4096 {
25066                            return Err(::fidl_next::DecodeError::VectorTooLong {
25067                                size: value.len() as u64,
25068                                limit: 4096,
25069                            });
25070                        }
25071
25072                        Ok(())
25073                    }
25074
25075                    3 => {
25076                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::StartupMode>(
25077                            slot.as_mut(),
25078                            decoder,
25079                            (),
25080                        )?;
25081
25082                        Ok(())
25083                    }
25084
25085                    4 => {
25086                        ::fidl_next::wire::Envelope::decode_as::<
25087                            ___D,
25088                            ::fidl_next::wire::String<'de>,
25089                        >(slot.as_mut(), decoder, 100)?;
25090
25091                        let value = unsafe {
25092                            slot.deref_unchecked()
25093                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
25094                        };
25095
25096                        if value.len() > 100 {
25097                            return Err(::fidl_next::DecodeError::VectorTooLong {
25098                                size: value.len() as u64,
25099                                limit: 100,
25100                            });
25101                        }
25102
25103                        Ok(())
25104                    }
25105
25106                    5 => {
25107                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::OnTerminate>(
25108                            slot.as_mut(),
25109                            decoder,
25110                            (),
25111                        )?;
25112
25113                        Ok(())
25114                    }
25115
25116                    6 => {
25117                        ::fidl_next::wire::Envelope::decode_as::<
25118                            ___D,
25119                            ::fidl_next::wire::Vector<'de, crate::wire::ConfigOverride<'de>>,
25120                        >(slot.as_mut(), decoder, (4294967295, ()))?;
25121
25122                        Ok(())
25123                    }
25124
25125                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
25126                }
25127            })
25128        }
25129    }
25130
25131    impl<'de> Child<'de> {
25132        pub fn name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
25133            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
25134        }
25135
25136        pub fn take_name(&mut self) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
25137            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
25138        }
25139
25140        pub fn url(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
25141            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
25142        }
25143
25144        pub fn take_url(&mut self) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
25145            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
25146        }
25147
25148        pub fn startup(&self) -> ::core::option::Option<&crate::wire::StartupMode> {
25149            unsafe { Some(self.table.get(3)?.deref_unchecked()) }
25150        }
25151
25152        pub fn take_startup(&mut self) -> ::core::option::Option<crate::wire::StartupMode> {
25153            unsafe { Some(self.table.get_mut(3)?.take_unchecked()) }
25154        }
25155
25156        pub fn environment(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
25157            unsafe { Some(self.table.get(4)?.deref_unchecked()) }
25158        }
25159
25160        pub fn take_environment(
25161            &mut self,
25162        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
25163            unsafe { Some(self.table.get_mut(4)?.take_unchecked()) }
25164        }
25165
25166        pub fn on_terminate(&self) -> ::core::option::Option<&crate::wire::OnTerminate> {
25167            unsafe { Some(self.table.get(5)?.deref_unchecked()) }
25168        }
25169
25170        pub fn take_on_terminate(&mut self) -> ::core::option::Option<crate::wire::OnTerminate> {
25171            unsafe { Some(self.table.get_mut(5)?.take_unchecked()) }
25172        }
25173
25174        pub fn config_overrides(
25175            &self,
25176        ) -> ::core::option::Option<&::fidl_next::wire::Vector<'de, crate::wire::ConfigOverride<'de>>>
25177        {
25178            unsafe { Some(self.table.get(6)?.deref_unchecked()) }
25179        }
25180
25181        pub fn take_config_overrides(
25182            &mut self,
25183        ) -> ::core::option::Option<::fidl_next::wire::Vector<'de, crate::wire::ConfigOverride<'de>>>
25184        {
25185            unsafe { Some(self.table.get_mut(6)?.take_unchecked()) }
25186        }
25187    }
25188
25189    impl<'de> ::core::fmt::Debug for Child<'de> {
25190        fn fmt(
25191            &self,
25192            f: &mut ::core::fmt::Formatter<'_>,
25193        ) -> ::core::result::Result<(), ::core::fmt::Error> {
25194            f.debug_struct("Child")
25195                .field("name", &self.name())
25196                .field("url", &self.url())
25197                .field("startup", &self.startup())
25198                .field("environment", &self.environment())
25199                .field("on_terminate", &self.on_terminate())
25200                .field("config_overrides", &self.config_overrides())
25201                .finish()
25202        }
25203    }
25204
25205    impl<'de> ::fidl_next::IntoNatural for Child<'de> {
25206        type Natural = crate::natural::Child;
25207    }
25208
25209    /// The wire type corresponding to [`Durability`].
25210    #[derive(Clone, Copy, Debug, PartialEq, Eq)]
25211    #[repr(transparent)]
25212    pub struct Durability {
25213        pub(crate) value: ::fidl_next::wire::Uint32,
25214    }
25215
25216    impl ::fidl_next::Constrained for Durability {
25217        type Constraint = ();
25218
25219        fn validate(
25220            _: ::fidl_next::Slot<'_, Self>,
25221            _: Self::Constraint,
25222        ) -> Result<(), ::fidl_next::ValidationError> {
25223            Ok(())
25224        }
25225    }
25226
25227    unsafe impl ::fidl_next::Wire for Durability {
25228        type Narrowed<'de> = Self;
25229
25230        #[inline]
25231        fn zero_padding(_: &mut ::core::mem::MaybeUninit<Self>) {
25232            // Wire enums have no padding
25233        }
25234    }
25235
25236    impl Durability {
25237        pub const TRANSIENT: Durability = Durability { value: ::fidl_next::wire::Uint32(2) };
25238
25239        pub const SINGLE_RUN: Durability = Durability { value: ::fidl_next::wire::Uint32(3) };
25240    }
25241
25242    unsafe impl<___D> ::fidl_next::Decode<___D> for Durability
25243    where
25244        ___D: ?Sized,
25245    {
25246        fn decode(
25247            slot: ::fidl_next::Slot<'_, Self>,
25248            _: &mut ___D,
25249            _: (),
25250        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
25251            ::fidl_next::munge!(let Self { value } = slot);
25252
25253            match u32::from(*value) {
25254                2 | 3 => (),
25255                unknown => {
25256                    return Err(::fidl_next::DecodeError::InvalidEnumOrdinal(unknown as i128));
25257                }
25258            }
25259
25260            Ok(())
25261        }
25262    }
25263
25264    impl ::core::convert::From<crate::natural::Durability> for Durability {
25265        fn from(natural: crate::natural::Durability) -> Self {
25266            match natural {
25267                crate::natural::Durability::Transient => Durability::TRANSIENT,
25268
25269                crate::natural::Durability::SingleRun => Durability::SINGLE_RUN,
25270            }
25271        }
25272    }
25273
25274    impl ::fidl_next::IntoNatural for Durability {
25275        type Natural = crate::natural::Durability;
25276    }
25277
25278    /// The wire type corresponding to [`Collection`].
25279    #[repr(C)]
25280    pub struct Collection<'de> {
25281        pub(crate) table: ::fidl_next::wire::Table<'de>,
25282    }
25283
25284    impl<'de> Drop for Collection<'de> {
25285        fn drop(&mut self) {
25286            let _ = self.table.get(1).map(|envelope| unsafe {
25287                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
25288            });
25289
25290            let _ = self
25291                .table
25292                .get(2)
25293                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Durability>() });
25294
25295            let _ = self.table.get(3).map(|envelope| unsafe {
25296                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
25297            });
25298
25299            let _ = self
25300                .table
25301                .get(4)
25302                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::AllowedOffers>() });
25303
25304            let _ = self.table.get(5).map(|envelope| unsafe { envelope.read_unchecked::<bool>() });
25305
25306            let _ = self.table.get(6).map(|envelope| unsafe { envelope.read_unchecked::<bool>() });
25307        }
25308    }
25309
25310    impl ::fidl_next::Constrained for Collection<'_> {
25311        type Constraint = ();
25312
25313        fn validate(
25314            _: ::fidl_next::Slot<'_, Self>,
25315            _: Self::Constraint,
25316        ) -> Result<(), ::fidl_next::ValidationError> {
25317            Ok(())
25318        }
25319    }
25320
25321    unsafe impl ::fidl_next::Wire for Collection<'static> {
25322        type Narrowed<'de> = Collection<'de>;
25323
25324        #[inline]
25325        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
25326            ::fidl_next::munge!(let Self { table } = out);
25327            ::fidl_next::wire::Table::zero_padding(table);
25328        }
25329    }
25330
25331    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for Collection<'de>
25332    where
25333        ___D: ::fidl_next::Decoder<'de> + ?Sized,
25334    {
25335        fn decode(
25336            slot: ::fidl_next::Slot<'_, Self>,
25337            decoder: &mut ___D,
25338            _: (),
25339        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
25340            ::fidl_next::munge!(let Self { table } = slot);
25341
25342            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
25343                match ordinal {
25344                    0 => unsafe { ::core::hint::unreachable_unchecked() },
25345
25346                    1 => {
25347                        ::fidl_next::wire::Envelope::decode_as::<
25348                            ___D,
25349                            ::fidl_next::wire::String<'de>,
25350                        >(slot.as_mut(), decoder, 100)?;
25351
25352                        let value = unsafe {
25353                            slot.deref_unchecked()
25354                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
25355                        };
25356
25357                        if value.len() > 100 {
25358                            return Err(::fidl_next::DecodeError::VectorTooLong {
25359                                size: value.len() as u64,
25360                                limit: 100,
25361                            });
25362                        }
25363
25364                        Ok(())
25365                    }
25366
25367                    2 => {
25368                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Durability>(
25369                            slot.as_mut(),
25370                            decoder,
25371                            (),
25372                        )?;
25373
25374                        Ok(())
25375                    }
25376
25377                    3 => {
25378                        ::fidl_next::wire::Envelope::decode_as::<
25379                            ___D,
25380                            ::fidl_next::wire::String<'de>,
25381                        >(slot.as_mut(), decoder, 100)?;
25382
25383                        let value = unsafe {
25384                            slot.deref_unchecked()
25385                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
25386                        };
25387
25388                        if value.len() > 100 {
25389                            return Err(::fidl_next::DecodeError::VectorTooLong {
25390                                size: value.len() as u64,
25391                                limit: 100,
25392                            });
25393                        }
25394
25395                        Ok(())
25396                    }
25397
25398                    4 => {
25399                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::AllowedOffers>(
25400                            slot.as_mut(),
25401                            decoder,
25402                            (),
25403                        )?;
25404
25405                        Ok(())
25406                    }
25407
25408                    5 => {
25409                        ::fidl_next::wire::Envelope::decode_as::<___D, bool>(
25410                            slot.as_mut(),
25411                            decoder,
25412                            (),
25413                        )?;
25414
25415                        Ok(())
25416                    }
25417
25418                    6 => {
25419                        ::fidl_next::wire::Envelope::decode_as::<___D, bool>(
25420                            slot.as_mut(),
25421                            decoder,
25422                            (),
25423                        )?;
25424
25425                        Ok(())
25426                    }
25427
25428                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
25429                }
25430            })
25431        }
25432    }
25433
25434    impl<'de> Collection<'de> {
25435        pub fn name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
25436            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
25437        }
25438
25439        pub fn take_name(&mut self) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
25440            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
25441        }
25442
25443        pub fn durability(&self) -> ::core::option::Option<&crate::wire::Durability> {
25444            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
25445        }
25446
25447        pub fn take_durability(&mut self) -> ::core::option::Option<crate::wire::Durability> {
25448            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
25449        }
25450
25451        pub fn environment(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
25452            unsafe { Some(self.table.get(3)?.deref_unchecked()) }
25453        }
25454
25455        pub fn take_environment(
25456            &mut self,
25457        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
25458            unsafe { Some(self.table.get_mut(3)?.take_unchecked()) }
25459        }
25460
25461        pub fn allowed_offers(&self) -> ::core::option::Option<&crate::wire::AllowedOffers> {
25462            unsafe { Some(self.table.get(4)?.deref_unchecked()) }
25463        }
25464
25465        pub fn take_allowed_offers(
25466            &mut self,
25467        ) -> ::core::option::Option<crate::wire::AllowedOffers> {
25468            unsafe { Some(self.table.get_mut(4)?.take_unchecked()) }
25469        }
25470
25471        pub fn allow_long_names(&self) -> ::core::option::Option<&bool> {
25472            unsafe { Some(self.table.get(5)?.deref_unchecked()) }
25473        }
25474
25475        pub fn take_allow_long_names(&mut self) -> ::core::option::Option<bool> {
25476            unsafe { Some(self.table.get_mut(5)?.take_unchecked()) }
25477        }
25478
25479        pub fn persistent_storage(&self) -> ::core::option::Option<&bool> {
25480            unsafe { Some(self.table.get(6)?.deref_unchecked()) }
25481        }
25482
25483        pub fn take_persistent_storage(&mut self) -> ::core::option::Option<bool> {
25484            unsafe { Some(self.table.get_mut(6)?.take_unchecked()) }
25485        }
25486    }
25487
25488    impl<'de> ::core::fmt::Debug for Collection<'de> {
25489        fn fmt(
25490            &self,
25491            f: &mut ::core::fmt::Formatter<'_>,
25492        ) -> ::core::result::Result<(), ::core::fmt::Error> {
25493            f.debug_struct("Collection")
25494                .field("name", &self.name())
25495                .field("durability", &self.durability())
25496                .field("environment", &self.environment())
25497                .field("allowed_offers", &self.allowed_offers())
25498                .field("allow_long_names", &self.allow_long_names())
25499                .field("persistent_storage", &self.persistent_storage())
25500                .finish()
25501        }
25502    }
25503
25504    impl<'de> ::fidl_next::IntoNatural for Collection<'de> {
25505        type Natural = crate::natural::Collection;
25506    }
25507
25508    /// The wire type corresponding to [`DependencyType`].
25509    #[derive(Clone, Copy, Debug, PartialEq, Eq)]
25510    #[repr(transparent)]
25511    pub struct DependencyType {
25512        pub(crate) value: ::fidl_next::wire::Uint32,
25513    }
25514
25515    impl ::fidl_next::Constrained for DependencyType {
25516        type Constraint = ();
25517
25518        fn validate(
25519            _: ::fidl_next::Slot<'_, Self>,
25520            _: Self::Constraint,
25521        ) -> Result<(), ::fidl_next::ValidationError> {
25522            Ok(())
25523        }
25524    }
25525
25526    unsafe impl ::fidl_next::Wire for DependencyType {
25527        type Narrowed<'de> = Self;
25528
25529        #[inline]
25530        fn zero_padding(_: &mut ::core::mem::MaybeUninit<Self>) {
25531            // Wire enums have no padding
25532        }
25533    }
25534
25535    impl DependencyType {
25536        pub const STRONG: DependencyType = DependencyType { value: ::fidl_next::wire::Uint32(1) };
25537
25538        pub const WEAK: DependencyType = DependencyType { value: ::fidl_next::wire::Uint32(2) };
25539    }
25540
25541    unsafe impl<___D> ::fidl_next::Decode<___D> for DependencyType
25542    where
25543        ___D: ?Sized,
25544    {
25545        fn decode(
25546            slot: ::fidl_next::Slot<'_, Self>,
25547            _: &mut ___D,
25548            _: (),
25549        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
25550            ::fidl_next::munge!(let Self { value } = slot);
25551
25552            match u32::from(*value) {
25553                1 | 2 => (),
25554                unknown => {
25555                    return Err(::fidl_next::DecodeError::InvalidEnumOrdinal(unknown as i128));
25556                }
25557            }
25558
25559            Ok(())
25560        }
25561    }
25562
25563    impl ::core::convert::From<crate::natural::DependencyType> for DependencyType {
25564        fn from(natural: crate::natural::DependencyType) -> Self {
25565            match natural {
25566                crate::natural::DependencyType::Strong => DependencyType::STRONG,
25567
25568                crate::natural::DependencyType::Weak => DependencyType::WEAK,
25569            }
25570        }
25571    }
25572
25573    impl ::fidl_next::IntoNatural for DependencyType {
25574        type Natural = crate::natural::DependencyType;
25575    }
25576
25577    /// The wire type corresponding to [`NameMapping`].
25578    #[derive(Debug)]
25579    #[repr(C)]
25580    pub struct NameMapping<'de> {
25581        pub source_name: ::fidl_next::wire::String<'de>,
25582
25583        pub target_name: ::fidl_next::wire::String<'de>,
25584    }
25585
25586    static_assertions::const_assert_eq!(std::mem::size_of::<NameMapping<'_>>(), 32);
25587    static_assertions::const_assert_eq!(std::mem::align_of::<NameMapping<'_>>(), 8);
25588
25589    static_assertions::const_assert_eq!(std::mem::offset_of!(NameMapping<'_>, source_name), 0);
25590
25591    static_assertions::const_assert_eq!(std::mem::offset_of!(NameMapping<'_>, target_name), 16);
25592
25593    impl ::fidl_next::Constrained for NameMapping<'_> {
25594        type Constraint = ();
25595
25596        fn validate(
25597            _: ::fidl_next::Slot<'_, Self>,
25598            _: Self::Constraint,
25599        ) -> Result<(), ::fidl_next::ValidationError> {
25600            Ok(())
25601        }
25602    }
25603
25604    unsafe impl ::fidl_next::Wire for NameMapping<'static> {
25605        type Narrowed<'de> = NameMapping<'de>;
25606
25607        #[inline]
25608        fn zero_padding(out_: &mut ::core::mem::MaybeUninit<Self>) {
25609            ::fidl_next::munge! {
25610                let Self {
25611                    source_name,
25612                    target_name,
25613
25614                } = &mut *out_;
25615            }
25616
25617            ::fidl_next::Wire::zero_padding(source_name);
25618
25619            ::fidl_next::Wire::zero_padding(target_name);
25620        }
25621    }
25622
25623    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for NameMapping<'de>
25624    where
25625        ___D: ::fidl_next::decoder::InternalHandleDecoder + ?Sized,
25626        ___D: ::fidl_next::Decoder<'de>,
25627    {
25628        fn decode(
25629            slot_: ::fidl_next::Slot<'_, Self>,
25630            decoder_: &mut ___D,
25631            _: (),
25632        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
25633            ::fidl_next::munge! {
25634                let Self {
25635                    mut source_name,
25636                    mut target_name,
25637
25638                } = slot_;
25639            }
25640
25641            let _field = source_name.as_mut();
25642            ::fidl_next::Constrained::validate(_field, 100)?;
25643            ::fidl_next::Decode::decode(source_name.as_mut(), decoder_, 100)?;
25644
25645            let source_name = unsafe { source_name.deref_unchecked() };
25646
25647            if source_name.len() > 100 {
25648                return Err(::fidl_next::DecodeError::VectorTooLong {
25649                    size: source_name.len() as u64,
25650                    limit: 100,
25651                });
25652            }
25653
25654            let _field = target_name.as_mut();
25655            ::fidl_next::Constrained::validate(_field, 100)?;
25656            ::fidl_next::Decode::decode(target_name.as_mut(), decoder_, 100)?;
25657
25658            let target_name = unsafe { target_name.deref_unchecked() };
25659
25660            if target_name.len() > 100 {
25661                return Err(::fidl_next::DecodeError::VectorTooLong {
25662                    size: target_name.len() as u64,
25663                    limit: 100,
25664                });
25665            }
25666
25667            Ok(())
25668        }
25669    }
25670
25671    impl<'de> ::fidl_next::IntoNatural for NameMapping<'de> {
25672        type Natural = crate::natural::NameMapping;
25673    }
25674
25675    /// The wire type corresponding to [`EnvironmentExtends`].
25676    #[derive(Clone, Copy, Debug, PartialEq, Eq)]
25677    #[repr(transparent)]
25678    pub struct EnvironmentExtends {
25679        pub(crate) value: ::fidl_next::wire::Uint32,
25680    }
25681
25682    impl ::fidl_next::Constrained for EnvironmentExtends {
25683        type Constraint = ();
25684
25685        fn validate(
25686            _: ::fidl_next::Slot<'_, Self>,
25687            _: Self::Constraint,
25688        ) -> Result<(), ::fidl_next::ValidationError> {
25689            Ok(())
25690        }
25691    }
25692
25693    unsafe impl ::fidl_next::Wire for EnvironmentExtends {
25694        type Narrowed<'de> = Self;
25695
25696        #[inline]
25697        fn zero_padding(_: &mut ::core::mem::MaybeUninit<Self>) {
25698            // Wire enums have no padding
25699        }
25700    }
25701
25702    impl EnvironmentExtends {
25703        pub const NONE: EnvironmentExtends =
25704            EnvironmentExtends { value: ::fidl_next::wire::Uint32(0) };
25705
25706        pub const REALM: EnvironmentExtends =
25707            EnvironmentExtends { value: ::fidl_next::wire::Uint32(1) };
25708    }
25709
25710    unsafe impl<___D> ::fidl_next::Decode<___D> for EnvironmentExtends
25711    where
25712        ___D: ?Sized,
25713    {
25714        fn decode(
25715            slot: ::fidl_next::Slot<'_, Self>,
25716            _: &mut ___D,
25717            _: (),
25718        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
25719            ::fidl_next::munge!(let Self { value } = slot);
25720
25721            match u32::from(*value) {
25722                0 | 1 => (),
25723                unknown => {
25724                    return Err(::fidl_next::DecodeError::InvalidEnumOrdinal(unknown as i128));
25725                }
25726            }
25727
25728            Ok(())
25729        }
25730    }
25731
25732    impl ::core::convert::From<crate::natural::EnvironmentExtends> for EnvironmentExtends {
25733        fn from(natural: crate::natural::EnvironmentExtends) -> Self {
25734            match natural {
25735                crate::natural::EnvironmentExtends::None => EnvironmentExtends::NONE,
25736
25737                crate::natural::EnvironmentExtends::Realm => EnvironmentExtends::REALM,
25738            }
25739        }
25740    }
25741
25742    impl ::fidl_next::IntoNatural for EnvironmentExtends {
25743        type Natural = crate::natural::EnvironmentExtends;
25744    }
25745
25746    /// The wire type corresponding to [`UrlScheme`](crate::natural::UrlScheme).
25747    pub type UrlScheme<'de> = ::fidl_next::wire::String<'de>;
25748
25749    /// The wire type corresponding to [`ConfigTypeLayout`].
25750    #[derive(Clone, Copy, Debug, PartialEq, Eq)]
25751    #[repr(transparent)]
25752    pub struct ConfigTypeLayout {
25753        pub(crate) value: ::fidl_next::wire::Uint32,
25754    }
25755
25756    impl ::fidl_next::Constrained for ConfigTypeLayout {
25757        type Constraint = ();
25758
25759        fn validate(
25760            _: ::fidl_next::Slot<'_, Self>,
25761            _: Self::Constraint,
25762        ) -> Result<(), ::fidl_next::ValidationError> {
25763            Ok(())
25764        }
25765    }
25766
25767    unsafe impl ::fidl_next::Wire for ConfigTypeLayout {
25768        type Narrowed<'de> = Self;
25769
25770        #[inline]
25771        fn zero_padding(_: &mut ::core::mem::MaybeUninit<Self>) {
25772            // Wire enums have no padding
25773        }
25774    }
25775
25776    impl ConfigTypeLayout {
25777        pub const BOOL: ConfigTypeLayout = ConfigTypeLayout { value: ::fidl_next::wire::Uint32(1) };
25778
25779        pub const UINT8: ConfigTypeLayout =
25780            ConfigTypeLayout { value: ::fidl_next::wire::Uint32(2) };
25781
25782        pub const UINT16: ConfigTypeLayout =
25783            ConfigTypeLayout { value: ::fidl_next::wire::Uint32(3) };
25784
25785        pub const UINT32: ConfigTypeLayout =
25786            ConfigTypeLayout { value: ::fidl_next::wire::Uint32(4) };
25787
25788        pub const UINT64: ConfigTypeLayout =
25789            ConfigTypeLayout { value: ::fidl_next::wire::Uint32(5) };
25790
25791        pub const INT8: ConfigTypeLayout = ConfigTypeLayout { value: ::fidl_next::wire::Uint32(6) };
25792
25793        pub const INT16: ConfigTypeLayout =
25794            ConfigTypeLayout { value: ::fidl_next::wire::Uint32(7) };
25795
25796        pub const INT32: ConfigTypeLayout =
25797            ConfigTypeLayout { value: ::fidl_next::wire::Uint32(8) };
25798
25799        pub const INT64: ConfigTypeLayout =
25800            ConfigTypeLayout { value: ::fidl_next::wire::Uint32(9) };
25801
25802        pub const STRING: ConfigTypeLayout =
25803            ConfigTypeLayout { value: ::fidl_next::wire::Uint32(10) };
25804
25805        pub const VECTOR: ConfigTypeLayout =
25806            ConfigTypeLayout { value: ::fidl_next::wire::Uint32(11) };
25807    }
25808
25809    unsafe impl<___D> ::fidl_next::Decode<___D> for ConfigTypeLayout
25810    where
25811        ___D: ?Sized,
25812    {
25813        fn decode(
25814            slot: ::fidl_next::Slot<'_, Self>,
25815            _: &mut ___D,
25816            _: (),
25817        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
25818            Ok(())
25819        }
25820    }
25821
25822    impl ::core::convert::From<crate::natural::ConfigTypeLayout> for ConfigTypeLayout {
25823        fn from(natural: crate::natural::ConfigTypeLayout) -> Self {
25824            match natural {
25825                crate::natural::ConfigTypeLayout::Bool => ConfigTypeLayout::BOOL,
25826
25827                crate::natural::ConfigTypeLayout::Uint8 => ConfigTypeLayout::UINT8,
25828
25829                crate::natural::ConfigTypeLayout::Uint16 => ConfigTypeLayout::UINT16,
25830
25831                crate::natural::ConfigTypeLayout::Uint32 => ConfigTypeLayout::UINT32,
25832
25833                crate::natural::ConfigTypeLayout::Uint64 => ConfigTypeLayout::UINT64,
25834
25835                crate::natural::ConfigTypeLayout::Int8 => ConfigTypeLayout::INT8,
25836
25837                crate::natural::ConfigTypeLayout::Int16 => ConfigTypeLayout::INT16,
25838
25839                crate::natural::ConfigTypeLayout::Int32 => ConfigTypeLayout::INT32,
25840
25841                crate::natural::ConfigTypeLayout::Int64 => ConfigTypeLayout::INT64,
25842
25843                crate::natural::ConfigTypeLayout::String => ConfigTypeLayout::STRING,
25844
25845                crate::natural::ConfigTypeLayout::Vector => ConfigTypeLayout::VECTOR,
25846
25847                crate::natural::ConfigTypeLayout::UnknownOrdinal_(value) => {
25848                    ConfigTypeLayout { value: ::fidl_next::wire::Uint32::from(value) }
25849                }
25850            }
25851        }
25852    }
25853
25854    impl ::fidl_next::IntoNatural for ConfigTypeLayout {
25855        type Natural = crate::natural::ConfigTypeLayout;
25856    }
25857
25858    /// The wire type corresponding to [`LayoutConstraint`].
25859    #[repr(transparent)]
25860    pub struct LayoutConstraint<'de> {
25861        pub(crate) raw: ::fidl_next::wire::Union,
25862        pub(crate) _phantom: ::core::marker::PhantomData<&'de mut [::fidl_next::Chunk]>,
25863    }
25864
25865    impl<'de> Drop for LayoutConstraint<'de> {
25866        fn drop(&mut self) {
25867            match self.raw.ordinal() {
25868                1 => {
25869                    let _ = unsafe { self.raw.get().read_unchecked::<::fidl_next::wire::Uint32>() };
25870                }
25871
25872                _ => (),
25873            }
25874        }
25875    }
25876
25877    impl ::fidl_next::Constrained for LayoutConstraint<'_> {
25878        type Constraint = ();
25879
25880        fn validate(
25881            _: ::fidl_next::Slot<'_, Self>,
25882            _: Self::Constraint,
25883        ) -> Result<(), ::fidl_next::ValidationError> {
25884            Ok(())
25885        }
25886    }
25887
25888    unsafe impl ::fidl_next::Wire for LayoutConstraint<'static> {
25889        type Narrowed<'de> = LayoutConstraint<'de>;
25890
25891        #[inline]
25892        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
25893            ::fidl_next::munge!(let Self { raw, _phantom: _ } = out);
25894            ::fidl_next::wire::Union::zero_padding(raw);
25895        }
25896    }
25897
25898    pub mod layout_constraint {
25899        pub enum Ref<'de> {
25900            MaxSize(&'de ::fidl_next::wire::Uint32),
25901
25902            UnknownOrdinal_(u64),
25903        }
25904
25905        pub enum Value {
25906            MaxSize(::fidl_next::wire::Uint32),
25907
25908            UnknownOrdinal_(u64),
25909        }
25910    }
25911
25912    impl<'de> LayoutConstraint<'de> {
25913        pub fn as_ref(&self) -> crate::wire::layout_constraint::Ref<'_> {
25914            match self.raw.ordinal() {
25915                1 => crate::wire::layout_constraint::Ref::MaxSize(unsafe {
25916                    self.raw.get().deref_unchecked::<::fidl_next::wire::Uint32>()
25917                }),
25918
25919                unknown => crate::wire::layout_constraint::Ref::UnknownOrdinal_(unknown),
25920            }
25921        }
25922
25923        pub fn into_inner(self) -> crate::wire::layout_constraint::Value {
25924            let this = ::core::mem::ManuallyDrop::new(self);
25925
25926            match this.raw.ordinal() {
25927                1 => crate::wire::layout_constraint::Value::MaxSize(unsafe {
25928                    this.raw.get().read_unchecked::<::fidl_next::wire::Uint32>()
25929                }),
25930
25931                unknown => crate::wire::layout_constraint::Value::UnknownOrdinal_(unknown),
25932            }
25933        }
25934    }
25935
25936    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for LayoutConstraint<'de>
25937    where
25938        ___D: ::fidl_next::decoder::InternalHandleDecoder + ?Sized,
25939        ___D: ::fidl_next::Decoder<'de>,
25940    {
25941        fn decode(
25942            mut slot: ::fidl_next::Slot<'_, Self>,
25943            decoder: &mut ___D,
25944            _: (),
25945        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
25946            ::fidl_next::munge!(let Self { mut raw, _phantom: _ } = slot.as_mut());
25947            match ::fidl_next::wire::Union::encoded_ordinal(raw.as_mut()) {
25948                1 => ::fidl_next::wire::Union::decode_as::<___D, ::fidl_next::wire::Uint32>(
25949                    raw,
25950                    decoder,
25951                    (),
25952                )?,
25953
25954                _ => ::fidl_next::wire::Union::decode_unknown(raw, decoder)?,
25955            }
25956
25957            Ok(())
25958        }
25959    }
25960
25961    impl<'de> ::core::fmt::Debug for LayoutConstraint<'de> {
25962        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
25963            match self.raw.ordinal() {
25964                1 => unsafe {
25965                    self.raw.get().deref_unchecked::<::fidl_next::wire::Uint32>().fmt(f)
25966                },
25967                _ => unsafe { ::core::hint::unreachable_unchecked() },
25968            }
25969        }
25970    }
25971
25972    impl<'de> ::fidl_next::IntoNatural for LayoutConstraint<'de> {
25973        type Natural = crate::natural::LayoutConstraint;
25974    }
25975
25976    /// The wire type corresponding to [`ConfigType`].
25977    #[derive(Debug)]
25978    #[repr(C)]
25979    pub struct ConfigType<'de> {
25980        pub layout: crate::wire::ConfigTypeLayout,
25981
25982        pub parameters: ::fidl_next::wire::OptionalVector<'de, crate::wire::LayoutParameter<'de>>,
25983
25984        pub constraints: ::fidl_next::wire::Vector<'de, crate::wire::LayoutConstraint<'de>>,
25985    }
25986
25987    static_assertions::const_assert_eq!(std::mem::size_of::<ConfigType<'_>>(), 40);
25988    static_assertions::const_assert_eq!(std::mem::align_of::<ConfigType<'_>>(), 8);
25989
25990    static_assertions::const_assert_eq!(std::mem::offset_of!(ConfigType<'_>, layout), 0);
25991
25992    static_assertions::const_assert_eq!(std::mem::offset_of!(ConfigType<'_>, parameters), 8);
25993
25994    static_assertions::const_assert_eq!(std::mem::offset_of!(ConfigType<'_>, constraints), 24);
25995
25996    impl ::fidl_next::Constrained for ConfigType<'_> {
25997        type Constraint = ();
25998
25999        fn validate(
26000            _: ::fidl_next::Slot<'_, Self>,
26001            _: Self::Constraint,
26002        ) -> Result<(), ::fidl_next::ValidationError> {
26003            Ok(())
26004        }
26005    }
26006
26007    unsafe impl ::fidl_next::Wire for ConfigType<'static> {
26008        type Narrowed<'de> = ConfigType<'de>;
26009
26010        #[inline]
26011        fn zero_padding(out_: &mut ::core::mem::MaybeUninit<Self>) {
26012            ::fidl_next::munge! {
26013                let Self {
26014                    layout,
26015                    parameters,
26016                    constraints,
26017
26018                } = &mut *out_;
26019            }
26020
26021            ::fidl_next::Wire::zero_padding(layout);
26022
26023            ::fidl_next::Wire::zero_padding(parameters);
26024
26025            ::fidl_next::Wire::zero_padding(constraints);
26026
26027            unsafe {
26028                out_.as_mut_ptr().cast::<u8>().add(4).write_bytes(0, 4);
26029            }
26030        }
26031    }
26032
26033    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for ConfigType<'de>
26034    where
26035        ___D: ::fidl_next::decoder::InternalHandleDecoder + ?Sized,
26036        ___D: ::fidl_next::Decoder<'de>,
26037    {
26038        fn decode(
26039            slot_: ::fidl_next::Slot<'_, Self>,
26040            decoder_: &mut ___D,
26041            _: (),
26042        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
26043            if slot_.as_bytes()[4..8] != [0u8; 4] {
26044                return Err(::fidl_next::DecodeError::InvalidPadding);
26045            }
26046
26047            ::fidl_next::munge! {
26048                let Self {
26049                    mut layout,
26050                    mut parameters,
26051                    mut constraints,
26052
26053                } = slot_;
26054            }
26055
26056            let _field = layout.as_mut();
26057
26058            ::fidl_next::Decode::decode(layout.as_mut(), decoder_, ())?;
26059
26060            let _field = parameters.as_mut();
26061            ::fidl_next::Constrained::validate(_field, (4294967295, ()))?;
26062            ::fidl_next::Decode::decode(parameters.as_mut(), decoder_, (4294967295, ()))?;
26063
26064            let _field = constraints.as_mut();
26065            ::fidl_next::Constrained::validate(_field, (4294967295, ()))?;
26066            ::fidl_next::Decode::decode(constraints.as_mut(), decoder_, (4294967295, ()))?;
26067
26068            Ok(())
26069        }
26070    }
26071
26072    impl<'de> ::fidl_next::IntoNatural for ConfigType<'de> {
26073        type Natural = crate::natural::ConfigType;
26074    }
26075
26076    /// The wire type corresponding to [`ConfigChecksum`].
26077    #[repr(transparent)]
26078    pub struct ConfigChecksum<'de> {
26079        pub(crate) raw: ::fidl_next::wire::Union,
26080        pub(crate) _phantom: ::core::marker::PhantomData<&'de mut [::fidl_next::Chunk]>,
26081    }
26082
26083    impl<'de> Drop for ConfigChecksum<'de> {
26084        fn drop(&mut self) {
26085            match self.raw.ordinal() {
26086                1 => {
26087                    let _ = unsafe { self.raw.get().read_unchecked::<[u8; 32]>() };
26088                }
26089
26090                _ => (),
26091            }
26092        }
26093    }
26094
26095    impl ::fidl_next::Constrained for ConfigChecksum<'_> {
26096        type Constraint = ();
26097
26098        fn validate(
26099            _: ::fidl_next::Slot<'_, Self>,
26100            _: Self::Constraint,
26101        ) -> Result<(), ::fidl_next::ValidationError> {
26102            Ok(())
26103        }
26104    }
26105
26106    unsafe impl ::fidl_next::Wire for ConfigChecksum<'static> {
26107        type Narrowed<'de> = ConfigChecksum<'de>;
26108
26109        #[inline]
26110        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
26111            ::fidl_next::munge!(let Self { raw, _phantom: _ } = out);
26112            ::fidl_next::wire::Union::zero_padding(raw);
26113        }
26114    }
26115
26116    pub mod config_checksum {
26117        pub enum Ref<'de> {
26118            Sha256(&'de [u8; 32]),
26119
26120            UnknownOrdinal_(u64),
26121        }
26122
26123        pub enum Value {
26124            Sha256([u8; 32]),
26125
26126            UnknownOrdinal_(u64),
26127        }
26128    }
26129
26130    impl<'de> ConfigChecksum<'de> {
26131        pub fn as_ref(&self) -> crate::wire::config_checksum::Ref<'_> {
26132            match self.raw.ordinal() {
26133                1 => crate::wire::config_checksum::Ref::Sha256(unsafe {
26134                    self.raw.get().deref_unchecked::<[u8; 32]>()
26135                }),
26136
26137                unknown => crate::wire::config_checksum::Ref::UnknownOrdinal_(unknown),
26138            }
26139        }
26140
26141        pub fn into_inner(self) -> crate::wire::config_checksum::Value {
26142            let this = ::core::mem::ManuallyDrop::new(self);
26143
26144            match this.raw.ordinal() {
26145                1 => crate::wire::config_checksum::Value::Sha256(unsafe {
26146                    this.raw.get().read_unchecked::<[u8; 32]>()
26147                }),
26148
26149                unknown => crate::wire::config_checksum::Value::UnknownOrdinal_(unknown),
26150            }
26151        }
26152    }
26153
26154    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for ConfigChecksum<'de>
26155    where
26156        ___D: ::fidl_next::decoder::InternalHandleDecoder + ?Sized,
26157        ___D: ::fidl_next::Decoder<'de>,
26158    {
26159        fn decode(
26160            mut slot: ::fidl_next::Slot<'_, Self>,
26161            decoder: &mut ___D,
26162            _: (),
26163        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
26164            ::fidl_next::munge!(let Self { mut raw, _phantom: _ } = slot.as_mut());
26165            match ::fidl_next::wire::Union::encoded_ordinal(raw.as_mut()) {
26166                1 => ::fidl_next::wire::Union::decode_as::<___D, [u8; 32]>(raw, decoder, ())?,
26167
26168                _ => ::fidl_next::wire::Union::decode_unknown(raw, decoder)?,
26169            }
26170
26171            Ok(())
26172        }
26173    }
26174
26175    impl<'de> ::core::fmt::Debug for ConfigChecksum<'de> {
26176        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
26177            match self.raw.ordinal() {
26178                1 => unsafe { self.raw.get().deref_unchecked::<[u8; 32]>().fmt(f) },
26179                _ => unsafe { ::core::hint::unreachable_unchecked() },
26180            }
26181        }
26182    }
26183
26184    impl<'de> ::fidl_next::IntoNatural for ConfigChecksum<'de> {
26185        type Natural = crate::natural::ConfigChecksum;
26186    }
26187
26188    /// The wire type corresponding to [`UseStorage`].
26189    #[repr(C)]
26190    pub struct UseStorage<'de> {
26191        pub(crate) table: ::fidl_next::wire::Table<'de>,
26192    }
26193
26194    impl<'de> Drop for UseStorage<'de> {
26195        fn drop(&mut self) {
26196            let _ = self.table.get(1).map(|envelope| unsafe {
26197                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
26198            });
26199
26200            let _ = self.table.get(2).map(|envelope| unsafe {
26201                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
26202            });
26203
26204            let _ = self
26205                .table
26206                .get(3)
26207                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Availability>() });
26208        }
26209    }
26210
26211    impl ::fidl_next::Constrained for UseStorage<'_> {
26212        type Constraint = ();
26213
26214        fn validate(
26215            _: ::fidl_next::Slot<'_, Self>,
26216            _: Self::Constraint,
26217        ) -> Result<(), ::fidl_next::ValidationError> {
26218            Ok(())
26219        }
26220    }
26221
26222    unsafe impl ::fidl_next::Wire for UseStorage<'static> {
26223        type Narrowed<'de> = UseStorage<'de>;
26224
26225        #[inline]
26226        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
26227            ::fidl_next::munge!(let Self { table } = out);
26228            ::fidl_next::wire::Table::zero_padding(table);
26229        }
26230    }
26231
26232    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for UseStorage<'de>
26233    where
26234        ___D: ::fidl_next::Decoder<'de> + ?Sized,
26235    {
26236        fn decode(
26237            slot: ::fidl_next::Slot<'_, Self>,
26238            decoder: &mut ___D,
26239            _: (),
26240        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
26241            ::fidl_next::munge!(let Self { table } = slot);
26242
26243            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
26244                match ordinal {
26245                    0 => unsafe { ::core::hint::unreachable_unchecked() },
26246
26247                    1 => {
26248                        ::fidl_next::wire::Envelope::decode_as::<
26249                            ___D,
26250                            ::fidl_next::wire::String<'de>,
26251                        >(slot.as_mut(), decoder, 100)?;
26252
26253                        let value = unsafe {
26254                            slot.deref_unchecked()
26255                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
26256                        };
26257
26258                        if value.len() > 100 {
26259                            return Err(::fidl_next::DecodeError::VectorTooLong {
26260                                size: value.len() as u64,
26261                                limit: 100,
26262                            });
26263                        }
26264
26265                        Ok(())
26266                    }
26267
26268                    2 => {
26269                        ::fidl_next::wire::Envelope::decode_as::<
26270                            ___D,
26271                            ::fidl_next::wire::String<'de>,
26272                        >(slot.as_mut(), decoder, 1024)?;
26273
26274                        let value = unsafe {
26275                            slot.deref_unchecked()
26276                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
26277                        };
26278
26279                        if value.len() > 1024 {
26280                            return Err(::fidl_next::DecodeError::VectorTooLong {
26281                                size: value.len() as u64,
26282                                limit: 1024,
26283                            });
26284                        }
26285
26286                        Ok(())
26287                    }
26288
26289                    3 => {
26290                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Availability>(
26291                            slot.as_mut(),
26292                            decoder,
26293                            (),
26294                        )?;
26295
26296                        Ok(())
26297                    }
26298
26299                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
26300                }
26301            })
26302        }
26303    }
26304
26305    impl<'de> UseStorage<'de> {
26306        pub fn source_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
26307            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
26308        }
26309
26310        pub fn take_source_name(
26311            &mut self,
26312        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
26313            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
26314        }
26315
26316        pub fn target_path(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
26317            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
26318        }
26319
26320        pub fn take_target_path(
26321            &mut self,
26322        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
26323            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
26324        }
26325
26326        pub fn availability(&self) -> ::core::option::Option<&crate::wire::Availability> {
26327            unsafe { Some(self.table.get(3)?.deref_unchecked()) }
26328        }
26329
26330        pub fn take_availability(&mut self) -> ::core::option::Option<crate::wire::Availability> {
26331            unsafe { Some(self.table.get_mut(3)?.take_unchecked()) }
26332        }
26333    }
26334
26335    impl<'de> ::core::fmt::Debug for UseStorage<'de> {
26336        fn fmt(
26337            &self,
26338            f: &mut ::core::fmt::Formatter<'_>,
26339        ) -> ::core::result::Result<(), ::core::fmt::Error> {
26340            f.debug_struct("UseStorage")
26341                .field("source_name", &self.source_name())
26342                .field("target_path", &self.target_path())
26343                .field("availability", &self.availability())
26344                .finish()
26345        }
26346    }
26347
26348    impl<'de> ::fidl_next::IntoNatural for UseStorage<'de> {
26349        type Natural = crate::natural::UseStorage;
26350    }
26351
26352    /// The wire type corresponding to [`ConfigMutability`](crate::natural::ConfigMutability).
26353    #[derive(Clone, Copy, Debug)]
26354    #[repr(transparent)]
26355    pub struct ConfigMutability {
26356        pub(crate) value: ::fidl_next::wire::Uint32,
26357    }
26358
26359    impl ::fidl_next::Constrained for ConfigMutability {
26360        type Constraint = ();
26361
26362        fn validate(
26363            _: ::fidl_next::Slot<'_, Self>,
26364            _: Self::Constraint,
26365        ) -> Result<(), ::fidl_next::ValidationError> {
26366            Ok(())
26367        }
26368    }
26369
26370    unsafe impl ::fidl_next::Wire for ConfigMutability {
26371        type Narrowed<'de> = Self;
26372
26373        #[inline]
26374        fn zero_padding(_: &mut ::core::mem::MaybeUninit<Self>) {
26375            // Wire bits have no padding
26376        }
26377    }
26378
26379    unsafe impl<___D> ::fidl_next::Decode<___D> for ConfigMutability
26380    where
26381        ___D: ?Sized,
26382    {
26383        fn decode(
26384            slot: ::fidl_next::Slot<'_, Self>,
26385            _: &mut ___D,
26386            _: (),
26387        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
26388            Ok(())
26389        }
26390    }
26391
26392    impl ::core::convert::From<crate::natural::ConfigMutability> for ConfigMutability {
26393        fn from(natural: crate::natural::ConfigMutability) -> Self {
26394            Self { value: ::fidl_next::wire::Uint32::from(natural.bits()) }
26395        }
26396    }
26397
26398    impl ::fidl_next::IntoNatural for ConfigMutability {
26399        type Natural = crate::natural::ConfigMutability;
26400    }
26401
26402    /// The wire type corresponding to [`ConfigField`].
26403    #[repr(C)]
26404    pub struct ConfigField<'de> {
26405        pub(crate) table: ::fidl_next::wire::Table<'de>,
26406    }
26407
26408    impl<'de> Drop for ConfigField<'de> {
26409        fn drop(&mut self) {
26410            let _ = self.table.get(1).map(|envelope| unsafe {
26411                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
26412            });
26413
26414            let _ = self.table.get(2).map(|envelope| unsafe {
26415                envelope.read_unchecked::<crate::wire::ConfigType<'de>>()
26416            });
26417
26418            let _ = self.table.get(3).map(|envelope| unsafe {
26419                envelope.read_unchecked::<crate::wire::ConfigMutability>()
26420            });
26421        }
26422    }
26423
26424    impl ::fidl_next::Constrained for ConfigField<'_> {
26425        type Constraint = ();
26426
26427        fn validate(
26428            _: ::fidl_next::Slot<'_, Self>,
26429            _: Self::Constraint,
26430        ) -> Result<(), ::fidl_next::ValidationError> {
26431            Ok(())
26432        }
26433    }
26434
26435    unsafe impl ::fidl_next::Wire for ConfigField<'static> {
26436        type Narrowed<'de> = ConfigField<'de>;
26437
26438        #[inline]
26439        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
26440            ::fidl_next::munge!(let Self { table } = out);
26441            ::fidl_next::wire::Table::zero_padding(table);
26442        }
26443    }
26444
26445    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for ConfigField<'de>
26446    where
26447        ___D: ::fidl_next::Decoder<'de> + ?Sized,
26448    {
26449        fn decode(
26450            slot: ::fidl_next::Slot<'_, Self>,
26451            decoder: &mut ___D,
26452            _: (),
26453        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
26454            ::fidl_next::munge!(let Self { table } = slot);
26455
26456            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
26457                match ordinal {
26458                    0 => unsafe { ::core::hint::unreachable_unchecked() },
26459
26460                    1 => {
26461                        ::fidl_next::wire::Envelope::decode_as::<
26462                            ___D,
26463                            ::fidl_next::wire::String<'de>,
26464                        >(slot.as_mut(), decoder, 64)?;
26465
26466                        let value = unsafe {
26467                            slot.deref_unchecked()
26468                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
26469                        };
26470
26471                        if value.len() > 64 {
26472                            return Err(::fidl_next::DecodeError::VectorTooLong {
26473                                size: value.len() as u64,
26474                                limit: 64,
26475                            });
26476                        }
26477
26478                        Ok(())
26479                    }
26480
26481                    2 => {
26482                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::ConfigType<'de>>(
26483                            slot.as_mut(),
26484                            decoder,
26485                            (),
26486                        )?;
26487
26488                        Ok(())
26489                    }
26490
26491                    3 => {
26492                        ::fidl_next::wire::Envelope::decode_as::<
26493                            ___D,
26494                            crate::wire::ConfigMutability,
26495                        >(slot.as_mut(), decoder, ())?;
26496
26497                        Ok(())
26498                    }
26499
26500                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
26501                }
26502            })
26503        }
26504    }
26505
26506    impl<'de> ConfigField<'de> {
26507        pub fn key(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
26508            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
26509        }
26510
26511        pub fn take_key(&mut self) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
26512            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
26513        }
26514
26515        pub fn type_(&self) -> ::core::option::Option<&crate::wire::ConfigType<'de>> {
26516            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
26517        }
26518
26519        pub fn take_type_(&mut self) -> ::core::option::Option<crate::wire::ConfigType<'de>> {
26520            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
26521        }
26522
26523        pub fn mutability(&self) -> ::core::option::Option<&crate::wire::ConfigMutability> {
26524            unsafe { Some(self.table.get(3)?.deref_unchecked()) }
26525        }
26526
26527        pub fn take_mutability(&mut self) -> ::core::option::Option<crate::wire::ConfigMutability> {
26528            unsafe { Some(self.table.get_mut(3)?.take_unchecked()) }
26529        }
26530    }
26531
26532    impl<'de> ::core::fmt::Debug for ConfigField<'de> {
26533        fn fmt(
26534            &self,
26535            f: &mut ::core::fmt::Formatter<'_>,
26536        ) -> ::core::result::Result<(), ::core::fmt::Error> {
26537            f.debug_struct("ConfigField")
26538                .field("key", &self.key())
26539                .field("type_", &self.type_())
26540                .field("mutability", &self.mutability())
26541                .finish()
26542        }
26543    }
26544
26545    impl<'de> ::fidl_next::IntoNatural for ConfigField<'de> {
26546        type Natural = crate::natural::ConfigField;
26547    }
26548
26549    /// The wire type corresponding to [`Program`].
26550    #[repr(C)]
26551    pub struct Program<'de> {
26552        pub(crate) table: ::fidl_next::wire::Table<'de>,
26553    }
26554
26555    impl<'de> Drop for Program<'de> {
26556        fn drop(&mut self) {
26557            let _ = self.table.get(1).map(|envelope| unsafe {
26558                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
26559            });
26560
26561            let _ = self.table.get(2).map(|envelope| unsafe {
26562                envelope.read_unchecked::<::fidl_next_common_fuchsia_data::wire::Dictionary<'de>>()
26563            });
26564        }
26565    }
26566
26567    impl ::fidl_next::Constrained for Program<'_> {
26568        type Constraint = ();
26569
26570        fn validate(
26571            _: ::fidl_next::Slot<'_, Self>,
26572            _: Self::Constraint,
26573        ) -> Result<(), ::fidl_next::ValidationError> {
26574            Ok(())
26575        }
26576    }
26577
26578    unsafe impl ::fidl_next::Wire for Program<'static> {
26579        type Narrowed<'de> = Program<'de>;
26580
26581        #[inline]
26582        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
26583            ::fidl_next::munge!(let Self { table } = out);
26584            ::fidl_next::wire::Table::zero_padding(table);
26585        }
26586    }
26587
26588    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for Program<'de>
26589    where
26590        ___D: ::fidl_next::Decoder<'de> + ?Sized,
26591    {
26592        fn decode(
26593            slot: ::fidl_next::Slot<'_, Self>,
26594            decoder: &mut ___D,
26595            _: (),
26596        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
26597            ::fidl_next::munge!(let Self { table } = slot);
26598
26599            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
26600                match ordinal {
26601                    0 => unsafe { ::core::hint::unreachable_unchecked() },
26602
26603                    1 => {
26604                        ::fidl_next::wire::Envelope::decode_as::<
26605                            ___D,
26606                            ::fidl_next::wire::String<'de>,
26607                        >(slot.as_mut(), decoder, 100)?;
26608
26609                        let value = unsafe {
26610                            slot.deref_unchecked()
26611                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
26612                        };
26613
26614                        if value.len() > 100 {
26615                            return Err(::fidl_next::DecodeError::VectorTooLong {
26616                                size: value.len() as u64,
26617                                limit: 100,
26618                            });
26619                        }
26620
26621                        Ok(())
26622                    }
26623
26624                    2 => {
26625                        ::fidl_next::wire::Envelope::decode_as::<
26626                            ___D,
26627                            ::fidl_next_common_fuchsia_data::wire::Dictionary<'de>,
26628                        >(slot.as_mut(), decoder, ())?;
26629
26630                        Ok(())
26631                    }
26632
26633                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
26634                }
26635            })
26636        }
26637    }
26638
26639    impl<'de> Program<'de> {
26640        pub fn runner(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
26641            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
26642        }
26643
26644        pub fn take_runner(&mut self) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
26645            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
26646        }
26647
26648        pub fn info(
26649            &self,
26650        ) -> ::core::option::Option<&::fidl_next_common_fuchsia_data::wire::Dictionary<'de>>
26651        {
26652            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
26653        }
26654
26655        pub fn take_info(
26656            &mut self,
26657        ) -> ::core::option::Option<::fidl_next_common_fuchsia_data::wire::Dictionary<'de>>
26658        {
26659            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
26660        }
26661    }
26662
26663    impl<'de> ::core::fmt::Debug for Program<'de> {
26664        fn fmt(
26665            &self,
26666            f: &mut ::core::fmt::Formatter<'_>,
26667        ) -> ::core::result::Result<(), ::core::fmt::Error> {
26668            f.debug_struct("Program")
26669                .field("runner", &self.runner())
26670                .field("info", &self.info())
26671                .finish()
26672        }
26673    }
26674
26675    impl<'de> ::fidl_next::IntoNatural for Program<'de> {
26676        type Natural = crate::natural::Program;
26677    }
26678
26679    /// The wire type corresponding to [`DebugInfo`].
26680    #[repr(C)]
26681    pub struct DebugInfo<'de> {
26682        pub(crate) table: ::fidl_next::wire::Table<'de>,
26683    }
26684
26685    impl<'de> Drop for DebugInfo<'de> {
26686        fn drop(&mut self) {
26687            let _ = self.table.get(1)
26688                .map(|envelope| unsafe {
26689                    envelope.read_unchecked::<::fidl_next::wire::Vector<'de, ::fidl_next::wire::String<'de>>>()
26690                });
26691        }
26692    }
26693
26694    impl ::fidl_next::Constrained for DebugInfo<'_> {
26695        type Constraint = ();
26696
26697        fn validate(
26698            _: ::fidl_next::Slot<'_, Self>,
26699            _: Self::Constraint,
26700        ) -> Result<(), ::fidl_next::ValidationError> {
26701            Ok(())
26702        }
26703    }
26704
26705    unsafe impl ::fidl_next::Wire for DebugInfo<'static> {
26706        type Narrowed<'de> = DebugInfo<'de>;
26707
26708        #[inline]
26709        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
26710            ::fidl_next::munge!(let Self { table } = out);
26711            ::fidl_next::wire::Table::zero_padding(table);
26712        }
26713    }
26714
26715    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for DebugInfo<'de>
26716    where
26717        ___D: ::fidl_next::Decoder<'de> + ?Sized,
26718    {
26719        fn decode(
26720            slot: ::fidl_next::Slot<'_, Self>,
26721            decoder: &mut ___D,
26722            _: (),
26723        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
26724            ::fidl_next::munge!(let Self { table } = slot);
26725
26726            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
26727                match ordinal {
26728                    0 => unsafe { ::core::hint::unreachable_unchecked() },
26729
26730                    1 => {
26731                        ::fidl_next::wire::Envelope::decode_as::<
26732                            ___D,
26733                            ::fidl_next::wire::Vector<'de, ::fidl_next::wire::String<'de>>,
26734                        >(slot.as_mut(), decoder, (4294967295, 4294967295))?;
26735
26736                        Ok(())
26737                    }
26738
26739                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
26740                }
26741            })
26742        }
26743    }
26744
26745    impl<'de> DebugInfo<'de> {
26746        pub fn manifest_sources(
26747            &self,
26748        ) -> ::core::option::Option<&::fidl_next::wire::Vector<'de, ::fidl_next::wire::String<'de>>>
26749        {
26750            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
26751        }
26752
26753        pub fn take_manifest_sources(
26754            &mut self,
26755        ) -> ::core::option::Option<::fidl_next::wire::Vector<'de, ::fidl_next::wire::String<'de>>>
26756        {
26757            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
26758        }
26759    }
26760
26761    impl<'de> ::core::fmt::Debug for DebugInfo<'de> {
26762        fn fmt(
26763            &self,
26764            f: &mut ::core::fmt::Formatter<'_>,
26765        ) -> ::core::result::Result<(), ::core::fmt::Error> {
26766            f.debug_struct("DebugInfo").field("manifest_sources", &self.manifest_sources()).finish()
26767        }
26768    }
26769
26770    impl<'de> ::fidl_next::IntoNatural for DebugInfo<'de> {
26771        type Natural = crate::natural::DebugInfo;
26772    }
26773
26774    /// The wire type corresponding to [`UseService`].
26775    #[repr(C)]
26776    pub struct UseService<'de> {
26777        pub(crate) table: ::fidl_next::wire::Table<'de>,
26778    }
26779
26780    impl<'de> Drop for UseService<'de> {
26781        fn drop(&mut self) {
26782            let _ = self
26783                .table
26784                .get(1)
26785                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
26786
26787            let _ = self.table.get(2).map(|envelope| unsafe {
26788                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
26789            });
26790
26791            let _ = self.table.get(3).map(|envelope| unsafe {
26792                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
26793            });
26794
26795            let _ = self.table.get(4).map(|envelope| unsafe {
26796                envelope.read_unchecked::<crate::wire::DependencyType>()
26797            });
26798
26799            let _ = self
26800                .table
26801                .get(5)
26802                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Availability>() });
26803
26804            let _ = self.table.get(6).map(|envelope| unsafe {
26805                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
26806            });
26807        }
26808    }
26809
26810    impl ::fidl_next::Constrained for UseService<'_> {
26811        type Constraint = ();
26812
26813        fn validate(
26814            _: ::fidl_next::Slot<'_, Self>,
26815            _: Self::Constraint,
26816        ) -> Result<(), ::fidl_next::ValidationError> {
26817            Ok(())
26818        }
26819    }
26820
26821    unsafe impl ::fidl_next::Wire for UseService<'static> {
26822        type Narrowed<'de> = UseService<'de>;
26823
26824        #[inline]
26825        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
26826            ::fidl_next::munge!(let Self { table } = out);
26827            ::fidl_next::wire::Table::zero_padding(table);
26828        }
26829    }
26830
26831    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for UseService<'de>
26832    where
26833        ___D: ::fidl_next::Decoder<'de> + ?Sized,
26834    {
26835        fn decode(
26836            slot: ::fidl_next::Slot<'_, Self>,
26837            decoder: &mut ___D,
26838            _: (),
26839        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
26840            ::fidl_next::munge!(let Self { table } = slot);
26841
26842            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
26843                match ordinal {
26844                    0 => unsafe { ::core::hint::unreachable_unchecked() },
26845
26846                    1 => {
26847                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
26848                            slot.as_mut(),
26849                            decoder,
26850                            (),
26851                        )?;
26852
26853                        Ok(())
26854                    }
26855
26856                    2 => {
26857                        ::fidl_next::wire::Envelope::decode_as::<
26858                            ___D,
26859                            ::fidl_next::wire::String<'de>,
26860                        >(slot.as_mut(), decoder, 100)?;
26861
26862                        let value = unsafe {
26863                            slot.deref_unchecked()
26864                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
26865                        };
26866
26867                        if value.len() > 100 {
26868                            return Err(::fidl_next::DecodeError::VectorTooLong {
26869                                size: value.len() as u64,
26870                                limit: 100,
26871                            });
26872                        }
26873
26874                        Ok(())
26875                    }
26876
26877                    3 => {
26878                        ::fidl_next::wire::Envelope::decode_as::<
26879                            ___D,
26880                            ::fidl_next::wire::String<'de>,
26881                        >(slot.as_mut(), decoder, 1024)?;
26882
26883                        let value = unsafe {
26884                            slot.deref_unchecked()
26885                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
26886                        };
26887
26888                        if value.len() > 1024 {
26889                            return Err(::fidl_next::DecodeError::VectorTooLong {
26890                                size: value.len() as u64,
26891                                limit: 1024,
26892                            });
26893                        }
26894
26895                        Ok(())
26896                    }
26897
26898                    4 => {
26899                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::DependencyType>(
26900                            slot.as_mut(),
26901                            decoder,
26902                            (),
26903                        )?;
26904
26905                        Ok(())
26906                    }
26907
26908                    5 => {
26909                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Availability>(
26910                            slot.as_mut(),
26911                            decoder,
26912                            (),
26913                        )?;
26914
26915                        Ok(())
26916                    }
26917
26918                    6 => {
26919                        ::fidl_next::wire::Envelope::decode_as::<
26920                            ___D,
26921                            ::fidl_next::wire::String<'de>,
26922                        >(slot.as_mut(), decoder, 1024)?;
26923
26924                        let value = unsafe {
26925                            slot.deref_unchecked()
26926                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
26927                        };
26928
26929                        if value.len() > 1024 {
26930                            return Err(::fidl_next::DecodeError::VectorTooLong {
26931                                size: value.len() as u64,
26932                                limit: 1024,
26933                            });
26934                        }
26935
26936                        Ok(())
26937                    }
26938
26939                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
26940                }
26941            })
26942        }
26943    }
26944
26945    impl<'de> UseService<'de> {
26946        pub fn source(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
26947            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
26948        }
26949
26950        pub fn take_source(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
26951            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
26952        }
26953
26954        pub fn source_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
26955            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
26956        }
26957
26958        pub fn take_source_name(
26959            &mut self,
26960        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
26961            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
26962        }
26963
26964        pub fn target_path(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
26965            unsafe { Some(self.table.get(3)?.deref_unchecked()) }
26966        }
26967
26968        pub fn take_target_path(
26969            &mut self,
26970        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
26971            unsafe { Some(self.table.get_mut(3)?.take_unchecked()) }
26972        }
26973
26974        pub fn dependency_type(&self) -> ::core::option::Option<&crate::wire::DependencyType> {
26975            unsafe { Some(self.table.get(4)?.deref_unchecked()) }
26976        }
26977
26978        pub fn take_dependency_type(
26979            &mut self,
26980        ) -> ::core::option::Option<crate::wire::DependencyType> {
26981            unsafe { Some(self.table.get_mut(4)?.take_unchecked()) }
26982        }
26983
26984        pub fn availability(&self) -> ::core::option::Option<&crate::wire::Availability> {
26985            unsafe { Some(self.table.get(5)?.deref_unchecked()) }
26986        }
26987
26988        pub fn take_availability(&mut self) -> ::core::option::Option<crate::wire::Availability> {
26989            unsafe { Some(self.table.get_mut(5)?.take_unchecked()) }
26990        }
26991
26992        pub fn source_dictionary(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
26993            unsafe { Some(self.table.get(6)?.deref_unchecked()) }
26994        }
26995
26996        pub fn take_source_dictionary(
26997            &mut self,
26998        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
26999            unsafe { Some(self.table.get_mut(6)?.take_unchecked()) }
27000        }
27001    }
27002
27003    impl<'de> ::core::fmt::Debug for UseService<'de> {
27004        fn fmt(
27005            &self,
27006            f: &mut ::core::fmt::Formatter<'_>,
27007        ) -> ::core::result::Result<(), ::core::fmt::Error> {
27008            f.debug_struct("UseService")
27009                .field("source", &self.source())
27010                .field("source_name", &self.source_name())
27011                .field("target_path", &self.target_path())
27012                .field("dependency_type", &self.dependency_type())
27013                .field("availability", &self.availability())
27014                .field("source_dictionary", &self.source_dictionary())
27015                .finish()
27016        }
27017    }
27018
27019    impl<'de> ::fidl_next::IntoNatural for UseService<'de> {
27020        type Natural = crate::natural::UseService;
27021    }
27022
27023    /// The wire type corresponding to [`UseProtocol`].
27024    #[repr(C)]
27025    pub struct UseProtocol<'de> {
27026        pub(crate) table: ::fidl_next::wire::Table<'de>,
27027    }
27028
27029    impl<'de> Drop for UseProtocol<'de> {
27030        fn drop(&mut self) {
27031            let _ = self
27032                .table
27033                .get(1)
27034                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
27035
27036            let _ = self.table.get(2).map(|envelope| unsafe {
27037                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
27038            });
27039
27040            let _ = self.table.get(3).map(|envelope| unsafe {
27041                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
27042            });
27043
27044            let _ = self.table.get(4).map(|envelope| unsafe {
27045                envelope.read_unchecked::<crate::wire::DependencyType>()
27046            });
27047
27048            let _ = self
27049                .table
27050                .get(5)
27051                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Availability>() });
27052
27053            let _ = self.table.get(6).map(|envelope| unsafe {
27054                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
27055            });
27056
27057            let _ = self.table.get(7).map(|envelope| unsafe { envelope.read_unchecked::<u8>() });
27058        }
27059    }
27060
27061    impl ::fidl_next::Constrained for UseProtocol<'_> {
27062        type Constraint = ();
27063
27064        fn validate(
27065            _: ::fidl_next::Slot<'_, Self>,
27066            _: Self::Constraint,
27067        ) -> Result<(), ::fidl_next::ValidationError> {
27068            Ok(())
27069        }
27070    }
27071
27072    unsafe impl ::fidl_next::Wire for UseProtocol<'static> {
27073        type Narrowed<'de> = UseProtocol<'de>;
27074
27075        #[inline]
27076        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
27077            ::fidl_next::munge!(let Self { table } = out);
27078            ::fidl_next::wire::Table::zero_padding(table);
27079        }
27080    }
27081
27082    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for UseProtocol<'de>
27083    where
27084        ___D: ::fidl_next::Decoder<'de> + ?Sized,
27085    {
27086        fn decode(
27087            slot: ::fidl_next::Slot<'_, Self>,
27088            decoder: &mut ___D,
27089            _: (),
27090        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
27091            ::fidl_next::munge!(let Self { table } = slot);
27092
27093            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
27094                match ordinal {
27095                    0 => unsafe { ::core::hint::unreachable_unchecked() },
27096
27097                    1 => {
27098                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
27099                            slot.as_mut(),
27100                            decoder,
27101                            (),
27102                        )?;
27103
27104                        Ok(())
27105                    }
27106
27107                    2 => {
27108                        ::fidl_next::wire::Envelope::decode_as::<
27109                            ___D,
27110                            ::fidl_next::wire::String<'de>,
27111                        >(slot.as_mut(), decoder, 100)?;
27112
27113                        let value = unsafe {
27114                            slot.deref_unchecked()
27115                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
27116                        };
27117
27118                        if value.len() > 100 {
27119                            return Err(::fidl_next::DecodeError::VectorTooLong {
27120                                size: value.len() as u64,
27121                                limit: 100,
27122                            });
27123                        }
27124
27125                        Ok(())
27126                    }
27127
27128                    3 => {
27129                        ::fidl_next::wire::Envelope::decode_as::<
27130                            ___D,
27131                            ::fidl_next::wire::String<'de>,
27132                        >(slot.as_mut(), decoder, 1024)?;
27133
27134                        let value = unsafe {
27135                            slot.deref_unchecked()
27136                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
27137                        };
27138
27139                        if value.len() > 1024 {
27140                            return Err(::fidl_next::DecodeError::VectorTooLong {
27141                                size: value.len() as u64,
27142                                limit: 1024,
27143                            });
27144                        }
27145
27146                        Ok(())
27147                    }
27148
27149                    4 => {
27150                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::DependencyType>(
27151                            slot.as_mut(),
27152                            decoder,
27153                            (),
27154                        )?;
27155
27156                        Ok(())
27157                    }
27158
27159                    5 => {
27160                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Availability>(
27161                            slot.as_mut(),
27162                            decoder,
27163                            (),
27164                        )?;
27165
27166                        Ok(())
27167                    }
27168
27169                    6 => {
27170                        ::fidl_next::wire::Envelope::decode_as::<
27171                            ___D,
27172                            ::fidl_next::wire::String<'de>,
27173                        >(slot.as_mut(), decoder, 1024)?;
27174
27175                        let value = unsafe {
27176                            slot.deref_unchecked()
27177                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
27178                        };
27179
27180                        if value.len() > 1024 {
27181                            return Err(::fidl_next::DecodeError::VectorTooLong {
27182                                size: value.len() as u64,
27183                                limit: 1024,
27184                            });
27185                        }
27186
27187                        Ok(())
27188                    }
27189
27190                    7 => {
27191                        ::fidl_next::wire::Envelope::decode_as::<___D, u8>(
27192                            slot.as_mut(),
27193                            decoder,
27194                            (),
27195                        )?;
27196
27197                        Ok(())
27198                    }
27199
27200                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
27201                }
27202            })
27203        }
27204    }
27205
27206    impl<'de> UseProtocol<'de> {
27207        pub fn source(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
27208            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
27209        }
27210
27211        pub fn take_source(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
27212            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
27213        }
27214
27215        pub fn source_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
27216            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
27217        }
27218
27219        pub fn take_source_name(
27220            &mut self,
27221        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
27222            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
27223        }
27224
27225        pub fn target_path(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
27226            unsafe { Some(self.table.get(3)?.deref_unchecked()) }
27227        }
27228
27229        pub fn take_target_path(
27230            &mut self,
27231        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
27232            unsafe { Some(self.table.get_mut(3)?.take_unchecked()) }
27233        }
27234
27235        pub fn dependency_type(&self) -> ::core::option::Option<&crate::wire::DependencyType> {
27236            unsafe { Some(self.table.get(4)?.deref_unchecked()) }
27237        }
27238
27239        pub fn take_dependency_type(
27240            &mut self,
27241        ) -> ::core::option::Option<crate::wire::DependencyType> {
27242            unsafe { Some(self.table.get_mut(4)?.take_unchecked()) }
27243        }
27244
27245        pub fn availability(&self) -> ::core::option::Option<&crate::wire::Availability> {
27246            unsafe { Some(self.table.get(5)?.deref_unchecked()) }
27247        }
27248
27249        pub fn take_availability(&mut self) -> ::core::option::Option<crate::wire::Availability> {
27250            unsafe { Some(self.table.get_mut(5)?.take_unchecked()) }
27251        }
27252
27253        pub fn source_dictionary(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
27254            unsafe { Some(self.table.get(6)?.deref_unchecked()) }
27255        }
27256
27257        pub fn take_source_dictionary(
27258            &mut self,
27259        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
27260            unsafe { Some(self.table.get_mut(6)?.take_unchecked()) }
27261        }
27262
27263        pub fn numbered_handle(&self) -> ::core::option::Option<&u8> {
27264            unsafe { Some(self.table.get(7)?.deref_unchecked()) }
27265        }
27266
27267        pub fn take_numbered_handle(&mut self) -> ::core::option::Option<u8> {
27268            unsafe { Some(self.table.get_mut(7)?.take_unchecked()) }
27269        }
27270    }
27271
27272    impl<'de> ::core::fmt::Debug for UseProtocol<'de> {
27273        fn fmt(
27274            &self,
27275            f: &mut ::core::fmt::Formatter<'_>,
27276        ) -> ::core::result::Result<(), ::core::fmt::Error> {
27277            f.debug_struct("UseProtocol")
27278                .field("source", &self.source())
27279                .field("source_name", &self.source_name())
27280                .field("target_path", &self.target_path())
27281                .field("dependency_type", &self.dependency_type())
27282                .field("availability", &self.availability())
27283                .field("source_dictionary", &self.source_dictionary())
27284                .field("numbered_handle", &self.numbered_handle())
27285                .finish()
27286        }
27287    }
27288
27289    impl<'de> ::fidl_next::IntoNatural for UseProtocol<'de> {
27290        type Natural = crate::natural::UseProtocol;
27291    }
27292
27293    /// The wire type corresponding to [`UseDirectory`].
27294    #[repr(C)]
27295    pub struct UseDirectory<'de> {
27296        pub(crate) table: ::fidl_next::wire::Table<'de>,
27297    }
27298
27299    impl<'de> Drop for UseDirectory<'de> {
27300        fn drop(&mut self) {
27301            let _ = self
27302                .table
27303                .get(1)
27304                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
27305
27306            let _ = self.table.get(2).map(|envelope| unsafe {
27307                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
27308            });
27309
27310            let _ = self.table.get(3).map(|envelope| unsafe {
27311                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
27312            });
27313
27314            let _ = self.table.get(4).map(|envelope| unsafe {
27315                envelope.read_unchecked::<::fidl_next_common_fuchsia_io::wire::Operations>()
27316            });
27317
27318            let _ = self.table.get(5).map(|envelope| unsafe {
27319                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
27320            });
27321
27322            let _ = self.table.get(6).map(|envelope| unsafe {
27323                envelope.read_unchecked::<crate::wire::DependencyType>()
27324            });
27325
27326            let _ = self
27327                .table
27328                .get(7)
27329                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Availability>() });
27330
27331            let _ = self.table.get(8).map(|envelope| unsafe {
27332                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
27333            });
27334        }
27335    }
27336
27337    impl ::fidl_next::Constrained for UseDirectory<'_> {
27338        type Constraint = ();
27339
27340        fn validate(
27341            _: ::fidl_next::Slot<'_, Self>,
27342            _: Self::Constraint,
27343        ) -> Result<(), ::fidl_next::ValidationError> {
27344            Ok(())
27345        }
27346    }
27347
27348    unsafe impl ::fidl_next::Wire for UseDirectory<'static> {
27349        type Narrowed<'de> = UseDirectory<'de>;
27350
27351        #[inline]
27352        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
27353            ::fidl_next::munge!(let Self { table } = out);
27354            ::fidl_next::wire::Table::zero_padding(table);
27355        }
27356    }
27357
27358    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for UseDirectory<'de>
27359    where
27360        ___D: ::fidl_next::Decoder<'de> + ?Sized,
27361    {
27362        fn decode(
27363            slot: ::fidl_next::Slot<'_, Self>,
27364            decoder: &mut ___D,
27365            _: (),
27366        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
27367            ::fidl_next::munge!(let Self { table } = slot);
27368
27369            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
27370                match ordinal {
27371                    0 => unsafe { ::core::hint::unreachable_unchecked() },
27372
27373                    1 => {
27374                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
27375                            slot.as_mut(),
27376                            decoder,
27377                            (),
27378                        )?;
27379
27380                        Ok(())
27381                    }
27382
27383                    2 => {
27384                        ::fidl_next::wire::Envelope::decode_as::<
27385                            ___D,
27386                            ::fidl_next::wire::String<'de>,
27387                        >(slot.as_mut(), decoder, 100)?;
27388
27389                        let value = unsafe {
27390                            slot.deref_unchecked()
27391                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
27392                        };
27393
27394                        if value.len() > 100 {
27395                            return Err(::fidl_next::DecodeError::VectorTooLong {
27396                                size: value.len() as u64,
27397                                limit: 100,
27398                            });
27399                        }
27400
27401                        Ok(())
27402                    }
27403
27404                    3 => {
27405                        ::fidl_next::wire::Envelope::decode_as::<
27406                            ___D,
27407                            ::fidl_next::wire::String<'de>,
27408                        >(slot.as_mut(), decoder, 1024)?;
27409
27410                        let value = unsafe {
27411                            slot.deref_unchecked()
27412                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
27413                        };
27414
27415                        if value.len() > 1024 {
27416                            return Err(::fidl_next::DecodeError::VectorTooLong {
27417                                size: value.len() as u64,
27418                                limit: 1024,
27419                            });
27420                        }
27421
27422                        Ok(())
27423                    }
27424
27425                    4 => {
27426                        ::fidl_next::wire::Envelope::decode_as::<
27427                            ___D,
27428                            ::fidl_next_common_fuchsia_io::wire::Operations,
27429                        >(slot.as_mut(), decoder, ())?;
27430
27431                        Ok(())
27432                    }
27433
27434                    5 => {
27435                        ::fidl_next::wire::Envelope::decode_as::<
27436                            ___D,
27437                            ::fidl_next::wire::String<'de>,
27438                        >(slot.as_mut(), decoder, 1024)?;
27439
27440                        let value = unsafe {
27441                            slot.deref_unchecked()
27442                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
27443                        };
27444
27445                        if value.len() > 1024 {
27446                            return Err(::fidl_next::DecodeError::VectorTooLong {
27447                                size: value.len() as u64,
27448                                limit: 1024,
27449                            });
27450                        }
27451
27452                        Ok(())
27453                    }
27454
27455                    6 => {
27456                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::DependencyType>(
27457                            slot.as_mut(),
27458                            decoder,
27459                            (),
27460                        )?;
27461
27462                        Ok(())
27463                    }
27464
27465                    7 => {
27466                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Availability>(
27467                            slot.as_mut(),
27468                            decoder,
27469                            (),
27470                        )?;
27471
27472                        Ok(())
27473                    }
27474
27475                    8 => {
27476                        ::fidl_next::wire::Envelope::decode_as::<
27477                            ___D,
27478                            ::fidl_next::wire::String<'de>,
27479                        >(slot.as_mut(), decoder, 1024)?;
27480
27481                        let value = unsafe {
27482                            slot.deref_unchecked()
27483                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
27484                        };
27485
27486                        if value.len() > 1024 {
27487                            return Err(::fidl_next::DecodeError::VectorTooLong {
27488                                size: value.len() as u64,
27489                                limit: 1024,
27490                            });
27491                        }
27492
27493                        Ok(())
27494                    }
27495
27496                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
27497                }
27498            })
27499        }
27500    }
27501
27502    impl<'de> UseDirectory<'de> {
27503        pub fn source(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
27504            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
27505        }
27506
27507        pub fn take_source(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
27508            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
27509        }
27510
27511        pub fn source_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
27512            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
27513        }
27514
27515        pub fn take_source_name(
27516            &mut self,
27517        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
27518            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
27519        }
27520
27521        pub fn target_path(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
27522            unsafe { Some(self.table.get(3)?.deref_unchecked()) }
27523        }
27524
27525        pub fn take_target_path(
27526            &mut self,
27527        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
27528            unsafe { Some(self.table.get_mut(3)?.take_unchecked()) }
27529        }
27530
27531        pub fn rights(
27532            &self,
27533        ) -> ::core::option::Option<&::fidl_next_common_fuchsia_io::wire::Operations> {
27534            unsafe { Some(self.table.get(4)?.deref_unchecked()) }
27535        }
27536
27537        pub fn take_rights(
27538            &mut self,
27539        ) -> ::core::option::Option<::fidl_next_common_fuchsia_io::wire::Operations> {
27540            unsafe { Some(self.table.get_mut(4)?.take_unchecked()) }
27541        }
27542
27543        pub fn subdir(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
27544            unsafe { Some(self.table.get(5)?.deref_unchecked()) }
27545        }
27546
27547        pub fn take_subdir(&mut self) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
27548            unsafe { Some(self.table.get_mut(5)?.take_unchecked()) }
27549        }
27550
27551        pub fn dependency_type(&self) -> ::core::option::Option<&crate::wire::DependencyType> {
27552            unsafe { Some(self.table.get(6)?.deref_unchecked()) }
27553        }
27554
27555        pub fn take_dependency_type(
27556            &mut self,
27557        ) -> ::core::option::Option<crate::wire::DependencyType> {
27558            unsafe { Some(self.table.get_mut(6)?.take_unchecked()) }
27559        }
27560
27561        pub fn availability(&self) -> ::core::option::Option<&crate::wire::Availability> {
27562            unsafe { Some(self.table.get(7)?.deref_unchecked()) }
27563        }
27564
27565        pub fn take_availability(&mut self) -> ::core::option::Option<crate::wire::Availability> {
27566            unsafe { Some(self.table.get_mut(7)?.take_unchecked()) }
27567        }
27568
27569        pub fn source_dictionary(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
27570            unsafe { Some(self.table.get(8)?.deref_unchecked()) }
27571        }
27572
27573        pub fn take_source_dictionary(
27574            &mut self,
27575        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
27576            unsafe { Some(self.table.get_mut(8)?.take_unchecked()) }
27577        }
27578    }
27579
27580    impl<'de> ::core::fmt::Debug for UseDirectory<'de> {
27581        fn fmt(
27582            &self,
27583            f: &mut ::core::fmt::Formatter<'_>,
27584        ) -> ::core::result::Result<(), ::core::fmt::Error> {
27585            f.debug_struct("UseDirectory")
27586                .field("source", &self.source())
27587                .field("source_name", &self.source_name())
27588                .field("target_path", &self.target_path())
27589                .field("rights", &self.rights())
27590                .field("subdir", &self.subdir())
27591                .field("dependency_type", &self.dependency_type())
27592                .field("availability", &self.availability())
27593                .field("source_dictionary", &self.source_dictionary())
27594                .finish()
27595        }
27596    }
27597
27598    impl<'de> ::fidl_next::IntoNatural for UseDirectory<'de> {
27599        type Natural = crate::natural::UseDirectory;
27600    }
27601
27602    /// The wire type corresponding to [`UseEventStream`].
27603    #[repr(C)]
27604    pub struct UseEventStream<'de> {
27605        pub(crate) table: ::fidl_next::wire::Table<'de>,
27606    }
27607
27608    impl<'de> Drop for UseEventStream<'de> {
27609        fn drop(&mut self) {
27610            let _ = self.table.get(1).map(|envelope| unsafe {
27611                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
27612            });
27613
27614            let _ = self
27615                .table
27616                .get(2)
27617                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
27618
27619            let _ = self.table.get(3).map(|envelope| unsafe {
27620                envelope.read_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::Ref<'de>>>()
27621            });
27622
27623            let _ = self.table.get(4).map(|envelope| unsafe {
27624                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
27625            });
27626
27627            let _ = self
27628                .table
27629                .get(5)
27630                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Availability>() });
27631
27632            let _ = self.table.get(6).map(|envelope| unsafe {
27633                envelope.read_unchecked::<::fidl_next_common_fuchsia_data::wire::Dictionary<'de>>()
27634            });
27635        }
27636    }
27637
27638    impl ::fidl_next::Constrained for UseEventStream<'_> {
27639        type Constraint = ();
27640
27641        fn validate(
27642            _: ::fidl_next::Slot<'_, Self>,
27643            _: Self::Constraint,
27644        ) -> Result<(), ::fidl_next::ValidationError> {
27645            Ok(())
27646        }
27647    }
27648
27649    unsafe impl ::fidl_next::Wire for UseEventStream<'static> {
27650        type Narrowed<'de> = UseEventStream<'de>;
27651
27652        #[inline]
27653        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
27654            ::fidl_next::munge!(let Self { table } = out);
27655            ::fidl_next::wire::Table::zero_padding(table);
27656        }
27657    }
27658
27659    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for UseEventStream<'de>
27660    where
27661        ___D: ::fidl_next::Decoder<'de> + ?Sized,
27662    {
27663        fn decode(
27664            slot: ::fidl_next::Slot<'_, Self>,
27665            decoder: &mut ___D,
27666            _: (),
27667        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
27668            ::fidl_next::munge!(let Self { table } = slot);
27669
27670            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
27671                match ordinal {
27672                    0 => unsafe { ::core::hint::unreachable_unchecked() },
27673
27674                    1 => {
27675                        ::fidl_next::wire::Envelope::decode_as::<
27676                            ___D,
27677                            ::fidl_next::wire::String<'de>,
27678                        >(slot.as_mut(), decoder, 100)?;
27679
27680                        let value = unsafe {
27681                            slot.deref_unchecked()
27682                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
27683                        };
27684
27685                        if value.len() > 100 {
27686                            return Err(::fidl_next::DecodeError::VectorTooLong {
27687                                size: value.len() as u64,
27688                                limit: 100,
27689                            });
27690                        }
27691
27692                        Ok(())
27693                    }
27694
27695                    2 => {
27696                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
27697                            slot.as_mut(),
27698                            decoder,
27699                            (),
27700                        )?;
27701
27702                        Ok(())
27703                    }
27704
27705                    3 => {
27706                        ::fidl_next::wire::Envelope::decode_as::<
27707                            ___D,
27708                            ::fidl_next::wire::Vector<'de, crate::wire::Ref<'de>>,
27709                        >(slot.as_mut(), decoder, (4294967295, ()))?;
27710
27711                        Ok(())
27712                    }
27713
27714                    4 => {
27715                        ::fidl_next::wire::Envelope::decode_as::<
27716                            ___D,
27717                            ::fidl_next::wire::String<'de>,
27718                        >(slot.as_mut(), decoder, 100)?;
27719
27720                        let value = unsafe {
27721                            slot.deref_unchecked()
27722                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
27723                        };
27724
27725                        if value.len() > 100 {
27726                            return Err(::fidl_next::DecodeError::VectorTooLong {
27727                                size: value.len() as u64,
27728                                limit: 100,
27729                            });
27730                        }
27731
27732                        Ok(())
27733                    }
27734
27735                    5 => {
27736                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Availability>(
27737                            slot.as_mut(),
27738                            decoder,
27739                            (),
27740                        )?;
27741
27742                        Ok(())
27743                    }
27744
27745                    6 => {
27746                        ::fidl_next::wire::Envelope::decode_as::<
27747                            ___D,
27748                            ::fidl_next_common_fuchsia_data::wire::Dictionary<'de>,
27749                        >(slot.as_mut(), decoder, ())?;
27750
27751                        Ok(())
27752                    }
27753
27754                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
27755                }
27756            })
27757        }
27758    }
27759
27760    impl<'de> UseEventStream<'de> {
27761        pub fn source_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
27762            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
27763        }
27764
27765        pub fn take_source_name(
27766            &mut self,
27767        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
27768            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
27769        }
27770
27771        pub fn source(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
27772            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
27773        }
27774
27775        pub fn take_source(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
27776            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
27777        }
27778
27779        pub fn scope(
27780            &self,
27781        ) -> ::core::option::Option<&::fidl_next::wire::Vector<'de, crate::wire::Ref<'de>>>
27782        {
27783            unsafe { Some(self.table.get(3)?.deref_unchecked()) }
27784        }
27785
27786        pub fn take_scope(
27787            &mut self,
27788        ) -> ::core::option::Option<::fidl_next::wire::Vector<'de, crate::wire::Ref<'de>>> {
27789            unsafe { Some(self.table.get_mut(3)?.take_unchecked()) }
27790        }
27791
27792        pub fn target_path(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
27793            unsafe { Some(self.table.get(4)?.deref_unchecked()) }
27794        }
27795
27796        pub fn take_target_path(
27797            &mut self,
27798        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
27799            unsafe { Some(self.table.get_mut(4)?.take_unchecked()) }
27800        }
27801
27802        pub fn availability(&self) -> ::core::option::Option<&crate::wire::Availability> {
27803            unsafe { Some(self.table.get(5)?.deref_unchecked()) }
27804        }
27805
27806        pub fn take_availability(&mut self) -> ::core::option::Option<crate::wire::Availability> {
27807            unsafe { Some(self.table.get_mut(5)?.take_unchecked()) }
27808        }
27809
27810        pub fn filter(
27811            &self,
27812        ) -> ::core::option::Option<&::fidl_next_common_fuchsia_data::wire::Dictionary<'de>>
27813        {
27814            unsafe { Some(self.table.get(6)?.deref_unchecked()) }
27815        }
27816
27817        pub fn take_filter(
27818            &mut self,
27819        ) -> ::core::option::Option<::fidl_next_common_fuchsia_data::wire::Dictionary<'de>>
27820        {
27821            unsafe { Some(self.table.get_mut(6)?.take_unchecked()) }
27822        }
27823    }
27824
27825    impl<'de> ::core::fmt::Debug for UseEventStream<'de> {
27826        fn fmt(
27827            &self,
27828            f: &mut ::core::fmt::Formatter<'_>,
27829        ) -> ::core::result::Result<(), ::core::fmt::Error> {
27830            f.debug_struct("UseEventStream")
27831                .field("source_name", &self.source_name())
27832                .field("source", &self.source())
27833                .field("scope", &self.scope())
27834                .field("target_path", &self.target_path())
27835                .field("availability", &self.availability())
27836                .field("filter", &self.filter())
27837                .finish()
27838        }
27839    }
27840
27841    impl<'de> ::fidl_next::IntoNatural for UseEventStream<'de> {
27842        type Natural = crate::natural::UseEventStream;
27843    }
27844
27845    /// The wire type corresponding to [`UseRunner`].
27846    #[repr(C)]
27847    pub struct UseRunner<'de> {
27848        pub(crate) table: ::fidl_next::wire::Table<'de>,
27849    }
27850
27851    impl<'de> Drop for UseRunner<'de> {
27852        fn drop(&mut self) {
27853            let _ = self
27854                .table
27855                .get(1)
27856                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
27857
27858            let _ = self.table.get(2).map(|envelope| unsafe {
27859                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
27860            });
27861
27862            let _ = self.table.get(3).map(|envelope| unsafe {
27863                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
27864            });
27865        }
27866    }
27867
27868    impl ::fidl_next::Constrained for UseRunner<'_> {
27869        type Constraint = ();
27870
27871        fn validate(
27872            _: ::fidl_next::Slot<'_, Self>,
27873            _: Self::Constraint,
27874        ) -> Result<(), ::fidl_next::ValidationError> {
27875            Ok(())
27876        }
27877    }
27878
27879    unsafe impl ::fidl_next::Wire for UseRunner<'static> {
27880        type Narrowed<'de> = UseRunner<'de>;
27881
27882        #[inline]
27883        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
27884            ::fidl_next::munge!(let Self { table } = out);
27885            ::fidl_next::wire::Table::zero_padding(table);
27886        }
27887    }
27888
27889    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for UseRunner<'de>
27890    where
27891        ___D: ::fidl_next::Decoder<'de> + ?Sized,
27892    {
27893        fn decode(
27894            slot: ::fidl_next::Slot<'_, Self>,
27895            decoder: &mut ___D,
27896            _: (),
27897        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
27898            ::fidl_next::munge!(let Self { table } = slot);
27899
27900            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
27901                match ordinal {
27902                    0 => unsafe { ::core::hint::unreachable_unchecked() },
27903
27904                    1 => {
27905                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
27906                            slot.as_mut(),
27907                            decoder,
27908                            (),
27909                        )?;
27910
27911                        Ok(())
27912                    }
27913
27914                    2 => {
27915                        ::fidl_next::wire::Envelope::decode_as::<
27916                            ___D,
27917                            ::fidl_next::wire::String<'de>,
27918                        >(slot.as_mut(), decoder, 100)?;
27919
27920                        let value = unsafe {
27921                            slot.deref_unchecked()
27922                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
27923                        };
27924
27925                        if value.len() > 100 {
27926                            return Err(::fidl_next::DecodeError::VectorTooLong {
27927                                size: value.len() as u64,
27928                                limit: 100,
27929                            });
27930                        }
27931
27932                        Ok(())
27933                    }
27934
27935                    3 => {
27936                        ::fidl_next::wire::Envelope::decode_as::<
27937                            ___D,
27938                            ::fidl_next::wire::String<'de>,
27939                        >(slot.as_mut(), decoder, 1024)?;
27940
27941                        let value = unsafe {
27942                            slot.deref_unchecked()
27943                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
27944                        };
27945
27946                        if value.len() > 1024 {
27947                            return Err(::fidl_next::DecodeError::VectorTooLong {
27948                                size: value.len() as u64,
27949                                limit: 1024,
27950                            });
27951                        }
27952
27953                        Ok(())
27954                    }
27955
27956                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
27957                }
27958            })
27959        }
27960    }
27961
27962    impl<'de> UseRunner<'de> {
27963        pub fn source(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
27964            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
27965        }
27966
27967        pub fn take_source(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
27968            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
27969        }
27970
27971        pub fn source_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
27972            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
27973        }
27974
27975        pub fn take_source_name(
27976            &mut self,
27977        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
27978            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
27979        }
27980
27981        pub fn source_dictionary(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
27982            unsafe { Some(self.table.get(3)?.deref_unchecked()) }
27983        }
27984
27985        pub fn take_source_dictionary(
27986            &mut self,
27987        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
27988            unsafe { Some(self.table.get_mut(3)?.take_unchecked()) }
27989        }
27990    }
27991
27992    impl<'de> ::core::fmt::Debug for UseRunner<'de> {
27993        fn fmt(
27994            &self,
27995            f: &mut ::core::fmt::Formatter<'_>,
27996        ) -> ::core::result::Result<(), ::core::fmt::Error> {
27997            f.debug_struct("UseRunner")
27998                .field("source", &self.source())
27999                .field("source_name", &self.source_name())
28000                .field("source_dictionary", &self.source_dictionary())
28001                .finish()
28002        }
28003    }
28004
28005    impl<'de> ::fidl_next::IntoNatural for UseRunner<'de> {
28006        type Natural = crate::natural::UseRunner;
28007    }
28008
28009    /// The wire type corresponding to [`UseConfiguration`].
28010    #[repr(C)]
28011    pub struct UseConfiguration<'de> {
28012        pub(crate) table: ::fidl_next::wire::Table<'de>,
28013    }
28014
28015    impl<'de> Drop for UseConfiguration<'de> {
28016        fn drop(&mut self) {
28017            let _ = self
28018                .table
28019                .get(1)
28020                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
28021
28022            let _ = self.table.get(2).map(|envelope| unsafe {
28023                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
28024            });
28025
28026            let _ = self.table.get(3).map(|envelope| unsafe {
28027                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
28028            });
28029
28030            let _ = self
28031                .table
28032                .get(4)
28033                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Availability>() });
28034
28035            let _ = self.table.get(5).map(|envelope| unsafe {
28036                envelope.read_unchecked::<crate::wire::ConfigType<'de>>()
28037            });
28038
28039            let _ = self.table.get(6).map(|envelope| unsafe {
28040                envelope.read_unchecked::<crate::wire::ConfigValue<'de>>()
28041            });
28042
28043            let _ = self.table.get(7).map(|envelope| unsafe {
28044                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
28045            });
28046        }
28047    }
28048
28049    impl ::fidl_next::Constrained for UseConfiguration<'_> {
28050        type Constraint = ();
28051
28052        fn validate(
28053            _: ::fidl_next::Slot<'_, Self>,
28054            _: Self::Constraint,
28055        ) -> Result<(), ::fidl_next::ValidationError> {
28056            Ok(())
28057        }
28058    }
28059
28060    unsafe impl ::fidl_next::Wire for UseConfiguration<'static> {
28061        type Narrowed<'de> = UseConfiguration<'de>;
28062
28063        #[inline]
28064        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
28065            ::fidl_next::munge!(let Self { table } = out);
28066            ::fidl_next::wire::Table::zero_padding(table);
28067        }
28068    }
28069
28070    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for UseConfiguration<'de>
28071    where
28072        ___D: ::fidl_next::Decoder<'de> + ?Sized,
28073    {
28074        fn decode(
28075            slot: ::fidl_next::Slot<'_, Self>,
28076            decoder: &mut ___D,
28077            _: (),
28078        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
28079            ::fidl_next::munge!(let Self { table } = slot);
28080
28081            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
28082                match ordinal {
28083                    0 => unsafe { ::core::hint::unreachable_unchecked() },
28084
28085                    1 => {
28086                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
28087                            slot.as_mut(),
28088                            decoder,
28089                            (),
28090                        )?;
28091
28092                        Ok(())
28093                    }
28094
28095                    2 => {
28096                        ::fidl_next::wire::Envelope::decode_as::<
28097                            ___D,
28098                            ::fidl_next::wire::String<'de>,
28099                        >(slot.as_mut(), decoder, 100)?;
28100
28101                        let value = unsafe {
28102                            slot.deref_unchecked()
28103                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
28104                        };
28105
28106                        if value.len() > 100 {
28107                            return Err(::fidl_next::DecodeError::VectorTooLong {
28108                                size: value.len() as u64,
28109                                limit: 100,
28110                            });
28111                        }
28112
28113                        Ok(())
28114                    }
28115
28116                    3 => {
28117                        ::fidl_next::wire::Envelope::decode_as::<
28118                            ___D,
28119                            ::fidl_next::wire::String<'de>,
28120                        >(slot.as_mut(), decoder, 100)?;
28121
28122                        let value = unsafe {
28123                            slot.deref_unchecked()
28124                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
28125                        };
28126
28127                        if value.len() > 100 {
28128                            return Err(::fidl_next::DecodeError::VectorTooLong {
28129                                size: value.len() as u64,
28130                                limit: 100,
28131                            });
28132                        }
28133
28134                        Ok(())
28135                    }
28136
28137                    4 => {
28138                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Availability>(
28139                            slot.as_mut(),
28140                            decoder,
28141                            (),
28142                        )?;
28143
28144                        Ok(())
28145                    }
28146
28147                    5 => {
28148                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::ConfigType<'de>>(
28149                            slot.as_mut(),
28150                            decoder,
28151                            (),
28152                        )?;
28153
28154                        Ok(())
28155                    }
28156
28157                    6 => {
28158                        ::fidl_next::wire::Envelope::decode_as::<
28159                            ___D,
28160                            crate::wire::ConfigValue<'de>,
28161                        >(slot.as_mut(), decoder, ())?;
28162
28163                        Ok(())
28164                    }
28165
28166                    7 => {
28167                        ::fidl_next::wire::Envelope::decode_as::<
28168                            ___D,
28169                            ::fidl_next::wire::String<'de>,
28170                        >(slot.as_mut(), decoder, 1024)?;
28171
28172                        let value = unsafe {
28173                            slot.deref_unchecked()
28174                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
28175                        };
28176
28177                        if value.len() > 1024 {
28178                            return Err(::fidl_next::DecodeError::VectorTooLong {
28179                                size: value.len() as u64,
28180                                limit: 1024,
28181                            });
28182                        }
28183
28184                        Ok(())
28185                    }
28186
28187                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
28188                }
28189            })
28190        }
28191    }
28192
28193    impl<'de> UseConfiguration<'de> {
28194        pub fn source(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
28195            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
28196        }
28197
28198        pub fn take_source(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
28199            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
28200        }
28201
28202        pub fn source_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
28203            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
28204        }
28205
28206        pub fn take_source_name(
28207            &mut self,
28208        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
28209            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
28210        }
28211
28212        pub fn target_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
28213            unsafe { Some(self.table.get(3)?.deref_unchecked()) }
28214        }
28215
28216        pub fn take_target_name(
28217            &mut self,
28218        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
28219            unsafe { Some(self.table.get_mut(3)?.take_unchecked()) }
28220        }
28221
28222        pub fn availability(&self) -> ::core::option::Option<&crate::wire::Availability> {
28223            unsafe { Some(self.table.get(4)?.deref_unchecked()) }
28224        }
28225
28226        pub fn take_availability(&mut self) -> ::core::option::Option<crate::wire::Availability> {
28227            unsafe { Some(self.table.get_mut(4)?.take_unchecked()) }
28228        }
28229
28230        pub fn type_(&self) -> ::core::option::Option<&crate::wire::ConfigType<'de>> {
28231            unsafe { Some(self.table.get(5)?.deref_unchecked()) }
28232        }
28233
28234        pub fn take_type_(&mut self) -> ::core::option::Option<crate::wire::ConfigType<'de>> {
28235            unsafe { Some(self.table.get_mut(5)?.take_unchecked()) }
28236        }
28237
28238        pub fn default(&self) -> ::core::option::Option<&crate::wire::ConfigValue<'de>> {
28239            unsafe { Some(self.table.get(6)?.deref_unchecked()) }
28240        }
28241
28242        pub fn take_default(&mut self) -> ::core::option::Option<crate::wire::ConfigValue<'de>> {
28243            unsafe { Some(self.table.get_mut(6)?.take_unchecked()) }
28244        }
28245
28246        pub fn source_dictionary(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
28247            unsafe { Some(self.table.get(7)?.deref_unchecked()) }
28248        }
28249
28250        pub fn take_source_dictionary(
28251            &mut self,
28252        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
28253            unsafe { Some(self.table.get_mut(7)?.take_unchecked()) }
28254        }
28255    }
28256
28257    impl<'de> ::core::fmt::Debug for UseConfiguration<'de> {
28258        fn fmt(
28259            &self,
28260            f: &mut ::core::fmt::Formatter<'_>,
28261        ) -> ::core::result::Result<(), ::core::fmt::Error> {
28262            f.debug_struct("UseConfiguration")
28263                .field("source", &self.source())
28264                .field("source_name", &self.source_name())
28265                .field("target_name", &self.target_name())
28266                .field("availability", &self.availability())
28267                .field("type_", &self.type_())
28268                .field("default", &self.default())
28269                .field("source_dictionary", &self.source_dictionary())
28270                .finish()
28271        }
28272    }
28273
28274    impl<'de> ::fidl_next::IntoNatural for UseConfiguration<'de> {
28275        type Natural = crate::natural::UseConfiguration;
28276    }
28277
28278    /// The wire type corresponding to [`UseDictionary`].
28279    #[repr(C)]
28280    pub struct UseDictionary<'de> {
28281        pub(crate) table: ::fidl_next::wire::Table<'de>,
28282    }
28283
28284    impl<'de> Drop for UseDictionary<'de> {
28285        fn drop(&mut self) {
28286            let _ = self
28287                .table
28288                .get(1)
28289                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
28290
28291            let _ = self.table.get(2).map(|envelope| unsafe {
28292                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
28293            });
28294
28295            let _ = self.table.get(3).map(|envelope| unsafe {
28296                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
28297            });
28298
28299            let _ = self.table.get(6).map(|envelope| unsafe {
28300                envelope.read_unchecked::<crate::wire::DependencyType>()
28301            });
28302
28303            let _ = self
28304                .table
28305                .get(7)
28306                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Availability>() });
28307
28308            let _ = self.table.get(8).map(|envelope| unsafe {
28309                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
28310            });
28311        }
28312    }
28313
28314    impl ::fidl_next::Constrained for UseDictionary<'_> {
28315        type Constraint = ();
28316
28317        fn validate(
28318            _: ::fidl_next::Slot<'_, Self>,
28319            _: Self::Constraint,
28320        ) -> Result<(), ::fidl_next::ValidationError> {
28321            Ok(())
28322        }
28323    }
28324
28325    unsafe impl ::fidl_next::Wire for UseDictionary<'static> {
28326        type Narrowed<'de> = UseDictionary<'de>;
28327
28328        #[inline]
28329        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
28330            ::fidl_next::munge!(let Self { table } = out);
28331            ::fidl_next::wire::Table::zero_padding(table);
28332        }
28333    }
28334
28335    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for UseDictionary<'de>
28336    where
28337        ___D: ::fidl_next::Decoder<'de> + ?Sized,
28338    {
28339        fn decode(
28340            slot: ::fidl_next::Slot<'_, Self>,
28341            decoder: &mut ___D,
28342            _: (),
28343        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
28344            ::fidl_next::munge!(let Self { table } = slot);
28345
28346            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
28347                match ordinal {
28348                    0 => unsafe { ::core::hint::unreachable_unchecked() },
28349
28350                    1 => {
28351                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
28352                            slot.as_mut(),
28353                            decoder,
28354                            (),
28355                        )?;
28356
28357                        Ok(())
28358                    }
28359
28360                    2 => {
28361                        ::fidl_next::wire::Envelope::decode_as::<
28362                            ___D,
28363                            ::fidl_next::wire::String<'de>,
28364                        >(slot.as_mut(), decoder, 100)?;
28365
28366                        let value = unsafe {
28367                            slot.deref_unchecked()
28368                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
28369                        };
28370
28371                        if value.len() > 100 {
28372                            return Err(::fidl_next::DecodeError::VectorTooLong {
28373                                size: value.len() as u64,
28374                                limit: 100,
28375                            });
28376                        }
28377
28378                        Ok(())
28379                    }
28380
28381                    3 => {
28382                        ::fidl_next::wire::Envelope::decode_as::<
28383                            ___D,
28384                            ::fidl_next::wire::String<'de>,
28385                        >(slot.as_mut(), decoder, 1024)?;
28386
28387                        let value = unsafe {
28388                            slot.deref_unchecked()
28389                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
28390                        };
28391
28392                        if value.len() > 1024 {
28393                            return Err(::fidl_next::DecodeError::VectorTooLong {
28394                                size: value.len() as u64,
28395                                limit: 1024,
28396                            });
28397                        }
28398
28399                        Ok(())
28400                    }
28401
28402                    6 => {
28403                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::DependencyType>(
28404                            slot.as_mut(),
28405                            decoder,
28406                            (),
28407                        )?;
28408
28409                        Ok(())
28410                    }
28411
28412                    7 => {
28413                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Availability>(
28414                            slot.as_mut(),
28415                            decoder,
28416                            (),
28417                        )?;
28418
28419                        Ok(())
28420                    }
28421
28422                    8 => {
28423                        ::fidl_next::wire::Envelope::decode_as::<
28424                            ___D,
28425                            ::fidl_next::wire::String<'de>,
28426                        >(slot.as_mut(), decoder, 1024)?;
28427
28428                        let value = unsafe {
28429                            slot.deref_unchecked()
28430                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
28431                        };
28432
28433                        if value.len() > 1024 {
28434                            return Err(::fidl_next::DecodeError::VectorTooLong {
28435                                size: value.len() as u64,
28436                                limit: 1024,
28437                            });
28438                        }
28439
28440                        Ok(())
28441                    }
28442
28443                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
28444                }
28445            })
28446        }
28447    }
28448
28449    impl<'de> UseDictionary<'de> {
28450        pub fn source(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
28451            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
28452        }
28453
28454        pub fn take_source(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
28455            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
28456        }
28457
28458        pub fn source_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
28459            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
28460        }
28461
28462        pub fn take_source_name(
28463            &mut self,
28464        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
28465            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
28466        }
28467
28468        pub fn target_path(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
28469            unsafe { Some(self.table.get(3)?.deref_unchecked()) }
28470        }
28471
28472        pub fn take_target_path(
28473            &mut self,
28474        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
28475            unsafe { Some(self.table.get_mut(3)?.take_unchecked()) }
28476        }
28477
28478        pub fn dependency_type(&self) -> ::core::option::Option<&crate::wire::DependencyType> {
28479            unsafe { Some(self.table.get(6)?.deref_unchecked()) }
28480        }
28481
28482        pub fn take_dependency_type(
28483            &mut self,
28484        ) -> ::core::option::Option<crate::wire::DependencyType> {
28485            unsafe { Some(self.table.get_mut(6)?.take_unchecked()) }
28486        }
28487
28488        pub fn availability(&self) -> ::core::option::Option<&crate::wire::Availability> {
28489            unsafe { Some(self.table.get(7)?.deref_unchecked()) }
28490        }
28491
28492        pub fn take_availability(&mut self) -> ::core::option::Option<crate::wire::Availability> {
28493            unsafe { Some(self.table.get_mut(7)?.take_unchecked()) }
28494        }
28495
28496        pub fn source_dictionary(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
28497            unsafe { Some(self.table.get(8)?.deref_unchecked()) }
28498        }
28499
28500        pub fn take_source_dictionary(
28501            &mut self,
28502        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
28503            unsafe { Some(self.table.get_mut(8)?.take_unchecked()) }
28504        }
28505    }
28506
28507    impl<'de> ::core::fmt::Debug for UseDictionary<'de> {
28508        fn fmt(
28509            &self,
28510            f: &mut ::core::fmt::Formatter<'_>,
28511        ) -> ::core::result::Result<(), ::core::fmt::Error> {
28512            f.debug_struct("UseDictionary")
28513                .field("source", &self.source())
28514                .field("source_name", &self.source_name())
28515                .field("target_path", &self.target_path())
28516                .field("dependency_type", &self.dependency_type())
28517                .field("availability", &self.availability())
28518                .field("source_dictionary", &self.source_dictionary())
28519                .finish()
28520        }
28521    }
28522
28523    impl<'de> ::fidl_next::IntoNatural for UseDictionary<'de> {
28524        type Natural = crate::natural::UseDictionary;
28525    }
28526
28527    /// The wire type corresponding to [`Use`].
28528    #[repr(transparent)]
28529    pub struct Use<'de> {
28530        pub(crate) raw: ::fidl_next::wire::Union,
28531        pub(crate) _phantom: ::core::marker::PhantomData<&'de mut [::fidl_next::Chunk]>,
28532    }
28533
28534    impl<'de> Drop for Use<'de> {
28535        fn drop(&mut self) {
28536            match self.raw.ordinal() {
28537                1 => {
28538                    let _ =
28539                        unsafe { self.raw.get().read_unchecked::<crate::wire::UseService<'de>>() };
28540                }
28541
28542                2 => {
28543                    let _ =
28544                        unsafe { self.raw.get().read_unchecked::<crate::wire::UseProtocol<'de>>() };
28545                }
28546
28547                3 => {
28548                    let _ = unsafe {
28549                        self.raw.get().read_unchecked::<crate::wire::UseDirectory<'de>>()
28550                    };
28551                }
28552
28553                4 => {
28554                    let _ =
28555                        unsafe { self.raw.get().read_unchecked::<crate::wire::UseStorage<'de>>() };
28556                }
28557
28558                7 => {
28559                    let _ = unsafe {
28560                        self.raw.get().read_unchecked::<crate::wire::UseEventStream<'de>>()
28561                    };
28562                }
28563
28564                8 => {
28565                    let _ =
28566                        unsafe { self.raw.get().read_unchecked::<crate::wire::UseRunner<'de>>() };
28567                }
28568
28569                9 => {
28570                    let _ = unsafe {
28571                        self.raw.get().read_unchecked::<crate::wire::UseConfiguration<'de>>()
28572                    };
28573                }
28574
28575                10 => {
28576                    let _ = unsafe {
28577                        self.raw.get().read_unchecked::<crate::wire::UseDictionary<'de>>()
28578                    };
28579                }
28580
28581                _ => (),
28582            }
28583        }
28584    }
28585
28586    impl ::fidl_next::Constrained for Use<'_> {
28587        type Constraint = ();
28588
28589        fn validate(
28590            _: ::fidl_next::Slot<'_, Self>,
28591            _: Self::Constraint,
28592        ) -> Result<(), ::fidl_next::ValidationError> {
28593            Ok(())
28594        }
28595    }
28596
28597    unsafe impl ::fidl_next::Wire for Use<'static> {
28598        type Narrowed<'de> = Use<'de>;
28599
28600        #[inline]
28601        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
28602            ::fidl_next::munge!(let Self { raw, _phantom: _ } = out);
28603            ::fidl_next::wire::Union::zero_padding(raw);
28604        }
28605    }
28606
28607    pub mod use_ {
28608        pub enum Ref<'de> {
28609            Service(&'de crate::wire::UseService<'de>),
28610
28611            Protocol(&'de crate::wire::UseProtocol<'de>),
28612
28613            Directory(&'de crate::wire::UseDirectory<'de>),
28614
28615            Storage(&'de crate::wire::UseStorage<'de>),
28616
28617            EventStream(&'de crate::wire::UseEventStream<'de>),
28618
28619            Runner(&'de crate::wire::UseRunner<'de>),
28620
28621            Config(&'de crate::wire::UseConfiguration<'de>),
28622
28623            Dictionary(&'de crate::wire::UseDictionary<'de>),
28624
28625            UnknownOrdinal_(u64),
28626        }
28627
28628        pub enum Value<'de> {
28629            Service(crate::wire::UseService<'de>),
28630
28631            Protocol(crate::wire::UseProtocol<'de>),
28632
28633            Directory(crate::wire::UseDirectory<'de>),
28634
28635            Storage(crate::wire::UseStorage<'de>),
28636
28637            EventStream(crate::wire::UseEventStream<'de>),
28638
28639            Runner(crate::wire::UseRunner<'de>),
28640
28641            Config(crate::wire::UseConfiguration<'de>),
28642
28643            Dictionary(crate::wire::UseDictionary<'de>),
28644
28645            UnknownOrdinal_(u64),
28646        }
28647    }
28648
28649    impl<'de> Use<'de> {
28650        pub fn as_ref(&self) -> crate::wire::use_::Ref<'_> {
28651            match self.raw.ordinal() {
28652                1 => crate::wire::use_::Ref::Service(unsafe {
28653                    self.raw.get().deref_unchecked::<crate::wire::UseService<'_>>()
28654                }),
28655
28656                2 => crate::wire::use_::Ref::Protocol(unsafe {
28657                    self.raw.get().deref_unchecked::<crate::wire::UseProtocol<'_>>()
28658                }),
28659
28660                3 => crate::wire::use_::Ref::Directory(unsafe {
28661                    self.raw.get().deref_unchecked::<crate::wire::UseDirectory<'_>>()
28662                }),
28663
28664                4 => crate::wire::use_::Ref::Storage(unsafe {
28665                    self.raw.get().deref_unchecked::<crate::wire::UseStorage<'_>>()
28666                }),
28667
28668                7 => crate::wire::use_::Ref::EventStream(unsafe {
28669                    self.raw.get().deref_unchecked::<crate::wire::UseEventStream<'_>>()
28670                }),
28671
28672                8 => crate::wire::use_::Ref::Runner(unsafe {
28673                    self.raw.get().deref_unchecked::<crate::wire::UseRunner<'_>>()
28674                }),
28675
28676                9 => crate::wire::use_::Ref::Config(unsafe {
28677                    self.raw.get().deref_unchecked::<crate::wire::UseConfiguration<'_>>()
28678                }),
28679
28680                10 => crate::wire::use_::Ref::Dictionary(unsafe {
28681                    self.raw.get().deref_unchecked::<crate::wire::UseDictionary<'_>>()
28682                }),
28683
28684                unknown => crate::wire::use_::Ref::UnknownOrdinal_(unknown),
28685            }
28686        }
28687
28688        pub fn into_inner(self) -> crate::wire::use_::Value<'de> {
28689            let this = ::core::mem::ManuallyDrop::new(self);
28690
28691            match this.raw.ordinal() {
28692                1 => crate::wire::use_::Value::Service(unsafe {
28693                    this.raw.get().read_unchecked::<crate::wire::UseService<'de>>()
28694                }),
28695
28696                2 => crate::wire::use_::Value::Protocol(unsafe {
28697                    this.raw.get().read_unchecked::<crate::wire::UseProtocol<'de>>()
28698                }),
28699
28700                3 => crate::wire::use_::Value::Directory(unsafe {
28701                    this.raw.get().read_unchecked::<crate::wire::UseDirectory<'de>>()
28702                }),
28703
28704                4 => crate::wire::use_::Value::Storage(unsafe {
28705                    this.raw.get().read_unchecked::<crate::wire::UseStorage<'de>>()
28706                }),
28707
28708                7 => crate::wire::use_::Value::EventStream(unsafe {
28709                    this.raw.get().read_unchecked::<crate::wire::UseEventStream<'de>>()
28710                }),
28711
28712                8 => crate::wire::use_::Value::Runner(unsafe {
28713                    this.raw.get().read_unchecked::<crate::wire::UseRunner<'de>>()
28714                }),
28715
28716                9 => crate::wire::use_::Value::Config(unsafe {
28717                    this.raw.get().read_unchecked::<crate::wire::UseConfiguration<'de>>()
28718                }),
28719
28720                10 => crate::wire::use_::Value::Dictionary(unsafe {
28721                    this.raw.get().read_unchecked::<crate::wire::UseDictionary<'de>>()
28722                }),
28723
28724                unknown => crate::wire::use_::Value::UnknownOrdinal_(unknown),
28725            }
28726        }
28727    }
28728
28729    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for Use<'de>
28730    where
28731        ___D: ::fidl_next::decoder::InternalHandleDecoder + ?Sized,
28732        ___D: ::fidl_next::Decoder<'de>,
28733    {
28734        fn decode(
28735            mut slot: ::fidl_next::Slot<'_, Self>,
28736            decoder: &mut ___D,
28737            _: (),
28738        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
28739            ::fidl_next::munge!(let Self { mut raw, _phantom: _ } = slot.as_mut());
28740            match ::fidl_next::wire::Union::encoded_ordinal(raw.as_mut()) {
28741                1 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::UseService<'de>>(
28742                    raw,
28743                    decoder,
28744                    (),
28745                )?,
28746
28747                2 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::UseProtocol<'de>>(
28748                    raw,
28749                    decoder,
28750                    (),
28751                )?,
28752
28753                3 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::UseDirectory<'de>>(
28754                    raw,
28755                    decoder,
28756                    (),
28757                )?,
28758
28759                4 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::UseStorage<'de>>(
28760                    raw,
28761                    decoder,
28762                    (),
28763                )?,
28764
28765                7 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::UseEventStream<'de>>(
28766                    raw,
28767                    decoder,
28768                    (),
28769                )?,
28770
28771                8 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::UseRunner<'de>>(
28772                    raw,
28773                    decoder,
28774                    (),
28775                )?,
28776
28777                9 => {
28778                    ::fidl_next::wire::Union::decode_as::<___D, crate::wire::UseConfiguration<'de>>(
28779                        raw,
28780                        decoder,
28781                        (),
28782                    )?
28783                }
28784
28785                10 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::UseDictionary<'de>>(
28786                    raw,
28787                    decoder,
28788                    (),
28789                )?,
28790
28791                _ => ::fidl_next::wire::Union::decode_unknown(raw, decoder)?,
28792            }
28793
28794            Ok(())
28795        }
28796    }
28797
28798    impl<'de> ::core::fmt::Debug for Use<'de> {
28799        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
28800            match self.raw.ordinal() {
28801                1 => unsafe {
28802                    self.raw.get().deref_unchecked::<crate::wire::UseService<'_>>().fmt(f)
28803                },
28804                2 => unsafe {
28805                    self.raw.get().deref_unchecked::<crate::wire::UseProtocol<'_>>().fmt(f)
28806                },
28807                3 => unsafe {
28808                    self.raw.get().deref_unchecked::<crate::wire::UseDirectory<'_>>().fmt(f)
28809                },
28810                4 => unsafe {
28811                    self.raw.get().deref_unchecked::<crate::wire::UseStorage<'_>>().fmt(f)
28812                },
28813                7 => unsafe {
28814                    self.raw.get().deref_unchecked::<crate::wire::UseEventStream<'_>>().fmt(f)
28815                },
28816                8 => unsafe {
28817                    self.raw.get().deref_unchecked::<crate::wire::UseRunner<'_>>().fmt(f)
28818                },
28819                9 => unsafe {
28820                    self.raw.get().deref_unchecked::<crate::wire::UseConfiguration<'_>>().fmt(f)
28821                },
28822                10 => unsafe {
28823                    self.raw.get().deref_unchecked::<crate::wire::UseDictionary<'_>>().fmt(f)
28824                },
28825                _ => unsafe { ::core::hint::unreachable_unchecked() },
28826            }
28827        }
28828    }
28829
28830    impl<'de> ::fidl_next::IntoNatural for Use<'de> {
28831        type Natural = crate::natural::Use;
28832    }
28833
28834    /// The wire type corresponding to [`ExposeService`].
28835    #[repr(C)]
28836    pub struct ExposeService<'de> {
28837        pub(crate) table: ::fidl_next::wire::Table<'de>,
28838    }
28839
28840    impl<'de> Drop for ExposeService<'de> {
28841        fn drop(&mut self) {
28842            let _ = self
28843                .table
28844                .get(1)
28845                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
28846
28847            let _ = self.table.get(2).map(|envelope| unsafe {
28848                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
28849            });
28850
28851            let _ = self
28852                .table
28853                .get(3)
28854                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
28855
28856            let _ = self.table.get(4).map(|envelope| unsafe {
28857                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
28858            });
28859
28860            let _ = self
28861                .table
28862                .get(5)
28863                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Availability>() });
28864
28865            let _ = self.table.get(6).map(|envelope| unsafe {
28866                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
28867            });
28868        }
28869    }
28870
28871    impl ::fidl_next::Constrained for ExposeService<'_> {
28872        type Constraint = ();
28873
28874        fn validate(
28875            _: ::fidl_next::Slot<'_, Self>,
28876            _: Self::Constraint,
28877        ) -> Result<(), ::fidl_next::ValidationError> {
28878            Ok(())
28879        }
28880    }
28881
28882    unsafe impl ::fidl_next::Wire for ExposeService<'static> {
28883        type Narrowed<'de> = ExposeService<'de>;
28884
28885        #[inline]
28886        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
28887            ::fidl_next::munge!(let Self { table } = out);
28888            ::fidl_next::wire::Table::zero_padding(table);
28889        }
28890    }
28891
28892    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for ExposeService<'de>
28893    where
28894        ___D: ::fidl_next::Decoder<'de> + ?Sized,
28895    {
28896        fn decode(
28897            slot: ::fidl_next::Slot<'_, Self>,
28898            decoder: &mut ___D,
28899            _: (),
28900        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
28901            ::fidl_next::munge!(let Self { table } = slot);
28902
28903            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
28904                match ordinal {
28905                    0 => unsafe { ::core::hint::unreachable_unchecked() },
28906
28907                    1 => {
28908                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
28909                            slot.as_mut(),
28910                            decoder,
28911                            (),
28912                        )?;
28913
28914                        Ok(())
28915                    }
28916
28917                    2 => {
28918                        ::fidl_next::wire::Envelope::decode_as::<
28919                            ___D,
28920                            ::fidl_next::wire::String<'de>,
28921                        >(slot.as_mut(), decoder, 100)?;
28922
28923                        let value = unsafe {
28924                            slot.deref_unchecked()
28925                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
28926                        };
28927
28928                        if value.len() > 100 {
28929                            return Err(::fidl_next::DecodeError::VectorTooLong {
28930                                size: value.len() as u64,
28931                                limit: 100,
28932                            });
28933                        }
28934
28935                        Ok(())
28936                    }
28937
28938                    3 => {
28939                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
28940                            slot.as_mut(),
28941                            decoder,
28942                            (),
28943                        )?;
28944
28945                        Ok(())
28946                    }
28947
28948                    4 => {
28949                        ::fidl_next::wire::Envelope::decode_as::<
28950                            ___D,
28951                            ::fidl_next::wire::String<'de>,
28952                        >(slot.as_mut(), decoder, 100)?;
28953
28954                        let value = unsafe {
28955                            slot.deref_unchecked()
28956                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
28957                        };
28958
28959                        if value.len() > 100 {
28960                            return Err(::fidl_next::DecodeError::VectorTooLong {
28961                                size: value.len() as u64,
28962                                limit: 100,
28963                            });
28964                        }
28965
28966                        Ok(())
28967                    }
28968
28969                    5 => {
28970                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Availability>(
28971                            slot.as_mut(),
28972                            decoder,
28973                            (),
28974                        )?;
28975
28976                        Ok(())
28977                    }
28978
28979                    6 => {
28980                        ::fidl_next::wire::Envelope::decode_as::<
28981                            ___D,
28982                            ::fidl_next::wire::String<'de>,
28983                        >(slot.as_mut(), decoder, 1024)?;
28984
28985                        let value = unsafe {
28986                            slot.deref_unchecked()
28987                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
28988                        };
28989
28990                        if value.len() > 1024 {
28991                            return Err(::fidl_next::DecodeError::VectorTooLong {
28992                                size: value.len() as u64,
28993                                limit: 1024,
28994                            });
28995                        }
28996
28997                        Ok(())
28998                    }
28999
29000                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
29001                }
29002            })
29003        }
29004    }
29005
29006    impl<'de> ExposeService<'de> {
29007        pub fn source(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
29008            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
29009        }
29010
29011        pub fn take_source(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
29012            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
29013        }
29014
29015        pub fn source_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
29016            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
29017        }
29018
29019        pub fn take_source_name(
29020            &mut self,
29021        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
29022            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
29023        }
29024
29025        pub fn target(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
29026            unsafe { Some(self.table.get(3)?.deref_unchecked()) }
29027        }
29028
29029        pub fn take_target(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
29030            unsafe { Some(self.table.get_mut(3)?.take_unchecked()) }
29031        }
29032
29033        pub fn target_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
29034            unsafe { Some(self.table.get(4)?.deref_unchecked()) }
29035        }
29036
29037        pub fn take_target_name(
29038            &mut self,
29039        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
29040            unsafe { Some(self.table.get_mut(4)?.take_unchecked()) }
29041        }
29042
29043        pub fn availability(&self) -> ::core::option::Option<&crate::wire::Availability> {
29044            unsafe { Some(self.table.get(5)?.deref_unchecked()) }
29045        }
29046
29047        pub fn take_availability(&mut self) -> ::core::option::Option<crate::wire::Availability> {
29048            unsafe { Some(self.table.get_mut(5)?.take_unchecked()) }
29049        }
29050
29051        pub fn source_dictionary(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
29052            unsafe { Some(self.table.get(6)?.deref_unchecked()) }
29053        }
29054
29055        pub fn take_source_dictionary(
29056            &mut self,
29057        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
29058            unsafe { Some(self.table.get_mut(6)?.take_unchecked()) }
29059        }
29060    }
29061
29062    impl<'de> ::core::fmt::Debug for ExposeService<'de> {
29063        fn fmt(
29064            &self,
29065            f: &mut ::core::fmt::Formatter<'_>,
29066        ) -> ::core::result::Result<(), ::core::fmt::Error> {
29067            f.debug_struct("ExposeService")
29068                .field("source", &self.source())
29069                .field("source_name", &self.source_name())
29070                .field("target", &self.target())
29071                .field("target_name", &self.target_name())
29072                .field("availability", &self.availability())
29073                .field("source_dictionary", &self.source_dictionary())
29074                .finish()
29075        }
29076    }
29077
29078    impl<'de> ::fidl_next::IntoNatural for ExposeService<'de> {
29079        type Natural = crate::natural::ExposeService;
29080    }
29081
29082    /// The wire type corresponding to [`ExposeProtocol`].
29083    #[repr(C)]
29084    pub struct ExposeProtocol<'de> {
29085        pub(crate) table: ::fidl_next::wire::Table<'de>,
29086    }
29087
29088    impl<'de> Drop for ExposeProtocol<'de> {
29089        fn drop(&mut self) {
29090            let _ = self
29091                .table
29092                .get(1)
29093                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
29094
29095            let _ = self.table.get(2).map(|envelope| unsafe {
29096                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
29097            });
29098
29099            let _ = self
29100                .table
29101                .get(3)
29102                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
29103
29104            let _ = self.table.get(4).map(|envelope| unsafe {
29105                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
29106            });
29107
29108            let _ = self
29109                .table
29110                .get(5)
29111                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Availability>() });
29112
29113            let _ = self.table.get(6).map(|envelope| unsafe {
29114                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
29115            });
29116        }
29117    }
29118
29119    impl ::fidl_next::Constrained for ExposeProtocol<'_> {
29120        type Constraint = ();
29121
29122        fn validate(
29123            _: ::fidl_next::Slot<'_, Self>,
29124            _: Self::Constraint,
29125        ) -> Result<(), ::fidl_next::ValidationError> {
29126            Ok(())
29127        }
29128    }
29129
29130    unsafe impl ::fidl_next::Wire for ExposeProtocol<'static> {
29131        type Narrowed<'de> = ExposeProtocol<'de>;
29132
29133        #[inline]
29134        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
29135            ::fidl_next::munge!(let Self { table } = out);
29136            ::fidl_next::wire::Table::zero_padding(table);
29137        }
29138    }
29139
29140    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for ExposeProtocol<'de>
29141    where
29142        ___D: ::fidl_next::Decoder<'de> + ?Sized,
29143    {
29144        fn decode(
29145            slot: ::fidl_next::Slot<'_, Self>,
29146            decoder: &mut ___D,
29147            _: (),
29148        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
29149            ::fidl_next::munge!(let Self { table } = slot);
29150
29151            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
29152                match ordinal {
29153                    0 => unsafe { ::core::hint::unreachable_unchecked() },
29154
29155                    1 => {
29156                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
29157                            slot.as_mut(),
29158                            decoder,
29159                            (),
29160                        )?;
29161
29162                        Ok(())
29163                    }
29164
29165                    2 => {
29166                        ::fidl_next::wire::Envelope::decode_as::<
29167                            ___D,
29168                            ::fidl_next::wire::String<'de>,
29169                        >(slot.as_mut(), decoder, 100)?;
29170
29171                        let value = unsafe {
29172                            slot.deref_unchecked()
29173                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
29174                        };
29175
29176                        if value.len() > 100 {
29177                            return Err(::fidl_next::DecodeError::VectorTooLong {
29178                                size: value.len() as u64,
29179                                limit: 100,
29180                            });
29181                        }
29182
29183                        Ok(())
29184                    }
29185
29186                    3 => {
29187                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
29188                            slot.as_mut(),
29189                            decoder,
29190                            (),
29191                        )?;
29192
29193                        Ok(())
29194                    }
29195
29196                    4 => {
29197                        ::fidl_next::wire::Envelope::decode_as::<
29198                            ___D,
29199                            ::fidl_next::wire::String<'de>,
29200                        >(slot.as_mut(), decoder, 100)?;
29201
29202                        let value = unsafe {
29203                            slot.deref_unchecked()
29204                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
29205                        };
29206
29207                        if value.len() > 100 {
29208                            return Err(::fidl_next::DecodeError::VectorTooLong {
29209                                size: value.len() as u64,
29210                                limit: 100,
29211                            });
29212                        }
29213
29214                        Ok(())
29215                    }
29216
29217                    5 => {
29218                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Availability>(
29219                            slot.as_mut(),
29220                            decoder,
29221                            (),
29222                        )?;
29223
29224                        Ok(())
29225                    }
29226
29227                    6 => {
29228                        ::fidl_next::wire::Envelope::decode_as::<
29229                            ___D,
29230                            ::fidl_next::wire::String<'de>,
29231                        >(slot.as_mut(), decoder, 1024)?;
29232
29233                        let value = unsafe {
29234                            slot.deref_unchecked()
29235                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
29236                        };
29237
29238                        if value.len() > 1024 {
29239                            return Err(::fidl_next::DecodeError::VectorTooLong {
29240                                size: value.len() as u64,
29241                                limit: 1024,
29242                            });
29243                        }
29244
29245                        Ok(())
29246                    }
29247
29248                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
29249                }
29250            })
29251        }
29252    }
29253
29254    impl<'de> ExposeProtocol<'de> {
29255        pub fn source(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
29256            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
29257        }
29258
29259        pub fn take_source(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
29260            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
29261        }
29262
29263        pub fn source_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
29264            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
29265        }
29266
29267        pub fn take_source_name(
29268            &mut self,
29269        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
29270            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
29271        }
29272
29273        pub fn target(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
29274            unsafe { Some(self.table.get(3)?.deref_unchecked()) }
29275        }
29276
29277        pub fn take_target(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
29278            unsafe { Some(self.table.get_mut(3)?.take_unchecked()) }
29279        }
29280
29281        pub fn target_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
29282            unsafe { Some(self.table.get(4)?.deref_unchecked()) }
29283        }
29284
29285        pub fn take_target_name(
29286            &mut self,
29287        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
29288            unsafe { Some(self.table.get_mut(4)?.take_unchecked()) }
29289        }
29290
29291        pub fn availability(&self) -> ::core::option::Option<&crate::wire::Availability> {
29292            unsafe { Some(self.table.get(5)?.deref_unchecked()) }
29293        }
29294
29295        pub fn take_availability(&mut self) -> ::core::option::Option<crate::wire::Availability> {
29296            unsafe { Some(self.table.get_mut(5)?.take_unchecked()) }
29297        }
29298
29299        pub fn source_dictionary(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
29300            unsafe { Some(self.table.get(6)?.deref_unchecked()) }
29301        }
29302
29303        pub fn take_source_dictionary(
29304            &mut self,
29305        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
29306            unsafe { Some(self.table.get_mut(6)?.take_unchecked()) }
29307        }
29308    }
29309
29310    impl<'de> ::core::fmt::Debug for ExposeProtocol<'de> {
29311        fn fmt(
29312            &self,
29313            f: &mut ::core::fmt::Formatter<'_>,
29314        ) -> ::core::result::Result<(), ::core::fmt::Error> {
29315            f.debug_struct("ExposeProtocol")
29316                .field("source", &self.source())
29317                .field("source_name", &self.source_name())
29318                .field("target", &self.target())
29319                .field("target_name", &self.target_name())
29320                .field("availability", &self.availability())
29321                .field("source_dictionary", &self.source_dictionary())
29322                .finish()
29323        }
29324    }
29325
29326    impl<'de> ::fidl_next::IntoNatural for ExposeProtocol<'de> {
29327        type Natural = crate::natural::ExposeProtocol;
29328    }
29329
29330    /// The wire type corresponding to [`ExposeDirectory`].
29331    #[repr(C)]
29332    pub struct ExposeDirectory<'de> {
29333        pub(crate) table: ::fidl_next::wire::Table<'de>,
29334    }
29335
29336    impl<'de> Drop for ExposeDirectory<'de> {
29337        fn drop(&mut self) {
29338            let _ = self
29339                .table
29340                .get(1)
29341                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
29342
29343            let _ = self.table.get(2).map(|envelope| unsafe {
29344                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
29345            });
29346
29347            let _ = self
29348                .table
29349                .get(3)
29350                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
29351
29352            let _ = self.table.get(4).map(|envelope| unsafe {
29353                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
29354            });
29355
29356            let _ = self.table.get(5).map(|envelope| unsafe {
29357                envelope.read_unchecked::<::fidl_next_common_fuchsia_io::wire::Operations>()
29358            });
29359
29360            let _ = self.table.get(6).map(|envelope| unsafe {
29361                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
29362            });
29363
29364            let _ = self
29365                .table
29366                .get(7)
29367                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Availability>() });
29368
29369            let _ = self.table.get(8).map(|envelope| unsafe {
29370                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
29371            });
29372        }
29373    }
29374
29375    impl ::fidl_next::Constrained for ExposeDirectory<'_> {
29376        type Constraint = ();
29377
29378        fn validate(
29379            _: ::fidl_next::Slot<'_, Self>,
29380            _: Self::Constraint,
29381        ) -> Result<(), ::fidl_next::ValidationError> {
29382            Ok(())
29383        }
29384    }
29385
29386    unsafe impl ::fidl_next::Wire for ExposeDirectory<'static> {
29387        type Narrowed<'de> = ExposeDirectory<'de>;
29388
29389        #[inline]
29390        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
29391            ::fidl_next::munge!(let Self { table } = out);
29392            ::fidl_next::wire::Table::zero_padding(table);
29393        }
29394    }
29395
29396    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for ExposeDirectory<'de>
29397    where
29398        ___D: ::fidl_next::Decoder<'de> + ?Sized,
29399    {
29400        fn decode(
29401            slot: ::fidl_next::Slot<'_, Self>,
29402            decoder: &mut ___D,
29403            _: (),
29404        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
29405            ::fidl_next::munge!(let Self { table } = slot);
29406
29407            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
29408                match ordinal {
29409                    0 => unsafe { ::core::hint::unreachable_unchecked() },
29410
29411                    1 => {
29412                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
29413                            slot.as_mut(),
29414                            decoder,
29415                            (),
29416                        )?;
29417
29418                        Ok(())
29419                    }
29420
29421                    2 => {
29422                        ::fidl_next::wire::Envelope::decode_as::<
29423                            ___D,
29424                            ::fidl_next::wire::String<'de>,
29425                        >(slot.as_mut(), decoder, 100)?;
29426
29427                        let value = unsafe {
29428                            slot.deref_unchecked()
29429                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
29430                        };
29431
29432                        if value.len() > 100 {
29433                            return Err(::fidl_next::DecodeError::VectorTooLong {
29434                                size: value.len() as u64,
29435                                limit: 100,
29436                            });
29437                        }
29438
29439                        Ok(())
29440                    }
29441
29442                    3 => {
29443                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
29444                            slot.as_mut(),
29445                            decoder,
29446                            (),
29447                        )?;
29448
29449                        Ok(())
29450                    }
29451
29452                    4 => {
29453                        ::fidl_next::wire::Envelope::decode_as::<
29454                            ___D,
29455                            ::fidl_next::wire::String<'de>,
29456                        >(slot.as_mut(), decoder, 100)?;
29457
29458                        let value = unsafe {
29459                            slot.deref_unchecked()
29460                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
29461                        };
29462
29463                        if value.len() > 100 {
29464                            return Err(::fidl_next::DecodeError::VectorTooLong {
29465                                size: value.len() as u64,
29466                                limit: 100,
29467                            });
29468                        }
29469
29470                        Ok(())
29471                    }
29472
29473                    5 => {
29474                        ::fidl_next::wire::Envelope::decode_as::<
29475                            ___D,
29476                            ::fidl_next_common_fuchsia_io::wire::Operations,
29477                        >(slot.as_mut(), decoder, ())?;
29478
29479                        Ok(())
29480                    }
29481
29482                    6 => {
29483                        ::fidl_next::wire::Envelope::decode_as::<
29484                            ___D,
29485                            ::fidl_next::wire::String<'de>,
29486                        >(slot.as_mut(), decoder, 1024)?;
29487
29488                        let value = unsafe {
29489                            slot.deref_unchecked()
29490                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
29491                        };
29492
29493                        if value.len() > 1024 {
29494                            return Err(::fidl_next::DecodeError::VectorTooLong {
29495                                size: value.len() as u64,
29496                                limit: 1024,
29497                            });
29498                        }
29499
29500                        Ok(())
29501                    }
29502
29503                    7 => {
29504                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Availability>(
29505                            slot.as_mut(),
29506                            decoder,
29507                            (),
29508                        )?;
29509
29510                        Ok(())
29511                    }
29512
29513                    8 => {
29514                        ::fidl_next::wire::Envelope::decode_as::<
29515                            ___D,
29516                            ::fidl_next::wire::String<'de>,
29517                        >(slot.as_mut(), decoder, 1024)?;
29518
29519                        let value = unsafe {
29520                            slot.deref_unchecked()
29521                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
29522                        };
29523
29524                        if value.len() > 1024 {
29525                            return Err(::fidl_next::DecodeError::VectorTooLong {
29526                                size: value.len() as u64,
29527                                limit: 1024,
29528                            });
29529                        }
29530
29531                        Ok(())
29532                    }
29533
29534                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
29535                }
29536            })
29537        }
29538    }
29539
29540    impl<'de> ExposeDirectory<'de> {
29541        pub fn source(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
29542            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
29543        }
29544
29545        pub fn take_source(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
29546            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
29547        }
29548
29549        pub fn source_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
29550            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
29551        }
29552
29553        pub fn take_source_name(
29554            &mut self,
29555        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
29556            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
29557        }
29558
29559        pub fn target(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
29560            unsafe { Some(self.table.get(3)?.deref_unchecked()) }
29561        }
29562
29563        pub fn take_target(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
29564            unsafe { Some(self.table.get_mut(3)?.take_unchecked()) }
29565        }
29566
29567        pub fn target_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
29568            unsafe { Some(self.table.get(4)?.deref_unchecked()) }
29569        }
29570
29571        pub fn take_target_name(
29572            &mut self,
29573        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
29574            unsafe { Some(self.table.get_mut(4)?.take_unchecked()) }
29575        }
29576
29577        pub fn rights(
29578            &self,
29579        ) -> ::core::option::Option<&::fidl_next_common_fuchsia_io::wire::Operations> {
29580            unsafe { Some(self.table.get(5)?.deref_unchecked()) }
29581        }
29582
29583        pub fn take_rights(
29584            &mut self,
29585        ) -> ::core::option::Option<::fidl_next_common_fuchsia_io::wire::Operations> {
29586            unsafe { Some(self.table.get_mut(5)?.take_unchecked()) }
29587        }
29588
29589        pub fn subdir(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
29590            unsafe { Some(self.table.get(6)?.deref_unchecked()) }
29591        }
29592
29593        pub fn take_subdir(&mut self) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
29594            unsafe { Some(self.table.get_mut(6)?.take_unchecked()) }
29595        }
29596
29597        pub fn availability(&self) -> ::core::option::Option<&crate::wire::Availability> {
29598            unsafe { Some(self.table.get(7)?.deref_unchecked()) }
29599        }
29600
29601        pub fn take_availability(&mut self) -> ::core::option::Option<crate::wire::Availability> {
29602            unsafe { Some(self.table.get_mut(7)?.take_unchecked()) }
29603        }
29604
29605        pub fn source_dictionary(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
29606            unsafe { Some(self.table.get(8)?.deref_unchecked()) }
29607        }
29608
29609        pub fn take_source_dictionary(
29610            &mut self,
29611        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
29612            unsafe { Some(self.table.get_mut(8)?.take_unchecked()) }
29613        }
29614    }
29615
29616    impl<'de> ::core::fmt::Debug for ExposeDirectory<'de> {
29617        fn fmt(
29618            &self,
29619            f: &mut ::core::fmt::Formatter<'_>,
29620        ) -> ::core::result::Result<(), ::core::fmt::Error> {
29621            f.debug_struct("ExposeDirectory")
29622                .field("source", &self.source())
29623                .field("source_name", &self.source_name())
29624                .field("target", &self.target())
29625                .field("target_name", &self.target_name())
29626                .field("rights", &self.rights())
29627                .field("subdir", &self.subdir())
29628                .field("availability", &self.availability())
29629                .field("source_dictionary", &self.source_dictionary())
29630                .finish()
29631        }
29632    }
29633
29634    impl<'de> ::fidl_next::IntoNatural for ExposeDirectory<'de> {
29635        type Natural = crate::natural::ExposeDirectory;
29636    }
29637
29638    /// The wire type corresponding to [`ExposeRunner`].
29639    #[repr(C)]
29640    pub struct ExposeRunner<'de> {
29641        pub(crate) table: ::fidl_next::wire::Table<'de>,
29642    }
29643
29644    impl<'de> Drop for ExposeRunner<'de> {
29645        fn drop(&mut self) {
29646            let _ = self
29647                .table
29648                .get(1)
29649                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
29650
29651            let _ = self.table.get(2).map(|envelope| unsafe {
29652                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
29653            });
29654
29655            let _ = self
29656                .table
29657                .get(3)
29658                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
29659
29660            let _ = self.table.get(4).map(|envelope| unsafe {
29661                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
29662            });
29663
29664            let _ = self.table.get(6).map(|envelope| unsafe {
29665                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
29666            });
29667        }
29668    }
29669
29670    impl ::fidl_next::Constrained for ExposeRunner<'_> {
29671        type Constraint = ();
29672
29673        fn validate(
29674            _: ::fidl_next::Slot<'_, Self>,
29675            _: Self::Constraint,
29676        ) -> Result<(), ::fidl_next::ValidationError> {
29677            Ok(())
29678        }
29679    }
29680
29681    unsafe impl ::fidl_next::Wire for ExposeRunner<'static> {
29682        type Narrowed<'de> = ExposeRunner<'de>;
29683
29684        #[inline]
29685        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
29686            ::fidl_next::munge!(let Self { table } = out);
29687            ::fidl_next::wire::Table::zero_padding(table);
29688        }
29689    }
29690
29691    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for ExposeRunner<'de>
29692    where
29693        ___D: ::fidl_next::Decoder<'de> + ?Sized,
29694    {
29695        fn decode(
29696            slot: ::fidl_next::Slot<'_, Self>,
29697            decoder: &mut ___D,
29698            _: (),
29699        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
29700            ::fidl_next::munge!(let Self { table } = slot);
29701
29702            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
29703                match ordinal {
29704                    0 => unsafe { ::core::hint::unreachable_unchecked() },
29705
29706                    1 => {
29707                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
29708                            slot.as_mut(),
29709                            decoder,
29710                            (),
29711                        )?;
29712
29713                        Ok(())
29714                    }
29715
29716                    2 => {
29717                        ::fidl_next::wire::Envelope::decode_as::<
29718                            ___D,
29719                            ::fidl_next::wire::String<'de>,
29720                        >(slot.as_mut(), decoder, 100)?;
29721
29722                        let value = unsafe {
29723                            slot.deref_unchecked()
29724                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
29725                        };
29726
29727                        if value.len() > 100 {
29728                            return Err(::fidl_next::DecodeError::VectorTooLong {
29729                                size: value.len() as u64,
29730                                limit: 100,
29731                            });
29732                        }
29733
29734                        Ok(())
29735                    }
29736
29737                    3 => {
29738                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
29739                            slot.as_mut(),
29740                            decoder,
29741                            (),
29742                        )?;
29743
29744                        Ok(())
29745                    }
29746
29747                    4 => {
29748                        ::fidl_next::wire::Envelope::decode_as::<
29749                            ___D,
29750                            ::fidl_next::wire::String<'de>,
29751                        >(slot.as_mut(), decoder, 100)?;
29752
29753                        let value = unsafe {
29754                            slot.deref_unchecked()
29755                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
29756                        };
29757
29758                        if value.len() > 100 {
29759                            return Err(::fidl_next::DecodeError::VectorTooLong {
29760                                size: value.len() as u64,
29761                                limit: 100,
29762                            });
29763                        }
29764
29765                        Ok(())
29766                    }
29767
29768                    6 => {
29769                        ::fidl_next::wire::Envelope::decode_as::<
29770                            ___D,
29771                            ::fidl_next::wire::String<'de>,
29772                        >(slot.as_mut(), decoder, 1024)?;
29773
29774                        let value = unsafe {
29775                            slot.deref_unchecked()
29776                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
29777                        };
29778
29779                        if value.len() > 1024 {
29780                            return Err(::fidl_next::DecodeError::VectorTooLong {
29781                                size: value.len() as u64,
29782                                limit: 1024,
29783                            });
29784                        }
29785
29786                        Ok(())
29787                    }
29788
29789                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
29790                }
29791            })
29792        }
29793    }
29794
29795    impl<'de> ExposeRunner<'de> {
29796        pub fn source(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
29797            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
29798        }
29799
29800        pub fn take_source(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
29801            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
29802        }
29803
29804        pub fn source_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
29805            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
29806        }
29807
29808        pub fn take_source_name(
29809            &mut self,
29810        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
29811            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
29812        }
29813
29814        pub fn target(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
29815            unsafe { Some(self.table.get(3)?.deref_unchecked()) }
29816        }
29817
29818        pub fn take_target(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
29819            unsafe { Some(self.table.get_mut(3)?.take_unchecked()) }
29820        }
29821
29822        pub fn target_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
29823            unsafe { Some(self.table.get(4)?.deref_unchecked()) }
29824        }
29825
29826        pub fn take_target_name(
29827            &mut self,
29828        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
29829            unsafe { Some(self.table.get_mut(4)?.take_unchecked()) }
29830        }
29831
29832        pub fn source_dictionary(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
29833            unsafe { Some(self.table.get(6)?.deref_unchecked()) }
29834        }
29835
29836        pub fn take_source_dictionary(
29837            &mut self,
29838        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
29839            unsafe { Some(self.table.get_mut(6)?.take_unchecked()) }
29840        }
29841    }
29842
29843    impl<'de> ::core::fmt::Debug for ExposeRunner<'de> {
29844        fn fmt(
29845            &self,
29846            f: &mut ::core::fmt::Formatter<'_>,
29847        ) -> ::core::result::Result<(), ::core::fmt::Error> {
29848            f.debug_struct("ExposeRunner")
29849                .field("source", &self.source())
29850                .field("source_name", &self.source_name())
29851                .field("target", &self.target())
29852                .field("target_name", &self.target_name())
29853                .field("source_dictionary", &self.source_dictionary())
29854                .finish()
29855        }
29856    }
29857
29858    impl<'de> ::fidl_next::IntoNatural for ExposeRunner<'de> {
29859        type Natural = crate::natural::ExposeRunner;
29860    }
29861
29862    /// The wire type corresponding to [`ExposeResolver`].
29863    #[repr(C)]
29864    pub struct ExposeResolver<'de> {
29865        pub(crate) table: ::fidl_next::wire::Table<'de>,
29866    }
29867
29868    impl<'de> Drop for ExposeResolver<'de> {
29869        fn drop(&mut self) {
29870            let _ = self
29871                .table
29872                .get(1)
29873                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
29874
29875            let _ = self.table.get(2).map(|envelope| unsafe {
29876                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
29877            });
29878
29879            let _ = self
29880                .table
29881                .get(3)
29882                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
29883
29884            let _ = self.table.get(4).map(|envelope| unsafe {
29885                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
29886            });
29887
29888            let _ = self.table.get(6).map(|envelope| unsafe {
29889                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
29890            });
29891        }
29892    }
29893
29894    impl ::fidl_next::Constrained for ExposeResolver<'_> {
29895        type Constraint = ();
29896
29897        fn validate(
29898            _: ::fidl_next::Slot<'_, Self>,
29899            _: Self::Constraint,
29900        ) -> Result<(), ::fidl_next::ValidationError> {
29901            Ok(())
29902        }
29903    }
29904
29905    unsafe impl ::fidl_next::Wire for ExposeResolver<'static> {
29906        type Narrowed<'de> = ExposeResolver<'de>;
29907
29908        #[inline]
29909        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
29910            ::fidl_next::munge!(let Self { table } = out);
29911            ::fidl_next::wire::Table::zero_padding(table);
29912        }
29913    }
29914
29915    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for ExposeResolver<'de>
29916    where
29917        ___D: ::fidl_next::Decoder<'de> + ?Sized,
29918    {
29919        fn decode(
29920            slot: ::fidl_next::Slot<'_, Self>,
29921            decoder: &mut ___D,
29922            _: (),
29923        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
29924            ::fidl_next::munge!(let Self { table } = slot);
29925
29926            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
29927                match ordinal {
29928                    0 => unsafe { ::core::hint::unreachable_unchecked() },
29929
29930                    1 => {
29931                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
29932                            slot.as_mut(),
29933                            decoder,
29934                            (),
29935                        )?;
29936
29937                        Ok(())
29938                    }
29939
29940                    2 => {
29941                        ::fidl_next::wire::Envelope::decode_as::<
29942                            ___D,
29943                            ::fidl_next::wire::String<'de>,
29944                        >(slot.as_mut(), decoder, 100)?;
29945
29946                        let value = unsafe {
29947                            slot.deref_unchecked()
29948                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
29949                        };
29950
29951                        if value.len() > 100 {
29952                            return Err(::fidl_next::DecodeError::VectorTooLong {
29953                                size: value.len() as u64,
29954                                limit: 100,
29955                            });
29956                        }
29957
29958                        Ok(())
29959                    }
29960
29961                    3 => {
29962                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
29963                            slot.as_mut(),
29964                            decoder,
29965                            (),
29966                        )?;
29967
29968                        Ok(())
29969                    }
29970
29971                    4 => {
29972                        ::fidl_next::wire::Envelope::decode_as::<
29973                            ___D,
29974                            ::fidl_next::wire::String<'de>,
29975                        >(slot.as_mut(), decoder, 100)?;
29976
29977                        let value = unsafe {
29978                            slot.deref_unchecked()
29979                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
29980                        };
29981
29982                        if value.len() > 100 {
29983                            return Err(::fidl_next::DecodeError::VectorTooLong {
29984                                size: value.len() as u64,
29985                                limit: 100,
29986                            });
29987                        }
29988
29989                        Ok(())
29990                    }
29991
29992                    6 => {
29993                        ::fidl_next::wire::Envelope::decode_as::<
29994                            ___D,
29995                            ::fidl_next::wire::String<'de>,
29996                        >(slot.as_mut(), decoder, 1024)?;
29997
29998                        let value = unsafe {
29999                            slot.deref_unchecked()
30000                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
30001                        };
30002
30003                        if value.len() > 1024 {
30004                            return Err(::fidl_next::DecodeError::VectorTooLong {
30005                                size: value.len() as u64,
30006                                limit: 1024,
30007                            });
30008                        }
30009
30010                        Ok(())
30011                    }
30012
30013                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
30014                }
30015            })
30016        }
30017    }
30018
30019    impl<'de> ExposeResolver<'de> {
30020        pub fn source(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
30021            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
30022        }
30023
30024        pub fn take_source(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
30025            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
30026        }
30027
30028        pub fn source_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
30029            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
30030        }
30031
30032        pub fn take_source_name(
30033            &mut self,
30034        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
30035            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
30036        }
30037
30038        pub fn target(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
30039            unsafe { Some(self.table.get(3)?.deref_unchecked()) }
30040        }
30041
30042        pub fn take_target(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
30043            unsafe { Some(self.table.get_mut(3)?.take_unchecked()) }
30044        }
30045
30046        pub fn target_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
30047            unsafe { Some(self.table.get(4)?.deref_unchecked()) }
30048        }
30049
30050        pub fn take_target_name(
30051            &mut self,
30052        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
30053            unsafe { Some(self.table.get_mut(4)?.take_unchecked()) }
30054        }
30055
30056        pub fn source_dictionary(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
30057            unsafe { Some(self.table.get(6)?.deref_unchecked()) }
30058        }
30059
30060        pub fn take_source_dictionary(
30061            &mut self,
30062        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
30063            unsafe { Some(self.table.get_mut(6)?.take_unchecked()) }
30064        }
30065    }
30066
30067    impl<'de> ::core::fmt::Debug for ExposeResolver<'de> {
30068        fn fmt(
30069            &self,
30070            f: &mut ::core::fmt::Formatter<'_>,
30071        ) -> ::core::result::Result<(), ::core::fmt::Error> {
30072            f.debug_struct("ExposeResolver")
30073                .field("source", &self.source())
30074                .field("source_name", &self.source_name())
30075                .field("target", &self.target())
30076                .field("target_name", &self.target_name())
30077                .field("source_dictionary", &self.source_dictionary())
30078                .finish()
30079        }
30080    }
30081
30082    impl<'de> ::fidl_next::IntoNatural for ExposeResolver<'de> {
30083        type Natural = crate::natural::ExposeResolver;
30084    }
30085
30086    /// The wire type corresponding to [`ExposeDictionary`].
30087    #[repr(C)]
30088    pub struct ExposeDictionary<'de> {
30089        pub(crate) table: ::fidl_next::wire::Table<'de>,
30090    }
30091
30092    impl<'de> Drop for ExposeDictionary<'de> {
30093        fn drop(&mut self) {
30094            let _ = self
30095                .table
30096                .get(1)
30097                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
30098
30099            let _ = self.table.get(2).map(|envelope| unsafe {
30100                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
30101            });
30102
30103            let _ = self
30104                .table
30105                .get(3)
30106                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
30107
30108            let _ = self.table.get(4).map(|envelope| unsafe {
30109                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
30110            });
30111
30112            let _ = self
30113                .table
30114                .get(5)
30115                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Availability>() });
30116
30117            let _ = self.table.get(6).map(|envelope| unsafe {
30118                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
30119            });
30120        }
30121    }
30122
30123    impl ::fidl_next::Constrained for ExposeDictionary<'_> {
30124        type Constraint = ();
30125
30126        fn validate(
30127            _: ::fidl_next::Slot<'_, Self>,
30128            _: Self::Constraint,
30129        ) -> Result<(), ::fidl_next::ValidationError> {
30130            Ok(())
30131        }
30132    }
30133
30134    unsafe impl ::fidl_next::Wire for ExposeDictionary<'static> {
30135        type Narrowed<'de> = ExposeDictionary<'de>;
30136
30137        #[inline]
30138        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
30139            ::fidl_next::munge!(let Self { table } = out);
30140            ::fidl_next::wire::Table::zero_padding(table);
30141        }
30142    }
30143
30144    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for ExposeDictionary<'de>
30145    where
30146        ___D: ::fidl_next::Decoder<'de> + ?Sized,
30147    {
30148        fn decode(
30149            slot: ::fidl_next::Slot<'_, Self>,
30150            decoder: &mut ___D,
30151            _: (),
30152        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
30153            ::fidl_next::munge!(let Self { table } = slot);
30154
30155            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
30156                match ordinal {
30157                    0 => unsafe { ::core::hint::unreachable_unchecked() },
30158
30159                    1 => {
30160                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
30161                            slot.as_mut(),
30162                            decoder,
30163                            (),
30164                        )?;
30165
30166                        Ok(())
30167                    }
30168
30169                    2 => {
30170                        ::fidl_next::wire::Envelope::decode_as::<
30171                            ___D,
30172                            ::fidl_next::wire::String<'de>,
30173                        >(slot.as_mut(), decoder, 100)?;
30174
30175                        let value = unsafe {
30176                            slot.deref_unchecked()
30177                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
30178                        };
30179
30180                        if value.len() > 100 {
30181                            return Err(::fidl_next::DecodeError::VectorTooLong {
30182                                size: value.len() as u64,
30183                                limit: 100,
30184                            });
30185                        }
30186
30187                        Ok(())
30188                    }
30189
30190                    3 => {
30191                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
30192                            slot.as_mut(),
30193                            decoder,
30194                            (),
30195                        )?;
30196
30197                        Ok(())
30198                    }
30199
30200                    4 => {
30201                        ::fidl_next::wire::Envelope::decode_as::<
30202                            ___D,
30203                            ::fidl_next::wire::String<'de>,
30204                        >(slot.as_mut(), decoder, 100)?;
30205
30206                        let value = unsafe {
30207                            slot.deref_unchecked()
30208                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
30209                        };
30210
30211                        if value.len() > 100 {
30212                            return Err(::fidl_next::DecodeError::VectorTooLong {
30213                                size: value.len() as u64,
30214                                limit: 100,
30215                            });
30216                        }
30217
30218                        Ok(())
30219                    }
30220
30221                    5 => {
30222                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Availability>(
30223                            slot.as_mut(),
30224                            decoder,
30225                            (),
30226                        )?;
30227
30228                        Ok(())
30229                    }
30230
30231                    6 => {
30232                        ::fidl_next::wire::Envelope::decode_as::<
30233                            ___D,
30234                            ::fidl_next::wire::String<'de>,
30235                        >(slot.as_mut(), decoder, 1024)?;
30236
30237                        let value = unsafe {
30238                            slot.deref_unchecked()
30239                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
30240                        };
30241
30242                        if value.len() > 1024 {
30243                            return Err(::fidl_next::DecodeError::VectorTooLong {
30244                                size: value.len() as u64,
30245                                limit: 1024,
30246                            });
30247                        }
30248
30249                        Ok(())
30250                    }
30251
30252                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
30253                }
30254            })
30255        }
30256    }
30257
30258    impl<'de> ExposeDictionary<'de> {
30259        pub fn source(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
30260            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
30261        }
30262
30263        pub fn take_source(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
30264            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
30265        }
30266
30267        pub fn source_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
30268            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
30269        }
30270
30271        pub fn take_source_name(
30272            &mut self,
30273        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
30274            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
30275        }
30276
30277        pub fn target(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
30278            unsafe { Some(self.table.get(3)?.deref_unchecked()) }
30279        }
30280
30281        pub fn take_target(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
30282            unsafe { Some(self.table.get_mut(3)?.take_unchecked()) }
30283        }
30284
30285        pub fn target_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
30286            unsafe { Some(self.table.get(4)?.deref_unchecked()) }
30287        }
30288
30289        pub fn take_target_name(
30290            &mut self,
30291        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
30292            unsafe { Some(self.table.get_mut(4)?.take_unchecked()) }
30293        }
30294
30295        pub fn availability(&self) -> ::core::option::Option<&crate::wire::Availability> {
30296            unsafe { Some(self.table.get(5)?.deref_unchecked()) }
30297        }
30298
30299        pub fn take_availability(&mut self) -> ::core::option::Option<crate::wire::Availability> {
30300            unsafe { Some(self.table.get_mut(5)?.take_unchecked()) }
30301        }
30302
30303        pub fn source_dictionary(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
30304            unsafe { Some(self.table.get(6)?.deref_unchecked()) }
30305        }
30306
30307        pub fn take_source_dictionary(
30308            &mut self,
30309        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
30310            unsafe { Some(self.table.get_mut(6)?.take_unchecked()) }
30311        }
30312    }
30313
30314    impl<'de> ::core::fmt::Debug for ExposeDictionary<'de> {
30315        fn fmt(
30316            &self,
30317            f: &mut ::core::fmt::Formatter<'_>,
30318        ) -> ::core::result::Result<(), ::core::fmt::Error> {
30319            f.debug_struct("ExposeDictionary")
30320                .field("source", &self.source())
30321                .field("source_name", &self.source_name())
30322                .field("target", &self.target())
30323                .field("target_name", &self.target_name())
30324                .field("availability", &self.availability())
30325                .field("source_dictionary", &self.source_dictionary())
30326                .finish()
30327        }
30328    }
30329
30330    impl<'de> ::fidl_next::IntoNatural for ExposeDictionary<'de> {
30331        type Natural = crate::natural::ExposeDictionary;
30332    }
30333
30334    /// The wire type corresponding to [`ExposeConfiguration`].
30335    #[repr(C)]
30336    pub struct ExposeConfiguration<'de> {
30337        pub(crate) table: ::fidl_next::wire::Table<'de>,
30338    }
30339
30340    impl<'de> Drop for ExposeConfiguration<'de> {
30341        fn drop(&mut self) {
30342            let _ = self
30343                .table
30344                .get(1)
30345                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
30346
30347            let _ = self.table.get(2).map(|envelope| unsafe {
30348                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
30349            });
30350
30351            let _ = self
30352                .table
30353                .get(3)
30354                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
30355
30356            let _ = self.table.get(4).map(|envelope| unsafe {
30357                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
30358            });
30359
30360            let _ = self
30361                .table
30362                .get(5)
30363                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Availability>() });
30364
30365            let _ = self.table.get(6).map(|envelope| unsafe {
30366                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
30367            });
30368        }
30369    }
30370
30371    impl ::fidl_next::Constrained for ExposeConfiguration<'_> {
30372        type Constraint = ();
30373
30374        fn validate(
30375            _: ::fidl_next::Slot<'_, Self>,
30376            _: Self::Constraint,
30377        ) -> Result<(), ::fidl_next::ValidationError> {
30378            Ok(())
30379        }
30380    }
30381
30382    unsafe impl ::fidl_next::Wire for ExposeConfiguration<'static> {
30383        type Narrowed<'de> = ExposeConfiguration<'de>;
30384
30385        #[inline]
30386        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
30387            ::fidl_next::munge!(let Self { table } = out);
30388            ::fidl_next::wire::Table::zero_padding(table);
30389        }
30390    }
30391
30392    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for ExposeConfiguration<'de>
30393    where
30394        ___D: ::fidl_next::Decoder<'de> + ?Sized,
30395    {
30396        fn decode(
30397            slot: ::fidl_next::Slot<'_, Self>,
30398            decoder: &mut ___D,
30399            _: (),
30400        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
30401            ::fidl_next::munge!(let Self { table } = slot);
30402
30403            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
30404                match ordinal {
30405                    0 => unsafe { ::core::hint::unreachable_unchecked() },
30406
30407                    1 => {
30408                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
30409                            slot.as_mut(),
30410                            decoder,
30411                            (),
30412                        )?;
30413
30414                        Ok(())
30415                    }
30416
30417                    2 => {
30418                        ::fidl_next::wire::Envelope::decode_as::<
30419                            ___D,
30420                            ::fidl_next::wire::String<'de>,
30421                        >(slot.as_mut(), decoder, 100)?;
30422
30423                        let value = unsafe {
30424                            slot.deref_unchecked()
30425                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
30426                        };
30427
30428                        if value.len() > 100 {
30429                            return Err(::fidl_next::DecodeError::VectorTooLong {
30430                                size: value.len() as u64,
30431                                limit: 100,
30432                            });
30433                        }
30434
30435                        Ok(())
30436                    }
30437
30438                    3 => {
30439                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
30440                            slot.as_mut(),
30441                            decoder,
30442                            (),
30443                        )?;
30444
30445                        Ok(())
30446                    }
30447
30448                    4 => {
30449                        ::fidl_next::wire::Envelope::decode_as::<
30450                            ___D,
30451                            ::fidl_next::wire::String<'de>,
30452                        >(slot.as_mut(), decoder, 100)?;
30453
30454                        let value = unsafe {
30455                            slot.deref_unchecked()
30456                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
30457                        };
30458
30459                        if value.len() > 100 {
30460                            return Err(::fidl_next::DecodeError::VectorTooLong {
30461                                size: value.len() as u64,
30462                                limit: 100,
30463                            });
30464                        }
30465
30466                        Ok(())
30467                    }
30468
30469                    5 => {
30470                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Availability>(
30471                            slot.as_mut(),
30472                            decoder,
30473                            (),
30474                        )?;
30475
30476                        Ok(())
30477                    }
30478
30479                    6 => {
30480                        ::fidl_next::wire::Envelope::decode_as::<
30481                            ___D,
30482                            ::fidl_next::wire::String<'de>,
30483                        >(slot.as_mut(), decoder, 1024)?;
30484
30485                        let value = unsafe {
30486                            slot.deref_unchecked()
30487                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
30488                        };
30489
30490                        if value.len() > 1024 {
30491                            return Err(::fidl_next::DecodeError::VectorTooLong {
30492                                size: value.len() as u64,
30493                                limit: 1024,
30494                            });
30495                        }
30496
30497                        Ok(())
30498                    }
30499
30500                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
30501                }
30502            })
30503        }
30504    }
30505
30506    impl<'de> ExposeConfiguration<'de> {
30507        pub fn source(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
30508            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
30509        }
30510
30511        pub fn take_source(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
30512            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
30513        }
30514
30515        pub fn source_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
30516            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
30517        }
30518
30519        pub fn take_source_name(
30520            &mut self,
30521        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
30522            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
30523        }
30524
30525        pub fn target(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
30526            unsafe { Some(self.table.get(3)?.deref_unchecked()) }
30527        }
30528
30529        pub fn take_target(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
30530            unsafe { Some(self.table.get_mut(3)?.take_unchecked()) }
30531        }
30532
30533        pub fn target_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
30534            unsafe { Some(self.table.get(4)?.deref_unchecked()) }
30535        }
30536
30537        pub fn take_target_name(
30538            &mut self,
30539        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
30540            unsafe { Some(self.table.get_mut(4)?.take_unchecked()) }
30541        }
30542
30543        pub fn availability(&self) -> ::core::option::Option<&crate::wire::Availability> {
30544            unsafe { Some(self.table.get(5)?.deref_unchecked()) }
30545        }
30546
30547        pub fn take_availability(&mut self) -> ::core::option::Option<crate::wire::Availability> {
30548            unsafe { Some(self.table.get_mut(5)?.take_unchecked()) }
30549        }
30550
30551        pub fn source_dictionary(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
30552            unsafe { Some(self.table.get(6)?.deref_unchecked()) }
30553        }
30554
30555        pub fn take_source_dictionary(
30556            &mut self,
30557        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
30558            unsafe { Some(self.table.get_mut(6)?.take_unchecked()) }
30559        }
30560    }
30561
30562    impl<'de> ::core::fmt::Debug for ExposeConfiguration<'de> {
30563        fn fmt(
30564            &self,
30565            f: &mut ::core::fmt::Formatter<'_>,
30566        ) -> ::core::result::Result<(), ::core::fmt::Error> {
30567            f.debug_struct("ExposeConfiguration")
30568                .field("source", &self.source())
30569                .field("source_name", &self.source_name())
30570                .field("target", &self.target())
30571                .field("target_name", &self.target_name())
30572                .field("availability", &self.availability())
30573                .field("source_dictionary", &self.source_dictionary())
30574                .finish()
30575        }
30576    }
30577
30578    impl<'de> ::fidl_next::IntoNatural for ExposeConfiguration<'de> {
30579        type Natural = crate::natural::ExposeConfiguration;
30580    }
30581
30582    /// The wire type corresponding to [`Expose`].
30583    #[repr(transparent)]
30584    pub struct Expose<'de> {
30585        pub(crate) raw: ::fidl_next::wire::Union,
30586        pub(crate) _phantom: ::core::marker::PhantomData<&'de mut [::fidl_next::Chunk]>,
30587    }
30588
30589    impl<'de> Drop for Expose<'de> {
30590        fn drop(&mut self) {
30591            match self.raw.ordinal() {
30592                1 => {
30593                    let _ = unsafe {
30594                        self.raw.get().read_unchecked::<crate::wire::ExposeService<'de>>()
30595                    };
30596                }
30597
30598                2 => {
30599                    let _ = unsafe {
30600                        self.raw.get().read_unchecked::<crate::wire::ExposeProtocol<'de>>()
30601                    };
30602                }
30603
30604                3 => {
30605                    let _ = unsafe {
30606                        self.raw.get().read_unchecked::<crate::wire::ExposeDirectory<'de>>()
30607                    };
30608                }
30609
30610                4 => {
30611                    let _ = unsafe {
30612                        self.raw.get().read_unchecked::<crate::wire::ExposeRunner<'de>>()
30613                    };
30614                }
30615
30616                5 => {
30617                    let _ = unsafe {
30618                        self.raw.get().read_unchecked::<crate::wire::ExposeResolver<'de>>()
30619                    };
30620                }
30621
30622                7 => {
30623                    let _ = unsafe {
30624                        self.raw.get().read_unchecked::<crate::wire::ExposeDictionary<'de>>()
30625                    };
30626                }
30627
30628                8 => {
30629                    let _ = unsafe {
30630                        self.raw.get().read_unchecked::<crate::wire::ExposeConfiguration<'de>>()
30631                    };
30632                }
30633
30634                _ => (),
30635            }
30636        }
30637    }
30638
30639    impl ::fidl_next::Constrained for Expose<'_> {
30640        type Constraint = ();
30641
30642        fn validate(
30643            _: ::fidl_next::Slot<'_, Self>,
30644            _: Self::Constraint,
30645        ) -> Result<(), ::fidl_next::ValidationError> {
30646            Ok(())
30647        }
30648    }
30649
30650    unsafe impl ::fidl_next::Wire for Expose<'static> {
30651        type Narrowed<'de> = Expose<'de>;
30652
30653        #[inline]
30654        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
30655            ::fidl_next::munge!(let Self { raw, _phantom: _ } = out);
30656            ::fidl_next::wire::Union::zero_padding(raw);
30657        }
30658    }
30659
30660    pub mod expose {
30661        pub enum Ref<'de> {
30662            Service(&'de crate::wire::ExposeService<'de>),
30663
30664            Protocol(&'de crate::wire::ExposeProtocol<'de>),
30665
30666            Directory(&'de crate::wire::ExposeDirectory<'de>),
30667
30668            Runner(&'de crate::wire::ExposeRunner<'de>),
30669
30670            Resolver(&'de crate::wire::ExposeResolver<'de>),
30671
30672            Dictionary(&'de crate::wire::ExposeDictionary<'de>),
30673
30674            Config(&'de crate::wire::ExposeConfiguration<'de>),
30675
30676            UnknownOrdinal_(u64),
30677        }
30678
30679        pub enum Value<'de> {
30680            Service(crate::wire::ExposeService<'de>),
30681
30682            Protocol(crate::wire::ExposeProtocol<'de>),
30683
30684            Directory(crate::wire::ExposeDirectory<'de>),
30685
30686            Runner(crate::wire::ExposeRunner<'de>),
30687
30688            Resolver(crate::wire::ExposeResolver<'de>),
30689
30690            Dictionary(crate::wire::ExposeDictionary<'de>),
30691
30692            Config(crate::wire::ExposeConfiguration<'de>),
30693
30694            UnknownOrdinal_(u64),
30695        }
30696    }
30697
30698    impl<'de> Expose<'de> {
30699        pub fn as_ref(&self) -> crate::wire::expose::Ref<'_> {
30700            match self.raw.ordinal() {
30701                1 => crate::wire::expose::Ref::Service(unsafe {
30702                    self.raw.get().deref_unchecked::<crate::wire::ExposeService<'_>>()
30703                }),
30704
30705                2 => crate::wire::expose::Ref::Protocol(unsafe {
30706                    self.raw.get().deref_unchecked::<crate::wire::ExposeProtocol<'_>>()
30707                }),
30708
30709                3 => crate::wire::expose::Ref::Directory(unsafe {
30710                    self.raw.get().deref_unchecked::<crate::wire::ExposeDirectory<'_>>()
30711                }),
30712
30713                4 => crate::wire::expose::Ref::Runner(unsafe {
30714                    self.raw.get().deref_unchecked::<crate::wire::ExposeRunner<'_>>()
30715                }),
30716
30717                5 => crate::wire::expose::Ref::Resolver(unsafe {
30718                    self.raw.get().deref_unchecked::<crate::wire::ExposeResolver<'_>>()
30719                }),
30720
30721                7 => crate::wire::expose::Ref::Dictionary(unsafe {
30722                    self.raw.get().deref_unchecked::<crate::wire::ExposeDictionary<'_>>()
30723                }),
30724
30725                8 => crate::wire::expose::Ref::Config(unsafe {
30726                    self.raw.get().deref_unchecked::<crate::wire::ExposeConfiguration<'_>>()
30727                }),
30728
30729                unknown => crate::wire::expose::Ref::UnknownOrdinal_(unknown),
30730            }
30731        }
30732
30733        pub fn into_inner(self) -> crate::wire::expose::Value<'de> {
30734            let this = ::core::mem::ManuallyDrop::new(self);
30735
30736            match this.raw.ordinal() {
30737                1 => crate::wire::expose::Value::Service(unsafe {
30738                    this.raw.get().read_unchecked::<crate::wire::ExposeService<'de>>()
30739                }),
30740
30741                2 => crate::wire::expose::Value::Protocol(unsafe {
30742                    this.raw.get().read_unchecked::<crate::wire::ExposeProtocol<'de>>()
30743                }),
30744
30745                3 => crate::wire::expose::Value::Directory(unsafe {
30746                    this.raw.get().read_unchecked::<crate::wire::ExposeDirectory<'de>>()
30747                }),
30748
30749                4 => crate::wire::expose::Value::Runner(unsafe {
30750                    this.raw.get().read_unchecked::<crate::wire::ExposeRunner<'de>>()
30751                }),
30752
30753                5 => crate::wire::expose::Value::Resolver(unsafe {
30754                    this.raw.get().read_unchecked::<crate::wire::ExposeResolver<'de>>()
30755                }),
30756
30757                7 => crate::wire::expose::Value::Dictionary(unsafe {
30758                    this.raw.get().read_unchecked::<crate::wire::ExposeDictionary<'de>>()
30759                }),
30760
30761                8 => crate::wire::expose::Value::Config(unsafe {
30762                    this.raw.get().read_unchecked::<crate::wire::ExposeConfiguration<'de>>()
30763                }),
30764
30765                unknown => crate::wire::expose::Value::UnknownOrdinal_(unknown),
30766            }
30767        }
30768    }
30769
30770    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for Expose<'de>
30771    where
30772        ___D: ::fidl_next::decoder::InternalHandleDecoder + ?Sized,
30773        ___D: ::fidl_next::Decoder<'de>,
30774    {
30775        fn decode(
30776            mut slot: ::fidl_next::Slot<'_, Self>,
30777            decoder: &mut ___D,
30778            _: (),
30779        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
30780            ::fidl_next::munge!(let Self { mut raw, _phantom: _ } = slot.as_mut());
30781            match ::fidl_next::wire::Union::encoded_ordinal(raw.as_mut()) {
30782                1 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::ExposeService<'de>>(
30783                    raw,
30784                    decoder,
30785                    (),
30786                )?,
30787
30788                2 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::ExposeProtocol<'de>>(
30789                    raw,
30790                    decoder,
30791                    (),
30792                )?,
30793
30794                3 => {
30795                    ::fidl_next::wire::Union::decode_as::<___D, crate::wire::ExposeDirectory<'de>>(
30796                        raw,
30797                        decoder,
30798                        (),
30799                    )?
30800                }
30801
30802                4 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::ExposeRunner<'de>>(
30803                    raw,
30804                    decoder,
30805                    (),
30806                )?,
30807
30808                5 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::ExposeResolver<'de>>(
30809                    raw,
30810                    decoder,
30811                    (),
30812                )?,
30813
30814                7 => {
30815                    ::fidl_next::wire::Union::decode_as::<___D, crate::wire::ExposeDictionary<'de>>(
30816                        raw,
30817                        decoder,
30818                        (),
30819                    )?
30820                }
30821
30822                8 => ::fidl_next::wire::Union::decode_as::<
30823                    ___D,
30824                    crate::wire::ExposeConfiguration<'de>,
30825                >(raw, decoder, ())?,
30826
30827                _ => ::fidl_next::wire::Union::decode_unknown(raw, decoder)?,
30828            }
30829
30830            Ok(())
30831        }
30832    }
30833
30834    impl<'de> ::core::fmt::Debug for Expose<'de> {
30835        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
30836            match self.raw.ordinal() {
30837                1 => unsafe {
30838                    self.raw.get().deref_unchecked::<crate::wire::ExposeService<'_>>().fmt(f)
30839                },
30840                2 => unsafe {
30841                    self.raw.get().deref_unchecked::<crate::wire::ExposeProtocol<'_>>().fmt(f)
30842                },
30843                3 => unsafe {
30844                    self.raw.get().deref_unchecked::<crate::wire::ExposeDirectory<'_>>().fmt(f)
30845                },
30846                4 => unsafe {
30847                    self.raw.get().deref_unchecked::<crate::wire::ExposeRunner<'_>>().fmt(f)
30848                },
30849                5 => unsafe {
30850                    self.raw.get().deref_unchecked::<crate::wire::ExposeResolver<'_>>().fmt(f)
30851                },
30852                7 => unsafe {
30853                    self.raw.get().deref_unchecked::<crate::wire::ExposeDictionary<'_>>().fmt(f)
30854                },
30855                8 => unsafe {
30856                    self.raw.get().deref_unchecked::<crate::wire::ExposeConfiguration<'_>>().fmt(f)
30857                },
30858                _ => unsafe { ::core::hint::unreachable_unchecked() },
30859            }
30860        }
30861    }
30862
30863    impl<'de> ::fidl_next::IntoNatural for Expose<'de> {
30864        type Natural = crate::natural::Expose;
30865    }
30866
30867    /// The wire type corresponding to [`OfferService`].
30868    #[repr(C)]
30869    pub struct OfferService<'de> {
30870        pub(crate) table: ::fidl_next::wire::Table<'de>,
30871    }
30872
30873    impl<'de> Drop for OfferService<'de> {
30874        fn drop(&mut self) {
30875            let _ = self
30876                .table
30877                .get(1)
30878                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
30879
30880            let _ = self.table.get(2).map(|envelope| unsafe {
30881                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
30882            });
30883
30884            let _ = self
30885                .table
30886                .get(3)
30887                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
30888
30889            let _ = self.table.get(4).map(|envelope| unsafe {
30890                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
30891            });
30892
30893            let _ = self.table.get(5)
30894                .map(|envelope| unsafe {
30895                    envelope.read_unchecked::<::fidl_next::wire::Vector<'de, ::fidl_next::wire::String<'de>>>()
30896                });
30897
30898            let _ = self.table.get(6)
30899                .map(|envelope| unsafe {
30900                    envelope.read_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::NameMapping<'de>>>()
30901                });
30902
30903            let _ = self
30904                .table
30905                .get(7)
30906                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Availability>() });
30907
30908            let _ = self.table.get(8).map(|envelope| unsafe {
30909                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
30910            });
30911
30912            let _ = self.table.get(9).map(|envelope| unsafe {
30913                envelope.read_unchecked::<crate::wire::DependencyType>()
30914            });
30915        }
30916    }
30917
30918    impl ::fidl_next::Constrained for OfferService<'_> {
30919        type Constraint = ();
30920
30921        fn validate(
30922            _: ::fidl_next::Slot<'_, Self>,
30923            _: Self::Constraint,
30924        ) -> Result<(), ::fidl_next::ValidationError> {
30925            Ok(())
30926        }
30927    }
30928
30929    unsafe impl ::fidl_next::Wire for OfferService<'static> {
30930        type Narrowed<'de> = OfferService<'de>;
30931
30932        #[inline]
30933        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
30934            ::fidl_next::munge!(let Self { table } = out);
30935            ::fidl_next::wire::Table::zero_padding(table);
30936        }
30937    }
30938
30939    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for OfferService<'de>
30940    where
30941        ___D: ::fidl_next::Decoder<'de> + ?Sized,
30942    {
30943        fn decode(
30944            slot: ::fidl_next::Slot<'_, Self>,
30945            decoder: &mut ___D,
30946            _: (),
30947        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
30948            ::fidl_next::munge!(let Self { table } = slot);
30949
30950            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
30951                match ordinal {
30952                    0 => unsafe { ::core::hint::unreachable_unchecked() },
30953
30954                    1 => {
30955                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
30956                            slot.as_mut(),
30957                            decoder,
30958                            (),
30959                        )?;
30960
30961                        Ok(())
30962                    }
30963
30964                    2 => {
30965                        ::fidl_next::wire::Envelope::decode_as::<
30966                            ___D,
30967                            ::fidl_next::wire::String<'de>,
30968                        >(slot.as_mut(), decoder, 100)?;
30969
30970                        let value = unsafe {
30971                            slot.deref_unchecked()
30972                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
30973                        };
30974
30975                        if value.len() > 100 {
30976                            return Err(::fidl_next::DecodeError::VectorTooLong {
30977                                size: value.len() as u64,
30978                                limit: 100,
30979                            });
30980                        }
30981
30982                        Ok(())
30983                    }
30984
30985                    3 => {
30986                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
30987                            slot.as_mut(),
30988                            decoder,
30989                            (),
30990                        )?;
30991
30992                        Ok(())
30993                    }
30994
30995                    4 => {
30996                        ::fidl_next::wire::Envelope::decode_as::<
30997                            ___D,
30998                            ::fidl_next::wire::String<'de>,
30999                        >(slot.as_mut(), decoder, 100)?;
31000
31001                        let value = unsafe {
31002                            slot.deref_unchecked()
31003                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
31004                        };
31005
31006                        if value.len() > 100 {
31007                            return Err(::fidl_next::DecodeError::VectorTooLong {
31008                                size: value.len() as u64,
31009                                limit: 100,
31010                            });
31011                        }
31012
31013                        Ok(())
31014                    }
31015
31016                    5 => {
31017                        ::fidl_next::wire::Envelope::decode_as::<
31018                            ___D,
31019                            ::fidl_next::wire::Vector<'de, ::fidl_next::wire::String<'de>>,
31020                        >(slot.as_mut(), decoder, (4294967295, 100))?;
31021
31022                        Ok(())
31023                    }
31024
31025                    6 => {
31026                        ::fidl_next::wire::Envelope::decode_as::<
31027                            ___D,
31028                            ::fidl_next::wire::Vector<'de, crate::wire::NameMapping<'de>>,
31029                        >(slot.as_mut(), decoder, (4294967295, ()))?;
31030
31031                        Ok(())
31032                    }
31033
31034                    7 => {
31035                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Availability>(
31036                            slot.as_mut(),
31037                            decoder,
31038                            (),
31039                        )?;
31040
31041                        Ok(())
31042                    }
31043
31044                    8 => {
31045                        ::fidl_next::wire::Envelope::decode_as::<
31046                            ___D,
31047                            ::fidl_next::wire::String<'de>,
31048                        >(slot.as_mut(), decoder, 1024)?;
31049
31050                        let value = unsafe {
31051                            slot.deref_unchecked()
31052                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
31053                        };
31054
31055                        if value.len() > 1024 {
31056                            return Err(::fidl_next::DecodeError::VectorTooLong {
31057                                size: value.len() as u64,
31058                                limit: 1024,
31059                            });
31060                        }
31061
31062                        Ok(())
31063                    }
31064
31065                    9 => {
31066                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::DependencyType>(
31067                            slot.as_mut(),
31068                            decoder,
31069                            (),
31070                        )?;
31071
31072                        Ok(())
31073                    }
31074
31075                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
31076                }
31077            })
31078        }
31079    }
31080
31081    impl<'de> OfferService<'de> {
31082        pub fn source(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
31083            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
31084        }
31085
31086        pub fn take_source(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
31087            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
31088        }
31089
31090        pub fn source_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
31091            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
31092        }
31093
31094        pub fn take_source_name(
31095            &mut self,
31096        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
31097            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
31098        }
31099
31100        pub fn target(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
31101            unsafe { Some(self.table.get(3)?.deref_unchecked()) }
31102        }
31103
31104        pub fn take_target(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
31105            unsafe { Some(self.table.get_mut(3)?.take_unchecked()) }
31106        }
31107
31108        pub fn target_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
31109            unsafe { Some(self.table.get(4)?.deref_unchecked()) }
31110        }
31111
31112        pub fn take_target_name(
31113            &mut self,
31114        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
31115            unsafe { Some(self.table.get_mut(4)?.take_unchecked()) }
31116        }
31117
31118        pub fn source_instance_filter(
31119            &self,
31120        ) -> ::core::option::Option<&::fidl_next::wire::Vector<'de, ::fidl_next::wire::String<'de>>>
31121        {
31122            unsafe { Some(self.table.get(5)?.deref_unchecked()) }
31123        }
31124
31125        pub fn take_source_instance_filter(
31126            &mut self,
31127        ) -> ::core::option::Option<::fidl_next::wire::Vector<'de, ::fidl_next::wire::String<'de>>>
31128        {
31129            unsafe { Some(self.table.get_mut(5)?.take_unchecked()) }
31130        }
31131
31132        pub fn renamed_instances(
31133            &self,
31134        ) -> ::core::option::Option<&::fidl_next::wire::Vector<'de, crate::wire::NameMapping<'de>>>
31135        {
31136            unsafe { Some(self.table.get(6)?.deref_unchecked()) }
31137        }
31138
31139        pub fn take_renamed_instances(
31140            &mut self,
31141        ) -> ::core::option::Option<::fidl_next::wire::Vector<'de, crate::wire::NameMapping<'de>>>
31142        {
31143            unsafe { Some(self.table.get_mut(6)?.take_unchecked()) }
31144        }
31145
31146        pub fn availability(&self) -> ::core::option::Option<&crate::wire::Availability> {
31147            unsafe { Some(self.table.get(7)?.deref_unchecked()) }
31148        }
31149
31150        pub fn take_availability(&mut self) -> ::core::option::Option<crate::wire::Availability> {
31151            unsafe { Some(self.table.get_mut(7)?.take_unchecked()) }
31152        }
31153
31154        pub fn source_dictionary(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
31155            unsafe { Some(self.table.get(8)?.deref_unchecked()) }
31156        }
31157
31158        pub fn take_source_dictionary(
31159            &mut self,
31160        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
31161            unsafe { Some(self.table.get_mut(8)?.take_unchecked()) }
31162        }
31163
31164        pub fn dependency_type(&self) -> ::core::option::Option<&crate::wire::DependencyType> {
31165            unsafe { Some(self.table.get(9)?.deref_unchecked()) }
31166        }
31167
31168        pub fn take_dependency_type(
31169            &mut self,
31170        ) -> ::core::option::Option<crate::wire::DependencyType> {
31171            unsafe { Some(self.table.get_mut(9)?.take_unchecked()) }
31172        }
31173    }
31174
31175    impl<'de> ::core::fmt::Debug for OfferService<'de> {
31176        fn fmt(
31177            &self,
31178            f: &mut ::core::fmt::Formatter<'_>,
31179        ) -> ::core::result::Result<(), ::core::fmt::Error> {
31180            f.debug_struct("OfferService")
31181                .field("source", &self.source())
31182                .field("source_name", &self.source_name())
31183                .field("target", &self.target())
31184                .field("target_name", &self.target_name())
31185                .field("source_instance_filter", &self.source_instance_filter())
31186                .field("renamed_instances", &self.renamed_instances())
31187                .field("availability", &self.availability())
31188                .field("source_dictionary", &self.source_dictionary())
31189                .field("dependency_type", &self.dependency_type())
31190                .finish()
31191        }
31192    }
31193
31194    impl<'de> ::fidl_next::IntoNatural for OfferService<'de> {
31195        type Natural = crate::natural::OfferService;
31196    }
31197
31198    /// The wire type corresponding to [`OfferProtocol`].
31199    #[repr(C)]
31200    pub struct OfferProtocol<'de> {
31201        pub(crate) table: ::fidl_next::wire::Table<'de>,
31202    }
31203
31204    impl<'de> Drop for OfferProtocol<'de> {
31205        fn drop(&mut self) {
31206            let _ = self
31207                .table
31208                .get(1)
31209                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
31210
31211            let _ = self.table.get(2).map(|envelope| unsafe {
31212                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
31213            });
31214
31215            let _ = self
31216                .table
31217                .get(3)
31218                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
31219
31220            let _ = self.table.get(4).map(|envelope| unsafe {
31221                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
31222            });
31223
31224            let _ = self.table.get(5).map(|envelope| unsafe {
31225                envelope.read_unchecked::<crate::wire::DependencyType>()
31226            });
31227
31228            let _ = self
31229                .table
31230                .get(6)
31231                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Availability>() });
31232
31233            let _ = self.table.get(7).map(|envelope| unsafe {
31234                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
31235            });
31236        }
31237    }
31238
31239    impl ::fidl_next::Constrained for OfferProtocol<'_> {
31240        type Constraint = ();
31241
31242        fn validate(
31243            _: ::fidl_next::Slot<'_, Self>,
31244            _: Self::Constraint,
31245        ) -> Result<(), ::fidl_next::ValidationError> {
31246            Ok(())
31247        }
31248    }
31249
31250    unsafe impl ::fidl_next::Wire for OfferProtocol<'static> {
31251        type Narrowed<'de> = OfferProtocol<'de>;
31252
31253        #[inline]
31254        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
31255            ::fidl_next::munge!(let Self { table } = out);
31256            ::fidl_next::wire::Table::zero_padding(table);
31257        }
31258    }
31259
31260    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for OfferProtocol<'de>
31261    where
31262        ___D: ::fidl_next::Decoder<'de> + ?Sized,
31263    {
31264        fn decode(
31265            slot: ::fidl_next::Slot<'_, Self>,
31266            decoder: &mut ___D,
31267            _: (),
31268        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
31269            ::fidl_next::munge!(let Self { table } = slot);
31270
31271            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
31272                match ordinal {
31273                    0 => unsafe { ::core::hint::unreachable_unchecked() },
31274
31275                    1 => {
31276                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
31277                            slot.as_mut(),
31278                            decoder,
31279                            (),
31280                        )?;
31281
31282                        Ok(())
31283                    }
31284
31285                    2 => {
31286                        ::fidl_next::wire::Envelope::decode_as::<
31287                            ___D,
31288                            ::fidl_next::wire::String<'de>,
31289                        >(slot.as_mut(), decoder, 100)?;
31290
31291                        let value = unsafe {
31292                            slot.deref_unchecked()
31293                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
31294                        };
31295
31296                        if value.len() > 100 {
31297                            return Err(::fidl_next::DecodeError::VectorTooLong {
31298                                size: value.len() as u64,
31299                                limit: 100,
31300                            });
31301                        }
31302
31303                        Ok(())
31304                    }
31305
31306                    3 => {
31307                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
31308                            slot.as_mut(),
31309                            decoder,
31310                            (),
31311                        )?;
31312
31313                        Ok(())
31314                    }
31315
31316                    4 => {
31317                        ::fidl_next::wire::Envelope::decode_as::<
31318                            ___D,
31319                            ::fidl_next::wire::String<'de>,
31320                        >(slot.as_mut(), decoder, 100)?;
31321
31322                        let value = unsafe {
31323                            slot.deref_unchecked()
31324                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
31325                        };
31326
31327                        if value.len() > 100 {
31328                            return Err(::fidl_next::DecodeError::VectorTooLong {
31329                                size: value.len() as u64,
31330                                limit: 100,
31331                            });
31332                        }
31333
31334                        Ok(())
31335                    }
31336
31337                    5 => {
31338                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::DependencyType>(
31339                            slot.as_mut(),
31340                            decoder,
31341                            (),
31342                        )?;
31343
31344                        Ok(())
31345                    }
31346
31347                    6 => {
31348                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Availability>(
31349                            slot.as_mut(),
31350                            decoder,
31351                            (),
31352                        )?;
31353
31354                        Ok(())
31355                    }
31356
31357                    7 => {
31358                        ::fidl_next::wire::Envelope::decode_as::<
31359                            ___D,
31360                            ::fidl_next::wire::String<'de>,
31361                        >(slot.as_mut(), decoder, 1024)?;
31362
31363                        let value = unsafe {
31364                            slot.deref_unchecked()
31365                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
31366                        };
31367
31368                        if value.len() > 1024 {
31369                            return Err(::fidl_next::DecodeError::VectorTooLong {
31370                                size: value.len() as u64,
31371                                limit: 1024,
31372                            });
31373                        }
31374
31375                        Ok(())
31376                    }
31377
31378                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
31379                }
31380            })
31381        }
31382    }
31383
31384    impl<'de> OfferProtocol<'de> {
31385        pub fn source(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
31386            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
31387        }
31388
31389        pub fn take_source(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
31390            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
31391        }
31392
31393        pub fn source_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
31394            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
31395        }
31396
31397        pub fn take_source_name(
31398            &mut self,
31399        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
31400            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
31401        }
31402
31403        pub fn target(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
31404            unsafe { Some(self.table.get(3)?.deref_unchecked()) }
31405        }
31406
31407        pub fn take_target(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
31408            unsafe { Some(self.table.get_mut(3)?.take_unchecked()) }
31409        }
31410
31411        pub fn target_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
31412            unsafe { Some(self.table.get(4)?.deref_unchecked()) }
31413        }
31414
31415        pub fn take_target_name(
31416            &mut self,
31417        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
31418            unsafe { Some(self.table.get_mut(4)?.take_unchecked()) }
31419        }
31420
31421        pub fn dependency_type(&self) -> ::core::option::Option<&crate::wire::DependencyType> {
31422            unsafe { Some(self.table.get(5)?.deref_unchecked()) }
31423        }
31424
31425        pub fn take_dependency_type(
31426            &mut self,
31427        ) -> ::core::option::Option<crate::wire::DependencyType> {
31428            unsafe { Some(self.table.get_mut(5)?.take_unchecked()) }
31429        }
31430
31431        pub fn availability(&self) -> ::core::option::Option<&crate::wire::Availability> {
31432            unsafe { Some(self.table.get(6)?.deref_unchecked()) }
31433        }
31434
31435        pub fn take_availability(&mut self) -> ::core::option::Option<crate::wire::Availability> {
31436            unsafe { Some(self.table.get_mut(6)?.take_unchecked()) }
31437        }
31438
31439        pub fn source_dictionary(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
31440            unsafe { Some(self.table.get(7)?.deref_unchecked()) }
31441        }
31442
31443        pub fn take_source_dictionary(
31444            &mut self,
31445        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
31446            unsafe { Some(self.table.get_mut(7)?.take_unchecked()) }
31447        }
31448    }
31449
31450    impl<'de> ::core::fmt::Debug for OfferProtocol<'de> {
31451        fn fmt(
31452            &self,
31453            f: &mut ::core::fmt::Formatter<'_>,
31454        ) -> ::core::result::Result<(), ::core::fmt::Error> {
31455            f.debug_struct("OfferProtocol")
31456                .field("source", &self.source())
31457                .field("source_name", &self.source_name())
31458                .field("target", &self.target())
31459                .field("target_name", &self.target_name())
31460                .field("dependency_type", &self.dependency_type())
31461                .field("availability", &self.availability())
31462                .field("source_dictionary", &self.source_dictionary())
31463                .finish()
31464        }
31465    }
31466
31467    impl<'de> ::fidl_next::IntoNatural for OfferProtocol<'de> {
31468        type Natural = crate::natural::OfferProtocol;
31469    }
31470
31471    /// The wire type corresponding to [`OfferDirectory`].
31472    #[repr(C)]
31473    pub struct OfferDirectory<'de> {
31474        pub(crate) table: ::fidl_next::wire::Table<'de>,
31475    }
31476
31477    impl<'de> Drop for OfferDirectory<'de> {
31478        fn drop(&mut self) {
31479            let _ = self
31480                .table
31481                .get(1)
31482                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
31483
31484            let _ = self.table.get(2).map(|envelope| unsafe {
31485                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
31486            });
31487
31488            let _ = self
31489                .table
31490                .get(3)
31491                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
31492
31493            let _ = self.table.get(4).map(|envelope| unsafe {
31494                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
31495            });
31496
31497            let _ = self.table.get(5).map(|envelope| unsafe {
31498                envelope.read_unchecked::<::fidl_next_common_fuchsia_io::wire::Operations>()
31499            });
31500
31501            let _ = self.table.get(6).map(|envelope| unsafe {
31502                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
31503            });
31504
31505            let _ = self.table.get(7).map(|envelope| unsafe {
31506                envelope.read_unchecked::<crate::wire::DependencyType>()
31507            });
31508
31509            let _ = self
31510                .table
31511                .get(8)
31512                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Availability>() });
31513
31514            let _ = self.table.get(9).map(|envelope| unsafe {
31515                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
31516            });
31517        }
31518    }
31519
31520    impl ::fidl_next::Constrained for OfferDirectory<'_> {
31521        type Constraint = ();
31522
31523        fn validate(
31524            _: ::fidl_next::Slot<'_, Self>,
31525            _: Self::Constraint,
31526        ) -> Result<(), ::fidl_next::ValidationError> {
31527            Ok(())
31528        }
31529    }
31530
31531    unsafe impl ::fidl_next::Wire for OfferDirectory<'static> {
31532        type Narrowed<'de> = OfferDirectory<'de>;
31533
31534        #[inline]
31535        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
31536            ::fidl_next::munge!(let Self { table } = out);
31537            ::fidl_next::wire::Table::zero_padding(table);
31538        }
31539    }
31540
31541    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for OfferDirectory<'de>
31542    where
31543        ___D: ::fidl_next::Decoder<'de> + ?Sized,
31544    {
31545        fn decode(
31546            slot: ::fidl_next::Slot<'_, Self>,
31547            decoder: &mut ___D,
31548            _: (),
31549        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
31550            ::fidl_next::munge!(let Self { table } = slot);
31551
31552            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
31553                match ordinal {
31554                    0 => unsafe { ::core::hint::unreachable_unchecked() },
31555
31556                    1 => {
31557                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
31558                            slot.as_mut(),
31559                            decoder,
31560                            (),
31561                        )?;
31562
31563                        Ok(())
31564                    }
31565
31566                    2 => {
31567                        ::fidl_next::wire::Envelope::decode_as::<
31568                            ___D,
31569                            ::fidl_next::wire::String<'de>,
31570                        >(slot.as_mut(), decoder, 100)?;
31571
31572                        let value = unsafe {
31573                            slot.deref_unchecked()
31574                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
31575                        };
31576
31577                        if value.len() > 100 {
31578                            return Err(::fidl_next::DecodeError::VectorTooLong {
31579                                size: value.len() as u64,
31580                                limit: 100,
31581                            });
31582                        }
31583
31584                        Ok(())
31585                    }
31586
31587                    3 => {
31588                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
31589                            slot.as_mut(),
31590                            decoder,
31591                            (),
31592                        )?;
31593
31594                        Ok(())
31595                    }
31596
31597                    4 => {
31598                        ::fidl_next::wire::Envelope::decode_as::<
31599                            ___D,
31600                            ::fidl_next::wire::String<'de>,
31601                        >(slot.as_mut(), decoder, 100)?;
31602
31603                        let value = unsafe {
31604                            slot.deref_unchecked()
31605                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
31606                        };
31607
31608                        if value.len() > 100 {
31609                            return Err(::fidl_next::DecodeError::VectorTooLong {
31610                                size: value.len() as u64,
31611                                limit: 100,
31612                            });
31613                        }
31614
31615                        Ok(())
31616                    }
31617
31618                    5 => {
31619                        ::fidl_next::wire::Envelope::decode_as::<
31620                            ___D,
31621                            ::fidl_next_common_fuchsia_io::wire::Operations,
31622                        >(slot.as_mut(), decoder, ())?;
31623
31624                        Ok(())
31625                    }
31626
31627                    6 => {
31628                        ::fidl_next::wire::Envelope::decode_as::<
31629                            ___D,
31630                            ::fidl_next::wire::String<'de>,
31631                        >(slot.as_mut(), decoder, 1024)?;
31632
31633                        let value = unsafe {
31634                            slot.deref_unchecked()
31635                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
31636                        };
31637
31638                        if value.len() > 1024 {
31639                            return Err(::fidl_next::DecodeError::VectorTooLong {
31640                                size: value.len() as u64,
31641                                limit: 1024,
31642                            });
31643                        }
31644
31645                        Ok(())
31646                    }
31647
31648                    7 => {
31649                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::DependencyType>(
31650                            slot.as_mut(),
31651                            decoder,
31652                            (),
31653                        )?;
31654
31655                        Ok(())
31656                    }
31657
31658                    8 => {
31659                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Availability>(
31660                            slot.as_mut(),
31661                            decoder,
31662                            (),
31663                        )?;
31664
31665                        Ok(())
31666                    }
31667
31668                    9 => {
31669                        ::fidl_next::wire::Envelope::decode_as::<
31670                            ___D,
31671                            ::fidl_next::wire::String<'de>,
31672                        >(slot.as_mut(), decoder, 1024)?;
31673
31674                        let value = unsafe {
31675                            slot.deref_unchecked()
31676                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
31677                        };
31678
31679                        if value.len() > 1024 {
31680                            return Err(::fidl_next::DecodeError::VectorTooLong {
31681                                size: value.len() as u64,
31682                                limit: 1024,
31683                            });
31684                        }
31685
31686                        Ok(())
31687                    }
31688
31689                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
31690                }
31691            })
31692        }
31693    }
31694
31695    impl<'de> OfferDirectory<'de> {
31696        pub fn source(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
31697            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
31698        }
31699
31700        pub fn take_source(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
31701            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
31702        }
31703
31704        pub fn source_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
31705            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
31706        }
31707
31708        pub fn take_source_name(
31709            &mut self,
31710        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
31711            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
31712        }
31713
31714        pub fn target(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
31715            unsafe { Some(self.table.get(3)?.deref_unchecked()) }
31716        }
31717
31718        pub fn take_target(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
31719            unsafe { Some(self.table.get_mut(3)?.take_unchecked()) }
31720        }
31721
31722        pub fn target_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
31723            unsafe { Some(self.table.get(4)?.deref_unchecked()) }
31724        }
31725
31726        pub fn take_target_name(
31727            &mut self,
31728        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
31729            unsafe { Some(self.table.get_mut(4)?.take_unchecked()) }
31730        }
31731
31732        pub fn rights(
31733            &self,
31734        ) -> ::core::option::Option<&::fidl_next_common_fuchsia_io::wire::Operations> {
31735            unsafe { Some(self.table.get(5)?.deref_unchecked()) }
31736        }
31737
31738        pub fn take_rights(
31739            &mut self,
31740        ) -> ::core::option::Option<::fidl_next_common_fuchsia_io::wire::Operations> {
31741            unsafe { Some(self.table.get_mut(5)?.take_unchecked()) }
31742        }
31743
31744        pub fn subdir(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
31745            unsafe { Some(self.table.get(6)?.deref_unchecked()) }
31746        }
31747
31748        pub fn take_subdir(&mut self) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
31749            unsafe { Some(self.table.get_mut(6)?.take_unchecked()) }
31750        }
31751
31752        pub fn dependency_type(&self) -> ::core::option::Option<&crate::wire::DependencyType> {
31753            unsafe { Some(self.table.get(7)?.deref_unchecked()) }
31754        }
31755
31756        pub fn take_dependency_type(
31757            &mut self,
31758        ) -> ::core::option::Option<crate::wire::DependencyType> {
31759            unsafe { Some(self.table.get_mut(7)?.take_unchecked()) }
31760        }
31761
31762        pub fn availability(&self) -> ::core::option::Option<&crate::wire::Availability> {
31763            unsafe { Some(self.table.get(8)?.deref_unchecked()) }
31764        }
31765
31766        pub fn take_availability(&mut self) -> ::core::option::Option<crate::wire::Availability> {
31767            unsafe { Some(self.table.get_mut(8)?.take_unchecked()) }
31768        }
31769
31770        pub fn source_dictionary(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
31771            unsafe { Some(self.table.get(9)?.deref_unchecked()) }
31772        }
31773
31774        pub fn take_source_dictionary(
31775            &mut self,
31776        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
31777            unsafe { Some(self.table.get_mut(9)?.take_unchecked()) }
31778        }
31779    }
31780
31781    impl<'de> ::core::fmt::Debug for OfferDirectory<'de> {
31782        fn fmt(
31783            &self,
31784            f: &mut ::core::fmt::Formatter<'_>,
31785        ) -> ::core::result::Result<(), ::core::fmt::Error> {
31786            f.debug_struct("OfferDirectory")
31787                .field("source", &self.source())
31788                .field("source_name", &self.source_name())
31789                .field("target", &self.target())
31790                .field("target_name", &self.target_name())
31791                .field("rights", &self.rights())
31792                .field("subdir", &self.subdir())
31793                .field("dependency_type", &self.dependency_type())
31794                .field("availability", &self.availability())
31795                .field("source_dictionary", &self.source_dictionary())
31796                .finish()
31797        }
31798    }
31799
31800    impl<'de> ::fidl_next::IntoNatural for OfferDirectory<'de> {
31801        type Natural = crate::natural::OfferDirectory;
31802    }
31803
31804    /// The wire type corresponding to [`OfferStorage`].
31805    #[repr(C)]
31806    pub struct OfferStorage<'de> {
31807        pub(crate) table: ::fidl_next::wire::Table<'de>,
31808    }
31809
31810    impl<'de> Drop for OfferStorage<'de> {
31811        fn drop(&mut self) {
31812            let _ = self.table.get(1).map(|envelope| unsafe {
31813                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
31814            });
31815
31816            let _ = self
31817                .table
31818                .get(2)
31819                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
31820
31821            let _ = self
31822                .table
31823                .get(3)
31824                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
31825
31826            let _ = self.table.get(4).map(|envelope| unsafe {
31827                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
31828            });
31829
31830            let _ = self
31831                .table
31832                .get(5)
31833                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Availability>() });
31834        }
31835    }
31836
31837    impl ::fidl_next::Constrained for OfferStorage<'_> {
31838        type Constraint = ();
31839
31840        fn validate(
31841            _: ::fidl_next::Slot<'_, Self>,
31842            _: Self::Constraint,
31843        ) -> Result<(), ::fidl_next::ValidationError> {
31844            Ok(())
31845        }
31846    }
31847
31848    unsafe impl ::fidl_next::Wire for OfferStorage<'static> {
31849        type Narrowed<'de> = OfferStorage<'de>;
31850
31851        #[inline]
31852        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
31853            ::fidl_next::munge!(let Self { table } = out);
31854            ::fidl_next::wire::Table::zero_padding(table);
31855        }
31856    }
31857
31858    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for OfferStorage<'de>
31859    where
31860        ___D: ::fidl_next::Decoder<'de> + ?Sized,
31861    {
31862        fn decode(
31863            slot: ::fidl_next::Slot<'_, Self>,
31864            decoder: &mut ___D,
31865            _: (),
31866        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
31867            ::fidl_next::munge!(let Self { table } = slot);
31868
31869            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
31870                match ordinal {
31871                    0 => unsafe { ::core::hint::unreachable_unchecked() },
31872
31873                    1 => {
31874                        ::fidl_next::wire::Envelope::decode_as::<
31875                            ___D,
31876                            ::fidl_next::wire::String<'de>,
31877                        >(slot.as_mut(), decoder, 100)?;
31878
31879                        let value = unsafe {
31880                            slot.deref_unchecked()
31881                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
31882                        };
31883
31884                        if value.len() > 100 {
31885                            return Err(::fidl_next::DecodeError::VectorTooLong {
31886                                size: value.len() as u64,
31887                                limit: 100,
31888                            });
31889                        }
31890
31891                        Ok(())
31892                    }
31893
31894                    2 => {
31895                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
31896                            slot.as_mut(),
31897                            decoder,
31898                            (),
31899                        )?;
31900
31901                        Ok(())
31902                    }
31903
31904                    3 => {
31905                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
31906                            slot.as_mut(),
31907                            decoder,
31908                            (),
31909                        )?;
31910
31911                        Ok(())
31912                    }
31913
31914                    4 => {
31915                        ::fidl_next::wire::Envelope::decode_as::<
31916                            ___D,
31917                            ::fidl_next::wire::String<'de>,
31918                        >(slot.as_mut(), decoder, 100)?;
31919
31920                        let value = unsafe {
31921                            slot.deref_unchecked()
31922                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
31923                        };
31924
31925                        if value.len() > 100 {
31926                            return Err(::fidl_next::DecodeError::VectorTooLong {
31927                                size: value.len() as u64,
31928                                limit: 100,
31929                            });
31930                        }
31931
31932                        Ok(())
31933                    }
31934
31935                    5 => {
31936                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Availability>(
31937                            slot.as_mut(),
31938                            decoder,
31939                            (),
31940                        )?;
31941
31942                        Ok(())
31943                    }
31944
31945                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
31946                }
31947            })
31948        }
31949    }
31950
31951    impl<'de> OfferStorage<'de> {
31952        pub fn source_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
31953            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
31954        }
31955
31956        pub fn take_source_name(
31957            &mut self,
31958        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
31959            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
31960        }
31961
31962        pub fn source(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
31963            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
31964        }
31965
31966        pub fn take_source(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
31967            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
31968        }
31969
31970        pub fn target(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
31971            unsafe { Some(self.table.get(3)?.deref_unchecked()) }
31972        }
31973
31974        pub fn take_target(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
31975            unsafe { Some(self.table.get_mut(3)?.take_unchecked()) }
31976        }
31977
31978        pub fn target_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
31979            unsafe { Some(self.table.get(4)?.deref_unchecked()) }
31980        }
31981
31982        pub fn take_target_name(
31983            &mut self,
31984        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
31985            unsafe { Some(self.table.get_mut(4)?.take_unchecked()) }
31986        }
31987
31988        pub fn availability(&self) -> ::core::option::Option<&crate::wire::Availability> {
31989            unsafe { Some(self.table.get(5)?.deref_unchecked()) }
31990        }
31991
31992        pub fn take_availability(&mut self) -> ::core::option::Option<crate::wire::Availability> {
31993            unsafe { Some(self.table.get_mut(5)?.take_unchecked()) }
31994        }
31995    }
31996
31997    impl<'de> ::core::fmt::Debug for OfferStorage<'de> {
31998        fn fmt(
31999            &self,
32000            f: &mut ::core::fmt::Formatter<'_>,
32001        ) -> ::core::result::Result<(), ::core::fmt::Error> {
32002            f.debug_struct("OfferStorage")
32003                .field("source_name", &self.source_name())
32004                .field("source", &self.source())
32005                .field("target", &self.target())
32006                .field("target_name", &self.target_name())
32007                .field("availability", &self.availability())
32008                .finish()
32009        }
32010    }
32011
32012    impl<'de> ::fidl_next::IntoNatural for OfferStorage<'de> {
32013        type Natural = crate::natural::OfferStorage;
32014    }
32015
32016    /// The wire type corresponding to [`OfferRunner`].
32017    #[repr(C)]
32018    pub struct OfferRunner<'de> {
32019        pub(crate) table: ::fidl_next::wire::Table<'de>,
32020    }
32021
32022    impl<'de> Drop for OfferRunner<'de> {
32023        fn drop(&mut self) {
32024            let _ = self
32025                .table
32026                .get(1)
32027                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
32028
32029            let _ = self.table.get(2).map(|envelope| unsafe {
32030                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
32031            });
32032
32033            let _ = self
32034                .table
32035                .get(3)
32036                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
32037
32038            let _ = self.table.get(4).map(|envelope| unsafe {
32039                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
32040            });
32041
32042            let _ = self.table.get(5).map(|envelope| unsafe {
32043                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
32044            });
32045        }
32046    }
32047
32048    impl ::fidl_next::Constrained for OfferRunner<'_> {
32049        type Constraint = ();
32050
32051        fn validate(
32052            _: ::fidl_next::Slot<'_, Self>,
32053            _: Self::Constraint,
32054        ) -> Result<(), ::fidl_next::ValidationError> {
32055            Ok(())
32056        }
32057    }
32058
32059    unsafe impl ::fidl_next::Wire for OfferRunner<'static> {
32060        type Narrowed<'de> = OfferRunner<'de>;
32061
32062        #[inline]
32063        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
32064            ::fidl_next::munge!(let Self { table } = out);
32065            ::fidl_next::wire::Table::zero_padding(table);
32066        }
32067    }
32068
32069    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for OfferRunner<'de>
32070    where
32071        ___D: ::fidl_next::Decoder<'de> + ?Sized,
32072    {
32073        fn decode(
32074            slot: ::fidl_next::Slot<'_, Self>,
32075            decoder: &mut ___D,
32076            _: (),
32077        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
32078            ::fidl_next::munge!(let Self { table } = slot);
32079
32080            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
32081                match ordinal {
32082                    0 => unsafe { ::core::hint::unreachable_unchecked() },
32083
32084                    1 => {
32085                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
32086                            slot.as_mut(),
32087                            decoder,
32088                            (),
32089                        )?;
32090
32091                        Ok(())
32092                    }
32093
32094                    2 => {
32095                        ::fidl_next::wire::Envelope::decode_as::<
32096                            ___D,
32097                            ::fidl_next::wire::String<'de>,
32098                        >(slot.as_mut(), decoder, 100)?;
32099
32100                        let value = unsafe {
32101                            slot.deref_unchecked()
32102                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
32103                        };
32104
32105                        if value.len() > 100 {
32106                            return Err(::fidl_next::DecodeError::VectorTooLong {
32107                                size: value.len() as u64,
32108                                limit: 100,
32109                            });
32110                        }
32111
32112                        Ok(())
32113                    }
32114
32115                    3 => {
32116                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
32117                            slot.as_mut(),
32118                            decoder,
32119                            (),
32120                        )?;
32121
32122                        Ok(())
32123                    }
32124
32125                    4 => {
32126                        ::fidl_next::wire::Envelope::decode_as::<
32127                            ___D,
32128                            ::fidl_next::wire::String<'de>,
32129                        >(slot.as_mut(), decoder, 100)?;
32130
32131                        let value = unsafe {
32132                            slot.deref_unchecked()
32133                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
32134                        };
32135
32136                        if value.len() > 100 {
32137                            return Err(::fidl_next::DecodeError::VectorTooLong {
32138                                size: value.len() as u64,
32139                                limit: 100,
32140                            });
32141                        }
32142
32143                        Ok(())
32144                    }
32145
32146                    5 => {
32147                        ::fidl_next::wire::Envelope::decode_as::<
32148                            ___D,
32149                            ::fidl_next::wire::String<'de>,
32150                        >(slot.as_mut(), decoder, 1024)?;
32151
32152                        let value = unsafe {
32153                            slot.deref_unchecked()
32154                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
32155                        };
32156
32157                        if value.len() > 1024 {
32158                            return Err(::fidl_next::DecodeError::VectorTooLong {
32159                                size: value.len() as u64,
32160                                limit: 1024,
32161                            });
32162                        }
32163
32164                        Ok(())
32165                    }
32166
32167                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
32168                }
32169            })
32170        }
32171    }
32172
32173    impl<'de> OfferRunner<'de> {
32174        pub fn source(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
32175            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
32176        }
32177
32178        pub fn take_source(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
32179            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
32180        }
32181
32182        pub fn source_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
32183            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
32184        }
32185
32186        pub fn take_source_name(
32187            &mut self,
32188        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
32189            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
32190        }
32191
32192        pub fn target(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
32193            unsafe { Some(self.table.get(3)?.deref_unchecked()) }
32194        }
32195
32196        pub fn take_target(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
32197            unsafe { Some(self.table.get_mut(3)?.take_unchecked()) }
32198        }
32199
32200        pub fn target_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
32201            unsafe { Some(self.table.get(4)?.deref_unchecked()) }
32202        }
32203
32204        pub fn take_target_name(
32205            &mut self,
32206        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
32207            unsafe { Some(self.table.get_mut(4)?.take_unchecked()) }
32208        }
32209
32210        pub fn source_dictionary(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
32211            unsafe { Some(self.table.get(5)?.deref_unchecked()) }
32212        }
32213
32214        pub fn take_source_dictionary(
32215            &mut self,
32216        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
32217            unsafe { Some(self.table.get_mut(5)?.take_unchecked()) }
32218        }
32219    }
32220
32221    impl<'de> ::core::fmt::Debug for OfferRunner<'de> {
32222        fn fmt(
32223            &self,
32224            f: &mut ::core::fmt::Formatter<'_>,
32225        ) -> ::core::result::Result<(), ::core::fmt::Error> {
32226            f.debug_struct("OfferRunner")
32227                .field("source", &self.source())
32228                .field("source_name", &self.source_name())
32229                .field("target", &self.target())
32230                .field("target_name", &self.target_name())
32231                .field("source_dictionary", &self.source_dictionary())
32232                .finish()
32233        }
32234    }
32235
32236    impl<'de> ::fidl_next::IntoNatural for OfferRunner<'de> {
32237        type Natural = crate::natural::OfferRunner;
32238    }
32239
32240    /// The wire type corresponding to [`OfferResolver`].
32241    #[repr(C)]
32242    pub struct OfferResolver<'de> {
32243        pub(crate) table: ::fidl_next::wire::Table<'de>,
32244    }
32245
32246    impl<'de> Drop for OfferResolver<'de> {
32247        fn drop(&mut self) {
32248            let _ = self
32249                .table
32250                .get(1)
32251                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
32252
32253            let _ = self.table.get(2).map(|envelope| unsafe {
32254                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
32255            });
32256
32257            let _ = self
32258                .table
32259                .get(3)
32260                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
32261
32262            let _ = self.table.get(4).map(|envelope| unsafe {
32263                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
32264            });
32265
32266            let _ = self.table.get(5).map(|envelope| unsafe {
32267                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
32268            });
32269        }
32270    }
32271
32272    impl ::fidl_next::Constrained for OfferResolver<'_> {
32273        type Constraint = ();
32274
32275        fn validate(
32276            _: ::fidl_next::Slot<'_, Self>,
32277            _: Self::Constraint,
32278        ) -> Result<(), ::fidl_next::ValidationError> {
32279            Ok(())
32280        }
32281    }
32282
32283    unsafe impl ::fidl_next::Wire for OfferResolver<'static> {
32284        type Narrowed<'de> = OfferResolver<'de>;
32285
32286        #[inline]
32287        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
32288            ::fidl_next::munge!(let Self { table } = out);
32289            ::fidl_next::wire::Table::zero_padding(table);
32290        }
32291    }
32292
32293    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for OfferResolver<'de>
32294    where
32295        ___D: ::fidl_next::Decoder<'de> + ?Sized,
32296    {
32297        fn decode(
32298            slot: ::fidl_next::Slot<'_, Self>,
32299            decoder: &mut ___D,
32300            _: (),
32301        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
32302            ::fidl_next::munge!(let Self { table } = slot);
32303
32304            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
32305                match ordinal {
32306                    0 => unsafe { ::core::hint::unreachable_unchecked() },
32307
32308                    1 => {
32309                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
32310                            slot.as_mut(),
32311                            decoder,
32312                            (),
32313                        )?;
32314
32315                        Ok(())
32316                    }
32317
32318                    2 => {
32319                        ::fidl_next::wire::Envelope::decode_as::<
32320                            ___D,
32321                            ::fidl_next::wire::String<'de>,
32322                        >(slot.as_mut(), decoder, 100)?;
32323
32324                        let value = unsafe {
32325                            slot.deref_unchecked()
32326                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
32327                        };
32328
32329                        if value.len() > 100 {
32330                            return Err(::fidl_next::DecodeError::VectorTooLong {
32331                                size: value.len() as u64,
32332                                limit: 100,
32333                            });
32334                        }
32335
32336                        Ok(())
32337                    }
32338
32339                    3 => {
32340                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
32341                            slot.as_mut(),
32342                            decoder,
32343                            (),
32344                        )?;
32345
32346                        Ok(())
32347                    }
32348
32349                    4 => {
32350                        ::fidl_next::wire::Envelope::decode_as::<
32351                            ___D,
32352                            ::fidl_next::wire::String<'de>,
32353                        >(slot.as_mut(), decoder, 100)?;
32354
32355                        let value = unsafe {
32356                            slot.deref_unchecked()
32357                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
32358                        };
32359
32360                        if value.len() > 100 {
32361                            return Err(::fidl_next::DecodeError::VectorTooLong {
32362                                size: value.len() as u64,
32363                                limit: 100,
32364                            });
32365                        }
32366
32367                        Ok(())
32368                    }
32369
32370                    5 => {
32371                        ::fidl_next::wire::Envelope::decode_as::<
32372                            ___D,
32373                            ::fidl_next::wire::String<'de>,
32374                        >(slot.as_mut(), decoder, 1024)?;
32375
32376                        let value = unsafe {
32377                            slot.deref_unchecked()
32378                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
32379                        };
32380
32381                        if value.len() > 1024 {
32382                            return Err(::fidl_next::DecodeError::VectorTooLong {
32383                                size: value.len() as u64,
32384                                limit: 1024,
32385                            });
32386                        }
32387
32388                        Ok(())
32389                    }
32390
32391                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
32392                }
32393            })
32394        }
32395    }
32396
32397    impl<'de> OfferResolver<'de> {
32398        pub fn source(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
32399            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
32400        }
32401
32402        pub fn take_source(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
32403            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
32404        }
32405
32406        pub fn source_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
32407            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
32408        }
32409
32410        pub fn take_source_name(
32411            &mut self,
32412        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
32413            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
32414        }
32415
32416        pub fn target(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
32417            unsafe { Some(self.table.get(3)?.deref_unchecked()) }
32418        }
32419
32420        pub fn take_target(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
32421            unsafe { Some(self.table.get_mut(3)?.take_unchecked()) }
32422        }
32423
32424        pub fn target_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
32425            unsafe { Some(self.table.get(4)?.deref_unchecked()) }
32426        }
32427
32428        pub fn take_target_name(
32429            &mut self,
32430        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
32431            unsafe { Some(self.table.get_mut(4)?.take_unchecked()) }
32432        }
32433
32434        pub fn source_dictionary(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
32435            unsafe { Some(self.table.get(5)?.deref_unchecked()) }
32436        }
32437
32438        pub fn take_source_dictionary(
32439            &mut self,
32440        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
32441            unsafe { Some(self.table.get_mut(5)?.take_unchecked()) }
32442        }
32443    }
32444
32445    impl<'de> ::core::fmt::Debug for OfferResolver<'de> {
32446        fn fmt(
32447            &self,
32448            f: &mut ::core::fmt::Formatter<'_>,
32449        ) -> ::core::result::Result<(), ::core::fmt::Error> {
32450            f.debug_struct("OfferResolver")
32451                .field("source", &self.source())
32452                .field("source_name", &self.source_name())
32453                .field("target", &self.target())
32454                .field("target_name", &self.target_name())
32455                .field("source_dictionary", &self.source_dictionary())
32456                .finish()
32457        }
32458    }
32459
32460    impl<'de> ::fidl_next::IntoNatural for OfferResolver<'de> {
32461        type Natural = crate::natural::OfferResolver;
32462    }
32463
32464    /// The wire type corresponding to [`OfferEventStream`].
32465    #[repr(C)]
32466    pub struct OfferEventStream<'de> {
32467        pub(crate) table: ::fidl_next::wire::Table<'de>,
32468    }
32469
32470    impl<'de> Drop for OfferEventStream<'de> {
32471        fn drop(&mut self) {
32472            let _ = self
32473                .table
32474                .get(1)
32475                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
32476
32477            let _ = self.table.get(2).map(|envelope| unsafe {
32478                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
32479            });
32480
32481            let _ = self.table.get(3).map(|envelope| unsafe {
32482                envelope.read_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::Ref<'de>>>()
32483            });
32484
32485            let _ = self
32486                .table
32487                .get(4)
32488                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
32489
32490            let _ = self.table.get(5).map(|envelope| unsafe {
32491                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
32492            });
32493
32494            let _ = self
32495                .table
32496                .get(7)
32497                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Availability>() });
32498        }
32499    }
32500
32501    impl ::fidl_next::Constrained for OfferEventStream<'_> {
32502        type Constraint = ();
32503
32504        fn validate(
32505            _: ::fidl_next::Slot<'_, Self>,
32506            _: Self::Constraint,
32507        ) -> Result<(), ::fidl_next::ValidationError> {
32508            Ok(())
32509        }
32510    }
32511
32512    unsafe impl ::fidl_next::Wire for OfferEventStream<'static> {
32513        type Narrowed<'de> = OfferEventStream<'de>;
32514
32515        #[inline]
32516        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
32517            ::fidl_next::munge!(let Self { table } = out);
32518            ::fidl_next::wire::Table::zero_padding(table);
32519        }
32520    }
32521
32522    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for OfferEventStream<'de>
32523    where
32524        ___D: ::fidl_next::Decoder<'de> + ?Sized,
32525    {
32526        fn decode(
32527            slot: ::fidl_next::Slot<'_, Self>,
32528            decoder: &mut ___D,
32529            _: (),
32530        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
32531            ::fidl_next::munge!(let Self { table } = slot);
32532
32533            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
32534                match ordinal {
32535                    0 => unsafe { ::core::hint::unreachable_unchecked() },
32536
32537                    1 => {
32538                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
32539                            slot.as_mut(),
32540                            decoder,
32541                            (),
32542                        )?;
32543
32544                        Ok(())
32545                    }
32546
32547                    2 => {
32548                        ::fidl_next::wire::Envelope::decode_as::<
32549                            ___D,
32550                            ::fidl_next::wire::String<'de>,
32551                        >(slot.as_mut(), decoder, 100)?;
32552
32553                        let value = unsafe {
32554                            slot.deref_unchecked()
32555                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
32556                        };
32557
32558                        if value.len() > 100 {
32559                            return Err(::fidl_next::DecodeError::VectorTooLong {
32560                                size: value.len() as u64,
32561                                limit: 100,
32562                            });
32563                        }
32564
32565                        Ok(())
32566                    }
32567
32568                    3 => {
32569                        ::fidl_next::wire::Envelope::decode_as::<
32570                            ___D,
32571                            ::fidl_next::wire::Vector<'de, crate::wire::Ref<'de>>,
32572                        >(slot.as_mut(), decoder, (4294967295, ()))?;
32573
32574                        Ok(())
32575                    }
32576
32577                    4 => {
32578                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
32579                            slot.as_mut(),
32580                            decoder,
32581                            (),
32582                        )?;
32583
32584                        Ok(())
32585                    }
32586
32587                    5 => {
32588                        ::fidl_next::wire::Envelope::decode_as::<
32589                            ___D,
32590                            ::fidl_next::wire::String<'de>,
32591                        >(slot.as_mut(), decoder, 100)?;
32592
32593                        let value = unsafe {
32594                            slot.deref_unchecked()
32595                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
32596                        };
32597
32598                        if value.len() > 100 {
32599                            return Err(::fidl_next::DecodeError::VectorTooLong {
32600                                size: value.len() as u64,
32601                                limit: 100,
32602                            });
32603                        }
32604
32605                        Ok(())
32606                    }
32607
32608                    7 => {
32609                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Availability>(
32610                            slot.as_mut(),
32611                            decoder,
32612                            (),
32613                        )?;
32614
32615                        Ok(())
32616                    }
32617
32618                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
32619                }
32620            })
32621        }
32622    }
32623
32624    impl<'de> OfferEventStream<'de> {
32625        pub fn source(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
32626            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
32627        }
32628
32629        pub fn take_source(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
32630            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
32631        }
32632
32633        pub fn source_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
32634            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
32635        }
32636
32637        pub fn take_source_name(
32638            &mut self,
32639        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
32640            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
32641        }
32642
32643        pub fn scope(
32644            &self,
32645        ) -> ::core::option::Option<&::fidl_next::wire::Vector<'de, crate::wire::Ref<'de>>>
32646        {
32647            unsafe { Some(self.table.get(3)?.deref_unchecked()) }
32648        }
32649
32650        pub fn take_scope(
32651            &mut self,
32652        ) -> ::core::option::Option<::fidl_next::wire::Vector<'de, crate::wire::Ref<'de>>> {
32653            unsafe { Some(self.table.get_mut(3)?.take_unchecked()) }
32654        }
32655
32656        pub fn target(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
32657            unsafe { Some(self.table.get(4)?.deref_unchecked()) }
32658        }
32659
32660        pub fn take_target(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
32661            unsafe { Some(self.table.get_mut(4)?.take_unchecked()) }
32662        }
32663
32664        pub fn target_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
32665            unsafe { Some(self.table.get(5)?.deref_unchecked()) }
32666        }
32667
32668        pub fn take_target_name(
32669            &mut self,
32670        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
32671            unsafe { Some(self.table.get_mut(5)?.take_unchecked()) }
32672        }
32673
32674        pub fn availability(&self) -> ::core::option::Option<&crate::wire::Availability> {
32675            unsafe { Some(self.table.get(7)?.deref_unchecked()) }
32676        }
32677
32678        pub fn take_availability(&mut self) -> ::core::option::Option<crate::wire::Availability> {
32679            unsafe { Some(self.table.get_mut(7)?.take_unchecked()) }
32680        }
32681    }
32682
32683    impl<'de> ::core::fmt::Debug for OfferEventStream<'de> {
32684        fn fmt(
32685            &self,
32686            f: &mut ::core::fmt::Formatter<'_>,
32687        ) -> ::core::result::Result<(), ::core::fmt::Error> {
32688            f.debug_struct("OfferEventStream")
32689                .field("source", &self.source())
32690                .field("source_name", &self.source_name())
32691                .field("scope", &self.scope())
32692                .field("target", &self.target())
32693                .field("target_name", &self.target_name())
32694                .field("availability", &self.availability())
32695                .finish()
32696        }
32697    }
32698
32699    impl<'de> ::fidl_next::IntoNatural for OfferEventStream<'de> {
32700        type Natural = crate::natural::OfferEventStream;
32701    }
32702
32703    /// The wire type corresponding to [`OfferDictionary`].
32704    #[repr(C)]
32705    pub struct OfferDictionary<'de> {
32706        pub(crate) table: ::fidl_next::wire::Table<'de>,
32707    }
32708
32709    impl<'de> Drop for OfferDictionary<'de> {
32710        fn drop(&mut self) {
32711            let _ = self
32712                .table
32713                .get(1)
32714                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
32715
32716            let _ = self.table.get(2).map(|envelope| unsafe {
32717                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
32718            });
32719
32720            let _ = self
32721                .table
32722                .get(3)
32723                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
32724
32725            let _ = self.table.get(4).map(|envelope| unsafe {
32726                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
32727            });
32728
32729            let _ = self.table.get(5).map(|envelope| unsafe {
32730                envelope.read_unchecked::<crate::wire::DependencyType>()
32731            });
32732
32733            let _ = self
32734                .table
32735                .get(6)
32736                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Availability>() });
32737
32738            let _ = self.table.get(7).map(|envelope| unsafe {
32739                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
32740            });
32741        }
32742    }
32743
32744    impl ::fidl_next::Constrained for OfferDictionary<'_> {
32745        type Constraint = ();
32746
32747        fn validate(
32748            _: ::fidl_next::Slot<'_, Self>,
32749            _: Self::Constraint,
32750        ) -> Result<(), ::fidl_next::ValidationError> {
32751            Ok(())
32752        }
32753    }
32754
32755    unsafe impl ::fidl_next::Wire for OfferDictionary<'static> {
32756        type Narrowed<'de> = OfferDictionary<'de>;
32757
32758        #[inline]
32759        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
32760            ::fidl_next::munge!(let Self { table } = out);
32761            ::fidl_next::wire::Table::zero_padding(table);
32762        }
32763    }
32764
32765    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for OfferDictionary<'de>
32766    where
32767        ___D: ::fidl_next::Decoder<'de> + ?Sized,
32768    {
32769        fn decode(
32770            slot: ::fidl_next::Slot<'_, Self>,
32771            decoder: &mut ___D,
32772            _: (),
32773        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
32774            ::fidl_next::munge!(let Self { table } = slot);
32775
32776            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
32777                match ordinal {
32778                    0 => unsafe { ::core::hint::unreachable_unchecked() },
32779
32780                    1 => {
32781                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
32782                            slot.as_mut(),
32783                            decoder,
32784                            (),
32785                        )?;
32786
32787                        Ok(())
32788                    }
32789
32790                    2 => {
32791                        ::fidl_next::wire::Envelope::decode_as::<
32792                            ___D,
32793                            ::fidl_next::wire::String<'de>,
32794                        >(slot.as_mut(), decoder, 100)?;
32795
32796                        let value = unsafe {
32797                            slot.deref_unchecked()
32798                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
32799                        };
32800
32801                        if value.len() > 100 {
32802                            return Err(::fidl_next::DecodeError::VectorTooLong {
32803                                size: value.len() as u64,
32804                                limit: 100,
32805                            });
32806                        }
32807
32808                        Ok(())
32809                    }
32810
32811                    3 => {
32812                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
32813                            slot.as_mut(),
32814                            decoder,
32815                            (),
32816                        )?;
32817
32818                        Ok(())
32819                    }
32820
32821                    4 => {
32822                        ::fidl_next::wire::Envelope::decode_as::<
32823                            ___D,
32824                            ::fidl_next::wire::String<'de>,
32825                        >(slot.as_mut(), decoder, 100)?;
32826
32827                        let value = unsafe {
32828                            slot.deref_unchecked()
32829                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
32830                        };
32831
32832                        if value.len() > 100 {
32833                            return Err(::fidl_next::DecodeError::VectorTooLong {
32834                                size: value.len() as u64,
32835                                limit: 100,
32836                            });
32837                        }
32838
32839                        Ok(())
32840                    }
32841
32842                    5 => {
32843                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::DependencyType>(
32844                            slot.as_mut(),
32845                            decoder,
32846                            (),
32847                        )?;
32848
32849                        Ok(())
32850                    }
32851
32852                    6 => {
32853                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Availability>(
32854                            slot.as_mut(),
32855                            decoder,
32856                            (),
32857                        )?;
32858
32859                        Ok(())
32860                    }
32861
32862                    7 => {
32863                        ::fidl_next::wire::Envelope::decode_as::<
32864                            ___D,
32865                            ::fidl_next::wire::String<'de>,
32866                        >(slot.as_mut(), decoder, 1024)?;
32867
32868                        let value = unsafe {
32869                            slot.deref_unchecked()
32870                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
32871                        };
32872
32873                        if value.len() > 1024 {
32874                            return Err(::fidl_next::DecodeError::VectorTooLong {
32875                                size: value.len() as u64,
32876                                limit: 1024,
32877                            });
32878                        }
32879
32880                        Ok(())
32881                    }
32882
32883                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
32884                }
32885            })
32886        }
32887    }
32888
32889    impl<'de> OfferDictionary<'de> {
32890        pub fn source(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
32891            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
32892        }
32893
32894        pub fn take_source(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
32895            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
32896        }
32897
32898        pub fn source_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
32899            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
32900        }
32901
32902        pub fn take_source_name(
32903            &mut self,
32904        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
32905            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
32906        }
32907
32908        pub fn target(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
32909            unsafe { Some(self.table.get(3)?.deref_unchecked()) }
32910        }
32911
32912        pub fn take_target(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
32913            unsafe { Some(self.table.get_mut(3)?.take_unchecked()) }
32914        }
32915
32916        pub fn target_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
32917            unsafe { Some(self.table.get(4)?.deref_unchecked()) }
32918        }
32919
32920        pub fn take_target_name(
32921            &mut self,
32922        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
32923            unsafe { Some(self.table.get_mut(4)?.take_unchecked()) }
32924        }
32925
32926        pub fn dependency_type(&self) -> ::core::option::Option<&crate::wire::DependencyType> {
32927            unsafe { Some(self.table.get(5)?.deref_unchecked()) }
32928        }
32929
32930        pub fn take_dependency_type(
32931            &mut self,
32932        ) -> ::core::option::Option<crate::wire::DependencyType> {
32933            unsafe { Some(self.table.get_mut(5)?.take_unchecked()) }
32934        }
32935
32936        pub fn availability(&self) -> ::core::option::Option<&crate::wire::Availability> {
32937            unsafe { Some(self.table.get(6)?.deref_unchecked()) }
32938        }
32939
32940        pub fn take_availability(&mut self) -> ::core::option::Option<crate::wire::Availability> {
32941            unsafe { Some(self.table.get_mut(6)?.take_unchecked()) }
32942        }
32943
32944        pub fn source_dictionary(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
32945            unsafe { Some(self.table.get(7)?.deref_unchecked()) }
32946        }
32947
32948        pub fn take_source_dictionary(
32949            &mut self,
32950        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
32951            unsafe { Some(self.table.get_mut(7)?.take_unchecked()) }
32952        }
32953    }
32954
32955    impl<'de> ::core::fmt::Debug for OfferDictionary<'de> {
32956        fn fmt(
32957            &self,
32958            f: &mut ::core::fmt::Formatter<'_>,
32959        ) -> ::core::result::Result<(), ::core::fmt::Error> {
32960            f.debug_struct("OfferDictionary")
32961                .field("source", &self.source())
32962                .field("source_name", &self.source_name())
32963                .field("target", &self.target())
32964                .field("target_name", &self.target_name())
32965                .field("dependency_type", &self.dependency_type())
32966                .field("availability", &self.availability())
32967                .field("source_dictionary", &self.source_dictionary())
32968                .finish()
32969        }
32970    }
32971
32972    impl<'de> ::fidl_next::IntoNatural for OfferDictionary<'de> {
32973        type Natural = crate::natural::OfferDictionary;
32974    }
32975
32976    /// The wire type corresponding to [`OfferConfiguration`].
32977    #[repr(C)]
32978    pub struct OfferConfiguration<'de> {
32979        pub(crate) table: ::fidl_next::wire::Table<'de>,
32980    }
32981
32982    impl<'de> Drop for OfferConfiguration<'de> {
32983        fn drop(&mut self) {
32984            let _ = self
32985                .table
32986                .get(1)
32987                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
32988
32989            let _ = self.table.get(2).map(|envelope| unsafe {
32990                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
32991            });
32992
32993            let _ = self
32994                .table
32995                .get(3)
32996                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
32997
32998            let _ = self.table.get(4).map(|envelope| unsafe {
32999                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
33000            });
33001
33002            let _ = self
33003                .table
33004                .get(5)
33005                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Availability>() });
33006
33007            let _ = self.table.get(6).map(|envelope| unsafe {
33008                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
33009            });
33010        }
33011    }
33012
33013    impl ::fidl_next::Constrained for OfferConfiguration<'_> {
33014        type Constraint = ();
33015
33016        fn validate(
33017            _: ::fidl_next::Slot<'_, Self>,
33018            _: Self::Constraint,
33019        ) -> Result<(), ::fidl_next::ValidationError> {
33020            Ok(())
33021        }
33022    }
33023
33024    unsafe impl ::fidl_next::Wire for OfferConfiguration<'static> {
33025        type Narrowed<'de> = OfferConfiguration<'de>;
33026
33027        #[inline]
33028        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
33029            ::fidl_next::munge!(let Self { table } = out);
33030            ::fidl_next::wire::Table::zero_padding(table);
33031        }
33032    }
33033
33034    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for OfferConfiguration<'de>
33035    where
33036        ___D: ::fidl_next::Decoder<'de> + ?Sized,
33037    {
33038        fn decode(
33039            slot: ::fidl_next::Slot<'_, Self>,
33040            decoder: &mut ___D,
33041            _: (),
33042        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
33043            ::fidl_next::munge!(let Self { table } = slot);
33044
33045            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
33046                match ordinal {
33047                    0 => unsafe { ::core::hint::unreachable_unchecked() },
33048
33049                    1 => {
33050                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
33051                            slot.as_mut(),
33052                            decoder,
33053                            (),
33054                        )?;
33055
33056                        Ok(())
33057                    }
33058
33059                    2 => {
33060                        ::fidl_next::wire::Envelope::decode_as::<
33061                            ___D,
33062                            ::fidl_next::wire::String<'de>,
33063                        >(slot.as_mut(), decoder, 100)?;
33064
33065                        let value = unsafe {
33066                            slot.deref_unchecked()
33067                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
33068                        };
33069
33070                        if value.len() > 100 {
33071                            return Err(::fidl_next::DecodeError::VectorTooLong {
33072                                size: value.len() as u64,
33073                                limit: 100,
33074                            });
33075                        }
33076
33077                        Ok(())
33078                    }
33079
33080                    3 => {
33081                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
33082                            slot.as_mut(),
33083                            decoder,
33084                            (),
33085                        )?;
33086
33087                        Ok(())
33088                    }
33089
33090                    4 => {
33091                        ::fidl_next::wire::Envelope::decode_as::<
33092                            ___D,
33093                            ::fidl_next::wire::String<'de>,
33094                        >(slot.as_mut(), decoder, 100)?;
33095
33096                        let value = unsafe {
33097                            slot.deref_unchecked()
33098                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
33099                        };
33100
33101                        if value.len() > 100 {
33102                            return Err(::fidl_next::DecodeError::VectorTooLong {
33103                                size: value.len() as u64,
33104                                limit: 100,
33105                            });
33106                        }
33107
33108                        Ok(())
33109                    }
33110
33111                    5 => {
33112                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Availability>(
33113                            slot.as_mut(),
33114                            decoder,
33115                            (),
33116                        )?;
33117
33118                        Ok(())
33119                    }
33120
33121                    6 => {
33122                        ::fidl_next::wire::Envelope::decode_as::<
33123                            ___D,
33124                            ::fidl_next::wire::String<'de>,
33125                        >(slot.as_mut(), decoder, 1024)?;
33126
33127                        let value = unsafe {
33128                            slot.deref_unchecked()
33129                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
33130                        };
33131
33132                        if value.len() > 1024 {
33133                            return Err(::fidl_next::DecodeError::VectorTooLong {
33134                                size: value.len() as u64,
33135                                limit: 1024,
33136                            });
33137                        }
33138
33139                        Ok(())
33140                    }
33141
33142                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
33143                }
33144            })
33145        }
33146    }
33147
33148    impl<'de> OfferConfiguration<'de> {
33149        pub fn source(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
33150            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
33151        }
33152
33153        pub fn take_source(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
33154            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
33155        }
33156
33157        pub fn source_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
33158            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
33159        }
33160
33161        pub fn take_source_name(
33162            &mut self,
33163        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
33164            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
33165        }
33166
33167        pub fn target(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
33168            unsafe { Some(self.table.get(3)?.deref_unchecked()) }
33169        }
33170
33171        pub fn take_target(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
33172            unsafe { Some(self.table.get_mut(3)?.take_unchecked()) }
33173        }
33174
33175        pub fn target_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
33176            unsafe { Some(self.table.get(4)?.deref_unchecked()) }
33177        }
33178
33179        pub fn take_target_name(
33180            &mut self,
33181        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
33182            unsafe { Some(self.table.get_mut(4)?.take_unchecked()) }
33183        }
33184
33185        pub fn availability(&self) -> ::core::option::Option<&crate::wire::Availability> {
33186            unsafe { Some(self.table.get(5)?.deref_unchecked()) }
33187        }
33188
33189        pub fn take_availability(&mut self) -> ::core::option::Option<crate::wire::Availability> {
33190            unsafe { Some(self.table.get_mut(5)?.take_unchecked()) }
33191        }
33192
33193        pub fn source_dictionary(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
33194            unsafe { Some(self.table.get(6)?.deref_unchecked()) }
33195        }
33196
33197        pub fn take_source_dictionary(
33198            &mut self,
33199        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
33200            unsafe { Some(self.table.get_mut(6)?.take_unchecked()) }
33201        }
33202    }
33203
33204    impl<'de> ::core::fmt::Debug for OfferConfiguration<'de> {
33205        fn fmt(
33206            &self,
33207            f: &mut ::core::fmt::Formatter<'_>,
33208        ) -> ::core::result::Result<(), ::core::fmt::Error> {
33209            f.debug_struct("OfferConfiguration")
33210                .field("source", &self.source())
33211                .field("source_name", &self.source_name())
33212                .field("target", &self.target())
33213                .field("target_name", &self.target_name())
33214                .field("availability", &self.availability())
33215                .field("source_dictionary", &self.source_dictionary())
33216                .finish()
33217        }
33218    }
33219
33220    impl<'de> ::fidl_next::IntoNatural for OfferConfiguration<'de> {
33221        type Natural = crate::natural::OfferConfiguration;
33222    }
33223
33224    /// The wire type corresponding to [`Offer`].
33225    #[repr(transparent)]
33226    pub struct Offer<'de> {
33227        pub(crate) raw: ::fidl_next::wire::Union,
33228        pub(crate) _phantom: ::core::marker::PhantomData<&'de mut [::fidl_next::Chunk]>,
33229    }
33230
33231    impl<'de> Drop for Offer<'de> {
33232        fn drop(&mut self) {
33233            match self.raw.ordinal() {
33234                1 => {
33235                    let _ = unsafe {
33236                        self.raw.get().read_unchecked::<crate::wire::OfferService<'de>>()
33237                    };
33238                }
33239
33240                2 => {
33241                    let _ = unsafe {
33242                        self.raw.get().read_unchecked::<crate::wire::OfferProtocol<'de>>()
33243                    };
33244                }
33245
33246                3 => {
33247                    let _ = unsafe {
33248                        self.raw.get().read_unchecked::<crate::wire::OfferDirectory<'de>>()
33249                    };
33250                }
33251
33252                4 => {
33253                    let _ = unsafe {
33254                        self.raw.get().read_unchecked::<crate::wire::OfferStorage<'de>>()
33255                    };
33256                }
33257
33258                5 => {
33259                    let _ =
33260                        unsafe { self.raw.get().read_unchecked::<crate::wire::OfferRunner<'de>>() };
33261                }
33262
33263                6 => {
33264                    let _ = unsafe {
33265                        self.raw.get().read_unchecked::<crate::wire::OfferResolver<'de>>()
33266                    };
33267                }
33268
33269                8 => {
33270                    let _ = unsafe {
33271                        self.raw.get().read_unchecked::<crate::wire::OfferEventStream<'de>>()
33272                    };
33273                }
33274
33275                9 => {
33276                    let _ = unsafe {
33277                        self.raw.get().read_unchecked::<crate::wire::OfferDictionary<'de>>()
33278                    };
33279                }
33280
33281                10 => {
33282                    let _ = unsafe {
33283                        self.raw.get().read_unchecked::<crate::wire::OfferConfiguration<'de>>()
33284                    };
33285                }
33286
33287                _ => (),
33288            }
33289        }
33290    }
33291
33292    impl ::fidl_next::Constrained for Offer<'_> {
33293        type Constraint = ();
33294
33295        fn validate(
33296            _: ::fidl_next::Slot<'_, Self>,
33297            _: Self::Constraint,
33298        ) -> Result<(), ::fidl_next::ValidationError> {
33299            Ok(())
33300        }
33301    }
33302
33303    unsafe impl ::fidl_next::Wire for Offer<'static> {
33304        type Narrowed<'de> = Offer<'de>;
33305
33306        #[inline]
33307        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
33308            ::fidl_next::munge!(let Self { raw, _phantom: _ } = out);
33309            ::fidl_next::wire::Union::zero_padding(raw);
33310        }
33311    }
33312
33313    pub mod offer {
33314        pub enum Ref<'de> {
33315            Service(&'de crate::wire::OfferService<'de>),
33316
33317            Protocol(&'de crate::wire::OfferProtocol<'de>),
33318
33319            Directory(&'de crate::wire::OfferDirectory<'de>),
33320
33321            Storage(&'de crate::wire::OfferStorage<'de>),
33322
33323            Runner(&'de crate::wire::OfferRunner<'de>),
33324
33325            Resolver(&'de crate::wire::OfferResolver<'de>),
33326
33327            EventStream(&'de crate::wire::OfferEventStream<'de>),
33328
33329            Dictionary(&'de crate::wire::OfferDictionary<'de>),
33330
33331            Config(&'de crate::wire::OfferConfiguration<'de>),
33332
33333            UnknownOrdinal_(u64),
33334        }
33335
33336        pub enum Value<'de> {
33337            Service(crate::wire::OfferService<'de>),
33338
33339            Protocol(crate::wire::OfferProtocol<'de>),
33340
33341            Directory(crate::wire::OfferDirectory<'de>),
33342
33343            Storage(crate::wire::OfferStorage<'de>),
33344
33345            Runner(crate::wire::OfferRunner<'de>),
33346
33347            Resolver(crate::wire::OfferResolver<'de>),
33348
33349            EventStream(crate::wire::OfferEventStream<'de>),
33350
33351            Dictionary(crate::wire::OfferDictionary<'de>),
33352
33353            Config(crate::wire::OfferConfiguration<'de>),
33354
33355            UnknownOrdinal_(u64),
33356        }
33357    }
33358
33359    impl<'de> Offer<'de> {
33360        pub fn as_ref(&self) -> crate::wire::offer::Ref<'_> {
33361            match self.raw.ordinal() {
33362                1 => crate::wire::offer::Ref::Service(unsafe {
33363                    self.raw.get().deref_unchecked::<crate::wire::OfferService<'_>>()
33364                }),
33365
33366                2 => crate::wire::offer::Ref::Protocol(unsafe {
33367                    self.raw.get().deref_unchecked::<crate::wire::OfferProtocol<'_>>()
33368                }),
33369
33370                3 => crate::wire::offer::Ref::Directory(unsafe {
33371                    self.raw.get().deref_unchecked::<crate::wire::OfferDirectory<'_>>()
33372                }),
33373
33374                4 => crate::wire::offer::Ref::Storage(unsafe {
33375                    self.raw.get().deref_unchecked::<crate::wire::OfferStorage<'_>>()
33376                }),
33377
33378                5 => crate::wire::offer::Ref::Runner(unsafe {
33379                    self.raw.get().deref_unchecked::<crate::wire::OfferRunner<'_>>()
33380                }),
33381
33382                6 => crate::wire::offer::Ref::Resolver(unsafe {
33383                    self.raw.get().deref_unchecked::<crate::wire::OfferResolver<'_>>()
33384                }),
33385
33386                8 => crate::wire::offer::Ref::EventStream(unsafe {
33387                    self.raw.get().deref_unchecked::<crate::wire::OfferEventStream<'_>>()
33388                }),
33389
33390                9 => crate::wire::offer::Ref::Dictionary(unsafe {
33391                    self.raw.get().deref_unchecked::<crate::wire::OfferDictionary<'_>>()
33392                }),
33393
33394                10 => crate::wire::offer::Ref::Config(unsafe {
33395                    self.raw.get().deref_unchecked::<crate::wire::OfferConfiguration<'_>>()
33396                }),
33397
33398                unknown => crate::wire::offer::Ref::UnknownOrdinal_(unknown),
33399            }
33400        }
33401
33402        pub fn into_inner(self) -> crate::wire::offer::Value<'de> {
33403            let this = ::core::mem::ManuallyDrop::new(self);
33404
33405            match this.raw.ordinal() {
33406                1 => crate::wire::offer::Value::Service(unsafe {
33407                    this.raw.get().read_unchecked::<crate::wire::OfferService<'de>>()
33408                }),
33409
33410                2 => crate::wire::offer::Value::Protocol(unsafe {
33411                    this.raw.get().read_unchecked::<crate::wire::OfferProtocol<'de>>()
33412                }),
33413
33414                3 => crate::wire::offer::Value::Directory(unsafe {
33415                    this.raw.get().read_unchecked::<crate::wire::OfferDirectory<'de>>()
33416                }),
33417
33418                4 => crate::wire::offer::Value::Storage(unsafe {
33419                    this.raw.get().read_unchecked::<crate::wire::OfferStorage<'de>>()
33420                }),
33421
33422                5 => crate::wire::offer::Value::Runner(unsafe {
33423                    this.raw.get().read_unchecked::<crate::wire::OfferRunner<'de>>()
33424                }),
33425
33426                6 => crate::wire::offer::Value::Resolver(unsafe {
33427                    this.raw.get().read_unchecked::<crate::wire::OfferResolver<'de>>()
33428                }),
33429
33430                8 => crate::wire::offer::Value::EventStream(unsafe {
33431                    this.raw.get().read_unchecked::<crate::wire::OfferEventStream<'de>>()
33432                }),
33433
33434                9 => crate::wire::offer::Value::Dictionary(unsafe {
33435                    this.raw.get().read_unchecked::<crate::wire::OfferDictionary<'de>>()
33436                }),
33437
33438                10 => crate::wire::offer::Value::Config(unsafe {
33439                    this.raw.get().read_unchecked::<crate::wire::OfferConfiguration<'de>>()
33440                }),
33441
33442                unknown => crate::wire::offer::Value::UnknownOrdinal_(unknown),
33443            }
33444        }
33445    }
33446
33447    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for Offer<'de>
33448    where
33449        ___D: ::fidl_next::decoder::InternalHandleDecoder + ?Sized,
33450        ___D: ::fidl_next::Decoder<'de>,
33451    {
33452        fn decode(
33453            mut slot: ::fidl_next::Slot<'_, Self>,
33454            decoder: &mut ___D,
33455            _: (),
33456        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
33457            ::fidl_next::munge!(let Self { mut raw, _phantom: _ } = slot.as_mut());
33458            match ::fidl_next::wire::Union::encoded_ordinal(raw.as_mut()) {
33459                1 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::OfferService<'de>>(
33460                    raw,
33461                    decoder,
33462                    (),
33463                )?,
33464
33465                2 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::OfferProtocol<'de>>(
33466                    raw,
33467                    decoder,
33468                    (),
33469                )?,
33470
33471                3 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::OfferDirectory<'de>>(
33472                    raw,
33473                    decoder,
33474                    (),
33475                )?,
33476
33477                4 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::OfferStorage<'de>>(
33478                    raw,
33479                    decoder,
33480                    (),
33481                )?,
33482
33483                5 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::OfferRunner<'de>>(
33484                    raw,
33485                    decoder,
33486                    (),
33487                )?,
33488
33489                6 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::OfferResolver<'de>>(
33490                    raw,
33491                    decoder,
33492                    (),
33493                )?,
33494
33495                8 => {
33496                    ::fidl_next::wire::Union::decode_as::<___D, crate::wire::OfferEventStream<'de>>(
33497                        raw,
33498                        decoder,
33499                        (),
33500                    )?
33501                }
33502
33503                9 => {
33504                    ::fidl_next::wire::Union::decode_as::<___D, crate::wire::OfferDictionary<'de>>(
33505                        raw,
33506                        decoder,
33507                        (),
33508                    )?
33509                }
33510
33511                10 => ::fidl_next::wire::Union::decode_as::<
33512                    ___D,
33513                    crate::wire::OfferConfiguration<'de>,
33514                >(raw, decoder, ())?,
33515
33516                _ => ::fidl_next::wire::Union::decode_unknown(raw, decoder)?,
33517            }
33518
33519            Ok(())
33520        }
33521    }
33522
33523    impl<'de> ::core::fmt::Debug for Offer<'de> {
33524        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
33525            match self.raw.ordinal() {
33526                1 => unsafe {
33527                    self.raw.get().deref_unchecked::<crate::wire::OfferService<'_>>().fmt(f)
33528                },
33529                2 => unsafe {
33530                    self.raw.get().deref_unchecked::<crate::wire::OfferProtocol<'_>>().fmt(f)
33531                },
33532                3 => unsafe {
33533                    self.raw.get().deref_unchecked::<crate::wire::OfferDirectory<'_>>().fmt(f)
33534                },
33535                4 => unsafe {
33536                    self.raw.get().deref_unchecked::<crate::wire::OfferStorage<'_>>().fmt(f)
33537                },
33538                5 => unsafe {
33539                    self.raw.get().deref_unchecked::<crate::wire::OfferRunner<'_>>().fmt(f)
33540                },
33541                6 => unsafe {
33542                    self.raw.get().deref_unchecked::<crate::wire::OfferResolver<'_>>().fmt(f)
33543                },
33544                8 => unsafe {
33545                    self.raw.get().deref_unchecked::<crate::wire::OfferEventStream<'_>>().fmt(f)
33546                },
33547                9 => unsafe {
33548                    self.raw.get().deref_unchecked::<crate::wire::OfferDictionary<'_>>().fmt(f)
33549                },
33550                10 => unsafe {
33551                    self.raw.get().deref_unchecked::<crate::wire::OfferConfiguration<'_>>().fmt(f)
33552                },
33553                _ => unsafe { ::core::hint::unreachable_unchecked() },
33554            }
33555        }
33556    }
33557
33558    impl<'de> ::fidl_next::IntoNatural for Offer<'de> {
33559        type Natural = crate::natural::Offer;
33560    }
33561
33562    /// The wire type corresponding to [`RunnerRegistration`].
33563    #[repr(C)]
33564    pub struct RunnerRegistration<'de> {
33565        pub(crate) table: ::fidl_next::wire::Table<'de>,
33566    }
33567
33568    impl<'de> Drop for RunnerRegistration<'de> {
33569        fn drop(&mut self) {
33570            let _ = self.table.get(1).map(|envelope| unsafe {
33571                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
33572            });
33573
33574            let _ = self
33575                .table
33576                .get(2)
33577                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
33578
33579            let _ = self.table.get(3).map(|envelope| unsafe {
33580                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
33581            });
33582        }
33583    }
33584
33585    impl ::fidl_next::Constrained for RunnerRegistration<'_> {
33586        type Constraint = ();
33587
33588        fn validate(
33589            _: ::fidl_next::Slot<'_, Self>,
33590            _: Self::Constraint,
33591        ) -> Result<(), ::fidl_next::ValidationError> {
33592            Ok(())
33593        }
33594    }
33595
33596    unsafe impl ::fidl_next::Wire for RunnerRegistration<'static> {
33597        type Narrowed<'de> = RunnerRegistration<'de>;
33598
33599        #[inline]
33600        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
33601            ::fidl_next::munge!(let Self { table } = out);
33602            ::fidl_next::wire::Table::zero_padding(table);
33603        }
33604    }
33605
33606    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for RunnerRegistration<'de>
33607    where
33608        ___D: ::fidl_next::Decoder<'de> + ?Sized,
33609    {
33610        fn decode(
33611            slot: ::fidl_next::Slot<'_, Self>,
33612            decoder: &mut ___D,
33613            _: (),
33614        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
33615            ::fidl_next::munge!(let Self { table } = slot);
33616
33617            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
33618                match ordinal {
33619                    0 => unsafe { ::core::hint::unreachable_unchecked() },
33620
33621                    1 => {
33622                        ::fidl_next::wire::Envelope::decode_as::<
33623                            ___D,
33624                            ::fidl_next::wire::String<'de>,
33625                        >(slot.as_mut(), decoder, 100)?;
33626
33627                        let value = unsafe {
33628                            slot.deref_unchecked()
33629                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
33630                        };
33631
33632                        if value.len() > 100 {
33633                            return Err(::fidl_next::DecodeError::VectorTooLong {
33634                                size: value.len() as u64,
33635                                limit: 100,
33636                            });
33637                        }
33638
33639                        Ok(())
33640                    }
33641
33642                    2 => {
33643                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
33644                            slot.as_mut(),
33645                            decoder,
33646                            (),
33647                        )?;
33648
33649                        Ok(())
33650                    }
33651
33652                    3 => {
33653                        ::fidl_next::wire::Envelope::decode_as::<
33654                            ___D,
33655                            ::fidl_next::wire::String<'de>,
33656                        >(slot.as_mut(), decoder, 100)?;
33657
33658                        let value = unsafe {
33659                            slot.deref_unchecked()
33660                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
33661                        };
33662
33663                        if value.len() > 100 {
33664                            return Err(::fidl_next::DecodeError::VectorTooLong {
33665                                size: value.len() as u64,
33666                                limit: 100,
33667                            });
33668                        }
33669
33670                        Ok(())
33671                    }
33672
33673                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
33674                }
33675            })
33676        }
33677    }
33678
33679    impl<'de> RunnerRegistration<'de> {
33680        pub fn source_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
33681            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
33682        }
33683
33684        pub fn take_source_name(
33685            &mut self,
33686        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
33687            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
33688        }
33689
33690        pub fn source(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
33691            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
33692        }
33693
33694        pub fn take_source(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
33695            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
33696        }
33697
33698        pub fn target_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
33699            unsafe { Some(self.table.get(3)?.deref_unchecked()) }
33700        }
33701
33702        pub fn take_target_name(
33703            &mut self,
33704        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
33705            unsafe { Some(self.table.get_mut(3)?.take_unchecked()) }
33706        }
33707    }
33708
33709    impl<'de> ::core::fmt::Debug for RunnerRegistration<'de> {
33710        fn fmt(
33711            &self,
33712            f: &mut ::core::fmt::Formatter<'_>,
33713        ) -> ::core::result::Result<(), ::core::fmt::Error> {
33714            f.debug_struct("RunnerRegistration")
33715                .field("source_name", &self.source_name())
33716                .field("source", &self.source())
33717                .field("target_name", &self.target_name())
33718                .finish()
33719        }
33720    }
33721
33722    impl<'de> ::fidl_next::IntoNatural for RunnerRegistration<'de> {
33723        type Natural = crate::natural::RunnerRegistration;
33724    }
33725
33726    /// The wire type corresponding to [`ResolverRegistration`].
33727    #[repr(C)]
33728    pub struct ResolverRegistration<'de> {
33729        pub(crate) table: ::fidl_next::wire::Table<'de>,
33730    }
33731
33732    impl<'de> Drop for ResolverRegistration<'de> {
33733        fn drop(&mut self) {
33734            let _ = self.table.get(1).map(|envelope| unsafe {
33735                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
33736            });
33737
33738            let _ = self
33739                .table
33740                .get(2)
33741                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
33742
33743            let _ = self.table.get(3).map(|envelope| unsafe {
33744                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
33745            });
33746        }
33747    }
33748
33749    impl ::fidl_next::Constrained for ResolverRegistration<'_> {
33750        type Constraint = ();
33751
33752        fn validate(
33753            _: ::fidl_next::Slot<'_, Self>,
33754            _: Self::Constraint,
33755        ) -> Result<(), ::fidl_next::ValidationError> {
33756            Ok(())
33757        }
33758    }
33759
33760    unsafe impl ::fidl_next::Wire for ResolverRegistration<'static> {
33761        type Narrowed<'de> = ResolverRegistration<'de>;
33762
33763        #[inline]
33764        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
33765            ::fidl_next::munge!(let Self { table } = out);
33766            ::fidl_next::wire::Table::zero_padding(table);
33767        }
33768    }
33769
33770    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for ResolverRegistration<'de>
33771    where
33772        ___D: ::fidl_next::Decoder<'de> + ?Sized,
33773    {
33774        fn decode(
33775            slot: ::fidl_next::Slot<'_, Self>,
33776            decoder: &mut ___D,
33777            _: (),
33778        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
33779            ::fidl_next::munge!(let Self { table } = slot);
33780
33781            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
33782                match ordinal {
33783                    0 => unsafe { ::core::hint::unreachable_unchecked() },
33784
33785                    1 => {
33786                        ::fidl_next::wire::Envelope::decode_as::<
33787                            ___D,
33788                            ::fidl_next::wire::String<'de>,
33789                        >(slot.as_mut(), decoder, 100)?;
33790
33791                        let value = unsafe {
33792                            slot.deref_unchecked()
33793                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
33794                        };
33795
33796                        if value.len() > 100 {
33797                            return Err(::fidl_next::DecodeError::VectorTooLong {
33798                                size: value.len() as u64,
33799                                limit: 100,
33800                            });
33801                        }
33802
33803                        Ok(())
33804                    }
33805
33806                    2 => {
33807                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
33808                            slot.as_mut(),
33809                            decoder,
33810                            (),
33811                        )?;
33812
33813                        Ok(())
33814                    }
33815
33816                    3 => {
33817                        ::fidl_next::wire::Envelope::decode_as::<
33818                            ___D,
33819                            ::fidl_next::wire::String<'de>,
33820                        >(slot.as_mut(), decoder, 100)?;
33821
33822                        let value = unsafe {
33823                            slot.deref_unchecked()
33824                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
33825                        };
33826
33827                        if value.len() > 100 {
33828                            return Err(::fidl_next::DecodeError::VectorTooLong {
33829                                size: value.len() as u64,
33830                                limit: 100,
33831                            });
33832                        }
33833
33834                        Ok(())
33835                    }
33836
33837                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
33838                }
33839            })
33840        }
33841    }
33842
33843    impl<'de> ResolverRegistration<'de> {
33844        pub fn resolver(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
33845            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
33846        }
33847
33848        pub fn take_resolver(&mut self) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
33849            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
33850        }
33851
33852        pub fn source(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
33853            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
33854        }
33855
33856        pub fn take_source(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
33857            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
33858        }
33859
33860        pub fn scheme(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
33861            unsafe { Some(self.table.get(3)?.deref_unchecked()) }
33862        }
33863
33864        pub fn take_scheme(&mut self) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
33865            unsafe { Some(self.table.get_mut(3)?.take_unchecked()) }
33866        }
33867    }
33868
33869    impl<'de> ::core::fmt::Debug for ResolverRegistration<'de> {
33870        fn fmt(
33871            &self,
33872            f: &mut ::core::fmt::Formatter<'_>,
33873        ) -> ::core::result::Result<(), ::core::fmt::Error> {
33874            f.debug_struct("ResolverRegistration")
33875                .field("resolver", &self.resolver())
33876                .field("source", &self.source())
33877                .field("scheme", &self.scheme())
33878                .finish()
33879        }
33880    }
33881
33882    impl<'de> ::fidl_next::IntoNatural for ResolverRegistration<'de> {
33883        type Natural = crate::natural::ResolverRegistration;
33884    }
33885
33886    /// The wire type corresponding to [`DebugProtocolRegistration`].
33887    #[repr(C)]
33888    pub struct DebugProtocolRegistration<'de> {
33889        pub(crate) table: ::fidl_next::wire::Table<'de>,
33890    }
33891
33892    impl<'de> Drop for DebugProtocolRegistration<'de> {
33893        fn drop(&mut self) {
33894            let _ = self
33895                .table
33896                .get(1)
33897                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Ref<'de>>() });
33898
33899            let _ = self.table.get(2).map(|envelope| unsafe {
33900                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
33901            });
33902
33903            let _ = self.table.get(3).map(|envelope| unsafe {
33904                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
33905            });
33906        }
33907    }
33908
33909    impl ::fidl_next::Constrained for DebugProtocolRegistration<'_> {
33910        type Constraint = ();
33911
33912        fn validate(
33913            _: ::fidl_next::Slot<'_, Self>,
33914            _: Self::Constraint,
33915        ) -> Result<(), ::fidl_next::ValidationError> {
33916            Ok(())
33917        }
33918    }
33919
33920    unsafe impl ::fidl_next::Wire for DebugProtocolRegistration<'static> {
33921        type Narrowed<'de> = DebugProtocolRegistration<'de>;
33922
33923        #[inline]
33924        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
33925            ::fidl_next::munge!(let Self { table } = out);
33926            ::fidl_next::wire::Table::zero_padding(table);
33927        }
33928    }
33929
33930    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for DebugProtocolRegistration<'de>
33931    where
33932        ___D: ::fidl_next::Decoder<'de> + ?Sized,
33933    {
33934        fn decode(
33935            slot: ::fidl_next::Slot<'_, Self>,
33936            decoder: &mut ___D,
33937            _: (),
33938        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
33939            ::fidl_next::munge!(let Self { table } = slot);
33940
33941            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
33942                match ordinal {
33943                    0 => unsafe { ::core::hint::unreachable_unchecked() },
33944
33945                    1 => {
33946                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Ref<'de>>(
33947                            slot.as_mut(),
33948                            decoder,
33949                            (),
33950                        )?;
33951
33952                        Ok(())
33953                    }
33954
33955                    2 => {
33956                        ::fidl_next::wire::Envelope::decode_as::<
33957                            ___D,
33958                            ::fidl_next::wire::String<'de>,
33959                        >(slot.as_mut(), decoder, 100)?;
33960
33961                        let value = unsafe {
33962                            slot.deref_unchecked()
33963                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
33964                        };
33965
33966                        if value.len() > 100 {
33967                            return Err(::fidl_next::DecodeError::VectorTooLong {
33968                                size: value.len() as u64,
33969                                limit: 100,
33970                            });
33971                        }
33972
33973                        Ok(())
33974                    }
33975
33976                    3 => {
33977                        ::fidl_next::wire::Envelope::decode_as::<
33978                            ___D,
33979                            ::fidl_next::wire::String<'de>,
33980                        >(slot.as_mut(), decoder, 100)?;
33981
33982                        let value = unsafe {
33983                            slot.deref_unchecked()
33984                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
33985                        };
33986
33987                        if value.len() > 100 {
33988                            return Err(::fidl_next::DecodeError::VectorTooLong {
33989                                size: value.len() as u64,
33990                                limit: 100,
33991                            });
33992                        }
33993
33994                        Ok(())
33995                    }
33996
33997                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
33998                }
33999            })
34000        }
34001    }
34002
34003    impl<'de> DebugProtocolRegistration<'de> {
34004        pub fn source(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
34005            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
34006        }
34007
34008        pub fn take_source(&mut self) -> ::core::option::Option<crate::wire::Ref<'de>> {
34009            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
34010        }
34011
34012        pub fn source_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
34013            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
34014        }
34015
34016        pub fn take_source_name(
34017            &mut self,
34018        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
34019            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
34020        }
34021
34022        pub fn target_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
34023            unsafe { Some(self.table.get(3)?.deref_unchecked()) }
34024        }
34025
34026        pub fn take_target_name(
34027            &mut self,
34028        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
34029            unsafe { Some(self.table.get_mut(3)?.take_unchecked()) }
34030        }
34031    }
34032
34033    impl<'de> ::core::fmt::Debug for DebugProtocolRegistration<'de> {
34034        fn fmt(
34035            &self,
34036            f: &mut ::core::fmt::Formatter<'_>,
34037        ) -> ::core::result::Result<(), ::core::fmt::Error> {
34038            f.debug_struct("DebugProtocolRegistration")
34039                .field("source", &self.source())
34040                .field("source_name", &self.source_name())
34041                .field("target_name", &self.target_name())
34042                .finish()
34043        }
34044    }
34045
34046    impl<'de> ::fidl_next::IntoNatural for DebugProtocolRegistration<'de> {
34047        type Natural = crate::natural::DebugProtocolRegistration;
34048    }
34049
34050    /// The wire type corresponding to [`DebugRegistration`].
34051    #[repr(transparent)]
34052    pub struct DebugRegistration<'de> {
34053        pub(crate) raw: ::fidl_next::wire::Union,
34054        pub(crate) _phantom: ::core::marker::PhantomData<&'de mut [::fidl_next::Chunk]>,
34055    }
34056
34057    impl<'de> Drop for DebugRegistration<'de> {
34058        fn drop(&mut self) {
34059            match self.raw.ordinal() {
34060                1 => {
34061                    let _ = unsafe {
34062                        self.raw
34063                            .get()
34064                            .read_unchecked::<crate::wire::DebugProtocolRegistration<'de>>()
34065                    };
34066                }
34067
34068                _ => (),
34069            }
34070        }
34071    }
34072
34073    impl ::fidl_next::Constrained for DebugRegistration<'_> {
34074        type Constraint = ();
34075
34076        fn validate(
34077            _: ::fidl_next::Slot<'_, Self>,
34078            _: Self::Constraint,
34079        ) -> Result<(), ::fidl_next::ValidationError> {
34080            Ok(())
34081        }
34082    }
34083
34084    unsafe impl ::fidl_next::Wire for DebugRegistration<'static> {
34085        type Narrowed<'de> = DebugRegistration<'de>;
34086
34087        #[inline]
34088        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
34089            ::fidl_next::munge!(let Self { raw, _phantom: _ } = out);
34090            ::fidl_next::wire::Union::zero_padding(raw);
34091        }
34092    }
34093
34094    pub mod debug_registration {
34095        pub enum Ref<'de> {
34096            Protocol(&'de crate::wire::DebugProtocolRegistration<'de>),
34097
34098            UnknownOrdinal_(u64),
34099        }
34100
34101        pub enum Value<'de> {
34102            Protocol(crate::wire::DebugProtocolRegistration<'de>),
34103
34104            UnknownOrdinal_(u64),
34105        }
34106    }
34107
34108    impl<'de> DebugRegistration<'de> {
34109        pub fn as_ref(&self) -> crate::wire::debug_registration::Ref<'_> {
34110            match self.raw.ordinal() {
34111                1 => crate::wire::debug_registration::Ref::Protocol(unsafe {
34112                    self.raw.get().deref_unchecked::<crate::wire::DebugProtocolRegistration<'_>>()
34113                }),
34114
34115                unknown => crate::wire::debug_registration::Ref::UnknownOrdinal_(unknown),
34116            }
34117        }
34118
34119        pub fn into_inner(self) -> crate::wire::debug_registration::Value<'de> {
34120            let this = ::core::mem::ManuallyDrop::new(self);
34121
34122            match this.raw.ordinal() {
34123                1 => crate::wire::debug_registration::Value::Protocol(unsafe {
34124                    this.raw.get().read_unchecked::<crate::wire::DebugProtocolRegistration<'de>>()
34125                }),
34126
34127                unknown => crate::wire::debug_registration::Value::UnknownOrdinal_(unknown),
34128            }
34129        }
34130    }
34131
34132    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for DebugRegistration<'de>
34133    where
34134        ___D: ::fidl_next::decoder::InternalHandleDecoder + ?Sized,
34135        ___D: ::fidl_next::Decoder<'de>,
34136    {
34137        fn decode(
34138            mut slot: ::fidl_next::Slot<'_, Self>,
34139            decoder: &mut ___D,
34140            _: (),
34141        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
34142            ::fidl_next::munge!(let Self { mut raw, _phantom: _ } = slot.as_mut());
34143            match ::fidl_next::wire::Union::encoded_ordinal(raw.as_mut()) {
34144                1 => ::fidl_next::wire::Union::decode_as::<
34145                    ___D,
34146                    crate::wire::DebugProtocolRegistration<'de>,
34147                >(raw, decoder, ())?,
34148
34149                _ => ::fidl_next::wire::Union::decode_unknown(raw, decoder)?,
34150            }
34151
34152            Ok(())
34153        }
34154    }
34155
34156    impl<'de> ::core::fmt::Debug for DebugRegistration<'de> {
34157        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
34158            match self.raw.ordinal() {
34159                1 => unsafe {
34160                    self.raw
34161                        .get()
34162                        .deref_unchecked::<crate::wire::DebugProtocolRegistration<'_>>()
34163                        .fmt(f)
34164                },
34165                _ => unsafe { ::core::hint::unreachable_unchecked() },
34166            }
34167        }
34168    }
34169
34170    impl<'de> ::fidl_next::IntoNatural for DebugRegistration<'de> {
34171        type Natural = crate::natural::DebugRegistration;
34172    }
34173
34174    /// The wire type corresponding to [`Environment`].
34175    #[repr(C)]
34176    pub struct Environment<'de> {
34177        pub(crate) table: ::fidl_next::wire::Table<'de>,
34178    }
34179
34180    impl<'de> Drop for Environment<'de> {
34181        fn drop(&mut self) {
34182            let _ = self.table.get(1).map(|envelope| unsafe {
34183                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
34184            });
34185
34186            let _ = self.table.get(2).map(|envelope| unsafe {
34187                envelope.read_unchecked::<crate::wire::EnvironmentExtends>()
34188            });
34189
34190            let _ = self.table.get(3)
34191                .map(|envelope| unsafe {
34192                    envelope.read_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::RunnerRegistration<'de>>>()
34193                });
34194
34195            let _ = self.table.get(4)
34196                .map(|envelope| unsafe {
34197                    envelope.read_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::ResolverRegistration<'de>>>()
34198                });
34199
34200            let _ = self.table.get(5)
34201                .map(|envelope| unsafe {
34202                    envelope.read_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::DebugRegistration<'de>>>()
34203                });
34204
34205            let _ = self
34206                .table
34207                .get(6)
34208                .map(|envelope| unsafe { envelope.read_unchecked::<::fidl_next::wire::Uint32>() });
34209        }
34210    }
34211
34212    impl ::fidl_next::Constrained for Environment<'_> {
34213        type Constraint = ();
34214
34215        fn validate(
34216            _: ::fidl_next::Slot<'_, Self>,
34217            _: Self::Constraint,
34218        ) -> Result<(), ::fidl_next::ValidationError> {
34219            Ok(())
34220        }
34221    }
34222
34223    unsafe impl ::fidl_next::Wire for Environment<'static> {
34224        type Narrowed<'de> = Environment<'de>;
34225
34226        #[inline]
34227        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
34228            ::fidl_next::munge!(let Self { table } = out);
34229            ::fidl_next::wire::Table::zero_padding(table);
34230        }
34231    }
34232
34233    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for Environment<'de>
34234    where
34235        ___D: ::fidl_next::Decoder<'de> + ?Sized,
34236    {
34237        fn decode(
34238            slot: ::fidl_next::Slot<'_, Self>,
34239            decoder: &mut ___D,
34240            _: (),
34241        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
34242            ::fidl_next::munge!(let Self { table } = slot);
34243
34244            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
34245                match ordinal {
34246                    0 => unsafe { ::core::hint::unreachable_unchecked() },
34247
34248                    1 => {
34249                        ::fidl_next::wire::Envelope::decode_as::<
34250                            ___D,
34251                            ::fidl_next::wire::String<'de>,
34252                        >(slot.as_mut(), decoder, 100)?;
34253
34254                        let value = unsafe {
34255                            slot.deref_unchecked()
34256                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
34257                        };
34258
34259                        if value.len() > 100 {
34260                            return Err(::fidl_next::DecodeError::VectorTooLong {
34261                                size: value.len() as u64,
34262                                limit: 100,
34263                            });
34264                        }
34265
34266                        Ok(())
34267                    }
34268
34269                    2 => {
34270                        ::fidl_next::wire::Envelope::decode_as::<
34271                            ___D,
34272                            crate::wire::EnvironmentExtends,
34273                        >(slot.as_mut(), decoder, ())?;
34274
34275                        Ok(())
34276                    }
34277
34278                    3 => {
34279                        ::fidl_next::wire::Envelope::decode_as::<
34280                            ___D,
34281                            ::fidl_next::wire::Vector<'de, crate::wire::RunnerRegistration<'de>>,
34282                        >(slot.as_mut(), decoder, (4294967295, ()))?;
34283
34284                        Ok(())
34285                    }
34286
34287                    4 => {
34288                        ::fidl_next::wire::Envelope::decode_as::<
34289                            ___D,
34290                            ::fidl_next::wire::Vector<'de, crate::wire::ResolverRegistration<'de>>,
34291                        >(slot.as_mut(), decoder, (4294967295, ()))?;
34292
34293                        Ok(())
34294                    }
34295
34296                    5 => {
34297                        ::fidl_next::wire::Envelope::decode_as::<
34298                            ___D,
34299                            ::fidl_next::wire::Vector<'de, crate::wire::DebugRegistration<'de>>,
34300                        >(slot.as_mut(), decoder, (4294967295, ()))?;
34301
34302                        Ok(())
34303                    }
34304
34305                    6 => {
34306                        ::fidl_next::wire::Envelope::decode_as::<___D, ::fidl_next::wire::Uint32>(
34307                            slot.as_mut(),
34308                            decoder,
34309                            (),
34310                        )?;
34311
34312                        Ok(())
34313                    }
34314
34315                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
34316                }
34317            })
34318        }
34319    }
34320
34321    impl<'de> Environment<'de> {
34322        pub fn name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
34323            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
34324        }
34325
34326        pub fn take_name(&mut self) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
34327            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
34328        }
34329
34330        pub fn extends(&self) -> ::core::option::Option<&crate::wire::EnvironmentExtends> {
34331            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
34332        }
34333
34334        pub fn take_extends(&mut self) -> ::core::option::Option<crate::wire::EnvironmentExtends> {
34335            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
34336        }
34337
34338        pub fn runners(
34339            &self,
34340        ) -> ::core::option::Option<
34341            &::fidl_next::wire::Vector<'de, crate::wire::RunnerRegistration<'de>>,
34342        > {
34343            unsafe { Some(self.table.get(3)?.deref_unchecked()) }
34344        }
34345
34346        pub fn take_runners(
34347            &mut self,
34348        ) -> ::core::option::Option<
34349            ::fidl_next::wire::Vector<'de, crate::wire::RunnerRegistration<'de>>,
34350        > {
34351            unsafe { Some(self.table.get_mut(3)?.take_unchecked()) }
34352        }
34353
34354        pub fn resolvers(
34355            &self,
34356        ) -> ::core::option::Option<
34357            &::fidl_next::wire::Vector<'de, crate::wire::ResolverRegistration<'de>>,
34358        > {
34359            unsafe { Some(self.table.get(4)?.deref_unchecked()) }
34360        }
34361
34362        pub fn take_resolvers(
34363            &mut self,
34364        ) -> ::core::option::Option<
34365            ::fidl_next::wire::Vector<'de, crate::wire::ResolverRegistration<'de>>,
34366        > {
34367            unsafe { Some(self.table.get_mut(4)?.take_unchecked()) }
34368        }
34369
34370        pub fn debug_capabilities(
34371            &self,
34372        ) -> ::core::option::Option<
34373            &::fidl_next::wire::Vector<'de, crate::wire::DebugRegistration<'de>>,
34374        > {
34375            unsafe { Some(self.table.get(5)?.deref_unchecked()) }
34376        }
34377
34378        pub fn take_debug_capabilities(
34379            &mut self,
34380        ) -> ::core::option::Option<
34381            ::fidl_next::wire::Vector<'de, crate::wire::DebugRegistration<'de>>,
34382        > {
34383            unsafe { Some(self.table.get_mut(5)?.take_unchecked()) }
34384        }
34385
34386        pub fn stop_timeout_ms(&self) -> ::core::option::Option<&::fidl_next::wire::Uint32> {
34387            unsafe { Some(self.table.get(6)?.deref_unchecked()) }
34388        }
34389
34390        pub fn take_stop_timeout_ms(
34391            &mut self,
34392        ) -> ::core::option::Option<::fidl_next::wire::Uint32> {
34393            unsafe { Some(self.table.get_mut(6)?.take_unchecked()) }
34394        }
34395    }
34396
34397    impl<'de> ::core::fmt::Debug for Environment<'de> {
34398        fn fmt(
34399            &self,
34400            f: &mut ::core::fmt::Formatter<'_>,
34401        ) -> ::core::result::Result<(), ::core::fmt::Error> {
34402            f.debug_struct("Environment")
34403                .field("name", &self.name())
34404                .field("extends", &self.extends())
34405                .field("runners", &self.runners())
34406                .field("resolvers", &self.resolvers())
34407                .field("debug_capabilities", &self.debug_capabilities())
34408                .field("stop_timeout_ms", &self.stop_timeout_ms())
34409                .finish()
34410        }
34411    }
34412
34413    impl<'de> ::fidl_next::IntoNatural for Environment<'de> {
34414        type Natural = crate::natural::Environment;
34415    }
34416
34417    /// The wire type corresponding to [`ConfigSourceCapabilities`].
34418    #[repr(C)]
34419    pub struct ConfigSourceCapabilities<'de> {
34420        pub(crate) table: ::fidl_next::wire::Table<'de>,
34421    }
34422
34423    impl<'de> Drop for ConfigSourceCapabilities<'de> {
34424        fn drop(&mut self) {}
34425    }
34426
34427    impl ::fidl_next::Constrained for ConfigSourceCapabilities<'_> {
34428        type Constraint = ();
34429
34430        fn validate(
34431            _: ::fidl_next::Slot<'_, Self>,
34432            _: Self::Constraint,
34433        ) -> Result<(), ::fidl_next::ValidationError> {
34434            Ok(())
34435        }
34436    }
34437
34438    unsafe impl ::fidl_next::Wire for ConfigSourceCapabilities<'static> {
34439        type Narrowed<'de> = ConfigSourceCapabilities<'de>;
34440
34441        #[inline]
34442        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
34443            ::fidl_next::munge!(let Self { table } = out);
34444            ::fidl_next::wire::Table::zero_padding(table);
34445        }
34446    }
34447
34448    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for ConfigSourceCapabilities<'de>
34449    where
34450        ___D: ::fidl_next::Decoder<'de> + ?Sized,
34451    {
34452        fn decode(
34453            slot: ::fidl_next::Slot<'_, Self>,
34454            decoder: &mut ___D,
34455            _: (),
34456        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
34457            ::fidl_next::munge!(let Self { table } = slot);
34458
34459            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
34460                match ordinal {
34461                    0 => unsafe { ::core::hint::unreachable_unchecked() },
34462
34463                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
34464                }
34465            })
34466        }
34467    }
34468
34469    impl<'de> ConfigSourceCapabilities<'de> {}
34470
34471    impl<'de> ::core::fmt::Debug for ConfigSourceCapabilities<'de> {
34472        fn fmt(
34473            &self,
34474            f: &mut ::core::fmt::Formatter<'_>,
34475        ) -> ::core::result::Result<(), ::core::fmt::Error> {
34476            f.debug_struct("ConfigSourceCapabilities").finish()
34477        }
34478    }
34479
34480    impl<'de> ::fidl_next::IntoNatural for ConfigSourceCapabilities<'de> {
34481        type Natural = crate::natural::ConfigSourceCapabilities;
34482    }
34483
34484    /// The wire type corresponding to [`ConfigValueSource`].
34485    #[repr(transparent)]
34486    pub struct ConfigValueSource<'de> {
34487        pub(crate) raw: ::fidl_next::wire::Union,
34488        pub(crate) _phantom: ::core::marker::PhantomData<&'de mut [::fidl_next::Chunk]>,
34489    }
34490
34491    impl<'de> Drop for ConfigValueSource<'de> {
34492        fn drop(&mut self) {
34493            match self.raw.ordinal() {
34494                1 => {
34495                    let _ = unsafe {
34496                        self.raw.get().read_unchecked::<::fidl_next::wire::String<'de>>()
34497                    };
34498                }
34499
34500                2 => {
34501                    let _ = unsafe {
34502                        self.raw
34503                            .get()
34504                            .read_unchecked::<crate::wire::ConfigSourceCapabilities<'de>>()
34505                    };
34506                }
34507
34508                _ => (),
34509            }
34510        }
34511    }
34512
34513    impl ::fidl_next::Constrained for ConfigValueSource<'_> {
34514        type Constraint = ();
34515
34516        fn validate(
34517            _: ::fidl_next::Slot<'_, Self>,
34518            _: Self::Constraint,
34519        ) -> Result<(), ::fidl_next::ValidationError> {
34520            Ok(())
34521        }
34522    }
34523
34524    unsafe impl ::fidl_next::Wire for ConfigValueSource<'static> {
34525        type Narrowed<'de> = ConfigValueSource<'de>;
34526
34527        #[inline]
34528        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
34529            ::fidl_next::munge!(let Self { raw, _phantom: _ } = out);
34530            ::fidl_next::wire::Union::zero_padding(raw);
34531        }
34532    }
34533
34534    pub mod config_value_source {
34535        pub enum Ref<'de> {
34536            PackagePath(&'de ::fidl_next::wire::String<'de>),
34537
34538            Capabilities(&'de crate::wire::ConfigSourceCapabilities<'de>),
34539
34540            UnknownOrdinal_(u64),
34541        }
34542
34543        pub enum Value<'de> {
34544            PackagePath(::fidl_next::wire::String<'de>),
34545
34546            Capabilities(crate::wire::ConfigSourceCapabilities<'de>),
34547
34548            UnknownOrdinal_(u64),
34549        }
34550    }
34551
34552    impl<'de> ConfigValueSource<'de> {
34553        pub fn as_ref(&self) -> crate::wire::config_value_source::Ref<'_> {
34554            match self.raw.ordinal() {
34555                1 => crate::wire::config_value_source::Ref::PackagePath(unsafe {
34556                    self.raw.get().deref_unchecked::<::fidl_next::wire::String<'_>>()
34557                }),
34558
34559                2 => crate::wire::config_value_source::Ref::Capabilities(unsafe {
34560                    self.raw.get().deref_unchecked::<crate::wire::ConfigSourceCapabilities<'_>>()
34561                }),
34562
34563                unknown => crate::wire::config_value_source::Ref::UnknownOrdinal_(unknown),
34564            }
34565        }
34566
34567        pub fn into_inner(self) -> crate::wire::config_value_source::Value<'de> {
34568            let this = ::core::mem::ManuallyDrop::new(self);
34569
34570            match this.raw.ordinal() {
34571                1 => crate::wire::config_value_source::Value::PackagePath(unsafe {
34572                    this.raw.get().read_unchecked::<::fidl_next::wire::String<'de>>()
34573                }),
34574
34575                2 => crate::wire::config_value_source::Value::Capabilities(unsafe {
34576                    this.raw.get().read_unchecked::<crate::wire::ConfigSourceCapabilities<'de>>()
34577                }),
34578
34579                unknown => crate::wire::config_value_source::Value::UnknownOrdinal_(unknown),
34580            }
34581        }
34582    }
34583
34584    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for ConfigValueSource<'de>
34585    where
34586        ___D: ::fidl_next::decoder::InternalHandleDecoder + ?Sized,
34587        ___D: ::fidl_next::Decoder<'de>,
34588    {
34589        fn decode(
34590            mut slot: ::fidl_next::Slot<'_, Self>,
34591            decoder: &mut ___D,
34592            _: (),
34593        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
34594            ::fidl_next::munge!(let Self { mut raw, _phantom: _ } = slot.as_mut());
34595            match ::fidl_next::wire::Union::encoded_ordinal(raw.as_mut()) {
34596                1 => ::fidl_next::wire::Union::decode_as::<___D, ::fidl_next::wire::String<'de>>(
34597                    raw, decoder, 4294967295,
34598                )?,
34599
34600                2 => ::fidl_next::wire::Union::decode_as::<
34601                    ___D,
34602                    crate::wire::ConfigSourceCapabilities<'de>,
34603                >(raw, decoder, ())?,
34604
34605                _ => ::fidl_next::wire::Union::decode_unknown(raw, decoder)?,
34606            }
34607
34608            Ok(())
34609        }
34610    }
34611
34612    impl<'de> ::core::fmt::Debug for ConfigValueSource<'de> {
34613        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
34614            match self.raw.ordinal() {
34615                1 => unsafe {
34616                    self.raw.get().deref_unchecked::<::fidl_next::wire::String<'_>>().fmt(f)
34617                },
34618                2 => unsafe {
34619                    self.raw
34620                        .get()
34621                        .deref_unchecked::<crate::wire::ConfigSourceCapabilities<'_>>()
34622                        .fmt(f)
34623                },
34624                _ => unsafe { ::core::hint::unreachable_unchecked() },
34625            }
34626        }
34627    }
34628
34629    impl<'de> ::fidl_next::IntoNatural for ConfigValueSource<'de> {
34630        type Natural = crate::natural::ConfigValueSource;
34631    }
34632
34633    /// The wire type corresponding to [`ConfigSchema`].
34634    #[repr(C)]
34635    pub struct ConfigSchema<'de> {
34636        pub(crate) table: ::fidl_next::wire::Table<'de>,
34637    }
34638
34639    impl<'de> Drop for ConfigSchema<'de> {
34640        fn drop(&mut self) {
34641            let _ = self.table.get(1)
34642                .map(|envelope| unsafe {
34643                    envelope.read_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::ConfigField<'de>>>()
34644                });
34645
34646            let _ = self.table.get(2).map(|envelope| unsafe {
34647                envelope.read_unchecked::<crate::wire::ConfigChecksum<'de>>()
34648            });
34649
34650            let _ = self.table.get(3).map(|envelope| unsafe {
34651                envelope.read_unchecked::<crate::wire::ConfigValueSource<'de>>()
34652            });
34653        }
34654    }
34655
34656    impl ::fidl_next::Constrained for ConfigSchema<'_> {
34657        type Constraint = ();
34658
34659        fn validate(
34660            _: ::fidl_next::Slot<'_, Self>,
34661            _: Self::Constraint,
34662        ) -> Result<(), ::fidl_next::ValidationError> {
34663            Ok(())
34664        }
34665    }
34666
34667    unsafe impl ::fidl_next::Wire for ConfigSchema<'static> {
34668        type Narrowed<'de> = ConfigSchema<'de>;
34669
34670        #[inline]
34671        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
34672            ::fidl_next::munge!(let Self { table } = out);
34673            ::fidl_next::wire::Table::zero_padding(table);
34674        }
34675    }
34676
34677    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for ConfigSchema<'de>
34678    where
34679        ___D: ::fidl_next::Decoder<'de> + ?Sized,
34680    {
34681        fn decode(
34682            slot: ::fidl_next::Slot<'_, Self>,
34683            decoder: &mut ___D,
34684            _: (),
34685        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
34686            ::fidl_next::munge!(let Self { table } = slot);
34687
34688            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
34689                match ordinal {
34690                    0 => unsafe { ::core::hint::unreachable_unchecked() },
34691
34692                    1 => {
34693                        ::fidl_next::wire::Envelope::decode_as::<
34694                            ___D,
34695                            ::fidl_next::wire::Vector<'de, crate::wire::ConfigField<'de>>,
34696                        >(slot.as_mut(), decoder, (4294967295, ()))?;
34697
34698                        Ok(())
34699                    }
34700
34701                    2 => {
34702                        ::fidl_next::wire::Envelope::decode_as::<
34703                            ___D,
34704                            crate::wire::ConfigChecksum<'de>,
34705                        >(slot.as_mut(), decoder, ())?;
34706
34707                        Ok(())
34708                    }
34709
34710                    3 => {
34711                        ::fidl_next::wire::Envelope::decode_as::<
34712                            ___D,
34713                            crate::wire::ConfigValueSource<'de>,
34714                        >(slot.as_mut(), decoder, ())?;
34715
34716                        Ok(())
34717                    }
34718
34719                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
34720                }
34721            })
34722        }
34723    }
34724
34725    impl<'de> ConfigSchema<'de> {
34726        pub fn fields(
34727            &self,
34728        ) -> ::core::option::Option<&::fidl_next::wire::Vector<'de, crate::wire::ConfigField<'de>>>
34729        {
34730            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
34731        }
34732
34733        pub fn take_fields(
34734            &mut self,
34735        ) -> ::core::option::Option<::fidl_next::wire::Vector<'de, crate::wire::ConfigField<'de>>>
34736        {
34737            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
34738        }
34739
34740        pub fn checksum(&self) -> ::core::option::Option<&crate::wire::ConfigChecksum<'de>> {
34741            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
34742        }
34743
34744        pub fn take_checksum(
34745            &mut self,
34746        ) -> ::core::option::Option<crate::wire::ConfigChecksum<'de>> {
34747            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
34748        }
34749
34750        pub fn value_source(&self) -> ::core::option::Option<&crate::wire::ConfigValueSource<'de>> {
34751            unsafe { Some(self.table.get(3)?.deref_unchecked()) }
34752        }
34753
34754        pub fn take_value_source(
34755            &mut self,
34756        ) -> ::core::option::Option<crate::wire::ConfigValueSource<'de>> {
34757            unsafe { Some(self.table.get_mut(3)?.take_unchecked()) }
34758        }
34759    }
34760
34761    impl<'de> ::core::fmt::Debug for ConfigSchema<'de> {
34762        fn fmt(
34763            &self,
34764            f: &mut ::core::fmt::Formatter<'_>,
34765        ) -> ::core::result::Result<(), ::core::fmt::Error> {
34766            f.debug_struct("ConfigSchema")
34767                .field("fields", &self.fields())
34768                .field("checksum", &self.checksum())
34769                .field("value_source", &self.value_source())
34770                .finish()
34771        }
34772    }
34773
34774    impl<'de> ::fidl_next::IntoNatural for ConfigSchema<'de> {
34775        type Natural = crate::natural::ConfigSchema;
34776    }
34777
34778    /// The wire type corresponding to [`Component`].
34779    #[repr(C)]
34780    pub struct Component<'de> {
34781        pub(crate) table: ::fidl_next::wire::Table<'de>,
34782    }
34783
34784    impl<'de> Drop for Component<'de> {
34785        fn drop(&mut self) {
34786            let _ = self
34787                .table
34788                .get(1)
34789                .map(|envelope| unsafe { envelope.read_unchecked::<crate::wire::Program<'de>>() });
34790
34791            let _ = self.table.get(2).map(|envelope| unsafe {
34792                envelope.read_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::Use<'de>>>()
34793            });
34794
34795            let _ = self.table.get(3).map(|envelope| unsafe {
34796                envelope
34797                    .read_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::Expose<'de>>>()
34798            });
34799
34800            let _ = self.table.get(4).map(|envelope| unsafe {
34801                envelope.read_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::Offer<'de>>>()
34802            });
34803
34804            let _ = self.table.get(5).map(|envelope| unsafe {
34805                envelope
34806                    .read_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::Capability<'de>>>(
34807                    )
34808            });
34809
34810            let _ = self.table.get(6).map(|envelope| unsafe {
34811                envelope.read_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::Child<'de>>>()
34812            });
34813
34814            let _ = self.table.get(7).map(|envelope| unsafe {
34815                envelope
34816                    .read_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::Collection<'de>>>(
34817                    )
34818            });
34819
34820            let _ = self.table.get(8)
34821                .map(|envelope| unsafe {
34822                    envelope.read_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::Environment<'de>>>()
34823                });
34824
34825            let _ = self.table.get(9).map(|envelope| unsafe {
34826                envelope.read_unchecked::<::fidl_next_common_fuchsia_data::wire::Dictionary<'de>>()
34827            });
34828
34829            let _ = self.table.get(10).map(|envelope| unsafe {
34830                envelope.read_unchecked::<crate::wire::ConfigSchema<'de>>()
34831            });
34832
34833            let _ = self.table.get(11).map(|envelope| unsafe {
34834                envelope.read_unchecked::<crate::wire::DebugInfo<'de>>()
34835            });
34836        }
34837    }
34838
34839    impl ::fidl_next::Constrained for Component<'_> {
34840        type Constraint = ();
34841
34842        fn validate(
34843            _: ::fidl_next::Slot<'_, Self>,
34844            _: Self::Constraint,
34845        ) -> Result<(), ::fidl_next::ValidationError> {
34846            Ok(())
34847        }
34848    }
34849
34850    unsafe impl ::fidl_next::Wire for Component<'static> {
34851        type Narrowed<'de> = Component<'de>;
34852
34853        #[inline]
34854        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
34855            ::fidl_next::munge!(let Self { table } = out);
34856            ::fidl_next::wire::Table::zero_padding(table);
34857        }
34858    }
34859
34860    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for Component<'de>
34861    where
34862        ___D: ::fidl_next::Decoder<'de> + ?Sized,
34863    {
34864        fn decode(
34865            slot: ::fidl_next::Slot<'_, Self>,
34866            decoder: &mut ___D,
34867            _: (),
34868        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
34869            ::fidl_next::munge!(let Self { table } = slot);
34870
34871            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
34872                match ordinal {
34873                    0 => unsafe { ::core::hint::unreachable_unchecked() },
34874
34875                    1 => {
34876                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::Program<'de>>(
34877                            slot.as_mut(),
34878                            decoder,
34879                            (),
34880                        )?;
34881
34882                        Ok(())
34883                    }
34884
34885                    2 => {
34886                        ::fidl_next::wire::Envelope::decode_as::<
34887                            ___D,
34888                            ::fidl_next::wire::Vector<'de, crate::wire::Use<'de>>,
34889                        >(slot.as_mut(), decoder, (4294967295, ()))?;
34890
34891                        Ok(())
34892                    }
34893
34894                    3 => {
34895                        ::fidl_next::wire::Envelope::decode_as::<
34896                            ___D,
34897                            ::fidl_next::wire::Vector<'de, crate::wire::Expose<'de>>,
34898                        >(slot.as_mut(), decoder, (4294967295, ()))?;
34899
34900                        Ok(())
34901                    }
34902
34903                    4 => {
34904                        ::fidl_next::wire::Envelope::decode_as::<
34905                            ___D,
34906                            ::fidl_next::wire::Vector<'de, crate::wire::Offer<'de>>,
34907                        >(slot.as_mut(), decoder, (4294967295, ()))?;
34908
34909                        Ok(())
34910                    }
34911
34912                    5 => {
34913                        ::fidl_next::wire::Envelope::decode_as::<
34914                            ___D,
34915                            ::fidl_next::wire::Vector<'de, crate::wire::Capability<'de>>,
34916                        >(slot.as_mut(), decoder, (4294967295, ()))?;
34917
34918                        Ok(())
34919                    }
34920
34921                    6 => {
34922                        ::fidl_next::wire::Envelope::decode_as::<
34923                            ___D,
34924                            ::fidl_next::wire::Vector<'de, crate::wire::Child<'de>>,
34925                        >(slot.as_mut(), decoder, (4294967295, ()))?;
34926
34927                        Ok(())
34928                    }
34929
34930                    7 => {
34931                        ::fidl_next::wire::Envelope::decode_as::<
34932                            ___D,
34933                            ::fidl_next::wire::Vector<'de, crate::wire::Collection<'de>>,
34934                        >(slot.as_mut(), decoder, (4294967295, ()))?;
34935
34936                        Ok(())
34937                    }
34938
34939                    8 => {
34940                        ::fidl_next::wire::Envelope::decode_as::<
34941                            ___D,
34942                            ::fidl_next::wire::Vector<'de, crate::wire::Environment<'de>>,
34943                        >(slot.as_mut(), decoder, (4294967295, ()))?;
34944
34945                        Ok(())
34946                    }
34947
34948                    9 => {
34949                        ::fidl_next::wire::Envelope::decode_as::<
34950                            ___D,
34951                            ::fidl_next_common_fuchsia_data::wire::Dictionary<'de>,
34952                        >(slot.as_mut(), decoder, ())?;
34953
34954                        Ok(())
34955                    }
34956
34957                    10 => {
34958                        ::fidl_next::wire::Envelope::decode_as::<
34959                            ___D,
34960                            crate::wire::ConfigSchema<'de>,
34961                        >(slot.as_mut(), decoder, ())?;
34962
34963                        Ok(())
34964                    }
34965
34966                    11 => {
34967                        ::fidl_next::wire::Envelope::decode_as::<___D, crate::wire::DebugInfo<'de>>(
34968                            slot.as_mut(),
34969                            decoder,
34970                            (),
34971                        )?;
34972
34973                        Ok(())
34974                    }
34975
34976                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
34977                }
34978            })
34979        }
34980    }
34981
34982    impl<'de> Component<'de> {
34983        pub fn program(&self) -> ::core::option::Option<&crate::wire::Program<'de>> {
34984            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
34985        }
34986
34987        pub fn take_program(&mut self) -> ::core::option::Option<crate::wire::Program<'de>> {
34988            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
34989        }
34990
34991        pub fn uses(
34992            &self,
34993        ) -> ::core::option::Option<&::fidl_next::wire::Vector<'de, crate::wire::Use<'de>>>
34994        {
34995            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
34996        }
34997
34998        pub fn take_uses(
34999            &mut self,
35000        ) -> ::core::option::Option<::fidl_next::wire::Vector<'de, crate::wire::Use<'de>>> {
35001            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
35002        }
35003
35004        pub fn exposes(
35005            &self,
35006        ) -> ::core::option::Option<&::fidl_next::wire::Vector<'de, crate::wire::Expose<'de>>>
35007        {
35008            unsafe { Some(self.table.get(3)?.deref_unchecked()) }
35009        }
35010
35011        pub fn take_exposes(
35012            &mut self,
35013        ) -> ::core::option::Option<::fidl_next::wire::Vector<'de, crate::wire::Expose<'de>>>
35014        {
35015            unsafe { Some(self.table.get_mut(3)?.take_unchecked()) }
35016        }
35017
35018        pub fn offers(
35019            &self,
35020        ) -> ::core::option::Option<&::fidl_next::wire::Vector<'de, crate::wire::Offer<'de>>>
35021        {
35022            unsafe { Some(self.table.get(4)?.deref_unchecked()) }
35023        }
35024
35025        pub fn take_offers(
35026            &mut self,
35027        ) -> ::core::option::Option<::fidl_next::wire::Vector<'de, crate::wire::Offer<'de>>>
35028        {
35029            unsafe { Some(self.table.get_mut(4)?.take_unchecked()) }
35030        }
35031
35032        pub fn capabilities(
35033            &self,
35034        ) -> ::core::option::Option<&::fidl_next::wire::Vector<'de, crate::wire::Capability<'de>>>
35035        {
35036            unsafe { Some(self.table.get(5)?.deref_unchecked()) }
35037        }
35038
35039        pub fn take_capabilities(
35040            &mut self,
35041        ) -> ::core::option::Option<::fidl_next::wire::Vector<'de, crate::wire::Capability<'de>>>
35042        {
35043            unsafe { Some(self.table.get_mut(5)?.take_unchecked()) }
35044        }
35045
35046        pub fn children(
35047            &self,
35048        ) -> ::core::option::Option<&::fidl_next::wire::Vector<'de, crate::wire::Child<'de>>>
35049        {
35050            unsafe { Some(self.table.get(6)?.deref_unchecked()) }
35051        }
35052
35053        pub fn take_children(
35054            &mut self,
35055        ) -> ::core::option::Option<::fidl_next::wire::Vector<'de, crate::wire::Child<'de>>>
35056        {
35057            unsafe { Some(self.table.get_mut(6)?.take_unchecked()) }
35058        }
35059
35060        pub fn collections(
35061            &self,
35062        ) -> ::core::option::Option<&::fidl_next::wire::Vector<'de, crate::wire::Collection<'de>>>
35063        {
35064            unsafe { Some(self.table.get(7)?.deref_unchecked()) }
35065        }
35066
35067        pub fn take_collections(
35068            &mut self,
35069        ) -> ::core::option::Option<::fidl_next::wire::Vector<'de, crate::wire::Collection<'de>>>
35070        {
35071            unsafe { Some(self.table.get_mut(7)?.take_unchecked()) }
35072        }
35073
35074        pub fn environments(
35075            &self,
35076        ) -> ::core::option::Option<&::fidl_next::wire::Vector<'de, crate::wire::Environment<'de>>>
35077        {
35078            unsafe { Some(self.table.get(8)?.deref_unchecked()) }
35079        }
35080
35081        pub fn take_environments(
35082            &mut self,
35083        ) -> ::core::option::Option<::fidl_next::wire::Vector<'de, crate::wire::Environment<'de>>>
35084        {
35085            unsafe { Some(self.table.get_mut(8)?.take_unchecked()) }
35086        }
35087
35088        pub fn facets(
35089            &self,
35090        ) -> ::core::option::Option<&::fidl_next_common_fuchsia_data::wire::Dictionary<'de>>
35091        {
35092            unsafe { Some(self.table.get(9)?.deref_unchecked()) }
35093        }
35094
35095        pub fn take_facets(
35096            &mut self,
35097        ) -> ::core::option::Option<::fidl_next_common_fuchsia_data::wire::Dictionary<'de>>
35098        {
35099            unsafe { Some(self.table.get_mut(9)?.take_unchecked()) }
35100        }
35101
35102        pub fn config(&self) -> ::core::option::Option<&crate::wire::ConfigSchema<'de>> {
35103            unsafe { Some(self.table.get(10)?.deref_unchecked()) }
35104        }
35105
35106        pub fn take_config(&mut self) -> ::core::option::Option<crate::wire::ConfigSchema<'de>> {
35107            unsafe { Some(self.table.get_mut(10)?.take_unchecked()) }
35108        }
35109
35110        pub fn debug_info(&self) -> ::core::option::Option<&crate::wire::DebugInfo<'de>> {
35111            unsafe { Some(self.table.get(11)?.deref_unchecked()) }
35112        }
35113
35114        pub fn take_debug_info(&mut self) -> ::core::option::Option<crate::wire::DebugInfo<'de>> {
35115            unsafe { Some(self.table.get_mut(11)?.take_unchecked()) }
35116        }
35117    }
35118
35119    impl<'de> ::core::fmt::Debug for Component<'de> {
35120        fn fmt(
35121            &self,
35122            f: &mut ::core::fmt::Formatter<'_>,
35123        ) -> ::core::result::Result<(), ::core::fmt::Error> {
35124            f.debug_struct("Component")
35125                .field("program", &self.program())
35126                .field("uses", &self.uses())
35127                .field("exposes", &self.exposes())
35128                .field("offers", &self.offers())
35129                .field("capabilities", &self.capabilities())
35130                .field("children", &self.children())
35131                .field("collections", &self.collections())
35132                .field("environments", &self.environments())
35133                .field("facets", &self.facets())
35134                .field("config", &self.config())
35135                .field("debug_info", &self.debug_info())
35136                .finish()
35137        }
35138    }
35139
35140    impl<'de> ::fidl_next::IntoNatural for Component<'de> {
35141        type Natural = crate::natural::Component;
35142    }
35143
35144    /// The wire type corresponding to [`ConfigValueSpec`].
35145    #[repr(C)]
35146    pub struct ConfigValueSpec<'de> {
35147        pub(crate) table: ::fidl_next::wire::Table<'de>,
35148    }
35149
35150    impl<'de> Drop for ConfigValueSpec<'de> {
35151        fn drop(&mut self) {
35152            let _ = self.table.get(1).map(|envelope| unsafe {
35153                envelope.read_unchecked::<crate::wire::ConfigValue<'de>>()
35154            });
35155        }
35156    }
35157
35158    impl ::fidl_next::Constrained for ConfigValueSpec<'_> {
35159        type Constraint = ();
35160
35161        fn validate(
35162            _: ::fidl_next::Slot<'_, Self>,
35163            _: Self::Constraint,
35164        ) -> Result<(), ::fidl_next::ValidationError> {
35165            Ok(())
35166        }
35167    }
35168
35169    unsafe impl ::fidl_next::Wire for ConfigValueSpec<'static> {
35170        type Narrowed<'de> = ConfigValueSpec<'de>;
35171
35172        #[inline]
35173        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
35174            ::fidl_next::munge!(let Self { table } = out);
35175            ::fidl_next::wire::Table::zero_padding(table);
35176        }
35177    }
35178
35179    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for ConfigValueSpec<'de>
35180    where
35181        ___D: ::fidl_next::Decoder<'de> + ?Sized,
35182    {
35183        fn decode(
35184            slot: ::fidl_next::Slot<'_, Self>,
35185            decoder: &mut ___D,
35186            _: (),
35187        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
35188            ::fidl_next::munge!(let Self { table } = slot);
35189
35190            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
35191                match ordinal {
35192                    0 => unsafe { ::core::hint::unreachable_unchecked() },
35193
35194                    1 => {
35195                        ::fidl_next::wire::Envelope::decode_as::<
35196                            ___D,
35197                            crate::wire::ConfigValue<'de>,
35198                        >(slot.as_mut(), decoder, ())?;
35199
35200                        Ok(())
35201                    }
35202
35203                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
35204                }
35205            })
35206        }
35207    }
35208
35209    impl<'de> ConfigValueSpec<'de> {
35210        pub fn value(&self) -> ::core::option::Option<&crate::wire::ConfigValue<'de>> {
35211            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
35212        }
35213
35214        pub fn take_value(&mut self) -> ::core::option::Option<crate::wire::ConfigValue<'de>> {
35215            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
35216        }
35217    }
35218
35219    impl<'de> ::core::fmt::Debug for ConfigValueSpec<'de> {
35220        fn fmt(
35221            &self,
35222            f: &mut ::core::fmt::Formatter<'_>,
35223        ) -> ::core::result::Result<(), ::core::fmt::Error> {
35224            f.debug_struct("ConfigValueSpec").field("value", &self.value()).finish()
35225        }
35226    }
35227
35228    impl<'de> ::fidl_next::IntoNatural for ConfigValueSpec<'de> {
35229        type Natural = crate::natural::ConfigValueSpec;
35230    }
35231
35232    /// The wire type corresponding to [`ConfigValuesData`].
35233    #[repr(C)]
35234    pub struct ConfigValuesData<'de> {
35235        pub(crate) table: ::fidl_next::wire::Table<'de>,
35236    }
35237
35238    impl<'de> Drop for ConfigValuesData<'de> {
35239        fn drop(&mut self) {
35240            let _ = self.table.get(1)
35241                .map(|envelope| unsafe {
35242                    envelope.read_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::ConfigValueSpec<'de>>>()
35243                });
35244
35245            let _ = self.table.get(2).map(|envelope| unsafe {
35246                envelope.read_unchecked::<crate::wire::ConfigChecksum<'de>>()
35247            });
35248        }
35249    }
35250
35251    impl ::fidl_next::Constrained for ConfigValuesData<'_> {
35252        type Constraint = ();
35253
35254        fn validate(
35255            _: ::fidl_next::Slot<'_, Self>,
35256            _: Self::Constraint,
35257        ) -> Result<(), ::fidl_next::ValidationError> {
35258            Ok(())
35259        }
35260    }
35261
35262    unsafe impl ::fidl_next::Wire for ConfigValuesData<'static> {
35263        type Narrowed<'de> = ConfigValuesData<'de>;
35264
35265        #[inline]
35266        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
35267            ::fidl_next::munge!(let Self { table } = out);
35268            ::fidl_next::wire::Table::zero_padding(table);
35269        }
35270    }
35271
35272    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for ConfigValuesData<'de>
35273    where
35274        ___D: ::fidl_next::Decoder<'de> + ?Sized,
35275    {
35276        fn decode(
35277            slot: ::fidl_next::Slot<'_, Self>,
35278            decoder: &mut ___D,
35279            _: (),
35280        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
35281            ::fidl_next::munge!(let Self { table } = slot);
35282
35283            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
35284                match ordinal {
35285                    0 => unsafe { ::core::hint::unreachable_unchecked() },
35286
35287                    1 => {
35288                        ::fidl_next::wire::Envelope::decode_as::<
35289                            ___D,
35290                            ::fidl_next::wire::Vector<'de, crate::wire::ConfigValueSpec<'de>>,
35291                        >(slot.as_mut(), decoder, (4294967295, ()))?;
35292
35293                        Ok(())
35294                    }
35295
35296                    2 => {
35297                        ::fidl_next::wire::Envelope::decode_as::<
35298                            ___D,
35299                            crate::wire::ConfigChecksum<'de>,
35300                        >(slot.as_mut(), decoder, ())?;
35301
35302                        Ok(())
35303                    }
35304
35305                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
35306                }
35307            })
35308        }
35309    }
35310
35311    impl<'de> ConfigValuesData<'de> {
35312        pub fn values(
35313            &self,
35314        ) -> ::core::option::Option<
35315            &::fidl_next::wire::Vector<'de, crate::wire::ConfigValueSpec<'de>>,
35316        > {
35317            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
35318        }
35319
35320        pub fn take_values(
35321            &mut self,
35322        ) -> ::core::option::Option<::fidl_next::wire::Vector<'de, crate::wire::ConfigValueSpec<'de>>>
35323        {
35324            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
35325        }
35326
35327        pub fn checksum(&self) -> ::core::option::Option<&crate::wire::ConfigChecksum<'de>> {
35328            unsafe { Some(self.table.get(2)?.deref_unchecked()) }
35329        }
35330
35331        pub fn take_checksum(
35332            &mut self,
35333        ) -> ::core::option::Option<crate::wire::ConfigChecksum<'de>> {
35334            unsafe { Some(self.table.get_mut(2)?.take_unchecked()) }
35335        }
35336    }
35337
35338    impl<'de> ::core::fmt::Debug for ConfigValuesData<'de> {
35339        fn fmt(
35340            &self,
35341            f: &mut ::core::fmt::Formatter<'_>,
35342        ) -> ::core::result::Result<(), ::core::fmt::Error> {
35343            f.debug_struct("ConfigValuesData")
35344                .field("values", &self.values())
35345                .field("checksum", &self.checksum())
35346                .finish()
35347        }
35348    }
35349
35350    impl<'de> ::fidl_next::IntoNatural for ConfigValuesData<'de> {
35351        type Natural = crate::natural::ConfigValuesData;
35352    }
35353
35354    /// The wire type corresponding to [`EventSubscription`].
35355    #[repr(C)]
35356    pub struct EventSubscription<'de> {
35357        pub(crate) table: ::fidl_next::wire::Table<'de>,
35358    }
35359
35360    impl<'de> Drop for EventSubscription<'de> {
35361        fn drop(&mut self) {
35362            let _ = self.table.get(1).map(|envelope| unsafe {
35363                envelope.read_unchecked::<::fidl_next::wire::String<'de>>()
35364            });
35365        }
35366    }
35367
35368    impl ::fidl_next::Constrained for EventSubscription<'_> {
35369        type Constraint = ();
35370
35371        fn validate(
35372            _: ::fidl_next::Slot<'_, Self>,
35373            _: Self::Constraint,
35374        ) -> Result<(), ::fidl_next::ValidationError> {
35375            Ok(())
35376        }
35377    }
35378
35379    unsafe impl ::fidl_next::Wire for EventSubscription<'static> {
35380        type Narrowed<'de> = EventSubscription<'de>;
35381
35382        #[inline]
35383        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
35384            ::fidl_next::munge!(let Self { table } = out);
35385            ::fidl_next::wire::Table::zero_padding(table);
35386        }
35387    }
35388
35389    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for EventSubscription<'de>
35390    where
35391        ___D: ::fidl_next::Decoder<'de> + ?Sized,
35392    {
35393        fn decode(
35394            slot: ::fidl_next::Slot<'_, Self>,
35395            decoder: &mut ___D,
35396            _: (),
35397        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
35398            ::fidl_next::munge!(let Self { table } = slot);
35399
35400            ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
35401                match ordinal {
35402                    0 => unsafe { ::core::hint::unreachable_unchecked() },
35403
35404                    1 => {
35405                        ::fidl_next::wire::Envelope::decode_as::<
35406                            ___D,
35407                            ::fidl_next::wire::String<'de>,
35408                        >(slot.as_mut(), decoder, 100)?;
35409
35410                        let value = unsafe {
35411                            slot.deref_unchecked()
35412                                .deref_unchecked::<::fidl_next::wire::String<'_>>()
35413                        };
35414
35415                        if value.len() > 100 {
35416                            return Err(::fidl_next::DecodeError::VectorTooLong {
35417                                size: value.len() as u64,
35418                                limit: 100,
35419                            });
35420                        }
35421
35422                        Ok(())
35423                    }
35424
35425                    _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
35426                }
35427            })
35428        }
35429    }
35430
35431    impl<'de> EventSubscription<'de> {
35432        pub fn event_name(&self) -> ::core::option::Option<&::fidl_next::wire::String<'de>> {
35433            unsafe { Some(self.table.get(1)?.deref_unchecked()) }
35434        }
35435
35436        pub fn take_event_name(
35437            &mut self,
35438        ) -> ::core::option::Option<::fidl_next::wire::String<'de>> {
35439            unsafe { Some(self.table.get_mut(1)?.take_unchecked()) }
35440        }
35441    }
35442
35443    impl<'de> ::core::fmt::Debug for EventSubscription<'de> {
35444        fn fmt(
35445            &self,
35446            f: &mut ::core::fmt::Formatter<'_>,
35447        ) -> ::core::result::Result<(), ::core::fmt::Error> {
35448            f.debug_struct("EventSubscription").field("event_name", &self.event_name()).finish()
35449        }
35450    }
35451
35452    impl<'de> ::fidl_next::IntoNatural for EventSubscription<'de> {
35453        type Natural = crate::natural::EventSubscription;
35454    }
35455
35456    /// The wire type corresponding to [`LayoutParameter`].
35457    #[repr(transparent)]
35458    pub struct LayoutParameter<'de> {
35459        pub(crate) raw: ::fidl_next::wire::Union,
35460        pub(crate) _phantom: ::core::marker::PhantomData<&'de mut [::fidl_next::Chunk]>,
35461    }
35462
35463    impl<'de> Drop for LayoutParameter<'de> {
35464        fn drop(&mut self) {
35465            match self.raw.ordinal() {
35466                1 => {
35467                    let _ =
35468                        unsafe { self.raw.get().read_unchecked::<crate::wire::ConfigType<'de>>() };
35469                }
35470
35471                _ => (),
35472            }
35473        }
35474    }
35475
35476    impl ::fidl_next::Constrained for LayoutParameter<'_> {
35477        type Constraint = ();
35478
35479        fn validate(
35480            _: ::fidl_next::Slot<'_, Self>,
35481            _: Self::Constraint,
35482        ) -> Result<(), ::fidl_next::ValidationError> {
35483            Ok(())
35484        }
35485    }
35486
35487    unsafe impl ::fidl_next::Wire for LayoutParameter<'static> {
35488        type Narrowed<'de> = LayoutParameter<'de>;
35489
35490        #[inline]
35491        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
35492            ::fidl_next::munge!(let Self { raw, _phantom: _ } = out);
35493            ::fidl_next::wire::Union::zero_padding(raw);
35494        }
35495    }
35496
35497    pub mod layout_parameter {
35498        pub enum Ref<'de> {
35499            NestedType(&'de crate::wire::ConfigType<'de>),
35500
35501            UnknownOrdinal_(u64),
35502        }
35503
35504        pub enum Value<'de> {
35505            NestedType(crate::wire::ConfigType<'de>),
35506
35507            UnknownOrdinal_(u64),
35508        }
35509    }
35510
35511    impl<'de> LayoutParameter<'de> {
35512        pub fn as_ref(&self) -> crate::wire::layout_parameter::Ref<'_> {
35513            match self.raw.ordinal() {
35514                1 => crate::wire::layout_parameter::Ref::NestedType(unsafe {
35515                    self.raw.get().deref_unchecked::<crate::wire::ConfigType<'_>>()
35516                }),
35517
35518                unknown => crate::wire::layout_parameter::Ref::UnknownOrdinal_(unknown),
35519            }
35520        }
35521
35522        pub fn into_inner(self) -> crate::wire::layout_parameter::Value<'de> {
35523            let this = ::core::mem::ManuallyDrop::new(self);
35524
35525            match this.raw.ordinal() {
35526                1 => crate::wire::layout_parameter::Value::NestedType(unsafe {
35527                    this.raw.get().read_unchecked::<crate::wire::ConfigType<'de>>()
35528                }),
35529
35530                unknown => crate::wire::layout_parameter::Value::UnknownOrdinal_(unknown),
35531            }
35532        }
35533    }
35534
35535    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for LayoutParameter<'de>
35536    where
35537        ___D: ::fidl_next::decoder::InternalHandleDecoder + ?Sized,
35538        ___D: ::fidl_next::Decoder<'de>,
35539    {
35540        fn decode(
35541            mut slot: ::fidl_next::Slot<'_, Self>,
35542            decoder: &mut ___D,
35543            _: (),
35544        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
35545            ::fidl_next::munge!(let Self { mut raw, _phantom: _ } = slot.as_mut());
35546            match ::fidl_next::wire::Union::encoded_ordinal(raw.as_mut()) {
35547                1 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::ConfigType<'de>>(
35548                    raw,
35549                    decoder,
35550                    (),
35551                )?,
35552
35553                _ => ::fidl_next::wire::Union::decode_unknown(raw, decoder)?,
35554            }
35555
35556            Ok(())
35557        }
35558    }
35559
35560    impl<'de> ::core::fmt::Debug for LayoutParameter<'de> {
35561        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
35562            match self.raw.ordinal() {
35563                1 => unsafe {
35564                    self.raw.get().deref_unchecked::<crate::wire::ConfigType<'_>>().fmt(f)
35565                },
35566                _ => unsafe { ::core::hint::unreachable_unchecked() },
35567            }
35568        }
35569    }
35570
35571    impl<'de> ::fidl_next::IntoNatural for LayoutParameter<'de> {
35572        type Natural = crate::natural::LayoutParameter;
35573    }
35574
35575    /// The wire type corresponding to [`ResolvedConfigField`].
35576    #[derive(Debug)]
35577    #[repr(C)]
35578    pub struct ResolvedConfigField<'de> {
35579        pub key: ::fidl_next::wire::String<'de>,
35580
35581        pub value: crate::wire::ConfigValue<'de>,
35582    }
35583
35584    static_assertions::const_assert_eq!(std::mem::size_of::<ResolvedConfigField<'_>>(), 32);
35585    static_assertions::const_assert_eq!(std::mem::align_of::<ResolvedConfigField<'_>>(), 8);
35586
35587    static_assertions::const_assert_eq!(std::mem::offset_of!(ResolvedConfigField<'_>, key), 0);
35588
35589    static_assertions::const_assert_eq!(std::mem::offset_of!(ResolvedConfigField<'_>, value), 16);
35590
35591    impl ::fidl_next::Constrained for ResolvedConfigField<'_> {
35592        type Constraint = ();
35593
35594        fn validate(
35595            _: ::fidl_next::Slot<'_, Self>,
35596            _: Self::Constraint,
35597        ) -> Result<(), ::fidl_next::ValidationError> {
35598            Ok(())
35599        }
35600    }
35601
35602    unsafe impl ::fidl_next::Wire for ResolvedConfigField<'static> {
35603        type Narrowed<'de> = ResolvedConfigField<'de>;
35604
35605        #[inline]
35606        fn zero_padding(out_: &mut ::core::mem::MaybeUninit<Self>) {
35607            ::fidl_next::munge! {
35608                let Self {
35609                    key,
35610                    value,
35611
35612                } = &mut *out_;
35613            }
35614
35615            ::fidl_next::Wire::zero_padding(key);
35616
35617            ::fidl_next::Wire::zero_padding(value);
35618        }
35619    }
35620
35621    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for ResolvedConfigField<'de>
35622    where
35623        ___D: ::fidl_next::decoder::InternalHandleDecoder + ?Sized,
35624        ___D: ::fidl_next::Decoder<'de>,
35625    {
35626        fn decode(
35627            slot_: ::fidl_next::Slot<'_, Self>,
35628            decoder_: &mut ___D,
35629            _: (),
35630        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
35631            ::fidl_next::munge! {
35632                let Self {
35633                    mut key,
35634                    mut value,
35635
35636                } = slot_;
35637            }
35638
35639            let _field = key.as_mut();
35640            ::fidl_next::Constrained::validate(_field, 4294967295)?;
35641            ::fidl_next::Decode::decode(key.as_mut(), decoder_, 4294967295)?;
35642
35643            let _field = value.as_mut();
35644
35645            ::fidl_next::Decode::decode(value.as_mut(), decoder_, ())?;
35646
35647            Ok(())
35648        }
35649    }
35650
35651    impl<'de> ::fidl_next::IntoNatural for ResolvedConfigField<'de> {
35652        type Natural = crate::natural::ResolvedConfigField;
35653    }
35654
35655    /// The wire type corresponding to [`ResolvedConfig`].
35656    #[derive(Debug)]
35657    #[repr(C)]
35658    pub struct ResolvedConfig<'de> {
35659        pub fields: ::fidl_next::wire::Vector<'de, crate::wire::ResolvedConfigField<'de>>,
35660
35661        pub checksum: crate::wire::ConfigChecksum<'de>,
35662    }
35663
35664    static_assertions::const_assert_eq!(std::mem::size_of::<ResolvedConfig<'_>>(), 32);
35665    static_assertions::const_assert_eq!(std::mem::align_of::<ResolvedConfig<'_>>(), 8);
35666
35667    static_assertions::const_assert_eq!(std::mem::offset_of!(ResolvedConfig<'_>, fields), 0);
35668
35669    static_assertions::const_assert_eq!(std::mem::offset_of!(ResolvedConfig<'_>, checksum), 16);
35670
35671    impl ::fidl_next::Constrained for ResolvedConfig<'_> {
35672        type Constraint = ();
35673
35674        fn validate(
35675            _: ::fidl_next::Slot<'_, Self>,
35676            _: Self::Constraint,
35677        ) -> Result<(), ::fidl_next::ValidationError> {
35678            Ok(())
35679        }
35680    }
35681
35682    unsafe impl ::fidl_next::Wire for ResolvedConfig<'static> {
35683        type Narrowed<'de> = ResolvedConfig<'de>;
35684
35685        #[inline]
35686        fn zero_padding(out_: &mut ::core::mem::MaybeUninit<Self>) {
35687            ::fidl_next::munge! {
35688                let Self {
35689                    fields,
35690                    checksum,
35691
35692                } = &mut *out_;
35693            }
35694
35695            ::fidl_next::Wire::zero_padding(fields);
35696
35697            ::fidl_next::Wire::zero_padding(checksum);
35698        }
35699    }
35700
35701    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for ResolvedConfig<'de>
35702    where
35703        ___D: ::fidl_next::decoder::InternalHandleDecoder + ?Sized,
35704        ___D: ::fidl_next::Decoder<'de>,
35705    {
35706        fn decode(
35707            slot_: ::fidl_next::Slot<'_, Self>,
35708            decoder_: &mut ___D,
35709            _: (),
35710        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
35711            ::fidl_next::munge! {
35712                let Self {
35713                    mut fields,
35714                    mut checksum,
35715
35716                } = slot_;
35717            }
35718
35719            let _field = fields.as_mut();
35720            ::fidl_next::Constrained::validate(_field, (4294967295, ()))?;
35721            ::fidl_next::Decode::decode(fields.as_mut(), decoder_, (4294967295, ()))?;
35722
35723            let _field = checksum.as_mut();
35724
35725            ::fidl_next::Decode::decode(checksum.as_mut(), decoder_, ())?;
35726
35727            Ok(())
35728        }
35729    }
35730
35731    impl<'de> ::fidl_next::IntoNatural for ResolvedConfig<'de> {
35732        type Natural = crate::natural::ResolvedConfig;
35733    }
35734}
35735
35736pub mod wire_optional {
35737
35738    #[repr(transparent)]
35739    pub struct ConfigSingleValue<'de> {
35740        pub(crate) raw: ::fidl_next::wire::Union,
35741        pub(crate) _phantom: ::core::marker::PhantomData<&'de mut [::fidl_next::Chunk]>,
35742    }
35743
35744    impl ::fidl_next::Constrained for ConfigSingleValue<'_> {
35745        type Constraint = ();
35746
35747        fn validate(
35748            _: ::fidl_next::Slot<'_, Self>,
35749            _: Self::Constraint,
35750        ) -> Result<(), ::fidl_next::ValidationError> {
35751            Ok(())
35752        }
35753    }
35754
35755    unsafe impl ::fidl_next::Wire for ConfigSingleValue<'static> {
35756        type Narrowed<'de> = ConfigSingleValue<'de>;
35757
35758        #[inline]
35759        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
35760            ::fidl_next::munge!(let Self { raw, _phantom: _ } = out);
35761            ::fidl_next::wire::Union::zero_padding(raw);
35762        }
35763    }
35764
35765    impl<'de> ConfigSingleValue<'de> {
35766        pub fn is_some(&self) -> bool {
35767            self.raw.is_some()
35768        }
35769
35770        pub fn is_none(&self) -> bool {
35771            self.raw.is_none()
35772        }
35773
35774        pub fn as_ref(&self) -> ::core::option::Option<&crate::wire::ConfigSingleValue<'de>> {
35775            if self.is_some() { Some(unsafe { &*(self as *const Self).cast() }) } else { None }
35776        }
35777
35778        pub fn into_option(self) -> ::core::option::Option<crate::wire::ConfigSingleValue<'de>> {
35779            if self.is_some() {
35780                Some(crate::wire::ConfigSingleValue {
35781                    raw: self.raw,
35782                    _phantom: ::core::marker::PhantomData,
35783                })
35784            } else {
35785                None
35786            }
35787        }
35788    }
35789
35790    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for ConfigSingleValue<'de>
35791    where
35792        ___D: ::fidl_next::decoder::InternalHandleDecoder + ?Sized,
35793        ___D: ::fidl_next::Decoder<'de>,
35794    {
35795        fn decode(
35796            mut slot: ::fidl_next::Slot<'_, Self>,
35797            decoder: &mut ___D,
35798            _: (),
35799        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
35800            ::fidl_next::munge!(let Self { mut raw, _phantom: _ } = slot.as_mut());
35801            match ::fidl_next::wire::Union::encoded_ordinal(raw.as_mut()) {
35802                1 => ::fidl_next::wire::Union::decode_as::<___D, bool>(raw, decoder, ())?,
35803
35804                2 => ::fidl_next::wire::Union::decode_as::<___D, u8>(raw, decoder, ())?,
35805
35806                3 => ::fidl_next::wire::Union::decode_as::<___D, ::fidl_next::wire::Uint16>(
35807                    raw,
35808                    decoder,
35809                    (),
35810                )?,
35811
35812                4 => ::fidl_next::wire::Union::decode_as::<___D, ::fidl_next::wire::Uint32>(
35813                    raw,
35814                    decoder,
35815                    (),
35816                )?,
35817
35818                5 => ::fidl_next::wire::Union::decode_as::<___D, ::fidl_next::wire::Uint64>(
35819                    raw,
35820                    decoder,
35821                    (),
35822                )?,
35823
35824                6 => ::fidl_next::wire::Union::decode_as::<___D, i8>(raw, decoder, ())?,
35825
35826                7 => ::fidl_next::wire::Union::decode_as::<___D, ::fidl_next::wire::Int16>(
35827                    raw,
35828                    decoder,
35829                    (),
35830                )?,
35831
35832                8 => ::fidl_next::wire::Union::decode_as::<___D, ::fidl_next::wire::Int32>(
35833                    raw,
35834                    decoder,
35835                    (),
35836                )?,
35837
35838                9 => ::fidl_next::wire::Union::decode_as::<___D, ::fidl_next::wire::Int64>(
35839                    raw,
35840                    decoder,
35841                    (),
35842                )?,
35843
35844                10 => ::fidl_next::wire::Union::decode_as::<___D, ::fidl_next::wire::String<'de>>(
35845                    raw, decoder, 4294967295,
35846                )?,
35847
35848                0 => ::fidl_next::wire::Union::decode_absent(raw)?,
35849                _ => ::fidl_next::wire::Union::decode_unknown(raw, decoder)?,
35850            }
35851
35852            Ok(())
35853        }
35854    }
35855
35856    impl<'de> ::core::fmt::Debug for ConfigSingleValue<'de> {
35857        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
35858            self.as_ref().fmt(f)
35859        }
35860    }
35861
35862    impl<'de> ::fidl_next::IntoNatural for ConfigSingleValue<'de> {
35863        type Natural = ::core::option::Option<crate::natural::ConfigSingleValue>;
35864    }
35865
35866    #[repr(transparent)]
35867    pub struct ConfigVectorValue<'de> {
35868        pub(crate) raw: ::fidl_next::wire::Union,
35869        pub(crate) _phantom: ::core::marker::PhantomData<&'de mut [::fidl_next::Chunk]>,
35870    }
35871
35872    impl ::fidl_next::Constrained for ConfigVectorValue<'_> {
35873        type Constraint = ();
35874
35875        fn validate(
35876            _: ::fidl_next::Slot<'_, Self>,
35877            _: Self::Constraint,
35878        ) -> Result<(), ::fidl_next::ValidationError> {
35879            Ok(())
35880        }
35881    }
35882
35883    unsafe impl ::fidl_next::Wire for ConfigVectorValue<'static> {
35884        type Narrowed<'de> = ConfigVectorValue<'de>;
35885
35886        #[inline]
35887        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
35888            ::fidl_next::munge!(let Self { raw, _phantom: _ } = out);
35889            ::fidl_next::wire::Union::zero_padding(raw);
35890        }
35891    }
35892
35893    impl<'de> ConfigVectorValue<'de> {
35894        pub fn is_some(&self) -> bool {
35895            self.raw.is_some()
35896        }
35897
35898        pub fn is_none(&self) -> bool {
35899            self.raw.is_none()
35900        }
35901
35902        pub fn as_ref(&self) -> ::core::option::Option<&crate::wire::ConfigVectorValue<'de>> {
35903            if self.is_some() { Some(unsafe { &*(self as *const Self).cast() }) } else { None }
35904        }
35905
35906        pub fn into_option(self) -> ::core::option::Option<crate::wire::ConfigVectorValue<'de>> {
35907            if self.is_some() {
35908                Some(crate::wire::ConfigVectorValue {
35909                    raw: self.raw,
35910                    _phantom: ::core::marker::PhantomData,
35911                })
35912            } else {
35913                None
35914            }
35915        }
35916    }
35917
35918    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for ConfigVectorValue<'de>
35919    where
35920        ___D: ::fidl_next::decoder::InternalHandleDecoder + ?Sized,
35921        ___D: ::fidl_next::Decoder<'de>,
35922    {
35923        fn decode(
35924            mut slot: ::fidl_next::Slot<'_, Self>,
35925            decoder: &mut ___D,
35926            _: (),
35927        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
35928            ::fidl_next::munge!(let Self { mut raw, _phantom: _ } = slot.as_mut());
35929            match ::fidl_next::wire::Union::encoded_ordinal(raw.as_mut()) {
35930                1 => ::fidl_next::wire::Union::decode_as::<
35931                    ___D,
35932                    ::fidl_next::wire::Vector<'de, bool>,
35933                >(raw, decoder, (4294967295, ()))?,
35934
35935                2 => {
35936                    ::fidl_next::wire::Union::decode_as::<___D, ::fidl_next::wire::Vector<'de, u8>>(
35937                        raw,
35938                        decoder,
35939                        (4294967295, ()),
35940                    )?
35941                }
35942
35943                3 => ::fidl_next::wire::Union::decode_as::<
35944                    ___D,
35945                    ::fidl_next::wire::Vector<'de, ::fidl_next::wire::Uint16>,
35946                >(raw, decoder, (4294967295, ()))?,
35947
35948                4 => ::fidl_next::wire::Union::decode_as::<
35949                    ___D,
35950                    ::fidl_next::wire::Vector<'de, ::fidl_next::wire::Uint32>,
35951                >(raw, decoder, (4294967295, ()))?,
35952
35953                5 => ::fidl_next::wire::Union::decode_as::<
35954                    ___D,
35955                    ::fidl_next::wire::Vector<'de, ::fidl_next::wire::Uint64>,
35956                >(raw, decoder, (4294967295, ()))?,
35957
35958                6 => {
35959                    ::fidl_next::wire::Union::decode_as::<___D, ::fidl_next::wire::Vector<'de, i8>>(
35960                        raw,
35961                        decoder,
35962                        (4294967295, ()),
35963                    )?
35964                }
35965
35966                7 => ::fidl_next::wire::Union::decode_as::<
35967                    ___D,
35968                    ::fidl_next::wire::Vector<'de, ::fidl_next::wire::Int16>,
35969                >(raw, decoder, (4294967295, ()))?,
35970
35971                8 => ::fidl_next::wire::Union::decode_as::<
35972                    ___D,
35973                    ::fidl_next::wire::Vector<'de, ::fidl_next::wire::Int32>,
35974                >(raw, decoder, (4294967295, ()))?,
35975
35976                9 => ::fidl_next::wire::Union::decode_as::<
35977                    ___D,
35978                    ::fidl_next::wire::Vector<'de, ::fidl_next::wire::Int64>,
35979                >(raw, decoder, (4294967295, ()))?,
35980
35981                10 => ::fidl_next::wire::Union::decode_as::<
35982                    ___D,
35983                    ::fidl_next::wire::Vector<'de, ::fidl_next::wire::String<'de>>,
35984                >(raw, decoder, (4294967295, 4294967295))?,
35985
35986                0 => ::fidl_next::wire::Union::decode_absent(raw)?,
35987                _ => ::fidl_next::wire::Union::decode_unknown(raw, decoder)?,
35988            }
35989
35990            Ok(())
35991        }
35992    }
35993
35994    impl<'de> ::core::fmt::Debug for ConfigVectorValue<'de> {
35995        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
35996            self.as_ref().fmt(f)
35997        }
35998    }
35999
36000    impl<'de> ::fidl_next::IntoNatural for ConfigVectorValue<'de> {
36001        type Natural = ::core::option::Option<crate::natural::ConfigVectorValue>;
36002    }
36003
36004    #[repr(transparent)]
36005    pub struct ConfigValue<'de> {
36006        pub(crate) raw: ::fidl_next::wire::Union,
36007        pub(crate) _phantom: ::core::marker::PhantomData<&'de mut [::fidl_next::Chunk]>,
36008    }
36009
36010    impl ::fidl_next::Constrained for ConfigValue<'_> {
36011        type Constraint = ();
36012
36013        fn validate(
36014            _: ::fidl_next::Slot<'_, Self>,
36015            _: Self::Constraint,
36016        ) -> Result<(), ::fidl_next::ValidationError> {
36017            Ok(())
36018        }
36019    }
36020
36021    unsafe impl ::fidl_next::Wire for ConfigValue<'static> {
36022        type Narrowed<'de> = ConfigValue<'de>;
36023
36024        #[inline]
36025        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
36026            ::fidl_next::munge!(let Self { raw, _phantom: _ } = out);
36027            ::fidl_next::wire::Union::zero_padding(raw);
36028        }
36029    }
36030
36031    impl<'de> ConfigValue<'de> {
36032        pub fn is_some(&self) -> bool {
36033            self.raw.is_some()
36034        }
36035
36036        pub fn is_none(&self) -> bool {
36037            self.raw.is_none()
36038        }
36039
36040        pub fn as_ref(&self) -> ::core::option::Option<&crate::wire::ConfigValue<'de>> {
36041            if self.is_some() { Some(unsafe { &*(self as *const Self).cast() }) } else { None }
36042        }
36043
36044        pub fn into_option(self) -> ::core::option::Option<crate::wire::ConfigValue<'de>> {
36045            if self.is_some() {
36046                Some(crate::wire::ConfigValue {
36047                    raw: self.raw,
36048                    _phantom: ::core::marker::PhantomData,
36049                })
36050            } else {
36051                None
36052            }
36053        }
36054    }
36055
36056    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for ConfigValue<'de>
36057    where
36058        ___D: ::fidl_next::decoder::InternalHandleDecoder + ?Sized,
36059        ___D: ::fidl_next::Decoder<'de>,
36060    {
36061        fn decode(
36062            mut slot: ::fidl_next::Slot<'_, Self>,
36063            decoder: &mut ___D,
36064            _: (),
36065        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
36066            ::fidl_next::munge!(let Self { mut raw, _phantom: _ } = slot.as_mut());
36067            match ::fidl_next::wire::Union::encoded_ordinal(raw.as_mut()) {
36068                1 => ::fidl_next::wire::Union::decode_as::<
36069                    ___D,
36070                    crate::wire::ConfigSingleValue<'de>,
36071                >(raw, decoder, ())?,
36072
36073                2 => ::fidl_next::wire::Union::decode_as::<
36074                    ___D,
36075                    crate::wire::ConfigVectorValue<'de>,
36076                >(raw, decoder, ())?,
36077
36078                0 => ::fidl_next::wire::Union::decode_absent(raw)?,
36079                _ => ::fidl_next::wire::Union::decode_unknown(raw, decoder)?,
36080            }
36081
36082            Ok(())
36083        }
36084    }
36085
36086    impl<'de> ::core::fmt::Debug for ConfigValue<'de> {
36087        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
36088            self.as_ref().fmt(f)
36089        }
36090    }
36091
36092    impl<'de> ::fidl_next::IntoNatural for ConfigValue<'de> {
36093        type Natural = ::core::option::Option<crate::natural::ConfigValue>;
36094    }
36095
36096    #[repr(transparent)]
36097    pub struct Ref<'de> {
36098        pub(crate) raw: ::fidl_next::wire::Union,
36099        pub(crate) _phantom: ::core::marker::PhantomData<&'de mut [::fidl_next::Chunk]>,
36100    }
36101
36102    impl ::fidl_next::Constrained for Ref<'_> {
36103        type Constraint = ();
36104
36105        fn validate(
36106            _: ::fidl_next::Slot<'_, Self>,
36107            _: Self::Constraint,
36108        ) -> Result<(), ::fidl_next::ValidationError> {
36109            Ok(())
36110        }
36111    }
36112
36113    unsafe impl ::fidl_next::Wire for Ref<'static> {
36114        type Narrowed<'de> = Ref<'de>;
36115
36116        #[inline]
36117        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
36118            ::fidl_next::munge!(let Self { raw, _phantom: _ } = out);
36119            ::fidl_next::wire::Union::zero_padding(raw);
36120        }
36121    }
36122
36123    impl<'de> Ref<'de> {
36124        pub fn is_some(&self) -> bool {
36125            self.raw.is_some()
36126        }
36127
36128        pub fn is_none(&self) -> bool {
36129            self.raw.is_none()
36130        }
36131
36132        pub fn as_ref(&self) -> ::core::option::Option<&crate::wire::Ref<'de>> {
36133            if self.is_some() { Some(unsafe { &*(self as *const Self).cast() }) } else { None }
36134        }
36135
36136        pub fn into_option(self) -> ::core::option::Option<crate::wire::Ref<'de>> {
36137            if self.is_some() {
36138                Some(crate::wire::Ref { raw: self.raw, _phantom: ::core::marker::PhantomData })
36139            } else {
36140                None
36141            }
36142        }
36143    }
36144
36145    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for Ref<'de>
36146    where
36147        ___D: ::fidl_next::decoder::InternalHandleDecoder + ?Sized,
36148        ___D: ::fidl_next::Decoder<'de>,
36149    {
36150        fn decode(
36151            mut slot: ::fidl_next::Slot<'_, Self>,
36152            decoder: &mut ___D,
36153            _: (),
36154        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
36155            ::fidl_next::munge!(let Self { mut raw, _phantom: _ } = slot.as_mut());
36156            match ::fidl_next::wire::Union::encoded_ordinal(raw.as_mut()) {
36157                1 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::ParentRef>(
36158                    raw,
36159                    decoder,
36160                    (),
36161                )?,
36162
36163                2 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::SelfRef>(
36164                    raw,
36165                    decoder,
36166                    (),
36167                )?,
36168
36169                3 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::ChildRef<'de>>(
36170                    raw,
36171                    decoder,
36172                    (),
36173                )?,
36174
36175                4 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::CollectionRef<'de>>(
36176                    raw,
36177                    decoder,
36178                    (),
36179                )?,
36180
36181                5 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::FrameworkRef>(
36182                    raw,
36183                    decoder,
36184                    (),
36185                )?,
36186
36187                6 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::CapabilityRef<'de>>(
36188                    raw,
36189                    decoder,
36190                    (),
36191                )?,
36192
36193                7 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::DebugRef>(
36194                    raw,
36195                    decoder,
36196                    (),
36197                )?,
36198
36199                8 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::VoidRef>(
36200                    raw,
36201                    decoder,
36202                    (),
36203                )?,
36204
36205                9 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::EnvironmentRef>(
36206                    raw,
36207                    decoder,
36208                    (),
36209                )?,
36210
36211                0 => ::fidl_next::wire::Union::decode_absent(raw)?,
36212                _ => ::fidl_next::wire::Union::decode_unknown(raw, decoder)?,
36213            }
36214
36215            Ok(())
36216        }
36217    }
36218
36219    impl<'de> ::core::fmt::Debug for Ref<'de> {
36220        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
36221            self.as_ref().fmt(f)
36222        }
36223    }
36224
36225    impl<'de> ::fidl_next::IntoNatural for Ref<'de> {
36226        type Natural = ::core::option::Option<crate::natural::Ref>;
36227    }
36228
36229    #[repr(transparent)]
36230    pub struct Capability<'de> {
36231        pub(crate) raw: ::fidl_next::wire::Union,
36232        pub(crate) _phantom: ::core::marker::PhantomData<&'de mut [::fidl_next::Chunk]>,
36233    }
36234
36235    impl ::fidl_next::Constrained for Capability<'_> {
36236        type Constraint = ();
36237
36238        fn validate(
36239            _: ::fidl_next::Slot<'_, Self>,
36240            _: Self::Constraint,
36241        ) -> Result<(), ::fidl_next::ValidationError> {
36242            Ok(())
36243        }
36244    }
36245
36246    unsafe impl ::fidl_next::Wire for Capability<'static> {
36247        type Narrowed<'de> = Capability<'de>;
36248
36249        #[inline]
36250        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
36251            ::fidl_next::munge!(let Self { raw, _phantom: _ } = out);
36252            ::fidl_next::wire::Union::zero_padding(raw);
36253        }
36254    }
36255
36256    impl<'de> Capability<'de> {
36257        pub fn is_some(&self) -> bool {
36258            self.raw.is_some()
36259        }
36260
36261        pub fn is_none(&self) -> bool {
36262            self.raw.is_none()
36263        }
36264
36265        pub fn as_ref(&self) -> ::core::option::Option<&crate::wire::Capability<'de>> {
36266            if self.is_some() { Some(unsafe { &*(self as *const Self).cast() }) } else { None }
36267        }
36268
36269        pub fn into_option(self) -> ::core::option::Option<crate::wire::Capability<'de>> {
36270            if self.is_some() {
36271                Some(crate::wire::Capability {
36272                    raw: self.raw,
36273                    _phantom: ::core::marker::PhantomData,
36274                })
36275            } else {
36276                None
36277            }
36278        }
36279    }
36280
36281    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for Capability<'de>
36282    where
36283        ___D: ::fidl_next::decoder::InternalHandleDecoder + ?Sized,
36284        ___D: ::fidl_next::Decoder<'de>,
36285    {
36286        fn decode(
36287            mut slot: ::fidl_next::Slot<'_, Self>,
36288            decoder: &mut ___D,
36289            _: (),
36290        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
36291            ::fidl_next::munge!(let Self { mut raw, _phantom: _ } = slot.as_mut());
36292            match ::fidl_next::wire::Union::encoded_ordinal(raw.as_mut()) {
36293                1 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::Service<'de>>(
36294                    raw,
36295                    decoder,
36296                    (),
36297                )?,
36298
36299                2 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::Protocol<'de>>(
36300                    raw,
36301                    decoder,
36302                    (),
36303                )?,
36304
36305                3 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::Directory<'de>>(
36306                    raw,
36307                    decoder,
36308                    (),
36309                )?,
36310
36311                4 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::Storage<'de>>(
36312                    raw,
36313                    decoder,
36314                    (),
36315                )?,
36316
36317                5 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::Runner<'de>>(
36318                    raw,
36319                    decoder,
36320                    (),
36321                )?,
36322
36323                6 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::Resolver<'de>>(
36324                    raw,
36325                    decoder,
36326                    (),
36327                )?,
36328
36329                8 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::EventStream<'de>>(
36330                    raw,
36331                    decoder,
36332                    (),
36333                )?,
36334
36335                9 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::Dictionary<'de>>(
36336                    raw,
36337                    decoder,
36338                    (),
36339                )?,
36340
36341                10 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::Configuration<'de>>(
36342                    raw,
36343                    decoder,
36344                    (),
36345                )?,
36346
36347                0 => ::fidl_next::wire::Union::decode_absent(raw)?,
36348                _ => ::fidl_next::wire::Union::decode_unknown(raw, decoder)?,
36349            }
36350
36351            Ok(())
36352        }
36353    }
36354
36355    impl<'de> ::core::fmt::Debug for Capability<'de> {
36356        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
36357            self.as_ref().fmt(f)
36358        }
36359    }
36360
36361    impl<'de> ::fidl_next::IntoNatural for Capability<'de> {
36362        type Natural = ::core::option::Option<crate::natural::Capability>;
36363    }
36364
36365    #[repr(transparent)]
36366    pub struct LayoutConstraint<'de> {
36367        pub(crate) raw: ::fidl_next::wire::Union,
36368        pub(crate) _phantom: ::core::marker::PhantomData<&'de mut [::fidl_next::Chunk]>,
36369    }
36370
36371    impl ::fidl_next::Constrained for LayoutConstraint<'_> {
36372        type Constraint = ();
36373
36374        fn validate(
36375            _: ::fidl_next::Slot<'_, Self>,
36376            _: Self::Constraint,
36377        ) -> Result<(), ::fidl_next::ValidationError> {
36378            Ok(())
36379        }
36380    }
36381
36382    unsafe impl ::fidl_next::Wire for LayoutConstraint<'static> {
36383        type Narrowed<'de> = LayoutConstraint<'de>;
36384
36385        #[inline]
36386        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
36387            ::fidl_next::munge!(let Self { raw, _phantom: _ } = out);
36388            ::fidl_next::wire::Union::zero_padding(raw);
36389        }
36390    }
36391
36392    impl<'de> LayoutConstraint<'de> {
36393        pub fn is_some(&self) -> bool {
36394            self.raw.is_some()
36395        }
36396
36397        pub fn is_none(&self) -> bool {
36398            self.raw.is_none()
36399        }
36400
36401        pub fn as_ref(&self) -> ::core::option::Option<&crate::wire::LayoutConstraint<'de>> {
36402            if self.is_some() { Some(unsafe { &*(self as *const Self).cast() }) } else { None }
36403        }
36404
36405        pub fn into_option(self) -> ::core::option::Option<crate::wire::LayoutConstraint<'de>> {
36406            if self.is_some() {
36407                Some(crate::wire::LayoutConstraint {
36408                    raw: self.raw,
36409                    _phantom: ::core::marker::PhantomData,
36410                })
36411            } else {
36412                None
36413            }
36414        }
36415    }
36416
36417    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for LayoutConstraint<'de>
36418    where
36419        ___D: ::fidl_next::decoder::InternalHandleDecoder + ?Sized,
36420        ___D: ::fidl_next::Decoder<'de>,
36421    {
36422        fn decode(
36423            mut slot: ::fidl_next::Slot<'_, Self>,
36424            decoder: &mut ___D,
36425            _: (),
36426        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
36427            ::fidl_next::munge!(let Self { mut raw, _phantom: _ } = slot.as_mut());
36428            match ::fidl_next::wire::Union::encoded_ordinal(raw.as_mut()) {
36429                1 => ::fidl_next::wire::Union::decode_as::<___D, ::fidl_next::wire::Uint32>(
36430                    raw,
36431                    decoder,
36432                    (),
36433                )?,
36434
36435                0 => ::fidl_next::wire::Union::decode_absent(raw)?,
36436                _ => ::fidl_next::wire::Union::decode_unknown(raw, decoder)?,
36437            }
36438
36439            Ok(())
36440        }
36441    }
36442
36443    impl<'de> ::core::fmt::Debug for LayoutConstraint<'de> {
36444        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
36445            self.as_ref().fmt(f)
36446        }
36447    }
36448
36449    impl<'de> ::fidl_next::IntoNatural for LayoutConstraint<'de> {
36450        type Natural = ::core::option::Option<crate::natural::LayoutConstraint>;
36451    }
36452
36453    #[repr(transparent)]
36454    pub struct ConfigChecksum<'de> {
36455        pub(crate) raw: ::fidl_next::wire::Union,
36456        pub(crate) _phantom: ::core::marker::PhantomData<&'de mut [::fidl_next::Chunk]>,
36457    }
36458
36459    impl ::fidl_next::Constrained for ConfigChecksum<'_> {
36460        type Constraint = ();
36461
36462        fn validate(
36463            _: ::fidl_next::Slot<'_, Self>,
36464            _: Self::Constraint,
36465        ) -> Result<(), ::fidl_next::ValidationError> {
36466            Ok(())
36467        }
36468    }
36469
36470    unsafe impl ::fidl_next::Wire for ConfigChecksum<'static> {
36471        type Narrowed<'de> = ConfigChecksum<'de>;
36472
36473        #[inline]
36474        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
36475            ::fidl_next::munge!(let Self { raw, _phantom: _ } = out);
36476            ::fidl_next::wire::Union::zero_padding(raw);
36477        }
36478    }
36479
36480    impl<'de> ConfigChecksum<'de> {
36481        pub fn is_some(&self) -> bool {
36482            self.raw.is_some()
36483        }
36484
36485        pub fn is_none(&self) -> bool {
36486            self.raw.is_none()
36487        }
36488
36489        pub fn as_ref(&self) -> ::core::option::Option<&crate::wire::ConfigChecksum<'de>> {
36490            if self.is_some() { Some(unsafe { &*(self as *const Self).cast() }) } else { None }
36491        }
36492
36493        pub fn into_option(self) -> ::core::option::Option<crate::wire::ConfigChecksum<'de>> {
36494            if self.is_some() {
36495                Some(crate::wire::ConfigChecksum {
36496                    raw: self.raw,
36497                    _phantom: ::core::marker::PhantomData,
36498                })
36499            } else {
36500                None
36501            }
36502        }
36503    }
36504
36505    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for ConfigChecksum<'de>
36506    where
36507        ___D: ::fidl_next::decoder::InternalHandleDecoder + ?Sized,
36508        ___D: ::fidl_next::Decoder<'de>,
36509    {
36510        fn decode(
36511            mut slot: ::fidl_next::Slot<'_, Self>,
36512            decoder: &mut ___D,
36513            _: (),
36514        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
36515            ::fidl_next::munge!(let Self { mut raw, _phantom: _ } = slot.as_mut());
36516            match ::fidl_next::wire::Union::encoded_ordinal(raw.as_mut()) {
36517                1 => ::fidl_next::wire::Union::decode_as::<___D, [u8; 32]>(raw, decoder, ())?,
36518
36519                0 => ::fidl_next::wire::Union::decode_absent(raw)?,
36520                _ => ::fidl_next::wire::Union::decode_unknown(raw, decoder)?,
36521            }
36522
36523            Ok(())
36524        }
36525    }
36526
36527    impl<'de> ::core::fmt::Debug for ConfigChecksum<'de> {
36528        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
36529            self.as_ref().fmt(f)
36530        }
36531    }
36532
36533    impl<'de> ::fidl_next::IntoNatural for ConfigChecksum<'de> {
36534        type Natural = ::core::option::Option<crate::natural::ConfigChecksum>;
36535    }
36536
36537    #[repr(transparent)]
36538    pub struct Use<'de> {
36539        pub(crate) raw: ::fidl_next::wire::Union,
36540        pub(crate) _phantom: ::core::marker::PhantomData<&'de mut [::fidl_next::Chunk]>,
36541    }
36542
36543    impl ::fidl_next::Constrained for Use<'_> {
36544        type Constraint = ();
36545
36546        fn validate(
36547            _: ::fidl_next::Slot<'_, Self>,
36548            _: Self::Constraint,
36549        ) -> Result<(), ::fidl_next::ValidationError> {
36550            Ok(())
36551        }
36552    }
36553
36554    unsafe impl ::fidl_next::Wire for Use<'static> {
36555        type Narrowed<'de> = Use<'de>;
36556
36557        #[inline]
36558        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
36559            ::fidl_next::munge!(let Self { raw, _phantom: _ } = out);
36560            ::fidl_next::wire::Union::zero_padding(raw);
36561        }
36562    }
36563
36564    impl<'de> Use<'de> {
36565        pub fn is_some(&self) -> bool {
36566            self.raw.is_some()
36567        }
36568
36569        pub fn is_none(&self) -> bool {
36570            self.raw.is_none()
36571        }
36572
36573        pub fn as_ref(&self) -> ::core::option::Option<&crate::wire::Use<'de>> {
36574            if self.is_some() { Some(unsafe { &*(self as *const Self).cast() }) } else { None }
36575        }
36576
36577        pub fn into_option(self) -> ::core::option::Option<crate::wire::Use<'de>> {
36578            if self.is_some() {
36579                Some(crate::wire::Use { raw: self.raw, _phantom: ::core::marker::PhantomData })
36580            } else {
36581                None
36582            }
36583        }
36584    }
36585
36586    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for Use<'de>
36587    where
36588        ___D: ::fidl_next::decoder::InternalHandleDecoder + ?Sized,
36589        ___D: ::fidl_next::Decoder<'de>,
36590    {
36591        fn decode(
36592            mut slot: ::fidl_next::Slot<'_, Self>,
36593            decoder: &mut ___D,
36594            _: (),
36595        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
36596            ::fidl_next::munge!(let Self { mut raw, _phantom: _ } = slot.as_mut());
36597            match ::fidl_next::wire::Union::encoded_ordinal(raw.as_mut()) {
36598                1 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::UseService<'de>>(
36599                    raw,
36600                    decoder,
36601                    (),
36602                )?,
36603
36604                2 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::UseProtocol<'de>>(
36605                    raw,
36606                    decoder,
36607                    (),
36608                )?,
36609
36610                3 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::UseDirectory<'de>>(
36611                    raw,
36612                    decoder,
36613                    (),
36614                )?,
36615
36616                4 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::UseStorage<'de>>(
36617                    raw,
36618                    decoder,
36619                    (),
36620                )?,
36621
36622                7 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::UseEventStream<'de>>(
36623                    raw,
36624                    decoder,
36625                    (),
36626                )?,
36627
36628                8 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::UseRunner<'de>>(
36629                    raw,
36630                    decoder,
36631                    (),
36632                )?,
36633
36634                9 => {
36635                    ::fidl_next::wire::Union::decode_as::<___D, crate::wire::UseConfiguration<'de>>(
36636                        raw,
36637                        decoder,
36638                        (),
36639                    )?
36640                }
36641
36642                10 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::UseDictionary<'de>>(
36643                    raw,
36644                    decoder,
36645                    (),
36646                )?,
36647
36648                0 => ::fidl_next::wire::Union::decode_absent(raw)?,
36649                _ => ::fidl_next::wire::Union::decode_unknown(raw, decoder)?,
36650            }
36651
36652            Ok(())
36653        }
36654    }
36655
36656    impl<'de> ::core::fmt::Debug for Use<'de> {
36657        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
36658            self.as_ref().fmt(f)
36659        }
36660    }
36661
36662    impl<'de> ::fidl_next::IntoNatural for Use<'de> {
36663        type Natural = ::core::option::Option<crate::natural::Use>;
36664    }
36665
36666    #[repr(transparent)]
36667    pub struct Expose<'de> {
36668        pub(crate) raw: ::fidl_next::wire::Union,
36669        pub(crate) _phantom: ::core::marker::PhantomData<&'de mut [::fidl_next::Chunk]>,
36670    }
36671
36672    impl ::fidl_next::Constrained for Expose<'_> {
36673        type Constraint = ();
36674
36675        fn validate(
36676            _: ::fidl_next::Slot<'_, Self>,
36677            _: Self::Constraint,
36678        ) -> Result<(), ::fidl_next::ValidationError> {
36679            Ok(())
36680        }
36681    }
36682
36683    unsafe impl ::fidl_next::Wire for Expose<'static> {
36684        type Narrowed<'de> = Expose<'de>;
36685
36686        #[inline]
36687        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
36688            ::fidl_next::munge!(let Self { raw, _phantom: _ } = out);
36689            ::fidl_next::wire::Union::zero_padding(raw);
36690        }
36691    }
36692
36693    impl<'de> Expose<'de> {
36694        pub fn is_some(&self) -> bool {
36695            self.raw.is_some()
36696        }
36697
36698        pub fn is_none(&self) -> bool {
36699            self.raw.is_none()
36700        }
36701
36702        pub fn as_ref(&self) -> ::core::option::Option<&crate::wire::Expose<'de>> {
36703            if self.is_some() { Some(unsafe { &*(self as *const Self).cast() }) } else { None }
36704        }
36705
36706        pub fn into_option(self) -> ::core::option::Option<crate::wire::Expose<'de>> {
36707            if self.is_some() {
36708                Some(crate::wire::Expose { raw: self.raw, _phantom: ::core::marker::PhantomData })
36709            } else {
36710                None
36711            }
36712        }
36713    }
36714
36715    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for Expose<'de>
36716    where
36717        ___D: ::fidl_next::decoder::InternalHandleDecoder + ?Sized,
36718        ___D: ::fidl_next::Decoder<'de>,
36719    {
36720        fn decode(
36721            mut slot: ::fidl_next::Slot<'_, Self>,
36722            decoder: &mut ___D,
36723            _: (),
36724        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
36725            ::fidl_next::munge!(let Self { mut raw, _phantom: _ } = slot.as_mut());
36726            match ::fidl_next::wire::Union::encoded_ordinal(raw.as_mut()) {
36727                1 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::ExposeService<'de>>(
36728                    raw,
36729                    decoder,
36730                    (),
36731                )?,
36732
36733                2 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::ExposeProtocol<'de>>(
36734                    raw,
36735                    decoder,
36736                    (),
36737                )?,
36738
36739                3 => {
36740                    ::fidl_next::wire::Union::decode_as::<___D, crate::wire::ExposeDirectory<'de>>(
36741                        raw,
36742                        decoder,
36743                        (),
36744                    )?
36745                }
36746
36747                4 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::ExposeRunner<'de>>(
36748                    raw,
36749                    decoder,
36750                    (),
36751                )?,
36752
36753                5 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::ExposeResolver<'de>>(
36754                    raw,
36755                    decoder,
36756                    (),
36757                )?,
36758
36759                7 => {
36760                    ::fidl_next::wire::Union::decode_as::<___D, crate::wire::ExposeDictionary<'de>>(
36761                        raw,
36762                        decoder,
36763                        (),
36764                    )?
36765                }
36766
36767                8 => ::fidl_next::wire::Union::decode_as::<
36768                    ___D,
36769                    crate::wire::ExposeConfiguration<'de>,
36770                >(raw, decoder, ())?,
36771
36772                0 => ::fidl_next::wire::Union::decode_absent(raw)?,
36773                _ => ::fidl_next::wire::Union::decode_unknown(raw, decoder)?,
36774            }
36775
36776            Ok(())
36777        }
36778    }
36779
36780    impl<'de> ::core::fmt::Debug for Expose<'de> {
36781        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
36782            self.as_ref().fmt(f)
36783        }
36784    }
36785
36786    impl<'de> ::fidl_next::IntoNatural for Expose<'de> {
36787        type Natural = ::core::option::Option<crate::natural::Expose>;
36788    }
36789
36790    #[repr(transparent)]
36791    pub struct Offer<'de> {
36792        pub(crate) raw: ::fidl_next::wire::Union,
36793        pub(crate) _phantom: ::core::marker::PhantomData<&'de mut [::fidl_next::Chunk]>,
36794    }
36795
36796    impl ::fidl_next::Constrained for Offer<'_> {
36797        type Constraint = ();
36798
36799        fn validate(
36800            _: ::fidl_next::Slot<'_, Self>,
36801            _: Self::Constraint,
36802        ) -> Result<(), ::fidl_next::ValidationError> {
36803            Ok(())
36804        }
36805    }
36806
36807    unsafe impl ::fidl_next::Wire for Offer<'static> {
36808        type Narrowed<'de> = Offer<'de>;
36809
36810        #[inline]
36811        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
36812            ::fidl_next::munge!(let Self { raw, _phantom: _ } = out);
36813            ::fidl_next::wire::Union::zero_padding(raw);
36814        }
36815    }
36816
36817    impl<'de> Offer<'de> {
36818        pub fn is_some(&self) -> bool {
36819            self.raw.is_some()
36820        }
36821
36822        pub fn is_none(&self) -> bool {
36823            self.raw.is_none()
36824        }
36825
36826        pub fn as_ref(&self) -> ::core::option::Option<&crate::wire::Offer<'de>> {
36827            if self.is_some() { Some(unsafe { &*(self as *const Self).cast() }) } else { None }
36828        }
36829
36830        pub fn into_option(self) -> ::core::option::Option<crate::wire::Offer<'de>> {
36831            if self.is_some() {
36832                Some(crate::wire::Offer { raw: self.raw, _phantom: ::core::marker::PhantomData })
36833            } else {
36834                None
36835            }
36836        }
36837    }
36838
36839    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for Offer<'de>
36840    where
36841        ___D: ::fidl_next::decoder::InternalHandleDecoder + ?Sized,
36842        ___D: ::fidl_next::Decoder<'de>,
36843    {
36844        fn decode(
36845            mut slot: ::fidl_next::Slot<'_, Self>,
36846            decoder: &mut ___D,
36847            _: (),
36848        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
36849            ::fidl_next::munge!(let Self { mut raw, _phantom: _ } = slot.as_mut());
36850            match ::fidl_next::wire::Union::encoded_ordinal(raw.as_mut()) {
36851                1 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::OfferService<'de>>(
36852                    raw,
36853                    decoder,
36854                    (),
36855                )?,
36856
36857                2 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::OfferProtocol<'de>>(
36858                    raw,
36859                    decoder,
36860                    (),
36861                )?,
36862
36863                3 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::OfferDirectory<'de>>(
36864                    raw,
36865                    decoder,
36866                    (),
36867                )?,
36868
36869                4 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::OfferStorage<'de>>(
36870                    raw,
36871                    decoder,
36872                    (),
36873                )?,
36874
36875                5 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::OfferRunner<'de>>(
36876                    raw,
36877                    decoder,
36878                    (),
36879                )?,
36880
36881                6 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::OfferResolver<'de>>(
36882                    raw,
36883                    decoder,
36884                    (),
36885                )?,
36886
36887                8 => {
36888                    ::fidl_next::wire::Union::decode_as::<___D, crate::wire::OfferEventStream<'de>>(
36889                        raw,
36890                        decoder,
36891                        (),
36892                    )?
36893                }
36894
36895                9 => {
36896                    ::fidl_next::wire::Union::decode_as::<___D, crate::wire::OfferDictionary<'de>>(
36897                        raw,
36898                        decoder,
36899                        (),
36900                    )?
36901                }
36902
36903                10 => ::fidl_next::wire::Union::decode_as::<
36904                    ___D,
36905                    crate::wire::OfferConfiguration<'de>,
36906                >(raw, decoder, ())?,
36907
36908                0 => ::fidl_next::wire::Union::decode_absent(raw)?,
36909                _ => ::fidl_next::wire::Union::decode_unknown(raw, decoder)?,
36910            }
36911
36912            Ok(())
36913        }
36914    }
36915
36916    impl<'de> ::core::fmt::Debug for Offer<'de> {
36917        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
36918            self.as_ref().fmt(f)
36919        }
36920    }
36921
36922    impl<'de> ::fidl_next::IntoNatural for Offer<'de> {
36923        type Natural = ::core::option::Option<crate::natural::Offer>;
36924    }
36925
36926    #[repr(transparent)]
36927    pub struct DebugRegistration<'de> {
36928        pub(crate) raw: ::fidl_next::wire::Union,
36929        pub(crate) _phantom: ::core::marker::PhantomData<&'de mut [::fidl_next::Chunk]>,
36930    }
36931
36932    impl ::fidl_next::Constrained for DebugRegistration<'_> {
36933        type Constraint = ();
36934
36935        fn validate(
36936            _: ::fidl_next::Slot<'_, Self>,
36937            _: Self::Constraint,
36938        ) -> Result<(), ::fidl_next::ValidationError> {
36939            Ok(())
36940        }
36941    }
36942
36943    unsafe impl ::fidl_next::Wire for DebugRegistration<'static> {
36944        type Narrowed<'de> = DebugRegistration<'de>;
36945
36946        #[inline]
36947        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
36948            ::fidl_next::munge!(let Self { raw, _phantom: _ } = out);
36949            ::fidl_next::wire::Union::zero_padding(raw);
36950        }
36951    }
36952
36953    impl<'de> DebugRegistration<'de> {
36954        pub fn is_some(&self) -> bool {
36955            self.raw.is_some()
36956        }
36957
36958        pub fn is_none(&self) -> bool {
36959            self.raw.is_none()
36960        }
36961
36962        pub fn as_ref(&self) -> ::core::option::Option<&crate::wire::DebugRegistration<'de>> {
36963            if self.is_some() { Some(unsafe { &*(self as *const Self).cast() }) } else { None }
36964        }
36965
36966        pub fn into_option(self) -> ::core::option::Option<crate::wire::DebugRegistration<'de>> {
36967            if self.is_some() {
36968                Some(crate::wire::DebugRegistration {
36969                    raw: self.raw,
36970                    _phantom: ::core::marker::PhantomData,
36971                })
36972            } else {
36973                None
36974            }
36975        }
36976    }
36977
36978    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for DebugRegistration<'de>
36979    where
36980        ___D: ::fidl_next::decoder::InternalHandleDecoder + ?Sized,
36981        ___D: ::fidl_next::Decoder<'de>,
36982    {
36983        fn decode(
36984            mut slot: ::fidl_next::Slot<'_, Self>,
36985            decoder: &mut ___D,
36986            _: (),
36987        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
36988            ::fidl_next::munge!(let Self { mut raw, _phantom: _ } = slot.as_mut());
36989            match ::fidl_next::wire::Union::encoded_ordinal(raw.as_mut()) {
36990                1 => ::fidl_next::wire::Union::decode_as::<
36991                    ___D,
36992                    crate::wire::DebugProtocolRegistration<'de>,
36993                >(raw, decoder, ())?,
36994
36995                0 => ::fidl_next::wire::Union::decode_absent(raw)?,
36996                _ => ::fidl_next::wire::Union::decode_unknown(raw, decoder)?,
36997            }
36998
36999            Ok(())
37000        }
37001    }
37002
37003    impl<'de> ::core::fmt::Debug for DebugRegistration<'de> {
37004        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
37005            self.as_ref().fmt(f)
37006        }
37007    }
37008
37009    impl<'de> ::fidl_next::IntoNatural for DebugRegistration<'de> {
37010        type Natural = ::core::option::Option<crate::natural::DebugRegistration>;
37011    }
37012
37013    #[repr(transparent)]
37014    pub struct ConfigValueSource<'de> {
37015        pub(crate) raw: ::fidl_next::wire::Union,
37016        pub(crate) _phantom: ::core::marker::PhantomData<&'de mut [::fidl_next::Chunk]>,
37017    }
37018
37019    impl ::fidl_next::Constrained for ConfigValueSource<'_> {
37020        type Constraint = ();
37021
37022        fn validate(
37023            _: ::fidl_next::Slot<'_, Self>,
37024            _: Self::Constraint,
37025        ) -> Result<(), ::fidl_next::ValidationError> {
37026            Ok(())
37027        }
37028    }
37029
37030    unsafe impl ::fidl_next::Wire for ConfigValueSource<'static> {
37031        type Narrowed<'de> = ConfigValueSource<'de>;
37032
37033        #[inline]
37034        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
37035            ::fidl_next::munge!(let Self { raw, _phantom: _ } = out);
37036            ::fidl_next::wire::Union::zero_padding(raw);
37037        }
37038    }
37039
37040    impl<'de> ConfigValueSource<'de> {
37041        pub fn is_some(&self) -> bool {
37042            self.raw.is_some()
37043        }
37044
37045        pub fn is_none(&self) -> bool {
37046            self.raw.is_none()
37047        }
37048
37049        pub fn as_ref(&self) -> ::core::option::Option<&crate::wire::ConfigValueSource<'de>> {
37050            if self.is_some() { Some(unsafe { &*(self as *const Self).cast() }) } else { None }
37051        }
37052
37053        pub fn into_option(self) -> ::core::option::Option<crate::wire::ConfigValueSource<'de>> {
37054            if self.is_some() {
37055                Some(crate::wire::ConfigValueSource {
37056                    raw: self.raw,
37057                    _phantom: ::core::marker::PhantomData,
37058                })
37059            } else {
37060                None
37061            }
37062        }
37063    }
37064
37065    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for ConfigValueSource<'de>
37066    where
37067        ___D: ::fidl_next::decoder::InternalHandleDecoder + ?Sized,
37068        ___D: ::fidl_next::Decoder<'de>,
37069    {
37070        fn decode(
37071            mut slot: ::fidl_next::Slot<'_, Self>,
37072            decoder: &mut ___D,
37073            _: (),
37074        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
37075            ::fidl_next::munge!(let Self { mut raw, _phantom: _ } = slot.as_mut());
37076            match ::fidl_next::wire::Union::encoded_ordinal(raw.as_mut()) {
37077                1 => ::fidl_next::wire::Union::decode_as::<___D, ::fidl_next::wire::String<'de>>(
37078                    raw, decoder, 4294967295,
37079                )?,
37080
37081                2 => ::fidl_next::wire::Union::decode_as::<
37082                    ___D,
37083                    crate::wire::ConfigSourceCapabilities<'de>,
37084                >(raw, decoder, ())?,
37085
37086                0 => ::fidl_next::wire::Union::decode_absent(raw)?,
37087                _ => ::fidl_next::wire::Union::decode_unknown(raw, decoder)?,
37088            }
37089
37090            Ok(())
37091        }
37092    }
37093
37094    impl<'de> ::core::fmt::Debug for ConfigValueSource<'de> {
37095        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
37096            self.as_ref().fmt(f)
37097        }
37098    }
37099
37100    impl<'de> ::fidl_next::IntoNatural for ConfigValueSource<'de> {
37101        type Natural = ::core::option::Option<crate::natural::ConfigValueSource>;
37102    }
37103
37104    #[repr(transparent)]
37105    pub struct LayoutParameter<'de> {
37106        pub(crate) raw: ::fidl_next::wire::Union,
37107        pub(crate) _phantom: ::core::marker::PhantomData<&'de mut [::fidl_next::Chunk]>,
37108    }
37109
37110    impl ::fidl_next::Constrained for LayoutParameter<'_> {
37111        type Constraint = ();
37112
37113        fn validate(
37114            _: ::fidl_next::Slot<'_, Self>,
37115            _: Self::Constraint,
37116        ) -> Result<(), ::fidl_next::ValidationError> {
37117            Ok(())
37118        }
37119    }
37120
37121    unsafe impl ::fidl_next::Wire for LayoutParameter<'static> {
37122        type Narrowed<'de> = LayoutParameter<'de>;
37123
37124        #[inline]
37125        fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
37126            ::fidl_next::munge!(let Self { raw, _phantom: _ } = out);
37127            ::fidl_next::wire::Union::zero_padding(raw);
37128        }
37129    }
37130
37131    impl<'de> LayoutParameter<'de> {
37132        pub fn is_some(&self) -> bool {
37133            self.raw.is_some()
37134        }
37135
37136        pub fn is_none(&self) -> bool {
37137            self.raw.is_none()
37138        }
37139
37140        pub fn as_ref(&self) -> ::core::option::Option<&crate::wire::LayoutParameter<'de>> {
37141            if self.is_some() { Some(unsafe { &*(self as *const Self).cast() }) } else { None }
37142        }
37143
37144        pub fn into_option(self) -> ::core::option::Option<crate::wire::LayoutParameter<'de>> {
37145            if self.is_some() {
37146                Some(crate::wire::LayoutParameter {
37147                    raw: self.raw,
37148                    _phantom: ::core::marker::PhantomData,
37149                })
37150            } else {
37151                None
37152            }
37153        }
37154    }
37155
37156    unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for LayoutParameter<'de>
37157    where
37158        ___D: ::fidl_next::decoder::InternalHandleDecoder + ?Sized,
37159        ___D: ::fidl_next::Decoder<'de>,
37160    {
37161        fn decode(
37162            mut slot: ::fidl_next::Slot<'_, Self>,
37163            decoder: &mut ___D,
37164            _: (),
37165        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
37166            ::fidl_next::munge!(let Self { mut raw, _phantom: _ } = slot.as_mut());
37167            match ::fidl_next::wire::Union::encoded_ordinal(raw.as_mut()) {
37168                1 => ::fidl_next::wire::Union::decode_as::<___D, crate::wire::ConfigType<'de>>(
37169                    raw,
37170                    decoder,
37171                    (),
37172                )?,
37173
37174                0 => ::fidl_next::wire::Union::decode_absent(raw)?,
37175                _ => ::fidl_next::wire::Union::decode_unknown(raw, decoder)?,
37176            }
37177
37178            Ok(())
37179        }
37180    }
37181
37182    impl<'de> ::core::fmt::Debug for LayoutParameter<'de> {
37183        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
37184            self.as_ref().fmt(f)
37185        }
37186    }
37187
37188    impl<'de> ::fidl_next::IntoNatural for LayoutParameter<'de> {
37189        type Natural = ::core::option::Option<crate::natural::LayoutParameter>;
37190    }
37191}
37192
37193pub mod generic {
37194
37195    /// The generic type corresponding to [`ParentRef`].
37196    pub type ParentRef = ();
37197
37198    /// The generic type corresponding to [`SelfRef`].
37199    pub type SelfRef = ();
37200
37201    /// The generic type corresponding to [`ChildRef`].
37202    pub struct ChildRef<T0, T1> {
37203        pub name: T0,
37204
37205        pub collection: T1,
37206    }
37207
37208    unsafe impl<___E, T0, T1> ::fidl_next::Encode<crate::wire::ChildRef<'static>, ___E>
37209        for ChildRef<T0, T1>
37210    where
37211        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
37212        ___E: ::fidl_next::Encoder,
37213        T0: ::fidl_next::Encode<::fidl_next::wire::String<'static>, ___E>,
37214        T1: ::fidl_next::Encode<::fidl_next::wire::OptionalString<'static>, ___E>,
37215    {
37216        #[inline]
37217        fn encode(
37218            self,
37219            encoder_: &mut ___E,
37220            out_: &mut ::core::mem::MaybeUninit<crate::wire::ChildRef<'static>>,
37221            _: (),
37222        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
37223            ::fidl_next::munge! {
37224                let crate::wire::ChildRef {
37225                    name,
37226                    collection,
37227
37228                } = out_;
37229            }
37230
37231            ::fidl_next::Encode::encode(self.name, encoder_, name, 1024)?;
37232
37233            ::fidl_next::Encode::encode(self.collection, encoder_, collection, 100)?;
37234
37235            Ok(())
37236        }
37237    }
37238
37239    /// The generic type corresponding to [`CollectionRef`].
37240    pub struct CollectionRef<T0> {
37241        pub name: T0,
37242    }
37243
37244    unsafe impl<___E, T0> ::fidl_next::Encode<crate::wire::CollectionRef<'static>, ___E>
37245        for CollectionRef<T0>
37246    where
37247        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
37248        ___E: ::fidl_next::Encoder,
37249        T0: ::fidl_next::Encode<::fidl_next::wire::String<'static>, ___E>,
37250    {
37251        #[inline]
37252        fn encode(
37253            self,
37254            encoder_: &mut ___E,
37255            out_: &mut ::core::mem::MaybeUninit<crate::wire::CollectionRef<'static>>,
37256            _: (),
37257        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
37258            ::fidl_next::munge! {
37259                let crate::wire::CollectionRef {
37260                    name,
37261
37262                } = out_;
37263            }
37264
37265            ::fidl_next::Encode::encode(self.name, encoder_, name, 100)?;
37266
37267            Ok(())
37268        }
37269    }
37270
37271    /// The generic type corresponding to [`FrameworkRef`].
37272    pub type FrameworkRef = ();
37273
37274    /// The generic type corresponding to [`CapabilityRef`].
37275    pub struct CapabilityRef<T0> {
37276        pub name: T0,
37277    }
37278
37279    unsafe impl<___E, T0> ::fidl_next::Encode<crate::wire::CapabilityRef<'static>, ___E>
37280        for CapabilityRef<T0>
37281    where
37282        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
37283        ___E: ::fidl_next::Encoder,
37284        T0: ::fidl_next::Encode<::fidl_next::wire::String<'static>, ___E>,
37285    {
37286        #[inline]
37287        fn encode(
37288            self,
37289            encoder_: &mut ___E,
37290            out_: &mut ::core::mem::MaybeUninit<crate::wire::CapabilityRef<'static>>,
37291            _: (),
37292        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
37293            ::fidl_next::munge! {
37294                let crate::wire::CapabilityRef {
37295                    name,
37296
37297                } = out_;
37298            }
37299
37300            ::fidl_next::Encode::encode(self.name, encoder_, name, 100)?;
37301
37302            Ok(())
37303        }
37304    }
37305
37306    /// The generic type corresponding to [`DebugRef`].
37307    pub type DebugRef = ();
37308
37309    /// The generic type corresponding to [`VoidRef`].
37310    pub type VoidRef = ();
37311
37312    /// The generic type corresponding to [`EnvironmentRef`].
37313    pub type EnvironmentRef = ();
37314
37315    /// The generic type corresponding to [`NameMapping`].
37316    pub struct NameMapping<T0, T1> {
37317        pub source_name: T0,
37318
37319        pub target_name: T1,
37320    }
37321
37322    unsafe impl<___E, T0, T1> ::fidl_next::Encode<crate::wire::NameMapping<'static>, ___E>
37323        for NameMapping<T0, T1>
37324    where
37325        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
37326        ___E: ::fidl_next::Encoder,
37327        T0: ::fidl_next::Encode<::fidl_next::wire::String<'static>, ___E>,
37328        T1: ::fidl_next::Encode<::fidl_next::wire::String<'static>, ___E>,
37329    {
37330        #[inline]
37331        fn encode(
37332            self,
37333            encoder_: &mut ___E,
37334            out_: &mut ::core::mem::MaybeUninit<crate::wire::NameMapping<'static>>,
37335            _: (),
37336        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
37337            ::fidl_next::munge! {
37338                let crate::wire::NameMapping {
37339                    source_name,
37340                    target_name,
37341
37342                } = out_;
37343            }
37344
37345            ::fidl_next::Encode::encode(self.source_name, encoder_, source_name, 100)?;
37346
37347            ::fidl_next::Encode::encode(self.target_name, encoder_, target_name, 100)?;
37348
37349            Ok(())
37350        }
37351    }
37352
37353    /// The generic type corresponding to [`ConfigType`].
37354    pub struct ConfigType<T0, T1, T2> {
37355        pub layout: T0,
37356
37357        pub parameters: T1,
37358
37359        pub constraints: T2,
37360    }
37361
37362    unsafe impl<___E, T0, T1, T2> ::fidl_next::Encode<crate::wire::ConfigType<'static>, ___E>
37363        for ConfigType<T0, T1, T2>
37364    where
37365        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
37366        ___E: ::fidl_next::Encoder,
37367        T0: ::fidl_next::Encode<crate::wire::ConfigTypeLayout, ___E>,
37368        T1: ::fidl_next::Encode<
37369                ::fidl_next::wire::OptionalVector<'static, crate::wire::LayoutParameter<'static>>,
37370                ___E,
37371            >,
37372        T2: ::fidl_next::Encode<
37373                ::fidl_next::wire::Vector<'static, crate::wire::LayoutConstraint<'static>>,
37374                ___E,
37375            >,
37376    {
37377        #[inline]
37378        fn encode(
37379            self,
37380            encoder_: &mut ___E,
37381            out_: &mut ::core::mem::MaybeUninit<crate::wire::ConfigType<'static>>,
37382            _: (),
37383        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
37384            ::fidl_next::munge! {
37385                let crate::wire::ConfigType {
37386                    layout,
37387                    parameters,
37388                    constraints,
37389
37390                } = out_;
37391            }
37392
37393            ::fidl_next::Encode::encode(self.layout, encoder_, layout, ())?;
37394
37395            ::fidl_next::Encode::encode(self.parameters, encoder_, parameters, (4294967295, ()))?;
37396
37397            ::fidl_next::Encode::encode(self.constraints, encoder_, constraints, (4294967295, ()))?;
37398
37399            Ok(())
37400        }
37401    }
37402
37403    /// The generic type corresponding to [`ResolvedConfigField`].
37404    pub struct ResolvedConfigField<T0, T1> {
37405        pub key: T0,
37406
37407        pub value: T1,
37408    }
37409
37410    unsafe impl<___E, T0, T1> ::fidl_next::Encode<crate::wire::ResolvedConfigField<'static>, ___E>
37411        for ResolvedConfigField<T0, T1>
37412    where
37413        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
37414        ___E: ::fidl_next::Encoder,
37415        T0: ::fidl_next::Encode<::fidl_next::wire::String<'static>, ___E>,
37416        T1: ::fidl_next::Encode<crate::wire::ConfigValue<'static>, ___E>,
37417    {
37418        #[inline]
37419        fn encode(
37420            self,
37421            encoder_: &mut ___E,
37422            out_: &mut ::core::mem::MaybeUninit<crate::wire::ResolvedConfigField<'static>>,
37423            _: (),
37424        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
37425            ::fidl_next::munge! {
37426                let crate::wire::ResolvedConfigField {
37427                    key,
37428                    value,
37429
37430                } = out_;
37431            }
37432
37433            ::fidl_next::Encode::encode(self.key, encoder_, key, 4294967295)?;
37434
37435            ::fidl_next::Encode::encode(self.value, encoder_, value, ())?;
37436
37437            Ok(())
37438        }
37439    }
37440
37441    /// The generic type corresponding to [`ResolvedConfig`].
37442    pub struct ResolvedConfig<T0, T1> {
37443        pub fields: T0,
37444
37445        pub checksum: T1,
37446    }
37447
37448    unsafe impl<___E, T0, T1> ::fidl_next::Encode<crate::wire::ResolvedConfig<'static>, ___E>
37449        for ResolvedConfig<T0, T1>
37450    where
37451        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
37452        ___E: ::fidl_next::Encoder,
37453        T0: ::fidl_next::Encode<
37454                ::fidl_next::wire::Vector<'static, crate::wire::ResolvedConfigField<'static>>,
37455                ___E,
37456            >,
37457        T1: ::fidl_next::Encode<crate::wire::ConfigChecksum<'static>, ___E>,
37458    {
37459        #[inline]
37460        fn encode(
37461            self,
37462            encoder_: &mut ___E,
37463            out_: &mut ::core::mem::MaybeUninit<crate::wire::ResolvedConfig<'static>>,
37464            _: (),
37465        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
37466            ::fidl_next::munge! {
37467                let crate::wire::ResolvedConfig {
37468                    fields,
37469                    checksum,
37470
37471                } = out_;
37472            }
37473
37474            ::fidl_next::Encode::encode(self.fields, encoder_, fields, (4294967295, ()))?;
37475
37476            ::fidl_next::Encode::encode(self.checksum, encoder_, checksum, ())?;
37477
37478            Ok(())
37479        }
37480    }
37481}
37482
37483pub use self::natural::*;
37484
37485#[doc = " Config keys can only consist of these many bytes\n"]
37486pub const CONFIG_KEY_MAX_SIZE: u32 = 64 as u32;
37487
37488pub const MAX_NAME_LENGTH: u32 = 100 as u32;
37489
37490pub const MAX_PATH_LENGTH: u32 = 1024 as u32;
37491
37492pub const MAX_CHILD_NAME_LENGTH: u32 = 1024 as u32;
37493
37494pub const MAX_URL_SCHEME_LENGTH: u32 = 100 as u32;
37495
37496pub const MAX_MONIKER_LENGTH: u32 = 4096 as u32;
37497
37498#[doc = " The maximum number of EventSubscriptions in an EventStream.\n"]
37499pub const MAX_NUM_EVENT_STREAM_SUBSCRIPTIONS: u64 = 100 as u64;