fidl_fuchsia_component_decl__common/
fidl_fuchsia_component_decl__common.rs

1// WARNING: This file is machine generated by fidlgen.
2
3#![warn(clippy::all)]
4#![allow(unused_parens, unused_mut, unused_imports, nonstandard_style)]
5
6use bitflags::bitflags;
7use fidl::encoding::{MessageBufFor, ProxyChannelBox, ResourceDialect};
8use futures::future::{self, MaybeDone, TryFutureExt};
9use zx_status;
10
11/// The string identifier for a config field.
12pub type ConfigKey = String;
13
14pub type ChildName = String;
15
16/// Path in a dictionary. The format is similar to a directory path, except no `.` or `..`.
17/// is allowed and each path segment must conform to the format of the `name` type.
18///
19/// The "dirname" (first to the penultimate segment, or empty if there is one
20/// segment) represents a sequence of nested dictionaries.
21/// The "basename" (last segment) identifies a capability in the last nested
22/// dictionary.
23pub type DictionaryPath = String;
24
25pub type Name = String;
26
27pub type UrlScheme = String;
28
29/// Config keys can only consist of these many bytes
30pub const CONFIG_KEY_MAX_SIZE: u32 = 64;
31
32pub const MAX_CHILD_NAME_LENGTH: u32 = 1024;
33
34pub const MAX_MONIKER_LENGTH: u32 = 4096;
35
36pub const MAX_NAME_LENGTH: u32 = 100;
37
38/// The maximum number of EventSubscriptions in an EventStream.
39pub const MAX_NUM_EVENT_STREAM_SUBSCRIPTIONS: u64 = 100;
40
41pub const MAX_PATH_LENGTH: u32 = 1024;
42
43pub const MAX_URL_SCHEME_LENGTH: u32 = 100;
44
45bitflags! {
46    /// Allowed sources for runtime overrides of a config field's value.
47    #[derive(Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
48    pub struct ConfigMutability: u32 {
49        /// Allow parent components to provide overrides for the configuration field.
50        const PARENT = 1;
51    }
52}
53
54impl ConfigMutability {
55    #[inline(always)]
56    pub fn from_bits_allow_unknown(bits: u32) -> Self {
57        Self::from_bits_retain(bits)
58    }
59
60    #[inline(always)]
61    pub fn has_unknown_bits(&self) -> bool {
62        self.get_unknown_bits() != 0
63    }
64
65    #[inline(always)]
66    pub fn get_unknown_bits(&self) -> u32 {
67        self.bits() & !Self::all().bits()
68    }
69}
70
71/// The kinds of offers that can target the children in a collection.
72#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
73#[repr(u32)]
74pub enum AllowedOffers {
75    /// Only static offers may target components in the collection. "Static
76    /// offers" are the offers in the `ComponentDecl` that target the collection
77    /// itself.
78    ///
79    /// This is the default behavior.
80    StaticOnly = 1,
81    /// Both static offers and dynamic offers may target components in the
82    /// collection. "Static offers" are the offers in the `ComponentDecl` that
83    /// target the collection itself. "Dynamic offers" are additional offers
84    /// that are passed to `CreateChild` at runtime.
85    StaticAndDynamic = 2,
86}
87
88impl AllowedOffers {
89    #[inline]
90    pub fn from_primitive(prim: u32) -> Option<Self> {
91        match prim {
92            1 => Some(Self::StaticOnly),
93            2 => Some(Self::StaticAndDynamic),
94            _ => None,
95        }
96    }
97
98    #[inline]
99    pub const fn into_primitive(self) -> u32 {
100        self as u32
101    }
102}
103
104/// Describes the expected availability of the capability.
105///
106/// Some capabilities may not be present on all system configurations. In those
107/// cases, the availability will be declared as `OPTIONAL` along the chains of
108/// exposes/offers/uses, and the capability would be routed from `void` on
109/// system configurations where it does not make sense to route or provide a
110/// particular capability (e.g. graphical capabilities on a headless system).
111#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
112#[repr(u32)]
113pub enum Availability {
114    /// The capability must be available. Failure to route the capability is an
115    /// error.
116    Required = 1,
117    /// Inside a use declaration: the component can function if it fails to
118    /// obtain the capability.
119    ///
120    /// Inside an offer/expose declaration: the capability may not be available
121    /// in some system configurations. As a corollary, the target component must
122    /// not have a required dependency on the capability.
123    Optional = 2,
124    /// If the target of the corresponding offer or expose declaration requires
125    /// the capability, then the behavior is equivalent to required. If the
126    /// target has an optional dependency on the capability, then the behavior
127    /// is equivalent to optional. This is useful for container components that
128    /// would like to change their routing availability based on ones inside.
129    ///
130    /// This value is not allowed inside a use declaration.
131    SameAsTarget = 3,
132    /// The source may omit the route completely without even having to route
133    /// from `void`.
134    ///
135    /// [`TRANSITIONAL`] is used for soft transitions that introduce new
136    /// capabilities.
137    Transitional = 4,
138}
139
140impl Availability {
141    #[inline]
142    pub fn from_primitive(prim: u32) -> Option<Self> {
143        match prim {
144            1 => Some(Self::Required),
145            2 => Some(Self::Optional),
146            3 => Some(Self::SameAsTarget),
147            4 => Some(Self::Transitional),
148            _ => None,
149        }
150    }
151
152    #[inline]
153    pub const fn into_primitive(self) -> u32 {
154        self as u32
155    }
156}
157
158#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
159pub enum ConfigTypeLayout {
160    Bool,
161    Uint8,
162    Uint16,
163    Uint32,
164    Uint64,
165    Int8,
166    Int16,
167    Int32,
168    Int64,
169    String,
170    Vector,
171    #[doc(hidden)]
172    __SourceBreaking {
173        unknown_ordinal: u32,
174    },
175}
176
177/// Pattern that matches an unknown `ConfigTypeLayout` member.
178#[macro_export]
179macro_rules! ConfigTypeLayoutUnknown {
180    () => {
181        _
182    };
183}
184
185impl ConfigTypeLayout {
186    #[inline]
187    pub fn from_primitive(prim: u32) -> Option<Self> {
188        match prim {
189            1 => Some(Self::Bool),
190            2 => Some(Self::Uint8),
191            3 => Some(Self::Uint16),
192            4 => Some(Self::Uint32),
193            5 => Some(Self::Uint64),
194            6 => Some(Self::Int8),
195            7 => Some(Self::Int16),
196            8 => Some(Self::Int32),
197            9 => Some(Self::Int64),
198            10 => Some(Self::String),
199            11 => Some(Self::Vector),
200            _ => None,
201        }
202    }
203
204    #[inline]
205    pub fn from_primitive_allow_unknown(prim: u32) -> Self {
206        match prim {
207            1 => Self::Bool,
208            2 => Self::Uint8,
209            3 => Self::Uint16,
210            4 => Self::Uint32,
211            5 => Self::Uint64,
212            6 => Self::Int8,
213            7 => Self::Int16,
214            8 => Self::Int32,
215            9 => Self::Int64,
216            10 => Self::String,
217            11 => Self::Vector,
218            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
219        }
220    }
221
222    #[inline]
223    pub fn unknown() -> Self {
224        Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
225    }
226
227    #[inline]
228    pub const fn into_primitive(self) -> u32 {
229        match self {
230            Self::Bool => 1,
231            Self::Uint8 => 2,
232            Self::Uint16 => 3,
233            Self::Uint32 => 4,
234            Self::Uint64 => 5,
235            Self::Int8 => 6,
236            Self::Int16 => 7,
237            Self::Int32 => 8,
238            Self::Int64 => 9,
239            Self::String => 10,
240            Self::Vector => 11,
241            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
242        }
243    }
244
245    #[inline]
246    pub fn is_unknown(&self) -> bool {
247        match self {
248            Self::__SourceBreaking { unknown_ordinal: _ } => true,
249            _ => false,
250        }
251    }
252}
253
254/// `DeliveryType` may be used when declaring a capability, and specifies under
255/// what conditions the framework will open the capability from the provider
256/// component's outgoing directory when there is a request for this capability.
257#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
258pub enum DeliveryType {
259    /// The framework will open the capability as soon as some consumer
260    /// component requests it.
261    Immediate,
262    /// The framework will monitor the `ZX_CHANNEL_READABLE` signal on the
263    /// server endpoint of connection requests made by the consumer component,
264    /// and only open the capability from the provider component's outgoing
265    /// directory when the server endpoint becomes readable.
266    OnReadable,
267    #[doc(hidden)]
268    __SourceBreaking { unknown_ordinal: u32 },
269}
270
271/// Pattern that matches an unknown `DeliveryType` member.
272#[macro_export]
273macro_rules! DeliveryTypeUnknown {
274    () => {
275        _
276    };
277}
278
279impl DeliveryType {
280    #[inline]
281    pub fn from_primitive(prim: u32) -> Option<Self> {
282        match prim {
283            0 => Some(Self::Immediate),
284            1 => Some(Self::OnReadable),
285            _ => None,
286        }
287    }
288
289    #[inline]
290    pub fn from_primitive_allow_unknown(prim: u32) -> Self {
291        match prim {
292            0 => Self::Immediate,
293            1 => Self::OnReadable,
294            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
295        }
296    }
297
298    #[inline]
299    pub fn unknown() -> Self {
300        Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
301    }
302
303    #[inline]
304    pub const fn into_primitive(self) -> u32 {
305        match self {
306            Self::Immediate => 0,
307            Self::OnReadable => 1,
308            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
309        }
310    }
311
312    #[inline]
313    pub fn is_unknown(&self) -> bool {
314        match self {
315            Self::__SourceBreaking { unknown_ordinal: _ } => true,
316            _ => false,
317        }
318    }
319}
320
321/// Describes the type of dependency implied by the capability.
322#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
323#[repr(u32)]
324pub enum DependencyType {
325    /// A strong dependency which may be required by components that use it.
326    Strong = 1,
327    /// A weak dependency which is allowed to form a cycle. Components that use
328    /// a weak dependency must support the dependency being unavailable at
329    /// arbitrary times.
330    Weak = 2,
331}
332
333impl DependencyType {
334    #[inline]
335    pub fn from_primitive(prim: u32) -> Option<Self> {
336        match prim {
337            1 => Some(Self::Strong),
338            2 => Some(Self::Weak),
339            _ => None,
340        }
341    }
342
343    #[inline]
344    pub const fn into_primitive(self) -> u32 {
345        self as u32
346    }
347}
348
349/// The durability of component instances created in a collection.
350#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
351#[repr(u32)]
352pub enum Durability {
353    /// An instance exists until either its parent instance is stopped
354    /// or it is explicitly destroyed.
355    Transient = 2,
356    /// An instance is started upon creation and is immediately destroyed when
357    /// it stops.
358    SingleRun = 3,
359}
360
361impl Durability {
362    #[inline]
363    pub fn from_primitive(prim: u32) -> Option<Self> {
364        match prim {
365            2 => Some(Self::Transient),
366            3 => Some(Self::SingleRun),
367            _ => None,
368        }
369    }
370
371    #[inline]
372    pub const fn into_primitive(self) -> u32 {
373        self as u32
374    }
375}
376
377/// Specifies how a declared environment's initial set of properties are assigned.
378#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
379#[repr(u32)]
380pub enum EnvironmentExtends {
381    /// The environment has no initial set of properties.
382    None = 0,
383    /// The environment's initial set of properties are inherited from its realm.
384    /// Inherited properties include any fields defined in `EnvironmentDecl`.
385    Realm = 1,
386}
387
388impl EnvironmentExtends {
389    #[inline]
390    pub fn from_primitive(prim: u32) -> Option<Self> {
391        match prim {
392            0 => Some(Self::None),
393            1 => Some(Self::Realm),
394            _ => None,
395        }
396    }
397
398    #[inline]
399    pub const fn into_primitive(self) -> u32 {
400        self as u32
401    }
402}
403
404/// Describes the action to take if this component instance terminates
405/// unexpectedly.
406#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
407#[repr(u32)]
408pub enum OnTerminate {
409    /// No action, the default
410    None = 0,
411    /// Trigger a graceful system reboot if the component terminates, unless its controller reports
412    /// via [`fuchsia.component.runner/ComponentController.OnStop`] a `termination_status` of Ok and
413    /// an `exit_code` that is either unset or 0. This is a specialized feature gated by Component
414    /// Framework security policy.
415    Reboot = 1,
416}
417
418impl OnTerminate {
419    #[inline]
420    pub fn from_primitive(prim: u32) -> Option<Self> {
421        match prim {
422            0 => Some(Self::None),
423            1 => Some(Self::Reboot),
424            _ => None,
425        }
426    }
427
428    #[inline]
429    pub const fn into_primitive(self) -> u32 {
430        self as u32
431    }
432}
433
434/// Describes under what conditions the component may be started.
435#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
436#[repr(u32)]
437pub enum StartupMode {
438    /// Start component instance only when it receives an incoming capability request or it's
439    /// started directly with [`fuchsia.component/Controller.Start`].
440    Lazy = 0,
441    /// Start component instance automatically when the parent starts or (for dynamic
442    /// components) when the component is created.
443    Eager = 1,
444}
445
446impl StartupMode {
447    #[inline]
448    pub fn from_primitive(prim: u32) -> Option<Self> {
449        match prim {
450            0 => Some(Self::Lazy),
451            1 => Some(Self::Eager),
452            _ => None,
453        }
454    }
455
456    #[inline]
457    pub const fn into_primitive(self) -> u32 {
458        self as u32
459    }
460}
461
462/// Declares which identifier to use to key a component's isolated storage
463/// directory.
464#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
465#[repr(u32)]
466pub enum StorageId {
467    /// Isolated storage directories are keyed using a component's instance ID
468    /// specified in the component ID index. Components which are not listed in
469    /// the index cannot use or open this storage capability.
470    StaticInstanceId = 1,
471    /// Isolated storage directories are keyed using a component's instance ID
472    /// if one is specified in the component ID index. Otherwise, a component's
473    /// moniker from the storage capability is used to key its isolated
474    /// storage directory.
475    StaticInstanceIdOrMoniker = 2,
476}
477
478impl StorageId {
479    #[inline]
480    pub fn from_primitive(prim: u32) -> Option<Self> {
481        match prim {
482            1 => Some(Self::StaticInstanceId),
483            2 => Some(Self::StaticInstanceIdOrMoniker),
484            _ => None,
485        }
486    }
487
488    #[inline]
489    pub const fn into_primitive(self) -> u32 {
490        self as u32
491    }
492}
493
494/// A reference to a capability declared in this component.
495#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
496pub struct CapabilityRef {
497    pub name: String,
498}
499
500impl fidl::Persistable for CapabilityRef {}
501
502/// A reference to one of the component's child instances.
503#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
504pub struct ChildRef {
505    /// The name assigned to the child by its parent. If `collection` is set,
506    /// `name` is scoped to `collection` and the child is a dynamic instance.
507    pub name: String,
508    /// The collection `name` belongs to. If omitted, `name` references a static
509    /// instance. This field must be omitted if the `ChildRef` is being used in
510    /// a component declaration. Optional.
511    pub collection: Option<String>,
512}
513
514impl fidl::Persistable for ChildRef {}
515
516/// A reference to one of the component's collections.
517#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
518pub struct CollectionRef {
519    pub name: String,
520}
521
522impl fidl::Persistable for CollectionRef {}
523
524#[derive(Clone, Debug, PartialEq)]
525pub struct ConfigType {
526    pub layout: ConfigTypeLayout,
527    pub parameters: Option<Vec<LayoutParameter>>,
528    pub constraints: Vec<LayoutConstraint>,
529}
530
531impl fidl::Persistable for ConfigType {}
532
533/// A reference to the environment's debug capabilities.
534#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
535pub struct DebugRef;
536
537impl fidl::Persistable for DebugRef {}
538
539/// A reference to the environment.
540#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
541pub struct EnvironmentRef;
542
543impl fidl::Persistable for EnvironmentRef {}
544
545/// A reference to the component framework itself.
546#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
547pub struct FrameworkRef;
548
549impl fidl::Persistable for FrameworkRef {}
550
551/// Type used to create a mapping between 2 names. Used to rename service or component instances
552/// in FIDL declarations.
553#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
554pub struct NameMapping {
555    /// Name used in the source instance.
556    pub source_name: String,
557    /// Name used in the target instance.
558    pub target_name: String,
559}
560
561impl fidl::Persistable for NameMapping {}
562
563/// A reference to a component's parent instance.
564#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
565pub struct ParentRef;
566
567impl fidl::Persistable for ParentRef {}
568
569/// A configuration that has been completely resolved by component manager.
570#[derive(Clone, Debug, PartialEq)]
571pub struct ResolvedConfig {
572    pub fields: Vec<ResolvedConfigField>,
573    pub checksum: ConfigChecksum,
574}
575
576impl fidl::Persistable for ResolvedConfig {}
577
578#[derive(Clone, Debug, PartialEq)]
579pub struct ResolvedConfigField {
580    pub key: String,
581    pub value: ConfigValue,
582}
583
584impl fidl::Persistable for ResolvedConfigField {}
585
586/// A reference to the component itself.
587#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
588pub struct SelfRef;
589
590impl fidl::Persistable for SelfRef {}
591
592/// A reference to an intentionally missing offer source.
593#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
594pub struct VoidRef;
595
596impl fidl::Persistable for VoidRef {}
597
598/// Statically declares a child component instance.
599#[derive(Clone, Debug, Default, PartialEq)]
600pub struct Child {
601    /// (Required) The name assigned to the child by its parent.
602    ///
603    /// Must be non-empty, unique among all siblings, and contain only the
604    /// following characters: [a-z0-9-_.].
605    pub name: Option<String>,
606    /// (Required) The child component's URL.
607    ///
608    /// Must be non-empty and a well-formed URL.
609    pub url: Option<String>,
610    /// (Required) The startup mode for the component instance.
611    ///
612    /// Must be set.
613    pub startup: Option<StartupMode>,
614    /// (Optional) The environment assigned to this child.
615    ///
616    /// May be unset, in which case the child will inherit the parent component's
617    /// environment. If set, the name must reference an environment defined in
618    /// the `ComponentDecl` and it must contain only the following characters:
619    /// [a-z0-9-_.].
620    pub environment: Option<String>,
621    /// (Optional, defaults to `NONE`) The action to take if this component
622    /// instance terminates unexpectedly.
623    pub on_terminate: Option<OnTerminate>,
624    /// Configuration overrides to apply to the child's base configuration.
625    ///
626    /// For a configuration field to be overridden it must be marked as mutable by parent.
627    ///
628    /// Parents must pass `ConfigOverride` values which match the child's declared schema types
629    /// exactly.
630    pub config_overrides: Option<Vec<ConfigOverride>>,
631    #[doc(hidden)]
632    pub __source_breaking: fidl::marker::SourceBreaking,
633}
634
635impl fidl::Persistable for Child {}
636
637/// Statically declares a component instance collection.
638#[derive(Clone, Debug, Default, PartialEq)]
639pub struct Collection {
640    /// (Required) The name of the collection. Instances created in the
641    /// collection are scoped to this name.
642    pub name: Option<String>,
643    /// (Required) The durability of instances in the collection.
644    pub durability: Option<Durability>,
645    /// (Optional) The environment assigned to child instances in this
646    /// collection.
647    ///
648    /// May be unset, in which case children in this collection will inherit the
649    /// parent component's environment. If set, the name must reference an
650    /// environment defined in the `ComponentDecl` and it must contain only the
651    /// following characters: [a-z0-9-_.].
652    pub environment: Option<String>,
653    /// (Optional, defaults to `STATIC_ONLY`) The kinds of offers that can
654    /// target the child instances in this collection.
655    ///
656    /// Only components using the `dynamic_offers` restricted feature may set
657    /// this field.
658    pub allowed_offers: Option<AllowedOffers>,
659    /// (Optional, defaults to `false`) Whether child instances in this
660    /// collection can have names longer than the default length limit of 100.
661    ///
662    /// Only components using the `allow_long_names` restricted feature may set
663    /// this field.
664    pub allow_long_names: Option<bool>,
665    /// (Optional) Whether the data in isolated storage used by dynamic child
666    /// instances and their descendants will persist after the instances are
667    /// destroyed. New dynamic instances inherit the previous instances' data
668    /// stores.
669    ///
670    /// This setting can be overridden by a lower-level collection that is a
671    /// descendant of a collection that enables/disables this setting.
672    ///
673    /// This setting applies to all storage capabilities consumed by the
674    /// collection components and their descendants.
675    ///
676    /// The default is the value inherited from an ancestral collection if set,
677    /// otherwise `false`.
678    pub persistent_storage: Option<bool>,
679    #[doc(hidden)]
680    pub __source_breaking: fidl::marker::SourceBreaking,
681}
682
683impl fidl::Persistable for Collection {}
684
685/// A component declaration.
686///
687/// This information is typically encoded in the component manifest (.cm file)
688/// if it has one or may be generated at runtime by a component resolver for
689/// those that don't.
690#[derive(Clone, Debug, Default, PartialEq)]
691pub struct Component {
692    /// (Optional) Information about the program to run when the component is executed.
693    /// Omitted for non-executable components.
694    pub program: Option<Program>,
695    /// (Optional) List of capabilities used by the component. These consist of
696    /// capabilities offered to the component that are installed in its incoming
697    /// namespace.
698    ///
699    /// The used capabilities must be unique and non-overlapping.
700    pub uses: Option<Vec<Use>>,
701    /// (Optional) List of capabilities exposed by the component. These consist of
702    /// capabilities that are made visible to the parent. The parent
703    /// may `offer` these capabilities to its children, but not `use` them.
704    ///
705    /// The exposed capabilities must be unique and non-overlapping.
706    pub exposes: Option<Vec<Expose>>,
707    /// (Optional) List of capabilities offered to the component's children. These consist
708    /// of capabilities that the given children may `use`, which may come from a
709    /// child, the parent, or the component's own outgoing namespace.
710    ///
711    /// The offered capabilities must be unique and non-overlapping.
712    pub offers: Option<Vec<Offer>>,
713    /// (Optional) List of capabilities defined by the component.
714    pub capabilities: Option<Vec<Capability>>,
715    /// (Optional) The component's statically instantiated children. The children must have
716    /// unique names.
717    pub children: Option<Vec<Child>>,
718    /// (Optional) The component's collections. The collections must have unique names.
719    pub collections: Option<Vec<Collection>>,
720    /// (Optional) List of environments created by this component.
721    /// Environments are assigned to children and control aspects of a child component's
722    /// runtime.
723    pub environments: Option<Vec<Environment>>,
724    /// (Optional) Additional metadata about the component.
725    pub facets: Option<fidl_fuchsia_data__common::Dictionary>,
726    /// (Optional) The schema of the component's configuration interface.
727    pub config: Option<ConfigSchema>,
728    /// (Optional) Debug information about the component.
729    pub debug_info: Option<DebugInfo>,
730    #[doc(hidden)]
731    pub __source_breaking: fidl::marker::SourceBreaking,
732}
733
734impl fidl::Persistable for Component {}
735
736/// Declares a single config field (key + type)
737#[derive(Clone, Debug, Default, PartialEq)]
738pub struct ConfigField {
739    /// (Required) The identifier for this config field.
740    /// This key will be used to match overrides.
741    pub key: Option<String>,
742    /// (Required) The type of config values. Config values are verified
743    /// against this layout at build time and run time.
744    pub type_: Option<ConfigType>,
745    /// Allowed sources for runtime overrides of this field's value.
746    pub mutability: Option<ConfigMutability>,
747    #[doc(hidden)]
748    pub __source_breaking: fidl::marker::SourceBreaking,
749}
750
751impl fidl::Persistable for ConfigField {}
752
753/// A directive to override the value of a particular configuration field in the child.
754#[derive(Clone, Debug, Default, PartialEq)]
755pub struct ConfigOverride {
756    pub key: Option<String>,
757    pub value: Option<ConfigValue>,
758    #[doc(hidden)]
759    pub __source_breaking: fidl::marker::SourceBreaking,
760}
761
762impl fidl::Persistable for ConfigOverride {}
763
764/// The schema of a component's configuration interface.
765#[derive(Clone, Debug, Default, PartialEq)]
766pub struct ConfigSchema {
767    /// (Required) Ordered fields of the component's configuration interface.
768    pub fields: Option<Vec<ConfigField>>,
769    /// (Required) Checksum over the config declaration.
770    pub checksum: Option<ConfigChecksum>,
771    /// (Required) Strategy used to resolve config values.
772    pub value_source: Option<ConfigValueSource>,
773    #[doc(hidden)]
774    pub __source_breaking: fidl::marker::SourceBreaking,
775}
776
777impl fidl::Persistable for ConfigSchema {}
778
779#[derive(Clone, Debug, Default, PartialEq)]
780pub struct ConfigSourceCapabilities {
781    #[doc(hidden)]
782    pub __source_breaking: fidl::marker::SourceBreaking,
783}
784
785impl fidl::Persistable for ConfigSourceCapabilities {}
786
787/// An individual configuration value. It is matched against a specific configuration field based
788/// on its offset within `ValuesData.values`.
789#[derive(Clone, Debug, Default, PartialEq)]
790pub struct ConfigValueSpec {
791    pub value: Option<ConfigValue>,
792    #[doc(hidden)]
793    pub __source_breaking: fidl::marker::SourceBreaking,
794}
795
796impl fidl::Persistable for ConfigValueSpec {}
797
798/// Contents of the configuration value file. Defines the base values for a component's config.
799#[derive(Clone, Debug, Default, PartialEq)]
800pub struct ConfigValuesData {
801    /// The concrete values for the component's configuration.
802    pub values: Option<Vec<ConfigValueSpec>>,
803    /// A SHA-256 checksum of the configuration schema. Must match the checksum in the component
804    /// manifest and config parser library used to resolve the final configuration.
805    pub checksum: Option<ConfigChecksum>,
806    #[doc(hidden)]
807    pub __source_breaking: fidl::marker::SourceBreaking,
808}
809
810impl fidl::Persistable for ConfigValuesData {}
811
812/// Declares a configuration capability.
813///
814/// To learn more about configuration capabilities, see:
815/// https://fuchsia.dev/fuchsia-src/glossary#configuration-capability
816/// or:
817/// https://fuchsia.dev/fuchsia-src/docs/concepts/components/v2/capabilities/configuration
818#[derive(Clone, Debug, Default, PartialEq)]
819pub struct Configuration {
820    /// (Required) The name of this configuration
821    pub name: Option<String>,
822    /// (Required) The value of this Configuration.
823    pub value: Option<ConfigValue>,
824    #[doc(hidden)]
825    pub __source_breaking: fidl::marker::SourceBreaking,
826}
827
828impl fidl::Persistable for Configuration {}
829
830/// Debug information about the component.
831#[derive(Clone, Debug, Default, PartialEq)]
832pub struct DebugInfo {
833    /// The list of CML files that were compiled to produce this manifest.
834    pub manifest_sources: Option<Vec<String>>,
835    #[doc(hidden)]
836    pub __source_breaking: fidl::marker::SourceBreaking,
837}
838
839impl fidl::Persistable for DebugInfo {}
840
841/// Registers a protocol in the environment as a debug capability. This makes
842/// it available to any component in the environment that uses it with
843/// `source == debug`.
844///
845/// To learn more about protocols, see:
846/// https://fuchsia.dev/fuchsia-src/glossary#protocol
847#[derive(Clone, Debug, Default, PartialEq)]
848pub struct DebugProtocolRegistration {
849    /// (Required) The provider of the capability relative to the component
850    /// itself. Must be `parent`, `self`, or `child`.
851    pub source: Option<Ref>,
852    /// (Required) Name identifying the protocol being offered.
853    pub source_name: Option<String>,
854    /// (Required) The name by which the capability is being offered.
855    pub target_name: Option<String>,
856    #[doc(hidden)]
857    pub __source_breaking: fidl::marker::SourceBreaking,
858}
859
860impl fidl::Persistable for DebugProtocolRegistration {}
861
862/// Declares a dictionary capability.
863#[derive(Clone, Debug, Default, PartialEq)]
864pub struct Dictionary {
865    /// (Required) The name of this dictionary.
866    ///
867    /// Must be unique among built-in capabilities.
868    pub name: Option<String>,
869    /// (Optional) Source of the contents used to initialize the dictionary.
870    /// Must be `parent`, `self`, or `child`.
871    pub source: Option<Ref>,
872    /// (Optional) Path in a dictionary provided by `ref` which contains the contents
873    /// that will be used to initialize the dictionary.
874    ///
875    /// This must be set iff `source` is set.
876    pub source_dictionary: Option<String>,
877    /// (Optional) Path in the component's outgoing directory to a
878    /// [fuchsia.component.sandbox/DictionaryRouter] that returns a
879    /// [fuchsia.component.sandbox/DirectoryRef] for this dictionary.
880    ///
881    /// If this is set, it means the dictionary is provided by the program directly, not component
882    /// manager. `source` and `source_dictionary` must be `null` if this is set.
883    pub source_path: Option<String>,
884    #[doc(hidden)]
885    pub __source_breaking: fidl::marker::SourceBreaking,
886}
887
888impl fidl::Persistable for Dictionary {}
889
890/// Declares a directory capability backed by this component.
891///
892/// To learn more about directories, see:
893/// https://fuchsia.dev/fuchsia-src/glossary#directory
894#[derive(Clone, Debug, Default, PartialEq)]
895pub struct Directory {
896    /// (Required) The name of this directory.
897    pub name: Option<String>,
898    /// (Optional) The path to the directory in the component's outgoing
899    /// directory.
900    ///
901    /// Not set for built-in capabilities.
902    pub source_path: Option<String>,
903    /// (Required) The maximum rights that can be set by a component using this
904    /// directory.
905    pub rights: Option<fidl_fuchsia_io__common::Operations>,
906    #[doc(hidden)]
907    pub __source_breaking: fidl::marker::SourceBreaking,
908}
909
910impl fidl::Persistable for Directory {}
911
912/// Declares an environment which configures a realm.
913#[derive(Clone, Debug, Default, PartialEq)]
914pub struct Environment {
915    /// (Required) The name of this environment.
916    pub name: Option<String>,
917    /// (Required) Specifies how the initial state of this environment is
918    /// constructed.
919    pub extends: Option<EnvironmentExtends>,
920    /// (Optional) List of runners available in this environment.
921    ///
922    /// This list determines the total set of runners that are available for any
923    /// component in the environment to use.
924    pub runners: Option<Vec<RunnerRegistration>>,
925    /// (Optional) List of component resolvers and the URL schemes they are
926    /// registered to resolve. These registrations determine how components are
927    /// resolved in the realm. If the component URL scheme does not match any of
928    /// these resolvers, URL resolution is delegated to the parent environment,
929    /// if this environment `extends` from `REALM`.
930    pub resolvers: Option<Vec<ResolverRegistration>>,
931    /// (Optional) Expose capabilities to debug section when component manager
932    /// allows it.
933    ///
934    /// These capabilities are accessible to any component in the environment
935    /// with a `use` declaration with `source == debug`.  Only capabilities
936    /// intended to support development should be declared here, and they are
937    /// only allowed if explicitly included in the component manager allowlist.
938    pub debug_capabilities: Option<Vec<DebugRegistration>>,
939    /// (Optional) The duration in milliseconds that the component will have to
940    /// stop before it is killed. Required if this environment `extends` from
941    /// `NONE`.
942    pub stop_timeout_ms: Option<u32>,
943    #[doc(hidden)]
944    pub __source_breaking: fidl::marker::SourceBreaking,
945}
946
947impl fidl::Persistable for Environment {}
948
949/// Declares an event_stream capability
950///
951/// This type cannot be used in `fuchsia.component.decl.Component`. It is only
952/// used for the framework's built-in capabilities declared in
953/// `internal.Config`.
954#[derive(Clone, Debug, Default, PartialEq)]
955pub struct EventStream {
956    /// (Required) The name of this event stream.
957    ///
958    /// Must be unique among built-in capabilities.
959    pub name: Option<String>,
960    #[doc(hidden)]
961    pub __source_breaking: fidl::marker::SourceBreaking,
962}
963
964impl fidl::Persistable for EventStream {}
965
966/// Indicates the event name to subscribe to with a given event mode.
967#[derive(Clone, Debug, Default, PartialEq)]
968pub struct EventSubscription {
969    /// (Required) The event names to subscribe to.
970    pub event_name: Option<String>,
971    #[doc(hidden)]
972    pub __source_breaking: fidl::marker::SourceBreaking,
973}
974
975impl fidl::Persistable for EventSubscription {}
976
977/// Declares a configuration capability exposed to a component's containing realm, such as
978/// a capability exposed by the component or one of its children at runtime.
979#[derive(Clone, Debug, Default, PartialEq)]
980pub struct ExposeConfiguration {
981    /// (Required) The provider of the capability relative to the component
982    /// itself. Must be `self` or `child`, or `void`. If set to `void`, then the
983    /// target must expose, offer, or use the capability with `OPTIONAL` or
984    /// `TRANSITIONAL` availability.
985    pub source: Option<Ref>,
986    /// (Required) Name identifying the configuration, by which it was presented to
987    /// this component.
988    pub source_name: Option<String>,
989    /// (Required) The destination to which the capability is exposed.
990    pub target: Option<Ref>,
991    /// (Required) The name by which the capability is being exposed.
992    pub target_name: Option<String>,
993    /// (Optional, defaults to `REQUIRED`) The availability of this capability.
994    /// See [`Availability`].
995    pub availability: Option<Availability>,
996    /// (Optional) Path in a dictionary provided by `source` which contains `source_name`.
997    /// If this field is absent, `source_name` identifies a capability directly routed
998    /// by `source`. If set, `source_name` identifies a capability nested inside this
999    /// dictionary.
1000    pub source_dictionary: Option<String>,
1001    #[doc(hidden)]
1002    pub __source_breaking: fidl::marker::SourceBreaking,
1003}
1004
1005impl fidl::Persistable for ExposeConfiguration {}
1006
1007/// Declares a dictionary exposed to a component's containing realm, such as
1008/// a dictionary exposed by the component or one of its children at runtime.
1009///
1010/// To learn more about dictionarys, see:
1011/// https://fuchsia.dev/fuchsia-src/glossary#dictionary
1012#[derive(Clone, Debug, Default, PartialEq)]
1013pub struct ExposeDictionary {
1014    /// (Required) The provider of the capability relative to the component
1015    /// itself. Must be `self` or `child`, or `void`. If set to `void`, then the
1016    /// target must expose, offer, or use the capability with `OPTIONAL` or
1017    /// `TRANSITIONAL` availability.
1018    pub source: Option<Ref>,
1019    /// (Required) Name identifying the dictionary, by which it was presented to
1020    /// this component.
1021    pub source_name: Option<String>,
1022    /// (Required) The destination to which the dictionary is exposed: either the
1023    /// component's realm or the framework.
1024    pub target: Option<Ref>,
1025    /// (Required) The name by which the capability is being exposed.
1026    pub target_name: Option<String>,
1027    /// (Optional, defaults to `REQUIRED`) The availability of this capability.
1028    /// See [`Availability`].
1029    pub availability: Option<Availability>,
1030    /// (Optional) Path in a dictionary offered by `ref` which contains `source_name`.
1031    /// If this field is absent, `source_name` identifies a capability directly routed
1032    /// by `source`. If set, `source_name` identifies a capability nested inside a
1033    /// dictionary. The name of the top-level dictionary is given by the first path
1034    /// segment of `source_dictionary`, and `source` is expected to route a
1035    /// dictionary capability with this name. The rest of the path (possibly empty)
1036    /// represents the path to a dictionary nested in the top-level dictionary which
1037    /// is expected to contain `source_name`.
1038    pub source_dictionary: Option<String>,
1039    #[doc(hidden)]
1040    pub __source_breaking: fidl::marker::SourceBreaking,
1041}
1042
1043impl fidl::Persistable for ExposeDictionary {}
1044
1045/// Declares a directory exposed to a component's containing realm, such as a
1046/// directory exposed by the component or one of its children at runtime.
1047#[derive(Clone, Debug, Default, PartialEq)]
1048pub struct ExposeDirectory {
1049    /// (Required) The provider of the capability relative to the component
1050    /// itself. Must be `self` or `child`, or `void`. If set to `void`, then the
1051    /// target must expose, offer, or use the capability with `OPTIONAL` or
1052    /// `TRANSITIONAL` availability.
1053    pub source: Option<Ref>,
1054    /// (Required) Name identifying the directory, by which it was presented to
1055    /// this component.
1056    pub source_name: Option<String>,
1057    /// (Required) The destination to which the directory is exposed: either the
1058    /// component's realm or the framework.
1059    pub target: Option<Ref>,
1060    /// (Required) The name by which the capability is being exposed.
1061    pub target_name: Option<String>,
1062    /// (Optional) The maximum rights that can be set by a component using this
1063    /// directory. If unset, the rights are inherited from `source`.
1064    pub rights: Option<fidl_fuchsia_io__common::Operations>,
1065    /// (Optional) The subdirectory of this directory to expose instead of the
1066    /// root.
1067    pub subdir: Option<String>,
1068    /// (Optional, defaults to `REQUIRED`) The availability of this capability.
1069    /// See [`Availability`].
1070    pub availability: Option<Availability>,
1071    /// (Optional) Path in a dictionary offered by `ref` which contains `source_name`.
1072    /// If this field is absent, `source_name` identifies a capability directly routed
1073    /// by `source`. If set, `source_name` identifies a capability nested inside a
1074    /// dictionary. The name of the top-level dictionary is given by the first path
1075    /// segment of `source_dictionary`, and `source` is expected to route a
1076    /// dictionary capability with this name. The rest of the path (possibly empty)
1077    /// represents the path to a dictionary nested in the top-level dictionary which
1078    /// is expected to contain `source_name`.
1079    pub source_dictionary: Option<String>,
1080    #[doc(hidden)]
1081    pub __source_breaking: fidl::marker::SourceBreaking,
1082}
1083
1084impl fidl::Persistable for ExposeDirectory {}
1085
1086/// Declares a protocol exposed to a component's containing realm, such as
1087/// a protocol exposed by the component or one of its children at runtime.
1088///
1089/// To learn more about protocols, see:
1090/// https://fuchsia.dev/fuchsia-src/glossary#protocol
1091#[derive(Clone, Debug, Default, PartialEq)]
1092pub struct ExposeProtocol {
1093    /// (Required) The provider of the capability relative to the component
1094    /// itself. Must be `self` or `child`, or `void`. If set to `void`, then the
1095    /// target must expose, offer, or use the capability with `OPTIONAL` or
1096    /// `TRANSITIONAL` availability.
1097    pub source: Option<Ref>,
1098    /// (Required) Name identifying the protocol, by which it was presented to
1099    /// this component.
1100    pub source_name: Option<String>,
1101    /// (Required) The destination to which the protocol is exposed: either the
1102    /// component's realm or the framework.
1103    pub target: Option<Ref>,
1104    /// (Required) The name by which the capability is being exposed.
1105    pub target_name: Option<String>,
1106    /// (Optional, defaults to `REQUIRED`) The availability of this capability.
1107    /// See [`Availability`].
1108    pub availability: Option<Availability>,
1109    /// (Optional) Path in a dictionary offered by `ref` which contains `source_name`.
1110    /// If this field is absent, `source_name` identifies a capability directly routed
1111    /// by `source`. If set, `source_name` identifies a capability nested inside a
1112    /// dictionary. The name of the top-level dictionary is given by the first path
1113    /// segment of `source_dictionary`, and `source` is expected to route a
1114    /// dictionary capability with this name. The rest of the path (possibly empty)
1115    /// represents the path to a dictionary nested in the top-level dictionary which
1116    /// is expected to contain `source_name`.
1117    pub source_dictionary: Option<String>,
1118    #[doc(hidden)]
1119    pub __source_breaking: fidl::marker::SourceBreaking,
1120}
1121
1122impl fidl::Persistable for ExposeProtocol {}
1123
1124/// Declares a resolver exposed to a component's containing realm, such as a
1125/// resolver exposed by the component or one of its children at runtime.
1126#[derive(Clone, Debug, Default, PartialEq)]
1127pub struct ExposeResolver {
1128    /// (Required) The provider of the capability relative to the component
1129    /// itself. Must be `self` or `child`.
1130    pub source: Option<Ref>,
1131    /// (Required) The name of the resolver, by which it was presented to this
1132    /// component.
1133    pub source_name: Option<String>,
1134    /// (Required) The destination to which the resolver is exposed
1135    pub target: Option<Ref>,
1136    /// (Required) The name by which the capability is being exposed.
1137    pub target_name: Option<String>,
1138    /// (Optional) Path in a dictionary offered by `ref` which contains `source_name`.
1139    /// If this field is absent, `source_name` identifies a capability directly routed
1140    /// by `source`. If set, `source_name` identifies a capability nested inside a
1141    /// dictionary. The name of the top-level dictionary is given by the first path
1142    /// segment of `source_dictionary`, and `source` is expected to route a
1143    /// dictionary capability with this name. The rest of the path (possibly empty)
1144    /// represents the path to a dictionary nested in the top-level dictionary which
1145    /// is expected to contain `source_name`.
1146    pub source_dictionary: Option<String>,
1147    #[doc(hidden)]
1148    pub __source_breaking: fidl::marker::SourceBreaking,
1149}
1150
1151impl fidl::Persistable for ExposeResolver {}
1152
1153/// Declares a runner exposed to a component's containing realm, such as a
1154/// runner exposed by the component or one of its children at runtime.
1155#[derive(Clone, Debug, Default, PartialEq)]
1156pub struct ExposeRunner {
1157    /// (Required) The provider of the capability relative to the component
1158    /// itself. Must be `self` or `child`.
1159    pub source: Option<Ref>,
1160    /// (Required) The name of the runner, by which it was presented to this
1161    /// component.
1162    pub source_name: Option<String>,
1163    /// (Required) The destination to which the runner is exposed: either the
1164    /// component's realm or the framework.
1165    pub target: Option<Ref>,
1166    /// (Required) The name by which the capability is being exposed.
1167    pub target_name: Option<String>,
1168    /// (Optional) Path in a dictionary offered by `ref` which contains `source_name`.
1169    /// If this field is absent, `source_name` identifies a capability directly routed
1170    /// by `source`. If set, `source_name` identifies a capability nested inside a
1171    /// dictionary. The name of the top-level dictionary is given by the first path
1172    /// segment of `source_dictionary`, and `source` is expected to route a
1173    /// dictionary capability with this name. The rest of the path (possibly empty)
1174    /// represents the path to a dictionary nested in the top-level dictionary which
1175    /// is expected to contain `source_name`.
1176    pub source_dictionary: Option<String>,
1177    #[doc(hidden)]
1178    pub __source_breaking: fidl::marker::SourceBreaking,
1179}
1180
1181impl fidl::Persistable for ExposeRunner {}
1182
1183/// Declares a service exposed to a component's containing realm, such as a
1184/// service exposed by the component or one of its children at runtime.
1185///
1186/// To learn more about services, see:
1187/// https://fuchsia.dev/fuchsia-src/glossary#service
1188#[derive(Clone, Debug, Default, PartialEq)]
1189pub struct ExposeService {
1190    /// (Required) The provider of the capability relative to the component
1191    /// itself. Must be `self` or `child`, or `void`. If set to `void`, then the
1192    /// target must expose, offer, or use the capability with `OPTIONAL` or
1193    /// `TRANSITIONAL` availability.
1194    pub source: Option<Ref>,
1195    /// (Required) Name identifying the service, by which it was presented to
1196    /// this component.
1197    pub source_name: Option<String>,
1198    /// (Required) The destination to which the service is exposed: either the
1199    /// component's realm or the framework.
1200    pub target: Option<Ref>,
1201    /// (Required) The name by which the capability is being exposed.
1202    pub target_name: Option<String>,
1203    /// (Optional, defaults to `REQUIRED`) The availability of this capability.
1204    /// See [`Availability`].
1205    pub availability: Option<Availability>,
1206    /// (Optional) Path in a dictionary provided by `source` which contains `source_name`.
1207    /// If this field is absent, `source_name` identifies a capability directly routed
1208    /// by `source`. If set, `source_name` identifies a capability nested inside this
1209    /// dictionary.
1210    pub source_dictionary: Option<String>,
1211    #[doc(hidden)]
1212    pub __source_breaking: fidl::marker::SourceBreaking,
1213}
1214
1215impl fidl::Persistable for ExposeService {}
1216
1217/// Declares a configuration capability offered by a component to one of its children,
1218/// which may have been offered by the component's containing realm, the
1219/// component itself, or one of its other children.
1220#[derive(Clone, Debug, Default, PartialEq)]
1221pub struct OfferConfiguration {
1222    /// (Required) The provider of the capability relative to the component
1223    /// itself. Must be `parent`, `self`, `child`, or `void`.
1224    /// If set to `void`, then the target must offer or use the capability with
1225    /// `OPTIONAL` or `TRANSITIONAL` availability.
1226    pub source: Option<Ref>,
1227    /// (Required) Name identifying the configuration being offered.
1228    pub source_name: Option<String>,
1229    /// (Required) Reference to the target. Must be `child`, or `collection`.
1230    pub target: Option<Ref>,
1231    /// (Required) The name by which the capability is being offered.
1232    pub target_name: Option<String>,
1233    /// (Optional, defaults to `REQUIRED`) The availability of this capability.
1234    /// If set to `required`, the target may use or offer the capability with
1235    /// either `required` or `optional` availability. If set to `optional`, the
1236    /// target must use or offer the capability with `optional` availability.
1237    /// The `same_as_target` value causes this offer's availability to match the
1238    /// availability set in the target.
1239    pub availability: Option<Availability>,
1240    /// (Optional) Path in a dictionary provided by `source` which contains `source_name`.
1241    /// If this field is absent, `source_name` identifies a capability directly routed
1242    /// by `source`. If set, `source_name` identifies a capability nested inside this
1243    /// dictionary.
1244    pub source_dictionary: Option<String>,
1245    #[doc(hidden)]
1246    pub __source_breaking: fidl::marker::SourceBreaking,
1247}
1248
1249impl fidl::Persistable for OfferConfiguration {}
1250
1251/// Declares a dictionary offered by a component to one of its children,
1252/// which may have been offered by the component's containing realm, the
1253/// component itself, or one of its other children.
1254///
1255/// To learn more about dictionaries, see:
1256/// https://fuchsia.dev/fuchsia-src/glossary#dictionary
1257#[derive(Clone, Debug, Default, PartialEq)]
1258pub struct OfferDictionary {
1259    /// (Required) The provider of the capability relative to the component
1260    /// itself. Must be `parent`, `self`, `child`, or `void`.
1261    /// If set to `void`, then the target must offer or use the capability with
1262    /// `OPTIONAL` or `TRANSITIONAL` availability.
1263    pub source: Option<Ref>,
1264    /// (Required) Name identifying the dictionary being offered.
1265    pub source_name: Option<String>,
1266    /// (Required) Reference to the target. Must be `child`, `collection`, or
1267    /// a dictionary `capability`.
1268    pub target: Option<Ref>,
1269    /// (Required) The name by which the capability is being offered.
1270    pub target_name: Option<String>,
1271    /// (Required) The dependency type this offer represents. A component which
1272    /// receives a weak offer must support the offered capability being
1273    /// unavailable at any point.
1274    pub dependency_type: Option<DependencyType>,
1275    /// (Optional, defaults to `REQUIRED`) The availability of this capability.
1276    /// If set to `required`, the target may use or offer the capability with
1277    /// either `required` or `optional` availability. If set to `optional`, the
1278    /// target must use or offer the capability with `optional` availability.
1279    /// The `same_as_target` value causes this offer's availability to match the
1280    /// availability set in the target.
1281    pub availability: Option<Availability>,
1282    /// (Optional) Path in a dictionary provided by `source` which contains `source_name`.
1283    /// If this field is absent, `source_name` identifies a capability directly routed
1284    /// by `source`. If set, `source_name` identifies a capability nested inside this
1285    /// dictionary.
1286    pub source_dictionary: Option<String>,
1287    #[doc(hidden)]
1288    pub __source_breaking: fidl::marker::SourceBreaking,
1289}
1290
1291impl fidl::Persistable for OfferDictionary {}
1292
1293/// Declares a directory offered by a component to one of its children, which
1294/// may have been offered by the component's containing realm, the component
1295/// itself, or one of its other children.
1296#[derive(Clone, Debug, Default, PartialEq)]
1297pub struct OfferDirectory {
1298    /// (Required) The provider of the capability relative to the component
1299    /// itself. Must be `parent`, `self`, `child`, or `void`.
1300    /// If set to `void`, then the target must offer or use the capability with
1301    /// `OPTIONAL` or `TRANSITIONAL` availability.
1302    pub source: Option<Ref>,
1303    /// (Required) Name identifying the directory being offered.
1304    pub source_name: Option<String>,
1305    /// (Required) Reference to the target. Must be `child`, `collection`, or
1306    /// a dictionary `capability`.
1307    pub target: Option<Ref>,
1308    /// (Required) The name by which the capability is being offered.
1309    pub target_name: Option<String>,
1310    /// (Optional) The maximum rights that can be set by a component using this
1311    /// directory. IF unset, the rights are inherited from `source`.
1312    pub rights: Option<fidl_fuchsia_io__common::Operations>,
1313    /// (Optional) The subdirectory of this directory to offer instead of the
1314    /// root. Optional.
1315    pub subdir: Option<String>,
1316    /// (Required) The dependency type this offer represents. A component which
1317    /// receives a weak offer must support the offered capability being
1318    /// unavailable at any point.
1319    pub dependency_type: Option<DependencyType>,
1320    /// (Optional, defaults to `REQUIRED`) The availability of this capability.
1321    /// If set to `required`, the target may use or offer the capability with
1322    /// either `required` or `optional` availability. If set to `optional`, the
1323    /// target must use or offer the capability with `optional` availability.
1324    /// The `same_as_target` value causes this offer's availability to match the
1325    /// availability set in the target.
1326    pub availability: Option<Availability>,
1327    /// (Optional) Path in a dictionary provided by `source` which contains `source_name`.
1328    /// If this field is absent, `source_name` identifies a capability directly routed
1329    /// by `source`. If set, `source_name` identifies a capability nested inside this
1330    /// dictionary.
1331    pub source_dictionary: Option<String>,
1332    #[doc(hidden)]
1333    pub __source_breaking: fidl::marker::SourceBreaking,
1334}
1335
1336impl fidl::Persistable for OfferDirectory {}
1337
1338/// Declares an event stream offered by a component.
1339#[derive(Clone, Debug, Default, PartialEq)]
1340pub struct OfferEventStream {
1341    /// (Required) The provider of the capability relative to the component
1342    /// itself. Must be `parent`, `framework`, `child`, or `void`. If set to
1343    /// `void`, then the target must offer or use the capability with `OPTIONAL`
1344    /// or `TRANSITIONAL` availability.
1345    pub source: Option<Ref>,
1346    /// (Required) Name of the event being offered.
1347    pub source_name: Option<String>,
1348    /// (Optional) When an event is offered from framework, the scope is
1349    /// required and allows one to define the child (or array of children) which
1350    /// the event is about. When the event is offered from parent, the scope can
1351    /// be used to downscope the event to a certain child scope, otherwise the
1352    /// event will carry the scope coming from the parent.
1353    pub scope: Option<Vec<Ref>>,
1354    /// (Required) The destination to which the event stream is offered.
1355    pub target: Option<Ref>,
1356    /// (Required) Name under which the event stream is being offered.
1357    pub target_name: Option<String>,
1358    /// (Optional, defaults to `REQUIRED`) The availability of this capability.
1359    /// If set to `required`, the target may use or offer the capability with
1360    /// either `required` or `optional` availability. If set to `optional`, the
1361    /// target must use or offer the capability with `optional` availability.
1362    /// The `same_as_target` value causes this offer's availability to match the
1363    /// availability set in the target.
1364    pub availability: Option<Availability>,
1365    #[doc(hidden)]
1366    pub __source_breaking: fidl::marker::SourceBreaking,
1367}
1368
1369impl fidl::Persistable for OfferEventStream {}
1370
1371/// Declares a protocol offered by a component to one of its children,
1372/// which may have been offered by the component's containing realm, the
1373/// component itself, or one of its other children.
1374///
1375/// To learn more about protocols, see:
1376/// https://fuchsia.dev/fuchsia-src/glossary#protocol
1377#[derive(Clone, Debug, Default, PartialEq)]
1378pub struct OfferProtocol {
1379    /// (Required) The provider of the capability relative to the component
1380    /// itself. Must be `parent`, `self`, `child`, or `void`.
1381    /// If set to `void`, then the target must offer or use the capability with
1382    /// `OPTIONAL` or `TRANSITIONAL` availability.
1383    pub source: Option<Ref>,
1384    /// (Required) Name identifying the protocol being offered.
1385    pub source_name: Option<String>,
1386    /// (Required) Reference to the target. Must be `child`, `collection`, or
1387    /// a dictionary `capability`.
1388    pub target: Option<Ref>,
1389    /// (Required) The name by which the capability is being offered.
1390    pub target_name: Option<String>,
1391    /// (Required) The dependency type this offer represents. A component which
1392    /// receives a weak offer must support the offered capability being
1393    /// unavailable at any point.
1394    pub dependency_type: Option<DependencyType>,
1395    /// (Optional, defaults to `REQUIRED`) The availability of this capability.
1396    /// If set to `required`, the target may use or offer the capability with
1397    /// either `required` or `optional` availability. If set to `optional`, the
1398    /// target must use or offer the capability with `optional` availability.
1399    /// The `same_as_target` value causes this offer's availability to match the
1400    /// availability set in the target.
1401    pub availability: Option<Availability>,
1402    /// (Optional) Path in a dictionary provided by `source` which contains `source_name`.
1403    /// If this field is absent, `source_name` identifies a capability directly routed
1404    /// by `source`. If set, `source_name` identifies a capability nested inside this
1405    /// dictionary.
1406    pub source_dictionary: Option<String>,
1407    #[doc(hidden)]
1408    pub __source_breaking: fidl::marker::SourceBreaking,
1409}
1410
1411impl fidl::Persistable for OfferProtocol {}
1412
1413/// Declares a resolver capability offered by a component to one of its children, which
1414/// may have been offered by the component's containing realm, the component itself,
1415/// or one of its other children.
1416#[derive(Clone, Debug, Default, PartialEq)]
1417pub struct OfferResolver {
1418    /// (Required) The provider of the capability relative to the component
1419    /// itself. Must be `parent`, `self`, `child`, or `void`.
1420    /// If set to `void`, then the target must offer or use the capability with
1421    /// `OPTIONAL` or `TRANSITIONAL` availability.
1422    pub source: Option<Ref>,
1423    /// (Required) Name of the resolver being offered.
1424    pub source_name: Option<String>,
1425    /// (Required) Reference to the target. Must be `child`, `collection`, or
1426    /// a dictionary `capability`.
1427    pub target: Option<Ref>,
1428    /// (Required) Name under which the capability is being offered.
1429    pub target_name: Option<String>,
1430    /// (Optional) Path in a dictionary provided by `source` which contains `source_name`.
1431    /// If this field is absent, `source_name` identifies a capability directly routed
1432    /// by `source`. If set, `source_name` identifies a capability nested inside this
1433    /// dictionary.
1434    pub source_dictionary: Option<String>,
1435    #[doc(hidden)]
1436    pub __source_breaking: fidl::marker::SourceBreaking,
1437}
1438
1439impl fidl::Persistable for OfferResolver {}
1440
1441/// Declares a runner offered by a component to one of its children, which may
1442/// have been offered by the component's containing realm, the component itself,
1443/// or one of its other children.
1444#[derive(Clone, Debug, Default, PartialEq)]
1445pub struct OfferRunner {
1446    /// (Required) The provider of the capability relative to the component
1447    /// itself. Must be `parent`, `self`, `child`, or `void`.
1448    /// If set to `void`, then the target must offer or use the capability with
1449    /// `OPTIONAL` or `TRANSITIONAL` availability.
1450    pub source: Option<Ref>,
1451    /// (Required) Name of the runner being offered.
1452    pub source_name: Option<String>,
1453    /// (Required) Reference to the target. Must be `child`, `collection`, or
1454    /// a dictionary `capability`.
1455    pub target: Option<Ref>,
1456    /// (Required) Name under which the capability is being offered.
1457    pub target_name: Option<String>,
1458    /// (Optional) Path in a dictionary provided by `source` which contains `source_name`.
1459    /// If this field is absent, `source_name` identifies a capability directly routed
1460    /// by `source`. If set, `source_name` identifies a capability nested inside this
1461    /// dictionary.
1462    pub source_dictionary: Option<String>,
1463    #[doc(hidden)]
1464    pub __source_breaking: fidl::marker::SourceBreaking,
1465}
1466
1467impl fidl::Persistable for OfferRunner {}
1468
1469/// Declares a service offered by a component to one of its children, which may
1470/// have been offered by the component's containing realm, the component itself,
1471/// or one of its other children.
1472///
1473/// To learn more about services, see:
1474/// https://fuchsia.dev/fuchsia-src/glossary#service
1475#[derive(Clone, Debug, Default, PartialEq)]
1476pub struct OfferService {
1477    /// (Required) The provider of the capability relative to the component
1478    /// itself. Must be `parent`, `self`, `child`, or `void`.
1479    /// If set to `void`, then the target must offer or use the capability with
1480    /// `OPTIONAL` or `TRANSITIONAL` availability.
1481    pub source: Option<Ref>,
1482    /// (Required) Name identifying the service being offered.
1483    pub source_name: Option<String>,
1484    /// (Required) Reference to the target. Must be `child`, `collection`, or
1485    /// a dictionary `capability`.
1486    pub target: Option<Ref>,
1487    /// (Required) The name under which the capability is being offered.
1488    pub target_name: Option<String>,
1489    /// (Optional) The list of allowlisted instances to be offered. Instances
1490    /// of the service not in this list will not be accessible by the target
1491    /// component. If this is not set that means all instances from the source
1492    /// service are offered.
1493    pub source_instance_filter: Option<Vec<String>>,
1494    /// (Optional) The list of allowlisted instances to be offered, with
1495    /// renames.
1496    ///
1497    /// If this is set and nonempty, the set of instances in the target service
1498    /// will be restricted to the instances in this list, renaming `source_name`
1499    /// to `target_name`.
1500    ///
1501    /// If it is set and nonempty, `source_instance_filter` will further
1502    /// restrict the set of instances to those whose `target_name` appears in
1503    /// that list. There is generally no reason to set both, but we support it
1504    /// for compatibility.
1505    pub renamed_instances: Option<Vec<NameMapping>>,
1506    /// (Optional, defaults to `REQUIRED`) The availability of this capability.
1507    /// If set to `required`, the target may use or offer the capability with
1508    /// either `required` or `optional` availability. If set to `optional`, the
1509    /// target must use or offer the capability with `optional` availability.
1510    /// The `same_as_target` value causes this offer's availability to match the
1511    /// availability set in the target.
1512    pub availability: Option<Availability>,
1513    /// (Optional) Path in a dictionary provided by `source` which contains `source_name`.
1514    /// If this field is absent, `source_name` identifies a capability directly routed
1515    /// by `source`. If set, `source_name` identifies a capability nested inside this
1516    /// dictionary.
1517    pub source_dictionary: Option<String>,
1518    /// (Optional, defaults to `STRONG`) The dependency type this offer represents.
1519    /// A component which receives a weak offer must support the offered capability being
1520    /// unavailable at any point.
1521    pub dependency_type: Option<DependencyType>,
1522    #[doc(hidden)]
1523    pub __source_breaking: fidl::marker::SourceBreaking,
1524}
1525
1526impl fidl::Persistable for OfferService {}
1527
1528/// Declares a storage capability offered by a component to one of its children,
1529/// such as meta storage offered by the component's containing realm or cache
1530/// storage offered by the component itself.
1531#[derive(Clone, Debug, Default, PartialEq)]
1532pub struct OfferStorage {
1533    /// (Required) The name of the storage capability being offered
1534    pub source_name: Option<String>,
1535    /// (Required) The provider of the capability relative to the component
1536    /// itself. Must be `parent`, `self`, `child`, or `void`.
1537    /// If set to `void`, then the target must offer or use the capability with
1538    /// `OPTIONAL` or `TRANSITIONAL` availability.
1539    pub source: Option<Ref>,
1540    /// (Required) Reference to the target. Must be `child`, `collection`, or
1541    /// a dictionary `capability`.
1542    pub target: Option<Ref>,
1543    /// (Required) The name the storage capability is being offered as
1544    pub target_name: Option<String>,
1545    /// (Optional, defaults to `REQUIRED`) The availability of this capability.
1546    /// If set to `required`, the target may use or offer the capability with
1547    /// either `required` or `optional` availability. If set to `optional`, the
1548    /// target must use or offer the capability with `optional` availability.
1549    /// The `same_as_target` value causes this offer's availability to match the
1550    /// availability set in the target.
1551    pub availability: Option<Availability>,
1552    #[doc(hidden)]
1553    pub __source_breaking: fidl::marker::SourceBreaking,
1554}
1555
1556impl fidl::Persistable for OfferStorage {}
1557
1558/// A program declaration.
1559///
1560/// This declaration is set by executable components to designate the runner to
1561/// use and pass runner-specific program information to it.
1562///
1563/// To learn more about runners, see:
1564/// https://fuchsia.dev/fuchsia-src/glossary#runner
1565#[derive(Clone, Debug, Default, PartialEq)]
1566pub struct Program {
1567    /// The name of the runner to use to run the component. Must match a `RunnerRegistration` in the
1568    /// component's environment. If this value is not supplied, the component must 'use' a runner.
1569    /// If this value is supplied, the component may 'use' a runner, but it must be identical
1570    /// (matching name, from environment).
1571    pub runner: Option<String>,
1572    /// (Required) Information about the program to run when the component is
1573    /// executed. The component manager provides the contents of this dictionary
1574    /// to the runner when executing this program.
1575    ///
1576    /// For instance, this might contain a path to the program's executable
1577    /// image, or program arguments.
1578    ///
1579    /// * The keys represent namespaced properties, delimited by ".".
1580    /// * Properties may be nested in values, but only in the case of an object
1581    /// vector.
1582    pub info: Option<fidl_fuchsia_data__common::Dictionary>,
1583    #[doc(hidden)]
1584    pub __source_breaking: fidl::marker::SourceBreaking,
1585}
1586
1587impl fidl::Persistable for Program {}
1588
1589/// Declares a protocol capability backed by this component.
1590///
1591/// To learn more about protocols, see:
1592/// https://fuchsia.dev/fuchsia-src/glossary#protocol
1593#[derive(Clone, Debug, Default, PartialEq)]
1594pub struct Protocol {
1595    /// (Required) The name of this protocol.
1596    pub name: Option<String>,
1597    /// (Optional) The path to the protocol in the component's outgoing
1598    /// directory.
1599    ///
1600    /// Not set for built-in capabilities.
1601    pub source_path: Option<String>,
1602    /// (Optional, defaults to `EAGER`) specifies when the framework will open
1603    /// the protocol from this component's outgoing directory when someone
1604    /// requests the capability. See details on `DeliveryType`.
1605    pub delivery: Option<DeliveryType>,
1606    #[doc(hidden)]
1607    pub __source_breaking: fidl::marker::SourceBreaking,
1608}
1609
1610impl fidl::Persistable for Protocol {}
1611
1612/// Declares a resolver which is responsible for resolving component URLs to
1613/// actual components. See `fuchsia.component.resolution.Resolver` for the
1614/// protocol resolvers are expected to implement.
1615#[derive(Clone, Debug, Default, PartialEq)]
1616pub struct Resolver {
1617    /// (Required) The name of this resolver.
1618    ///
1619    /// Must be unique among resolvers declared in the same `ComponentDecl`.
1620    pub name: Option<String>,
1621    /// (Optional) The path to the resolver protocol in the component's outgoing
1622    /// directory
1623    ///
1624    /// Not set for built-in capabilities.
1625    pub source_path: Option<String>,
1626    #[doc(hidden)]
1627    pub __source_breaking: fidl::marker::SourceBreaking,
1628}
1629
1630impl fidl::Persistable for Resolver {}
1631
1632/// A mapping of URL scheme to resolver name.
1633#[derive(Clone, Debug, Default, PartialEq)]
1634pub struct ResolverRegistration {
1635    /// (Required) The name of the resolver.
1636    pub resolver: Option<String>,
1637    /// (Required) The provider of the capability relative to the component
1638    /// itself. Must be `parent`, `self`, or `child`.
1639    pub source: Option<Ref>,
1640    /// (Required) The URL scheme the resolver is registered to handle. Only one
1641    /// resolver may be registered to a particular URL scheme. The URL scheme
1642    /// must start with a lowercase ASCII letter (a-z), and may contain
1643    /// lowercase ASCII letters, digits, `+`, `-`, and `.`.
1644    pub scheme: Option<String>,
1645    #[doc(hidden)]
1646    pub __source_breaking: fidl::marker::SourceBreaking,
1647}
1648
1649impl fidl::Persistable for ResolverRegistration {}
1650
1651/// Declares a runner capability backed by a service.
1652#[derive(Clone, Debug, Default, PartialEq)]
1653pub struct Runner {
1654    /// (Required) The name of this runner.
1655    ///
1656    /// Must unique among runners declared in the same `ComponentDecl`.
1657    pub name: Option<String>,
1658    /// (Optional) The path to the runner protocol in the component's outgoing
1659    /// directory.
1660    ///
1661    /// Not set for built-in capabilities.
1662    pub source_path: Option<String>,
1663    #[doc(hidden)]
1664    pub __source_breaking: fidl::marker::SourceBreaking,
1665}
1666
1667impl fidl::Persistable for Runner {}
1668
1669/// A repository of the runners available in an environment.
1670#[derive(Clone, Debug, Default, PartialEq)]
1671pub struct RunnerRegistration {
1672    /// (Required) The name of the runner capability as it's exposed to,
1673    /// offered, or defined by this component.
1674    pub source_name: Option<String>,
1675    /// (Required) The provider of the capability relative to the component
1676    /// itself. Must be `parent`, `self`, or `child`.
1677    pub source: Option<Ref>,
1678    /// (Required) The name by which the runner is made available in this
1679    /// environment.
1680    pub target_name: Option<String>,
1681    #[doc(hidden)]
1682    pub __source_breaking: fidl::marker::SourceBreaking,
1683}
1684
1685impl fidl::Persistable for RunnerRegistration {}
1686
1687/// Declares a service capability backed by this component.
1688///
1689/// To learn more about services, see:
1690/// https://fuchsia.dev/fuchsia-src/glossary#service
1691#[derive(Clone, Debug, Default, PartialEq)]
1692pub struct Service {
1693    /// (Required) The name of this service.
1694    pub name: Option<String>,
1695    /// (Optional) The path to the service in the component's outgoing
1696    /// directory.
1697    ///
1698    /// Not set for built-in capabilities.
1699    pub source_path: Option<String>,
1700    #[doc(hidden)]
1701    pub __source_breaking: fidl::marker::SourceBreaking,
1702}
1703
1704impl fidl::Persistable for Service {}
1705
1706/// Declares a storage capability backed by a directory from which data, cache,
1707/// or meta storage can be offered.
1708#[derive(Clone, Debug, Default, PartialEq)]
1709pub struct Storage {
1710    /// (Required) The name of this storage
1711    pub name: Option<String>,
1712    /// (Required) The provider of the backing directory capability relative to
1713    /// the component itself. Must be `parent`, `self`, or `child`.
1714    pub source: Option<Ref>,
1715    /// (Required) The name of the directory capability from `source` that backs
1716    /// the storage.
1717    pub backing_dir: Option<String>,
1718    /// (Optional) The subdirectory of the source directory that will back the
1719    /// storage
1720    pub subdir: Option<String>,
1721    /// (Required) This enum determines how to key a component's isolated
1722    /// storage directory. Each option corresponds to a different key'ing
1723    /// strategy.
1724    pub storage_id: Option<StorageId>,
1725    #[doc(hidden)]
1726    pub __source_breaking: fidl::marker::SourceBreaking,
1727}
1728
1729impl fidl::Persistable for Storage {}
1730
1731#[derive(Clone, Debug, Default, PartialEq)]
1732pub struct UseConfiguration {
1733    /// (Required) The provider of the configuration relative to the component
1734    /// itself. Must be `parent`, `self`, `child`.
1735    pub source: Option<Ref>,
1736    /// (Required) Name identifying the configuration, by which it was presented to this
1737    /// component.
1738    pub source_name: Option<String>,
1739    /// (Required) The name that the component sees for this configuration.
1740    /// This must match a key in the 'config' schema for this component. The
1741    /// matching config field's type must match this configuration type.
1742    pub target_name: Option<String>,
1743    /// (Optional, defaults to `REQUIRED`) The availability of this capability.
1744    /// If set to `required`, the component is likely to malfunction if this
1745    /// capability is not provided. If set to `optional`, the component can
1746    /// handle the capability's absence.
1747    pub availability: Option<Availability>,
1748    /// (Required) The type of this config value. If `target_name` matches a
1749    /// key in the `config` schema, then this type must match that type.
1750    pub type_: Option<ConfigType>,
1751    /// (Optional): If this is set, this is the value that will be provided via routing
1752    /// if the capability is successfully routed from void.
1753    pub default: Option<ConfigValue>,
1754    /// (Optional) Path in a dictionary provided by `source` which contains `source_name`.
1755    /// If this field is absent, `source_name` identifies a capability directly routed
1756    /// by `source`. If set, `source_name` identifies a capability nested inside this
1757    /// dictionary.
1758    pub source_dictionary: Option<String>,
1759    #[doc(hidden)]
1760    pub __source_breaking: fidl::marker::SourceBreaking,
1761}
1762
1763impl fidl::Persistable for UseConfiguration {}
1764
1765#[derive(Clone, Debug, Default, PartialEq)]
1766pub struct UseDictionary {
1767    /// (Required) The provider of the dictionary relative to the component
1768    /// itself.
1769    pub source: Option<Ref>,
1770    /// (Required) Name identifying the directory, by which it was presented to
1771    /// this component.
1772    pub source_name: Option<String>,
1773    /// (Required) The path where the capability should be installed in the
1774    /// component's namespace.
1775    ///
1776    /// Must be an absolute path starting with /.
1777    pub target_path: Option<String>,
1778    /// (Required) The dependency type this use represents.
1779    ///
1780    /// A component which offers a capability to a child from itself and uses a
1781    /// capability from the same child, must mark the dependency as `weak`.  A
1782    /// `weak` dependency implies that the capability may become unavailable at
1783    /// any point. Taking a strong dependency on a child's capability will
1784    /// cause this the child to shut down before its parent. When using a weak
1785    /// dependency, the parent shuts down before the child.
1786    pub dependency_type: Option<DependencyType>,
1787    /// (Optional, defaults to `REQUIRED`) The availability of this capability.
1788    /// If set to `required`, the component is likely to malfunction if this
1789    /// capability is not provided. If set to `optional`, the component can
1790    /// handle the capability's absence.
1791    pub availability: Option<Availability>,
1792    /// (Optional) Path in a dictionary provided by `source` which contains
1793    /// `source_name`. If this field is absent, `source_name` identifies a
1794    /// capability directly routed by `source`. If set, `source_name` identifies
1795    /// a capability nested inside this dictionary.
1796    pub source_dictionary: Option<String>,
1797    #[doc(hidden)]
1798    pub __source_breaking: fidl::marker::SourceBreaking,
1799}
1800
1801impl fidl::Persistable for UseDictionary {}
1802
1803/// Declares a directory used by a component, which was offered to it.
1804#[derive(Clone, Debug, Default, PartialEq)]
1805pub struct UseDirectory {
1806    /// (Required) The provider of the directory relative to the component
1807    /// itself. Must be `parent`, `framework`,  or `child`.
1808    pub source: Option<Ref>,
1809    /// (Required) Name identifying the directory, by which it was presented to
1810    /// this component.
1811    pub source_name: Option<String>,
1812    /// (Required) The path where the capability should be installed in the
1813    /// component's namespace.
1814    ///
1815    /// Must be an absolute path starting with /.
1816    pub target_path: Option<String>,
1817    /// (Required) The rights required by the component to use this directory.
1818    pub rights: Option<fidl_fuchsia_io__common::Operations>,
1819    /// (Optional) The subdirectory of this directory to use instead of the
1820    /// root.
1821    pub subdir: Option<String>,
1822    /// (Required) The dependency type this use represents.
1823    ///
1824    /// A component which offers a capability to a child from itself and uses a
1825    /// capability from the same child, must mark the dependency as `weak`.  A
1826    /// `weak` dependency implies that the capability may become unavailable at
1827    /// any point. Taking a strong dependency on a child's capability will
1828    /// cause this the child to shut down before its parent. When using a weak
1829    /// dependency, the parent shuts down before the child.
1830    pub dependency_type: Option<DependencyType>,
1831    /// (Optional, defaults to `REQUIRED`) The availability of this capability.
1832    /// If set to `required`, the component is likely to malfunction if this
1833    /// capability is not provided. If set to `optional`, the component can
1834    /// handle the capability's absence.
1835    pub availability: Option<Availability>,
1836    /// (Optional) Path in a dictionary provided by `source` which contains `source_name`.
1837    /// If this field is absent, `source_name` identifies a capability directly routed
1838    /// by `source`. If set, `source_name` identifies a capability nested inside this
1839    /// dictionary.
1840    pub source_dictionary: Option<String>,
1841    #[doc(hidden)]
1842    pub __source_breaking: fidl::marker::SourceBreaking,
1843}
1844
1845impl fidl::Persistable for UseDirectory {}
1846
1847/// Declares an EventStream used by a component.
1848#[derive(Clone, Debug, Default, PartialEq)]
1849pub struct UseEventStream {
1850    /// (Required) The names of the event streams.
1851    pub source_name: Option<String>,
1852    /// (Required) The provider of the event. Must be `parent`, `framework`, or `child`.
1853    pub source: Option<Ref>,
1854    /// (Optional) When an event is used from framework, the scope is required
1855    /// to specify the child (or array of children) which the event will be
1856    /// about. When the event is used from parent, the scope can be used to
1857    /// downscope the event to a certain child scope, otherwise the event will
1858    /// carry the scope coming from the parent.
1859    pub scope: Option<Vec<Ref>>,
1860    /// (Required) The path where the capability should be installed in the
1861    /// component's namespace. Must be an absolute path starting with /.
1862    pub target_path: Option<String>,
1863    /// (Optional, defaults to `REQUIRED`) The availability of this capability.
1864    /// If set to `required`, the component is likely to malfunction if this
1865    /// capability is not provided. If set to `optional`, the component can
1866    /// handle the capability's absence.
1867    pub availability: Option<Availability>,
1868    /// (Optional) Filter for the event stream. The structure of the filter
1869    /// depends on the event stream type. Only supported for the
1870    /// `CapabilityRequested` event type.
1871    pub filter: Option<fidl_fuchsia_data__common::Dictionary>,
1872    #[doc(hidden)]
1873    pub __source_breaking: fidl::marker::SourceBreaking,
1874}
1875
1876impl fidl::Persistable for UseEventStream {}
1877
1878/// Declares a protocol used by a component, which was offered to it.
1879///
1880/// A protocol is a service with a single instance, provided by a single FIDL
1881/// protocol.
1882#[derive(Clone, Debug, Default, PartialEq)]
1883pub struct UseProtocol {
1884    /// (Required) The provider of the protocol relative to the component
1885    /// itself. Must be `parent`, `framework`, `debug`, `capability` or `child`.
1886    pub source: Option<Ref>,
1887    /// (Required) Name identifying the protocol, by which it was presented to this
1888    /// component.
1889    pub source_name: Option<String>,
1890    /// (Required) The path where the capability should be installed in the component's
1891    /// namespace.
1892    ///
1893    /// Must be an absolute path starting with /.
1894    pub target_path: Option<String>,
1895    /// (Required) The dependency type this use represents.
1896    ///
1897    /// A component which offers a capability to a child from itself and uses a
1898    /// capability from the same child, must mark the dependency as `weak`.  A
1899    /// `weak` dependency implies that the capability may become unavailable at
1900    /// any point. Taking a strong dependency on a child's capability will
1901    /// cause this the child to shut down before its parent. When using a weak
1902    /// dependency, the parent shuts down before the child.
1903    pub dependency_type: Option<DependencyType>,
1904    /// (Optional, defaults to `REQUIRED`) The availability of this capability.
1905    /// If set to `required`, the component is likely to malfunction if this
1906    /// capability is not provided. If set to `optional`, the component can
1907    /// handle the capability's absence.
1908    pub availability: Option<Availability>,
1909    /// (Optional) Path in a dictionary provided by `source` which contains `source_name`.
1910    /// If this field is absent, `source_name` identifies a capability directly routed
1911    /// by `source`. If set, `source_name` identifies a capability nested inside this
1912    /// dictionary.
1913    pub source_dictionary: Option<String>,
1914    /// (Optional) A processargs ordinal (zircon/processargs.h) by which a channel to this protocol
1915    /// will be delivered to the component's processargs.
1916    ///
1917    /// Must be a valid processargs ordinal defined in `zircon/processargs.h`.
1918    ///
1919    /// If this is set, we still require `target_path` to also be set, although we could relax this
1920    /// restriction in the future.
1921    pub numbered_handle: Option<u8>,
1922    #[doc(hidden)]
1923    pub __source_breaking: fidl::marker::SourceBreaking,
1924}
1925
1926impl fidl::Persistable for UseProtocol {}
1927
1928/// Declares runner used by a component.
1929#[derive(Clone, Debug, Default, PartialEq)]
1930pub struct UseRunner {
1931    /// (Required) The provider of the runner relative to the component.
1932    /// Must be `parent`, `child`, `framework`, or `environment`.
1933    pub source: Option<Ref>,
1934    /// (Required) Name identifying the runner, by which it was presented to this
1935    /// component.
1936    pub source_name: Option<String>,
1937    /// (Optional) Path in a dictionary provided by `source` which contains `source_name`.
1938    /// If this field is absent, `source_name` identifies a capability directly routed
1939    /// by `source`. If set, `source_name` identifies a capability nested inside this
1940    /// dictionary.
1941    pub source_dictionary: Option<String>,
1942    #[doc(hidden)]
1943    pub __source_breaking: fidl::marker::SourceBreaking,
1944}
1945
1946impl fidl::Persistable for UseRunner {}
1947
1948/// Declares a service used by a component, which was offered to it.
1949///
1950/// To learn more about services, see:
1951/// https://fuchsia.dev/fuchsia-src/glossary#service
1952#[derive(Clone, Debug, Default, PartialEq)]
1953pub struct UseService {
1954    /// (Required) The provider of the protocol relative to the component
1955    /// itself. Must be `parent`, `framework`, `self`, or `child`.
1956    pub source: Option<Ref>,
1957    /// (Required) Name identifying the service, by which it was presented to
1958    /// this component.
1959    pub source_name: Option<String>,
1960    /// (Required) The path where the capability should be installed in the
1961    /// component's namespace.
1962    ///
1963    /// Must be an absolute path starting with /.
1964    pub target_path: Option<String>,
1965    /// (Required) The dependency type this use represents.
1966    ///
1967    /// A component which offers a capability to a child from itself and uses a
1968    /// capability from the same child, must mark the dependency as `weak`.  A
1969    /// `weak` dependency implies that the capability may become unavailable at
1970    /// any point. Taking a strong dependency on a child's capability will
1971    /// cause the child to shut down before its parent. When using a weak
1972    /// dependency, the parent shuts down before the child.
1973    pub dependency_type: Option<DependencyType>,
1974    /// (Optional, defaults to `REQUIRED`) The availability of this capability.
1975    /// If set to `required`, the component is likely to malfunction if this
1976    /// capability is not provided. If set to `optional`, the component can
1977    /// handle the capability's absence.
1978    pub availability: Option<Availability>,
1979    /// (Optional) Path in a dictionary provided by `source` which contains `source_name`.
1980    /// If this field is absent, `source_name` identifies a capability directly routed
1981    /// by `source`. If set, `source_name` identifies a capability nested inside this
1982    /// dictionary.
1983    pub source_dictionary: Option<String>,
1984    #[doc(hidden)]
1985    pub __source_breaking: fidl::marker::SourceBreaking,
1986}
1987
1988impl fidl::Persistable for UseService {}
1989
1990/// Declares storage used by a component, which was offered to it.
1991#[derive(Clone, Debug, Default, PartialEq)]
1992pub struct UseStorage {
1993    /// (Required) Name identifying the storage, by which it was presented to
1994    /// this component.
1995    pub source_name: Option<String>,
1996    /// (Required) The path where the capability should be installed in the
1997    /// component's namespace.
1998    ///
1999    /// Must be an absolute path starting with /.
2000    pub target_path: Option<String>,
2001    /// (Optional, defaults to `REQUIRED`) The availability of this capability.
2002    /// If set to `required`, the component is likely to malfunction if this
2003    /// capability is not provided. If set to `optional`, the component can
2004    /// handle the capability's absence.
2005    pub availability: Option<Availability>,
2006    #[doc(hidden)]
2007    pub __source_breaking: fidl::marker::SourceBreaking,
2008}
2009
2010impl fidl::Persistable for UseStorage {}
2011
2012/// Declares a capability defined by this component.
2013#[derive(Clone, Debug)]
2014pub enum Capability {
2015    Service(Service),
2016    Protocol(Protocol),
2017    Directory(Directory),
2018    Storage(Storage),
2019    Runner(Runner),
2020    Resolver(Resolver),
2021    EventStream(EventStream),
2022    Dictionary(Dictionary),
2023    Config(Configuration),
2024    #[doc(hidden)]
2025    __SourceBreaking {
2026        unknown_ordinal: u64,
2027    },
2028}
2029
2030/// Pattern that matches an unknown `Capability` member.
2031#[macro_export]
2032macro_rules! CapabilityUnknown {
2033    () => {
2034        _
2035    };
2036}
2037
2038// Custom PartialEq so that unknown variants are not equal to themselves.
2039impl PartialEq for Capability {
2040    fn eq(&self, other: &Self) -> bool {
2041        match (self, other) {
2042            (Self::Service(x), Self::Service(y)) => *x == *y,
2043            (Self::Protocol(x), Self::Protocol(y)) => *x == *y,
2044            (Self::Directory(x), Self::Directory(y)) => *x == *y,
2045            (Self::Storage(x), Self::Storage(y)) => *x == *y,
2046            (Self::Runner(x), Self::Runner(y)) => *x == *y,
2047            (Self::Resolver(x), Self::Resolver(y)) => *x == *y,
2048            (Self::EventStream(x), Self::EventStream(y)) => *x == *y,
2049            (Self::Dictionary(x), Self::Dictionary(y)) => *x == *y,
2050            (Self::Config(x), Self::Config(y)) => *x == *y,
2051            _ => false,
2052        }
2053    }
2054}
2055
2056impl Capability {
2057    #[inline]
2058    pub fn ordinal(&self) -> u64 {
2059        match *self {
2060            Self::Service(_) => 1,
2061            Self::Protocol(_) => 2,
2062            Self::Directory(_) => 3,
2063            Self::Storage(_) => 4,
2064            Self::Runner(_) => 5,
2065            Self::Resolver(_) => 6,
2066            Self::EventStream(_) => 8,
2067            Self::Dictionary(_) => 9,
2068            Self::Config(_) => 10,
2069            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
2070        }
2071    }
2072
2073    #[inline]
2074    pub fn unknown_variant_for_testing() -> Self {
2075        Self::__SourceBreaking { unknown_ordinal: 0 }
2076    }
2077
2078    #[inline]
2079    pub fn is_unknown(&self) -> bool {
2080        match self {
2081            Self::__SourceBreaking { .. } => true,
2082            _ => false,
2083        }
2084    }
2085}
2086
2087impl fidl::Persistable for Capability {}
2088
2089/// The checksum produced for a configuration interface.
2090/// Two configuration interfaces are the same if their checksums are the same.
2091#[derive(Clone, Debug)]
2092pub enum ConfigChecksum {
2093    /// A SHA-256 hash produced over a component's config interface.
2094    Sha256([u8; 32]),
2095    #[doc(hidden)]
2096    __SourceBreaking { unknown_ordinal: u64 },
2097}
2098
2099/// Pattern that matches an unknown `ConfigChecksum` member.
2100#[macro_export]
2101macro_rules! ConfigChecksumUnknown {
2102    () => {
2103        _
2104    };
2105}
2106
2107// Custom PartialEq so that unknown variants are not equal to themselves.
2108impl PartialEq for ConfigChecksum {
2109    fn eq(&self, other: &Self) -> bool {
2110        match (self, other) {
2111            (Self::Sha256(x), Self::Sha256(y)) => *x == *y,
2112            _ => false,
2113        }
2114    }
2115}
2116
2117impl ConfigChecksum {
2118    #[inline]
2119    pub fn ordinal(&self) -> u64 {
2120        match *self {
2121            Self::Sha256(_) => 1,
2122            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
2123        }
2124    }
2125
2126    #[inline]
2127    pub fn unknown_variant_for_testing() -> Self {
2128        Self::__SourceBreaking { unknown_ordinal: 0 }
2129    }
2130
2131    #[inline]
2132    pub fn is_unknown(&self) -> bool {
2133        match self {
2134            Self::__SourceBreaking { .. } => true,
2135            _ => false,
2136        }
2137    }
2138}
2139
2140impl fidl::Persistable for ConfigChecksum {}
2141
2142/// A single configuration value.
2143#[derive(Clone, Debug)]
2144pub enum ConfigSingleValue {
2145    Bool(bool),
2146    Uint8(u8),
2147    Uint16(u16),
2148    Uint32(u32),
2149    Uint64(u64),
2150    Int8(i8),
2151    Int16(i16),
2152    Int32(i32),
2153    Int64(i64),
2154    String(String),
2155    #[doc(hidden)]
2156    __SourceBreaking {
2157        unknown_ordinal: u64,
2158    },
2159}
2160
2161/// Pattern that matches an unknown `ConfigSingleValue` member.
2162#[macro_export]
2163macro_rules! ConfigSingleValueUnknown {
2164    () => {
2165        _
2166    };
2167}
2168
2169// Custom PartialEq so that unknown variants are not equal to themselves.
2170impl PartialEq for ConfigSingleValue {
2171    fn eq(&self, other: &Self) -> bool {
2172        match (self, other) {
2173            (Self::Bool(x), Self::Bool(y)) => *x == *y,
2174            (Self::Uint8(x), Self::Uint8(y)) => *x == *y,
2175            (Self::Uint16(x), Self::Uint16(y)) => *x == *y,
2176            (Self::Uint32(x), Self::Uint32(y)) => *x == *y,
2177            (Self::Uint64(x), Self::Uint64(y)) => *x == *y,
2178            (Self::Int8(x), Self::Int8(y)) => *x == *y,
2179            (Self::Int16(x), Self::Int16(y)) => *x == *y,
2180            (Self::Int32(x), Self::Int32(y)) => *x == *y,
2181            (Self::Int64(x), Self::Int64(y)) => *x == *y,
2182            (Self::String(x), Self::String(y)) => *x == *y,
2183            _ => false,
2184        }
2185    }
2186}
2187
2188impl ConfigSingleValue {
2189    #[inline]
2190    pub fn ordinal(&self) -> u64 {
2191        match *self {
2192            Self::Bool(_) => 1,
2193            Self::Uint8(_) => 2,
2194            Self::Uint16(_) => 3,
2195            Self::Uint32(_) => 4,
2196            Self::Uint64(_) => 5,
2197            Self::Int8(_) => 6,
2198            Self::Int16(_) => 7,
2199            Self::Int32(_) => 8,
2200            Self::Int64(_) => 9,
2201            Self::String(_) => 10,
2202            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
2203        }
2204    }
2205
2206    #[inline]
2207    pub fn unknown_variant_for_testing() -> Self {
2208        Self::__SourceBreaking { unknown_ordinal: 0 }
2209    }
2210
2211    #[inline]
2212    pub fn is_unknown(&self) -> bool {
2213        match self {
2214            Self::__SourceBreaking { .. } => true,
2215            _ => false,
2216        }
2217    }
2218}
2219
2220impl fidl::Persistable for ConfigSingleValue {}
2221
2222/// A configuration value which can be provided to a component.
2223///
2224/// Used both for storing configuration at-rest and in runtime configuration APIs.
2225#[derive(Clone, Debug)]
2226pub enum ConfigValue {
2227    Single(ConfigSingleValue),
2228    Vector(ConfigVectorValue),
2229    #[doc(hidden)]
2230    __SourceBreaking {
2231        unknown_ordinal: u64,
2232    },
2233}
2234
2235/// Pattern that matches an unknown `ConfigValue` member.
2236#[macro_export]
2237macro_rules! ConfigValueUnknown {
2238    () => {
2239        _
2240    };
2241}
2242
2243// Custom PartialEq so that unknown variants are not equal to themselves.
2244impl PartialEq for ConfigValue {
2245    fn eq(&self, other: &Self) -> bool {
2246        match (self, other) {
2247            (Self::Single(x), Self::Single(y)) => *x == *y,
2248            (Self::Vector(x), Self::Vector(y)) => *x == *y,
2249            _ => false,
2250        }
2251    }
2252}
2253
2254impl ConfigValue {
2255    #[inline]
2256    pub fn ordinal(&self) -> u64 {
2257        match *self {
2258            Self::Single(_) => 1,
2259            Self::Vector(_) => 2,
2260            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
2261        }
2262    }
2263
2264    #[inline]
2265    pub fn unknown_variant_for_testing() -> Self {
2266        Self::__SourceBreaking { unknown_ordinal: 0 }
2267    }
2268
2269    #[inline]
2270    pub fn is_unknown(&self) -> bool {
2271        match self {
2272            Self::__SourceBreaking { .. } => true,
2273            _ => false,
2274        }
2275    }
2276}
2277
2278impl fidl::Persistable for ConfigValue {}
2279
2280/// Strategies available for resolving configuration values.
2281#[derive(Clone, Debug)]
2282pub enum ConfigValueSource {
2283    /// (Required) The path within the component's package at which to find config value files.
2284    PackagePath(String),
2285    /// If this is set, then all of the config values are found through CML files.
2286    Capabilities(ConfigSourceCapabilities),
2287    #[doc(hidden)]
2288    __SourceBreaking { unknown_ordinal: u64 },
2289}
2290
2291/// Pattern that matches an unknown `ConfigValueSource` member.
2292#[macro_export]
2293macro_rules! ConfigValueSourceUnknown {
2294    () => {
2295        _
2296    };
2297}
2298
2299// Custom PartialEq so that unknown variants are not equal to themselves.
2300impl PartialEq for ConfigValueSource {
2301    fn eq(&self, other: &Self) -> bool {
2302        match (self, other) {
2303            (Self::PackagePath(x), Self::PackagePath(y)) => *x == *y,
2304            (Self::Capabilities(x), Self::Capabilities(y)) => *x == *y,
2305            _ => false,
2306        }
2307    }
2308}
2309
2310impl ConfigValueSource {
2311    #[inline]
2312    pub fn ordinal(&self) -> u64 {
2313        match *self {
2314            Self::PackagePath(_) => 1,
2315            Self::Capabilities(_) => 2,
2316            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
2317        }
2318    }
2319
2320    #[inline]
2321    pub fn unknown_variant_for_testing() -> Self {
2322        Self::__SourceBreaking { unknown_ordinal: 0 }
2323    }
2324
2325    #[inline]
2326    pub fn is_unknown(&self) -> bool {
2327        match self {
2328            Self::__SourceBreaking { .. } => true,
2329            _ => false,
2330        }
2331    }
2332}
2333
2334impl fidl::Persistable for ConfigValueSource {}
2335
2336/// A vector configuration value.
2337#[derive(Clone, Debug)]
2338pub enum ConfigVectorValue {
2339    BoolVector(Vec<bool>),
2340    Uint8Vector(Vec<u8>),
2341    Uint16Vector(Vec<u16>),
2342    Uint32Vector(Vec<u32>),
2343    Uint64Vector(Vec<u64>),
2344    Int8Vector(Vec<i8>),
2345    Int16Vector(Vec<i16>),
2346    Int32Vector(Vec<i32>),
2347    Int64Vector(Vec<i64>),
2348    StringVector(Vec<String>),
2349    #[doc(hidden)]
2350    __SourceBreaking {
2351        unknown_ordinal: u64,
2352    },
2353}
2354
2355/// Pattern that matches an unknown `ConfigVectorValue` member.
2356#[macro_export]
2357macro_rules! ConfigVectorValueUnknown {
2358    () => {
2359        _
2360    };
2361}
2362
2363// Custom PartialEq so that unknown variants are not equal to themselves.
2364impl PartialEq for ConfigVectorValue {
2365    fn eq(&self, other: &Self) -> bool {
2366        match (self, other) {
2367            (Self::BoolVector(x), Self::BoolVector(y)) => *x == *y,
2368            (Self::Uint8Vector(x), Self::Uint8Vector(y)) => *x == *y,
2369            (Self::Uint16Vector(x), Self::Uint16Vector(y)) => *x == *y,
2370            (Self::Uint32Vector(x), Self::Uint32Vector(y)) => *x == *y,
2371            (Self::Uint64Vector(x), Self::Uint64Vector(y)) => *x == *y,
2372            (Self::Int8Vector(x), Self::Int8Vector(y)) => *x == *y,
2373            (Self::Int16Vector(x), Self::Int16Vector(y)) => *x == *y,
2374            (Self::Int32Vector(x), Self::Int32Vector(y)) => *x == *y,
2375            (Self::Int64Vector(x), Self::Int64Vector(y)) => *x == *y,
2376            (Self::StringVector(x), Self::StringVector(y)) => *x == *y,
2377            _ => false,
2378        }
2379    }
2380}
2381
2382impl ConfigVectorValue {
2383    #[inline]
2384    pub fn ordinal(&self) -> u64 {
2385        match *self {
2386            Self::BoolVector(_) => 1,
2387            Self::Uint8Vector(_) => 2,
2388            Self::Uint16Vector(_) => 3,
2389            Self::Uint32Vector(_) => 4,
2390            Self::Uint64Vector(_) => 5,
2391            Self::Int8Vector(_) => 6,
2392            Self::Int16Vector(_) => 7,
2393            Self::Int32Vector(_) => 8,
2394            Self::Int64Vector(_) => 9,
2395            Self::StringVector(_) => 10,
2396            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
2397        }
2398    }
2399
2400    #[inline]
2401    pub fn unknown_variant_for_testing() -> Self {
2402        Self::__SourceBreaking { unknown_ordinal: 0 }
2403    }
2404
2405    #[inline]
2406    pub fn is_unknown(&self) -> bool {
2407        match self {
2408            Self::__SourceBreaking { .. } => true,
2409            _ => false,
2410        }
2411    }
2412}
2413
2414impl fidl::Persistable for ConfigVectorValue {}
2415
2416/// Declares a capability registered in the debug section of an environment.
2417#[derive(Clone, Debug)]
2418pub enum DebugRegistration {
2419    Protocol(DebugProtocolRegistration),
2420    #[doc(hidden)]
2421    __SourceBreaking {
2422        unknown_ordinal: u64,
2423    },
2424}
2425
2426/// Pattern that matches an unknown `DebugRegistration` member.
2427#[macro_export]
2428macro_rules! DebugRegistrationUnknown {
2429    () => {
2430        _
2431    };
2432}
2433
2434// Custom PartialEq so that unknown variants are not equal to themselves.
2435impl PartialEq for DebugRegistration {
2436    fn eq(&self, other: &Self) -> bool {
2437        match (self, other) {
2438            (Self::Protocol(x), Self::Protocol(y)) => *x == *y,
2439            _ => false,
2440        }
2441    }
2442}
2443
2444impl DebugRegistration {
2445    #[inline]
2446    pub fn ordinal(&self) -> u64 {
2447        match *self {
2448            Self::Protocol(_) => 1,
2449            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
2450        }
2451    }
2452
2453    #[inline]
2454    pub fn unknown_variant_for_testing() -> Self {
2455        Self::__SourceBreaking { unknown_ordinal: 0 }
2456    }
2457
2458    #[inline]
2459    pub fn is_unknown(&self) -> bool {
2460        match self {
2461            Self::__SourceBreaking { .. } => true,
2462            _ => false,
2463        }
2464    }
2465}
2466
2467impl fidl::Persistable for DebugRegistration {}
2468
2469/// Declares a capability exposed to either a component's containing realm or to
2470/// the framework. For example, a legacy service exposed by the component at
2471/// runtime.
2472#[derive(Clone, Debug)]
2473pub enum Expose {
2474    Service(ExposeService),
2475    Protocol(ExposeProtocol),
2476    Directory(ExposeDirectory),
2477    Runner(ExposeRunner),
2478    Resolver(ExposeResolver),
2479    Dictionary(ExposeDictionary),
2480    Config(ExposeConfiguration),
2481    #[doc(hidden)]
2482    __SourceBreaking {
2483        unknown_ordinal: u64,
2484    },
2485}
2486
2487/// Pattern that matches an unknown `Expose` member.
2488#[macro_export]
2489macro_rules! ExposeUnknown {
2490    () => {
2491        _
2492    };
2493}
2494
2495// Custom PartialEq so that unknown variants are not equal to themselves.
2496impl PartialEq for Expose {
2497    fn eq(&self, other: &Self) -> bool {
2498        match (self, other) {
2499            (Self::Service(x), Self::Service(y)) => *x == *y,
2500            (Self::Protocol(x), Self::Protocol(y)) => *x == *y,
2501            (Self::Directory(x), Self::Directory(y)) => *x == *y,
2502            (Self::Runner(x), Self::Runner(y)) => *x == *y,
2503            (Self::Resolver(x), Self::Resolver(y)) => *x == *y,
2504            (Self::Dictionary(x), Self::Dictionary(y)) => *x == *y,
2505            (Self::Config(x), Self::Config(y)) => *x == *y,
2506            _ => false,
2507        }
2508    }
2509}
2510
2511impl Expose {
2512    #[inline]
2513    pub fn ordinal(&self) -> u64 {
2514        match *self {
2515            Self::Service(_) => 1,
2516            Self::Protocol(_) => 2,
2517            Self::Directory(_) => 3,
2518            Self::Runner(_) => 4,
2519            Self::Resolver(_) => 5,
2520            Self::Dictionary(_) => 7,
2521            Self::Config(_) => 8,
2522            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
2523        }
2524    }
2525
2526    #[inline]
2527    pub fn unknown_variant_for_testing() -> Self {
2528        Self::__SourceBreaking { unknown_ordinal: 0 }
2529    }
2530
2531    #[inline]
2532    pub fn is_unknown(&self) -> bool {
2533        match self {
2534            Self::__SourceBreaking { .. } => true,
2535            _ => false,
2536        }
2537    }
2538}
2539
2540impl fidl::Persistable for Expose {}
2541
2542#[derive(Clone, Debug)]
2543pub enum LayoutConstraint {
2544    MaxSize(u32),
2545    #[doc(hidden)]
2546    __SourceBreaking {
2547        unknown_ordinal: u64,
2548    },
2549}
2550
2551/// Pattern that matches an unknown `LayoutConstraint` member.
2552#[macro_export]
2553macro_rules! LayoutConstraintUnknown {
2554    () => {
2555        _
2556    };
2557}
2558
2559// Custom PartialEq so that unknown variants are not equal to themselves.
2560impl PartialEq for LayoutConstraint {
2561    fn eq(&self, other: &Self) -> bool {
2562        match (self, other) {
2563            (Self::MaxSize(x), Self::MaxSize(y)) => *x == *y,
2564            _ => false,
2565        }
2566    }
2567}
2568
2569impl LayoutConstraint {
2570    #[inline]
2571    pub fn ordinal(&self) -> u64 {
2572        match *self {
2573            Self::MaxSize(_) => 1,
2574            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
2575        }
2576    }
2577
2578    #[inline]
2579    pub fn unknown_variant_for_testing() -> Self {
2580        Self::__SourceBreaking { unknown_ordinal: 0 }
2581    }
2582
2583    #[inline]
2584    pub fn is_unknown(&self) -> bool {
2585        match self {
2586            Self::__SourceBreaking { .. } => true,
2587            _ => false,
2588        }
2589    }
2590}
2591
2592impl fidl::Persistable for LayoutConstraint {}
2593
2594#[derive(Clone, Debug)]
2595pub enum LayoutParameter {
2596    NestedType(ConfigType),
2597    #[doc(hidden)]
2598    __SourceBreaking {
2599        unknown_ordinal: u64,
2600    },
2601}
2602
2603/// Pattern that matches an unknown `LayoutParameter` member.
2604#[macro_export]
2605macro_rules! LayoutParameterUnknown {
2606    () => {
2607        _
2608    };
2609}
2610
2611// Custom PartialEq so that unknown variants are not equal to themselves.
2612impl PartialEq for LayoutParameter {
2613    fn eq(&self, other: &Self) -> bool {
2614        match (self, other) {
2615            (Self::NestedType(x), Self::NestedType(y)) => *x == *y,
2616            _ => false,
2617        }
2618    }
2619}
2620
2621impl LayoutParameter {
2622    #[inline]
2623    pub fn ordinal(&self) -> u64 {
2624        match *self {
2625            Self::NestedType(_) => 1,
2626            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
2627        }
2628    }
2629
2630    #[inline]
2631    pub fn unknown_variant_for_testing() -> Self {
2632        Self::__SourceBreaking { unknown_ordinal: 0 }
2633    }
2634
2635    #[inline]
2636    pub fn is_unknown(&self) -> bool {
2637        match self {
2638            Self::__SourceBreaking { .. } => true,
2639            _ => false,
2640        }
2641    }
2642}
2643
2644impl fidl::Persistable for LayoutParameter {}
2645
2646/// Declares a capability offered by a component to one of its children, which
2647/// may have been offered by the component's containing realm, the component
2648/// itself, or one of its other children.
2649#[derive(Clone, Debug)]
2650pub enum Offer {
2651    Service(OfferService),
2652    Protocol(OfferProtocol),
2653    Directory(OfferDirectory),
2654    Storage(OfferStorage),
2655    Runner(OfferRunner),
2656    Resolver(OfferResolver),
2657    EventStream(OfferEventStream),
2658    Dictionary(OfferDictionary),
2659    Config(OfferConfiguration),
2660    #[doc(hidden)]
2661    __SourceBreaking {
2662        unknown_ordinal: u64,
2663    },
2664}
2665
2666/// Pattern that matches an unknown `Offer` member.
2667#[macro_export]
2668macro_rules! OfferUnknown {
2669    () => {
2670        _
2671    };
2672}
2673
2674// Custom PartialEq so that unknown variants are not equal to themselves.
2675impl PartialEq for Offer {
2676    fn eq(&self, other: &Self) -> bool {
2677        match (self, other) {
2678            (Self::Service(x), Self::Service(y)) => *x == *y,
2679            (Self::Protocol(x), Self::Protocol(y)) => *x == *y,
2680            (Self::Directory(x), Self::Directory(y)) => *x == *y,
2681            (Self::Storage(x), Self::Storage(y)) => *x == *y,
2682            (Self::Runner(x), Self::Runner(y)) => *x == *y,
2683            (Self::Resolver(x), Self::Resolver(y)) => *x == *y,
2684            (Self::EventStream(x), Self::EventStream(y)) => *x == *y,
2685            (Self::Dictionary(x), Self::Dictionary(y)) => *x == *y,
2686            (Self::Config(x), Self::Config(y)) => *x == *y,
2687            _ => false,
2688        }
2689    }
2690}
2691
2692impl Offer {
2693    #[inline]
2694    pub fn ordinal(&self) -> u64 {
2695        match *self {
2696            Self::Service(_) => 1,
2697            Self::Protocol(_) => 2,
2698            Self::Directory(_) => 3,
2699            Self::Storage(_) => 4,
2700            Self::Runner(_) => 5,
2701            Self::Resolver(_) => 6,
2702            Self::EventStream(_) => 8,
2703            Self::Dictionary(_) => 9,
2704            Self::Config(_) => 10,
2705            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
2706        }
2707    }
2708
2709    #[inline]
2710    pub fn unknown_variant_for_testing() -> Self {
2711        Self::__SourceBreaking { unknown_ordinal: 0 }
2712    }
2713
2714    #[inline]
2715    pub fn is_unknown(&self) -> bool {
2716        match self {
2717            Self::__SourceBreaking { .. } => true,
2718            _ => false,
2719        }
2720    }
2721}
2722
2723impl fidl::Persistable for Offer {}
2724
2725/// A reference to a capability source or destination relative to this
2726/// component.
2727#[derive(Clone, Debug)]
2728pub enum Ref {
2729    Parent(ParentRef),
2730    Self_(SelfRef),
2731    Child(ChildRef),
2732    Collection(CollectionRef),
2733    Framework(FrameworkRef),
2734    Capability(CapabilityRef),
2735    Debug(DebugRef),
2736    VoidType(VoidRef),
2737    Environment(EnvironmentRef),
2738    #[doc(hidden)]
2739    __SourceBreaking {
2740        unknown_ordinal: u64,
2741    },
2742}
2743
2744/// Pattern that matches an unknown `Ref` member.
2745#[macro_export]
2746macro_rules! RefUnknown {
2747    () => {
2748        _
2749    };
2750}
2751
2752// Custom PartialEq so that unknown variants are not equal to themselves.
2753impl PartialEq for Ref {
2754    fn eq(&self, other: &Self) -> bool {
2755        match (self, other) {
2756            (Self::Parent(x), Self::Parent(y)) => *x == *y,
2757            (Self::Self_(x), Self::Self_(y)) => *x == *y,
2758            (Self::Child(x), Self::Child(y)) => *x == *y,
2759            (Self::Collection(x), Self::Collection(y)) => *x == *y,
2760            (Self::Framework(x), Self::Framework(y)) => *x == *y,
2761            (Self::Capability(x), Self::Capability(y)) => *x == *y,
2762            (Self::Debug(x), Self::Debug(y)) => *x == *y,
2763            (Self::VoidType(x), Self::VoidType(y)) => *x == *y,
2764            (Self::Environment(x), Self::Environment(y)) => *x == *y,
2765            _ => false,
2766        }
2767    }
2768}
2769
2770impl Ref {
2771    #[inline]
2772    pub fn ordinal(&self) -> u64 {
2773        match *self {
2774            Self::Parent(_) => 1,
2775            Self::Self_(_) => 2,
2776            Self::Child(_) => 3,
2777            Self::Collection(_) => 4,
2778            Self::Framework(_) => 5,
2779            Self::Capability(_) => 6,
2780            Self::Debug(_) => 7,
2781            Self::VoidType(_) => 8,
2782            Self::Environment(_) => 9,
2783            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
2784        }
2785    }
2786
2787    #[inline]
2788    pub fn unknown_variant_for_testing() -> Self {
2789        Self::__SourceBreaking { unknown_ordinal: 0 }
2790    }
2791
2792    #[inline]
2793    pub fn is_unknown(&self) -> bool {
2794        match self {
2795            Self::__SourceBreaking { .. } => true,
2796            _ => false,
2797        }
2798    }
2799}
2800
2801impl fidl::Persistable for Ref {}
2802
2803/// Declares a capability used by a component, which was offered to it.
2804#[derive(Clone, Debug)]
2805pub enum Use {
2806    Service(UseService),
2807    Protocol(UseProtocol),
2808    Directory(UseDirectory),
2809    Storage(UseStorage),
2810    EventStream(UseEventStream),
2811    Runner(UseRunner),
2812    Config(UseConfiguration),
2813    Dictionary(UseDictionary),
2814    #[doc(hidden)]
2815    __SourceBreaking {
2816        unknown_ordinal: u64,
2817    },
2818}
2819
2820/// Pattern that matches an unknown `Use` member.
2821#[macro_export]
2822macro_rules! UseUnknown {
2823    () => {
2824        _
2825    };
2826}
2827
2828// Custom PartialEq so that unknown variants are not equal to themselves.
2829impl PartialEq for Use {
2830    fn eq(&self, other: &Self) -> bool {
2831        match (self, other) {
2832            (Self::Service(x), Self::Service(y)) => *x == *y,
2833            (Self::Protocol(x), Self::Protocol(y)) => *x == *y,
2834            (Self::Directory(x), Self::Directory(y)) => *x == *y,
2835            (Self::Storage(x), Self::Storage(y)) => *x == *y,
2836            (Self::EventStream(x), Self::EventStream(y)) => *x == *y,
2837            (Self::Runner(x), Self::Runner(y)) => *x == *y,
2838            (Self::Config(x), Self::Config(y)) => *x == *y,
2839            (Self::Dictionary(x), Self::Dictionary(y)) => *x == *y,
2840            _ => false,
2841        }
2842    }
2843}
2844
2845impl Use {
2846    #[inline]
2847    pub fn ordinal(&self) -> u64 {
2848        match *self {
2849            Self::Service(_) => 1,
2850            Self::Protocol(_) => 2,
2851            Self::Directory(_) => 3,
2852            Self::Storage(_) => 4,
2853            Self::EventStream(_) => 7,
2854            Self::Runner(_) => 8,
2855            Self::Config(_) => 9,
2856            Self::Dictionary(_) => 10,
2857            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
2858        }
2859    }
2860
2861    #[inline]
2862    pub fn unknown_variant_for_testing() -> Self {
2863        Self::__SourceBreaking { unknown_ordinal: 0 }
2864    }
2865
2866    #[inline]
2867    pub fn is_unknown(&self) -> bool {
2868        match self {
2869            Self::__SourceBreaking { .. } => true,
2870            _ => false,
2871        }
2872    }
2873}
2874
2875impl fidl::Persistable for Use {}
2876
2877mod internal {
2878    use super::*;
2879    unsafe impl fidl::encoding::TypeMarker for ConfigMutability {
2880        type Owned = Self;
2881
2882        #[inline(always)]
2883        fn inline_align(_context: fidl::encoding::Context) -> usize {
2884            4
2885        }
2886
2887        #[inline(always)]
2888        fn inline_size(_context: fidl::encoding::Context) -> usize {
2889            4
2890        }
2891    }
2892
2893    impl fidl::encoding::ValueTypeMarker for ConfigMutability {
2894        type Borrowed<'a> = Self;
2895        #[inline(always)]
2896        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2897            *value
2898        }
2899    }
2900
2901    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
2902        for ConfigMutability
2903    {
2904        #[inline]
2905        unsafe fn encode(
2906            self,
2907            encoder: &mut fidl::encoding::Encoder<'_, D>,
2908            offset: usize,
2909            _depth: fidl::encoding::Depth,
2910        ) -> fidl::Result<()> {
2911            encoder.debug_check_bounds::<Self>(offset);
2912            encoder.write_num(self.bits(), offset);
2913            Ok(())
2914        }
2915    }
2916
2917    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ConfigMutability {
2918        #[inline(always)]
2919        fn new_empty() -> Self {
2920            Self::empty()
2921        }
2922
2923        #[inline]
2924        unsafe fn decode(
2925            &mut self,
2926            decoder: &mut fidl::encoding::Decoder<'_, D>,
2927            offset: usize,
2928            _depth: fidl::encoding::Depth,
2929        ) -> fidl::Result<()> {
2930            decoder.debug_check_bounds::<Self>(offset);
2931            let prim = decoder.read_num::<u32>(offset);
2932            *self = Self::from_bits_allow_unknown(prim);
2933            Ok(())
2934        }
2935    }
2936    unsafe impl fidl::encoding::TypeMarker for AllowedOffers {
2937        type Owned = Self;
2938
2939        #[inline(always)]
2940        fn inline_align(_context: fidl::encoding::Context) -> usize {
2941            std::mem::align_of::<u32>()
2942        }
2943
2944        #[inline(always)]
2945        fn inline_size(_context: fidl::encoding::Context) -> usize {
2946            std::mem::size_of::<u32>()
2947        }
2948
2949        #[inline(always)]
2950        fn encode_is_copy() -> bool {
2951            true
2952        }
2953
2954        #[inline(always)]
2955        fn decode_is_copy() -> bool {
2956            false
2957        }
2958    }
2959
2960    impl fidl::encoding::ValueTypeMarker for AllowedOffers {
2961        type Borrowed<'a> = Self;
2962        #[inline(always)]
2963        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2964            *value
2965        }
2966    }
2967
2968    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for AllowedOffers {
2969        #[inline]
2970        unsafe fn encode(
2971            self,
2972            encoder: &mut fidl::encoding::Encoder<'_, D>,
2973            offset: usize,
2974            _depth: fidl::encoding::Depth,
2975        ) -> fidl::Result<()> {
2976            encoder.debug_check_bounds::<Self>(offset);
2977            encoder.write_num(self.into_primitive(), offset);
2978            Ok(())
2979        }
2980    }
2981
2982    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AllowedOffers {
2983        #[inline(always)]
2984        fn new_empty() -> Self {
2985            Self::StaticOnly
2986        }
2987
2988        #[inline]
2989        unsafe fn decode(
2990            &mut self,
2991            decoder: &mut fidl::encoding::Decoder<'_, D>,
2992            offset: usize,
2993            _depth: fidl::encoding::Depth,
2994        ) -> fidl::Result<()> {
2995            decoder.debug_check_bounds::<Self>(offset);
2996            let prim = decoder.read_num::<u32>(offset);
2997
2998            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
2999            Ok(())
3000        }
3001    }
3002    unsafe impl fidl::encoding::TypeMarker for Availability {
3003        type Owned = Self;
3004
3005        #[inline(always)]
3006        fn inline_align(_context: fidl::encoding::Context) -> usize {
3007            std::mem::align_of::<u32>()
3008        }
3009
3010        #[inline(always)]
3011        fn inline_size(_context: fidl::encoding::Context) -> usize {
3012            std::mem::size_of::<u32>()
3013        }
3014
3015        #[inline(always)]
3016        fn encode_is_copy() -> bool {
3017            true
3018        }
3019
3020        #[inline(always)]
3021        fn decode_is_copy() -> bool {
3022            false
3023        }
3024    }
3025
3026    impl fidl::encoding::ValueTypeMarker for Availability {
3027        type Borrowed<'a> = Self;
3028        #[inline(always)]
3029        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3030            *value
3031        }
3032    }
3033
3034    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for Availability {
3035        #[inline]
3036        unsafe fn encode(
3037            self,
3038            encoder: &mut fidl::encoding::Encoder<'_, D>,
3039            offset: usize,
3040            _depth: fidl::encoding::Depth,
3041        ) -> fidl::Result<()> {
3042            encoder.debug_check_bounds::<Self>(offset);
3043            encoder.write_num(self.into_primitive(), offset);
3044            Ok(())
3045        }
3046    }
3047
3048    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Availability {
3049        #[inline(always)]
3050        fn new_empty() -> Self {
3051            Self::Required
3052        }
3053
3054        #[inline]
3055        unsafe fn decode(
3056            &mut self,
3057            decoder: &mut fidl::encoding::Decoder<'_, D>,
3058            offset: usize,
3059            _depth: fidl::encoding::Depth,
3060        ) -> fidl::Result<()> {
3061            decoder.debug_check_bounds::<Self>(offset);
3062            let prim = decoder.read_num::<u32>(offset);
3063
3064            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
3065            Ok(())
3066        }
3067    }
3068    unsafe impl fidl::encoding::TypeMarker for ConfigTypeLayout {
3069        type Owned = Self;
3070
3071        #[inline(always)]
3072        fn inline_align(_context: fidl::encoding::Context) -> usize {
3073            std::mem::align_of::<u32>()
3074        }
3075
3076        #[inline(always)]
3077        fn inline_size(_context: fidl::encoding::Context) -> usize {
3078            std::mem::size_of::<u32>()
3079        }
3080
3081        #[inline(always)]
3082        fn encode_is_copy() -> bool {
3083            false
3084        }
3085
3086        #[inline(always)]
3087        fn decode_is_copy() -> bool {
3088            false
3089        }
3090    }
3091
3092    impl fidl::encoding::ValueTypeMarker for ConfigTypeLayout {
3093        type Borrowed<'a> = Self;
3094        #[inline(always)]
3095        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3096            *value
3097        }
3098    }
3099
3100    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
3101        for ConfigTypeLayout
3102    {
3103        #[inline]
3104        unsafe fn encode(
3105            self,
3106            encoder: &mut fidl::encoding::Encoder<'_, D>,
3107            offset: usize,
3108            _depth: fidl::encoding::Depth,
3109        ) -> fidl::Result<()> {
3110            encoder.debug_check_bounds::<Self>(offset);
3111            encoder.write_num(self.into_primitive(), offset);
3112            Ok(())
3113        }
3114    }
3115
3116    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ConfigTypeLayout {
3117        #[inline(always)]
3118        fn new_empty() -> Self {
3119            Self::unknown()
3120        }
3121
3122        #[inline]
3123        unsafe fn decode(
3124            &mut self,
3125            decoder: &mut fidl::encoding::Decoder<'_, D>,
3126            offset: usize,
3127            _depth: fidl::encoding::Depth,
3128        ) -> fidl::Result<()> {
3129            decoder.debug_check_bounds::<Self>(offset);
3130            let prim = decoder.read_num::<u32>(offset);
3131
3132            *self = Self::from_primitive_allow_unknown(prim);
3133            Ok(())
3134        }
3135    }
3136    unsafe impl fidl::encoding::TypeMarker for DeliveryType {
3137        type Owned = Self;
3138
3139        #[inline(always)]
3140        fn inline_align(_context: fidl::encoding::Context) -> usize {
3141            std::mem::align_of::<u32>()
3142        }
3143
3144        #[inline(always)]
3145        fn inline_size(_context: fidl::encoding::Context) -> usize {
3146            std::mem::size_of::<u32>()
3147        }
3148
3149        #[inline(always)]
3150        fn encode_is_copy() -> bool {
3151            false
3152        }
3153
3154        #[inline(always)]
3155        fn decode_is_copy() -> bool {
3156            false
3157        }
3158    }
3159
3160    impl fidl::encoding::ValueTypeMarker for DeliveryType {
3161        type Borrowed<'a> = Self;
3162        #[inline(always)]
3163        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3164            *value
3165        }
3166    }
3167
3168    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for DeliveryType {
3169        #[inline]
3170        unsafe fn encode(
3171            self,
3172            encoder: &mut fidl::encoding::Encoder<'_, D>,
3173            offset: usize,
3174            _depth: fidl::encoding::Depth,
3175        ) -> fidl::Result<()> {
3176            encoder.debug_check_bounds::<Self>(offset);
3177            encoder.write_num(self.into_primitive(), offset);
3178            Ok(())
3179        }
3180    }
3181
3182    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeliveryType {
3183        #[inline(always)]
3184        fn new_empty() -> Self {
3185            Self::unknown()
3186        }
3187
3188        #[inline]
3189        unsafe fn decode(
3190            &mut self,
3191            decoder: &mut fidl::encoding::Decoder<'_, D>,
3192            offset: usize,
3193            _depth: fidl::encoding::Depth,
3194        ) -> fidl::Result<()> {
3195            decoder.debug_check_bounds::<Self>(offset);
3196            let prim = decoder.read_num::<u32>(offset);
3197
3198            *self = Self::from_primitive_allow_unknown(prim);
3199            Ok(())
3200        }
3201    }
3202    unsafe impl fidl::encoding::TypeMarker for DependencyType {
3203        type Owned = Self;
3204
3205        #[inline(always)]
3206        fn inline_align(_context: fidl::encoding::Context) -> usize {
3207            std::mem::align_of::<u32>()
3208        }
3209
3210        #[inline(always)]
3211        fn inline_size(_context: fidl::encoding::Context) -> usize {
3212            std::mem::size_of::<u32>()
3213        }
3214
3215        #[inline(always)]
3216        fn encode_is_copy() -> bool {
3217            true
3218        }
3219
3220        #[inline(always)]
3221        fn decode_is_copy() -> bool {
3222            false
3223        }
3224    }
3225
3226    impl fidl::encoding::ValueTypeMarker for DependencyType {
3227        type Borrowed<'a> = Self;
3228        #[inline(always)]
3229        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3230            *value
3231        }
3232    }
3233
3234    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for DependencyType {
3235        #[inline]
3236        unsafe fn encode(
3237            self,
3238            encoder: &mut fidl::encoding::Encoder<'_, D>,
3239            offset: usize,
3240            _depth: fidl::encoding::Depth,
3241        ) -> fidl::Result<()> {
3242            encoder.debug_check_bounds::<Self>(offset);
3243            encoder.write_num(self.into_primitive(), offset);
3244            Ok(())
3245        }
3246    }
3247
3248    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DependencyType {
3249        #[inline(always)]
3250        fn new_empty() -> Self {
3251            Self::Strong
3252        }
3253
3254        #[inline]
3255        unsafe fn decode(
3256            &mut self,
3257            decoder: &mut fidl::encoding::Decoder<'_, D>,
3258            offset: usize,
3259            _depth: fidl::encoding::Depth,
3260        ) -> fidl::Result<()> {
3261            decoder.debug_check_bounds::<Self>(offset);
3262            let prim = decoder.read_num::<u32>(offset);
3263
3264            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
3265            Ok(())
3266        }
3267    }
3268    unsafe impl fidl::encoding::TypeMarker for Durability {
3269        type Owned = Self;
3270
3271        #[inline(always)]
3272        fn inline_align(_context: fidl::encoding::Context) -> usize {
3273            std::mem::align_of::<u32>()
3274        }
3275
3276        #[inline(always)]
3277        fn inline_size(_context: fidl::encoding::Context) -> usize {
3278            std::mem::size_of::<u32>()
3279        }
3280
3281        #[inline(always)]
3282        fn encode_is_copy() -> bool {
3283            true
3284        }
3285
3286        #[inline(always)]
3287        fn decode_is_copy() -> bool {
3288            false
3289        }
3290    }
3291
3292    impl fidl::encoding::ValueTypeMarker for Durability {
3293        type Borrowed<'a> = Self;
3294        #[inline(always)]
3295        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3296            *value
3297        }
3298    }
3299
3300    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for Durability {
3301        #[inline]
3302        unsafe fn encode(
3303            self,
3304            encoder: &mut fidl::encoding::Encoder<'_, D>,
3305            offset: usize,
3306            _depth: fidl::encoding::Depth,
3307        ) -> fidl::Result<()> {
3308            encoder.debug_check_bounds::<Self>(offset);
3309            encoder.write_num(self.into_primitive(), offset);
3310            Ok(())
3311        }
3312    }
3313
3314    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Durability {
3315        #[inline(always)]
3316        fn new_empty() -> Self {
3317            Self::Transient
3318        }
3319
3320        #[inline]
3321        unsafe fn decode(
3322            &mut self,
3323            decoder: &mut fidl::encoding::Decoder<'_, D>,
3324            offset: usize,
3325            _depth: fidl::encoding::Depth,
3326        ) -> fidl::Result<()> {
3327            decoder.debug_check_bounds::<Self>(offset);
3328            let prim = decoder.read_num::<u32>(offset);
3329
3330            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
3331            Ok(())
3332        }
3333    }
3334    unsafe impl fidl::encoding::TypeMarker for EnvironmentExtends {
3335        type Owned = Self;
3336
3337        #[inline(always)]
3338        fn inline_align(_context: fidl::encoding::Context) -> usize {
3339            std::mem::align_of::<u32>()
3340        }
3341
3342        #[inline(always)]
3343        fn inline_size(_context: fidl::encoding::Context) -> usize {
3344            std::mem::size_of::<u32>()
3345        }
3346
3347        #[inline(always)]
3348        fn encode_is_copy() -> bool {
3349            true
3350        }
3351
3352        #[inline(always)]
3353        fn decode_is_copy() -> bool {
3354            false
3355        }
3356    }
3357
3358    impl fidl::encoding::ValueTypeMarker for EnvironmentExtends {
3359        type Borrowed<'a> = Self;
3360        #[inline(always)]
3361        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3362            *value
3363        }
3364    }
3365
3366    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
3367        for EnvironmentExtends
3368    {
3369        #[inline]
3370        unsafe fn encode(
3371            self,
3372            encoder: &mut fidl::encoding::Encoder<'_, D>,
3373            offset: usize,
3374            _depth: fidl::encoding::Depth,
3375        ) -> fidl::Result<()> {
3376            encoder.debug_check_bounds::<Self>(offset);
3377            encoder.write_num(self.into_primitive(), offset);
3378            Ok(())
3379        }
3380    }
3381
3382    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for EnvironmentExtends {
3383        #[inline(always)]
3384        fn new_empty() -> Self {
3385            Self::None
3386        }
3387
3388        #[inline]
3389        unsafe fn decode(
3390            &mut self,
3391            decoder: &mut fidl::encoding::Decoder<'_, D>,
3392            offset: usize,
3393            _depth: fidl::encoding::Depth,
3394        ) -> fidl::Result<()> {
3395            decoder.debug_check_bounds::<Self>(offset);
3396            let prim = decoder.read_num::<u32>(offset);
3397
3398            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
3399            Ok(())
3400        }
3401    }
3402    unsafe impl fidl::encoding::TypeMarker for OnTerminate {
3403        type Owned = Self;
3404
3405        #[inline(always)]
3406        fn inline_align(_context: fidl::encoding::Context) -> usize {
3407            std::mem::align_of::<u32>()
3408        }
3409
3410        #[inline(always)]
3411        fn inline_size(_context: fidl::encoding::Context) -> usize {
3412            std::mem::size_of::<u32>()
3413        }
3414
3415        #[inline(always)]
3416        fn encode_is_copy() -> bool {
3417            true
3418        }
3419
3420        #[inline(always)]
3421        fn decode_is_copy() -> bool {
3422            false
3423        }
3424    }
3425
3426    impl fidl::encoding::ValueTypeMarker for OnTerminate {
3427        type Borrowed<'a> = Self;
3428        #[inline(always)]
3429        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3430            *value
3431        }
3432    }
3433
3434    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for OnTerminate {
3435        #[inline]
3436        unsafe fn encode(
3437            self,
3438            encoder: &mut fidl::encoding::Encoder<'_, D>,
3439            offset: usize,
3440            _depth: fidl::encoding::Depth,
3441        ) -> fidl::Result<()> {
3442            encoder.debug_check_bounds::<Self>(offset);
3443            encoder.write_num(self.into_primitive(), offset);
3444            Ok(())
3445        }
3446    }
3447
3448    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for OnTerminate {
3449        #[inline(always)]
3450        fn new_empty() -> Self {
3451            Self::None
3452        }
3453
3454        #[inline]
3455        unsafe fn decode(
3456            &mut self,
3457            decoder: &mut fidl::encoding::Decoder<'_, D>,
3458            offset: usize,
3459            _depth: fidl::encoding::Depth,
3460        ) -> fidl::Result<()> {
3461            decoder.debug_check_bounds::<Self>(offset);
3462            let prim = decoder.read_num::<u32>(offset);
3463
3464            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
3465            Ok(())
3466        }
3467    }
3468    unsafe impl fidl::encoding::TypeMarker for StartupMode {
3469        type Owned = Self;
3470
3471        #[inline(always)]
3472        fn inline_align(_context: fidl::encoding::Context) -> usize {
3473            std::mem::align_of::<u32>()
3474        }
3475
3476        #[inline(always)]
3477        fn inline_size(_context: fidl::encoding::Context) -> usize {
3478            std::mem::size_of::<u32>()
3479        }
3480
3481        #[inline(always)]
3482        fn encode_is_copy() -> bool {
3483            true
3484        }
3485
3486        #[inline(always)]
3487        fn decode_is_copy() -> bool {
3488            false
3489        }
3490    }
3491
3492    impl fidl::encoding::ValueTypeMarker for StartupMode {
3493        type Borrowed<'a> = Self;
3494        #[inline(always)]
3495        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3496            *value
3497        }
3498    }
3499
3500    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for StartupMode {
3501        #[inline]
3502        unsafe fn encode(
3503            self,
3504            encoder: &mut fidl::encoding::Encoder<'_, D>,
3505            offset: usize,
3506            _depth: fidl::encoding::Depth,
3507        ) -> fidl::Result<()> {
3508            encoder.debug_check_bounds::<Self>(offset);
3509            encoder.write_num(self.into_primitive(), offset);
3510            Ok(())
3511        }
3512    }
3513
3514    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StartupMode {
3515        #[inline(always)]
3516        fn new_empty() -> Self {
3517            Self::Lazy
3518        }
3519
3520        #[inline]
3521        unsafe fn decode(
3522            &mut self,
3523            decoder: &mut fidl::encoding::Decoder<'_, D>,
3524            offset: usize,
3525            _depth: fidl::encoding::Depth,
3526        ) -> fidl::Result<()> {
3527            decoder.debug_check_bounds::<Self>(offset);
3528            let prim = decoder.read_num::<u32>(offset);
3529
3530            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
3531            Ok(())
3532        }
3533    }
3534    unsafe impl fidl::encoding::TypeMarker for StorageId {
3535        type Owned = Self;
3536
3537        #[inline(always)]
3538        fn inline_align(_context: fidl::encoding::Context) -> usize {
3539            std::mem::align_of::<u32>()
3540        }
3541
3542        #[inline(always)]
3543        fn inline_size(_context: fidl::encoding::Context) -> usize {
3544            std::mem::size_of::<u32>()
3545        }
3546
3547        #[inline(always)]
3548        fn encode_is_copy() -> bool {
3549            true
3550        }
3551
3552        #[inline(always)]
3553        fn decode_is_copy() -> bool {
3554            false
3555        }
3556    }
3557
3558    impl fidl::encoding::ValueTypeMarker for StorageId {
3559        type Borrowed<'a> = Self;
3560        #[inline(always)]
3561        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3562            *value
3563        }
3564    }
3565
3566    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for StorageId {
3567        #[inline]
3568        unsafe fn encode(
3569            self,
3570            encoder: &mut fidl::encoding::Encoder<'_, D>,
3571            offset: usize,
3572            _depth: fidl::encoding::Depth,
3573        ) -> fidl::Result<()> {
3574            encoder.debug_check_bounds::<Self>(offset);
3575            encoder.write_num(self.into_primitive(), offset);
3576            Ok(())
3577        }
3578    }
3579
3580    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StorageId {
3581        #[inline(always)]
3582        fn new_empty() -> Self {
3583            Self::StaticInstanceId
3584        }
3585
3586        #[inline]
3587        unsafe fn decode(
3588            &mut self,
3589            decoder: &mut fidl::encoding::Decoder<'_, D>,
3590            offset: usize,
3591            _depth: fidl::encoding::Depth,
3592        ) -> fidl::Result<()> {
3593            decoder.debug_check_bounds::<Self>(offset);
3594            let prim = decoder.read_num::<u32>(offset);
3595
3596            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
3597            Ok(())
3598        }
3599    }
3600
3601    impl fidl::encoding::ValueTypeMarker for CapabilityRef {
3602        type Borrowed<'a> = &'a Self;
3603        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3604            value
3605        }
3606    }
3607
3608    unsafe impl fidl::encoding::TypeMarker for CapabilityRef {
3609        type Owned = Self;
3610
3611        #[inline(always)]
3612        fn inline_align(_context: fidl::encoding::Context) -> usize {
3613            8
3614        }
3615
3616        #[inline(always)]
3617        fn inline_size(_context: fidl::encoding::Context) -> usize {
3618            16
3619        }
3620    }
3621
3622    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CapabilityRef, D>
3623        for &CapabilityRef
3624    {
3625        #[inline]
3626        unsafe fn encode(
3627            self,
3628            encoder: &mut fidl::encoding::Encoder<'_, D>,
3629            offset: usize,
3630            _depth: fidl::encoding::Depth,
3631        ) -> fidl::Result<()> {
3632            encoder.debug_check_bounds::<CapabilityRef>(offset);
3633            // Delegate to tuple encoding.
3634            fidl::encoding::Encode::<CapabilityRef, D>::encode(
3635                (<fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow(
3636                    &self.name,
3637                ),),
3638                encoder,
3639                offset,
3640                _depth,
3641            )
3642        }
3643    }
3644    unsafe impl<
3645        D: fidl::encoding::ResourceDialect,
3646        T0: fidl::encoding::Encode<fidl::encoding::BoundedString<100>, D>,
3647    > fidl::encoding::Encode<CapabilityRef, D> for (T0,)
3648    {
3649        #[inline]
3650        unsafe fn encode(
3651            self,
3652            encoder: &mut fidl::encoding::Encoder<'_, D>,
3653            offset: usize,
3654            depth: fidl::encoding::Depth,
3655        ) -> fidl::Result<()> {
3656            encoder.debug_check_bounds::<CapabilityRef>(offset);
3657            // Zero out padding regions. There's no need to apply masks
3658            // because the unmasked parts will be overwritten by fields.
3659            // Write the fields.
3660            self.0.encode(encoder, offset + 0, depth)?;
3661            Ok(())
3662        }
3663    }
3664
3665    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CapabilityRef {
3666        #[inline(always)]
3667        fn new_empty() -> Self {
3668            Self { name: fidl::new_empty!(fidl::encoding::BoundedString<100>, D) }
3669        }
3670
3671        #[inline]
3672        unsafe fn decode(
3673            &mut self,
3674            decoder: &mut fidl::encoding::Decoder<'_, D>,
3675            offset: usize,
3676            _depth: fidl::encoding::Depth,
3677        ) -> fidl::Result<()> {
3678            decoder.debug_check_bounds::<Self>(offset);
3679            // Verify that padding bytes are zero.
3680            fidl::decode!(
3681                fidl::encoding::BoundedString<100>,
3682                D,
3683                &mut self.name,
3684                decoder,
3685                offset + 0,
3686                _depth
3687            )?;
3688            Ok(())
3689        }
3690    }
3691
3692    impl fidl::encoding::ValueTypeMarker for ChildRef {
3693        type Borrowed<'a> = &'a Self;
3694        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3695            value
3696        }
3697    }
3698
3699    unsafe impl fidl::encoding::TypeMarker for ChildRef {
3700        type Owned = Self;
3701
3702        #[inline(always)]
3703        fn inline_align(_context: fidl::encoding::Context) -> usize {
3704            8
3705        }
3706
3707        #[inline(always)]
3708        fn inline_size(_context: fidl::encoding::Context) -> usize {
3709            32
3710        }
3711    }
3712
3713    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ChildRef, D> for &ChildRef {
3714        #[inline]
3715        unsafe fn encode(
3716            self,
3717            encoder: &mut fidl::encoding::Encoder<'_, D>,
3718            offset: usize,
3719            _depth: fidl::encoding::Depth,
3720        ) -> fidl::Result<()> {
3721            encoder.debug_check_bounds::<ChildRef>(offset);
3722            // Delegate to tuple encoding.
3723            fidl::encoding::Encode::<ChildRef, D>::encode(
3724                (
3725                    <fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow(&self.name),
3726                    <fidl::encoding::Optional<fidl::encoding::BoundedString<100>> as fidl::encoding::ValueTypeMarker>::borrow(&self.collection),
3727                ),
3728                encoder, offset, _depth
3729            )
3730        }
3731    }
3732    unsafe impl<
3733        D: fidl::encoding::ResourceDialect,
3734        T0: fidl::encoding::Encode<fidl::encoding::BoundedString<1024>, D>,
3735        T1: fidl::encoding::Encode<fidl::encoding::Optional<fidl::encoding::BoundedString<100>>, D>,
3736    > fidl::encoding::Encode<ChildRef, D> for (T0, T1)
3737    {
3738        #[inline]
3739        unsafe fn encode(
3740            self,
3741            encoder: &mut fidl::encoding::Encoder<'_, D>,
3742            offset: usize,
3743            depth: fidl::encoding::Depth,
3744        ) -> fidl::Result<()> {
3745            encoder.debug_check_bounds::<ChildRef>(offset);
3746            // Zero out padding regions. There's no need to apply masks
3747            // because the unmasked parts will be overwritten by fields.
3748            // Write the fields.
3749            self.0.encode(encoder, offset + 0, depth)?;
3750            self.1.encode(encoder, offset + 16, depth)?;
3751            Ok(())
3752        }
3753    }
3754
3755    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ChildRef {
3756        #[inline(always)]
3757        fn new_empty() -> Self {
3758            Self {
3759                name: fidl::new_empty!(fidl::encoding::BoundedString<1024>, D),
3760                collection: fidl::new_empty!(
3761                    fidl::encoding::Optional<fidl::encoding::BoundedString<100>>,
3762                    D
3763                ),
3764            }
3765        }
3766
3767        #[inline]
3768        unsafe fn decode(
3769            &mut self,
3770            decoder: &mut fidl::encoding::Decoder<'_, D>,
3771            offset: usize,
3772            _depth: fidl::encoding::Depth,
3773        ) -> fidl::Result<()> {
3774            decoder.debug_check_bounds::<Self>(offset);
3775            // Verify that padding bytes are zero.
3776            fidl::decode!(
3777                fidl::encoding::BoundedString<1024>,
3778                D,
3779                &mut self.name,
3780                decoder,
3781                offset + 0,
3782                _depth
3783            )?;
3784            fidl::decode!(
3785                fidl::encoding::Optional<fidl::encoding::BoundedString<100>>,
3786                D,
3787                &mut self.collection,
3788                decoder,
3789                offset + 16,
3790                _depth
3791            )?;
3792            Ok(())
3793        }
3794    }
3795
3796    impl fidl::encoding::ValueTypeMarker for CollectionRef {
3797        type Borrowed<'a> = &'a Self;
3798        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3799            value
3800        }
3801    }
3802
3803    unsafe impl fidl::encoding::TypeMarker for CollectionRef {
3804        type Owned = Self;
3805
3806        #[inline(always)]
3807        fn inline_align(_context: fidl::encoding::Context) -> usize {
3808            8
3809        }
3810
3811        #[inline(always)]
3812        fn inline_size(_context: fidl::encoding::Context) -> usize {
3813            16
3814        }
3815    }
3816
3817    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CollectionRef, D>
3818        for &CollectionRef
3819    {
3820        #[inline]
3821        unsafe fn encode(
3822            self,
3823            encoder: &mut fidl::encoding::Encoder<'_, D>,
3824            offset: usize,
3825            _depth: fidl::encoding::Depth,
3826        ) -> fidl::Result<()> {
3827            encoder.debug_check_bounds::<CollectionRef>(offset);
3828            // Delegate to tuple encoding.
3829            fidl::encoding::Encode::<CollectionRef, D>::encode(
3830                (<fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow(
3831                    &self.name,
3832                ),),
3833                encoder,
3834                offset,
3835                _depth,
3836            )
3837        }
3838    }
3839    unsafe impl<
3840        D: fidl::encoding::ResourceDialect,
3841        T0: fidl::encoding::Encode<fidl::encoding::BoundedString<100>, D>,
3842    > fidl::encoding::Encode<CollectionRef, D> for (T0,)
3843    {
3844        #[inline]
3845        unsafe fn encode(
3846            self,
3847            encoder: &mut fidl::encoding::Encoder<'_, D>,
3848            offset: usize,
3849            depth: fidl::encoding::Depth,
3850        ) -> fidl::Result<()> {
3851            encoder.debug_check_bounds::<CollectionRef>(offset);
3852            // Zero out padding regions. There's no need to apply masks
3853            // because the unmasked parts will be overwritten by fields.
3854            // Write the fields.
3855            self.0.encode(encoder, offset + 0, depth)?;
3856            Ok(())
3857        }
3858    }
3859
3860    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CollectionRef {
3861        #[inline(always)]
3862        fn new_empty() -> Self {
3863            Self { name: fidl::new_empty!(fidl::encoding::BoundedString<100>, D) }
3864        }
3865
3866        #[inline]
3867        unsafe fn decode(
3868            &mut self,
3869            decoder: &mut fidl::encoding::Decoder<'_, D>,
3870            offset: usize,
3871            _depth: fidl::encoding::Depth,
3872        ) -> fidl::Result<()> {
3873            decoder.debug_check_bounds::<Self>(offset);
3874            // Verify that padding bytes are zero.
3875            fidl::decode!(
3876                fidl::encoding::BoundedString<100>,
3877                D,
3878                &mut self.name,
3879                decoder,
3880                offset + 0,
3881                _depth
3882            )?;
3883            Ok(())
3884        }
3885    }
3886
3887    impl fidl::encoding::ValueTypeMarker for ConfigType {
3888        type Borrowed<'a> = &'a Self;
3889        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3890            value
3891        }
3892    }
3893
3894    unsafe impl fidl::encoding::TypeMarker for ConfigType {
3895        type Owned = Self;
3896
3897        #[inline(always)]
3898        fn inline_align(_context: fidl::encoding::Context) -> usize {
3899            8
3900        }
3901
3902        #[inline(always)]
3903        fn inline_size(_context: fidl::encoding::Context) -> usize {
3904            40
3905        }
3906    }
3907
3908    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ConfigType, D>
3909        for &ConfigType
3910    {
3911        #[inline]
3912        unsafe fn encode(
3913            self,
3914            encoder: &mut fidl::encoding::Encoder<'_, D>,
3915            offset: usize,
3916            _depth: fidl::encoding::Depth,
3917        ) -> fidl::Result<()> {
3918            encoder.debug_check_bounds::<ConfigType>(offset);
3919            // Delegate to tuple encoding.
3920            fidl::encoding::Encode::<ConfigType, D>::encode(
3921                (
3922                    <ConfigTypeLayout as fidl::encoding::ValueTypeMarker>::borrow(&self.layout),
3923                    <fidl::encoding::Optional<fidl::encoding::UnboundedVector<LayoutParameter>> as fidl::encoding::ValueTypeMarker>::borrow(&self.parameters),
3924                    <fidl::encoding::UnboundedVector<LayoutConstraint> as fidl::encoding::ValueTypeMarker>::borrow(&self.constraints),
3925                ),
3926                encoder, offset, _depth
3927            )
3928        }
3929    }
3930    unsafe impl<
3931        D: fidl::encoding::ResourceDialect,
3932        T0: fidl::encoding::Encode<ConfigTypeLayout, D>,
3933        T1: fidl::encoding::Encode<
3934                fidl::encoding::Optional<fidl::encoding::UnboundedVector<LayoutParameter>>,
3935                D,
3936            >,
3937        T2: fidl::encoding::Encode<fidl::encoding::UnboundedVector<LayoutConstraint>, D>,
3938    > fidl::encoding::Encode<ConfigType, D> for (T0, T1, T2)
3939    {
3940        #[inline]
3941        unsafe fn encode(
3942            self,
3943            encoder: &mut fidl::encoding::Encoder<'_, D>,
3944            offset: usize,
3945            depth: fidl::encoding::Depth,
3946        ) -> fidl::Result<()> {
3947            encoder.debug_check_bounds::<ConfigType>(offset);
3948            // Zero out padding regions. There's no need to apply masks
3949            // because the unmasked parts will be overwritten by fields.
3950            unsafe {
3951                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
3952                (ptr as *mut u64).write_unaligned(0);
3953            }
3954            // Write the fields.
3955            self.0.encode(encoder, offset + 0, depth)?;
3956            self.1.encode(encoder, offset + 8, depth)?;
3957            self.2.encode(encoder, offset + 24, depth)?;
3958            Ok(())
3959        }
3960    }
3961
3962    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ConfigType {
3963        #[inline(always)]
3964        fn new_empty() -> Self {
3965            Self {
3966                layout: fidl::new_empty!(ConfigTypeLayout, D),
3967                parameters: fidl::new_empty!(
3968                    fidl::encoding::Optional<fidl::encoding::UnboundedVector<LayoutParameter>>,
3969                    D
3970                ),
3971                constraints: fidl::new_empty!(fidl::encoding::UnboundedVector<LayoutConstraint>, D),
3972            }
3973        }
3974
3975        #[inline]
3976        unsafe fn decode(
3977            &mut self,
3978            decoder: &mut fidl::encoding::Decoder<'_, D>,
3979            offset: usize,
3980            _depth: fidl::encoding::Depth,
3981        ) -> fidl::Result<()> {
3982            decoder.debug_check_bounds::<Self>(offset);
3983            // Verify that padding bytes are zero.
3984            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
3985            let padval = unsafe { (ptr as *const u64).read_unaligned() };
3986            let mask = 0xffffffff00000000u64;
3987            let maskedval = padval & mask;
3988            if maskedval != 0 {
3989                return Err(fidl::Error::NonZeroPadding {
3990                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
3991                });
3992            }
3993            fidl::decode!(ConfigTypeLayout, D, &mut self.layout, decoder, offset + 0, _depth)?;
3994            fidl::decode!(
3995                fidl::encoding::Optional<fidl::encoding::UnboundedVector<LayoutParameter>>,
3996                D,
3997                &mut self.parameters,
3998                decoder,
3999                offset + 8,
4000                _depth
4001            )?;
4002            fidl::decode!(
4003                fidl::encoding::UnboundedVector<LayoutConstraint>,
4004                D,
4005                &mut self.constraints,
4006                decoder,
4007                offset + 24,
4008                _depth
4009            )?;
4010            Ok(())
4011        }
4012    }
4013
4014    impl fidl::encoding::ValueTypeMarker for DebugRef {
4015        type Borrowed<'a> = &'a Self;
4016        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4017            value
4018        }
4019    }
4020
4021    unsafe impl fidl::encoding::TypeMarker for DebugRef {
4022        type Owned = Self;
4023
4024        #[inline(always)]
4025        fn inline_align(_context: fidl::encoding::Context) -> usize {
4026            1
4027        }
4028
4029        #[inline(always)]
4030        fn inline_size(_context: fidl::encoding::Context) -> usize {
4031            1
4032        }
4033    }
4034
4035    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DebugRef, D> for &DebugRef {
4036        #[inline]
4037        unsafe fn encode(
4038            self,
4039            encoder: &mut fidl::encoding::Encoder<'_, D>,
4040            offset: usize,
4041            _depth: fidl::encoding::Depth,
4042        ) -> fidl::Result<()> {
4043            encoder.debug_check_bounds::<DebugRef>(offset);
4044            encoder.write_num(0u8, offset);
4045            Ok(())
4046        }
4047    }
4048
4049    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DebugRef {
4050        #[inline(always)]
4051        fn new_empty() -> Self {
4052            Self
4053        }
4054
4055        #[inline]
4056        unsafe fn decode(
4057            &mut self,
4058            decoder: &mut fidl::encoding::Decoder<'_, D>,
4059            offset: usize,
4060            _depth: fidl::encoding::Depth,
4061        ) -> fidl::Result<()> {
4062            decoder.debug_check_bounds::<Self>(offset);
4063            match decoder.read_num::<u8>(offset) {
4064                0 => Ok(()),
4065                _ => Err(fidl::Error::Invalid),
4066            }
4067        }
4068    }
4069
4070    impl fidl::encoding::ValueTypeMarker for EnvironmentRef {
4071        type Borrowed<'a> = &'a Self;
4072        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4073            value
4074        }
4075    }
4076
4077    unsafe impl fidl::encoding::TypeMarker for EnvironmentRef {
4078        type Owned = Self;
4079
4080        #[inline(always)]
4081        fn inline_align(_context: fidl::encoding::Context) -> usize {
4082            1
4083        }
4084
4085        #[inline(always)]
4086        fn inline_size(_context: fidl::encoding::Context) -> usize {
4087            1
4088        }
4089    }
4090
4091    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<EnvironmentRef, D>
4092        for &EnvironmentRef
4093    {
4094        #[inline]
4095        unsafe fn encode(
4096            self,
4097            encoder: &mut fidl::encoding::Encoder<'_, D>,
4098            offset: usize,
4099            _depth: fidl::encoding::Depth,
4100        ) -> fidl::Result<()> {
4101            encoder.debug_check_bounds::<EnvironmentRef>(offset);
4102            encoder.write_num(0u8, offset);
4103            Ok(())
4104        }
4105    }
4106
4107    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for EnvironmentRef {
4108        #[inline(always)]
4109        fn new_empty() -> Self {
4110            Self
4111        }
4112
4113        #[inline]
4114        unsafe fn decode(
4115            &mut self,
4116            decoder: &mut fidl::encoding::Decoder<'_, D>,
4117            offset: usize,
4118            _depth: fidl::encoding::Depth,
4119        ) -> fidl::Result<()> {
4120            decoder.debug_check_bounds::<Self>(offset);
4121            match decoder.read_num::<u8>(offset) {
4122                0 => Ok(()),
4123                _ => Err(fidl::Error::Invalid),
4124            }
4125        }
4126    }
4127
4128    impl fidl::encoding::ValueTypeMarker for FrameworkRef {
4129        type Borrowed<'a> = &'a Self;
4130        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4131            value
4132        }
4133    }
4134
4135    unsafe impl fidl::encoding::TypeMarker for FrameworkRef {
4136        type Owned = Self;
4137
4138        #[inline(always)]
4139        fn inline_align(_context: fidl::encoding::Context) -> usize {
4140            1
4141        }
4142
4143        #[inline(always)]
4144        fn inline_size(_context: fidl::encoding::Context) -> usize {
4145            1
4146        }
4147    }
4148
4149    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<FrameworkRef, D>
4150        for &FrameworkRef
4151    {
4152        #[inline]
4153        unsafe fn encode(
4154            self,
4155            encoder: &mut fidl::encoding::Encoder<'_, D>,
4156            offset: usize,
4157            _depth: fidl::encoding::Depth,
4158        ) -> fidl::Result<()> {
4159            encoder.debug_check_bounds::<FrameworkRef>(offset);
4160            encoder.write_num(0u8, offset);
4161            Ok(())
4162        }
4163    }
4164
4165    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for FrameworkRef {
4166        #[inline(always)]
4167        fn new_empty() -> Self {
4168            Self
4169        }
4170
4171        #[inline]
4172        unsafe fn decode(
4173            &mut self,
4174            decoder: &mut fidl::encoding::Decoder<'_, D>,
4175            offset: usize,
4176            _depth: fidl::encoding::Depth,
4177        ) -> fidl::Result<()> {
4178            decoder.debug_check_bounds::<Self>(offset);
4179            match decoder.read_num::<u8>(offset) {
4180                0 => Ok(()),
4181                _ => Err(fidl::Error::Invalid),
4182            }
4183        }
4184    }
4185
4186    impl fidl::encoding::ValueTypeMarker for NameMapping {
4187        type Borrowed<'a> = &'a Self;
4188        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4189            value
4190        }
4191    }
4192
4193    unsafe impl fidl::encoding::TypeMarker for NameMapping {
4194        type Owned = Self;
4195
4196        #[inline(always)]
4197        fn inline_align(_context: fidl::encoding::Context) -> usize {
4198            8
4199        }
4200
4201        #[inline(always)]
4202        fn inline_size(_context: fidl::encoding::Context) -> usize {
4203            32
4204        }
4205    }
4206
4207    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NameMapping, D>
4208        for &NameMapping
4209    {
4210        #[inline]
4211        unsafe fn encode(
4212            self,
4213            encoder: &mut fidl::encoding::Encoder<'_, D>,
4214            offset: usize,
4215            _depth: fidl::encoding::Depth,
4216        ) -> fidl::Result<()> {
4217            encoder.debug_check_bounds::<NameMapping>(offset);
4218            // Delegate to tuple encoding.
4219            fidl::encoding::Encode::<NameMapping, D>::encode(
4220                (
4221                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow(
4222                        &self.source_name,
4223                    ),
4224                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow(
4225                        &self.target_name,
4226                    ),
4227                ),
4228                encoder,
4229                offset,
4230                _depth,
4231            )
4232        }
4233    }
4234    unsafe impl<
4235        D: fidl::encoding::ResourceDialect,
4236        T0: fidl::encoding::Encode<fidl::encoding::BoundedString<100>, D>,
4237        T1: fidl::encoding::Encode<fidl::encoding::BoundedString<100>, D>,
4238    > fidl::encoding::Encode<NameMapping, D> for (T0, T1)
4239    {
4240        #[inline]
4241        unsafe fn encode(
4242            self,
4243            encoder: &mut fidl::encoding::Encoder<'_, D>,
4244            offset: usize,
4245            depth: fidl::encoding::Depth,
4246        ) -> fidl::Result<()> {
4247            encoder.debug_check_bounds::<NameMapping>(offset);
4248            // Zero out padding regions. There's no need to apply masks
4249            // because the unmasked parts will be overwritten by fields.
4250            // Write the fields.
4251            self.0.encode(encoder, offset + 0, depth)?;
4252            self.1.encode(encoder, offset + 16, depth)?;
4253            Ok(())
4254        }
4255    }
4256
4257    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NameMapping {
4258        #[inline(always)]
4259        fn new_empty() -> Self {
4260            Self {
4261                source_name: fidl::new_empty!(fidl::encoding::BoundedString<100>, D),
4262                target_name: fidl::new_empty!(fidl::encoding::BoundedString<100>, D),
4263            }
4264        }
4265
4266        #[inline]
4267        unsafe fn decode(
4268            &mut self,
4269            decoder: &mut fidl::encoding::Decoder<'_, D>,
4270            offset: usize,
4271            _depth: fidl::encoding::Depth,
4272        ) -> fidl::Result<()> {
4273            decoder.debug_check_bounds::<Self>(offset);
4274            // Verify that padding bytes are zero.
4275            fidl::decode!(
4276                fidl::encoding::BoundedString<100>,
4277                D,
4278                &mut self.source_name,
4279                decoder,
4280                offset + 0,
4281                _depth
4282            )?;
4283            fidl::decode!(
4284                fidl::encoding::BoundedString<100>,
4285                D,
4286                &mut self.target_name,
4287                decoder,
4288                offset + 16,
4289                _depth
4290            )?;
4291            Ok(())
4292        }
4293    }
4294
4295    impl fidl::encoding::ValueTypeMarker for ParentRef {
4296        type Borrowed<'a> = &'a Self;
4297        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4298            value
4299        }
4300    }
4301
4302    unsafe impl fidl::encoding::TypeMarker for ParentRef {
4303        type Owned = Self;
4304
4305        #[inline(always)]
4306        fn inline_align(_context: fidl::encoding::Context) -> usize {
4307            1
4308        }
4309
4310        #[inline(always)]
4311        fn inline_size(_context: fidl::encoding::Context) -> usize {
4312            1
4313        }
4314    }
4315
4316    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ParentRef, D>
4317        for &ParentRef
4318    {
4319        #[inline]
4320        unsafe fn encode(
4321            self,
4322            encoder: &mut fidl::encoding::Encoder<'_, D>,
4323            offset: usize,
4324            _depth: fidl::encoding::Depth,
4325        ) -> fidl::Result<()> {
4326            encoder.debug_check_bounds::<ParentRef>(offset);
4327            encoder.write_num(0u8, offset);
4328            Ok(())
4329        }
4330    }
4331
4332    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ParentRef {
4333        #[inline(always)]
4334        fn new_empty() -> Self {
4335            Self
4336        }
4337
4338        #[inline]
4339        unsafe fn decode(
4340            &mut self,
4341            decoder: &mut fidl::encoding::Decoder<'_, D>,
4342            offset: usize,
4343            _depth: fidl::encoding::Depth,
4344        ) -> fidl::Result<()> {
4345            decoder.debug_check_bounds::<Self>(offset);
4346            match decoder.read_num::<u8>(offset) {
4347                0 => Ok(()),
4348                _ => Err(fidl::Error::Invalid),
4349            }
4350        }
4351    }
4352
4353    impl fidl::encoding::ValueTypeMarker for ResolvedConfig {
4354        type Borrowed<'a> = &'a Self;
4355        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4356            value
4357        }
4358    }
4359
4360    unsafe impl fidl::encoding::TypeMarker for ResolvedConfig {
4361        type Owned = Self;
4362
4363        #[inline(always)]
4364        fn inline_align(_context: fidl::encoding::Context) -> usize {
4365            8
4366        }
4367
4368        #[inline(always)]
4369        fn inline_size(_context: fidl::encoding::Context) -> usize {
4370            32
4371        }
4372    }
4373
4374    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ResolvedConfig, D>
4375        for &ResolvedConfig
4376    {
4377        #[inline]
4378        unsafe fn encode(
4379            self,
4380            encoder: &mut fidl::encoding::Encoder<'_, D>,
4381            offset: usize,
4382            _depth: fidl::encoding::Depth,
4383        ) -> fidl::Result<()> {
4384            encoder.debug_check_bounds::<ResolvedConfig>(offset);
4385            // Delegate to tuple encoding.
4386            fidl::encoding::Encode::<ResolvedConfig, D>::encode(
4387                (
4388                    <fidl::encoding::UnboundedVector<ResolvedConfigField> as fidl::encoding::ValueTypeMarker>::borrow(&self.fields),
4389                    <ConfigChecksum as fidl::encoding::ValueTypeMarker>::borrow(&self.checksum),
4390                ),
4391                encoder, offset, _depth
4392            )
4393        }
4394    }
4395    unsafe impl<
4396        D: fidl::encoding::ResourceDialect,
4397        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<ResolvedConfigField>, D>,
4398        T1: fidl::encoding::Encode<ConfigChecksum, D>,
4399    > fidl::encoding::Encode<ResolvedConfig, D> for (T0, T1)
4400    {
4401        #[inline]
4402        unsafe fn encode(
4403            self,
4404            encoder: &mut fidl::encoding::Encoder<'_, D>,
4405            offset: usize,
4406            depth: fidl::encoding::Depth,
4407        ) -> fidl::Result<()> {
4408            encoder.debug_check_bounds::<ResolvedConfig>(offset);
4409            // Zero out padding regions. There's no need to apply masks
4410            // because the unmasked parts will be overwritten by fields.
4411            // Write the fields.
4412            self.0.encode(encoder, offset + 0, depth)?;
4413            self.1.encode(encoder, offset + 16, depth)?;
4414            Ok(())
4415        }
4416    }
4417
4418    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ResolvedConfig {
4419        #[inline(always)]
4420        fn new_empty() -> Self {
4421            Self {
4422                fields: fidl::new_empty!(fidl::encoding::UnboundedVector<ResolvedConfigField>, D),
4423                checksum: fidl::new_empty!(ConfigChecksum, D),
4424            }
4425        }
4426
4427        #[inline]
4428        unsafe fn decode(
4429            &mut self,
4430            decoder: &mut fidl::encoding::Decoder<'_, D>,
4431            offset: usize,
4432            _depth: fidl::encoding::Depth,
4433        ) -> fidl::Result<()> {
4434            decoder.debug_check_bounds::<Self>(offset);
4435            // Verify that padding bytes are zero.
4436            fidl::decode!(
4437                fidl::encoding::UnboundedVector<ResolvedConfigField>,
4438                D,
4439                &mut self.fields,
4440                decoder,
4441                offset + 0,
4442                _depth
4443            )?;
4444            fidl::decode!(ConfigChecksum, D, &mut self.checksum, decoder, offset + 16, _depth)?;
4445            Ok(())
4446        }
4447    }
4448
4449    impl fidl::encoding::ValueTypeMarker for ResolvedConfigField {
4450        type Borrowed<'a> = &'a Self;
4451        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4452            value
4453        }
4454    }
4455
4456    unsafe impl fidl::encoding::TypeMarker for ResolvedConfigField {
4457        type Owned = Self;
4458
4459        #[inline(always)]
4460        fn inline_align(_context: fidl::encoding::Context) -> usize {
4461            8
4462        }
4463
4464        #[inline(always)]
4465        fn inline_size(_context: fidl::encoding::Context) -> usize {
4466            32
4467        }
4468    }
4469
4470    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ResolvedConfigField, D>
4471        for &ResolvedConfigField
4472    {
4473        #[inline]
4474        unsafe fn encode(
4475            self,
4476            encoder: &mut fidl::encoding::Encoder<'_, D>,
4477            offset: usize,
4478            _depth: fidl::encoding::Depth,
4479        ) -> fidl::Result<()> {
4480            encoder.debug_check_bounds::<ResolvedConfigField>(offset);
4481            // Delegate to tuple encoding.
4482            fidl::encoding::Encode::<ResolvedConfigField, D>::encode(
4483                (
4484                    <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow(
4485                        &self.key,
4486                    ),
4487                    <ConfigValue as fidl::encoding::ValueTypeMarker>::borrow(&self.value),
4488                ),
4489                encoder,
4490                offset,
4491                _depth,
4492            )
4493        }
4494    }
4495    unsafe impl<
4496        D: fidl::encoding::ResourceDialect,
4497        T0: fidl::encoding::Encode<fidl::encoding::UnboundedString, D>,
4498        T1: fidl::encoding::Encode<ConfigValue, D>,
4499    > fidl::encoding::Encode<ResolvedConfigField, D> for (T0, T1)
4500    {
4501        #[inline]
4502        unsafe fn encode(
4503            self,
4504            encoder: &mut fidl::encoding::Encoder<'_, D>,
4505            offset: usize,
4506            depth: fidl::encoding::Depth,
4507        ) -> fidl::Result<()> {
4508            encoder.debug_check_bounds::<ResolvedConfigField>(offset);
4509            // Zero out padding regions. There's no need to apply masks
4510            // because the unmasked parts will be overwritten by fields.
4511            // Write the fields.
4512            self.0.encode(encoder, offset + 0, depth)?;
4513            self.1.encode(encoder, offset + 16, depth)?;
4514            Ok(())
4515        }
4516    }
4517
4518    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ResolvedConfigField {
4519        #[inline(always)]
4520        fn new_empty() -> Self {
4521            Self {
4522                key: fidl::new_empty!(fidl::encoding::UnboundedString, D),
4523                value: fidl::new_empty!(ConfigValue, D),
4524            }
4525        }
4526
4527        #[inline]
4528        unsafe fn decode(
4529            &mut self,
4530            decoder: &mut fidl::encoding::Decoder<'_, D>,
4531            offset: usize,
4532            _depth: fidl::encoding::Depth,
4533        ) -> fidl::Result<()> {
4534            decoder.debug_check_bounds::<Self>(offset);
4535            // Verify that padding bytes are zero.
4536            fidl::decode!(
4537                fidl::encoding::UnboundedString,
4538                D,
4539                &mut self.key,
4540                decoder,
4541                offset + 0,
4542                _depth
4543            )?;
4544            fidl::decode!(ConfigValue, D, &mut self.value, decoder, offset + 16, _depth)?;
4545            Ok(())
4546        }
4547    }
4548
4549    impl fidl::encoding::ValueTypeMarker for SelfRef {
4550        type Borrowed<'a> = &'a Self;
4551        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4552            value
4553        }
4554    }
4555
4556    unsafe impl fidl::encoding::TypeMarker for SelfRef {
4557        type Owned = Self;
4558
4559        #[inline(always)]
4560        fn inline_align(_context: fidl::encoding::Context) -> usize {
4561            1
4562        }
4563
4564        #[inline(always)]
4565        fn inline_size(_context: fidl::encoding::Context) -> usize {
4566            1
4567        }
4568    }
4569
4570    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SelfRef, D> for &SelfRef {
4571        #[inline]
4572        unsafe fn encode(
4573            self,
4574            encoder: &mut fidl::encoding::Encoder<'_, D>,
4575            offset: usize,
4576            _depth: fidl::encoding::Depth,
4577        ) -> fidl::Result<()> {
4578            encoder.debug_check_bounds::<SelfRef>(offset);
4579            encoder.write_num(0u8, offset);
4580            Ok(())
4581        }
4582    }
4583
4584    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SelfRef {
4585        #[inline(always)]
4586        fn new_empty() -> Self {
4587            Self
4588        }
4589
4590        #[inline]
4591        unsafe fn decode(
4592            &mut self,
4593            decoder: &mut fidl::encoding::Decoder<'_, D>,
4594            offset: usize,
4595            _depth: fidl::encoding::Depth,
4596        ) -> fidl::Result<()> {
4597            decoder.debug_check_bounds::<Self>(offset);
4598            match decoder.read_num::<u8>(offset) {
4599                0 => Ok(()),
4600                _ => Err(fidl::Error::Invalid),
4601            }
4602        }
4603    }
4604
4605    impl fidl::encoding::ValueTypeMarker for VoidRef {
4606        type Borrowed<'a> = &'a Self;
4607        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4608            value
4609        }
4610    }
4611
4612    unsafe impl fidl::encoding::TypeMarker for VoidRef {
4613        type Owned = Self;
4614
4615        #[inline(always)]
4616        fn inline_align(_context: fidl::encoding::Context) -> usize {
4617            1
4618        }
4619
4620        #[inline(always)]
4621        fn inline_size(_context: fidl::encoding::Context) -> usize {
4622            1
4623        }
4624    }
4625
4626    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<VoidRef, D> for &VoidRef {
4627        #[inline]
4628        unsafe fn encode(
4629            self,
4630            encoder: &mut fidl::encoding::Encoder<'_, D>,
4631            offset: usize,
4632            _depth: fidl::encoding::Depth,
4633        ) -> fidl::Result<()> {
4634            encoder.debug_check_bounds::<VoidRef>(offset);
4635            encoder.write_num(0u8, offset);
4636            Ok(())
4637        }
4638    }
4639
4640    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for VoidRef {
4641        #[inline(always)]
4642        fn new_empty() -> Self {
4643            Self
4644        }
4645
4646        #[inline]
4647        unsafe fn decode(
4648            &mut self,
4649            decoder: &mut fidl::encoding::Decoder<'_, D>,
4650            offset: usize,
4651            _depth: fidl::encoding::Depth,
4652        ) -> fidl::Result<()> {
4653            decoder.debug_check_bounds::<Self>(offset);
4654            match decoder.read_num::<u8>(offset) {
4655                0 => Ok(()),
4656                _ => Err(fidl::Error::Invalid),
4657            }
4658        }
4659    }
4660
4661    impl Child {
4662        #[inline(always)]
4663        fn max_ordinal_present(&self) -> u64 {
4664            if let Some(_) = self.config_overrides {
4665                return 6;
4666            }
4667            if let Some(_) = self.on_terminate {
4668                return 5;
4669            }
4670            if let Some(_) = self.environment {
4671                return 4;
4672            }
4673            if let Some(_) = self.startup {
4674                return 3;
4675            }
4676            if let Some(_) = self.url {
4677                return 2;
4678            }
4679            if let Some(_) = self.name {
4680                return 1;
4681            }
4682            0
4683        }
4684    }
4685
4686    impl fidl::encoding::ValueTypeMarker for Child {
4687        type Borrowed<'a> = &'a Self;
4688        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4689            value
4690        }
4691    }
4692
4693    unsafe impl fidl::encoding::TypeMarker for Child {
4694        type Owned = Self;
4695
4696        #[inline(always)]
4697        fn inline_align(_context: fidl::encoding::Context) -> usize {
4698            8
4699        }
4700
4701        #[inline(always)]
4702        fn inline_size(_context: fidl::encoding::Context) -> usize {
4703            16
4704        }
4705    }
4706
4707    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Child, D> for &Child {
4708        unsafe fn encode(
4709            self,
4710            encoder: &mut fidl::encoding::Encoder<'_, D>,
4711            offset: usize,
4712            mut depth: fidl::encoding::Depth,
4713        ) -> fidl::Result<()> {
4714            encoder.debug_check_bounds::<Child>(offset);
4715            // Vector header
4716            let max_ordinal: u64 = self.max_ordinal_present();
4717            encoder.write_num(max_ordinal, offset);
4718            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4719            // Calling encoder.out_of_line_offset(0) is not allowed.
4720            if max_ordinal == 0 {
4721                return Ok(());
4722            }
4723            depth.increment()?;
4724            let envelope_size = 8;
4725            let bytes_len = max_ordinal as usize * envelope_size;
4726            #[allow(unused_variables)]
4727            let offset = encoder.out_of_line_offset(bytes_len);
4728            let mut _prev_end_offset: usize = 0;
4729            if 1 > max_ordinal {
4730                return Ok(());
4731            }
4732
4733            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4734            // are envelope_size bytes.
4735            let cur_offset: usize = (1 - 1) * envelope_size;
4736
4737            // Zero reserved fields.
4738            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4739
4740            // Safety:
4741            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4742            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4743            //   envelope_size bytes, there is always sufficient room.
4744            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
4745            self.name.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
4746            encoder, offset + cur_offset, depth
4747        )?;
4748
4749            _prev_end_offset = cur_offset + envelope_size;
4750            if 2 > max_ordinal {
4751                return Ok(());
4752            }
4753
4754            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4755            // are envelope_size bytes.
4756            let cur_offset: usize = (2 - 1) * envelope_size;
4757
4758            // Zero reserved fields.
4759            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4760
4761            // Safety:
4762            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4763            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4764            //   envelope_size bytes, there is always sufficient room.
4765            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, D>(
4766            self.url.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
4767            encoder, offset + cur_offset, depth
4768        )?;
4769
4770            _prev_end_offset = cur_offset + envelope_size;
4771            if 3 > max_ordinal {
4772                return Ok(());
4773            }
4774
4775            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4776            // are envelope_size bytes.
4777            let cur_offset: usize = (3 - 1) * envelope_size;
4778
4779            // Zero reserved fields.
4780            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4781
4782            // Safety:
4783            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4784            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4785            //   envelope_size bytes, there is always sufficient room.
4786            fidl::encoding::encode_in_envelope_optional::<StartupMode, D>(
4787                self.startup.as_ref().map(<StartupMode as fidl::encoding::ValueTypeMarker>::borrow),
4788                encoder,
4789                offset + cur_offset,
4790                depth,
4791            )?;
4792
4793            _prev_end_offset = cur_offset + envelope_size;
4794            if 4 > max_ordinal {
4795                return Ok(());
4796            }
4797
4798            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4799            // are envelope_size bytes.
4800            let cur_offset: usize = (4 - 1) * envelope_size;
4801
4802            // Zero reserved fields.
4803            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4804
4805            // Safety:
4806            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4807            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4808            //   envelope_size bytes, there is always sufficient room.
4809            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
4810                self.environment.as_ref().map(
4811                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
4812                ),
4813                encoder,
4814                offset + cur_offset,
4815                depth,
4816            )?;
4817
4818            _prev_end_offset = cur_offset + envelope_size;
4819            if 5 > max_ordinal {
4820                return Ok(());
4821            }
4822
4823            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4824            // are envelope_size bytes.
4825            let cur_offset: usize = (5 - 1) * envelope_size;
4826
4827            // Zero reserved fields.
4828            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4829
4830            // Safety:
4831            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4832            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4833            //   envelope_size bytes, there is always sufficient room.
4834            fidl::encoding::encode_in_envelope_optional::<OnTerminate, D>(
4835                self.on_terminate
4836                    .as_ref()
4837                    .map(<OnTerminate as fidl::encoding::ValueTypeMarker>::borrow),
4838                encoder,
4839                offset + cur_offset,
4840                depth,
4841            )?;
4842
4843            _prev_end_offset = cur_offset + envelope_size;
4844            if 6 > max_ordinal {
4845                return Ok(());
4846            }
4847
4848            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4849            // are envelope_size bytes.
4850            let cur_offset: usize = (6 - 1) * envelope_size;
4851
4852            // Zero reserved fields.
4853            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4854
4855            // Safety:
4856            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4857            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4858            //   envelope_size bytes, there is always sufficient room.
4859            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<ConfigOverride>, D>(
4860            self.config_overrides.as_ref().map(<fidl::encoding::UnboundedVector<ConfigOverride> as fidl::encoding::ValueTypeMarker>::borrow),
4861            encoder, offset + cur_offset, depth
4862        )?;
4863
4864            _prev_end_offset = cur_offset + envelope_size;
4865
4866            Ok(())
4867        }
4868    }
4869
4870    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Child {
4871        #[inline(always)]
4872        fn new_empty() -> Self {
4873            Self::default()
4874        }
4875
4876        unsafe fn decode(
4877            &mut self,
4878            decoder: &mut fidl::encoding::Decoder<'_, D>,
4879            offset: usize,
4880            mut depth: fidl::encoding::Depth,
4881        ) -> fidl::Result<()> {
4882            decoder.debug_check_bounds::<Self>(offset);
4883            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4884                None => return Err(fidl::Error::NotNullable),
4885                Some(len) => len,
4886            };
4887            // Calling decoder.out_of_line_offset(0) is not allowed.
4888            if len == 0 {
4889                return Ok(());
4890            };
4891            depth.increment()?;
4892            let envelope_size = 8;
4893            let bytes_len = len * envelope_size;
4894            let offset = decoder.out_of_line_offset(bytes_len)?;
4895            // Decode the envelope for each type.
4896            let mut _next_ordinal_to_read = 0;
4897            let mut next_offset = offset;
4898            let end_offset = offset + bytes_len;
4899            _next_ordinal_to_read += 1;
4900            if next_offset >= end_offset {
4901                return Ok(());
4902            }
4903
4904            // Decode unknown envelopes for gaps in ordinals.
4905            while _next_ordinal_to_read < 1 {
4906                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4907                _next_ordinal_to_read += 1;
4908                next_offset += envelope_size;
4909            }
4910
4911            let next_out_of_line = decoder.next_out_of_line();
4912            let handles_before = decoder.remaining_handles();
4913            if let Some((inlined, num_bytes, num_handles)) =
4914                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4915            {
4916                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4917                if inlined != (member_inline_size <= 4) {
4918                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4919                }
4920                let inner_offset;
4921                let mut inner_depth = depth.clone();
4922                if inlined {
4923                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4924                    inner_offset = next_offset;
4925                } else {
4926                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4927                    inner_depth.increment()?;
4928                }
4929                let val_ref = self.name.get_or_insert_with(|| {
4930                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
4931                });
4932                fidl::decode!(
4933                    fidl::encoding::BoundedString<1024>,
4934                    D,
4935                    val_ref,
4936                    decoder,
4937                    inner_offset,
4938                    inner_depth
4939                )?;
4940                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4941                {
4942                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4943                }
4944                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4945                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4946                }
4947            }
4948
4949            next_offset += envelope_size;
4950            _next_ordinal_to_read += 1;
4951            if next_offset >= end_offset {
4952                return Ok(());
4953            }
4954
4955            // Decode unknown envelopes for gaps in ordinals.
4956            while _next_ordinal_to_read < 2 {
4957                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4958                _next_ordinal_to_read += 1;
4959                next_offset += envelope_size;
4960            }
4961
4962            let next_out_of_line = decoder.next_out_of_line();
4963            let handles_before = decoder.remaining_handles();
4964            if let Some((inlined, num_bytes, num_handles)) =
4965                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4966            {
4967                let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4968                if inlined != (member_inline_size <= 4) {
4969                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4970                }
4971                let inner_offset;
4972                let mut inner_depth = depth.clone();
4973                if inlined {
4974                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4975                    inner_offset = next_offset;
4976                } else {
4977                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4978                    inner_depth.increment()?;
4979                }
4980                let val_ref = self.url.get_or_insert_with(|| {
4981                    fidl::new_empty!(fidl::encoding::BoundedString<4096>, D)
4982                });
4983                fidl::decode!(
4984                    fidl::encoding::BoundedString<4096>,
4985                    D,
4986                    val_ref,
4987                    decoder,
4988                    inner_offset,
4989                    inner_depth
4990                )?;
4991                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4992                {
4993                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4994                }
4995                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4996                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4997                }
4998            }
4999
5000            next_offset += envelope_size;
5001            _next_ordinal_to_read += 1;
5002            if next_offset >= end_offset {
5003                return Ok(());
5004            }
5005
5006            // Decode unknown envelopes for gaps in ordinals.
5007            while _next_ordinal_to_read < 3 {
5008                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5009                _next_ordinal_to_read += 1;
5010                next_offset += envelope_size;
5011            }
5012
5013            let next_out_of_line = decoder.next_out_of_line();
5014            let handles_before = decoder.remaining_handles();
5015            if let Some((inlined, num_bytes, num_handles)) =
5016                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5017            {
5018                let member_inline_size =
5019                    <StartupMode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5020                if inlined != (member_inline_size <= 4) {
5021                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5022                }
5023                let inner_offset;
5024                let mut inner_depth = depth.clone();
5025                if inlined {
5026                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5027                    inner_offset = next_offset;
5028                } else {
5029                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5030                    inner_depth.increment()?;
5031                }
5032                let val_ref = self.startup.get_or_insert_with(|| fidl::new_empty!(StartupMode, D));
5033                fidl::decode!(StartupMode, D, val_ref, decoder, inner_offset, inner_depth)?;
5034                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5035                {
5036                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5037                }
5038                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5039                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5040                }
5041            }
5042
5043            next_offset += envelope_size;
5044            _next_ordinal_to_read += 1;
5045            if next_offset >= end_offset {
5046                return Ok(());
5047            }
5048
5049            // Decode unknown envelopes for gaps in ordinals.
5050            while _next_ordinal_to_read < 4 {
5051                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5052                _next_ordinal_to_read += 1;
5053                next_offset += envelope_size;
5054            }
5055
5056            let next_out_of_line = decoder.next_out_of_line();
5057            let handles_before = decoder.remaining_handles();
5058            if let Some((inlined, num_bytes, num_handles)) =
5059                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5060            {
5061                let member_inline_size =
5062                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
5063                        decoder.context,
5064                    );
5065                if inlined != (member_inline_size <= 4) {
5066                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5067                }
5068                let inner_offset;
5069                let mut inner_depth = depth.clone();
5070                if inlined {
5071                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5072                    inner_offset = next_offset;
5073                } else {
5074                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5075                    inner_depth.increment()?;
5076                }
5077                let val_ref = self
5078                    .environment
5079                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
5080                fidl::decode!(
5081                    fidl::encoding::BoundedString<100>,
5082                    D,
5083                    val_ref,
5084                    decoder,
5085                    inner_offset,
5086                    inner_depth
5087                )?;
5088                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5089                {
5090                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5091                }
5092                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5093                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5094                }
5095            }
5096
5097            next_offset += envelope_size;
5098            _next_ordinal_to_read += 1;
5099            if next_offset >= end_offset {
5100                return Ok(());
5101            }
5102
5103            // Decode unknown envelopes for gaps in ordinals.
5104            while _next_ordinal_to_read < 5 {
5105                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5106                _next_ordinal_to_read += 1;
5107                next_offset += envelope_size;
5108            }
5109
5110            let next_out_of_line = decoder.next_out_of_line();
5111            let handles_before = decoder.remaining_handles();
5112            if let Some((inlined, num_bytes, num_handles)) =
5113                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5114            {
5115                let member_inline_size =
5116                    <OnTerminate as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5117                if inlined != (member_inline_size <= 4) {
5118                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5119                }
5120                let inner_offset;
5121                let mut inner_depth = depth.clone();
5122                if inlined {
5123                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5124                    inner_offset = next_offset;
5125                } else {
5126                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5127                    inner_depth.increment()?;
5128                }
5129                let val_ref =
5130                    self.on_terminate.get_or_insert_with(|| fidl::new_empty!(OnTerminate, D));
5131                fidl::decode!(OnTerminate, D, val_ref, decoder, inner_offset, inner_depth)?;
5132                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5133                {
5134                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5135                }
5136                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5137                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5138                }
5139            }
5140
5141            next_offset += envelope_size;
5142            _next_ordinal_to_read += 1;
5143            if next_offset >= end_offset {
5144                return Ok(());
5145            }
5146
5147            // Decode unknown envelopes for gaps in ordinals.
5148            while _next_ordinal_to_read < 6 {
5149                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5150                _next_ordinal_to_read += 1;
5151                next_offset += envelope_size;
5152            }
5153
5154            let next_out_of_line = decoder.next_out_of_line();
5155            let handles_before = decoder.remaining_handles();
5156            if let Some((inlined, num_bytes, num_handles)) =
5157                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5158            {
5159                let member_inline_size = <fidl::encoding::UnboundedVector<ConfigOverride> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5160                if inlined != (member_inline_size <= 4) {
5161                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5162                }
5163                let inner_offset;
5164                let mut inner_depth = depth.clone();
5165                if inlined {
5166                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5167                    inner_offset = next_offset;
5168                } else {
5169                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5170                    inner_depth.increment()?;
5171                }
5172                let val_ref = self.config_overrides.get_or_insert_with(|| {
5173                    fidl::new_empty!(fidl::encoding::UnboundedVector<ConfigOverride>, D)
5174                });
5175                fidl::decode!(
5176                    fidl::encoding::UnboundedVector<ConfigOverride>,
5177                    D,
5178                    val_ref,
5179                    decoder,
5180                    inner_offset,
5181                    inner_depth
5182                )?;
5183                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5184                {
5185                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5186                }
5187                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5188                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5189                }
5190            }
5191
5192            next_offset += envelope_size;
5193
5194            // Decode the remaining unknown envelopes.
5195            while next_offset < end_offset {
5196                _next_ordinal_to_read += 1;
5197                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5198                next_offset += envelope_size;
5199            }
5200
5201            Ok(())
5202        }
5203    }
5204
5205    impl Collection {
5206        #[inline(always)]
5207        fn max_ordinal_present(&self) -> u64 {
5208            if let Some(_) = self.persistent_storage {
5209                return 6;
5210            }
5211            if let Some(_) = self.allow_long_names {
5212                return 5;
5213            }
5214            if let Some(_) = self.allowed_offers {
5215                return 4;
5216            }
5217            if let Some(_) = self.environment {
5218                return 3;
5219            }
5220            if let Some(_) = self.durability {
5221                return 2;
5222            }
5223            if let Some(_) = self.name {
5224                return 1;
5225            }
5226            0
5227        }
5228    }
5229
5230    impl fidl::encoding::ValueTypeMarker for Collection {
5231        type Borrowed<'a> = &'a Self;
5232        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5233            value
5234        }
5235    }
5236
5237    unsafe impl fidl::encoding::TypeMarker for Collection {
5238        type Owned = Self;
5239
5240        #[inline(always)]
5241        fn inline_align(_context: fidl::encoding::Context) -> usize {
5242            8
5243        }
5244
5245        #[inline(always)]
5246        fn inline_size(_context: fidl::encoding::Context) -> usize {
5247            16
5248        }
5249    }
5250
5251    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Collection, D>
5252        for &Collection
5253    {
5254        unsafe fn encode(
5255            self,
5256            encoder: &mut fidl::encoding::Encoder<'_, D>,
5257            offset: usize,
5258            mut depth: fidl::encoding::Depth,
5259        ) -> fidl::Result<()> {
5260            encoder.debug_check_bounds::<Collection>(offset);
5261            // Vector header
5262            let max_ordinal: u64 = self.max_ordinal_present();
5263            encoder.write_num(max_ordinal, offset);
5264            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5265            // Calling encoder.out_of_line_offset(0) is not allowed.
5266            if max_ordinal == 0 {
5267                return Ok(());
5268            }
5269            depth.increment()?;
5270            let envelope_size = 8;
5271            let bytes_len = max_ordinal as usize * envelope_size;
5272            #[allow(unused_variables)]
5273            let offset = encoder.out_of_line_offset(bytes_len);
5274            let mut _prev_end_offset: usize = 0;
5275            if 1 > max_ordinal {
5276                return Ok(());
5277            }
5278
5279            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5280            // are envelope_size bytes.
5281            let cur_offset: usize = (1 - 1) * envelope_size;
5282
5283            // Zero reserved fields.
5284            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5285
5286            // Safety:
5287            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5288            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5289            //   envelope_size bytes, there is always sufficient room.
5290            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
5291                self.name.as_ref().map(
5292                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
5293                ),
5294                encoder,
5295                offset + cur_offset,
5296                depth,
5297            )?;
5298
5299            _prev_end_offset = cur_offset + envelope_size;
5300            if 2 > max_ordinal {
5301                return Ok(());
5302            }
5303
5304            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5305            // are envelope_size bytes.
5306            let cur_offset: usize = (2 - 1) * envelope_size;
5307
5308            // Zero reserved fields.
5309            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5310
5311            // Safety:
5312            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5313            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5314            //   envelope_size bytes, there is always sufficient room.
5315            fidl::encoding::encode_in_envelope_optional::<Durability, D>(
5316                self.durability
5317                    .as_ref()
5318                    .map(<Durability as fidl::encoding::ValueTypeMarker>::borrow),
5319                encoder,
5320                offset + cur_offset,
5321                depth,
5322            )?;
5323
5324            _prev_end_offset = cur_offset + envelope_size;
5325            if 3 > max_ordinal {
5326                return Ok(());
5327            }
5328
5329            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5330            // are envelope_size bytes.
5331            let cur_offset: usize = (3 - 1) * envelope_size;
5332
5333            // Zero reserved fields.
5334            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5335
5336            // Safety:
5337            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5338            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5339            //   envelope_size bytes, there is always sufficient room.
5340            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
5341                self.environment.as_ref().map(
5342                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
5343                ),
5344                encoder,
5345                offset + cur_offset,
5346                depth,
5347            )?;
5348
5349            _prev_end_offset = cur_offset + envelope_size;
5350            if 4 > max_ordinal {
5351                return Ok(());
5352            }
5353
5354            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5355            // are envelope_size bytes.
5356            let cur_offset: usize = (4 - 1) * envelope_size;
5357
5358            // Zero reserved fields.
5359            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5360
5361            // Safety:
5362            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5363            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5364            //   envelope_size bytes, there is always sufficient room.
5365            fidl::encoding::encode_in_envelope_optional::<AllowedOffers, D>(
5366                self.allowed_offers
5367                    .as_ref()
5368                    .map(<AllowedOffers as fidl::encoding::ValueTypeMarker>::borrow),
5369                encoder,
5370                offset + cur_offset,
5371                depth,
5372            )?;
5373
5374            _prev_end_offset = cur_offset + envelope_size;
5375            if 5 > max_ordinal {
5376                return Ok(());
5377            }
5378
5379            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5380            // are envelope_size bytes.
5381            let cur_offset: usize = (5 - 1) * envelope_size;
5382
5383            // Zero reserved fields.
5384            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5385
5386            // Safety:
5387            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5388            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5389            //   envelope_size bytes, there is always sufficient room.
5390            fidl::encoding::encode_in_envelope_optional::<bool, D>(
5391                self.allow_long_names
5392                    .as_ref()
5393                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5394                encoder,
5395                offset + cur_offset,
5396                depth,
5397            )?;
5398
5399            _prev_end_offset = cur_offset + envelope_size;
5400            if 6 > max_ordinal {
5401                return Ok(());
5402            }
5403
5404            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5405            // are envelope_size bytes.
5406            let cur_offset: usize = (6 - 1) * envelope_size;
5407
5408            // Zero reserved fields.
5409            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5410
5411            // Safety:
5412            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5413            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5414            //   envelope_size bytes, there is always sufficient room.
5415            fidl::encoding::encode_in_envelope_optional::<bool, D>(
5416                self.persistent_storage
5417                    .as_ref()
5418                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5419                encoder,
5420                offset + cur_offset,
5421                depth,
5422            )?;
5423
5424            _prev_end_offset = cur_offset + envelope_size;
5425
5426            Ok(())
5427        }
5428    }
5429
5430    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Collection {
5431        #[inline(always)]
5432        fn new_empty() -> Self {
5433            Self::default()
5434        }
5435
5436        unsafe fn decode(
5437            &mut self,
5438            decoder: &mut fidl::encoding::Decoder<'_, D>,
5439            offset: usize,
5440            mut depth: fidl::encoding::Depth,
5441        ) -> fidl::Result<()> {
5442            decoder.debug_check_bounds::<Self>(offset);
5443            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5444                None => return Err(fidl::Error::NotNullable),
5445                Some(len) => len,
5446            };
5447            // Calling decoder.out_of_line_offset(0) is not allowed.
5448            if len == 0 {
5449                return Ok(());
5450            };
5451            depth.increment()?;
5452            let envelope_size = 8;
5453            let bytes_len = len * envelope_size;
5454            let offset = decoder.out_of_line_offset(bytes_len)?;
5455            // Decode the envelope for each type.
5456            let mut _next_ordinal_to_read = 0;
5457            let mut next_offset = offset;
5458            let end_offset = offset + bytes_len;
5459            _next_ordinal_to_read += 1;
5460            if next_offset >= end_offset {
5461                return Ok(());
5462            }
5463
5464            // Decode unknown envelopes for gaps in ordinals.
5465            while _next_ordinal_to_read < 1 {
5466                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5467                _next_ordinal_to_read += 1;
5468                next_offset += envelope_size;
5469            }
5470
5471            let next_out_of_line = decoder.next_out_of_line();
5472            let handles_before = decoder.remaining_handles();
5473            if let Some((inlined, num_bytes, num_handles)) =
5474                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5475            {
5476                let member_inline_size =
5477                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
5478                        decoder.context,
5479                    );
5480                if inlined != (member_inline_size <= 4) {
5481                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5482                }
5483                let inner_offset;
5484                let mut inner_depth = depth.clone();
5485                if inlined {
5486                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5487                    inner_offset = next_offset;
5488                } else {
5489                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5490                    inner_depth.increment()?;
5491                }
5492                let val_ref = self
5493                    .name
5494                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
5495                fidl::decode!(
5496                    fidl::encoding::BoundedString<100>,
5497                    D,
5498                    val_ref,
5499                    decoder,
5500                    inner_offset,
5501                    inner_depth
5502                )?;
5503                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5504                {
5505                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5506                }
5507                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5508                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5509                }
5510            }
5511
5512            next_offset += envelope_size;
5513            _next_ordinal_to_read += 1;
5514            if next_offset >= end_offset {
5515                return Ok(());
5516            }
5517
5518            // Decode unknown envelopes for gaps in ordinals.
5519            while _next_ordinal_to_read < 2 {
5520                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5521                _next_ordinal_to_read += 1;
5522                next_offset += envelope_size;
5523            }
5524
5525            let next_out_of_line = decoder.next_out_of_line();
5526            let handles_before = decoder.remaining_handles();
5527            if let Some((inlined, num_bytes, num_handles)) =
5528                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5529            {
5530                let member_inline_size =
5531                    <Durability as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5532                if inlined != (member_inline_size <= 4) {
5533                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5534                }
5535                let inner_offset;
5536                let mut inner_depth = depth.clone();
5537                if inlined {
5538                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5539                    inner_offset = next_offset;
5540                } else {
5541                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5542                    inner_depth.increment()?;
5543                }
5544                let val_ref =
5545                    self.durability.get_or_insert_with(|| fidl::new_empty!(Durability, D));
5546                fidl::decode!(Durability, D, val_ref, decoder, inner_offset, inner_depth)?;
5547                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5548                {
5549                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5550                }
5551                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5552                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5553                }
5554            }
5555
5556            next_offset += envelope_size;
5557            _next_ordinal_to_read += 1;
5558            if next_offset >= end_offset {
5559                return Ok(());
5560            }
5561
5562            // Decode unknown envelopes for gaps in ordinals.
5563            while _next_ordinal_to_read < 3 {
5564                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5565                _next_ordinal_to_read += 1;
5566                next_offset += envelope_size;
5567            }
5568
5569            let next_out_of_line = decoder.next_out_of_line();
5570            let handles_before = decoder.remaining_handles();
5571            if let Some((inlined, num_bytes, num_handles)) =
5572                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5573            {
5574                let member_inline_size =
5575                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
5576                        decoder.context,
5577                    );
5578                if inlined != (member_inline_size <= 4) {
5579                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5580                }
5581                let inner_offset;
5582                let mut inner_depth = depth.clone();
5583                if inlined {
5584                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5585                    inner_offset = next_offset;
5586                } else {
5587                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5588                    inner_depth.increment()?;
5589                }
5590                let val_ref = self
5591                    .environment
5592                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
5593                fidl::decode!(
5594                    fidl::encoding::BoundedString<100>,
5595                    D,
5596                    val_ref,
5597                    decoder,
5598                    inner_offset,
5599                    inner_depth
5600                )?;
5601                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5602                {
5603                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5604                }
5605                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5606                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5607                }
5608            }
5609
5610            next_offset += envelope_size;
5611            _next_ordinal_to_read += 1;
5612            if next_offset >= end_offset {
5613                return Ok(());
5614            }
5615
5616            // Decode unknown envelopes for gaps in ordinals.
5617            while _next_ordinal_to_read < 4 {
5618                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5619                _next_ordinal_to_read += 1;
5620                next_offset += envelope_size;
5621            }
5622
5623            let next_out_of_line = decoder.next_out_of_line();
5624            let handles_before = decoder.remaining_handles();
5625            if let Some((inlined, num_bytes, num_handles)) =
5626                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5627            {
5628                let member_inline_size =
5629                    <AllowedOffers as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5630                if inlined != (member_inline_size <= 4) {
5631                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5632                }
5633                let inner_offset;
5634                let mut inner_depth = depth.clone();
5635                if inlined {
5636                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5637                    inner_offset = next_offset;
5638                } else {
5639                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5640                    inner_depth.increment()?;
5641                }
5642                let val_ref =
5643                    self.allowed_offers.get_or_insert_with(|| fidl::new_empty!(AllowedOffers, D));
5644                fidl::decode!(AllowedOffers, D, val_ref, decoder, inner_offset, inner_depth)?;
5645                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5646                {
5647                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5648                }
5649                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5650                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5651                }
5652            }
5653
5654            next_offset += envelope_size;
5655            _next_ordinal_to_read += 1;
5656            if next_offset >= end_offset {
5657                return Ok(());
5658            }
5659
5660            // Decode unknown envelopes for gaps in ordinals.
5661            while _next_ordinal_to_read < 5 {
5662                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5663                _next_ordinal_to_read += 1;
5664                next_offset += envelope_size;
5665            }
5666
5667            let next_out_of_line = decoder.next_out_of_line();
5668            let handles_before = decoder.remaining_handles();
5669            if let Some((inlined, num_bytes, num_handles)) =
5670                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5671            {
5672                let member_inline_size =
5673                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5674                if inlined != (member_inline_size <= 4) {
5675                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5676                }
5677                let inner_offset;
5678                let mut inner_depth = depth.clone();
5679                if inlined {
5680                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5681                    inner_offset = next_offset;
5682                } else {
5683                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5684                    inner_depth.increment()?;
5685                }
5686                let val_ref =
5687                    self.allow_long_names.get_or_insert_with(|| fidl::new_empty!(bool, D));
5688                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5689                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5690                {
5691                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5692                }
5693                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5694                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5695                }
5696            }
5697
5698            next_offset += envelope_size;
5699            _next_ordinal_to_read += 1;
5700            if next_offset >= end_offset {
5701                return Ok(());
5702            }
5703
5704            // Decode unknown envelopes for gaps in ordinals.
5705            while _next_ordinal_to_read < 6 {
5706                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5707                _next_ordinal_to_read += 1;
5708                next_offset += envelope_size;
5709            }
5710
5711            let next_out_of_line = decoder.next_out_of_line();
5712            let handles_before = decoder.remaining_handles();
5713            if let Some((inlined, num_bytes, num_handles)) =
5714                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5715            {
5716                let member_inline_size =
5717                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5718                if inlined != (member_inline_size <= 4) {
5719                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5720                }
5721                let inner_offset;
5722                let mut inner_depth = depth.clone();
5723                if inlined {
5724                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5725                    inner_offset = next_offset;
5726                } else {
5727                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5728                    inner_depth.increment()?;
5729                }
5730                let val_ref =
5731                    self.persistent_storage.get_or_insert_with(|| fidl::new_empty!(bool, D));
5732                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5733                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5734                {
5735                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5736                }
5737                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5738                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5739                }
5740            }
5741
5742            next_offset += envelope_size;
5743
5744            // Decode the remaining unknown envelopes.
5745            while next_offset < end_offset {
5746                _next_ordinal_to_read += 1;
5747                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5748                next_offset += envelope_size;
5749            }
5750
5751            Ok(())
5752        }
5753    }
5754
5755    impl Component {
5756        #[inline(always)]
5757        fn max_ordinal_present(&self) -> u64 {
5758            if let Some(_) = self.debug_info {
5759                return 11;
5760            }
5761            if let Some(_) = self.config {
5762                return 10;
5763            }
5764            if let Some(_) = self.facets {
5765                return 9;
5766            }
5767            if let Some(_) = self.environments {
5768                return 8;
5769            }
5770            if let Some(_) = self.collections {
5771                return 7;
5772            }
5773            if let Some(_) = self.children {
5774                return 6;
5775            }
5776            if let Some(_) = self.capabilities {
5777                return 5;
5778            }
5779            if let Some(_) = self.offers {
5780                return 4;
5781            }
5782            if let Some(_) = self.exposes {
5783                return 3;
5784            }
5785            if let Some(_) = self.uses {
5786                return 2;
5787            }
5788            if let Some(_) = self.program {
5789                return 1;
5790            }
5791            0
5792        }
5793    }
5794
5795    impl fidl::encoding::ValueTypeMarker for Component {
5796        type Borrowed<'a> = &'a Self;
5797        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5798            value
5799        }
5800    }
5801
5802    unsafe impl fidl::encoding::TypeMarker for Component {
5803        type Owned = Self;
5804
5805        #[inline(always)]
5806        fn inline_align(_context: fidl::encoding::Context) -> usize {
5807            8
5808        }
5809
5810        #[inline(always)]
5811        fn inline_size(_context: fidl::encoding::Context) -> usize {
5812            16
5813        }
5814    }
5815
5816    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Component, D>
5817        for &Component
5818    {
5819        unsafe fn encode(
5820            self,
5821            encoder: &mut fidl::encoding::Encoder<'_, D>,
5822            offset: usize,
5823            mut depth: fidl::encoding::Depth,
5824        ) -> fidl::Result<()> {
5825            encoder.debug_check_bounds::<Component>(offset);
5826            // Vector header
5827            let max_ordinal: u64 = self.max_ordinal_present();
5828            encoder.write_num(max_ordinal, offset);
5829            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5830            // Calling encoder.out_of_line_offset(0) is not allowed.
5831            if max_ordinal == 0 {
5832                return Ok(());
5833            }
5834            depth.increment()?;
5835            let envelope_size = 8;
5836            let bytes_len = max_ordinal as usize * envelope_size;
5837            #[allow(unused_variables)]
5838            let offset = encoder.out_of_line_offset(bytes_len);
5839            let mut _prev_end_offset: usize = 0;
5840            if 1 > max_ordinal {
5841                return Ok(());
5842            }
5843
5844            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5845            // are envelope_size bytes.
5846            let cur_offset: usize = (1 - 1) * envelope_size;
5847
5848            // Zero reserved fields.
5849            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5850
5851            // Safety:
5852            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5853            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5854            //   envelope_size bytes, there is always sufficient room.
5855            fidl::encoding::encode_in_envelope_optional::<Program, D>(
5856                self.program.as_ref().map(<Program as fidl::encoding::ValueTypeMarker>::borrow),
5857                encoder,
5858                offset + cur_offset,
5859                depth,
5860            )?;
5861
5862            _prev_end_offset = cur_offset + envelope_size;
5863            if 2 > max_ordinal {
5864                return Ok(());
5865            }
5866
5867            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5868            // are envelope_size bytes.
5869            let cur_offset: usize = (2 - 1) * envelope_size;
5870
5871            // Zero reserved fields.
5872            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5873
5874            // Safety:
5875            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5876            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5877            //   envelope_size bytes, there is always sufficient room.
5878            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<Use>, D>(
5879            self.uses.as_ref().map(<fidl::encoding::UnboundedVector<Use> as fidl::encoding::ValueTypeMarker>::borrow),
5880            encoder, offset + cur_offset, depth
5881        )?;
5882
5883            _prev_end_offset = cur_offset + envelope_size;
5884            if 3 > max_ordinal {
5885                return Ok(());
5886            }
5887
5888            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5889            // are envelope_size bytes.
5890            let cur_offset: usize = (3 - 1) * envelope_size;
5891
5892            // Zero reserved fields.
5893            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5894
5895            // Safety:
5896            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5897            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5898            //   envelope_size bytes, there is always sufficient room.
5899            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<Expose>, D>(
5900            self.exposes.as_ref().map(<fidl::encoding::UnboundedVector<Expose> as fidl::encoding::ValueTypeMarker>::borrow),
5901            encoder, offset + cur_offset, depth
5902        )?;
5903
5904            _prev_end_offset = cur_offset + envelope_size;
5905            if 4 > max_ordinal {
5906                return Ok(());
5907            }
5908
5909            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5910            // are envelope_size bytes.
5911            let cur_offset: usize = (4 - 1) * envelope_size;
5912
5913            // Zero reserved fields.
5914            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5915
5916            // Safety:
5917            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5918            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5919            //   envelope_size bytes, there is always sufficient room.
5920            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<Offer>, D>(
5921            self.offers.as_ref().map(<fidl::encoding::UnboundedVector<Offer> as fidl::encoding::ValueTypeMarker>::borrow),
5922            encoder, offset + cur_offset, depth
5923        )?;
5924
5925            _prev_end_offset = cur_offset + envelope_size;
5926            if 5 > max_ordinal {
5927                return Ok(());
5928            }
5929
5930            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5931            // are envelope_size bytes.
5932            let cur_offset: usize = (5 - 1) * envelope_size;
5933
5934            // Zero reserved fields.
5935            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5936
5937            // Safety:
5938            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5939            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5940            //   envelope_size bytes, there is always sufficient room.
5941            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<Capability>, D>(
5942            self.capabilities.as_ref().map(<fidl::encoding::UnboundedVector<Capability> as fidl::encoding::ValueTypeMarker>::borrow),
5943            encoder, offset + cur_offset, depth
5944        )?;
5945
5946            _prev_end_offset = cur_offset + envelope_size;
5947            if 6 > max_ordinal {
5948                return Ok(());
5949            }
5950
5951            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5952            // are envelope_size bytes.
5953            let cur_offset: usize = (6 - 1) * envelope_size;
5954
5955            // Zero reserved fields.
5956            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5957
5958            // Safety:
5959            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5960            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5961            //   envelope_size bytes, there is always sufficient room.
5962            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<Child>, D>(
5963            self.children.as_ref().map(<fidl::encoding::UnboundedVector<Child> as fidl::encoding::ValueTypeMarker>::borrow),
5964            encoder, offset + cur_offset, depth
5965        )?;
5966
5967            _prev_end_offset = cur_offset + envelope_size;
5968            if 7 > max_ordinal {
5969                return Ok(());
5970            }
5971
5972            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5973            // are envelope_size bytes.
5974            let cur_offset: usize = (7 - 1) * envelope_size;
5975
5976            // Zero reserved fields.
5977            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5978
5979            // Safety:
5980            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5981            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5982            //   envelope_size bytes, there is always sufficient room.
5983            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<Collection>, D>(
5984            self.collections.as_ref().map(<fidl::encoding::UnboundedVector<Collection> as fidl::encoding::ValueTypeMarker>::borrow),
5985            encoder, offset + cur_offset, depth
5986        )?;
5987
5988            _prev_end_offset = cur_offset + envelope_size;
5989            if 8 > max_ordinal {
5990                return Ok(());
5991            }
5992
5993            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5994            // are envelope_size bytes.
5995            let cur_offset: usize = (8 - 1) * envelope_size;
5996
5997            // Zero reserved fields.
5998            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5999
6000            // Safety:
6001            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6002            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6003            //   envelope_size bytes, there is always sufficient room.
6004            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<Environment>, D>(
6005            self.environments.as_ref().map(<fidl::encoding::UnboundedVector<Environment> as fidl::encoding::ValueTypeMarker>::borrow),
6006            encoder, offset + cur_offset, depth
6007        )?;
6008
6009            _prev_end_offset = cur_offset + envelope_size;
6010            if 9 > max_ordinal {
6011                return Ok(());
6012            }
6013
6014            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6015            // are envelope_size bytes.
6016            let cur_offset: usize = (9 - 1) * envelope_size;
6017
6018            // Zero reserved fields.
6019            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6020
6021            // Safety:
6022            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6023            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6024            //   envelope_size bytes, there is always sufficient room.
6025            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_data__common::Dictionary, D>(
6026            self.facets.as_ref().map(<fidl_fuchsia_data__common::Dictionary as fidl::encoding::ValueTypeMarker>::borrow),
6027            encoder, offset + cur_offset, depth
6028        )?;
6029
6030            _prev_end_offset = cur_offset + envelope_size;
6031            if 10 > max_ordinal {
6032                return Ok(());
6033            }
6034
6035            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6036            // are envelope_size bytes.
6037            let cur_offset: usize = (10 - 1) * envelope_size;
6038
6039            // Zero reserved fields.
6040            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6041
6042            // Safety:
6043            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6044            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6045            //   envelope_size bytes, there is always sufficient room.
6046            fidl::encoding::encode_in_envelope_optional::<ConfigSchema, D>(
6047                self.config.as_ref().map(<ConfigSchema as fidl::encoding::ValueTypeMarker>::borrow),
6048                encoder,
6049                offset + cur_offset,
6050                depth,
6051            )?;
6052
6053            _prev_end_offset = cur_offset + envelope_size;
6054            if 11 > max_ordinal {
6055                return Ok(());
6056            }
6057
6058            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6059            // are envelope_size bytes.
6060            let cur_offset: usize = (11 - 1) * envelope_size;
6061
6062            // Zero reserved fields.
6063            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6064
6065            // Safety:
6066            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6067            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6068            //   envelope_size bytes, there is always sufficient room.
6069            fidl::encoding::encode_in_envelope_optional::<DebugInfo, D>(
6070                self.debug_info
6071                    .as_ref()
6072                    .map(<DebugInfo as fidl::encoding::ValueTypeMarker>::borrow),
6073                encoder,
6074                offset + cur_offset,
6075                depth,
6076            )?;
6077
6078            _prev_end_offset = cur_offset + envelope_size;
6079
6080            Ok(())
6081        }
6082    }
6083
6084    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Component {
6085        #[inline(always)]
6086        fn new_empty() -> Self {
6087            Self::default()
6088        }
6089
6090        unsafe fn decode(
6091            &mut self,
6092            decoder: &mut fidl::encoding::Decoder<'_, D>,
6093            offset: usize,
6094            mut depth: fidl::encoding::Depth,
6095        ) -> fidl::Result<()> {
6096            decoder.debug_check_bounds::<Self>(offset);
6097            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6098                None => return Err(fidl::Error::NotNullable),
6099                Some(len) => len,
6100            };
6101            // Calling decoder.out_of_line_offset(0) is not allowed.
6102            if len == 0 {
6103                return Ok(());
6104            };
6105            depth.increment()?;
6106            let envelope_size = 8;
6107            let bytes_len = len * envelope_size;
6108            let offset = decoder.out_of_line_offset(bytes_len)?;
6109            // Decode the envelope for each type.
6110            let mut _next_ordinal_to_read = 0;
6111            let mut next_offset = offset;
6112            let end_offset = offset + bytes_len;
6113            _next_ordinal_to_read += 1;
6114            if next_offset >= end_offset {
6115                return Ok(());
6116            }
6117
6118            // Decode unknown envelopes for gaps in ordinals.
6119            while _next_ordinal_to_read < 1 {
6120                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6121                _next_ordinal_to_read += 1;
6122                next_offset += envelope_size;
6123            }
6124
6125            let next_out_of_line = decoder.next_out_of_line();
6126            let handles_before = decoder.remaining_handles();
6127            if let Some((inlined, num_bytes, num_handles)) =
6128                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6129            {
6130                let member_inline_size =
6131                    <Program as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6132                if inlined != (member_inline_size <= 4) {
6133                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6134                }
6135                let inner_offset;
6136                let mut inner_depth = depth.clone();
6137                if inlined {
6138                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6139                    inner_offset = next_offset;
6140                } else {
6141                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6142                    inner_depth.increment()?;
6143                }
6144                let val_ref = self.program.get_or_insert_with(|| fidl::new_empty!(Program, D));
6145                fidl::decode!(Program, D, val_ref, decoder, inner_offset, inner_depth)?;
6146                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6147                {
6148                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6149                }
6150                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6151                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6152                }
6153            }
6154
6155            next_offset += envelope_size;
6156            _next_ordinal_to_read += 1;
6157            if next_offset >= end_offset {
6158                return Ok(());
6159            }
6160
6161            // Decode unknown envelopes for gaps in ordinals.
6162            while _next_ordinal_to_read < 2 {
6163                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6164                _next_ordinal_to_read += 1;
6165                next_offset += envelope_size;
6166            }
6167
6168            let next_out_of_line = decoder.next_out_of_line();
6169            let handles_before = decoder.remaining_handles();
6170            if let Some((inlined, num_bytes, num_handles)) =
6171                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6172            {
6173                let member_inline_size = <fidl::encoding::UnboundedVector<Use> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6174                if inlined != (member_inline_size <= 4) {
6175                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6176                }
6177                let inner_offset;
6178                let mut inner_depth = depth.clone();
6179                if inlined {
6180                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6181                    inner_offset = next_offset;
6182                } else {
6183                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6184                    inner_depth.increment()?;
6185                }
6186                let val_ref = self.uses.get_or_insert_with(|| {
6187                    fidl::new_empty!(fidl::encoding::UnboundedVector<Use>, D)
6188                });
6189                fidl::decode!(
6190                    fidl::encoding::UnboundedVector<Use>,
6191                    D,
6192                    val_ref,
6193                    decoder,
6194                    inner_offset,
6195                    inner_depth
6196                )?;
6197                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6198                {
6199                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6200                }
6201                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6202                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6203                }
6204            }
6205
6206            next_offset += envelope_size;
6207            _next_ordinal_to_read += 1;
6208            if next_offset >= end_offset {
6209                return Ok(());
6210            }
6211
6212            // Decode unknown envelopes for gaps in ordinals.
6213            while _next_ordinal_to_read < 3 {
6214                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6215                _next_ordinal_to_read += 1;
6216                next_offset += envelope_size;
6217            }
6218
6219            let next_out_of_line = decoder.next_out_of_line();
6220            let handles_before = decoder.remaining_handles();
6221            if let Some((inlined, num_bytes, num_handles)) =
6222                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6223            {
6224                let member_inline_size = <fidl::encoding::UnboundedVector<Expose> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6225                if inlined != (member_inline_size <= 4) {
6226                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6227                }
6228                let inner_offset;
6229                let mut inner_depth = depth.clone();
6230                if inlined {
6231                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6232                    inner_offset = next_offset;
6233                } else {
6234                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6235                    inner_depth.increment()?;
6236                }
6237                let val_ref = self.exposes.get_or_insert_with(|| {
6238                    fidl::new_empty!(fidl::encoding::UnboundedVector<Expose>, D)
6239                });
6240                fidl::decode!(
6241                    fidl::encoding::UnboundedVector<Expose>,
6242                    D,
6243                    val_ref,
6244                    decoder,
6245                    inner_offset,
6246                    inner_depth
6247                )?;
6248                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6249                {
6250                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6251                }
6252                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6253                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6254                }
6255            }
6256
6257            next_offset += envelope_size;
6258            _next_ordinal_to_read += 1;
6259            if next_offset >= end_offset {
6260                return Ok(());
6261            }
6262
6263            // Decode unknown envelopes for gaps in ordinals.
6264            while _next_ordinal_to_read < 4 {
6265                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6266                _next_ordinal_to_read += 1;
6267                next_offset += envelope_size;
6268            }
6269
6270            let next_out_of_line = decoder.next_out_of_line();
6271            let handles_before = decoder.remaining_handles();
6272            if let Some((inlined, num_bytes, num_handles)) =
6273                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6274            {
6275                let member_inline_size = <fidl::encoding::UnboundedVector<Offer> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6276                if inlined != (member_inline_size <= 4) {
6277                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6278                }
6279                let inner_offset;
6280                let mut inner_depth = depth.clone();
6281                if inlined {
6282                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6283                    inner_offset = next_offset;
6284                } else {
6285                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6286                    inner_depth.increment()?;
6287                }
6288                let val_ref = self.offers.get_or_insert_with(|| {
6289                    fidl::new_empty!(fidl::encoding::UnboundedVector<Offer>, D)
6290                });
6291                fidl::decode!(
6292                    fidl::encoding::UnboundedVector<Offer>,
6293                    D,
6294                    val_ref,
6295                    decoder,
6296                    inner_offset,
6297                    inner_depth
6298                )?;
6299                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6300                {
6301                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6302                }
6303                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6304                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6305                }
6306            }
6307
6308            next_offset += envelope_size;
6309            _next_ordinal_to_read += 1;
6310            if next_offset >= end_offset {
6311                return Ok(());
6312            }
6313
6314            // Decode unknown envelopes for gaps in ordinals.
6315            while _next_ordinal_to_read < 5 {
6316                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6317                _next_ordinal_to_read += 1;
6318                next_offset += envelope_size;
6319            }
6320
6321            let next_out_of_line = decoder.next_out_of_line();
6322            let handles_before = decoder.remaining_handles();
6323            if let Some((inlined, num_bytes, num_handles)) =
6324                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6325            {
6326                let member_inline_size = <fidl::encoding::UnboundedVector<Capability> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6327                if inlined != (member_inline_size <= 4) {
6328                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6329                }
6330                let inner_offset;
6331                let mut inner_depth = depth.clone();
6332                if inlined {
6333                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6334                    inner_offset = next_offset;
6335                } else {
6336                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6337                    inner_depth.increment()?;
6338                }
6339                let val_ref = self.capabilities.get_or_insert_with(|| {
6340                    fidl::new_empty!(fidl::encoding::UnboundedVector<Capability>, D)
6341                });
6342                fidl::decode!(
6343                    fidl::encoding::UnboundedVector<Capability>,
6344                    D,
6345                    val_ref,
6346                    decoder,
6347                    inner_offset,
6348                    inner_depth
6349                )?;
6350                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6351                {
6352                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6353                }
6354                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6355                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6356                }
6357            }
6358
6359            next_offset += envelope_size;
6360            _next_ordinal_to_read += 1;
6361            if next_offset >= end_offset {
6362                return Ok(());
6363            }
6364
6365            // Decode unknown envelopes for gaps in ordinals.
6366            while _next_ordinal_to_read < 6 {
6367                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6368                _next_ordinal_to_read += 1;
6369                next_offset += envelope_size;
6370            }
6371
6372            let next_out_of_line = decoder.next_out_of_line();
6373            let handles_before = decoder.remaining_handles();
6374            if let Some((inlined, num_bytes, num_handles)) =
6375                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6376            {
6377                let member_inline_size = <fidl::encoding::UnboundedVector<Child> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6378                if inlined != (member_inline_size <= 4) {
6379                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6380                }
6381                let inner_offset;
6382                let mut inner_depth = depth.clone();
6383                if inlined {
6384                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6385                    inner_offset = next_offset;
6386                } else {
6387                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6388                    inner_depth.increment()?;
6389                }
6390                let val_ref = self.children.get_or_insert_with(|| {
6391                    fidl::new_empty!(fidl::encoding::UnboundedVector<Child>, D)
6392                });
6393                fidl::decode!(
6394                    fidl::encoding::UnboundedVector<Child>,
6395                    D,
6396                    val_ref,
6397                    decoder,
6398                    inner_offset,
6399                    inner_depth
6400                )?;
6401                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6402                {
6403                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6404                }
6405                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6406                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6407                }
6408            }
6409
6410            next_offset += envelope_size;
6411            _next_ordinal_to_read += 1;
6412            if next_offset >= end_offset {
6413                return Ok(());
6414            }
6415
6416            // Decode unknown envelopes for gaps in ordinals.
6417            while _next_ordinal_to_read < 7 {
6418                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6419                _next_ordinal_to_read += 1;
6420                next_offset += envelope_size;
6421            }
6422
6423            let next_out_of_line = decoder.next_out_of_line();
6424            let handles_before = decoder.remaining_handles();
6425            if let Some((inlined, num_bytes, num_handles)) =
6426                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6427            {
6428                let member_inline_size = <fidl::encoding::UnboundedVector<Collection> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6429                if inlined != (member_inline_size <= 4) {
6430                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6431                }
6432                let inner_offset;
6433                let mut inner_depth = depth.clone();
6434                if inlined {
6435                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6436                    inner_offset = next_offset;
6437                } else {
6438                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6439                    inner_depth.increment()?;
6440                }
6441                let val_ref = self.collections.get_or_insert_with(|| {
6442                    fidl::new_empty!(fidl::encoding::UnboundedVector<Collection>, D)
6443                });
6444                fidl::decode!(
6445                    fidl::encoding::UnboundedVector<Collection>,
6446                    D,
6447                    val_ref,
6448                    decoder,
6449                    inner_offset,
6450                    inner_depth
6451                )?;
6452                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6453                {
6454                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6455                }
6456                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6457                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6458                }
6459            }
6460
6461            next_offset += envelope_size;
6462            _next_ordinal_to_read += 1;
6463            if next_offset >= end_offset {
6464                return Ok(());
6465            }
6466
6467            // Decode unknown envelopes for gaps in ordinals.
6468            while _next_ordinal_to_read < 8 {
6469                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6470                _next_ordinal_to_read += 1;
6471                next_offset += envelope_size;
6472            }
6473
6474            let next_out_of_line = decoder.next_out_of_line();
6475            let handles_before = decoder.remaining_handles();
6476            if let Some((inlined, num_bytes, num_handles)) =
6477                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6478            {
6479                let member_inline_size = <fidl::encoding::UnboundedVector<Environment> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6480                if inlined != (member_inline_size <= 4) {
6481                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6482                }
6483                let inner_offset;
6484                let mut inner_depth = depth.clone();
6485                if inlined {
6486                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6487                    inner_offset = next_offset;
6488                } else {
6489                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6490                    inner_depth.increment()?;
6491                }
6492                let val_ref = self.environments.get_or_insert_with(|| {
6493                    fidl::new_empty!(fidl::encoding::UnboundedVector<Environment>, D)
6494                });
6495                fidl::decode!(
6496                    fidl::encoding::UnboundedVector<Environment>,
6497                    D,
6498                    val_ref,
6499                    decoder,
6500                    inner_offset,
6501                    inner_depth
6502                )?;
6503                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6504                {
6505                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6506                }
6507                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6508                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6509                }
6510            }
6511
6512            next_offset += envelope_size;
6513            _next_ordinal_to_read += 1;
6514            if next_offset >= end_offset {
6515                return Ok(());
6516            }
6517
6518            // Decode unknown envelopes for gaps in ordinals.
6519            while _next_ordinal_to_read < 9 {
6520                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6521                _next_ordinal_to_read += 1;
6522                next_offset += envelope_size;
6523            }
6524
6525            let next_out_of_line = decoder.next_out_of_line();
6526            let handles_before = decoder.remaining_handles();
6527            if let Some((inlined, num_bytes, num_handles)) =
6528                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6529            {
6530                let member_inline_size = <fidl_fuchsia_data__common::Dictionary as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6531                if inlined != (member_inline_size <= 4) {
6532                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6533                }
6534                let inner_offset;
6535                let mut inner_depth = depth.clone();
6536                if inlined {
6537                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6538                    inner_offset = next_offset;
6539                } else {
6540                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6541                    inner_depth.increment()?;
6542                }
6543                let val_ref = self.facets.get_or_insert_with(|| {
6544                    fidl::new_empty!(fidl_fuchsia_data__common::Dictionary, D)
6545                });
6546                fidl::decode!(
6547                    fidl_fuchsia_data__common::Dictionary,
6548                    D,
6549                    val_ref,
6550                    decoder,
6551                    inner_offset,
6552                    inner_depth
6553                )?;
6554                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6555                {
6556                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6557                }
6558                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6559                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6560                }
6561            }
6562
6563            next_offset += envelope_size;
6564            _next_ordinal_to_read += 1;
6565            if next_offset >= end_offset {
6566                return Ok(());
6567            }
6568
6569            // Decode unknown envelopes for gaps in ordinals.
6570            while _next_ordinal_to_read < 10 {
6571                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6572                _next_ordinal_to_read += 1;
6573                next_offset += envelope_size;
6574            }
6575
6576            let next_out_of_line = decoder.next_out_of_line();
6577            let handles_before = decoder.remaining_handles();
6578            if let Some((inlined, num_bytes, num_handles)) =
6579                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6580            {
6581                let member_inline_size =
6582                    <ConfigSchema as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6583                if inlined != (member_inline_size <= 4) {
6584                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6585                }
6586                let inner_offset;
6587                let mut inner_depth = depth.clone();
6588                if inlined {
6589                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6590                    inner_offset = next_offset;
6591                } else {
6592                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6593                    inner_depth.increment()?;
6594                }
6595                let val_ref = self.config.get_or_insert_with(|| fidl::new_empty!(ConfigSchema, D));
6596                fidl::decode!(ConfigSchema, D, val_ref, decoder, inner_offset, inner_depth)?;
6597                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6598                {
6599                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6600                }
6601                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6602                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6603                }
6604            }
6605
6606            next_offset += envelope_size;
6607            _next_ordinal_to_read += 1;
6608            if next_offset >= end_offset {
6609                return Ok(());
6610            }
6611
6612            // Decode unknown envelopes for gaps in ordinals.
6613            while _next_ordinal_to_read < 11 {
6614                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6615                _next_ordinal_to_read += 1;
6616                next_offset += envelope_size;
6617            }
6618
6619            let next_out_of_line = decoder.next_out_of_line();
6620            let handles_before = decoder.remaining_handles();
6621            if let Some((inlined, num_bytes, num_handles)) =
6622                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6623            {
6624                let member_inline_size =
6625                    <DebugInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6626                if inlined != (member_inline_size <= 4) {
6627                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6628                }
6629                let inner_offset;
6630                let mut inner_depth = depth.clone();
6631                if inlined {
6632                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6633                    inner_offset = next_offset;
6634                } else {
6635                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6636                    inner_depth.increment()?;
6637                }
6638                let val_ref = self.debug_info.get_or_insert_with(|| fidl::new_empty!(DebugInfo, D));
6639                fidl::decode!(DebugInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
6640                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6641                {
6642                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6643                }
6644                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6645                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6646                }
6647            }
6648
6649            next_offset += envelope_size;
6650
6651            // Decode the remaining unknown envelopes.
6652            while next_offset < end_offset {
6653                _next_ordinal_to_read += 1;
6654                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6655                next_offset += envelope_size;
6656            }
6657
6658            Ok(())
6659        }
6660    }
6661
6662    impl ConfigField {
6663        #[inline(always)]
6664        fn max_ordinal_present(&self) -> u64 {
6665            if let Some(_) = self.mutability {
6666                return 3;
6667            }
6668            if let Some(_) = self.type_ {
6669                return 2;
6670            }
6671            if let Some(_) = self.key {
6672                return 1;
6673            }
6674            0
6675        }
6676    }
6677
6678    impl fidl::encoding::ValueTypeMarker for ConfigField {
6679        type Borrowed<'a> = &'a Self;
6680        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6681            value
6682        }
6683    }
6684
6685    unsafe impl fidl::encoding::TypeMarker for ConfigField {
6686        type Owned = Self;
6687
6688        #[inline(always)]
6689        fn inline_align(_context: fidl::encoding::Context) -> usize {
6690            8
6691        }
6692
6693        #[inline(always)]
6694        fn inline_size(_context: fidl::encoding::Context) -> usize {
6695            16
6696        }
6697    }
6698
6699    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ConfigField, D>
6700        for &ConfigField
6701    {
6702        unsafe fn encode(
6703            self,
6704            encoder: &mut fidl::encoding::Encoder<'_, D>,
6705            offset: usize,
6706            mut depth: fidl::encoding::Depth,
6707        ) -> fidl::Result<()> {
6708            encoder.debug_check_bounds::<ConfigField>(offset);
6709            // Vector header
6710            let max_ordinal: u64 = self.max_ordinal_present();
6711            encoder.write_num(max_ordinal, offset);
6712            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6713            // Calling encoder.out_of_line_offset(0) is not allowed.
6714            if max_ordinal == 0 {
6715                return Ok(());
6716            }
6717            depth.increment()?;
6718            let envelope_size = 8;
6719            let bytes_len = max_ordinal as usize * envelope_size;
6720            #[allow(unused_variables)]
6721            let offset = encoder.out_of_line_offset(bytes_len);
6722            let mut _prev_end_offset: usize = 0;
6723            if 1 > max_ordinal {
6724                return Ok(());
6725            }
6726
6727            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6728            // are envelope_size bytes.
6729            let cur_offset: usize = (1 - 1) * envelope_size;
6730
6731            // Zero reserved fields.
6732            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6733
6734            // Safety:
6735            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6736            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6737            //   envelope_size bytes, there is always sufficient room.
6738            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<64>, D>(
6739                self.key.as_ref().map(
6740                    <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow,
6741                ),
6742                encoder,
6743                offset + cur_offset,
6744                depth,
6745            )?;
6746
6747            _prev_end_offset = cur_offset + envelope_size;
6748            if 2 > max_ordinal {
6749                return Ok(());
6750            }
6751
6752            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6753            // are envelope_size bytes.
6754            let cur_offset: usize = (2 - 1) * envelope_size;
6755
6756            // Zero reserved fields.
6757            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6758
6759            // Safety:
6760            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6761            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6762            //   envelope_size bytes, there is always sufficient room.
6763            fidl::encoding::encode_in_envelope_optional::<ConfigType, D>(
6764                self.type_.as_ref().map(<ConfigType as fidl::encoding::ValueTypeMarker>::borrow),
6765                encoder,
6766                offset + cur_offset,
6767                depth,
6768            )?;
6769
6770            _prev_end_offset = cur_offset + envelope_size;
6771            if 3 > max_ordinal {
6772                return Ok(());
6773            }
6774
6775            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6776            // are envelope_size bytes.
6777            let cur_offset: usize = (3 - 1) * envelope_size;
6778
6779            // Zero reserved fields.
6780            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6781
6782            // Safety:
6783            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6784            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6785            //   envelope_size bytes, there is always sufficient room.
6786            fidl::encoding::encode_in_envelope_optional::<ConfigMutability, D>(
6787                self.mutability
6788                    .as_ref()
6789                    .map(<ConfigMutability as fidl::encoding::ValueTypeMarker>::borrow),
6790                encoder,
6791                offset + cur_offset,
6792                depth,
6793            )?;
6794
6795            _prev_end_offset = cur_offset + envelope_size;
6796
6797            Ok(())
6798        }
6799    }
6800
6801    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ConfigField {
6802        #[inline(always)]
6803        fn new_empty() -> Self {
6804            Self::default()
6805        }
6806
6807        unsafe fn decode(
6808            &mut self,
6809            decoder: &mut fidl::encoding::Decoder<'_, D>,
6810            offset: usize,
6811            mut depth: fidl::encoding::Depth,
6812        ) -> fidl::Result<()> {
6813            decoder.debug_check_bounds::<Self>(offset);
6814            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6815                None => return Err(fidl::Error::NotNullable),
6816                Some(len) => len,
6817            };
6818            // Calling decoder.out_of_line_offset(0) is not allowed.
6819            if len == 0 {
6820                return Ok(());
6821            };
6822            depth.increment()?;
6823            let envelope_size = 8;
6824            let bytes_len = len * envelope_size;
6825            let offset = decoder.out_of_line_offset(bytes_len)?;
6826            // Decode the envelope for each type.
6827            let mut _next_ordinal_to_read = 0;
6828            let mut next_offset = offset;
6829            let end_offset = offset + bytes_len;
6830            _next_ordinal_to_read += 1;
6831            if next_offset >= end_offset {
6832                return Ok(());
6833            }
6834
6835            // Decode unknown envelopes for gaps in ordinals.
6836            while _next_ordinal_to_read < 1 {
6837                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6838                _next_ordinal_to_read += 1;
6839                next_offset += envelope_size;
6840            }
6841
6842            let next_out_of_line = decoder.next_out_of_line();
6843            let handles_before = decoder.remaining_handles();
6844            if let Some((inlined, num_bytes, num_handles)) =
6845                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6846            {
6847                let member_inline_size =
6848                    <fidl::encoding::BoundedString<64> as fidl::encoding::TypeMarker>::inline_size(
6849                        decoder.context,
6850                    );
6851                if inlined != (member_inline_size <= 4) {
6852                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6853                }
6854                let inner_offset;
6855                let mut inner_depth = depth.clone();
6856                if inlined {
6857                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6858                    inner_offset = next_offset;
6859                } else {
6860                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6861                    inner_depth.increment()?;
6862                }
6863                let val_ref = self
6864                    .key
6865                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<64>, D));
6866                fidl::decode!(
6867                    fidl::encoding::BoundedString<64>,
6868                    D,
6869                    val_ref,
6870                    decoder,
6871                    inner_offset,
6872                    inner_depth
6873                )?;
6874                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6875                {
6876                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6877                }
6878                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6879                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6880                }
6881            }
6882
6883            next_offset += envelope_size;
6884            _next_ordinal_to_read += 1;
6885            if next_offset >= end_offset {
6886                return Ok(());
6887            }
6888
6889            // Decode unknown envelopes for gaps in ordinals.
6890            while _next_ordinal_to_read < 2 {
6891                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6892                _next_ordinal_to_read += 1;
6893                next_offset += envelope_size;
6894            }
6895
6896            let next_out_of_line = decoder.next_out_of_line();
6897            let handles_before = decoder.remaining_handles();
6898            if let Some((inlined, num_bytes, num_handles)) =
6899                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6900            {
6901                let member_inline_size =
6902                    <ConfigType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6903                if inlined != (member_inline_size <= 4) {
6904                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6905                }
6906                let inner_offset;
6907                let mut inner_depth = depth.clone();
6908                if inlined {
6909                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6910                    inner_offset = next_offset;
6911                } else {
6912                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6913                    inner_depth.increment()?;
6914                }
6915                let val_ref = self.type_.get_or_insert_with(|| fidl::new_empty!(ConfigType, D));
6916                fidl::decode!(ConfigType, D, val_ref, decoder, inner_offset, inner_depth)?;
6917                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6918                {
6919                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6920                }
6921                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6922                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6923                }
6924            }
6925
6926            next_offset += envelope_size;
6927            _next_ordinal_to_read += 1;
6928            if next_offset >= end_offset {
6929                return Ok(());
6930            }
6931
6932            // Decode unknown envelopes for gaps in ordinals.
6933            while _next_ordinal_to_read < 3 {
6934                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6935                _next_ordinal_to_read += 1;
6936                next_offset += envelope_size;
6937            }
6938
6939            let next_out_of_line = decoder.next_out_of_line();
6940            let handles_before = decoder.remaining_handles();
6941            if let Some((inlined, num_bytes, num_handles)) =
6942                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6943            {
6944                let member_inline_size =
6945                    <ConfigMutability as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6946                if inlined != (member_inline_size <= 4) {
6947                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6948                }
6949                let inner_offset;
6950                let mut inner_depth = depth.clone();
6951                if inlined {
6952                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6953                    inner_offset = next_offset;
6954                } else {
6955                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6956                    inner_depth.increment()?;
6957                }
6958                let val_ref =
6959                    self.mutability.get_or_insert_with(|| fidl::new_empty!(ConfigMutability, D));
6960                fidl::decode!(ConfigMutability, D, val_ref, decoder, inner_offset, inner_depth)?;
6961                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6962                {
6963                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6964                }
6965                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6966                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6967                }
6968            }
6969
6970            next_offset += envelope_size;
6971
6972            // Decode the remaining unknown envelopes.
6973            while next_offset < end_offset {
6974                _next_ordinal_to_read += 1;
6975                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6976                next_offset += envelope_size;
6977            }
6978
6979            Ok(())
6980        }
6981    }
6982
6983    impl ConfigOverride {
6984        #[inline(always)]
6985        fn max_ordinal_present(&self) -> u64 {
6986            if let Some(_) = self.value {
6987                return 2;
6988            }
6989            if let Some(_) = self.key {
6990                return 1;
6991            }
6992            0
6993        }
6994    }
6995
6996    impl fidl::encoding::ValueTypeMarker for ConfigOverride {
6997        type Borrowed<'a> = &'a Self;
6998        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6999            value
7000        }
7001    }
7002
7003    unsafe impl fidl::encoding::TypeMarker for ConfigOverride {
7004        type Owned = Self;
7005
7006        #[inline(always)]
7007        fn inline_align(_context: fidl::encoding::Context) -> usize {
7008            8
7009        }
7010
7011        #[inline(always)]
7012        fn inline_size(_context: fidl::encoding::Context) -> usize {
7013            16
7014        }
7015    }
7016
7017    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ConfigOverride, D>
7018        for &ConfigOverride
7019    {
7020        unsafe fn encode(
7021            self,
7022            encoder: &mut fidl::encoding::Encoder<'_, D>,
7023            offset: usize,
7024            mut depth: fidl::encoding::Depth,
7025        ) -> fidl::Result<()> {
7026            encoder.debug_check_bounds::<ConfigOverride>(offset);
7027            // Vector header
7028            let max_ordinal: u64 = self.max_ordinal_present();
7029            encoder.write_num(max_ordinal, offset);
7030            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7031            // Calling encoder.out_of_line_offset(0) is not allowed.
7032            if max_ordinal == 0 {
7033                return Ok(());
7034            }
7035            depth.increment()?;
7036            let envelope_size = 8;
7037            let bytes_len = max_ordinal as usize * envelope_size;
7038            #[allow(unused_variables)]
7039            let offset = encoder.out_of_line_offset(bytes_len);
7040            let mut _prev_end_offset: usize = 0;
7041            if 1 > max_ordinal {
7042                return Ok(());
7043            }
7044
7045            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7046            // are envelope_size bytes.
7047            let cur_offset: usize = (1 - 1) * envelope_size;
7048
7049            // Zero reserved fields.
7050            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7051
7052            // Safety:
7053            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7054            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7055            //   envelope_size bytes, there is always sufficient room.
7056            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<64>, D>(
7057                self.key.as_ref().map(
7058                    <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow,
7059                ),
7060                encoder,
7061                offset + cur_offset,
7062                depth,
7063            )?;
7064
7065            _prev_end_offset = cur_offset + envelope_size;
7066            if 2 > max_ordinal {
7067                return Ok(());
7068            }
7069
7070            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7071            // are envelope_size bytes.
7072            let cur_offset: usize = (2 - 1) * envelope_size;
7073
7074            // Zero reserved fields.
7075            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7076
7077            // Safety:
7078            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7079            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7080            //   envelope_size bytes, there is always sufficient room.
7081            fidl::encoding::encode_in_envelope_optional::<ConfigValue, D>(
7082                self.value.as_ref().map(<ConfigValue as fidl::encoding::ValueTypeMarker>::borrow),
7083                encoder,
7084                offset + cur_offset,
7085                depth,
7086            )?;
7087
7088            _prev_end_offset = cur_offset + envelope_size;
7089
7090            Ok(())
7091        }
7092    }
7093
7094    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ConfigOverride {
7095        #[inline(always)]
7096        fn new_empty() -> Self {
7097            Self::default()
7098        }
7099
7100        unsafe fn decode(
7101            &mut self,
7102            decoder: &mut fidl::encoding::Decoder<'_, D>,
7103            offset: usize,
7104            mut depth: fidl::encoding::Depth,
7105        ) -> fidl::Result<()> {
7106            decoder.debug_check_bounds::<Self>(offset);
7107            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7108                None => return Err(fidl::Error::NotNullable),
7109                Some(len) => len,
7110            };
7111            // Calling decoder.out_of_line_offset(0) is not allowed.
7112            if len == 0 {
7113                return Ok(());
7114            };
7115            depth.increment()?;
7116            let envelope_size = 8;
7117            let bytes_len = len * envelope_size;
7118            let offset = decoder.out_of_line_offset(bytes_len)?;
7119            // Decode the envelope for each type.
7120            let mut _next_ordinal_to_read = 0;
7121            let mut next_offset = offset;
7122            let end_offset = offset + bytes_len;
7123            _next_ordinal_to_read += 1;
7124            if next_offset >= end_offset {
7125                return Ok(());
7126            }
7127
7128            // Decode unknown envelopes for gaps in ordinals.
7129            while _next_ordinal_to_read < 1 {
7130                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7131                _next_ordinal_to_read += 1;
7132                next_offset += envelope_size;
7133            }
7134
7135            let next_out_of_line = decoder.next_out_of_line();
7136            let handles_before = decoder.remaining_handles();
7137            if let Some((inlined, num_bytes, num_handles)) =
7138                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7139            {
7140                let member_inline_size =
7141                    <fidl::encoding::BoundedString<64> as fidl::encoding::TypeMarker>::inline_size(
7142                        decoder.context,
7143                    );
7144                if inlined != (member_inline_size <= 4) {
7145                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7146                }
7147                let inner_offset;
7148                let mut inner_depth = depth.clone();
7149                if inlined {
7150                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7151                    inner_offset = next_offset;
7152                } else {
7153                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7154                    inner_depth.increment()?;
7155                }
7156                let val_ref = self
7157                    .key
7158                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<64>, D));
7159                fidl::decode!(
7160                    fidl::encoding::BoundedString<64>,
7161                    D,
7162                    val_ref,
7163                    decoder,
7164                    inner_offset,
7165                    inner_depth
7166                )?;
7167                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7168                {
7169                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7170                }
7171                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7172                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7173                }
7174            }
7175
7176            next_offset += envelope_size;
7177            _next_ordinal_to_read += 1;
7178            if next_offset >= end_offset {
7179                return Ok(());
7180            }
7181
7182            // Decode unknown envelopes for gaps in ordinals.
7183            while _next_ordinal_to_read < 2 {
7184                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7185                _next_ordinal_to_read += 1;
7186                next_offset += envelope_size;
7187            }
7188
7189            let next_out_of_line = decoder.next_out_of_line();
7190            let handles_before = decoder.remaining_handles();
7191            if let Some((inlined, num_bytes, num_handles)) =
7192                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7193            {
7194                let member_inline_size =
7195                    <ConfigValue as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7196                if inlined != (member_inline_size <= 4) {
7197                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7198                }
7199                let inner_offset;
7200                let mut inner_depth = depth.clone();
7201                if inlined {
7202                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7203                    inner_offset = next_offset;
7204                } else {
7205                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7206                    inner_depth.increment()?;
7207                }
7208                let val_ref = self.value.get_or_insert_with(|| fidl::new_empty!(ConfigValue, D));
7209                fidl::decode!(ConfigValue, D, val_ref, decoder, inner_offset, inner_depth)?;
7210                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7211                {
7212                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7213                }
7214                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7215                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7216                }
7217            }
7218
7219            next_offset += envelope_size;
7220
7221            // Decode the remaining unknown envelopes.
7222            while next_offset < end_offset {
7223                _next_ordinal_to_read += 1;
7224                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7225                next_offset += envelope_size;
7226            }
7227
7228            Ok(())
7229        }
7230    }
7231
7232    impl ConfigSchema {
7233        #[inline(always)]
7234        fn max_ordinal_present(&self) -> u64 {
7235            if let Some(_) = self.value_source {
7236                return 3;
7237            }
7238            if let Some(_) = self.checksum {
7239                return 2;
7240            }
7241            if let Some(_) = self.fields {
7242                return 1;
7243            }
7244            0
7245        }
7246    }
7247
7248    impl fidl::encoding::ValueTypeMarker for ConfigSchema {
7249        type Borrowed<'a> = &'a Self;
7250        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7251            value
7252        }
7253    }
7254
7255    unsafe impl fidl::encoding::TypeMarker for ConfigSchema {
7256        type Owned = Self;
7257
7258        #[inline(always)]
7259        fn inline_align(_context: fidl::encoding::Context) -> usize {
7260            8
7261        }
7262
7263        #[inline(always)]
7264        fn inline_size(_context: fidl::encoding::Context) -> usize {
7265            16
7266        }
7267    }
7268
7269    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ConfigSchema, D>
7270        for &ConfigSchema
7271    {
7272        unsafe fn encode(
7273            self,
7274            encoder: &mut fidl::encoding::Encoder<'_, D>,
7275            offset: usize,
7276            mut depth: fidl::encoding::Depth,
7277        ) -> fidl::Result<()> {
7278            encoder.debug_check_bounds::<ConfigSchema>(offset);
7279            // Vector header
7280            let max_ordinal: u64 = self.max_ordinal_present();
7281            encoder.write_num(max_ordinal, offset);
7282            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7283            // Calling encoder.out_of_line_offset(0) is not allowed.
7284            if max_ordinal == 0 {
7285                return Ok(());
7286            }
7287            depth.increment()?;
7288            let envelope_size = 8;
7289            let bytes_len = max_ordinal as usize * envelope_size;
7290            #[allow(unused_variables)]
7291            let offset = encoder.out_of_line_offset(bytes_len);
7292            let mut _prev_end_offset: usize = 0;
7293            if 1 > max_ordinal {
7294                return Ok(());
7295            }
7296
7297            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7298            // are envelope_size bytes.
7299            let cur_offset: usize = (1 - 1) * envelope_size;
7300
7301            // Zero reserved fields.
7302            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7303
7304            // Safety:
7305            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7306            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7307            //   envelope_size bytes, there is always sufficient room.
7308            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<ConfigField>, D>(
7309            self.fields.as_ref().map(<fidl::encoding::UnboundedVector<ConfigField> as fidl::encoding::ValueTypeMarker>::borrow),
7310            encoder, offset + cur_offset, depth
7311        )?;
7312
7313            _prev_end_offset = cur_offset + envelope_size;
7314            if 2 > max_ordinal {
7315                return Ok(());
7316            }
7317
7318            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7319            // are envelope_size bytes.
7320            let cur_offset: usize = (2 - 1) * envelope_size;
7321
7322            // Zero reserved fields.
7323            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7324
7325            // Safety:
7326            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7327            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7328            //   envelope_size bytes, there is always sufficient room.
7329            fidl::encoding::encode_in_envelope_optional::<ConfigChecksum, D>(
7330                self.checksum
7331                    .as_ref()
7332                    .map(<ConfigChecksum as fidl::encoding::ValueTypeMarker>::borrow),
7333                encoder,
7334                offset + cur_offset,
7335                depth,
7336            )?;
7337
7338            _prev_end_offset = cur_offset + envelope_size;
7339            if 3 > max_ordinal {
7340                return Ok(());
7341            }
7342
7343            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7344            // are envelope_size bytes.
7345            let cur_offset: usize = (3 - 1) * envelope_size;
7346
7347            // Zero reserved fields.
7348            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7349
7350            // Safety:
7351            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7352            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7353            //   envelope_size bytes, there is always sufficient room.
7354            fidl::encoding::encode_in_envelope_optional::<ConfigValueSource, D>(
7355                self.value_source
7356                    .as_ref()
7357                    .map(<ConfigValueSource as fidl::encoding::ValueTypeMarker>::borrow),
7358                encoder,
7359                offset + cur_offset,
7360                depth,
7361            )?;
7362
7363            _prev_end_offset = cur_offset + envelope_size;
7364
7365            Ok(())
7366        }
7367    }
7368
7369    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ConfigSchema {
7370        #[inline(always)]
7371        fn new_empty() -> Self {
7372            Self::default()
7373        }
7374
7375        unsafe fn decode(
7376            &mut self,
7377            decoder: &mut fidl::encoding::Decoder<'_, D>,
7378            offset: usize,
7379            mut depth: fidl::encoding::Depth,
7380        ) -> fidl::Result<()> {
7381            decoder.debug_check_bounds::<Self>(offset);
7382            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7383                None => return Err(fidl::Error::NotNullable),
7384                Some(len) => len,
7385            };
7386            // Calling decoder.out_of_line_offset(0) is not allowed.
7387            if len == 0 {
7388                return Ok(());
7389            };
7390            depth.increment()?;
7391            let envelope_size = 8;
7392            let bytes_len = len * envelope_size;
7393            let offset = decoder.out_of_line_offset(bytes_len)?;
7394            // Decode the envelope for each type.
7395            let mut _next_ordinal_to_read = 0;
7396            let mut next_offset = offset;
7397            let end_offset = offset + bytes_len;
7398            _next_ordinal_to_read += 1;
7399            if next_offset >= end_offset {
7400                return Ok(());
7401            }
7402
7403            // Decode unknown envelopes for gaps in ordinals.
7404            while _next_ordinal_to_read < 1 {
7405                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7406                _next_ordinal_to_read += 1;
7407                next_offset += envelope_size;
7408            }
7409
7410            let next_out_of_line = decoder.next_out_of_line();
7411            let handles_before = decoder.remaining_handles();
7412            if let Some((inlined, num_bytes, num_handles)) =
7413                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7414            {
7415                let member_inline_size = <fidl::encoding::UnboundedVector<ConfigField> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7416                if inlined != (member_inline_size <= 4) {
7417                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7418                }
7419                let inner_offset;
7420                let mut inner_depth = depth.clone();
7421                if inlined {
7422                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7423                    inner_offset = next_offset;
7424                } else {
7425                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7426                    inner_depth.increment()?;
7427                }
7428                let val_ref = self.fields.get_or_insert_with(|| {
7429                    fidl::new_empty!(fidl::encoding::UnboundedVector<ConfigField>, D)
7430                });
7431                fidl::decode!(
7432                    fidl::encoding::UnboundedVector<ConfigField>,
7433                    D,
7434                    val_ref,
7435                    decoder,
7436                    inner_offset,
7437                    inner_depth
7438                )?;
7439                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7440                {
7441                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7442                }
7443                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7444                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7445                }
7446            }
7447
7448            next_offset += envelope_size;
7449            _next_ordinal_to_read += 1;
7450            if next_offset >= end_offset {
7451                return Ok(());
7452            }
7453
7454            // Decode unknown envelopes for gaps in ordinals.
7455            while _next_ordinal_to_read < 2 {
7456                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7457                _next_ordinal_to_read += 1;
7458                next_offset += envelope_size;
7459            }
7460
7461            let next_out_of_line = decoder.next_out_of_line();
7462            let handles_before = decoder.remaining_handles();
7463            if let Some((inlined, num_bytes, num_handles)) =
7464                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7465            {
7466                let member_inline_size =
7467                    <ConfigChecksum as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7468                if inlined != (member_inline_size <= 4) {
7469                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7470                }
7471                let inner_offset;
7472                let mut inner_depth = depth.clone();
7473                if inlined {
7474                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7475                    inner_offset = next_offset;
7476                } else {
7477                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7478                    inner_depth.increment()?;
7479                }
7480                let val_ref =
7481                    self.checksum.get_or_insert_with(|| fidl::new_empty!(ConfigChecksum, D));
7482                fidl::decode!(ConfigChecksum, D, val_ref, decoder, inner_offset, inner_depth)?;
7483                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7484                {
7485                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7486                }
7487                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7488                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7489                }
7490            }
7491
7492            next_offset += envelope_size;
7493            _next_ordinal_to_read += 1;
7494            if next_offset >= end_offset {
7495                return Ok(());
7496            }
7497
7498            // Decode unknown envelopes for gaps in ordinals.
7499            while _next_ordinal_to_read < 3 {
7500                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7501                _next_ordinal_to_read += 1;
7502                next_offset += envelope_size;
7503            }
7504
7505            let next_out_of_line = decoder.next_out_of_line();
7506            let handles_before = decoder.remaining_handles();
7507            if let Some((inlined, num_bytes, num_handles)) =
7508                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7509            {
7510                let member_inline_size =
7511                    <ConfigValueSource as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7512                if inlined != (member_inline_size <= 4) {
7513                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7514                }
7515                let inner_offset;
7516                let mut inner_depth = depth.clone();
7517                if inlined {
7518                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7519                    inner_offset = next_offset;
7520                } else {
7521                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7522                    inner_depth.increment()?;
7523                }
7524                let val_ref =
7525                    self.value_source.get_or_insert_with(|| fidl::new_empty!(ConfigValueSource, D));
7526                fidl::decode!(ConfigValueSource, D, val_ref, decoder, inner_offset, inner_depth)?;
7527                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7528                {
7529                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7530                }
7531                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7532                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7533                }
7534            }
7535
7536            next_offset += envelope_size;
7537
7538            // Decode the remaining unknown envelopes.
7539            while next_offset < end_offset {
7540                _next_ordinal_to_read += 1;
7541                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7542                next_offset += envelope_size;
7543            }
7544
7545            Ok(())
7546        }
7547    }
7548
7549    impl ConfigSourceCapabilities {
7550        #[inline(always)]
7551        fn max_ordinal_present(&self) -> u64 {
7552            0
7553        }
7554    }
7555
7556    impl fidl::encoding::ValueTypeMarker for ConfigSourceCapabilities {
7557        type Borrowed<'a> = &'a Self;
7558        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7559            value
7560        }
7561    }
7562
7563    unsafe impl fidl::encoding::TypeMarker for ConfigSourceCapabilities {
7564        type Owned = Self;
7565
7566        #[inline(always)]
7567        fn inline_align(_context: fidl::encoding::Context) -> usize {
7568            8
7569        }
7570
7571        #[inline(always)]
7572        fn inline_size(_context: fidl::encoding::Context) -> usize {
7573            16
7574        }
7575    }
7576
7577    unsafe impl<D: fidl::encoding::ResourceDialect>
7578        fidl::encoding::Encode<ConfigSourceCapabilities, D> for &ConfigSourceCapabilities
7579    {
7580        unsafe fn encode(
7581            self,
7582            encoder: &mut fidl::encoding::Encoder<'_, D>,
7583            offset: usize,
7584            mut depth: fidl::encoding::Depth,
7585        ) -> fidl::Result<()> {
7586            encoder.debug_check_bounds::<ConfigSourceCapabilities>(offset);
7587            // Vector header
7588            let max_ordinal: u64 = self.max_ordinal_present();
7589            encoder.write_num(max_ordinal, offset);
7590            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7591            // Calling encoder.out_of_line_offset(0) is not allowed.
7592            if max_ordinal == 0 {
7593                return Ok(());
7594            }
7595            depth.increment()?;
7596            let envelope_size = 8;
7597            let bytes_len = max_ordinal as usize * envelope_size;
7598            #[allow(unused_variables)]
7599            let offset = encoder.out_of_line_offset(bytes_len);
7600            let mut _prev_end_offset: usize = 0;
7601
7602            Ok(())
7603        }
7604    }
7605
7606    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7607        for ConfigSourceCapabilities
7608    {
7609        #[inline(always)]
7610        fn new_empty() -> Self {
7611            Self::default()
7612        }
7613
7614        unsafe fn decode(
7615            &mut self,
7616            decoder: &mut fidl::encoding::Decoder<'_, D>,
7617            offset: usize,
7618            mut depth: fidl::encoding::Depth,
7619        ) -> fidl::Result<()> {
7620            decoder.debug_check_bounds::<Self>(offset);
7621            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7622                None => return Err(fidl::Error::NotNullable),
7623                Some(len) => len,
7624            };
7625            // Calling decoder.out_of_line_offset(0) is not allowed.
7626            if len == 0 {
7627                return Ok(());
7628            };
7629            depth.increment()?;
7630            let envelope_size = 8;
7631            let bytes_len = len * envelope_size;
7632            let offset = decoder.out_of_line_offset(bytes_len)?;
7633            // Decode the envelope for each type.
7634            let mut _next_ordinal_to_read = 0;
7635            let mut next_offset = offset;
7636            let end_offset = offset + bytes_len;
7637
7638            // Decode the remaining unknown envelopes.
7639            while next_offset < end_offset {
7640                _next_ordinal_to_read += 1;
7641                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7642                next_offset += envelope_size;
7643            }
7644
7645            Ok(())
7646        }
7647    }
7648
7649    impl ConfigValueSpec {
7650        #[inline(always)]
7651        fn max_ordinal_present(&self) -> u64 {
7652            if let Some(_) = self.value {
7653                return 1;
7654            }
7655            0
7656        }
7657    }
7658
7659    impl fidl::encoding::ValueTypeMarker for ConfigValueSpec {
7660        type Borrowed<'a> = &'a Self;
7661        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7662            value
7663        }
7664    }
7665
7666    unsafe impl fidl::encoding::TypeMarker for ConfigValueSpec {
7667        type Owned = Self;
7668
7669        #[inline(always)]
7670        fn inline_align(_context: fidl::encoding::Context) -> usize {
7671            8
7672        }
7673
7674        #[inline(always)]
7675        fn inline_size(_context: fidl::encoding::Context) -> usize {
7676            16
7677        }
7678    }
7679
7680    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ConfigValueSpec, D>
7681        for &ConfigValueSpec
7682    {
7683        unsafe fn encode(
7684            self,
7685            encoder: &mut fidl::encoding::Encoder<'_, D>,
7686            offset: usize,
7687            mut depth: fidl::encoding::Depth,
7688        ) -> fidl::Result<()> {
7689            encoder.debug_check_bounds::<ConfigValueSpec>(offset);
7690            // Vector header
7691            let max_ordinal: u64 = self.max_ordinal_present();
7692            encoder.write_num(max_ordinal, offset);
7693            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7694            // Calling encoder.out_of_line_offset(0) is not allowed.
7695            if max_ordinal == 0 {
7696                return Ok(());
7697            }
7698            depth.increment()?;
7699            let envelope_size = 8;
7700            let bytes_len = max_ordinal as usize * envelope_size;
7701            #[allow(unused_variables)]
7702            let offset = encoder.out_of_line_offset(bytes_len);
7703            let mut _prev_end_offset: usize = 0;
7704            if 1 > max_ordinal {
7705                return Ok(());
7706            }
7707
7708            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7709            // are envelope_size bytes.
7710            let cur_offset: usize = (1 - 1) * envelope_size;
7711
7712            // Zero reserved fields.
7713            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7714
7715            // Safety:
7716            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7717            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7718            //   envelope_size bytes, there is always sufficient room.
7719            fidl::encoding::encode_in_envelope_optional::<ConfigValue, D>(
7720                self.value.as_ref().map(<ConfigValue as fidl::encoding::ValueTypeMarker>::borrow),
7721                encoder,
7722                offset + cur_offset,
7723                depth,
7724            )?;
7725
7726            _prev_end_offset = cur_offset + envelope_size;
7727
7728            Ok(())
7729        }
7730    }
7731
7732    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ConfigValueSpec {
7733        #[inline(always)]
7734        fn new_empty() -> Self {
7735            Self::default()
7736        }
7737
7738        unsafe fn decode(
7739            &mut self,
7740            decoder: &mut fidl::encoding::Decoder<'_, D>,
7741            offset: usize,
7742            mut depth: fidl::encoding::Depth,
7743        ) -> fidl::Result<()> {
7744            decoder.debug_check_bounds::<Self>(offset);
7745            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7746                None => return Err(fidl::Error::NotNullable),
7747                Some(len) => len,
7748            };
7749            // Calling decoder.out_of_line_offset(0) is not allowed.
7750            if len == 0 {
7751                return Ok(());
7752            };
7753            depth.increment()?;
7754            let envelope_size = 8;
7755            let bytes_len = len * envelope_size;
7756            let offset = decoder.out_of_line_offset(bytes_len)?;
7757            // Decode the envelope for each type.
7758            let mut _next_ordinal_to_read = 0;
7759            let mut next_offset = offset;
7760            let end_offset = offset + bytes_len;
7761            _next_ordinal_to_read += 1;
7762            if next_offset >= end_offset {
7763                return Ok(());
7764            }
7765
7766            // Decode unknown envelopes for gaps in ordinals.
7767            while _next_ordinal_to_read < 1 {
7768                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7769                _next_ordinal_to_read += 1;
7770                next_offset += envelope_size;
7771            }
7772
7773            let next_out_of_line = decoder.next_out_of_line();
7774            let handles_before = decoder.remaining_handles();
7775            if let Some((inlined, num_bytes, num_handles)) =
7776                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7777            {
7778                let member_inline_size =
7779                    <ConfigValue as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7780                if inlined != (member_inline_size <= 4) {
7781                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7782                }
7783                let inner_offset;
7784                let mut inner_depth = depth.clone();
7785                if inlined {
7786                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7787                    inner_offset = next_offset;
7788                } else {
7789                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7790                    inner_depth.increment()?;
7791                }
7792                let val_ref = self.value.get_or_insert_with(|| fidl::new_empty!(ConfigValue, D));
7793                fidl::decode!(ConfigValue, D, val_ref, decoder, inner_offset, inner_depth)?;
7794                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7795                {
7796                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7797                }
7798                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7799                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7800                }
7801            }
7802
7803            next_offset += envelope_size;
7804
7805            // Decode the remaining unknown envelopes.
7806            while next_offset < end_offset {
7807                _next_ordinal_to_read += 1;
7808                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7809                next_offset += envelope_size;
7810            }
7811
7812            Ok(())
7813        }
7814    }
7815
7816    impl ConfigValuesData {
7817        #[inline(always)]
7818        fn max_ordinal_present(&self) -> u64 {
7819            if let Some(_) = self.checksum {
7820                return 2;
7821            }
7822            if let Some(_) = self.values {
7823                return 1;
7824            }
7825            0
7826        }
7827    }
7828
7829    impl fidl::encoding::ValueTypeMarker for ConfigValuesData {
7830        type Borrowed<'a> = &'a Self;
7831        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7832            value
7833        }
7834    }
7835
7836    unsafe impl fidl::encoding::TypeMarker for ConfigValuesData {
7837        type Owned = Self;
7838
7839        #[inline(always)]
7840        fn inline_align(_context: fidl::encoding::Context) -> usize {
7841            8
7842        }
7843
7844        #[inline(always)]
7845        fn inline_size(_context: fidl::encoding::Context) -> usize {
7846            16
7847        }
7848    }
7849
7850    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ConfigValuesData, D>
7851        for &ConfigValuesData
7852    {
7853        unsafe fn encode(
7854            self,
7855            encoder: &mut fidl::encoding::Encoder<'_, D>,
7856            offset: usize,
7857            mut depth: fidl::encoding::Depth,
7858        ) -> fidl::Result<()> {
7859            encoder.debug_check_bounds::<ConfigValuesData>(offset);
7860            // Vector header
7861            let max_ordinal: u64 = self.max_ordinal_present();
7862            encoder.write_num(max_ordinal, offset);
7863            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7864            // Calling encoder.out_of_line_offset(0) is not allowed.
7865            if max_ordinal == 0 {
7866                return Ok(());
7867            }
7868            depth.increment()?;
7869            let envelope_size = 8;
7870            let bytes_len = max_ordinal as usize * envelope_size;
7871            #[allow(unused_variables)]
7872            let offset = encoder.out_of_line_offset(bytes_len);
7873            let mut _prev_end_offset: usize = 0;
7874            if 1 > max_ordinal {
7875                return Ok(());
7876            }
7877
7878            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7879            // are envelope_size bytes.
7880            let cur_offset: usize = (1 - 1) * envelope_size;
7881
7882            // Zero reserved fields.
7883            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7884
7885            // Safety:
7886            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7887            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7888            //   envelope_size bytes, there is always sufficient room.
7889            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<ConfigValueSpec>, D>(
7890            self.values.as_ref().map(<fidl::encoding::UnboundedVector<ConfigValueSpec> as fidl::encoding::ValueTypeMarker>::borrow),
7891            encoder, offset + cur_offset, depth
7892        )?;
7893
7894            _prev_end_offset = cur_offset + envelope_size;
7895            if 2 > max_ordinal {
7896                return Ok(());
7897            }
7898
7899            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7900            // are envelope_size bytes.
7901            let cur_offset: usize = (2 - 1) * envelope_size;
7902
7903            // Zero reserved fields.
7904            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7905
7906            // Safety:
7907            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7908            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7909            //   envelope_size bytes, there is always sufficient room.
7910            fidl::encoding::encode_in_envelope_optional::<ConfigChecksum, D>(
7911                self.checksum
7912                    .as_ref()
7913                    .map(<ConfigChecksum as fidl::encoding::ValueTypeMarker>::borrow),
7914                encoder,
7915                offset + cur_offset,
7916                depth,
7917            )?;
7918
7919            _prev_end_offset = cur_offset + envelope_size;
7920
7921            Ok(())
7922        }
7923    }
7924
7925    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ConfigValuesData {
7926        #[inline(always)]
7927        fn new_empty() -> Self {
7928            Self::default()
7929        }
7930
7931        unsafe fn decode(
7932            &mut self,
7933            decoder: &mut fidl::encoding::Decoder<'_, D>,
7934            offset: usize,
7935            mut depth: fidl::encoding::Depth,
7936        ) -> fidl::Result<()> {
7937            decoder.debug_check_bounds::<Self>(offset);
7938            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7939                None => return Err(fidl::Error::NotNullable),
7940                Some(len) => len,
7941            };
7942            // Calling decoder.out_of_line_offset(0) is not allowed.
7943            if len == 0 {
7944                return Ok(());
7945            };
7946            depth.increment()?;
7947            let envelope_size = 8;
7948            let bytes_len = len * envelope_size;
7949            let offset = decoder.out_of_line_offset(bytes_len)?;
7950            // Decode the envelope for each type.
7951            let mut _next_ordinal_to_read = 0;
7952            let mut next_offset = offset;
7953            let end_offset = offset + bytes_len;
7954            _next_ordinal_to_read += 1;
7955            if next_offset >= end_offset {
7956                return Ok(());
7957            }
7958
7959            // Decode unknown envelopes for gaps in ordinals.
7960            while _next_ordinal_to_read < 1 {
7961                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7962                _next_ordinal_to_read += 1;
7963                next_offset += envelope_size;
7964            }
7965
7966            let next_out_of_line = decoder.next_out_of_line();
7967            let handles_before = decoder.remaining_handles();
7968            if let Some((inlined, num_bytes, num_handles)) =
7969                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7970            {
7971                let member_inline_size = <fidl::encoding::UnboundedVector<ConfigValueSpec> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7972                if inlined != (member_inline_size <= 4) {
7973                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7974                }
7975                let inner_offset;
7976                let mut inner_depth = depth.clone();
7977                if inlined {
7978                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7979                    inner_offset = next_offset;
7980                } else {
7981                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7982                    inner_depth.increment()?;
7983                }
7984                let val_ref = self.values.get_or_insert_with(|| {
7985                    fidl::new_empty!(fidl::encoding::UnboundedVector<ConfigValueSpec>, D)
7986                });
7987                fidl::decode!(
7988                    fidl::encoding::UnboundedVector<ConfigValueSpec>,
7989                    D,
7990                    val_ref,
7991                    decoder,
7992                    inner_offset,
7993                    inner_depth
7994                )?;
7995                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7996                {
7997                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7998                }
7999                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8000                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8001                }
8002            }
8003
8004            next_offset += envelope_size;
8005            _next_ordinal_to_read += 1;
8006            if next_offset >= end_offset {
8007                return Ok(());
8008            }
8009
8010            // Decode unknown envelopes for gaps in ordinals.
8011            while _next_ordinal_to_read < 2 {
8012                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8013                _next_ordinal_to_read += 1;
8014                next_offset += envelope_size;
8015            }
8016
8017            let next_out_of_line = decoder.next_out_of_line();
8018            let handles_before = decoder.remaining_handles();
8019            if let Some((inlined, num_bytes, num_handles)) =
8020                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8021            {
8022                let member_inline_size =
8023                    <ConfigChecksum as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8024                if inlined != (member_inline_size <= 4) {
8025                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8026                }
8027                let inner_offset;
8028                let mut inner_depth = depth.clone();
8029                if inlined {
8030                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8031                    inner_offset = next_offset;
8032                } else {
8033                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8034                    inner_depth.increment()?;
8035                }
8036                let val_ref =
8037                    self.checksum.get_or_insert_with(|| fidl::new_empty!(ConfigChecksum, D));
8038                fidl::decode!(ConfigChecksum, D, val_ref, decoder, inner_offset, inner_depth)?;
8039                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8040                {
8041                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8042                }
8043                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8044                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8045                }
8046            }
8047
8048            next_offset += envelope_size;
8049
8050            // Decode the remaining unknown envelopes.
8051            while next_offset < end_offset {
8052                _next_ordinal_to_read += 1;
8053                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8054                next_offset += envelope_size;
8055            }
8056
8057            Ok(())
8058        }
8059    }
8060
8061    impl Configuration {
8062        #[inline(always)]
8063        fn max_ordinal_present(&self) -> u64 {
8064            if let Some(_) = self.value {
8065                return 2;
8066            }
8067            if let Some(_) = self.name {
8068                return 1;
8069            }
8070            0
8071        }
8072    }
8073
8074    impl fidl::encoding::ValueTypeMarker for Configuration {
8075        type Borrowed<'a> = &'a Self;
8076        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8077            value
8078        }
8079    }
8080
8081    unsafe impl fidl::encoding::TypeMarker for Configuration {
8082        type Owned = Self;
8083
8084        #[inline(always)]
8085        fn inline_align(_context: fidl::encoding::Context) -> usize {
8086            8
8087        }
8088
8089        #[inline(always)]
8090        fn inline_size(_context: fidl::encoding::Context) -> usize {
8091            16
8092        }
8093    }
8094
8095    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Configuration, D>
8096        for &Configuration
8097    {
8098        unsafe fn encode(
8099            self,
8100            encoder: &mut fidl::encoding::Encoder<'_, D>,
8101            offset: usize,
8102            mut depth: fidl::encoding::Depth,
8103        ) -> fidl::Result<()> {
8104            encoder.debug_check_bounds::<Configuration>(offset);
8105            // Vector header
8106            let max_ordinal: u64 = self.max_ordinal_present();
8107            encoder.write_num(max_ordinal, offset);
8108            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8109            // Calling encoder.out_of_line_offset(0) is not allowed.
8110            if max_ordinal == 0 {
8111                return Ok(());
8112            }
8113            depth.increment()?;
8114            let envelope_size = 8;
8115            let bytes_len = max_ordinal as usize * envelope_size;
8116            #[allow(unused_variables)]
8117            let offset = encoder.out_of_line_offset(bytes_len);
8118            let mut _prev_end_offset: usize = 0;
8119            if 1 > max_ordinal {
8120                return Ok(());
8121            }
8122
8123            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8124            // are envelope_size bytes.
8125            let cur_offset: usize = (1 - 1) * envelope_size;
8126
8127            // Zero reserved fields.
8128            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8129
8130            // Safety:
8131            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8132            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8133            //   envelope_size bytes, there is always sufficient room.
8134            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
8135                self.name.as_ref().map(
8136                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
8137                ),
8138                encoder,
8139                offset + cur_offset,
8140                depth,
8141            )?;
8142
8143            _prev_end_offset = cur_offset + envelope_size;
8144            if 2 > max_ordinal {
8145                return Ok(());
8146            }
8147
8148            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8149            // are envelope_size bytes.
8150            let cur_offset: usize = (2 - 1) * envelope_size;
8151
8152            // Zero reserved fields.
8153            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8154
8155            // Safety:
8156            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8157            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8158            //   envelope_size bytes, there is always sufficient room.
8159            fidl::encoding::encode_in_envelope_optional::<ConfigValue, D>(
8160                self.value.as_ref().map(<ConfigValue as fidl::encoding::ValueTypeMarker>::borrow),
8161                encoder,
8162                offset + cur_offset,
8163                depth,
8164            )?;
8165
8166            _prev_end_offset = cur_offset + envelope_size;
8167
8168            Ok(())
8169        }
8170    }
8171
8172    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Configuration {
8173        #[inline(always)]
8174        fn new_empty() -> Self {
8175            Self::default()
8176        }
8177
8178        unsafe fn decode(
8179            &mut self,
8180            decoder: &mut fidl::encoding::Decoder<'_, D>,
8181            offset: usize,
8182            mut depth: fidl::encoding::Depth,
8183        ) -> fidl::Result<()> {
8184            decoder.debug_check_bounds::<Self>(offset);
8185            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8186                None => return Err(fidl::Error::NotNullable),
8187                Some(len) => len,
8188            };
8189            // Calling decoder.out_of_line_offset(0) is not allowed.
8190            if len == 0 {
8191                return Ok(());
8192            };
8193            depth.increment()?;
8194            let envelope_size = 8;
8195            let bytes_len = len * envelope_size;
8196            let offset = decoder.out_of_line_offset(bytes_len)?;
8197            // Decode the envelope for each type.
8198            let mut _next_ordinal_to_read = 0;
8199            let mut next_offset = offset;
8200            let end_offset = offset + bytes_len;
8201            _next_ordinal_to_read += 1;
8202            if next_offset >= end_offset {
8203                return Ok(());
8204            }
8205
8206            // Decode unknown envelopes for gaps in ordinals.
8207            while _next_ordinal_to_read < 1 {
8208                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8209                _next_ordinal_to_read += 1;
8210                next_offset += envelope_size;
8211            }
8212
8213            let next_out_of_line = decoder.next_out_of_line();
8214            let handles_before = decoder.remaining_handles();
8215            if let Some((inlined, num_bytes, num_handles)) =
8216                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8217            {
8218                let member_inline_size =
8219                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
8220                        decoder.context,
8221                    );
8222                if inlined != (member_inline_size <= 4) {
8223                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8224                }
8225                let inner_offset;
8226                let mut inner_depth = depth.clone();
8227                if inlined {
8228                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8229                    inner_offset = next_offset;
8230                } else {
8231                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8232                    inner_depth.increment()?;
8233                }
8234                let val_ref = self
8235                    .name
8236                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
8237                fidl::decode!(
8238                    fidl::encoding::BoundedString<100>,
8239                    D,
8240                    val_ref,
8241                    decoder,
8242                    inner_offset,
8243                    inner_depth
8244                )?;
8245                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8246                {
8247                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8248                }
8249                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8250                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8251                }
8252            }
8253
8254            next_offset += envelope_size;
8255            _next_ordinal_to_read += 1;
8256            if next_offset >= end_offset {
8257                return Ok(());
8258            }
8259
8260            // Decode unknown envelopes for gaps in ordinals.
8261            while _next_ordinal_to_read < 2 {
8262                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8263                _next_ordinal_to_read += 1;
8264                next_offset += envelope_size;
8265            }
8266
8267            let next_out_of_line = decoder.next_out_of_line();
8268            let handles_before = decoder.remaining_handles();
8269            if let Some((inlined, num_bytes, num_handles)) =
8270                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8271            {
8272                let member_inline_size =
8273                    <ConfigValue as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8274                if inlined != (member_inline_size <= 4) {
8275                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8276                }
8277                let inner_offset;
8278                let mut inner_depth = depth.clone();
8279                if inlined {
8280                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8281                    inner_offset = next_offset;
8282                } else {
8283                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8284                    inner_depth.increment()?;
8285                }
8286                let val_ref = self.value.get_or_insert_with(|| fidl::new_empty!(ConfigValue, D));
8287                fidl::decode!(ConfigValue, D, val_ref, decoder, inner_offset, inner_depth)?;
8288                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8289                {
8290                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8291                }
8292                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8293                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8294                }
8295            }
8296
8297            next_offset += envelope_size;
8298
8299            // Decode the remaining unknown envelopes.
8300            while next_offset < end_offset {
8301                _next_ordinal_to_read += 1;
8302                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8303                next_offset += envelope_size;
8304            }
8305
8306            Ok(())
8307        }
8308    }
8309
8310    impl DebugInfo {
8311        #[inline(always)]
8312        fn max_ordinal_present(&self) -> u64 {
8313            if let Some(_) = self.manifest_sources {
8314                return 1;
8315            }
8316            0
8317        }
8318    }
8319
8320    impl fidl::encoding::ValueTypeMarker for DebugInfo {
8321        type Borrowed<'a> = &'a Self;
8322        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8323            value
8324        }
8325    }
8326
8327    unsafe impl fidl::encoding::TypeMarker for DebugInfo {
8328        type Owned = Self;
8329
8330        #[inline(always)]
8331        fn inline_align(_context: fidl::encoding::Context) -> usize {
8332            8
8333        }
8334
8335        #[inline(always)]
8336        fn inline_size(_context: fidl::encoding::Context) -> usize {
8337            16
8338        }
8339    }
8340
8341    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DebugInfo, D>
8342        for &DebugInfo
8343    {
8344        unsafe fn encode(
8345            self,
8346            encoder: &mut fidl::encoding::Encoder<'_, D>,
8347            offset: usize,
8348            mut depth: fidl::encoding::Depth,
8349        ) -> fidl::Result<()> {
8350            encoder.debug_check_bounds::<DebugInfo>(offset);
8351            // Vector header
8352            let max_ordinal: u64 = self.max_ordinal_present();
8353            encoder.write_num(max_ordinal, offset);
8354            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8355            // Calling encoder.out_of_line_offset(0) is not allowed.
8356            if max_ordinal == 0 {
8357                return Ok(());
8358            }
8359            depth.increment()?;
8360            let envelope_size = 8;
8361            let bytes_len = max_ordinal as usize * envelope_size;
8362            #[allow(unused_variables)]
8363            let offset = encoder.out_of_line_offset(bytes_len);
8364            let mut _prev_end_offset: usize = 0;
8365            if 1 > max_ordinal {
8366                return Ok(());
8367            }
8368
8369            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8370            // are envelope_size bytes.
8371            let cur_offset: usize = (1 - 1) * envelope_size;
8372
8373            // Zero reserved fields.
8374            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8375
8376            // Safety:
8377            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8378            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8379            //   envelope_size bytes, there is always sufficient room.
8380            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl::encoding::UnboundedString>, D>(
8381            self.manifest_sources.as_ref().map(<fidl::encoding::UnboundedVector<fidl::encoding::UnboundedString> as fidl::encoding::ValueTypeMarker>::borrow),
8382            encoder, offset + cur_offset, depth
8383        )?;
8384
8385            _prev_end_offset = cur_offset + envelope_size;
8386
8387            Ok(())
8388        }
8389    }
8390
8391    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DebugInfo {
8392        #[inline(always)]
8393        fn new_empty() -> Self {
8394            Self::default()
8395        }
8396
8397        unsafe fn decode(
8398            &mut self,
8399            decoder: &mut fidl::encoding::Decoder<'_, D>,
8400            offset: usize,
8401            mut depth: fidl::encoding::Depth,
8402        ) -> fidl::Result<()> {
8403            decoder.debug_check_bounds::<Self>(offset);
8404            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8405                None => return Err(fidl::Error::NotNullable),
8406                Some(len) => len,
8407            };
8408            // Calling decoder.out_of_line_offset(0) is not allowed.
8409            if len == 0 {
8410                return Ok(());
8411            };
8412            depth.increment()?;
8413            let envelope_size = 8;
8414            let bytes_len = len * envelope_size;
8415            let offset = decoder.out_of_line_offset(bytes_len)?;
8416            // Decode the envelope for each type.
8417            let mut _next_ordinal_to_read = 0;
8418            let mut next_offset = offset;
8419            let end_offset = offset + bytes_len;
8420            _next_ordinal_to_read += 1;
8421            if next_offset >= end_offset {
8422                return Ok(());
8423            }
8424
8425            // Decode unknown envelopes for gaps in ordinals.
8426            while _next_ordinal_to_read < 1 {
8427                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8428                _next_ordinal_to_read += 1;
8429                next_offset += envelope_size;
8430            }
8431
8432            let next_out_of_line = decoder.next_out_of_line();
8433            let handles_before = decoder.remaining_handles();
8434            if let Some((inlined, num_bytes, num_handles)) =
8435                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8436            {
8437                let member_inline_size = <fidl::encoding::UnboundedVector<
8438                    fidl::encoding::UnboundedString,
8439                > as fidl::encoding::TypeMarker>::inline_size(
8440                    decoder.context
8441                );
8442                if inlined != (member_inline_size <= 4) {
8443                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8444                }
8445                let inner_offset;
8446                let mut inner_depth = depth.clone();
8447                if inlined {
8448                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8449                    inner_offset = next_offset;
8450                } else {
8451                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8452                    inner_depth.increment()?;
8453                }
8454                let val_ref = self.manifest_sources.get_or_insert_with(|| {
8455                    fidl::new_empty!(
8456                        fidl::encoding::UnboundedVector<fidl::encoding::UnboundedString>,
8457                        D
8458                    )
8459                });
8460                fidl::decode!(
8461                    fidl::encoding::UnboundedVector<fidl::encoding::UnboundedString>,
8462                    D,
8463                    val_ref,
8464                    decoder,
8465                    inner_offset,
8466                    inner_depth
8467                )?;
8468                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8469                {
8470                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8471                }
8472                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8473                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8474                }
8475            }
8476
8477            next_offset += envelope_size;
8478
8479            // Decode the remaining unknown envelopes.
8480            while next_offset < end_offset {
8481                _next_ordinal_to_read += 1;
8482                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8483                next_offset += envelope_size;
8484            }
8485
8486            Ok(())
8487        }
8488    }
8489
8490    impl DebugProtocolRegistration {
8491        #[inline(always)]
8492        fn max_ordinal_present(&self) -> u64 {
8493            if let Some(_) = self.target_name {
8494                return 3;
8495            }
8496            if let Some(_) = self.source_name {
8497                return 2;
8498            }
8499            if let Some(_) = self.source {
8500                return 1;
8501            }
8502            0
8503        }
8504    }
8505
8506    impl fidl::encoding::ValueTypeMarker for DebugProtocolRegistration {
8507        type Borrowed<'a> = &'a Self;
8508        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8509            value
8510        }
8511    }
8512
8513    unsafe impl fidl::encoding::TypeMarker for DebugProtocolRegistration {
8514        type Owned = Self;
8515
8516        #[inline(always)]
8517        fn inline_align(_context: fidl::encoding::Context) -> usize {
8518            8
8519        }
8520
8521        #[inline(always)]
8522        fn inline_size(_context: fidl::encoding::Context) -> usize {
8523            16
8524        }
8525    }
8526
8527    unsafe impl<D: fidl::encoding::ResourceDialect>
8528        fidl::encoding::Encode<DebugProtocolRegistration, D> for &DebugProtocolRegistration
8529    {
8530        unsafe fn encode(
8531            self,
8532            encoder: &mut fidl::encoding::Encoder<'_, D>,
8533            offset: usize,
8534            mut depth: fidl::encoding::Depth,
8535        ) -> fidl::Result<()> {
8536            encoder.debug_check_bounds::<DebugProtocolRegistration>(offset);
8537            // Vector header
8538            let max_ordinal: u64 = self.max_ordinal_present();
8539            encoder.write_num(max_ordinal, offset);
8540            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8541            // Calling encoder.out_of_line_offset(0) is not allowed.
8542            if max_ordinal == 0 {
8543                return Ok(());
8544            }
8545            depth.increment()?;
8546            let envelope_size = 8;
8547            let bytes_len = max_ordinal as usize * envelope_size;
8548            #[allow(unused_variables)]
8549            let offset = encoder.out_of_line_offset(bytes_len);
8550            let mut _prev_end_offset: usize = 0;
8551            if 1 > max_ordinal {
8552                return Ok(());
8553            }
8554
8555            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8556            // are envelope_size bytes.
8557            let cur_offset: usize = (1 - 1) * envelope_size;
8558
8559            // Zero reserved fields.
8560            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8561
8562            // Safety:
8563            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8564            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8565            //   envelope_size bytes, there is always sufficient room.
8566            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
8567                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
8568                encoder,
8569                offset + cur_offset,
8570                depth,
8571            )?;
8572
8573            _prev_end_offset = cur_offset + envelope_size;
8574            if 2 > max_ordinal {
8575                return Ok(());
8576            }
8577
8578            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8579            // are envelope_size bytes.
8580            let cur_offset: usize = (2 - 1) * envelope_size;
8581
8582            // Zero reserved fields.
8583            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8584
8585            // Safety:
8586            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8587            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8588            //   envelope_size bytes, there is always sufficient room.
8589            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
8590                self.source_name.as_ref().map(
8591                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
8592                ),
8593                encoder,
8594                offset + cur_offset,
8595                depth,
8596            )?;
8597
8598            _prev_end_offset = cur_offset + envelope_size;
8599            if 3 > max_ordinal {
8600                return Ok(());
8601            }
8602
8603            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8604            // are envelope_size bytes.
8605            let cur_offset: usize = (3 - 1) * envelope_size;
8606
8607            // Zero reserved fields.
8608            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8609
8610            // Safety:
8611            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8612            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8613            //   envelope_size bytes, there is always sufficient room.
8614            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
8615                self.target_name.as_ref().map(
8616                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
8617                ),
8618                encoder,
8619                offset + cur_offset,
8620                depth,
8621            )?;
8622
8623            _prev_end_offset = cur_offset + envelope_size;
8624
8625            Ok(())
8626        }
8627    }
8628
8629    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8630        for DebugProtocolRegistration
8631    {
8632        #[inline(always)]
8633        fn new_empty() -> Self {
8634            Self::default()
8635        }
8636
8637        unsafe fn decode(
8638            &mut self,
8639            decoder: &mut fidl::encoding::Decoder<'_, D>,
8640            offset: usize,
8641            mut depth: fidl::encoding::Depth,
8642        ) -> fidl::Result<()> {
8643            decoder.debug_check_bounds::<Self>(offset);
8644            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8645                None => return Err(fidl::Error::NotNullable),
8646                Some(len) => len,
8647            };
8648            // Calling decoder.out_of_line_offset(0) is not allowed.
8649            if len == 0 {
8650                return Ok(());
8651            };
8652            depth.increment()?;
8653            let envelope_size = 8;
8654            let bytes_len = len * envelope_size;
8655            let offset = decoder.out_of_line_offset(bytes_len)?;
8656            // Decode the envelope for each type.
8657            let mut _next_ordinal_to_read = 0;
8658            let mut next_offset = offset;
8659            let end_offset = offset + bytes_len;
8660            _next_ordinal_to_read += 1;
8661            if next_offset >= end_offset {
8662                return Ok(());
8663            }
8664
8665            // Decode unknown envelopes for gaps in ordinals.
8666            while _next_ordinal_to_read < 1 {
8667                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8668                _next_ordinal_to_read += 1;
8669                next_offset += envelope_size;
8670            }
8671
8672            let next_out_of_line = decoder.next_out_of_line();
8673            let handles_before = decoder.remaining_handles();
8674            if let Some((inlined, num_bytes, num_handles)) =
8675                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8676            {
8677                let member_inline_size =
8678                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8679                if inlined != (member_inline_size <= 4) {
8680                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8681                }
8682                let inner_offset;
8683                let mut inner_depth = depth.clone();
8684                if inlined {
8685                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8686                    inner_offset = next_offset;
8687                } else {
8688                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8689                    inner_depth.increment()?;
8690                }
8691                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
8692                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
8693                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8694                {
8695                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8696                }
8697                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8698                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8699                }
8700            }
8701
8702            next_offset += envelope_size;
8703            _next_ordinal_to_read += 1;
8704            if next_offset >= end_offset {
8705                return Ok(());
8706            }
8707
8708            // Decode unknown envelopes for gaps in ordinals.
8709            while _next_ordinal_to_read < 2 {
8710                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8711                _next_ordinal_to_read += 1;
8712                next_offset += envelope_size;
8713            }
8714
8715            let next_out_of_line = decoder.next_out_of_line();
8716            let handles_before = decoder.remaining_handles();
8717            if let Some((inlined, num_bytes, num_handles)) =
8718                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8719            {
8720                let member_inline_size =
8721                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
8722                        decoder.context,
8723                    );
8724                if inlined != (member_inline_size <= 4) {
8725                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8726                }
8727                let inner_offset;
8728                let mut inner_depth = depth.clone();
8729                if inlined {
8730                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8731                    inner_offset = next_offset;
8732                } else {
8733                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8734                    inner_depth.increment()?;
8735                }
8736                let val_ref = self
8737                    .source_name
8738                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
8739                fidl::decode!(
8740                    fidl::encoding::BoundedString<100>,
8741                    D,
8742                    val_ref,
8743                    decoder,
8744                    inner_offset,
8745                    inner_depth
8746                )?;
8747                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8748                {
8749                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8750                }
8751                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8752                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8753                }
8754            }
8755
8756            next_offset += envelope_size;
8757            _next_ordinal_to_read += 1;
8758            if next_offset >= end_offset {
8759                return Ok(());
8760            }
8761
8762            // Decode unknown envelopes for gaps in ordinals.
8763            while _next_ordinal_to_read < 3 {
8764                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8765                _next_ordinal_to_read += 1;
8766                next_offset += envelope_size;
8767            }
8768
8769            let next_out_of_line = decoder.next_out_of_line();
8770            let handles_before = decoder.remaining_handles();
8771            if let Some((inlined, num_bytes, num_handles)) =
8772                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8773            {
8774                let member_inline_size =
8775                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
8776                        decoder.context,
8777                    );
8778                if inlined != (member_inline_size <= 4) {
8779                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8780                }
8781                let inner_offset;
8782                let mut inner_depth = depth.clone();
8783                if inlined {
8784                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8785                    inner_offset = next_offset;
8786                } else {
8787                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8788                    inner_depth.increment()?;
8789                }
8790                let val_ref = self
8791                    .target_name
8792                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
8793                fidl::decode!(
8794                    fidl::encoding::BoundedString<100>,
8795                    D,
8796                    val_ref,
8797                    decoder,
8798                    inner_offset,
8799                    inner_depth
8800                )?;
8801                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8802                {
8803                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8804                }
8805                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8806                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8807                }
8808            }
8809
8810            next_offset += envelope_size;
8811
8812            // Decode the remaining unknown envelopes.
8813            while next_offset < end_offset {
8814                _next_ordinal_to_read += 1;
8815                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8816                next_offset += envelope_size;
8817            }
8818
8819            Ok(())
8820        }
8821    }
8822
8823    impl Dictionary {
8824        #[inline(always)]
8825        fn max_ordinal_present(&self) -> u64 {
8826            if let Some(_) = self.source_path {
8827                return 4;
8828            }
8829            if let Some(_) = self.source_dictionary {
8830                return 3;
8831            }
8832            if let Some(_) = self.source {
8833                return 2;
8834            }
8835            if let Some(_) = self.name {
8836                return 1;
8837            }
8838            0
8839        }
8840    }
8841
8842    impl fidl::encoding::ValueTypeMarker for Dictionary {
8843        type Borrowed<'a> = &'a Self;
8844        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8845            value
8846        }
8847    }
8848
8849    unsafe impl fidl::encoding::TypeMarker for Dictionary {
8850        type Owned = Self;
8851
8852        #[inline(always)]
8853        fn inline_align(_context: fidl::encoding::Context) -> usize {
8854            8
8855        }
8856
8857        #[inline(always)]
8858        fn inline_size(_context: fidl::encoding::Context) -> usize {
8859            16
8860        }
8861    }
8862
8863    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Dictionary, D>
8864        for &Dictionary
8865    {
8866        unsafe fn encode(
8867            self,
8868            encoder: &mut fidl::encoding::Encoder<'_, D>,
8869            offset: usize,
8870            mut depth: fidl::encoding::Depth,
8871        ) -> fidl::Result<()> {
8872            encoder.debug_check_bounds::<Dictionary>(offset);
8873            // Vector header
8874            let max_ordinal: u64 = self.max_ordinal_present();
8875            encoder.write_num(max_ordinal, offset);
8876            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8877            // Calling encoder.out_of_line_offset(0) is not allowed.
8878            if max_ordinal == 0 {
8879                return Ok(());
8880            }
8881            depth.increment()?;
8882            let envelope_size = 8;
8883            let bytes_len = max_ordinal as usize * envelope_size;
8884            #[allow(unused_variables)]
8885            let offset = encoder.out_of_line_offset(bytes_len);
8886            let mut _prev_end_offset: usize = 0;
8887            if 1 > max_ordinal {
8888                return Ok(());
8889            }
8890
8891            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8892            // are envelope_size bytes.
8893            let cur_offset: usize = (1 - 1) * envelope_size;
8894
8895            // Zero reserved fields.
8896            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8897
8898            // Safety:
8899            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8900            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8901            //   envelope_size bytes, there is always sufficient room.
8902            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
8903                self.name.as_ref().map(
8904                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
8905                ),
8906                encoder,
8907                offset + cur_offset,
8908                depth,
8909            )?;
8910
8911            _prev_end_offset = cur_offset + envelope_size;
8912            if 2 > max_ordinal {
8913                return Ok(());
8914            }
8915
8916            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8917            // are envelope_size bytes.
8918            let cur_offset: usize = (2 - 1) * envelope_size;
8919
8920            // Zero reserved fields.
8921            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8922
8923            // Safety:
8924            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8925            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8926            //   envelope_size bytes, there is always sufficient room.
8927            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
8928                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
8929                encoder,
8930                offset + cur_offset,
8931                depth,
8932            )?;
8933
8934            _prev_end_offset = cur_offset + envelope_size;
8935            if 3 > max_ordinal {
8936                return Ok(());
8937            }
8938
8939            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8940            // are envelope_size bytes.
8941            let cur_offset: usize = (3 - 1) * envelope_size;
8942
8943            // Zero reserved fields.
8944            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8945
8946            // Safety:
8947            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8948            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8949            //   envelope_size bytes, there is always sufficient room.
8950            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
8951            self.source_dictionary.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
8952            encoder, offset + cur_offset, depth
8953        )?;
8954
8955            _prev_end_offset = cur_offset + envelope_size;
8956            if 4 > max_ordinal {
8957                return Ok(());
8958            }
8959
8960            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8961            // are envelope_size bytes.
8962            let cur_offset: usize = (4 - 1) * envelope_size;
8963
8964            // Zero reserved fields.
8965            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8966
8967            // Safety:
8968            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8969            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8970            //   envelope_size bytes, there is always sufficient room.
8971            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
8972            self.source_path.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
8973            encoder, offset + cur_offset, depth
8974        )?;
8975
8976            _prev_end_offset = cur_offset + envelope_size;
8977
8978            Ok(())
8979        }
8980    }
8981
8982    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Dictionary {
8983        #[inline(always)]
8984        fn new_empty() -> Self {
8985            Self::default()
8986        }
8987
8988        unsafe fn decode(
8989            &mut self,
8990            decoder: &mut fidl::encoding::Decoder<'_, D>,
8991            offset: usize,
8992            mut depth: fidl::encoding::Depth,
8993        ) -> fidl::Result<()> {
8994            decoder.debug_check_bounds::<Self>(offset);
8995            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8996                None => return Err(fidl::Error::NotNullable),
8997                Some(len) => len,
8998            };
8999            // Calling decoder.out_of_line_offset(0) is not allowed.
9000            if len == 0 {
9001                return Ok(());
9002            };
9003            depth.increment()?;
9004            let envelope_size = 8;
9005            let bytes_len = len * envelope_size;
9006            let offset = decoder.out_of_line_offset(bytes_len)?;
9007            // Decode the envelope for each type.
9008            let mut _next_ordinal_to_read = 0;
9009            let mut next_offset = offset;
9010            let end_offset = offset + bytes_len;
9011            _next_ordinal_to_read += 1;
9012            if next_offset >= end_offset {
9013                return Ok(());
9014            }
9015
9016            // Decode unknown envelopes for gaps in ordinals.
9017            while _next_ordinal_to_read < 1 {
9018                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9019                _next_ordinal_to_read += 1;
9020                next_offset += envelope_size;
9021            }
9022
9023            let next_out_of_line = decoder.next_out_of_line();
9024            let handles_before = decoder.remaining_handles();
9025            if let Some((inlined, num_bytes, num_handles)) =
9026                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9027            {
9028                let member_inline_size =
9029                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
9030                        decoder.context,
9031                    );
9032                if inlined != (member_inline_size <= 4) {
9033                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9034                }
9035                let inner_offset;
9036                let mut inner_depth = depth.clone();
9037                if inlined {
9038                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9039                    inner_offset = next_offset;
9040                } else {
9041                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9042                    inner_depth.increment()?;
9043                }
9044                let val_ref = self
9045                    .name
9046                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
9047                fidl::decode!(
9048                    fidl::encoding::BoundedString<100>,
9049                    D,
9050                    val_ref,
9051                    decoder,
9052                    inner_offset,
9053                    inner_depth
9054                )?;
9055                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9056                {
9057                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9058                }
9059                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9060                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9061                }
9062            }
9063
9064            next_offset += envelope_size;
9065            _next_ordinal_to_read += 1;
9066            if next_offset >= end_offset {
9067                return Ok(());
9068            }
9069
9070            // Decode unknown envelopes for gaps in ordinals.
9071            while _next_ordinal_to_read < 2 {
9072                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9073                _next_ordinal_to_read += 1;
9074                next_offset += envelope_size;
9075            }
9076
9077            let next_out_of_line = decoder.next_out_of_line();
9078            let handles_before = decoder.remaining_handles();
9079            if let Some((inlined, num_bytes, num_handles)) =
9080                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9081            {
9082                let member_inline_size =
9083                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9084                if inlined != (member_inline_size <= 4) {
9085                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9086                }
9087                let inner_offset;
9088                let mut inner_depth = depth.clone();
9089                if inlined {
9090                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9091                    inner_offset = next_offset;
9092                } else {
9093                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9094                    inner_depth.increment()?;
9095                }
9096                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
9097                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
9098                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9099                {
9100                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9101                }
9102                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9103                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9104                }
9105            }
9106
9107            next_offset += envelope_size;
9108            _next_ordinal_to_read += 1;
9109            if next_offset >= end_offset {
9110                return Ok(());
9111            }
9112
9113            // Decode unknown envelopes for gaps in ordinals.
9114            while _next_ordinal_to_read < 3 {
9115                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9116                _next_ordinal_to_read += 1;
9117                next_offset += envelope_size;
9118            }
9119
9120            let next_out_of_line = decoder.next_out_of_line();
9121            let handles_before = decoder.remaining_handles();
9122            if let Some((inlined, num_bytes, num_handles)) =
9123                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9124            {
9125                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9126                if inlined != (member_inline_size <= 4) {
9127                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9128                }
9129                let inner_offset;
9130                let mut inner_depth = depth.clone();
9131                if inlined {
9132                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9133                    inner_offset = next_offset;
9134                } else {
9135                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9136                    inner_depth.increment()?;
9137                }
9138                let val_ref = self.source_dictionary.get_or_insert_with(|| {
9139                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
9140                });
9141                fidl::decode!(
9142                    fidl::encoding::BoundedString<1024>,
9143                    D,
9144                    val_ref,
9145                    decoder,
9146                    inner_offset,
9147                    inner_depth
9148                )?;
9149                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9150                {
9151                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9152                }
9153                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9154                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9155                }
9156            }
9157
9158            next_offset += envelope_size;
9159            _next_ordinal_to_read += 1;
9160            if next_offset >= end_offset {
9161                return Ok(());
9162            }
9163
9164            // Decode unknown envelopes for gaps in ordinals.
9165            while _next_ordinal_to_read < 4 {
9166                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9167                _next_ordinal_to_read += 1;
9168                next_offset += envelope_size;
9169            }
9170
9171            let next_out_of_line = decoder.next_out_of_line();
9172            let handles_before = decoder.remaining_handles();
9173            if let Some((inlined, num_bytes, num_handles)) =
9174                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9175            {
9176                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9177                if inlined != (member_inline_size <= 4) {
9178                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9179                }
9180                let inner_offset;
9181                let mut inner_depth = depth.clone();
9182                if inlined {
9183                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9184                    inner_offset = next_offset;
9185                } else {
9186                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9187                    inner_depth.increment()?;
9188                }
9189                let val_ref = self.source_path.get_or_insert_with(|| {
9190                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
9191                });
9192                fidl::decode!(
9193                    fidl::encoding::BoundedString<1024>,
9194                    D,
9195                    val_ref,
9196                    decoder,
9197                    inner_offset,
9198                    inner_depth
9199                )?;
9200                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9201                {
9202                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9203                }
9204                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9205                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9206                }
9207            }
9208
9209            next_offset += envelope_size;
9210
9211            // Decode the remaining unknown envelopes.
9212            while next_offset < end_offset {
9213                _next_ordinal_to_read += 1;
9214                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9215                next_offset += envelope_size;
9216            }
9217
9218            Ok(())
9219        }
9220    }
9221
9222    impl Directory {
9223        #[inline(always)]
9224        fn max_ordinal_present(&self) -> u64 {
9225            if let Some(_) = self.rights {
9226                return 3;
9227            }
9228            if let Some(_) = self.source_path {
9229                return 2;
9230            }
9231            if let Some(_) = self.name {
9232                return 1;
9233            }
9234            0
9235        }
9236    }
9237
9238    impl fidl::encoding::ValueTypeMarker for Directory {
9239        type Borrowed<'a> = &'a Self;
9240        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9241            value
9242        }
9243    }
9244
9245    unsafe impl fidl::encoding::TypeMarker for Directory {
9246        type Owned = Self;
9247
9248        #[inline(always)]
9249        fn inline_align(_context: fidl::encoding::Context) -> usize {
9250            8
9251        }
9252
9253        #[inline(always)]
9254        fn inline_size(_context: fidl::encoding::Context) -> usize {
9255            16
9256        }
9257    }
9258
9259    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Directory, D>
9260        for &Directory
9261    {
9262        unsafe fn encode(
9263            self,
9264            encoder: &mut fidl::encoding::Encoder<'_, D>,
9265            offset: usize,
9266            mut depth: fidl::encoding::Depth,
9267        ) -> fidl::Result<()> {
9268            encoder.debug_check_bounds::<Directory>(offset);
9269            // Vector header
9270            let max_ordinal: u64 = self.max_ordinal_present();
9271            encoder.write_num(max_ordinal, offset);
9272            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9273            // Calling encoder.out_of_line_offset(0) is not allowed.
9274            if max_ordinal == 0 {
9275                return Ok(());
9276            }
9277            depth.increment()?;
9278            let envelope_size = 8;
9279            let bytes_len = max_ordinal as usize * envelope_size;
9280            #[allow(unused_variables)]
9281            let offset = encoder.out_of_line_offset(bytes_len);
9282            let mut _prev_end_offset: usize = 0;
9283            if 1 > max_ordinal {
9284                return Ok(());
9285            }
9286
9287            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9288            // are envelope_size bytes.
9289            let cur_offset: usize = (1 - 1) * envelope_size;
9290
9291            // Zero reserved fields.
9292            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9293
9294            // Safety:
9295            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9296            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9297            //   envelope_size bytes, there is always sufficient room.
9298            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
9299                self.name.as_ref().map(
9300                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
9301                ),
9302                encoder,
9303                offset + cur_offset,
9304                depth,
9305            )?;
9306
9307            _prev_end_offset = cur_offset + envelope_size;
9308            if 2 > max_ordinal {
9309                return Ok(());
9310            }
9311
9312            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9313            // are envelope_size bytes.
9314            let cur_offset: usize = (2 - 1) * envelope_size;
9315
9316            // Zero reserved fields.
9317            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9318
9319            // Safety:
9320            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9321            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9322            //   envelope_size bytes, there is always sufficient room.
9323            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
9324            self.source_path.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
9325            encoder, offset + cur_offset, depth
9326        )?;
9327
9328            _prev_end_offset = cur_offset + envelope_size;
9329            if 3 > max_ordinal {
9330                return Ok(());
9331            }
9332
9333            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9334            // are envelope_size bytes.
9335            let cur_offset: usize = (3 - 1) * envelope_size;
9336
9337            // Zero reserved fields.
9338            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9339
9340            // Safety:
9341            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9342            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9343            //   envelope_size bytes, there is always sufficient room.
9344            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_io__common::Operations, D>(
9345            self.rights.as_ref().map(<fidl_fuchsia_io__common::Operations as fidl::encoding::ValueTypeMarker>::borrow),
9346            encoder, offset + cur_offset, depth
9347        )?;
9348
9349            _prev_end_offset = cur_offset + envelope_size;
9350
9351            Ok(())
9352        }
9353    }
9354
9355    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Directory {
9356        #[inline(always)]
9357        fn new_empty() -> Self {
9358            Self::default()
9359        }
9360
9361        unsafe fn decode(
9362            &mut self,
9363            decoder: &mut fidl::encoding::Decoder<'_, D>,
9364            offset: usize,
9365            mut depth: fidl::encoding::Depth,
9366        ) -> fidl::Result<()> {
9367            decoder.debug_check_bounds::<Self>(offset);
9368            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9369                None => return Err(fidl::Error::NotNullable),
9370                Some(len) => len,
9371            };
9372            // Calling decoder.out_of_line_offset(0) is not allowed.
9373            if len == 0 {
9374                return Ok(());
9375            };
9376            depth.increment()?;
9377            let envelope_size = 8;
9378            let bytes_len = len * envelope_size;
9379            let offset = decoder.out_of_line_offset(bytes_len)?;
9380            // Decode the envelope for each type.
9381            let mut _next_ordinal_to_read = 0;
9382            let mut next_offset = offset;
9383            let end_offset = offset + bytes_len;
9384            _next_ordinal_to_read += 1;
9385            if next_offset >= end_offset {
9386                return Ok(());
9387            }
9388
9389            // Decode unknown envelopes for gaps in ordinals.
9390            while _next_ordinal_to_read < 1 {
9391                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9392                _next_ordinal_to_read += 1;
9393                next_offset += envelope_size;
9394            }
9395
9396            let next_out_of_line = decoder.next_out_of_line();
9397            let handles_before = decoder.remaining_handles();
9398            if let Some((inlined, num_bytes, num_handles)) =
9399                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9400            {
9401                let member_inline_size =
9402                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
9403                        decoder.context,
9404                    );
9405                if inlined != (member_inline_size <= 4) {
9406                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9407                }
9408                let inner_offset;
9409                let mut inner_depth = depth.clone();
9410                if inlined {
9411                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9412                    inner_offset = next_offset;
9413                } else {
9414                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9415                    inner_depth.increment()?;
9416                }
9417                let val_ref = self
9418                    .name
9419                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
9420                fidl::decode!(
9421                    fidl::encoding::BoundedString<100>,
9422                    D,
9423                    val_ref,
9424                    decoder,
9425                    inner_offset,
9426                    inner_depth
9427                )?;
9428                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9429                {
9430                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9431                }
9432                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9433                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9434                }
9435            }
9436
9437            next_offset += envelope_size;
9438            _next_ordinal_to_read += 1;
9439            if next_offset >= end_offset {
9440                return Ok(());
9441            }
9442
9443            // Decode unknown envelopes for gaps in ordinals.
9444            while _next_ordinal_to_read < 2 {
9445                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9446                _next_ordinal_to_read += 1;
9447                next_offset += envelope_size;
9448            }
9449
9450            let next_out_of_line = decoder.next_out_of_line();
9451            let handles_before = decoder.remaining_handles();
9452            if let Some((inlined, num_bytes, num_handles)) =
9453                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9454            {
9455                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9456                if inlined != (member_inline_size <= 4) {
9457                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9458                }
9459                let inner_offset;
9460                let mut inner_depth = depth.clone();
9461                if inlined {
9462                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9463                    inner_offset = next_offset;
9464                } else {
9465                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9466                    inner_depth.increment()?;
9467                }
9468                let val_ref = self.source_path.get_or_insert_with(|| {
9469                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
9470                });
9471                fidl::decode!(
9472                    fidl::encoding::BoundedString<1024>,
9473                    D,
9474                    val_ref,
9475                    decoder,
9476                    inner_offset,
9477                    inner_depth
9478                )?;
9479                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9480                {
9481                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9482                }
9483                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9484                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9485                }
9486            }
9487
9488            next_offset += envelope_size;
9489            _next_ordinal_to_read += 1;
9490            if next_offset >= end_offset {
9491                return Ok(());
9492            }
9493
9494            // Decode unknown envelopes for gaps in ordinals.
9495            while _next_ordinal_to_read < 3 {
9496                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9497                _next_ordinal_to_read += 1;
9498                next_offset += envelope_size;
9499            }
9500
9501            let next_out_of_line = decoder.next_out_of_line();
9502            let handles_before = decoder.remaining_handles();
9503            if let Some((inlined, num_bytes, num_handles)) =
9504                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9505            {
9506                let member_inline_size = <fidl_fuchsia_io__common::Operations as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9507                if inlined != (member_inline_size <= 4) {
9508                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9509                }
9510                let inner_offset;
9511                let mut inner_depth = depth.clone();
9512                if inlined {
9513                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9514                    inner_offset = next_offset;
9515                } else {
9516                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9517                    inner_depth.increment()?;
9518                }
9519                let val_ref = self.rights.get_or_insert_with(|| {
9520                    fidl::new_empty!(fidl_fuchsia_io__common::Operations, D)
9521                });
9522                fidl::decode!(
9523                    fidl_fuchsia_io__common::Operations,
9524                    D,
9525                    val_ref,
9526                    decoder,
9527                    inner_offset,
9528                    inner_depth
9529                )?;
9530                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9531                {
9532                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9533                }
9534                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9535                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9536                }
9537            }
9538
9539            next_offset += envelope_size;
9540
9541            // Decode the remaining unknown envelopes.
9542            while next_offset < end_offset {
9543                _next_ordinal_to_read += 1;
9544                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9545                next_offset += envelope_size;
9546            }
9547
9548            Ok(())
9549        }
9550    }
9551
9552    impl Environment {
9553        #[inline(always)]
9554        fn max_ordinal_present(&self) -> u64 {
9555            if let Some(_) = self.stop_timeout_ms {
9556                return 6;
9557            }
9558            if let Some(_) = self.debug_capabilities {
9559                return 5;
9560            }
9561            if let Some(_) = self.resolvers {
9562                return 4;
9563            }
9564            if let Some(_) = self.runners {
9565                return 3;
9566            }
9567            if let Some(_) = self.extends {
9568                return 2;
9569            }
9570            if let Some(_) = self.name {
9571                return 1;
9572            }
9573            0
9574        }
9575    }
9576
9577    impl fidl::encoding::ValueTypeMarker for Environment {
9578        type Borrowed<'a> = &'a Self;
9579        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9580            value
9581        }
9582    }
9583
9584    unsafe impl fidl::encoding::TypeMarker for Environment {
9585        type Owned = Self;
9586
9587        #[inline(always)]
9588        fn inline_align(_context: fidl::encoding::Context) -> usize {
9589            8
9590        }
9591
9592        #[inline(always)]
9593        fn inline_size(_context: fidl::encoding::Context) -> usize {
9594            16
9595        }
9596    }
9597
9598    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Environment, D>
9599        for &Environment
9600    {
9601        unsafe fn encode(
9602            self,
9603            encoder: &mut fidl::encoding::Encoder<'_, D>,
9604            offset: usize,
9605            mut depth: fidl::encoding::Depth,
9606        ) -> fidl::Result<()> {
9607            encoder.debug_check_bounds::<Environment>(offset);
9608            // Vector header
9609            let max_ordinal: u64 = self.max_ordinal_present();
9610            encoder.write_num(max_ordinal, offset);
9611            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9612            // Calling encoder.out_of_line_offset(0) is not allowed.
9613            if max_ordinal == 0 {
9614                return Ok(());
9615            }
9616            depth.increment()?;
9617            let envelope_size = 8;
9618            let bytes_len = max_ordinal as usize * envelope_size;
9619            #[allow(unused_variables)]
9620            let offset = encoder.out_of_line_offset(bytes_len);
9621            let mut _prev_end_offset: usize = 0;
9622            if 1 > max_ordinal {
9623                return Ok(());
9624            }
9625
9626            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9627            // are envelope_size bytes.
9628            let cur_offset: usize = (1 - 1) * envelope_size;
9629
9630            // Zero reserved fields.
9631            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9632
9633            // Safety:
9634            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9635            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9636            //   envelope_size bytes, there is always sufficient room.
9637            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
9638                self.name.as_ref().map(
9639                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
9640                ),
9641                encoder,
9642                offset + cur_offset,
9643                depth,
9644            )?;
9645
9646            _prev_end_offset = cur_offset + envelope_size;
9647            if 2 > max_ordinal {
9648                return Ok(());
9649            }
9650
9651            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9652            // are envelope_size bytes.
9653            let cur_offset: usize = (2 - 1) * envelope_size;
9654
9655            // Zero reserved fields.
9656            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9657
9658            // Safety:
9659            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9660            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9661            //   envelope_size bytes, there is always sufficient room.
9662            fidl::encoding::encode_in_envelope_optional::<EnvironmentExtends, D>(
9663                self.extends
9664                    .as_ref()
9665                    .map(<EnvironmentExtends as fidl::encoding::ValueTypeMarker>::borrow),
9666                encoder,
9667                offset + cur_offset,
9668                depth,
9669            )?;
9670
9671            _prev_end_offset = cur_offset + envelope_size;
9672            if 3 > max_ordinal {
9673                return Ok(());
9674            }
9675
9676            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9677            // are envelope_size bytes.
9678            let cur_offset: usize = (3 - 1) * envelope_size;
9679
9680            // Zero reserved fields.
9681            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9682
9683            // Safety:
9684            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9685            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9686            //   envelope_size bytes, there is always sufficient room.
9687            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<RunnerRegistration>, D>(
9688            self.runners.as_ref().map(<fidl::encoding::UnboundedVector<RunnerRegistration> as fidl::encoding::ValueTypeMarker>::borrow),
9689            encoder, offset + cur_offset, depth
9690        )?;
9691
9692            _prev_end_offset = cur_offset + envelope_size;
9693            if 4 > max_ordinal {
9694                return Ok(());
9695            }
9696
9697            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9698            // are envelope_size bytes.
9699            let cur_offset: usize = (4 - 1) * envelope_size;
9700
9701            // Zero reserved fields.
9702            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9703
9704            // Safety:
9705            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9706            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9707            //   envelope_size bytes, there is always sufficient room.
9708            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<ResolverRegistration>, D>(
9709            self.resolvers.as_ref().map(<fidl::encoding::UnboundedVector<ResolverRegistration> as fidl::encoding::ValueTypeMarker>::borrow),
9710            encoder, offset + cur_offset, depth
9711        )?;
9712
9713            _prev_end_offset = cur_offset + envelope_size;
9714            if 5 > max_ordinal {
9715                return Ok(());
9716            }
9717
9718            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9719            // are envelope_size bytes.
9720            let cur_offset: usize = (5 - 1) * envelope_size;
9721
9722            // Zero reserved fields.
9723            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9724
9725            // Safety:
9726            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9727            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9728            //   envelope_size bytes, there is always sufficient room.
9729            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<DebugRegistration>, D>(
9730            self.debug_capabilities.as_ref().map(<fidl::encoding::UnboundedVector<DebugRegistration> as fidl::encoding::ValueTypeMarker>::borrow),
9731            encoder, offset + cur_offset, depth
9732        )?;
9733
9734            _prev_end_offset = cur_offset + envelope_size;
9735            if 6 > max_ordinal {
9736                return Ok(());
9737            }
9738
9739            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9740            // are envelope_size bytes.
9741            let cur_offset: usize = (6 - 1) * envelope_size;
9742
9743            // Zero reserved fields.
9744            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9745
9746            // Safety:
9747            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9748            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9749            //   envelope_size bytes, there is always sufficient room.
9750            fidl::encoding::encode_in_envelope_optional::<u32, D>(
9751                self.stop_timeout_ms.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
9752                encoder,
9753                offset + cur_offset,
9754                depth,
9755            )?;
9756
9757            _prev_end_offset = cur_offset + envelope_size;
9758
9759            Ok(())
9760        }
9761    }
9762
9763    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Environment {
9764        #[inline(always)]
9765        fn new_empty() -> Self {
9766            Self::default()
9767        }
9768
9769        unsafe fn decode(
9770            &mut self,
9771            decoder: &mut fidl::encoding::Decoder<'_, D>,
9772            offset: usize,
9773            mut depth: fidl::encoding::Depth,
9774        ) -> fidl::Result<()> {
9775            decoder.debug_check_bounds::<Self>(offset);
9776            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9777                None => return Err(fidl::Error::NotNullable),
9778                Some(len) => len,
9779            };
9780            // Calling decoder.out_of_line_offset(0) is not allowed.
9781            if len == 0 {
9782                return Ok(());
9783            };
9784            depth.increment()?;
9785            let envelope_size = 8;
9786            let bytes_len = len * envelope_size;
9787            let offset = decoder.out_of_line_offset(bytes_len)?;
9788            // Decode the envelope for each type.
9789            let mut _next_ordinal_to_read = 0;
9790            let mut next_offset = offset;
9791            let end_offset = offset + bytes_len;
9792            _next_ordinal_to_read += 1;
9793            if next_offset >= end_offset {
9794                return Ok(());
9795            }
9796
9797            // Decode unknown envelopes for gaps in ordinals.
9798            while _next_ordinal_to_read < 1 {
9799                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9800                _next_ordinal_to_read += 1;
9801                next_offset += envelope_size;
9802            }
9803
9804            let next_out_of_line = decoder.next_out_of_line();
9805            let handles_before = decoder.remaining_handles();
9806            if let Some((inlined, num_bytes, num_handles)) =
9807                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9808            {
9809                let member_inline_size =
9810                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
9811                        decoder.context,
9812                    );
9813                if inlined != (member_inline_size <= 4) {
9814                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9815                }
9816                let inner_offset;
9817                let mut inner_depth = depth.clone();
9818                if inlined {
9819                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9820                    inner_offset = next_offset;
9821                } else {
9822                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9823                    inner_depth.increment()?;
9824                }
9825                let val_ref = self
9826                    .name
9827                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
9828                fidl::decode!(
9829                    fidl::encoding::BoundedString<100>,
9830                    D,
9831                    val_ref,
9832                    decoder,
9833                    inner_offset,
9834                    inner_depth
9835                )?;
9836                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9837                {
9838                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9839                }
9840                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9841                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9842                }
9843            }
9844
9845            next_offset += envelope_size;
9846            _next_ordinal_to_read += 1;
9847            if next_offset >= end_offset {
9848                return Ok(());
9849            }
9850
9851            // Decode unknown envelopes for gaps in ordinals.
9852            while _next_ordinal_to_read < 2 {
9853                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9854                _next_ordinal_to_read += 1;
9855                next_offset += envelope_size;
9856            }
9857
9858            let next_out_of_line = decoder.next_out_of_line();
9859            let handles_before = decoder.remaining_handles();
9860            if let Some((inlined, num_bytes, num_handles)) =
9861                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9862            {
9863                let member_inline_size =
9864                    <EnvironmentExtends as fidl::encoding::TypeMarker>::inline_size(
9865                        decoder.context,
9866                    );
9867                if inlined != (member_inline_size <= 4) {
9868                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9869                }
9870                let inner_offset;
9871                let mut inner_depth = depth.clone();
9872                if inlined {
9873                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9874                    inner_offset = next_offset;
9875                } else {
9876                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9877                    inner_depth.increment()?;
9878                }
9879                let val_ref =
9880                    self.extends.get_or_insert_with(|| fidl::new_empty!(EnvironmentExtends, D));
9881                fidl::decode!(EnvironmentExtends, D, val_ref, decoder, inner_offset, inner_depth)?;
9882                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9883                {
9884                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9885                }
9886                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9887                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9888                }
9889            }
9890
9891            next_offset += envelope_size;
9892            _next_ordinal_to_read += 1;
9893            if next_offset >= end_offset {
9894                return Ok(());
9895            }
9896
9897            // Decode unknown envelopes for gaps in ordinals.
9898            while _next_ordinal_to_read < 3 {
9899                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9900                _next_ordinal_to_read += 1;
9901                next_offset += envelope_size;
9902            }
9903
9904            let next_out_of_line = decoder.next_out_of_line();
9905            let handles_before = decoder.remaining_handles();
9906            if let Some((inlined, num_bytes, num_handles)) =
9907                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9908            {
9909                let member_inline_size = <fidl::encoding::UnboundedVector<RunnerRegistration> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9910                if inlined != (member_inline_size <= 4) {
9911                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9912                }
9913                let inner_offset;
9914                let mut inner_depth = depth.clone();
9915                if inlined {
9916                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9917                    inner_offset = next_offset;
9918                } else {
9919                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9920                    inner_depth.increment()?;
9921                }
9922                let val_ref = self.runners.get_or_insert_with(|| {
9923                    fidl::new_empty!(fidl::encoding::UnboundedVector<RunnerRegistration>, D)
9924                });
9925                fidl::decode!(
9926                    fidl::encoding::UnboundedVector<RunnerRegistration>,
9927                    D,
9928                    val_ref,
9929                    decoder,
9930                    inner_offset,
9931                    inner_depth
9932                )?;
9933                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9934                {
9935                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9936                }
9937                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9938                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9939                }
9940            }
9941
9942            next_offset += envelope_size;
9943            _next_ordinal_to_read += 1;
9944            if next_offset >= end_offset {
9945                return Ok(());
9946            }
9947
9948            // Decode unknown envelopes for gaps in ordinals.
9949            while _next_ordinal_to_read < 4 {
9950                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9951                _next_ordinal_to_read += 1;
9952                next_offset += envelope_size;
9953            }
9954
9955            let next_out_of_line = decoder.next_out_of_line();
9956            let handles_before = decoder.remaining_handles();
9957            if let Some((inlined, num_bytes, num_handles)) =
9958                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9959            {
9960                let member_inline_size = <fidl::encoding::UnboundedVector<ResolverRegistration> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9961                if inlined != (member_inline_size <= 4) {
9962                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9963                }
9964                let inner_offset;
9965                let mut inner_depth = depth.clone();
9966                if inlined {
9967                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9968                    inner_offset = next_offset;
9969                } else {
9970                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9971                    inner_depth.increment()?;
9972                }
9973                let val_ref = self.resolvers.get_or_insert_with(|| {
9974                    fidl::new_empty!(fidl::encoding::UnboundedVector<ResolverRegistration>, D)
9975                });
9976                fidl::decode!(
9977                    fidl::encoding::UnboundedVector<ResolverRegistration>,
9978                    D,
9979                    val_ref,
9980                    decoder,
9981                    inner_offset,
9982                    inner_depth
9983                )?;
9984                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9985                {
9986                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9987                }
9988                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9989                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9990                }
9991            }
9992
9993            next_offset += envelope_size;
9994            _next_ordinal_to_read += 1;
9995            if next_offset >= end_offset {
9996                return Ok(());
9997            }
9998
9999            // Decode unknown envelopes for gaps in ordinals.
10000            while _next_ordinal_to_read < 5 {
10001                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10002                _next_ordinal_to_read += 1;
10003                next_offset += envelope_size;
10004            }
10005
10006            let next_out_of_line = decoder.next_out_of_line();
10007            let handles_before = decoder.remaining_handles();
10008            if let Some((inlined, num_bytes, num_handles)) =
10009                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10010            {
10011                let member_inline_size = <fidl::encoding::UnboundedVector<DebugRegistration> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10012                if inlined != (member_inline_size <= 4) {
10013                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10014                }
10015                let inner_offset;
10016                let mut inner_depth = depth.clone();
10017                if inlined {
10018                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10019                    inner_offset = next_offset;
10020                } else {
10021                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10022                    inner_depth.increment()?;
10023                }
10024                let val_ref = self.debug_capabilities.get_or_insert_with(|| {
10025                    fidl::new_empty!(fidl::encoding::UnboundedVector<DebugRegistration>, D)
10026                });
10027                fidl::decode!(
10028                    fidl::encoding::UnboundedVector<DebugRegistration>,
10029                    D,
10030                    val_ref,
10031                    decoder,
10032                    inner_offset,
10033                    inner_depth
10034                )?;
10035                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10036                {
10037                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10038                }
10039                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10040                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10041                }
10042            }
10043
10044            next_offset += envelope_size;
10045            _next_ordinal_to_read += 1;
10046            if next_offset >= end_offset {
10047                return Ok(());
10048            }
10049
10050            // Decode unknown envelopes for gaps in ordinals.
10051            while _next_ordinal_to_read < 6 {
10052                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10053                _next_ordinal_to_read += 1;
10054                next_offset += envelope_size;
10055            }
10056
10057            let next_out_of_line = decoder.next_out_of_line();
10058            let handles_before = decoder.remaining_handles();
10059            if let Some((inlined, num_bytes, num_handles)) =
10060                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10061            {
10062                let member_inline_size =
10063                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10064                if inlined != (member_inline_size <= 4) {
10065                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10066                }
10067                let inner_offset;
10068                let mut inner_depth = depth.clone();
10069                if inlined {
10070                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10071                    inner_offset = next_offset;
10072                } else {
10073                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10074                    inner_depth.increment()?;
10075                }
10076                let val_ref = self.stop_timeout_ms.get_or_insert_with(|| fidl::new_empty!(u32, D));
10077                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
10078                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10079                {
10080                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10081                }
10082                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10083                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10084                }
10085            }
10086
10087            next_offset += envelope_size;
10088
10089            // Decode the remaining unknown envelopes.
10090            while next_offset < end_offset {
10091                _next_ordinal_to_read += 1;
10092                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10093                next_offset += envelope_size;
10094            }
10095
10096            Ok(())
10097        }
10098    }
10099
10100    impl EventStream {
10101        #[inline(always)]
10102        fn max_ordinal_present(&self) -> u64 {
10103            if let Some(_) = self.name {
10104                return 1;
10105            }
10106            0
10107        }
10108    }
10109
10110    impl fidl::encoding::ValueTypeMarker for EventStream {
10111        type Borrowed<'a> = &'a Self;
10112        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10113            value
10114        }
10115    }
10116
10117    unsafe impl fidl::encoding::TypeMarker for EventStream {
10118        type Owned = Self;
10119
10120        #[inline(always)]
10121        fn inline_align(_context: fidl::encoding::Context) -> usize {
10122            8
10123        }
10124
10125        #[inline(always)]
10126        fn inline_size(_context: fidl::encoding::Context) -> usize {
10127            16
10128        }
10129    }
10130
10131    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<EventStream, D>
10132        for &EventStream
10133    {
10134        unsafe fn encode(
10135            self,
10136            encoder: &mut fidl::encoding::Encoder<'_, D>,
10137            offset: usize,
10138            mut depth: fidl::encoding::Depth,
10139        ) -> fidl::Result<()> {
10140            encoder.debug_check_bounds::<EventStream>(offset);
10141            // Vector header
10142            let max_ordinal: u64 = self.max_ordinal_present();
10143            encoder.write_num(max_ordinal, offset);
10144            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
10145            // Calling encoder.out_of_line_offset(0) is not allowed.
10146            if max_ordinal == 0 {
10147                return Ok(());
10148            }
10149            depth.increment()?;
10150            let envelope_size = 8;
10151            let bytes_len = max_ordinal as usize * envelope_size;
10152            #[allow(unused_variables)]
10153            let offset = encoder.out_of_line_offset(bytes_len);
10154            let mut _prev_end_offset: usize = 0;
10155            if 1 > max_ordinal {
10156                return Ok(());
10157            }
10158
10159            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10160            // are envelope_size bytes.
10161            let cur_offset: usize = (1 - 1) * envelope_size;
10162
10163            // Zero reserved fields.
10164            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10165
10166            // Safety:
10167            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10168            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10169            //   envelope_size bytes, there is always sufficient room.
10170            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
10171                self.name.as_ref().map(
10172                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
10173                ),
10174                encoder,
10175                offset + cur_offset,
10176                depth,
10177            )?;
10178
10179            _prev_end_offset = cur_offset + envelope_size;
10180
10181            Ok(())
10182        }
10183    }
10184
10185    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for EventStream {
10186        #[inline(always)]
10187        fn new_empty() -> Self {
10188            Self::default()
10189        }
10190
10191        unsafe fn decode(
10192            &mut self,
10193            decoder: &mut fidl::encoding::Decoder<'_, D>,
10194            offset: usize,
10195            mut depth: fidl::encoding::Depth,
10196        ) -> fidl::Result<()> {
10197            decoder.debug_check_bounds::<Self>(offset);
10198            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
10199                None => return Err(fidl::Error::NotNullable),
10200                Some(len) => len,
10201            };
10202            // Calling decoder.out_of_line_offset(0) is not allowed.
10203            if len == 0 {
10204                return Ok(());
10205            };
10206            depth.increment()?;
10207            let envelope_size = 8;
10208            let bytes_len = len * envelope_size;
10209            let offset = decoder.out_of_line_offset(bytes_len)?;
10210            // Decode the envelope for each type.
10211            let mut _next_ordinal_to_read = 0;
10212            let mut next_offset = offset;
10213            let end_offset = offset + bytes_len;
10214            _next_ordinal_to_read += 1;
10215            if next_offset >= end_offset {
10216                return Ok(());
10217            }
10218
10219            // Decode unknown envelopes for gaps in ordinals.
10220            while _next_ordinal_to_read < 1 {
10221                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10222                _next_ordinal_to_read += 1;
10223                next_offset += envelope_size;
10224            }
10225
10226            let next_out_of_line = decoder.next_out_of_line();
10227            let handles_before = decoder.remaining_handles();
10228            if let Some((inlined, num_bytes, num_handles)) =
10229                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10230            {
10231                let member_inline_size =
10232                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
10233                        decoder.context,
10234                    );
10235                if inlined != (member_inline_size <= 4) {
10236                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10237                }
10238                let inner_offset;
10239                let mut inner_depth = depth.clone();
10240                if inlined {
10241                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10242                    inner_offset = next_offset;
10243                } else {
10244                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10245                    inner_depth.increment()?;
10246                }
10247                let val_ref = self
10248                    .name
10249                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
10250                fidl::decode!(
10251                    fidl::encoding::BoundedString<100>,
10252                    D,
10253                    val_ref,
10254                    decoder,
10255                    inner_offset,
10256                    inner_depth
10257                )?;
10258                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10259                {
10260                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10261                }
10262                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10263                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10264                }
10265            }
10266
10267            next_offset += envelope_size;
10268
10269            // Decode the remaining unknown envelopes.
10270            while next_offset < end_offset {
10271                _next_ordinal_to_read += 1;
10272                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10273                next_offset += envelope_size;
10274            }
10275
10276            Ok(())
10277        }
10278    }
10279
10280    impl EventSubscription {
10281        #[inline(always)]
10282        fn max_ordinal_present(&self) -> u64 {
10283            if let Some(_) = self.event_name {
10284                return 1;
10285            }
10286            0
10287        }
10288    }
10289
10290    impl fidl::encoding::ValueTypeMarker for EventSubscription {
10291        type Borrowed<'a> = &'a Self;
10292        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10293            value
10294        }
10295    }
10296
10297    unsafe impl fidl::encoding::TypeMarker for EventSubscription {
10298        type Owned = Self;
10299
10300        #[inline(always)]
10301        fn inline_align(_context: fidl::encoding::Context) -> usize {
10302            8
10303        }
10304
10305        #[inline(always)]
10306        fn inline_size(_context: fidl::encoding::Context) -> usize {
10307            16
10308        }
10309    }
10310
10311    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<EventSubscription, D>
10312        for &EventSubscription
10313    {
10314        unsafe fn encode(
10315            self,
10316            encoder: &mut fidl::encoding::Encoder<'_, D>,
10317            offset: usize,
10318            mut depth: fidl::encoding::Depth,
10319        ) -> fidl::Result<()> {
10320            encoder.debug_check_bounds::<EventSubscription>(offset);
10321            // Vector header
10322            let max_ordinal: u64 = self.max_ordinal_present();
10323            encoder.write_num(max_ordinal, offset);
10324            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
10325            // Calling encoder.out_of_line_offset(0) is not allowed.
10326            if max_ordinal == 0 {
10327                return Ok(());
10328            }
10329            depth.increment()?;
10330            let envelope_size = 8;
10331            let bytes_len = max_ordinal as usize * envelope_size;
10332            #[allow(unused_variables)]
10333            let offset = encoder.out_of_line_offset(bytes_len);
10334            let mut _prev_end_offset: usize = 0;
10335            if 1 > max_ordinal {
10336                return Ok(());
10337            }
10338
10339            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10340            // are envelope_size bytes.
10341            let cur_offset: usize = (1 - 1) * envelope_size;
10342
10343            // Zero reserved fields.
10344            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10345
10346            // Safety:
10347            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10348            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10349            //   envelope_size bytes, there is always sufficient room.
10350            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
10351                self.event_name.as_ref().map(
10352                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
10353                ),
10354                encoder,
10355                offset + cur_offset,
10356                depth,
10357            )?;
10358
10359            _prev_end_offset = cur_offset + envelope_size;
10360
10361            Ok(())
10362        }
10363    }
10364
10365    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for EventSubscription {
10366        #[inline(always)]
10367        fn new_empty() -> Self {
10368            Self::default()
10369        }
10370
10371        unsafe fn decode(
10372            &mut self,
10373            decoder: &mut fidl::encoding::Decoder<'_, D>,
10374            offset: usize,
10375            mut depth: fidl::encoding::Depth,
10376        ) -> fidl::Result<()> {
10377            decoder.debug_check_bounds::<Self>(offset);
10378            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
10379                None => return Err(fidl::Error::NotNullable),
10380                Some(len) => len,
10381            };
10382            // Calling decoder.out_of_line_offset(0) is not allowed.
10383            if len == 0 {
10384                return Ok(());
10385            };
10386            depth.increment()?;
10387            let envelope_size = 8;
10388            let bytes_len = len * envelope_size;
10389            let offset = decoder.out_of_line_offset(bytes_len)?;
10390            // Decode the envelope for each type.
10391            let mut _next_ordinal_to_read = 0;
10392            let mut next_offset = offset;
10393            let end_offset = offset + bytes_len;
10394            _next_ordinal_to_read += 1;
10395            if next_offset >= end_offset {
10396                return Ok(());
10397            }
10398
10399            // Decode unknown envelopes for gaps in ordinals.
10400            while _next_ordinal_to_read < 1 {
10401                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10402                _next_ordinal_to_read += 1;
10403                next_offset += envelope_size;
10404            }
10405
10406            let next_out_of_line = decoder.next_out_of_line();
10407            let handles_before = decoder.remaining_handles();
10408            if let Some((inlined, num_bytes, num_handles)) =
10409                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10410            {
10411                let member_inline_size =
10412                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
10413                        decoder.context,
10414                    );
10415                if inlined != (member_inline_size <= 4) {
10416                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10417                }
10418                let inner_offset;
10419                let mut inner_depth = depth.clone();
10420                if inlined {
10421                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10422                    inner_offset = next_offset;
10423                } else {
10424                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10425                    inner_depth.increment()?;
10426                }
10427                let val_ref = self
10428                    .event_name
10429                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
10430                fidl::decode!(
10431                    fidl::encoding::BoundedString<100>,
10432                    D,
10433                    val_ref,
10434                    decoder,
10435                    inner_offset,
10436                    inner_depth
10437                )?;
10438                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10439                {
10440                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10441                }
10442                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10443                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10444                }
10445            }
10446
10447            next_offset += envelope_size;
10448
10449            // Decode the remaining unknown envelopes.
10450            while next_offset < end_offset {
10451                _next_ordinal_to_read += 1;
10452                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10453                next_offset += envelope_size;
10454            }
10455
10456            Ok(())
10457        }
10458    }
10459
10460    impl ExposeConfiguration {
10461        #[inline(always)]
10462        fn max_ordinal_present(&self) -> u64 {
10463            if let Some(_) = self.source_dictionary {
10464                return 6;
10465            }
10466            if let Some(_) = self.availability {
10467                return 5;
10468            }
10469            if let Some(_) = self.target_name {
10470                return 4;
10471            }
10472            if let Some(_) = self.target {
10473                return 3;
10474            }
10475            if let Some(_) = self.source_name {
10476                return 2;
10477            }
10478            if let Some(_) = self.source {
10479                return 1;
10480            }
10481            0
10482        }
10483    }
10484
10485    impl fidl::encoding::ValueTypeMarker for ExposeConfiguration {
10486        type Borrowed<'a> = &'a Self;
10487        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10488            value
10489        }
10490    }
10491
10492    unsafe impl fidl::encoding::TypeMarker for ExposeConfiguration {
10493        type Owned = Self;
10494
10495        #[inline(always)]
10496        fn inline_align(_context: fidl::encoding::Context) -> usize {
10497            8
10498        }
10499
10500        #[inline(always)]
10501        fn inline_size(_context: fidl::encoding::Context) -> usize {
10502            16
10503        }
10504    }
10505
10506    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ExposeConfiguration, D>
10507        for &ExposeConfiguration
10508    {
10509        unsafe fn encode(
10510            self,
10511            encoder: &mut fidl::encoding::Encoder<'_, D>,
10512            offset: usize,
10513            mut depth: fidl::encoding::Depth,
10514        ) -> fidl::Result<()> {
10515            encoder.debug_check_bounds::<ExposeConfiguration>(offset);
10516            // Vector header
10517            let max_ordinal: u64 = self.max_ordinal_present();
10518            encoder.write_num(max_ordinal, offset);
10519            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
10520            // Calling encoder.out_of_line_offset(0) is not allowed.
10521            if max_ordinal == 0 {
10522                return Ok(());
10523            }
10524            depth.increment()?;
10525            let envelope_size = 8;
10526            let bytes_len = max_ordinal as usize * envelope_size;
10527            #[allow(unused_variables)]
10528            let offset = encoder.out_of_line_offset(bytes_len);
10529            let mut _prev_end_offset: usize = 0;
10530            if 1 > max_ordinal {
10531                return Ok(());
10532            }
10533
10534            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10535            // are envelope_size bytes.
10536            let cur_offset: usize = (1 - 1) * envelope_size;
10537
10538            // Zero reserved fields.
10539            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10540
10541            // Safety:
10542            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10543            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10544            //   envelope_size bytes, there is always sufficient room.
10545            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
10546                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
10547                encoder,
10548                offset + cur_offset,
10549                depth,
10550            )?;
10551
10552            _prev_end_offset = cur_offset + envelope_size;
10553            if 2 > max_ordinal {
10554                return Ok(());
10555            }
10556
10557            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10558            // are envelope_size bytes.
10559            let cur_offset: usize = (2 - 1) * envelope_size;
10560
10561            // Zero reserved fields.
10562            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10563
10564            // Safety:
10565            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10566            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10567            //   envelope_size bytes, there is always sufficient room.
10568            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
10569                self.source_name.as_ref().map(
10570                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
10571                ),
10572                encoder,
10573                offset + cur_offset,
10574                depth,
10575            )?;
10576
10577            _prev_end_offset = cur_offset + envelope_size;
10578            if 3 > max_ordinal {
10579                return Ok(());
10580            }
10581
10582            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10583            // are envelope_size bytes.
10584            let cur_offset: usize = (3 - 1) * envelope_size;
10585
10586            // Zero reserved fields.
10587            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10588
10589            // Safety:
10590            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10591            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10592            //   envelope_size bytes, there is always sufficient room.
10593            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
10594                self.target.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
10595                encoder,
10596                offset + cur_offset,
10597                depth,
10598            )?;
10599
10600            _prev_end_offset = cur_offset + envelope_size;
10601            if 4 > max_ordinal {
10602                return Ok(());
10603            }
10604
10605            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10606            // are envelope_size bytes.
10607            let cur_offset: usize = (4 - 1) * envelope_size;
10608
10609            // Zero reserved fields.
10610            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10611
10612            // Safety:
10613            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10614            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10615            //   envelope_size bytes, there is always sufficient room.
10616            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
10617                self.target_name.as_ref().map(
10618                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
10619                ),
10620                encoder,
10621                offset + cur_offset,
10622                depth,
10623            )?;
10624
10625            _prev_end_offset = cur_offset + envelope_size;
10626            if 5 > max_ordinal {
10627                return Ok(());
10628            }
10629
10630            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10631            // are envelope_size bytes.
10632            let cur_offset: usize = (5 - 1) * envelope_size;
10633
10634            // Zero reserved fields.
10635            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10636
10637            // Safety:
10638            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10639            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10640            //   envelope_size bytes, there is always sufficient room.
10641            fidl::encoding::encode_in_envelope_optional::<Availability, D>(
10642                self.availability
10643                    .as_ref()
10644                    .map(<Availability as fidl::encoding::ValueTypeMarker>::borrow),
10645                encoder,
10646                offset + cur_offset,
10647                depth,
10648            )?;
10649
10650            _prev_end_offset = cur_offset + envelope_size;
10651            if 6 > max_ordinal {
10652                return Ok(());
10653            }
10654
10655            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10656            // are envelope_size bytes.
10657            let cur_offset: usize = (6 - 1) * envelope_size;
10658
10659            // Zero reserved fields.
10660            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10661
10662            // Safety:
10663            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10664            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10665            //   envelope_size bytes, there is always sufficient room.
10666            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
10667            self.source_dictionary.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
10668            encoder, offset + cur_offset, depth
10669        )?;
10670
10671            _prev_end_offset = cur_offset + envelope_size;
10672
10673            Ok(())
10674        }
10675    }
10676
10677    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ExposeConfiguration {
10678        #[inline(always)]
10679        fn new_empty() -> Self {
10680            Self::default()
10681        }
10682
10683        unsafe fn decode(
10684            &mut self,
10685            decoder: &mut fidl::encoding::Decoder<'_, D>,
10686            offset: usize,
10687            mut depth: fidl::encoding::Depth,
10688        ) -> fidl::Result<()> {
10689            decoder.debug_check_bounds::<Self>(offset);
10690            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
10691                None => return Err(fidl::Error::NotNullable),
10692                Some(len) => len,
10693            };
10694            // Calling decoder.out_of_line_offset(0) is not allowed.
10695            if len == 0 {
10696                return Ok(());
10697            };
10698            depth.increment()?;
10699            let envelope_size = 8;
10700            let bytes_len = len * envelope_size;
10701            let offset = decoder.out_of_line_offset(bytes_len)?;
10702            // Decode the envelope for each type.
10703            let mut _next_ordinal_to_read = 0;
10704            let mut next_offset = offset;
10705            let end_offset = offset + bytes_len;
10706            _next_ordinal_to_read += 1;
10707            if next_offset >= end_offset {
10708                return Ok(());
10709            }
10710
10711            // Decode unknown envelopes for gaps in ordinals.
10712            while _next_ordinal_to_read < 1 {
10713                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10714                _next_ordinal_to_read += 1;
10715                next_offset += envelope_size;
10716            }
10717
10718            let next_out_of_line = decoder.next_out_of_line();
10719            let handles_before = decoder.remaining_handles();
10720            if let Some((inlined, num_bytes, num_handles)) =
10721                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10722            {
10723                let member_inline_size =
10724                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10725                if inlined != (member_inline_size <= 4) {
10726                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10727                }
10728                let inner_offset;
10729                let mut inner_depth = depth.clone();
10730                if inlined {
10731                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10732                    inner_offset = next_offset;
10733                } else {
10734                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10735                    inner_depth.increment()?;
10736                }
10737                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
10738                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
10739                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10740                {
10741                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10742                }
10743                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10744                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10745                }
10746            }
10747
10748            next_offset += envelope_size;
10749            _next_ordinal_to_read += 1;
10750            if next_offset >= end_offset {
10751                return Ok(());
10752            }
10753
10754            // Decode unknown envelopes for gaps in ordinals.
10755            while _next_ordinal_to_read < 2 {
10756                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10757                _next_ordinal_to_read += 1;
10758                next_offset += envelope_size;
10759            }
10760
10761            let next_out_of_line = decoder.next_out_of_line();
10762            let handles_before = decoder.remaining_handles();
10763            if let Some((inlined, num_bytes, num_handles)) =
10764                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10765            {
10766                let member_inline_size =
10767                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
10768                        decoder.context,
10769                    );
10770                if inlined != (member_inline_size <= 4) {
10771                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10772                }
10773                let inner_offset;
10774                let mut inner_depth = depth.clone();
10775                if inlined {
10776                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10777                    inner_offset = next_offset;
10778                } else {
10779                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10780                    inner_depth.increment()?;
10781                }
10782                let val_ref = self
10783                    .source_name
10784                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
10785                fidl::decode!(
10786                    fidl::encoding::BoundedString<100>,
10787                    D,
10788                    val_ref,
10789                    decoder,
10790                    inner_offset,
10791                    inner_depth
10792                )?;
10793                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10794                {
10795                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10796                }
10797                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10798                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10799                }
10800            }
10801
10802            next_offset += envelope_size;
10803            _next_ordinal_to_read += 1;
10804            if next_offset >= end_offset {
10805                return Ok(());
10806            }
10807
10808            // Decode unknown envelopes for gaps in ordinals.
10809            while _next_ordinal_to_read < 3 {
10810                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10811                _next_ordinal_to_read += 1;
10812                next_offset += envelope_size;
10813            }
10814
10815            let next_out_of_line = decoder.next_out_of_line();
10816            let handles_before = decoder.remaining_handles();
10817            if let Some((inlined, num_bytes, num_handles)) =
10818                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10819            {
10820                let member_inline_size =
10821                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10822                if inlined != (member_inline_size <= 4) {
10823                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10824                }
10825                let inner_offset;
10826                let mut inner_depth = depth.clone();
10827                if inlined {
10828                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10829                    inner_offset = next_offset;
10830                } else {
10831                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10832                    inner_depth.increment()?;
10833                }
10834                let val_ref = self.target.get_or_insert_with(|| fidl::new_empty!(Ref, D));
10835                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
10836                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10837                {
10838                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10839                }
10840                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10841                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10842                }
10843            }
10844
10845            next_offset += envelope_size;
10846            _next_ordinal_to_read += 1;
10847            if next_offset >= end_offset {
10848                return Ok(());
10849            }
10850
10851            // Decode unknown envelopes for gaps in ordinals.
10852            while _next_ordinal_to_read < 4 {
10853                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10854                _next_ordinal_to_read += 1;
10855                next_offset += envelope_size;
10856            }
10857
10858            let next_out_of_line = decoder.next_out_of_line();
10859            let handles_before = decoder.remaining_handles();
10860            if let Some((inlined, num_bytes, num_handles)) =
10861                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10862            {
10863                let member_inline_size =
10864                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
10865                        decoder.context,
10866                    );
10867                if inlined != (member_inline_size <= 4) {
10868                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10869                }
10870                let inner_offset;
10871                let mut inner_depth = depth.clone();
10872                if inlined {
10873                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10874                    inner_offset = next_offset;
10875                } else {
10876                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10877                    inner_depth.increment()?;
10878                }
10879                let val_ref = self
10880                    .target_name
10881                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
10882                fidl::decode!(
10883                    fidl::encoding::BoundedString<100>,
10884                    D,
10885                    val_ref,
10886                    decoder,
10887                    inner_offset,
10888                    inner_depth
10889                )?;
10890                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10891                {
10892                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10893                }
10894                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10895                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10896                }
10897            }
10898
10899            next_offset += envelope_size;
10900            _next_ordinal_to_read += 1;
10901            if next_offset >= end_offset {
10902                return Ok(());
10903            }
10904
10905            // Decode unknown envelopes for gaps in ordinals.
10906            while _next_ordinal_to_read < 5 {
10907                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10908                _next_ordinal_to_read += 1;
10909                next_offset += envelope_size;
10910            }
10911
10912            let next_out_of_line = decoder.next_out_of_line();
10913            let handles_before = decoder.remaining_handles();
10914            if let Some((inlined, num_bytes, num_handles)) =
10915                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10916            {
10917                let member_inline_size =
10918                    <Availability as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10919                if inlined != (member_inline_size <= 4) {
10920                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10921                }
10922                let inner_offset;
10923                let mut inner_depth = depth.clone();
10924                if inlined {
10925                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10926                    inner_offset = next_offset;
10927                } else {
10928                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10929                    inner_depth.increment()?;
10930                }
10931                let val_ref =
10932                    self.availability.get_or_insert_with(|| fidl::new_empty!(Availability, D));
10933                fidl::decode!(Availability, D, val_ref, decoder, inner_offset, inner_depth)?;
10934                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10935                {
10936                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10937                }
10938                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10939                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10940                }
10941            }
10942
10943            next_offset += envelope_size;
10944            _next_ordinal_to_read += 1;
10945            if next_offset >= end_offset {
10946                return Ok(());
10947            }
10948
10949            // Decode unknown envelopes for gaps in ordinals.
10950            while _next_ordinal_to_read < 6 {
10951                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10952                _next_ordinal_to_read += 1;
10953                next_offset += envelope_size;
10954            }
10955
10956            let next_out_of_line = decoder.next_out_of_line();
10957            let handles_before = decoder.remaining_handles();
10958            if let Some((inlined, num_bytes, num_handles)) =
10959                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10960            {
10961                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10962                if inlined != (member_inline_size <= 4) {
10963                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10964                }
10965                let inner_offset;
10966                let mut inner_depth = depth.clone();
10967                if inlined {
10968                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10969                    inner_offset = next_offset;
10970                } else {
10971                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10972                    inner_depth.increment()?;
10973                }
10974                let val_ref = self.source_dictionary.get_or_insert_with(|| {
10975                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
10976                });
10977                fidl::decode!(
10978                    fidl::encoding::BoundedString<1024>,
10979                    D,
10980                    val_ref,
10981                    decoder,
10982                    inner_offset,
10983                    inner_depth
10984                )?;
10985                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10986                {
10987                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10988                }
10989                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10990                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10991                }
10992            }
10993
10994            next_offset += envelope_size;
10995
10996            // Decode the remaining unknown envelopes.
10997            while next_offset < end_offset {
10998                _next_ordinal_to_read += 1;
10999                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11000                next_offset += envelope_size;
11001            }
11002
11003            Ok(())
11004        }
11005    }
11006
11007    impl ExposeDictionary {
11008        #[inline(always)]
11009        fn max_ordinal_present(&self) -> u64 {
11010            if let Some(_) = self.source_dictionary {
11011                return 6;
11012            }
11013            if let Some(_) = self.availability {
11014                return 5;
11015            }
11016            if let Some(_) = self.target_name {
11017                return 4;
11018            }
11019            if let Some(_) = self.target {
11020                return 3;
11021            }
11022            if let Some(_) = self.source_name {
11023                return 2;
11024            }
11025            if let Some(_) = self.source {
11026                return 1;
11027            }
11028            0
11029        }
11030    }
11031
11032    impl fidl::encoding::ValueTypeMarker for ExposeDictionary {
11033        type Borrowed<'a> = &'a Self;
11034        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11035            value
11036        }
11037    }
11038
11039    unsafe impl fidl::encoding::TypeMarker for ExposeDictionary {
11040        type Owned = Self;
11041
11042        #[inline(always)]
11043        fn inline_align(_context: fidl::encoding::Context) -> usize {
11044            8
11045        }
11046
11047        #[inline(always)]
11048        fn inline_size(_context: fidl::encoding::Context) -> usize {
11049            16
11050        }
11051    }
11052
11053    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ExposeDictionary, D>
11054        for &ExposeDictionary
11055    {
11056        unsafe fn encode(
11057            self,
11058            encoder: &mut fidl::encoding::Encoder<'_, D>,
11059            offset: usize,
11060            mut depth: fidl::encoding::Depth,
11061        ) -> fidl::Result<()> {
11062            encoder.debug_check_bounds::<ExposeDictionary>(offset);
11063            // Vector header
11064            let max_ordinal: u64 = self.max_ordinal_present();
11065            encoder.write_num(max_ordinal, offset);
11066            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11067            // Calling encoder.out_of_line_offset(0) is not allowed.
11068            if max_ordinal == 0 {
11069                return Ok(());
11070            }
11071            depth.increment()?;
11072            let envelope_size = 8;
11073            let bytes_len = max_ordinal as usize * envelope_size;
11074            #[allow(unused_variables)]
11075            let offset = encoder.out_of_line_offset(bytes_len);
11076            let mut _prev_end_offset: usize = 0;
11077            if 1 > max_ordinal {
11078                return Ok(());
11079            }
11080
11081            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11082            // are envelope_size bytes.
11083            let cur_offset: usize = (1 - 1) * envelope_size;
11084
11085            // Zero reserved fields.
11086            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11087
11088            // Safety:
11089            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11090            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11091            //   envelope_size bytes, there is always sufficient room.
11092            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
11093                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
11094                encoder,
11095                offset + cur_offset,
11096                depth,
11097            )?;
11098
11099            _prev_end_offset = cur_offset + envelope_size;
11100            if 2 > max_ordinal {
11101                return Ok(());
11102            }
11103
11104            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11105            // are envelope_size bytes.
11106            let cur_offset: usize = (2 - 1) * envelope_size;
11107
11108            // Zero reserved fields.
11109            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11110
11111            // Safety:
11112            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11113            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11114            //   envelope_size bytes, there is always sufficient room.
11115            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
11116                self.source_name.as_ref().map(
11117                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
11118                ),
11119                encoder,
11120                offset + cur_offset,
11121                depth,
11122            )?;
11123
11124            _prev_end_offset = cur_offset + envelope_size;
11125            if 3 > max_ordinal {
11126                return Ok(());
11127            }
11128
11129            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11130            // are envelope_size bytes.
11131            let cur_offset: usize = (3 - 1) * envelope_size;
11132
11133            // Zero reserved fields.
11134            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11135
11136            // Safety:
11137            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11138            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11139            //   envelope_size bytes, there is always sufficient room.
11140            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
11141                self.target.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
11142                encoder,
11143                offset + cur_offset,
11144                depth,
11145            )?;
11146
11147            _prev_end_offset = cur_offset + envelope_size;
11148            if 4 > max_ordinal {
11149                return Ok(());
11150            }
11151
11152            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11153            // are envelope_size bytes.
11154            let cur_offset: usize = (4 - 1) * envelope_size;
11155
11156            // Zero reserved fields.
11157            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11158
11159            // Safety:
11160            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11161            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11162            //   envelope_size bytes, there is always sufficient room.
11163            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
11164                self.target_name.as_ref().map(
11165                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
11166                ),
11167                encoder,
11168                offset + cur_offset,
11169                depth,
11170            )?;
11171
11172            _prev_end_offset = cur_offset + envelope_size;
11173            if 5 > max_ordinal {
11174                return Ok(());
11175            }
11176
11177            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11178            // are envelope_size bytes.
11179            let cur_offset: usize = (5 - 1) * envelope_size;
11180
11181            // Zero reserved fields.
11182            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11183
11184            // Safety:
11185            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11186            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11187            //   envelope_size bytes, there is always sufficient room.
11188            fidl::encoding::encode_in_envelope_optional::<Availability, D>(
11189                self.availability
11190                    .as_ref()
11191                    .map(<Availability as fidl::encoding::ValueTypeMarker>::borrow),
11192                encoder,
11193                offset + cur_offset,
11194                depth,
11195            )?;
11196
11197            _prev_end_offset = cur_offset + envelope_size;
11198            if 6 > max_ordinal {
11199                return Ok(());
11200            }
11201
11202            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11203            // are envelope_size bytes.
11204            let cur_offset: usize = (6 - 1) * envelope_size;
11205
11206            // Zero reserved fields.
11207            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11208
11209            // Safety:
11210            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11211            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11212            //   envelope_size bytes, there is always sufficient room.
11213            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
11214            self.source_dictionary.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
11215            encoder, offset + cur_offset, depth
11216        )?;
11217
11218            _prev_end_offset = cur_offset + envelope_size;
11219
11220            Ok(())
11221        }
11222    }
11223
11224    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ExposeDictionary {
11225        #[inline(always)]
11226        fn new_empty() -> Self {
11227            Self::default()
11228        }
11229
11230        unsafe fn decode(
11231            &mut self,
11232            decoder: &mut fidl::encoding::Decoder<'_, D>,
11233            offset: usize,
11234            mut depth: fidl::encoding::Depth,
11235        ) -> fidl::Result<()> {
11236            decoder.debug_check_bounds::<Self>(offset);
11237            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11238                None => return Err(fidl::Error::NotNullable),
11239                Some(len) => len,
11240            };
11241            // Calling decoder.out_of_line_offset(0) is not allowed.
11242            if len == 0 {
11243                return Ok(());
11244            };
11245            depth.increment()?;
11246            let envelope_size = 8;
11247            let bytes_len = len * envelope_size;
11248            let offset = decoder.out_of_line_offset(bytes_len)?;
11249            // Decode the envelope for each type.
11250            let mut _next_ordinal_to_read = 0;
11251            let mut next_offset = offset;
11252            let end_offset = offset + bytes_len;
11253            _next_ordinal_to_read += 1;
11254            if next_offset >= end_offset {
11255                return Ok(());
11256            }
11257
11258            // Decode unknown envelopes for gaps in ordinals.
11259            while _next_ordinal_to_read < 1 {
11260                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11261                _next_ordinal_to_read += 1;
11262                next_offset += envelope_size;
11263            }
11264
11265            let next_out_of_line = decoder.next_out_of_line();
11266            let handles_before = decoder.remaining_handles();
11267            if let Some((inlined, num_bytes, num_handles)) =
11268                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11269            {
11270                let member_inline_size =
11271                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11272                if inlined != (member_inline_size <= 4) {
11273                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11274                }
11275                let inner_offset;
11276                let mut inner_depth = depth.clone();
11277                if inlined {
11278                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11279                    inner_offset = next_offset;
11280                } else {
11281                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11282                    inner_depth.increment()?;
11283                }
11284                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
11285                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
11286                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11287                {
11288                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11289                }
11290                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11291                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11292                }
11293            }
11294
11295            next_offset += envelope_size;
11296            _next_ordinal_to_read += 1;
11297            if next_offset >= end_offset {
11298                return Ok(());
11299            }
11300
11301            // Decode unknown envelopes for gaps in ordinals.
11302            while _next_ordinal_to_read < 2 {
11303                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11304                _next_ordinal_to_read += 1;
11305                next_offset += envelope_size;
11306            }
11307
11308            let next_out_of_line = decoder.next_out_of_line();
11309            let handles_before = decoder.remaining_handles();
11310            if let Some((inlined, num_bytes, num_handles)) =
11311                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11312            {
11313                let member_inline_size =
11314                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
11315                        decoder.context,
11316                    );
11317                if inlined != (member_inline_size <= 4) {
11318                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11319                }
11320                let inner_offset;
11321                let mut inner_depth = depth.clone();
11322                if inlined {
11323                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11324                    inner_offset = next_offset;
11325                } else {
11326                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11327                    inner_depth.increment()?;
11328                }
11329                let val_ref = self
11330                    .source_name
11331                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
11332                fidl::decode!(
11333                    fidl::encoding::BoundedString<100>,
11334                    D,
11335                    val_ref,
11336                    decoder,
11337                    inner_offset,
11338                    inner_depth
11339                )?;
11340                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11341                {
11342                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11343                }
11344                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11345                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11346                }
11347            }
11348
11349            next_offset += envelope_size;
11350            _next_ordinal_to_read += 1;
11351            if next_offset >= end_offset {
11352                return Ok(());
11353            }
11354
11355            // Decode unknown envelopes for gaps in ordinals.
11356            while _next_ordinal_to_read < 3 {
11357                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11358                _next_ordinal_to_read += 1;
11359                next_offset += envelope_size;
11360            }
11361
11362            let next_out_of_line = decoder.next_out_of_line();
11363            let handles_before = decoder.remaining_handles();
11364            if let Some((inlined, num_bytes, num_handles)) =
11365                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11366            {
11367                let member_inline_size =
11368                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11369                if inlined != (member_inline_size <= 4) {
11370                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11371                }
11372                let inner_offset;
11373                let mut inner_depth = depth.clone();
11374                if inlined {
11375                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11376                    inner_offset = next_offset;
11377                } else {
11378                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11379                    inner_depth.increment()?;
11380                }
11381                let val_ref = self.target.get_or_insert_with(|| fidl::new_empty!(Ref, D));
11382                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
11383                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11384                {
11385                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11386                }
11387                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11388                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11389                }
11390            }
11391
11392            next_offset += envelope_size;
11393            _next_ordinal_to_read += 1;
11394            if next_offset >= end_offset {
11395                return Ok(());
11396            }
11397
11398            // Decode unknown envelopes for gaps in ordinals.
11399            while _next_ordinal_to_read < 4 {
11400                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11401                _next_ordinal_to_read += 1;
11402                next_offset += envelope_size;
11403            }
11404
11405            let next_out_of_line = decoder.next_out_of_line();
11406            let handles_before = decoder.remaining_handles();
11407            if let Some((inlined, num_bytes, num_handles)) =
11408                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11409            {
11410                let member_inline_size =
11411                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
11412                        decoder.context,
11413                    );
11414                if inlined != (member_inline_size <= 4) {
11415                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11416                }
11417                let inner_offset;
11418                let mut inner_depth = depth.clone();
11419                if inlined {
11420                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11421                    inner_offset = next_offset;
11422                } else {
11423                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11424                    inner_depth.increment()?;
11425                }
11426                let val_ref = self
11427                    .target_name
11428                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
11429                fidl::decode!(
11430                    fidl::encoding::BoundedString<100>,
11431                    D,
11432                    val_ref,
11433                    decoder,
11434                    inner_offset,
11435                    inner_depth
11436                )?;
11437                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11438                {
11439                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11440                }
11441                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11442                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11443                }
11444            }
11445
11446            next_offset += envelope_size;
11447            _next_ordinal_to_read += 1;
11448            if next_offset >= end_offset {
11449                return Ok(());
11450            }
11451
11452            // Decode unknown envelopes for gaps in ordinals.
11453            while _next_ordinal_to_read < 5 {
11454                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11455                _next_ordinal_to_read += 1;
11456                next_offset += envelope_size;
11457            }
11458
11459            let next_out_of_line = decoder.next_out_of_line();
11460            let handles_before = decoder.remaining_handles();
11461            if let Some((inlined, num_bytes, num_handles)) =
11462                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11463            {
11464                let member_inline_size =
11465                    <Availability as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11466                if inlined != (member_inline_size <= 4) {
11467                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11468                }
11469                let inner_offset;
11470                let mut inner_depth = depth.clone();
11471                if inlined {
11472                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11473                    inner_offset = next_offset;
11474                } else {
11475                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11476                    inner_depth.increment()?;
11477                }
11478                let val_ref =
11479                    self.availability.get_or_insert_with(|| fidl::new_empty!(Availability, D));
11480                fidl::decode!(Availability, D, val_ref, decoder, inner_offset, inner_depth)?;
11481                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11482                {
11483                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11484                }
11485                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11486                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11487                }
11488            }
11489
11490            next_offset += envelope_size;
11491            _next_ordinal_to_read += 1;
11492            if next_offset >= end_offset {
11493                return Ok(());
11494            }
11495
11496            // Decode unknown envelopes for gaps in ordinals.
11497            while _next_ordinal_to_read < 6 {
11498                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11499                _next_ordinal_to_read += 1;
11500                next_offset += envelope_size;
11501            }
11502
11503            let next_out_of_line = decoder.next_out_of_line();
11504            let handles_before = decoder.remaining_handles();
11505            if let Some((inlined, num_bytes, num_handles)) =
11506                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11507            {
11508                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11509                if inlined != (member_inline_size <= 4) {
11510                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11511                }
11512                let inner_offset;
11513                let mut inner_depth = depth.clone();
11514                if inlined {
11515                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11516                    inner_offset = next_offset;
11517                } else {
11518                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11519                    inner_depth.increment()?;
11520                }
11521                let val_ref = self.source_dictionary.get_or_insert_with(|| {
11522                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
11523                });
11524                fidl::decode!(
11525                    fidl::encoding::BoundedString<1024>,
11526                    D,
11527                    val_ref,
11528                    decoder,
11529                    inner_offset,
11530                    inner_depth
11531                )?;
11532                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11533                {
11534                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11535                }
11536                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11537                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11538                }
11539            }
11540
11541            next_offset += envelope_size;
11542
11543            // Decode the remaining unknown envelopes.
11544            while next_offset < end_offset {
11545                _next_ordinal_to_read += 1;
11546                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11547                next_offset += envelope_size;
11548            }
11549
11550            Ok(())
11551        }
11552    }
11553
11554    impl ExposeDirectory {
11555        #[inline(always)]
11556        fn max_ordinal_present(&self) -> u64 {
11557            if let Some(_) = self.source_dictionary {
11558                return 8;
11559            }
11560            if let Some(_) = self.availability {
11561                return 7;
11562            }
11563            if let Some(_) = self.subdir {
11564                return 6;
11565            }
11566            if let Some(_) = self.rights {
11567                return 5;
11568            }
11569            if let Some(_) = self.target_name {
11570                return 4;
11571            }
11572            if let Some(_) = self.target {
11573                return 3;
11574            }
11575            if let Some(_) = self.source_name {
11576                return 2;
11577            }
11578            if let Some(_) = self.source {
11579                return 1;
11580            }
11581            0
11582        }
11583    }
11584
11585    impl fidl::encoding::ValueTypeMarker for ExposeDirectory {
11586        type Borrowed<'a> = &'a Self;
11587        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11588            value
11589        }
11590    }
11591
11592    unsafe impl fidl::encoding::TypeMarker for ExposeDirectory {
11593        type Owned = Self;
11594
11595        #[inline(always)]
11596        fn inline_align(_context: fidl::encoding::Context) -> usize {
11597            8
11598        }
11599
11600        #[inline(always)]
11601        fn inline_size(_context: fidl::encoding::Context) -> usize {
11602            16
11603        }
11604    }
11605
11606    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ExposeDirectory, D>
11607        for &ExposeDirectory
11608    {
11609        unsafe fn encode(
11610            self,
11611            encoder: &mut fidl::encoding::Encoder<'_, D>,
11612            offset: usize,
11613            mut depth: fidl::encoding::Depth,
11614        ) -> fidl::Result<()> {
11615            encoder.debug_check_bounds::<ExposeDirectory>(offset);
11616            // Vector header
11617            let max_ordinal: u64 = self.max_ordinal_present();
11618            encoder.write_num(max_ordinal, offset);
11619            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11620            // Calling encoder.out_of_line_offset(0) is not allowed.
11621            if max_ordinal == 0 {
11622                return Ok(());
11623            }
11624            depth.increment()?;
11625            let envelope_size = 8;
11626            let bytes_len = max_ordinal as usize * envelope_size;
11627            #[allow(unused_variables)]
11628            let offset = encoder.out_of_line_offset(bytes_len);
11629            let mut _prev_end_offset: usize = 0;
11630            if 1 > max_ordinal {
11631                return Ok(());
11632            }
11633
11634            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11635            // are envelope_size bytes.
11636            let cur_offset: usize = (1 - 1) * envelope_size;
11637
11638            // Zero reserved fields.
11639            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11640
11641            // Safety:
11642            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11643            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11644            //   envelope_size bytes, there is always sufficient room.
11645            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
11646                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
11647                encoder,
11648                offset + cur_offset,
11649                depth,
11650            )?;
11651
11652            _prev_end_offset = cur_offset + envelope_size;
11653            if 2 > max_ordinal {
11654                return Ok(());
11655            }
11656
11657            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11658            // are envelope_size bytes.
11659            let cur_offset: usize = (2 - 1) * envelope_size;
11660
11661            // Zero reserved fields.
11662            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11663
11664            // Safety:
11665            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11666            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11667            //   envelope_size bytes, there is always sufficient room.
11668            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
11669                self.source_name.as_ref().map(
11670                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
11671                ),
11672                encoder,
11673                offset + cur_offset,
11674                depth,
11675            )?;
11676
11677            _prev_end_offset = cur_offset + envelope_size;
11678            if 3 > max_ordinal {
11679                return Ok(());
11680            }
11681
11682            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11683            // are envelope_size bytes.
11684            let cur_offset: usize = (3 - 1) * envelope_size;
11685
11686            // Zero reserved fields.
11687            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11688
11689            // Safety:
11690            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11691            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11692            //   envelope_size bytes, there is always sufficient room.
11693            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
11694                self.target.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
11695                encoder,
11696                offset + cur_offset,
11697                depth,
11698            )?;
11699
11700            _prev_end_offset = cur_offset + envelope_size;
11701            if 4 > max_ordinal {
11702                return Ok(());
11703            }
11704
11705            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11706            // are envelope_size bytes.
11707            let cur_offset: usize = (4 - 1) * envelope_size;
11708
11709            // Zero reserved fields.
11710            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11711
11712            // Safety:
11713            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11714            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11715            //   envelope_size bytes, there is always sufficient room.
11716            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
11717                self.target_name.as_ref().map(
11718                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
11719                ),
11720                encoder,
11721                offset + cur_offset,
11722                depth,
11723            )?;
11724
11725            _prev_end_offset = cur_offset + envelope_size;
11726            if 5 > max_ordinal {
11727                return Ok(());
11728            }
11729
11730            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11731            // are envelope_size bytes.
11732            let cur_offset: usize = (5 - 1) * envelope_size;
11733
11734            // Zero reserved fields.
11735            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11736
11737            // Safety:
11738            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11739            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11740            //   envelope_size bytes, there is always sufficient room.
11741            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_io__common::Operations, D>(
11742            self.rights.as_ref().map(<fidl_fuchsia_io__common::Operations as fidl::encoding::ValueTypeMarker>::borrow),
11743            encoder, offset + cur_offset, depth
11744        )?;
11745
11746            _prev_end_offset = cur_offset + envelope_size;
11747            if 6 > max_ordinal {
11748                return Ok(());
11749            }
11750
11751            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11752            // are envelope_size bytes.
11753            let cur_offset: usize = (6 - 1) * envelope_size;
11754
11755            // Zero reserved fields.
11756            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11757
11758            // Safety:
11759            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11760            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11761            //   envelope_size bytes, there is always sufficient room.
11762            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
11763            self.subdir.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
11764            encoder, offset + cur_offset, depth
11765        )?;
11766
11767            _prev_end_offset = cur_offset + envelope_size;
11768            if 7 > max_ordinal {
11769                return Ok(());
11770            }
11771
11772            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11773            // are envelope_size bytes.
11774            let cur_offset: usize = (7 - 1) * envelope_size;
11775
11776            // Zero reserved fields.
11777            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11778
11779            // Safety:
11780            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11781            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11782            //   envelope_size bytes, there is always sufficient room.
11783            fidl::encoding::encode_in_envelope_optional::<Availability, D>(
11784                self.availability
11785                    .as_ref()
11786                    .map(<Availability as fidl::encoding::ValueTypeMarker>::borrow),
11787                encoder,
11788                offset + cur_offset,
11789                depth,
11790            )?;
11791
11792            _prev_end_offset = cur_offset + envelope_size;
11793            if 8 > max_ordinal {
11794                return Ok(());
11795            }
11796
11797            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11798            // are envelope_size bytes.
11799            let cur_offset: usize = (8 - 1) * envelope_size;
11800
11801            // Zero reserved fields.
11802            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11803
11804            // Safety:
11805            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11806            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11807            //   envelope_size bytes, there is always sufficient room.
11808            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
11809            self.source_dictionary.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
11810            encoder, offset + cur_offset, depth
11811        )?;
11812
11813            _prev_end_offset = cur_offset + envelope_size;
11814
11815            Ok(())
11816        }
11817    }
11818
11819    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ExposeDirectory {
11820        #[inline(always)]
11821        fn new_empty() -> Self {
11822            Self::default()
11823        }
11824
11825        unsafe fn decode(
11826            &mut self,
11827            decoder: &mut fidl::encoding::Decoder<'_, D>,
11828            offset: usize,
11829            mut depth: fidl::encoding::Depth,
11830        ) -> fidl::Result<()> {
11831            decoder.debug_check_bounds::<Self>(offset);
11832            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11833                None => return Err(fidl::Error::NotNullable),
11834                Some(len) => len,
11835            };
11836            // Calling decoder.out_of_line_offset(0) is not allowed.
11837            if len == 0 {
11838                return Ok(());
11839            };
11840            depth.increment()?;
11841            let envelope_size = 8;
11842            let bytes_len = len * envelope_size;
11843            let offset = decoder.out_of_line_offset(bytes_len)?;
11844            // Decode the envelope for each type.
11845            let mut _next_ordinal_to_read = 0;
11846            let mut next_offset = offset;
11847            let end_offset = offset + bytes_len;
11848            _next_ordinal_to_read += 1;
11849            if next_offset >= end_offset {
11850                return Ok(());
11851            }
11852
11853            // Decode unknown envelopes for gaps in ordinals.
11854            while _next_ordinal_to_read < 1 {
11855                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11856                _next_ordinal_to_read += 1;
11857                next_offset += envelope_size;
11858            }
11859
11860            let next_out_of_line = decoder.next_out_of_line();
11861            let handles_before = decoder.remaining_handles();
11862            if let Some((inlined, num_bytes, num_handles)) =
11863                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11864            {
11865                let member_inline_size =
11866                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11867                if inlined != (member_inline_size <= 4) {
11868                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11869                }
11870                let inner_offset;
11871                let mut inner_depth = depth.clone();
11872                if inlined {
11873                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11874                    inner_offset = next_offset;
11875                } else {
11876                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11877                    inner_depth.increment()?;
11878                }
11879                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
11880                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
11881                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11882                {
11883                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11884                }
11885                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11886                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11887                }
11888            }
11889
11890            next_offset += envelope_size;
11891            _next_ordinal_to_read += 1;
11892            if next_offset >= end_offset {
11893                return Ok(());
11894            }
11895
11896            // Decode unknown envelopes for gaps in ordinals.
11897            while _next_ordinal_to_read < 2 {
11898                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11899                _next_ordinal_to_read += 1;
11900                next_offset += envelope_size;
11901            }
11902
11903            let next_out_of_line = decoder.next_out_of_line();
11904            let handles_before = decoder.remaining_handles();
11905            if let Some((inlined, num_bytes, num_handles)) =
11906                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11907            {
11908                let member_inline_size =
11909                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
11910                        decoder.context,
11911                    );
11912                if inlined != (member_inline_size <= 4) {
11913                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11914                }
11915                let inner_offset;
11916                let mut inner_depth = depth.clone();
11917                if inlined {
11918                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11919                    inner_offset = next_offset;
11920                } else {
11921                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11922                    inner_depth.increment()?;
11923                }
11924                let val_ref = self
11925                    .source_name
11926                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
11927                fidl::decode!(
11928                    fidl::encoding::BoundedString<100>,
11929                    D,
11930                    val_ref,
11931                    decoder,
11932                    inner_offset,
11933                    inner_depth
11934                )?;
11935                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11936                {
11937                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11938                }
11939                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11940                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11941                }
11942            }
11943
11944            next_offset += envelope_size;
11945            _next_ordinal_to_read += 1;
11946            if next_offset >= end_offset {
11947                return Ok(());
11948            }
11949
11950            // Decode unknown envelopes for gaps in ordinals.
11951            while _next_ordinal_to_read < 3 {
11952                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11953                _next_ordinal_to_read += 1;
11954                next_offset += envelope_size;
11955            }
11956
11957            let next_out_of_line = decoder.next_out_of_line();
11958            let handles_before = decoder.remaining_handles();
11959            if let Some((inlined, num_bytes, num_handles)) =
11960                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11961            {
11962                let member_inline_size =
11963                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11964                if inlined != (member_inline_size <= 4) {
11965                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11966                }
11967                let inner_offset;
11968                let mut inner_depth = depth.clone();
11969                if inlined {
11970                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11971                    inner_offset = next_offset;
11972                } else {
11973                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11974                    inner_depth.increment()?;
11975                }
11976                let val_ref = self.target.get_or_insert_with(|| fidl::new_empty!(Ref, D));
11977                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
11978                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11979                {
11980                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11981                }
11982                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11983                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11984                }
11985            }
11986
11987            next_offset += envelope_size;
11988            _next_ordinal_to_read += 1;
11989            if next_offset >= end_offset {
11990                return Ok(());
11991            }
11992
11993            // Decode unknown envelopes for gaps in ordinals.
11994            while _next_ordinal_to_read < 4 {
11995                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11996                _next_ordinal_to_read += 1;
11997                next_offset += envelope_size;
11998            }
11999
12000            let next_out_of_line = decoder.next_out_of_line();
12001            let handles_before = decoder.remaining_handles();
12002            if let Some((inlined, num_bytes, num_handles)) =
12003                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12004            {
12005                let member_inline_size =
12006                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
12007                        decoder.context,
12008                    );
12009                if inlined != (member_inline_size <= 4) {
12010                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12011                }
12012                let inner_offset;
12013                let mut inner_depth = depth.clone();
12014                if inlined {
12015                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12016                    inner_offset = next_offset;
12017                } else {
12018                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12019                    inner_depth.increment()?;
12020                }
12021                let val_ref = self
12022                    .target_name
12023                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
12024                fidl::decode!(
12025                    fidl::encoding::BoundedString<100>,
12026                    D,
12027                    val_ref,
12028                    decoder,
12029                    inner_offset,
12030                    inner_depth
12031                )?;
12032                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12033                {
12034                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12035                }
12036                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12037                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12038                }
12039            }
12040
12041            next_offset += envelope_size;
12042            _next_ordinal_to_read += 1;
12043            if next_offset >= end_offset {
12044                return Ok(());
12045            }
12046
12047            // Decode unknown envelopes for gaps in ordinals.
12048            while _next_ordinal_to_read < 5 {
12049                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12050                _next_ordinal_to_read += 1;
12051                next_offset += envelope_size;
12052            }
12053
12054            let next_out_of_line = decoder.next_out_of_line();
12055            let handles_before = decoder.remaining_handles();
12056            if let Some((inlined, num_bytes, num_handles)) =
12057                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12058            {
12059                let member_inline_size = <fidl_fuchsia_io__common::Operations as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12060                if inlined != (member_inline_size <= 4) {
12061                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12062                }
12063                let inner_offset;
12064                let mut inner_depth = depth.clone();
12065                if inlined {
12066                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12067                    inner_offset = next_offset;
12068                } else {
12069                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12070                    inner_depth.increment()?;
12071                }
12072                let val_ref = self.rights.get_or_insert_with(|| {
12073                    fidl::new_empty!(fidl_fuchsia_io__common::Operations, D)
12074                });
12075                fidl::decode!(
12076                    fidl_fuchsia_io__common::Operations,
12077                    D,
12078                    val_ref,
12079                    decoder,
12080                    inner_offset,
12081                    inner_depth
12082                )?;
12083                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12084                {
12085                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12086                }
12087                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12088                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12089                }
12090            }
12091
12092            next_offset += envelope_size;
12093            _next_ordinal_to_read += 1;
12094            if next_offset >= end_offset {
12095                return Ok(());
12096            }
12097
12098            // Decode unknown envelopes for gaps in ordinals.
12099            while _next_ordinal_to_read < 6 {
12100                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12101                _next_ordinal_to_read += 1;
12102                next_offset += envelope_size;
12103            }
12104
12105            let next_out_of_line = decoder.next_out_of_line();
12106            let handles_before = decoder.remaining_handles();
12107            if let Some((inlined, num_bytes, num_handles)) =
12108                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12109            {
12110                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12111                if inlined != (member_inline_size <= 4) {
12112                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12113                }
12114                let inner_offset;
12115                let mut inner_depth = depth.clone();
12116                if inlined {
12117                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12118                    inner_offset = next_offset;
12119                } else {
12120                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12121                    inner_depth.increment()?;
12122                }
12123                let val_ref = self.subdir.get_or_insert_with(|| {
12124                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
12125                });
12126                fidl::decode!(
12127                    fidl::encoding::BoundedString<1024>,
12128                    D,
12129                    val_ref,
12130                    decoder,
12131                    inner_offset,
12132                    inner_depth
12133                )?;
12134                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12135                {
12136                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12137                }
12138                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12139                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12140                }
12141            }
12142
12143            next_offset += envelope_size;
12144            _next_ordinal_to_read += 1;
12145            if next_offset >= end_offset {
12146                return Ok(());
12147            }
12148
12149            // Decode unknown envelopes for gaps in ordinals.
12150            while _next_ordinal_to_read < 7 {
12151                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12152                _next_ordinal_to_read += 1;
12153                next_offset += envelope_size;
12154            }
12155
12156            let next_out_of_line = decoder.next_out_of_line();
12157            let handles_before = decoder.remaining_handles();
12158            if let Some((inlined, num_bytes, num_handles)) =
12159                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12160            {
12161                let member_inline_size =
12162                    <Availability as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12163                if inlined != (member_inline_size <= 4) {
12164                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12165                }
12166                let inner_offset;
12167                let mut inner_depth = depth.clone();
12168                if inlined {
12169                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12170                    inner_offset = next_offset;
12171                } else {
12172                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12173                    inner_depth.increment()?;
12174                }
12175                let val_ref =
12176                    self.availability.get_or_insert_with(|| fidl::new_empty!(Availability, D));
12177                fidl::decode!(Availability, D, val_ref, decoder, inner_offset, inner_depth)?;
12178                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12179                {
12180                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12181                }
12182                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12183                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12184                }
12185            }
12186
12187            next_offset += envelope_size;
12188            _next_ordinal_to_read += 1;
12189            if next_offset >= end_offset {
12190                return Ok(());
12191            }
12192
12193            // Decode unknown envelopes for gaps in ordinals.
12194            while _next_ordinal_to_read < 8 {
12195                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12196                _next_ordinal_to_read += 1;
12197                next_offset += envelope_size;
12198            }
12199
12200            let next_out_of_line = decoder.next_out_of_line();
12201            let handles_before = decoder.remaining_handles();
12202            if let Some((inlined, num_bytes, num_handles)) =
12203                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12204            {
12205                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12206                if inlined != (member_inline_size <= 4) {
12207                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12208                }
12209                let inner_offset;
12210                let mut inner_depth = depth.clone();
12211                if inlined {
12212                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12213                    inner_offset = next_offset;
12214                } else {
12215                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12216                    inner_depth.increment()?;
12217                }
12218                let val_ref = self.source_dictionary.get_or_insert_with(|| {
12219                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
12220                });
12221                fidl::decode!(
12222                    fidl::encoding::BoundedString<1024>,
12223                    D,
12224                    val_ref,
12225                    decoder,
12226                    inner_offset,
12227                    inner_depth
12228                )?;
12229                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12230                {
12231                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12232                }
12233                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12234                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12235                }
12236            }
12237
12238            next_offset += envelope_size;
12239
12240            // Decode the remaining unknown envelopes.
12241            while next_offset < end_offset {
12242                _next_ordinal_to_read += 1;
12243                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12244                next_offset += envelope_size;
12245            }
12246
12247            Ok(())
12248        }
12249    }
12250
12251    impl ExposeProtocol {
12252        #[inline(always)]
12253        fn max_ordinal_present(&self) -> u64 {
12254            if let Some(_) = self.source_dictionary {
12255                return 6;
12256            }
12257            if let Some(_) = self.availability {
12258                return 5;
12259            }
12260            if let Some(_) = self.target_name {
12261                return 4;
12262            }
12263            if let Some(_) = self.target {
12264                return 3;
12265            }
12266            if let Some(_) = self.source_name {
12267                return 2;
12268            }
12269            if let Some(_) = self.source {
12270                return 1;
12271            }
12272            0
12273        }
12274    }
12275
12276    impl fidl::encoding::ValueTypeMarker for ExposeProtocol {
12277        type Borrowed<'a> = &'a Self;
12278        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12279            value
12280        }
12281    }
12282
12283    unsafe impl fidl::encoding::TypeMarker for ExposeProtocol {
12284        type Owned = Self;
12285
12286        #[inline(always)]
12287        fn inline_align(_context: fidl::encoding::Context) -> usize {
12288            8
12289        }
12290
12291        #[inline(always)]
12292        fn inline_size(_context: fidl::encoding::Context) -> usize {
12293            16
12294        }
12295    }
12296
12297    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ExposeProtocol, D>
12298        for &ExposeProtocol
12299    {
12300        unsafe fn encode(
12301            self,
12302            encoder: &mut fidl::encoding::Encoder<'_, D>,
12303            offset: usize,
12304            mut depth: fidl::encoding::Depth,
12305        ) -> fidl::Result<()> {
12306            encoder.debug_check_bounds::<ExposeProtocol>(offset);
12307            // Vector header
12308            let max_ordinal: u64 = self.max_ordinal_present();
12309            encoder.write_num(max_ordinal, offset);
12310            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
12311            // Calling encoder.out_of_line_offset(0) is not allowed.
12312            if max_ordinal == 0 {
12313                return Ok(());
12314            }
12315            depth.increment()?;
12316            let envelope_size = 8;
12317            let bytes_len = max_ordinal as usize * envelope_size;
12318            #[allow(unused_variables)]
12319            let offset = encoder.out_of_line_offset(bytes_len);
12320            let mut _prev_end_offset: usize = 0;
12321            if 1 > max_ordinal {
12322                return Ok(());
12323            }
12324
12325            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12326            // are envelope_size bytes.
12327            let cur_offset: usize = (1 - 1) * envelope_size;
12328
12329            // Zero reserved fields.
12330            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12331
12332            // Safety:
12333            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12334            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12335            //   envelope_size bytes, there is always sufficient room.
12336            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
12337                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
12338                encoder,
12339                offset + cur_offset,
12340                depth,
12341            )?;
12342
12343            _prev_end_offset = cur_offset + envelope_size;
12344            if 2 > max_ordinal {
12345                return Ok(());
12346            }
12347
12348            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12349            // are envelope_size bytes.
12350            let cur_offset: usize = (2 - 1) * envelope_size;
12351
12352            // Zero reserved fields.
12353            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12354
12355            // Safety:
12356            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12357            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12358            //   envelope_size bytes, there is always sufficient room.
12359            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
12360                self.source_name.as_ref().map(
12361                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
12362                ),
12363                encoder,
12364                offset + cur_offset,
12365                depth,
12366            )?;
12367
12368            _prev_end_offset = cur_offset + envelope_size;
12369            if 3 > max_ordinal {
12370                return Ok(());
12371            }
12372
12373            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12374            // are envelope_size bytes.
12375            let cur_offset: usize = (3 - 1) * envelope_size;
12376
12377            // Zero reserved fields.
12378            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12379
12380            // Safety:
12381            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12382            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12383            //   envelope_size bytes, there is always sufficient room.
12384            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
12385                self.target.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
12386                encoder,
12387                offset + cur_offset,
12388                depth,
12389            )?;
12390
12391            _prev_end_offset = cur_offset + envelope_size;
12392            if 4 > max_ordinal {
12393                return Ok(());
12394            }
12395
12396            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12397            // are envelope_size bytes.
12398            let cur_offset: usize = (4 - 1) * envelope_size;
12399
12400            // Zero reserved fields.
12401            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12402
12403            // Safety:
12404            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12405            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12406            //   envelope_size bytes, there is always sufficient room.
12407            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
12408                self.target_name.as_ref().map(
12409                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
12410                ),
12411                encoder,
12412                offset + cur_offset,
12413                depth,
12414            )?;
12415
12416            _prev_end_offset = cur_offset + envelope_size;
12417            if 5 > max_ordinal {
12418                return Ok(());
12419            }
12420
12421            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12422            // are envelope_size bytes.
12423            let cur_offset: usize = (5 - 1) * envelope_size;
12424
12425            // Zero reserved fields.
12426            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12427
12428            // Safety:
12429            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12430            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12431            //   envelope_size bytes, there is always sufficient room.
12432            fidl::encoding::encode_in_envelope_optional::<Availability, D>(
12433                self.availability
12434                    .as_ref()
12435                    .map(<Availability as fidl::encoding::ValueTypeMarker>::borrow),
12436                encoder,
12437                offset + cur_offset,
12438                depth,
12439            )?;
12440
12441            _prev_end_offset = cur_offset + envelope_size;
12442            if 6 > max_ordinal {
12443                return Ok(());
12444            }
12445
12446            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12447            // are envelope_size bytes.
12448            let cur_offset: usize = (6 - 1) * envelope_size;
12449
12450            // Zero reserved fields.
12451            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12452
12453            // Safety:
12454            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12455            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12456            //   envelope_size bytes, there is always sufficient room.
12457            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
12458            self.source_dictionary.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
12459            encoder, offset + cur_offset, depth
12460        )?;
12461
12462            _prev_end_offset = cur_offset + envelope_size;
12463
12464            Ok(())
12465        }
12466    }
12467
12468    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ExposeProtocol {
12469        #[inline(always)]
12470        fn new_empty() -> Self {
12471            Self::default()
12472        }
12473
12474        unsafe fn decode(
12475            &mut self,
12476            decoder: &mut fidl::encoding::Decoder<'_, D>,
12477            offset: usize,
12478            mut depth: fidl::encoding::Depth,
12479        ) -> fidl::Result<()> {
12480            decoder.debug_check_bounds::<Self>(offset);
12481            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
12482                None => return Err(fidl::Error::NotNullable),
12483                Some(len) => len,
12484            };
12485            // Calling decoder.out_of_line_offset(0) is not allowed.
12486            if len == 0 {
12487                return Ok(());
12488            };
12489            depth.increment()?;
12490            let envelope_size = 8;
12491            let bytes_len = len * envelope_size;
12492            let offset = decoder.out_of_line_offset(bytes_len)?;
12493            // Decode the envelope for each type.
12494            let mut _next_ordinal_to_read = 0;
12495            let mut next_offset = offset;
12496            let end_offset = offset + bytes_len;
12497            _next_ordinal_to_read += 1;
12498            if next_offset >= end_offset {
12499                return Ok(());
12500            }
12501
12502            // Decode unknown envelopes for gaps in ordinals.
12503            while _next_ordinal_to_read < 1 {
12504                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12505                _next_ordinal_to_read += 1;
12506                next_offset += envelope_size;
12507            }
12508
12509            let next_out_of_line = decoder.next_out_of_line();
12510            let handles_before = decoder.remaining_handles();
12511            if let Some((inlined, num_bytes, num_handles)) =
12512                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12513            {
12514                let member_inline_size =
12515                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12516                if inlined != (member_inline_size <= 4) {
12517                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12518                }
12519                let inner_offset;
12520                let mut inner_depth = depth.clone();
12521                if inlined {
12522                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12523                    inner_offset = next_offset;
12524                } else {
12525                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12526                    inner_depth.increment()?;
12527                }
12528                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
12529                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
12530                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12531                {
12532                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12533                }
12534                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12535                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12536                }
12537            }
12538
12539            next_offset += envelope_size;
12540            _next_ordinal_to_read += 1;
12541            if next_offset >= end_offset {
12542                return Ok(());
12543            }
12544
12545            // Decode unknown envelopes for gaps in ordinals.
12546            while _next_ordinal_to_read < 2 {
12547                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12548                _next_ordinal_to_read += 1;
12549                next_offset += envelope_size;
12550            }
12551
12552            let next_out_of_line = decoder.next_out_of_line();
12553            let handles_before = decoder.remaining_handles();
12554            if let Some((inlined, num_bytes, num_handles)) =
12555                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12556            {
12557                let member_inline_size =
12558                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
12559                        decoder.context,
12560                    );
12561                if inlined != (member_inline_size <= 4) {
12562                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12563                }
12564                let inner_offset;
12565                let mut inner_depth = depth.clone();
12566                if inlined {
12567                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12568                    inner_offset = next_offset;
12569                } else {
12570                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12571                    inner_depth.increment()?;
12572                }
12573                let val_ref = self
12574                    .source_name
12575                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
12576                fidl::decode!(
12577                    fidl::encoding::BoundedString<100>,
12578                    D,
12579                    val_ref,
12580                    decoder,
12581                    inner_offset,
12582                    inner_depth
12583                )?;
12584                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12585                {
12586                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12587                }
12588                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12589                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12590                }
12591            }
12592
12593            next_offset += envelope_size;
12594            _next_ordinal_to_read += 1;
12595            if next_offset >= end_offset {
12596                return Ok(());
12597            }
12598
12599            // Decode unknown envelopes for gaps in ordinals.
12600            while _next_ordinal_to_read < 3 {
12601                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12602                _next_ordinal_to_read += 1;
12603                next_offset += envelope_size;
12604            }
12605
12606            let next_out_of_line = decoder.next_out_of_line();
12607            let handles_before = decoder.remaining_handles();
12608            if let Some((inlined, num_bytes, num_handles)) =
12609                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12610            {
12611                let member_inline_size =
12612                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12613                if inlined != (member_inline_size <= 4) {
12614                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12615                }
12616                let inner_offset;
12617                let mut inner_depth = depth.clone();
12618                if inlined {
12619                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12620                    inner_offset = next_offset;
12621                } else {
12622                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12623                    inner_depth.increment()?;
12624                }
12625                let val_ref = self.target.get_or_insert_with(|| fidl::new_empty!(Ref, D));
12626                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
12627                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12628                {
12629                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12630                }
12631                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12632                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12633                }
12634            }
12635
12636            next_offset += envelope_size;
12637            _next_ordinal_to_read += 1;
12638            if next_offset >= end_offset {
12639                return Ok(());
12640            }
12641
12642            // Decode unknown envelopes for gaps in ordinals.
12643            while _next_ordinal_to_read < 4 {
12644                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12645                _next_ordinal_to_read += 1;
12646                next_offset += envelope_size;
12647            }
12648
12649            let next_out_of_line = decoder.next_out_of_line();
12650            let handles_before = decoder.remaining_handles();
12651            if let Some((inlined, num_bytes, num_handles)) =
12652                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12653            {
12654                let member_inline_size =
12655                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
12656                        decoder.context,
12657                    );
12658                if inlined != (member_inline_size <= 4) {
12659                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12660                }
12661                let inner_offset;
12662                let mut inner_depth = depth.clone();
12663                if inlined {
12664                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12665                    inner_offset = next_offset;
12666                } else {
12667                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12668                    inner_depth.increment()?;
12669                }
12670                let val_ref = self
12671                    .target_name
12672                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
12673                fidl::decode!(
12674                    fidl::encoding::BoundedString<100>,
12675                    D,
12676                    val_ref,
12677                    decoder,
12678                    inner_offset,
12679                    inner_depth
12680                )?;
12681                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12682                {
12683                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12684                }
12685                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12686                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12687                }
12688            }
12689
12690            next_offset += envelope_size;
12691            _next_ordinal_to_read += 1;
12692            if next_offset >= end_offset {
12693                return Ok(());
12694            }
12695
12696            // Decode unknown envelopes for gaps in ordinals.
12697            while _next_ordinal_to_read < 5 {
12698                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12699                _next_ordinal_to_read += 1;
12700                next_offset += envelope_size;
12701            }
12702
12703            let next_out_of_line = decoder.next_out_of_line();
12704            let handles_before = decoder.remaining_handles();
12705            if let Some((inlined, num_bytes, num_handles)) =
12706                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12707            {
12708                let member_inline_size =
12709                    <Availability as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12710                if inlined != (member_inline_size <= 4) {
12711                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12712                }
12713                let inner_offset;
12714                let mut inner_depth = depth.clone();
12715                if inlined {
12716                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12717                    inner_offset = next_offset;
12718                } else {
12719                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12720                    inner_depth.increment()?;
12721                }
12722                let val_ref =
12723                    self.availability.get_or_insert_with(|| fidl::new_empty!(Availability, D));
12724                fidl::decode!(Availability, D, val_ref, decoder, inner_offset, inner_depth)?;
12725                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12726                {
12727                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12728                }
12729                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12730                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12731                }
12732            }
12733
12734            next_offset += envelope_size;
12735            _next_ordinal_to_read += 1;
12736            if next_offset >= end_offset {
12737                return Ok(());
12738            }
12739
12740            // Decode unknown envelopes for gaps in ordinals.
12741            while _next_ordinal_to_read < 6 {
12742                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12743                _next_ordinal_to_read += 1;
12744                next_offset += envelope_size;
12745            }
12746
12747            let next_out_of_line = decoder.next_out_of_line();
12748            let handles_before = decoder.remaining_handles();
12749            if let Some((inlined, num_bytes, num_handles)) =
12750                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12751            {
12752                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12753                if inlined != (member_inline_size <= 4) {
12754                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12755                }
12756                let inner_offset;
12757                let mut inner_depth = depth.clone();
12758                if inlined {
12759                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12760                    inner_offset = next_offset;
12761                } else {
12762                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12763                    inner_depth.increment()?;
12764                }
12765                let val_ref = self.source_dictionary.get_or_insert_with(|| {
12766                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
12767                });
12768                fidl::decode!(
12769                    fidl::encoding::BoundedString<1024>,
12770                    D,
12771                    val_ref,
12772                    decoder,
12773                    inner_offset,
12774                    inner_depth
12775                )?;
12776                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12777                {
12778                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12779                }
12780                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12781                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12782                }
12783            }
12784
12785            next_offset += envelope_size;
12786
12787            // Decode the remaining unknown envelopes.
12788            while next_offset < end_offset {
12789                _next_ordinal_to_read += 1;
12790                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12791                next_offset += envelope_size;
12792            }
12793
12794            Ok(())
12795        }
12796    }
12797
12798    impl ExposeResolver {
12799        #[inline(always)]
12800        fn max_ordinal_present(&self) -> u64 {
12801            if let Some(_) = self.source_dictionary {
12802                return 6;
12803            }
12804            if let Some(_) = self.target_name {
12805                return 4;
12806            }
12807            if let Some(_) = self.target {
12808                return 3;
12809            }
12810            if let Some(_) = self.source_name {
12811                return 2;
12812            }
12813            if let Some(_) = self.source {
12814                return 1;
12815            }
12816            0
12817        }
12818    }
12819
12820    impl fidl::encoding::ValueTypeMarker for ExposeResolver {
12821        type Borrowed<'a> = &'a Self;
12822        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12823            value
12824        }
12825    }
12826
12827    unsafe impl fidl::encoding::TypeMarker for ExposeResolver {
12828        type Owned = Self;
12829
12830        #[inline(always)]
12831        fn inline_align(_context: fidl::encoding::Context) -> usize {
12832            8
12833        }
12834
12835        #[inline(always)]
12836        fn inline_size(_context: fidl::encoding::Context) -> usize {
12837            16
12838        }
12839    }
12840
12841    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ExposeResolver, D>
12842        for &ExposeResolver
12843    {
12844        unsafe fn encode(
12845            self,
12846            encoder: &mut fidl::encoding::Encoder<'_, D>,
12847            offset: usize,
12848            mut depth: fidl::encoding::Depth,
12849        ) -> fidl::Result<()> {
12850            encoder.debug_check_bounds::<ExposeResolver>(offset);
12851            // Vector header
12852            let max_ordinal: u64 = self.max_ordinal_present();
12853            encoder.write_num(max_ordinal, offset);
12854            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
12855            // Calling encoder.out_of_line_offset(0) is not allowed.
12856            if max_ordinal == 0 {
12857                return Ok(());
12858            }
12859            depth.increment()?;
12860            let envelope_size = 8;
12861            let bytes_len = max_ordinal as usize * envelope_size;
12862            #[allow(unused_variables)]
12863            let offset = encoder.out_of_line_offset(bytes_len);
12864            let mut _prev_end_offset: usize = 0;
12865            if 1 > max_ordinal {
12866                return Ok(());
12867            }
12868
12869            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12870            // are envelope_size bytes.
12871            let cur_offset: usize = (1 - 1) * envelope_size;
12872
12873            // Zero reserved fields.
12874            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12875
12876            // Safety:
12877            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12878            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12879            //   envelope_size bytes, there is always sufficient room.
12880            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
12881                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
12882                encoder,
12883                offset + cur_offset,
12884                depth,
12885            )?;
12886
12887            _prev_end_offset = cur_offset + envelope_size;
12888            if 2 > max_ordinal {
12889                return Ok(());
12890            }
12891
12892            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12893            // are envelope_size bytes.
12894            let cur_offset: usize = (2 - 1) * envelope_size;
12895
12896            // Zero reserved fields.
12897            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12898
12899            // Safety:
12900            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12901            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12902            //   envelope_size bytes, there is always sufficient room.
12903            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
12904                self.source_name.as_ref().map(
12905                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
12906                ),
12907                encoder,
12908                offset + cur_offset,
12909                depth,
12910            )?;
12911
12912            _prev_end_offset = cur_offset + envelope_size;
12913            if 3 > max_ordinal {
12914                return Ok(());
12915            }
12916
12917            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12918            // are envelope_size bytes.
12919            let cur_offset: usize = (3 - 1) * envelope_size;
12920
12921            // Zero reserved fields.
12922            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12923
12924            // Safety:
12925            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12926            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12927            //   envelope_size bytes, there is always sufficient room.
12928            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
12929                self.target.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
12930                encoder,
12931                offset + cur_offset,
12932                depth,
12933            )?;
12934
12935            _prev_end_offset = cur_offset + envelope_size;
12936            if 4 > max_ordinal {
12937                return Ok(());
12938            }
12939
12940            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12941            // are envelope_size bytes.
12942            let cur_offset: usize = (4 - 1) * envelope_size;
12943
12944            // Zero reserved fields.
12945            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12946
12947            // Safety:
12948            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12949            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12950            //   envelope_size bytes, there is always sufficient room.
12951            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
12952                self.target_name.as_ref().map(
12953                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
12954                ),
12955                encoder,
12956                offset + cur_offset,
12957                depth,
12958            )?;
12959
12960            _prev_end_offset = cur_offset + envelope_size;
12961            if 6 > max_ordinal {
12962                return Ok(());
12963            }
12964
12965            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12966            // are envelope_size bytes.
12967            let cur_offset: usize = (6 - 1) * envelope_size;
12968
12969            // Zero reserved fields.
12970            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12971
12972            // Safety:
12973            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12974            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12975            //   envelope_size bytes, there is always sufficient room.
12976            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
12977            self.source_dictionary.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
12978            encoder, offset + cur_offset, depth
12979        )?;
12980
12981            _prev_end_offset = cur_offset + envelope_size;
12982
12983            Ok(())
12984        }
12985    }
12986
12987    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ExposeResolver {
12988        #[inline(always)]
12989        fn new_empty() -> Self {
12990            Self::default()
12991        }
12992
12993        unsafe fn decode(
12994            &mut self,
12995            decoder: &mut fidl::encoding::Decoder<'_, D>,
12996            offset: usize,
12997            mut depth: fidl::encoding::Depth,
12998        ) -> fidl::Result<()> {
12999            decoder.debug_check_bounds::<Self>(offset);
13000            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
13001                None => return Err(fidl::Error::NotNullable),
13002                Some(len) => len,
13003            };
13004            // Calling decoder.out_of_line_offset(0) is not allowed.
13005            if len == 0 {
13006                return Ok(());
13007            };
13008            depth.increment()?;
13009            let envelope_size = 8;
13010            let bytes_len = len * envelope_size;
13011            let offset = decoder.out_of_line_offset(bytes_len)?;
13012            // Decode the envelope for each type.
13013            let mut _next_ordinal_to_read = 0;
13014            let mut next_offset = offset;
13015            let end_offset = offset + bytes_len;
13016            _next_ordinal_to_read += 1;
13017            if next_offset >= end_offset {
13018                return Ok(());
13019            }
13020
13021            // Decode unknown envelopes for gaps in ordinals.
13022            while _next_ordinal_to_read < 1 {
13023                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13024                _next_ordinal_to_read += 1;
13025                next_offset += envelope_size;
13026            }
13027
13028            let next_out_of_line = decoder.next_out_of_line();
13029            let handles_before = decoder.remaining_handles();
13030            if let Some((inlined, num_bytes, num_handles)) =
13031                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13032            {
13033                let member_inline_size =
13034                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13035                if inlined != (member_inline_size <= 4) {
13036                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13037                }
13038                let inner_offset;
13039                let mut inner_depth = depth.clone();
13040                if inlined {
13041                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13042                    inner_offset = next_offset;
13043                } else {
13044                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13045                    inner_depth.increment()?;
13046                }
13047                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
13048                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
13049                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13050                {
13051                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13052                }
13053                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13054                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13055                }
13056            }
13057
13058            next_offset += envelope_size;
13059            _next_ordinal_to_read += 1;
13060            if next_offset >= end_offset {
13061                return Ok(());
13062            }
13063
13064            // Decode unknown envelopes for gaps in ordinals.
13065            while _next_ordinal_to_read < 2 {
13066                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13067                _next_ordinal_to_read += 1;
13068                next_offset += envelope_size;
13069            }
13070
13071            let next_out_of_line = decoder.next_out_of_line();
13072            let handles_before = decoder.remaining_handles();
13073            if let Some((inlined, num_bytes, num_handles)) =
13074                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13075            {
13076                let member_inline_size =
13077                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
13078                        decoder.context,
13079                    );
13080                if inlined != (member_inline_size <= 4) {
13081                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13082                }
13083                let inner_offset;
13084                let mut inner_depth = depth.clone();
13085                if inlined {
13086                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13087                    inner_offset = next_offset;
13088                } else {
13089                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13090                    inner_depth.increment()?;
13091                }
13092                let val_ref = self
13093                    .source_name
13094                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
13095                fidl::decode!(
13096                    fidl::encoding::BoundedString<100>,
13097                    D,
13098                    val_ref,
13099                    decoder,
13100                    inner_offset,
13101                    inner_depth
13102                )?;
13103                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13104                {
13105                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13106                }
13107                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13108                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13109                }
13110            }
13111
13112            next_offset += envelope_size;
13113            _next_ordinal_to_read += 1;
13114            if next_offset >= end_offset {
13115                return Ok(());
13116            }
13117
13118            // Decode unknown envelopes for gaps in ordinals.
13119            while _next_ordinal_to_read < 3 {
13120                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13121                _next_ordinal_to_read += 1;
13122                next_offset += envelope_size;
13123            }
13124
13125            let next_out_of_line = decoder.next_out_of_line();
13126            let handles_before = decoder.remaining_handles();
13127            if let Some((inlined, num_bytes, num_handles)) =
13128                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13129            {
13130                let member_inline_size =
13131                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13132                if inlined != (member_inline_size <= 4) {
13133                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13134                }
13135                let inner_offset;
13136                let mut inner_depth = depth.clone();
13137                if inlined {
13138                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13139                    inner_offset = next_offset;
13140                } else {
13141                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13142                    inner_depth.increment()?;
13143                }
13144                let val_ref = self.target.get_or_insert_with(|| fidl::new_empty!(Ref, D));
13145                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
13146                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13147                {
13148                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13149                }
13150                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13151                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13152                }
13153            }
13154
13155            next_offset += envelope_size;
13156            _next_ordinal_to_read += 1;
13157            if next_offset >= end_offset {
13158                return Ok(());
13159            }
13160
13161            // Decode unknown envelopes for gaps in ordinals.
13162            while _next_ordinal_to_read < 4 {
13163                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13164                _next_ordinal_to_read += 1;
13165                next_offset += envelope_size;
13166            }
13167
13168            let next_out_of_line = decoder.next_out_of_line();
13169            let handles_before = decoder.remaining_handles();
13170            if let Some((inlined, num_bytes, num_handles)) =
13171                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13172            {
13173                let member_inline_size =
13174                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
13175                        decoder.context,
13176                    );
13177                if inlined != (member_inline_size <= 4) {
13178                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13179                }
13180                let inner_offset;
13181                let mut inner_depth = depth.clone();
13182                if inlined {
13183                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13184                    inner_offset = next_offset;
13185                } else {
13186                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13187                    inner_depth.increment()?;
13188                }
13189                let val_ref = self
13190                    .target_name
13191                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
13192                fidl::decode!(
13193                    fidl::encoding::BoundedString<100>,
13194                    D,
13195                    val_ref,
13196                    decoder,
13197                    inner_offset,
13198                    inner_depth
13199                )?;
13200                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13201                {
13202                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13203                }
13204                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13205                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13206                }
13207            }
13208
13209            next_offset += envelope_size;
13210            _next_ordinal_to_read += 1;
13211            if next_offset >= end_offset {
13212                return Ok(());
13213            }
13214
13215            // Decode unknown envelopes for gaps in ordinals.
13216            while _next_ordinal_to_read < 6 {
13217                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13218                _next_ordinal_to_read += 1;
13219                next_offset += envelope_size;
13220            }
13221
13222            let next_out_of_line = decoder.next_out_of_line();
13223            let handles_before = decoder.remaining_handles();
13224            if let Some((inlined, num_bytes, num_handles)) =
13225                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13226            {
13227                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13228                if inlined != (member_inline_size <= 4) {
13229                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13230                }
13231                let inner_offset;
13232                let mut inner_depth = depth.clone();
13233                if inlined {
13234                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13235                    inner_offset = next_offset;
13236                } else {
13237                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13238                    inner_depth.increment()?;
13239                }
13240                let val_ref = self.source_dictionary.get_or_insert_with(|| {
13241                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
13242                });
13243                fidl::decode!(
13244                    fidl::encoding::BoundedString<1024>,
13245                    D,
13246                    val_ref,
13247                    decoder,
13248                    inner_offset,
13249                    inner_depth
13250                )?;
13251                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13252                {
13253                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13254                }
13255                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13256                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13257                }
13258            }
13259
13260            next_offset += envelope_size;
13261
13262            // Decode the remaining unknown envelopes.
13263            while next_offset < end_offset {
13264                _next_ordinal_to_read += 1;
13265                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13266                next_offset += envelope_size;
13267            }
13268
13269            Ok(())
13270        }
13271    }
13272
13273    impl ExposeRunner {
13274        #[inline(always)]
13275        fn max_ordinal_present(&self) -> u64 {
13276            if let Some(_) = self.source_dictionary {
13277                return 6;
13278            }
13279            if let Some(_) = self.target_name {
13280                return 4;
13281            }
13282            if let Some(_) = self.target {
13283                return 3;
13284            }
13285            if let Some(_) = self.source_name {
13286                return 2;
13287            }
13288            if let Some(_) = self.source {
13289                return 1;
13290            }
13291            0
13292        }
13293    }
13294
13295    impl fidl::encoding::ValueTypeMarker for ExposeRunner {
13296        type Borrowed<'a> = &'a Self;
13297        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
13298            value
13299        }
13300    }
13301
13302    unsafe impl fidl::encoding::TypeMarker for ExposeRunner {
13303        type Owned = Self;
13304
13305        #[inline(always)]
13306        fn inline_align(_context: fidl::encoding::Context) -> usize {
13307            8
13308        }
13309
13310        #[inline(always)]
13311        fn inline_size(_context: fidl::encoding::Context) -> usize {
13312            16
13313        }
13314    }
13315
13316    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ExposeRunner, D>
13317        for &ExposeRunner
13318    {
13319        unsafe fn encode(
13320            self,
13321            encoder: &mut fidl::encoding::Encoder<'_, D>,
13322            offset: usize,
13323            mut depth: fidl::encoding::Depth,
13324        ) -> fidl::Result<()> {
13325            encoder.debug_check_bounds::<ExposeRunner>(offset);
13326            // Vector header
13327            let max_ordinal: u64 = self.max_ordinal_present();
13328            encoder.write_num(max_ordinal, offset);
13329            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
13330            // Calling encoder.out_of_line_offset(0) is not allowed.
13331            if max_ordinal == 0 {
13332                return Ok(());
13333            }
13334            depth.increment()?;
13335            let envelope_size = 8;
13336            let bytes_len = max_ordinal as usize * envelope_size;
13337            #[allow(unused_variables)]
13338            let offset = encoder.out_of_line_offset(bytes_len);
13339            let mut _prev_end_offset: usize = 0;
13340            if 1 > max_ordinal {
13341                return Ok(());
13342            }
13343
13344            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13345            // are envelope_size bytes.
13346            let cur_offset: usize = (1 - 1) * envelope_size;
13347
13348            // Zero reserved fields.
13349            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13350
13351            // Safety:
13352            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13353            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13354            //   envelope_size bytes, there is always sufficient room.
13355            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
13356                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
13357                encoder,
13358                offset + cur_offset,
13359                depth,
13360            )?;
13361
13362            _prev_end_offset = cur_offset + envelope_size;
13363            if 2 > max_ordinal {
13364                return Ok(());
13365            }
13366
13367            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13368            // are envelope_size bytes.
13369            let cur_offset: usize = (2 - 1) * envelope_size;
13370
13371            // Zero reserved fields.
13372            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13373
13374            // Safety:
13375            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13376            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13377            //   envelope_size bytes, there is always sufficient room.
13378            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
13379                self.source_name.as_ref().map(
13380                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
13381                ),
13382                encoder,
13383                offset + cur_offset,
13384                depth,
13385            )?;
13386
13387            _prev_end_offset = cur_offset + envelope_size;
13388            if 3 > max_ordinal {
13389                return Ok(());
13390            }
13391
13392            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13393            // are envelope_size bytes.
13394            let cur_offset: usize = (3 - 1) * envelope_size;
13395
13396            // Zero reserved fields.
13397            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13398
13399            // Safety:
13400            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13401            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13402            //   envelope_size bytes, there is always sufficient room.
13403            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
13404                self.target.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
13405                encoder,
13406                offset + cur_offset,
13407                depth,
13408            )?;
13409
13410            _prev_end_offset = cur_offset + envelope_size;
13411            if 4 > max_ordinal {
13412                return Ok(());
13413            }
13414
13415            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13416            // are envelope_size bytes.
13417            let cur_offset: usize = (4 - 1) * envelope_size;
13418
13419            // Zero reserved fields.
13420            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13421
13422            // Safety:
13423            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13424            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13425            //   envelope_size bytes, there is always sufficient room.
13426            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
13427                self.target_name.as_ref().map(
13428                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
13429                ),
13430                encoder,
13431                offset + cur_offset,
13432                depth,
13433            )?;
13434
13435            _prev_end_offset = cur_offset + envelope_size;
13436            if 6 > max_ordinal {
13437                return Ok(());
13438            }
13439
13440            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13441            // are envelope_size bytes.
13442            let cur_offset: usize = (6 - 1) * envelope_size;
13443
13444            // Zero reserved fields.
13445            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13446
13447            // Safety:
13448            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13449            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13450            //   envelope_size bytes, there is always sufficient room.
13451            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
13452            self.source_dictionary.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
13453            encoder, offset + cur_offset, depth
13454        )?;
13455
13456            _prev_end_offset = cur_offset + envelope_size;
13457
13458            Ok(())
13459        }
13460    }
13461
13462    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ExposeRunner {
13463        #[inline(always)]
13464        fn new_empty() -> Self {
13465            Self::default()
13466        }
13467
13468        unsafe fn decode(
13469            &mut self,
13470            decoder: &mut fidl::encoding::Decoder<'_, D>,
13471            offset: usize,
13472            mut depth: fidl::encoding::Depth,
13473        ) -> fidl::Result<()> {
13474            decoder.debug_check_bounds::<Self>(offset);
13475            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
13476                None => return Err(fidl::Error::NotNullable),
13477                Some(len) => len,
13478            };
13479            // Calling decoder.out_of_line_offset(0) is not allowed.
13480            if len == 0 {
13481                return Ok(());
13482            };
13483            depth.increment()?;
13484            let envelope_size = 8;
13485            let bytes_len = len * envelope_size;
13486            let offset = decoder.out_of_line_offset(bytes_len)?;
13487            // Decode the envelope for each type.
13488            let mut _next_ordinal_to_read = 0;
13489            let mut next_offset = offset;
13490            let end_offset = offset + bytes_len;
13491            _next_ordinal_to_read += 1;
13492            if next_offset >= end_offset {
13493                return Ok(());
13494            }
13495
13496            // Decode unknown envelopes for gaps in ordinals.
13497            while _next_ordinal_to_read < 1 {
13498                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13499                _next_ordinal_to_read += 1;
13500                next_offset += envelope_size;
13501            }
13502
13503            let next_out_of_line = decoder.next_out_of_line();
13504            let handles_before = decoder.remaining_handles();
13505            if let Some((inlined, num_bytes, num_handles)) =
13506                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13507            {
13508                let member_inline_size =
13509                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13510                if inlined != (member_inline_size <= 4) {
13511                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13512                }
13513                let inner_offset;
13514                let mut inner_depth = depth.clone();
13515                if inlined {
13516                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13517                    inner_offset = next_offset;
13518                } else {
13519                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13520                    inner_depth.increment()?;
13521                }
13522                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
13523                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
13524                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13525                {
13526                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13527                }
13528                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13529                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13530                }
13531            }
13532
13533            next_offset += envelope_size;
13534            _next_ordinal_to_read += 1;
13535            if next_offset >= end_offset {
13536                return Ok(());
13537            }
13538
13539            // Decode unknown envelopes for gaps in ordinals.
13540            while _next_ordinal_to_read < 2 {
13541                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13542                _next_ordinal_to_read += 1;
13543                next_offset += envelope_size;
13544            }
13545
13546            let next_out_of_line = decoder.next_out_of_line();
13547            let handles_before = decoder.remaining_handles();
13548            if let Some((inlined, num_bytes, num_handles)) =
13549                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13550            {
13551                let member_inline_size =
13552                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
13553                        decoder.context,
13554                    );
13555                if inlined != (member_inline_size <= 4) {
13556                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13557                }
13558                let inner_offset;
13559                let mut inner_depth = depth.clone();
13560                if inlined {
13561                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13562                    inner_offset = next_offset;
13563                } else {
13564                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13565                    inner_depth.increment()?;
13566                }
13567                let val_ref = self
13568                    .source_name
13569                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
13570                fidl::decode!(
13571                    fidl::encoding::BoundedString<100>,
13572                    D,
13573                    val_ref,
13574                    decoder,
13575                    inner_offset,
13576                    inner_depth
13577                )?;
13578                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13579                {
13580                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13581                }
13582                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13583                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13584                }
13585            }
13586
13587            next_offset += envelope_size;
13588            _next_ordinal_to_read += 1;
13589            if next_offset >= end_offset {
13590                return Ok(());
13591            }
13592
13593            // Decode unknown envelopes for gaps in ordinals.
13594            while _next_ordinal_to_read < 3 {
13595                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13596                _next_ordinal_to_read += 1;
13597                next_offset += envelope_size;
13598            }
13599
13600            let next_out_of_line = decoder.next_out_of_line();
13601            let handles_before = decoder.remaining_handles();
13602            if let Some((inlined, num_bytes, num_handles)) =
13603                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13604            {
13605                let member_inline_size =
13606                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13607                if inlined != (member_inline_size <= 4) {
13608                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13609                }
13610                let inner_offset;
13611                let mut inner_depth = depth.clone();
13612                if inlined {
13613                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13614                    inner_offset = next_offset;
13615                } else {
13616                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13617                    inner_depth.increment()?;
13618                }
13619                let val_ref = self.target.get_or_insert_with(|| fidl::new_empty!(Ref, D));
13620                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
13621                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13622                {
13623                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13624                }
13625                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13626                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13627                }
13628            }
13629
13630            next_offset += envelope_size;
13631            _next_ordinal_to_read += 1;
13632            if next_offset >= end_offset {
13633                return Ok(());
13634            }
13635
13636            // Decode unknown envelopes for gaps in ordinals.
13637            while _next_ordinal_to_read < 4 {
13638                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13639                _next_ordinal_to_read += 1;
13640                next_offset += envelope_size;
13641            }
13642
13643            let next_out_of_line = decoder.next_out_of_line();
13644            let handles_before = decoder.remaining_handles();
13645            if let Some((inlined, num_bytes, num_handles)) =
13646                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13647            {
13648                let member_inline_size =
13649                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
13650                        decoder.context,
13651                    );
13652                if inlined != (member_inline_size <= 4) {
13653                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13654                }
13655                let inner_offset;
13656                let mut inner_depth = depth.clone();
13657                if inlined {
13658                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13659                    inner_offset = next_offset;
13660                } else {
13661                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13662                    inner_depth.increment()?;
13663                }
13664                let val_ref = self
13665                    .target_name
13666                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
13667                fidl::decode!(
13668                    fidl::encoding::BoundedString<100>,
13669                    D,
13670                    val_ref,
13671                    decoder,
13672                    inner_offset,
13673                    inner_depth
13674                )?;
13675                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13676                {
13677                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13678                }
13679                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13680                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13681                }
13682            }
13683
13684            next_offset += envelope_size;
13685            _next_ordinal_to_read += 1;
13686            if next_offset >= end_offset {
13687                return Ok(());
13688            }
13689
13690            // Decode unknown envelopes for gaps in ordinals.
13691            while _next_ordinal_to_read < 6 {
13692                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13693                _next_ordinal_to_read += 1;
13694                next_offset += envelope_size;
13695            }
13696
13697            let next_out_of_line = decoder.next_out_of_line();
13698            let handles_before = decoder.remaining_handles();
13699            if let Some((inlined, num_bytes, num_handles)) =
13700                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13701            {
13702                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13703                if inlined != (member_inline_size <= 4) {
13704                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13705                }
13706                let inner_offset;
13707                let mut inner_depth = depth.clone();
13708                if inlined {
13709                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13710                    inner_offset = next_offset;
13711                } else {
13712                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13713                    inner_depth.increment()?;
13714                }
13715                let val_ref = self.source_dictionary.get_or_insert_with(|| {
13716                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
13717                });
13718                fidl::decode!(
13719                    fidl::encoding::BoundedString<1024>,
13720                    D,
13721                    val_ref,
13722                    decoder,
13723                    inner_offset,
13724                    inner_depth
13725                )?;
13726                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13727                {
13728                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13729                }
13730                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13731                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13732                }
13733            }
13734
13735            next_offset += envelope_size;
13736
13737            // Decode the remaining unknown envelopes.
13738            while next_offset < end_offset {
13739                _next_ordinal_to_read += 1;
13740                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13741                next_offset += envelope_size;
13742            }
13743
13744            Ok(())
13745        }
13746    }
13747
13748    impl ExposeService {
13749        #[inline(always)]
13750        fn max_ordinal_present(&self) -> u64 {
13751            if let Some(_) = self.source_dictionary {
13752                return 6;
13753            }
13754            if let Some(_) = self.availability {
13755                return 5;
13756            }
13757            if let Some(_) = self.target_name {
13758                return 4;
13759            }
13760            if let Some(_) = self.target {
13761                return 3;
13762            }
13763            if let Some(_) = self.source_name {
13764                return 2;
13765            }
13766            if let Some(_) = self.source {
13767                return 1;
13768            }
13769            0
13770        }
13771    }
13772
13773    impl fidl::encoding::ValueTypeMarker for ExposeService {
13774        type Borrowed<'a> = &'a Self;
13775        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
13776            value
13777        }
13778    }
13779
13780    unsafe impl fidl::encoding::TypeMarker for ExposeService {
13781        type Owned = Self;
13782
13783        #[inline(always)]
13784        fn inline_align(_context: fidl::encoding::Context) -> usize {
13785            8
13786        }
13787
13788        #[inline(always)]
13789        fn inline_size(_context: fidl::encoding::Context) -> usize {
13790            16
13791        }
13792    }
13793
13794    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ExposeService, D>
13795        for &ExposeService
13796    {
13797        unsafe fn encode(
13798            self,
13799            encoder: &mut fidl::encoding::Encoder<'_, D>,
13800            offset: usize,
13801            mut depth: fidl::encoding::Depth,
13802        ) -> fidl::Result<()> {
13803            encoder.debug_check_bounds::<ExposeService>(offset);
13804            // Vector header
13805            let max_ordinal: u64 = self.max_ordinal_present();
13806            encoder.write_num(max_ordinal, offset);
13807            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
13808            // Calling encoder.out_of_line_offset(0) is not allowed.
13809            if max_ordinal == 0 {
13810                return Ok(());
13811            }
13812            depth.increment()?;
13813            let envelope_size = 8;
13814            let bytes_len = max_ordinal as usize * envelope_size;
13815            #[allow(unused_variables)]
13816            let offset = encoder.out_of_line_offset(bytes_len);
13817            let mut _prev_end_offset: usize = 0;
13818            if 1 > max_ordinal {
13819                return Ok(());
13820            }
13821
13822            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13823            // are envelope_size bytes.
13824            let cur_offset: usize = (1 - 1) * envelope_size;
13825
13826            // Zero reserved fields.
13827            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13828
13829            // Safety:
13830            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13831            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13832            //   envelope_size bytes, there is always sufficient room.
13833            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
13834                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
13835                encoder,
13836                offset + cur_offset,
13837                depth,
13838            )?;
13839
13840            _prev_end_offset = cur_offset + envelope_size;
13841            if 2 > max_ordinal {
13842                return Ok(());
13843            }
13844
13845            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13846            // are envelope_size bytes.
13847            let cur_offset: usize = (2 - 1) * envelope_size;
13848
13849            // Zero reserved fields.
13850            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13851
13852            // Safety:
13853            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13854            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13855            //   envelope_size bytes, there is always sufficient room.
13856            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
13857                self.source_name.as_ref().map(
13858                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
13859                ),
13860                encoder,
13861                offset + cur_offset,
13862                depth,
13863            )?;
13864
13865            _prev_end_offset = cur_offset + envelope_size;
13866            if 3 > max_ordinal {
13867                return Ok(());
13868            }
13869
13870            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13871            // are envelope_size bytes.
13872            let cur_offset: usize = (3 - 1) * envelope_size;
13873
13874            // Zero reserved fields.
13875            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13876
13877            // Safety:
13878            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13879            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13880            //   envelope_size bytes, there is always sufficient room.
13881            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
13882                self.target.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
13883                encoder,
13884                offset + cur_offset,
13885                depth,
13886            )?;
13887
13888            _prev_end_offset = cur_offset + envelope_size;
13889            if 4 > max_ordinal {
13890                return Ok(());
13891            }
13892
13893            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13894            // are envelope_size bytes.
13895            let cur_offset: usize = (4 - 1) * envelope_size;
13896
13897            // Zero reserved fields.
13898            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13899
13900            // Safety:
13901            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13902            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13903            //   envelope_size bytes, there is always sufficient room.
13904            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
13905                self.target_name.as_ref().map(
13906                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
13907                ),
13908                encoder,
13909                offset + cur_offset,
13910                depth,
13911            )?;
13912
13913            _prev_end_offset = cur_offset + envelope_size;
13914            if 5 > max_ordinal {
13915                return Ok(());
13916            }
13917
13918            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13919            // are envelope_size bytes.
13920            let cur_offset: usize = (5 - 1) * envelope_size;
13921
13922            // Zero reserved fields.
13923            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13924
13925            // Safety:
13926            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13927            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13928            //   envelope_size bytes, there is always sufficient room.
13929            fidl::encoding::encode_in_envelope_optional::<Availability, D>(
13930                self.availability
13931                    .as_ref()
13932                    .map(<Availability as fidl::encoding::ValueTypeMarker>::borrow),
13933                encoder,
13934                offset + cur_offset,
13935                depth,
13936            )?;
13937
13938            _prev_end_offset = cur_offset + envelope_size;
13939            if 6 > max_ordinal {
13940                return Ok(());
13941            }
13942
13943            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13944            // are envelope_size bytes.
13945            let cur_offset: usize = (6 - 1) * envelope_size;
13946
13947            // Zero reserved fields.
13948            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13949
13950            // Safety:
13951            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13952            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13953            //   envelope_size bytes, there is always sufficient room.
13954            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
13955            self.source_dictionary.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
13956            encoder, offset + cur_offset, depth
13957        )?;
13958
13959            _prev_end_offset = cur_offset + envelope_size;
13960
13961            Ok(())
13962        }
13963    }
13964
13965    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ExposeService {
13966        #[inline(always)]
13967        fn new_empty() -> Self {
13968            Self::default()
13969        }
13970
13971        unsafe fn decode(
13972            &mut self,
13973            decoder: &mut fidl::encoding::Decoder<'_, D>,
13974            offset: usize,
13975            mut depth: fidl::encoding::Depth,
13976        ) -> fidl::Result<()> {
13977            decoder.debug_check_bounds::<Self>(offset);
13978            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
13979                None => return Err(fidl::Error::NotNullable),
13980                Some(len) => len,
13981            };
13982            // Calling decoder.out_of_line_offset(0) is not allowed.
13983            if len == 0 {
13984                return Ok(());
13985            };
13986            depth.increment()?;
13987            let envelope_size = 8;
13988            let bytes_len = len * envelope_size;
13989            let offset = decoder.out_of_line_offset(bytes_len)?;
13990            // Decode the envelope for each type.
13991            let mut _next_ordinal_to_read = 0;
13992            let mut next_offset = offset;
13993            let end_offset = offset + bytes_len;
13994            _next_ordinal_to_read += 1;
13995            if next_offset >= end_offset {
13996                return Ok(());
13997            }
13998
13999            // Decode unknown envelopes for gaps in ordinals.
14000            while _next_ordinal_to_read < 1 {
14001                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14002                _next_ordinal_to_read += 1;
14003                next_offset += envelope_size;
14004            }
14005
14006            let next_out_of_line = decoder.next_out_of_line();
14007            let handles_before = decoder.remaining_handles();
14008            if let Some((inlined, num_bytes, num_handles)) =
14009                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14010            {
14011                let member_inline_size =
14012                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14013                if inlined != (member_inline_size <= 4) {
14014                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14015                }
14016                let inner_offset;
14017                let mut inner_depth = depth.clone();
14018                if inlined {
14019                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14020                    inner_offset = next_offset;
14021                } else {
14022                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14023                    inner_depth.increment()?;
14024                }
14025                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
14026                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
14027                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14028                {
14029                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14030                }
14031                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14032                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14033                }
14034            }
14035
14036            next_offset += envelope_size;
14037            _next_ordinal_to_read += 1;
14038            if next_offset >= end_offset {
14039                return Ok(());
14040            }
14041
14042            // Decode unknown envelopes for gaps in ordinals.
14043            while _next_ordinal_to_read < 2 {
14044                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14045                _next_ordinal_to_read += 1;
14046                next_offset += envelope_size;
14047            }
14048
14049            let next_out_of_line = decoder.next_out_of_line();
14050            let handles_before = decoder.remaining_handles();
14051            if let Some((inlined, num_bytes, num_handles)) =
14052                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14053            {
14054                let member_inline_size =
14055                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
14056                        decoder.context,
14057                    );
14058                if inlined != (member_inline_size <= 4) {
14059                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14060                }
14061                let inner_offset;
14062                let mut inner_depth = depth.clone();
14063                if inlined {
14064                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14065                    inner_offset = next_offset;
14066                } else {
14067                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14068                    inner_depth.increment()?;
14069                }
14070                let val_ref = self
14071                    .source_name
14072                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
14073                fidl::decode!(
14074                    fidl::encoding::BoundedString<100>,
14075                    D,
14076                    val_ref,
14077                    decoder,
14078                    inner_offset,
14079                    inner_depth
14080                )?;
14081                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14082                {
14083                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14084                }
14085                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14086                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14087                }
14088            }
14089
14090            next_offset += envelope_size;
14091            _next_ordinal_to_read += 1;
14092            if next_offset >= end_offset {
14093                return Ok(());
14094            }
14095
14096            // Decode unknown envelopes for gaps in ordinals.
14097            while _next_ordinal_to_read < 3 {
14098                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14099                _next_ordinal_to_read += 1;
14100                next_offset += envelope_size;
14101            }
14102
14103            let next_out_of_line = decoder.next_out_of_line();
14104            let handles_before = decoder.remaining_handles();
14105            if let Some((inlined, num_bytes, num_handles)) =
14106                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14107            {
14108                let member_inline_size =
14109                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14110                if inlined != (member_inline_size <= 4) {
14111                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14112                }
14113                let inner_offset;
14114                let mut inner_depth = depth.clone();
14115                if inlined {
14116                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14117                    inner_offset = next_offset;
14118                } else {
14119                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14120                    inner_depth.increment()?;
14121                }
14122                let val_ref = self.target.get_or_insert_with(|| fidl::new_empty!(Ref, D));
14123                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
14124                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14125                {
14126                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14127                }
14128                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14129                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14130                }
14131            }
14132
14133            next_offset += envelope_size;
14134            _next_ordinal_to_read += 1;
14135            if next_offset >= end_offset {
14136                return Ok(());
14137            }
14138
14139            // Decode unknown envelopes for gaps in ordinals.
14140            while _next_ordinal_to_read < 4 {
14141                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14142                _next_ordinal_to_read += 1;
14143                next_offset += envelope_size;
14144            }
14145
14146            let next_out_of_line = decoder.next_out_of_line();
14147            let handles_before = decoder.remaining_handles();
14148            if let Some((inlined, num_bytes, num_handles)) =
14149                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14150            {
14151                let member_inline_size =
14152                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
14153                        decoder.context,
14154                    );
14155                if inlined != (member_inline_size <= 4) {
14156                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14157                }
14158                let inner_offset;
14159                let mut inner_depth = depth.clone();
14160                if inlined {
14161                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14162                    inner_offset = next_offset;
14163                } else {
14164                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14165                    inner_depth.increment()?;
14166                }
14167                let val_ref = self
14168                    .target_name
14169                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
14170                fidl::decode!(
14171                    fidl::encoding::BoundedString<100>,
14172                    D,
14173                    val_ref,
14174                    decoder,
14175                    inner_offset,
14176                    inner_depth
14177                )?;
14178                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14179                {
14180                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14181                }
14182                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14183                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14184                }
14185            }
14186
14187            next_offset += envelope_size;
14188            _next_ordinal_to_read += 1;
14189            if next_offset >= end_offset {
14190                return Ok(());
14191            }
14192
14193            // Decode unknown envelopes for gaps in ordinals.
14194            while _next_ordinal_to_read < 5 {
14195                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14196                _next_ordinal_to_read += 1;
14197                next_offset += envelope_size;
14198            }
14199
14200            let next_out_of_line = decoder.next_out_of_line();
14201            let handles_before = decoder.remaining_handles();
14202            if let Some((inlined, num_bytes, num_handles)) =
14203                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14204            {
14205                let member_inline_size =
14206                    <Availability as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14207                if inlined != (member_inline_size <= 4) {
14208                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14209                }
14210                let inner_offset;
14211                let mut inner_depth = depth.clone();
14212                if inlined {
14213                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14214                    inner_offset = next_offset;
14215                } else {
14216                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14217                    inner_depth.increment()?;
14218                }
14219                let val_ref =
14220                    self.availability.get_or_insert_with(|| fidl::new_empty!(Availability, D));
14221                fidl::decode!(Availability, D, val_ref, decoder, inner_offset, inner_depth)?;
14222                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14223                {
14224                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14225                }
14226                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14227                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14228                }
14229            }
14230
14231            next_offset += envelope_size;
14232            _next_ordinal_to_read += 1;
14233            if next_offset >= end_offset {
14234                return Ok(());
14235            }
14236
14237            // Decode unknown envelopes for gaps in ordinals.
14238            while _next_ordinal_to_read < 6 {
14239                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14240                _next_ordinal_to_read += 1;
14241                next_offset += envelope_size;
14242            }
14243
14244            let next_out_of_line = decoder.next_out_of_line();
14245            let handles_before = decoder.remaining_handles();
14246            if let Some((inlined, num_bytes, num_handles)) =
14247                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14248            {
14249                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14250                if inlined != (member_inline_size <= 4) {
14251                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14252                }
14253                let inner_offset;
14254                let mut inner_depth = depth.clone();
14255                if inlined {
14256                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14257                    inner_offset = next_offset;
14258                } else {
14259                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14260                    inner_depth.increment()?;
14261                }
14262                let val_ref = self.source_dictionary.get_or_insert_with(|| {
14263                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
14264                });
14265                fidl::decode!(
14266                    fidl::encoding::BoundedString<1024>,
14267                    D,
14268                    val_ref,
14269                    decoder,
14270                    inner_offset,
14271                    inner_depth
14272                )?;
14273                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14274                {
14275                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14276                }
14277                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14278                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14279                }
14280            }
14281
14282            next_offset += envelope_size;
14283
14284            // Decode the remaining unknown envelopes.
14285            while next_offset < end_offset {
14286                _next_ordinal_to_read += 1;
14287                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14288                next_offset += envelope_size;
14289            }
14290
14291            Ok(())
14292        }
14293    }
14294
14295    impl OfferConfiguration {
14296        #[inline(always)]
14297        fn max_ordinal_present(&self) -> u64 {
14298            if let Some(_) = self.source_dictionary {
14299                return 6;
14300            }
14301            if let Some(_) = self.availability {
14302                return 5;
14303            }
14304            if let Some(_) = self.target_name {
14305                return 4;
14306            }
14307            if let Some(_) = self.target {
14308                return 3;
14309            }
14310            if let Some(_) = self.source_name {
14311                return 2;
14312            }
14313            if let Some(_) = self.source {
14314                return 1;
14315            }
14316            0
14317        }
14318    }
14319
14320    impl fidl::encoding::ValueTypeMarker for OfferConfiguration {
14321        type Borrowed<'a> = &'a Self;
14322        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
14323            value
14324        }
14325    }
14326
14327    unsafe impl fidl::encoding::TypeMarker for OfferConfiguration {
14328        type Owned = Self;
14329
14330        #[inline(always)]
14331        fn inline_align(_context: fidl::encoding::Context) -> usize {
14332            8
14333        }
14334
14335        #[inline(always)]
14336        fn inline_size(_context: fidl::encoding::Context) -> usize {
14337            16
14338        }
14339    }
14340
14341    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<OfferConfiguration, D>
14342        for &OfferConfiguration
14343    {
14344        unsafe fn encode(
14345            self,
14346            encoder: &mut fidl::encoding::Encoder<'_, D>,
14347            offset: usize,
14348            mut depth: fidl::encoding::Depth,
14349        ) -> fidl::Result<()> {
14350            encoder.debug_check_bounds::<OfferConfiguration>(offset);
14351            // Vector header
14352            let max_ordinal: u64 = self.max_ordinal_present();
14353            encoder.write_num(max_ordinal, offset);
14354            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
14355            // Calling encoder.out_of_line_offset(0) is not allowed.
14356            if max_ordinal == 0 {
14357                return Ok(());
14358            }
14359            depth.increment()?;
14360            let envelope_size = 8;
14361            let bytes_len = max_ordinal as usize * envelope_size;
14362            #[allow(unused_variables)]
14363            let offset = encoder.out_of_line_offset(bytes_len);
14364            let mut _prev_end_offset: usize = 0;
14365            if 1 > max_ordinal {
14366                return Ok(());
14367            }
14368
14369            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14370            // are envelope_size bytes.
14371            let cur_offset: usize = (1 - 1) * envelope_size;
14372
14373            // Zero reserved fields.
14374            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14375
14376            // Safety:
14377            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14378            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14379            //   envelope_size bytes, there is always sufficient room.
14380            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
14381                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
14382                encoder,
14383                offset + cur_offset,
14384                depth,
14385            )?;
14386
14387            _prev_end_offset = cur_offset + envelope_size;
14388            if 2 > max_ordinal {
14389                return Ok(());
14390            }
14391
14392            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14393            // are envelope_size bytes.
14394            let cur_offset: usize = (2 - 1) * envelope_size;
14395
14396            // Zero reserved fields.
14397            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14398
14399            // Safety:
14400            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14401            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14402            //   envelope_size bytes, there is always sufficient room.
14403            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
14404                self.source_name.as_ref().map(
14405                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
14406                ),
14407                encoder,
14408                offset + cur_offset,
14409                depth,
14410            )?;
14411
14412            _prev_end_offset = cur_offset + envelope_size;
14413            if 3 > max_ordinal {
14414                return Ok(());
14415            }
14416
14417            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14418            // are envelope_size bytes.
14419            let cur_offset: usize = (3 - 1) * envelope_size;
14420
14421            // Zero reserved fields.
14422            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14423
14424            // Safety:
14425            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14426            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14427            //   envelope_size bytes, there is always sufficient room.
14428            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
14429                self.target.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
14430                encoder,
14431                offset + cur_offset,
14432                depth,
14433            )?;
14434
14435            _prev_end_offset = cur_offset + envelope_size;
14436            if 4 > max_ordinal {
14437                return Ok(());
14438            }
14439
14440            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14441            // are envelope_size bytes.
14442            let cur_offset: usize = (4 - 1) * envelope_size;
14443
14444            // Zero reserved fields.
14445            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14446
14447            // Safety:
14448            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14449            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14450            //   envelope_size bytes, there is always sufficient room.
14451            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
14452                self.target_name.as_ref().map(
14453                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
14454                ),
14455                encoder,
14456                offset + cur_offset,
14457                depth,
14458            )?;
14459
14460            _prev_end_offset = cur_offset + envelope_size;
14461            if 5 > max_ordinal {
14462                return Ok(());
14463            }
14464
14465            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14466            // are envelope_size bytes.
14467            let cur_offset: usize = (5 - 1) * envelope_size;
14468
14469            // Zero reserved fields.
14470            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14471
14472            // Safety:
14473            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14474            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14475            //   envelope_size bytes, there is always sufficient room.
14476            fidl::encoding::encode_in_envelope_optional::<Availability, D>(
14477                self.availability
14478                    .as_ref()
14479                    .map(<Availability as fidl::encoding::ValueTypeMarker>::borrow),
14480                encoder,
14481                offset + cur_offset,
14482                depth,
14483            )?;
14484
14485            _prev_end_offset = cur_offset + envelope_size;
14486            if 6 > max_ordinal {
14487                return Ok(());
14488            }
14489
14490            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14491            // are envelope_size bytes.
14492            let cur_offset: usize = (6 - 1) * envelope_size;
14493
14494            // Zero reserved fields.
14495            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14496
14497            // Safety:
14498            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14499            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14500            //   envelope_size bytes, there is always sufficient room.
14501            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
14502            self.source_dictionary.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
14503            encoder, offset + cur_offset, depth
14504        )?;
14505
14506            _prev_end_offset = cur_offset + envelope_size;
14507
14508            Ok(())
14509        }
14510    }
14511
14512    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for OfferConfiguration {
14513        #[inline(always)]
14514        fn new_empty() -> Self {
14515            Self::default()
14516        }
14517
14518        unsafe fn decode(
14519            &mut self,
14520            decoder: &mut fidl::encoding::Decoder<'_, D>,
14521            offset: usize,
14522            mut depth: fidl::encoding::Depth,
14523        ) -> fidl::Result<()> {
14524            decoder.debug_check_bounds::<Self>(offset);
14525            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
14526                None => return Err(fidl::Error::NotNullable),
14527                Some(len) => len,
14528            };
14529            // Calling decoder.out_of_line_offset(0) is not allowed.
14530            if len == 0 {
14531                return Ok(());
14532            };
14533            depth.increment()?;
14534            let envelope_size = 8;
14535            let bytes_len = len * envelope_size;
14536            let offset = decoder.out_of_line_offset(bytes_len)?;
14537            // Decode the envelope for each type.
14538            let mut _next_ordinal_to_read = 0;
14539            let mut next_offset = offset;
14540            let end_offset = offset + bytes_len;
14541            _next_ordinal_to_read += 1;
14542            if next_offset >= end_offset {
14543                return Ok(());
14544            }
14545
14546            // Decode unknown envelopes for gaps in ordinals.
14547            while _next_ordinal_to_read < 1 {
14548                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14549                _next_ordinal_to_read += 1;
14550                next_offset += envelope_size;
14551            }
14552
14553            let next_out_of_line = decoder.next_out_of_line();
14554            let handles_before = decoder.remaining_handles();
14555            if let Some((inlined, num_bytes, num_handles)) =
14556                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14557            {
14558                let member_inline_size =
14559                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14560                if inlined != (member_inline_size <= 4) {
14561                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14562                }
14563                let inner_offset;
14564                let mut inner_depth = depth.clone();
14565                if inlined {
14566                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14567                    inner_offset = next_offset;
14568                } else {
14569                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14570                    inner_depth.increment()?;
14571                }
14572                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
14573                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
14574                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14575                {
14576                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14577                }
14578                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14579                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14580                }
14581            }
14582
14583            next_offset += envelope_size;
14584            _next_ordinal_to_read += 1;
14585            if next_offset >= end_offset {
14586                return Ok(());
14587            }
14588
14589            // Decode unknown envelopes for gaps in ordinals.
14590            while _next_ordinal_to_read < 2 {
14591                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14592                _next_ordinal_to_read += 1;
14593                next_offset += envelope_size;
14594            }
14595
14596            let next_out_of_line = decoder.next_out_of_line();
14597            let handles_before = decoder.remaining_handles();
14598            if let Some((inlined, num_bytes, num_handles)) =
14599                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14600            {
14601                let member_inline_size =
14602                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
14603                        decoder.context,
14604                    );
14605                if inlined != (member_inline_size <= 4) {
14606                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14607                }
14608                let inner_offset;
14609                let mut inner_depth = depth.clone();
14610                if inlined {
14611                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14612                    inner_offset = next_offset;
14613                } else {
14614                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14615                    inner_depth.increment()?;
14616                }
14617                let val_ref = self
14618                    .source_name
14619                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
14620                fidl::decode!(
14621                    fidl::encoding::BoundedString<100>,
14622                    D,
14623                    val_ref,
14624                    decoder,
14625                    inner_offset,
14626                    inner_depth
14627                )?;
14628                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14629                {
14630                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14631                }
14632                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14633                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14634                }
14635            }
14636
14637            next_offset += envelope_size;
14638            _next_ordinal_to_read += 1;
14639            if next_offset >= end_offset {
14640                return Ok(());
14641            }
14642
14643            // Decode unknown envelopes for gaps in ordinals.
14644            while _next_ordinal_to_read < 3 {
14645                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14646                _next_ordinal_to_read += 1;
14647                next_offset += envelope_size;
14648            }
14649
14650            let next_out_of_line = decoder.next_out_of_line();
14651            let handles_before = decoder.remaining_handles();
14652            if let Some((inlined, num_bytes, num_handles)) =
14653                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14654            {
14655                let member_inline_size =
14656                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14657                if inlined != (member_inline_size <= 4) {
14658                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14659                }
14660                let inner_offset;
14661                let mut inner_depth = depth.clone();
14662                if inlined {
14663                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14664                    inner_offset = next_offset;
14665                } else {
14666                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14667                    inner_depth.increment()?;
14668                }
14669                let val_ref = self.target.get_or_insert_with(|| fidl::new_empty!(Ref, D));
14670                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
14671                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14672                {
14673                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14674                }
14675                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14676                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14677                }
14678            }
14679
14680            next_offset += envelope_size;
14681            _next_ordinal_to_read += 1;
14682            if next_offset >= end_offset {
14683                return Ok(());
14684            }
14685
14686            // Decode unknown envelopes for gaps in ordinals.
14687            while _next_ordinal_to_read < 4 {
14688                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14689                _next_ordinal_to_read += 1;
14690                next_offset += envelope_size;
14691            }
14692
14693            let next_out_of_line = decoder.next_out_of_line();
14694            let handles_before = decoder.remaining_handles();
14695            if let Some((inlined, num_bytes, num_handles)) =
14696                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14697            {
14698                let member_inline_size =
14699                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
14700                        decoder.context,
14701                    );
14702                if inlined != (member_inline_size <= 4) {
14703                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14704                }
14705                let inner_offset;
14706                let mut inner_depth = depth.clone();
14707                if inlined {
14708                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14709                    inner_offset = next_offset;
14710                } else {
14711                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14712                    inner_depth.increment()?;
14713                }
14714                let val_ref = self
14715                    .target_name
14716                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
14717                fidl::decode!(
14718                    fidl::encoding::BoundedString<100>,
14719                    D,
14720                    val_ref,
14721                    decoder,
14722                    inner_offset,
14723                    inner_depth
14724                )?;
14725                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14726                {
14727                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14728                }
14729                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14730                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14731                }
14732            }
14733
14734            next_offset += envelope_size;
14735            _next_ordinal_to_read += 1;
14736            if next_offset >= end_offset {
14737                return Ok(());
14738            }
14739
14740            // Decode unknown envelopes for gaps in ordinals.
14741            while _next_ordinal_to_read < 5 {
14742                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14743                _next_ordinal_to_read += 1;
14744                next_offset += envelope_size;
14745            }
14746
14747            let next_out_of_line = decoder.next_out_of_line();
14748            let handles_before = decoder.remaining_handles();
14749            if let Some((inlined, num_bytes, num_handles)) =
14750                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14751            {
14752                let member_inline_size =
14753                    <Availability as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14754                if inlined != (member_inline_size <= 4) {
14755                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14756                }
14757                let inner_offset;
14758                let mut inner_depth = depth.clone();
14759                if inlined {
14760                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14761                    inner_offset = next_offset;
14762                } else {
14763                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14764                    inner_depth.increment()?;
14765                }
14766                let val_ref =
14767                    self.availability.get_or_insert_with(|| fidl::new_empty!(Availability, D));
14768                fidl::decode!(Availability, D, val_ref, decoder, inner_offset, inner_depth)?;
14769                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14770                {
14771                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14772                }
14773                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14774                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14775                }
14776            }
14777
14778            next_offset += envelope_size;
14779            _next_ordinal_to_read += 1;
14780            if next_offset >= end_offset {
14781                return Ok(());
14782            }
14783
14784            // Decode unknown envelopes for gaps in ordinals.
14785            while _next_ordinal_to_read < 6 {
14786                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14787                _next_ordinal_to_read += 1;
14788                next_offset += envelope_size;
14789            }
14790
14791            let next_out_of_line = decoder.next_out_of_line();
14792            let handles_before = decoder.remaining_handles();
14793            if let Some((inlined, num_bytes, num_handles)) =
14794                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14795            {
14796                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14797                if inlined != (member_inline_size <= 4) {
14798                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14799                }
14800                let inner_offset;
14801                let mut inner_depth = depth.clone();
14802                if inlined {
14803                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14804                    inner_offset = next_offset;
14805                } else {
14806                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14807                    inner_depth.increment()?;
14808                }
14809                let val_ref = self.source_dictionary.get_or_insert_with(|| {
14810                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
14811                });
14812                fidl::decode!(
14813                    fidl::encoding::BoundedString<1024>,
14814                    D,
14815                    val_ref,
14816                    decoder,
14817                    inner_offset,
14818                    inner_depth
14819                )?;
14820                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14821                {
14822                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14823                }
14824                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14825                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14826                }
14827            }
14828
14829            next_offset += envelope_size;
14830
14831            // Decode the remaining unknown envelopes.
14832            while next_offset < end_offset {
14833                _next_ordinal_to_read += 1;
14834                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14835                next_offset += envelope_size;
14836            }
14837
14838            Ok(())
14839        }
14840    }
14841
14842    impl OfferDictionary {
14843        #[inline(always)]
14844        fn max_ordinal_present(&self) -> u64 {
14845            if let Some(_) = self.source_dictionary {
14846                return 7;
14847            }
14848            if let Some(_) = self.availability {
14849                return 6;
14850            }
14851            if let Some(_) = self.dependency_type {
14852                return 5;
14853            }
14854            if let Some(_) = self.target_name {
14855                return 4;
14856            }
14857            if let Some(_) = self.target {
14858                return 3;
14859            }
14860            if let Some(_) = self.source_name {
14861                return 2;
14862            }
14863            if let Some(_) = self.source {
14864                return 1;
14865            }
14866            0
14867        }
14868    }
14869
14870    impl fidl::encoding::ValueTypeMarker for OfferDictionary {
14871        type Borrowed<'a> = &'a Self;
14872        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
14873            value
14874        }
14875    }
14876
14877    unsafe impl fidl::encoding::TypeMarker for OfferDictionary {
14878        type Owned = Self;
14879
14880        #[inline(always)]
14881        fn inline_align(_context: fidl::encoding::Context) -> usize {
14882            8
14883        }
14884
14885        #[inline(always)]
14886        fn inline_size(_context: fidl::encoding::Context) -> usize {
14887            16
14888        }
14889    }
14890
14891    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<OfferDictionary, D>
14892        for &OfferDictionary
14893    {
14894        unsafe fn encode(
14895            self,
14896            encoder: &mut fidl::encoding::Encoder<'_, D>,
14897            offset: usize,
14898            mut depth: fidl::encoding::Depth,
14899        ) -> fidl::Result<()> {
14900            encoder.debug_check_bounds::<OfferDictionary>(offset);
14901            // Vector header
14902            let max_ordinal: u64 = self.max_ordinal_present();
14903            encoder.write_num(max_ordinal, offset);
14904            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
14905            // Calling encoder.out_of_line_offset(0) is not allowed.
14906            if max_ordinal == 0 {
14907                return Ok(());
14908            }
14909            depth.increment()?;
14910            let envelope_size = 8;
14911            let bytes_len = max_ordinal as usize * envelope_size;
14912            #[allow(unused_variables)]
14913            let offset = encoder.out_of_line_offset(bytes_len);
14914            let mut _prev_end_offset: usize = 0;
14915            if 1 > max_ordinal {
14916                return Ok(());
14917            }
14918
14919            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14920            // are envelope_size bytes.
14921            let cur_offset: usize = (1 - 1) * envelope_size;
14922
14923            // Zero reserved fields.
14924            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14925
14926            // Safety:
14927            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14928            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14929            //   envelope_size bytes, there is always sufficient room.
14930            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
14931                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
14932                encoder,
14933                offset + cur_offset,
14934                depth,
14935            )?;
14936
14937            _prev_end_offset = cur_offset + envelope_size;
14938            if 2 > max_ordinal {
14939                return Ok(());
14940            }
14941
14942            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14943            // are envelope_size bytes.
14944            let cur_offset: usize = (2 - 1) * envelope_size;
14945
14946            // Zero reserved fields.
14947            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14948
14949            // Safety:
14950            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14951            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14952            //   envelope_size bytes, there is always sufficient room.
14953            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
14954                self.source_name.as_ref().map(
14955                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
14956                ),
14957                encoder,
14958                offset + cur_offset,
14959                depth,
14960            )?;
14961
14962            _prev_end_offset = cur_offset + envelope_size;
14963            if 3 > max_ordinal {
14964                return Ok(());
14965            }
14966
14967            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14968            // are envelope_size bytes.
14969            let cur_offset: usize = (3 - 1) * envelope_size;
14970
14971            // Zero reserved fields.
14972            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14973
14974            // Safety:
14975            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14976            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14977            //   envelope_size bytes, there is always sufficient room.
14978            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
14979                self.target.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
14980                encoder,
14981                offset + cur_offset,
14982                depth,
14983            )?;
14984
14985            _prev_end_offset = cur_offset + envelope_size;
14986            if 4 > max_ordinal {
14987                return Ok(());
14988            }
14989
14990            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14991            // are envelope_size bytes.
14992            let cur_offset: usize = (4 - 1) * envelope_size;
14993
14994            // Zero reserved fields.
14995            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14996
14997            // Safety:
14998            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14999            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15000            //   envelope_size bytes, there is always sufficient room.
15001            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
15002                self.target_name.as_ref().map(
15003                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
15004                ),
15005                encoder,
15006                offset + cur_offset,
15007                depth,
15008            )?;
15009
15010            _prev_end_offset = cur_offset + envelope_size;
15011            if 5 > max_ordinal {
15012                return Ok(());
15013            }
15014
15015            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15016            // are envelope_size bytes.
15017            let cur_offset: usize = (5 - 1) * envelope_size;
15018
15019            // Zero reserved fields.
15020            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15021
15022            // Safety:
15023            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15024            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15025            //   envelope_size bytes, there is always sufficient room.
15026            fidl::encoding::encode_in_envelope_optional::<DependencyType, D>(
15027                self.dependency_type
15028                    .as_ref()
15029                    .map(<DependencyType as fidl::encoding::ValueTypeMarker>::borrow),
15030                encoder,
15031                offset + cur_offset,
15032                depth,
15033            )?;
15034
15035            _prev_end_offset = cur_offset + envelope_size;
15036            if 6 > max_ordinal {
15037                return Ok(());
15038            }
15039
15040            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15041            // are envelope_size bytes.
15042            let cur_offset: usize = (6 - 1) * envelope_size;
15043
15044            // Zero reserved fields.
15045            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15046
15047            // Safety:
15048            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15049            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15050            //   envelope_size bytes, there is always sufficient room.
15051            fidl::encoding::encode_in_envelope_optional::<Availability, D>(
15052                self.availability
15053                    .as_ref()
15054                    .map(<Availability as fidl::encoding::ValueTypeMarker>::borrow),
15055                encoder,
15056                offset + cur_offset,
15057                depth,
15058            )?;
15059
15060            _prev_end_offset = cur_offset + envelope_size;
15061            if 7 > max_ordinal {
15062                return Ok(());
15063            }
15064
15065            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15066            // are envelope_size bytes.
15067            let cur_offset: usize = (7 - 1) * envelope_size;
15068
15069            // Zero reserved fields.
15070            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15071
15072            // Safety:
15073            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15074            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15075            //   envelope_size bytes, there is always sufficient room.
15076            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
15077            self.source_dictionary.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
15078            encoder, offset + cur_offset, depth
15079        )?;
15080
15081            _prev_end_offset = cur_offset + envelope_size;
15082
15083            Ok(())
15084        }
15085    }
15086
15087    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for OfferDictionary {
15088        #[inline(always)]
15089        fn new_empty() -> Self {
15090            Self::default()
15091        }
15092
15093        unsafe fn decode(
15094            &mut self,
15095            decoder: &mut fidl::encoding::Decoder<'_, D>,
15096            offset: usize,
15097            mut depth: fidl::encoding::Depth,
15098        ) -> fidl::Result<()> {
15099            decoder.debug_check_bounds::<Self>(offset);
15100            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
15101                None => return Err(fidl::Error::NotNullable),
15102                Some(len) => len,
15103            };
15104            // Calling decoder.out_of_line_offset(0) is not allowed.
15105            if len == 0 {
15106                return Ok(());
15107            };
15108            depth.increment()?;
15109            let envelope_size = 8;
15110            let bytes_len = len * envelope_size;
15111            let offset = decoder.out_of_line_offset(bytes_len)?;
15112            // Decode the envelope for each type.
15113            let mut _next_ordinal_to_read = 0;
15114            let mut next_offset = offset;
15115            let end_offset = offset + bytes_len;
15116            _next_ordinal_to_read += 1;
15117            if next_offset >= end_offset {
15118                return Ok(());
15119            }
15120
15121            // Decode unknown envelopes for gaps in ordinals.
15122            while _next_ordinal_to_read < 1 {
15123                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15124                _next_ordinal_to_read += 1;
15125                next_offset += envelope_size;
15126            }
15127
15128            let next_out_of_line = decoder.next_out_of_line();
15129            let handles_before = decoder.remaining_handles();
15130            if let Some((inlined, num_bytes, num_handles)) =
15131                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15132            {
15133                let member_inline_size =
15134                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15135                if inlined != (member_inline_size <= 4) {
15136                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15137                }
15138                let inner_offset;
15139                let mut inner_depth = depth.clone();
15140                if inlined {
15141                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15142                    inner_offset = next_offset;
15143                } else {
15144                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15145                    inner_depth.increment()?;
15146                }
15147                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
15148                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
15149                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15150                {
15151                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15152                }
15153                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15154                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15155                }
15156            }
15157
15158            next_offset += envelope_size;
15159            _next_ordinal_to_read += 1;
15160            if next_offset >= end_offset {
15161                return Ok(());
15162            }
15163
15164            // Decode unknown envelopes for gaps in ordinals.
15165            while _next_ordinal_to_read < 2 {
15166                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15167                _next_ordinal_to_read += 1;
15168                next_offset += envelope_size;
15169            }
15170
15171            let next_out_of_line = decoder.next_out_of_line();
15172            let handles_before = decoder.remaining_handles();
15173            if let Some((inlined, num_bytes, num_handles)) =
15174                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15175            {
15176                let member_inline_size =
15177                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
15178                        decoder.context,
15179                    );
15180                if inlined != (member_inline_size <= 4) {
15181                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15182                }
15183                let inner_offset;
15184                let mut inner_depth = depth.clone();
15185                if inlined {
15186                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15187                    inner_offset = next_offset;
15188                } else {
15189                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15190                    inner_depth.increment()?;
15191                }
15192                let val_ref = self
15193                    .source_name
15194                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
15195                fidl::decode!(
15196                    fidl::encoding::BoundedString<100>,
15197                    D,
15198                    val_ref,
15199                    decoder,
15200                    inner_offset,
15201                    inner_depth
15202                )?;
15203                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15204                {
15205                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15206                }
15207                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15208                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15209                }
15210            }
15211
15212            next_offset += envelope_size;
15213            _next_ordinal_to_read += 1;
15214            if next_offset >= end_offset {
15215                return Ok(());
15216            }
15217
15218            // Decode unknown envelopes for gaps in ordinals.
15219            while _next_ordinal_to_read < 3 {
15220                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15221                _next_ordinal_to_read += 1;
15222                next_offset += envelope_size;
15223            }
15224
15225            let next_out_of_line = decoder.next_out_of_line();
15226            let handles_before = decoder.remaining_handles();
15227            if let Some((inlined, num_bytes, num_handles)) =
15228                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15229            {
15230                let member_inline_size =
15231                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15232                if inlined != (member_inline_size <= 4) {
15233                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15234                }
15235                let inner_offset;
15236                let mut inner_depth = depth.clone();
15237                if inlined {
15238                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15239                    inner_offset = next_offset;
15240                } else {
15241                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15242                    inner_depth.increment()?;
15243                }
15244                let val_ref = self.target.get_or_insert_with(|| fidl::new_empty!(Ref, D));
15245                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
15246                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15247                {
15248                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15249                }
15250                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15251                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15252                }
15253            }
15254
15255            next_offset += envelope_size;
15256            _next_ordinal_to_read += 1;
15257            if next_offset >= end_offset {
15258                return Ok(());
15259            }
15260
15261            // Decode unknown envelopes for gaps in ordinals.
15262            while _next_ordinal_to_read < 4 {
15263                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15264                _next_ordinal_to_read += 1;
15265                next_offset += envelope_size;
15266            }
15267
15268            let next_out_of_line = decoder.next_out_of_line();
15269            let handles_before = decoder.remaining_handles();
15270            if let Some((inlined, num_bytes, num_handles)) =
15271                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15272            {
15273                let member_inline_size =
15274                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
15275                        decoder.context,
15276                    );
15277                if inlined != (member_inline_size <= 4) {
15278                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15279                }
15280                let inner_offset;
15281                let mut inner_depth = depth.clone();
15282                if inlined {
15283                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15284                    inner_offset = next_offset;
15285                } else {
15286                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15287                    inner_depth.increment()?;
15288                }
15289                let val_ref = self
15290                    .target_name
15291                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
15292                fidl::decode!(
15293                    fidl::encoding::BoundedString<100>,
15294                    D,
15295                    val_ref,
15296                    decoder,
15297                    inner_offset,
15298                    inner_depth
15299                )?;
15300                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15301                {
15302                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15303                }
15304                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15305                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15306                }
15307            }
15308
15309            next_offset += envelope_size;
15310            _next_ordinal_to_read += 1;
15311            if next_offset >= end_offset {
15312                return Ok(());
15313            }
15314
15315            // Decode unknown envelopes for gaps in ordinals.
15316            while _next_ordinal_to_read < 5 {
15317                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15318                _next_ordinal_to_read += 1;
15319                next_offset += envelope_size;
15320            }
15321
15322            let next_out_of_line = decoder.next_out_of_line();
15323            let handles_before = decoder.remaining_handles();
15324            if let Some((inlined, num_bytes, num_handles)) =
15325                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15326            {
15327                let member_inline_size =
15328                    <DependencyType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15329                if inlined != (member_inline_size <= 4) {
15330                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15331                }
15332                let inner_offset;
15333                let mut inner_depth = depth.clone();
15334                if inlined {
15335                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15336                    inner_offset = next_offset;
15337                } else {
15338                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15339                    inner_depth.increment()?;
15340                }
15341                let val_ref =
15342                    self.dependency_type.get_or_insert_with(|| fidl::new_empty!(DependencyType, D));
15343                fidl::decode!(DependencyType, D, val_ref, decoder, inner_offset, inner_depth)?;
15344                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15345                {
15346                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15347                }
15348                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15349                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15350                }
15351            }
15352
15353            next_offset += envelope_size;
15354            _next_ordinal_to_read += 1;
15355            if next_offset >= end_offset {
15356                return Ok(());
15357            }
15358
15359            // Decode unknown envelopes for gaps in ordinals.
15360            while _next_ordinal_to_read < 6 {
15361                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15362                _next_ordinal_to_read += 1;
15363                next_offset += envelope_size;
15364            }
15365
15366            let next_out_of_line = decoder.next_out_of_line();
15367            let handles_before = decoder.remaining_handles();
15368            if let Some((inlined, num_bytes, num_handles)) =
15369                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15370            {
15371                let member_inline_size =
15372                    <Availability as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15373                if inlined != (member_inline_size <= 4) {
15374                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15375                }
15376                let inner_offset;
15377                let mut inner_depth = depth.clone();
15378                if inlined {
15379                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15380                    inner_offset = next_offset;
15381                } else {
15382                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15383                    inner_depth.increment()?;
15384                }
15385                let val_ref =
15386                    self.availability.get_or_insert_with(|| fidl::new_empty!(Availability, D));
15387                fidl::decode!(Availability, D, val_ref, decoder, inner_offset, inner_depth)?;
15388                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15389                {
15390                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15391                }
15392                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15393                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15394                }
15395            }
15396
15397            next_offset += envelope_size;
15398            _next_ordinal_to_read += 1;
15399            if next_offset >= end_offset {
15400                return Ok(());
15401            }
15402
15403            // Decode unknown envelopes for gaps in ordinals.
15404            while _next_ordinal_to_read < 7 {
15405                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15406                _next_ordinal_to_read += 1;
15407                next_offset += envelope_size;
15408            }
15409
15410            let next_out_of_line = decoder.next_out_of_line();
15411            let handles_before = decoder.remaining_handles();
15412            if let Some((inlined, num_bytes, num_handles)) =
15413                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15414            {
15415                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15416                if inlined != (member_inline_size <= 4) {
15417                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15418                }
15419                let inner_offset;
15420                let mut inner_depth = depth.clone();
15421                if inlined {
15422                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15423                    inner_offset = next_offset;
15424                } else {
15425                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15426                    inner_depth.increment()?;
15427                }
15428                let val_ref = self.source_dictionary.get_or_insert_with(|| {
15429                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
15430                });
15431                fidl::decode!(
15432                    fidl::encoding::BoundedString<1024>,
15433                    D,
15434                    val_ref,
15435                    decoder,
15436                    inner_offset,
15437                    inner_depth
15438                )?;
15439                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15440                {
15441                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15442                }
15443                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15444                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15445                }
15446            }
15447
15448            next_offset += envelope_size;
15449
15450            // Decode the remaining unknown envelopes.
15451            while next_offset < end_offset {
15452                _next_ordinal_to_read += 1;
15453                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15454                next_offset += envelope_size;
15455            }
15456
15457            Ok(())
15458        }
15459    }
15460
15461    impl OfferDirectory {
15462        #[inline(always)]
15463        fn max_ordinal_present(&self) -> u64 {
15464            if let Some(_) = self.source_dictionary {
15465                return 9;
15466            }
15467            if let Some(_) = self.availability {
15468                return 8;
15469            }
15470            if let Some(_) = self.dependency_type {
15471                return 7;
15472            }
15473            if let Some(_) = self.subdir {
15474                return 6;
15475            }
15476            if let Some(_) = self.rights {
15477                return 5;
15478            }
15479            if let Some(_) = self.target_name {
15480                return 4;
15481            }
15482            if let Some(_) = self.target {
15483                return 3;
15484            }
15485            if let Some(_) = self.source_name {
15486                return 2;
15487            }
15488            if let Some(_) = self.source {
15489                return 1;
15490            }
15491            0
15492        }
15493    }
15494
15495    impl fidl::encoding::ValueTypeMarker for OfferDirectory {
15496        type Borrowed<'a> = &'a Self;
15497        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
15498            value
15499        }
15500    }
15501
15502    unsafe impl fidl::encoding::TypeMarker for OfferDirectory {
15503        type Owned = Self;
15504
15505        #[inline(always)]
15506        fn inline_align(_context: fidl::encoding::Context) -> usize {
15507            8
15508        }
15509
15510        #[inline(always)]
15511        fn inline_size(_context: fidl::encoding::Context) -> usize {
15512            16
15513        }
15514    }
15515
15516    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<OfferDirectory, D>
15517        for &OfferDirectory
15518    {
15519        unsafe fn encode(
15520            self,
15521            encoder: &mut fidl::encoding::Encoder<'_, D>,
15522            offset: usize,
15523            mut depth: fidl::encoding::Depth,
15524        ) -> fidl::Result<()> {
15525            encoder.debug_check_bounds::<OfferDirectory>(offset);
15526            // Vector header
15527            let max_ordinal: u64 = self.max_ordinal_present();
15528            encoder.write_num(max_ordinal, offset);
15529            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
15530            // Calling encoder.out_of_line_offset(0) is not allowed.
15531            if max_ordinal == 0 {
15532                return Ok(());
15533            }
15534            depth.increment()?;
15535            let envelope_size = 8;
15536            let bytes_len = max_ordinal as usize * envelope_size;
15537            #[allow(unused_variables)]
15538            let offset = encoder.out_of_line_offset(bytes_len);
15539            let mut _prev_end_offset: usize = 0;
15540            if 1 > max_ordinal {
15541                return Ok(());
15542            }
15543
15544            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15545            // are envelope_size bytes.
15546            let cur_offset: usize = (1 - 1) * envelope_size;
15547
15548            // Zero reserved fields.
15549            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15550
15551            // Safety:
15552            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15553            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15554            //   envelope_size bytes, there is always sufficient room.
15555            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
15556                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
15557                encoder,
15558                offset + cur_offset,
15559                depth,
15560            )?;
15561
15562            _prev_end_offset = cur_offset + envelope_size;
15563            if 2 > max_ordinal {
15564                return Ok(());
15565            }
15566
15567            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15568            // are envelope_size bytes.
15569            let cur_offset: usize = (2 - 1) * envelope_size;
15570
15571            // Zero reserved fields.
15572            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15573
15574            // Safety:
15575            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15576            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15577            //   envelope_size bytes, there is always sufficient room.
15578            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
15579                self.source_name.as_ref().map(
15580                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
15581                ),
15582                encoder,
15583                offset + cur_offset,
15584                depth,
15585            )?;
15586
15587            _prev_end_offset = cur_offset + envelope_size;
15588            if 3 > max_ordinal {
15589                return Ok(());
15590            }
15591
15592            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15593            // are envelope_size bytes.
15594            let cur_offset: usize = (3 - 1) * envelope_size;
15595
15596            // Zero reserved fields.
15597            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15598
15599            // Safety:
15600            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15601            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15602            //   envelope_size bytes, there is always sufficient room.
15603            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
15604                self.target.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
15605                encoder,
15606                offset + cur_offset,
15607                depth,
15608            )?;
15609
15610            _prev_end_offset = cur_offset + envelope_size;
15611            if 4 > max_ordinal {
15612                return Ok(());
15613            }
15614
15615            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15616            // are envelope_size bytes.
15617            let cur_offset: usize = (4 - 1) * envelope_size;
15618
15619            // Zero reserved fields.
15620            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15621
15622            // Safety:
15623            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15624            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15625            //   envelope_size bytes, there is always sufficient room.
15626            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
15627                self.target_name.as_ref().map(
15628                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
15629                ),
15630                encoder,
15631                offset + cur_offset,
15632                depth,
15633            )?;
15634
15635            _prev_end_offset = cur_offset + envelope_size;
15636            if 5 > max_ordinal {
15637                return Ok(());
15638            }
15639
15640            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15641            // are envelope_size bytes.
15642            let cur_offset: usize = (5 - 1) * envelope_size;
15643
15644            // Zero reserved fields.
15645            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15646
15647            // Safety:
15648            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15649            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15650            //   envelope_size bytes, there is always sufficient room.
15651            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_io__common::Operations, D>(
15652            self.rights.as_ref().map(<fidl_fuchsia_io__common::Operations as fidl::encoding::ValueTypeMarker>::borrow),
15653            encoder, offset + cur_offset, depth
15654        )?;
15655
15656            _prev_end_offset = cur_offset + envelope_size;
15657            if 6 > max_ordinal {
15658                return Ok(());
15659            }
15660
15661            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15662            // are envelope_size bytes.
15663            let cur_offset: usize = (6 - 1) * envelope_size;
15664
15665            // Zero reserved fields.
15666            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15667
15668            // Safety:
15669            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15670            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15671            //   envelope_size bytes, there is always sufficient room.
15672            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
15673            self.subdir.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
15674            encoder, offset + cur_offset, depth
15675        )?;
15676
15677            _prev_end_offset = cur_offset + envelope_size;
15678            if 7 > max_ordinal {
15679                return Ok(());
15680            }
15681
15682            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15683            // are envelope_size bytes.
15684            let cur_offset: usize = (7 - 1) * envelope_size;
15685
15686            // Zero reserved fields.
15687            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15688
15689            // Safety:
15690            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15691            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15692            //   envelope_size bytes, there is always sufficient room.
15693            fidl::encoding::encode_in_envelope_optional::<DependencyType, D>(
15694                self.dependency_type
15695                    .as_ref()
15696                    .map(<DependencyType as fidl::encoding::ValueTypeMarker>::borrow),
15697                encoder,
15698                offset + cur_offset,
15699                depth,
15700            )?;
15701
15702            _prev_end_offset = cur_offset + envelope_size;
15703            if 8 > max_ordinal {
15704                return Ok(());
15705            }
15706
15707            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15708            // are envelope_size bytes.
15709            let cur_offset: usize = (8 - 1) * envelope_size;
15710
15711            // Zero reserved fields.
15712            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15713
15714            // Safety:
15715            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15716            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15717            //   envelope_size bytes, there is always sufficient room.
15718            fidl::encoding::encode_in_envelope_optional::<Availability, D>(
15719                self.availability
15720                    .as_ref()
15721                    .map(<Availability as fidl::encoding::ValueTypeMarker>::borrow),
15722                encoder,
15723                offset + cur_offset,
15724                depth,
15725            )?;
15726
15727            _prev_end_offset = cur_offset + envelope_size;
15728            if 9 > max_ordinal {
15729                return Ok(());
15730            }
15731
15732            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15733            // are envelope_size bytes.
15734            let cur_offset: usize = (9 - 1) * envelope_size;
15735
15736            // Zero reserved fields.
15737            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15738
15739            // Safety:
15740            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15741            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15742            //   envelope_size bytes, there is always sufficient room.
15743            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
15744            self.source_dictionary.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
15745            encoder, offset + cur_offset, depth
15746        )?;
15747
15748            _prev_end_offset = cur_offset + envelope_size;
15749
15750            Ok(())
15751        }
15752    }
15753
15754    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for OfferDirectory {
15755        #[inline(always)]
15756        fn new_empty() -> Self {
15757            Self::default()
15758        }
15759
15760        unsafe fn decode(
15761            &mut self,
15762            decoder: &mut fidl::encoding::Decoder<'_, D>,
15763            offset: usize,
15764            mut depth: fidl::encoding::Depth,
15765        ) -> fidl::Result<()> {
15766            decoder.debug_check_bounds::<Self>(offset);
15767            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
15768                None => return Err(fidl::Error::NotNullable),
15769                Some(len) => len,
15770            };
15771            // Calling decoder.out_of_line_offset(0) is not allowed.
15772            if len == 0 {
15773                return Ok(());
15774            };
15775            depth.increment()?;
15776            let envelope_size = 8;
15777            let bytes_len = len * envelope_size;
15778            let offset = decoder.out_of_line_offset(bytes_len)?;
15779            // Decode the envelope for each type.
15780            let mut _next_ordinal_to_read = 0;
15781            let mut next_offset = offset;
15782            let end_offset = offset + bytes_len;
15783            _next_ordinal_to_read += 1;
15784            if next_offset >= end_offset {
15785                return Ok(());
15786            }
15787
15788            // Decode unknown envelopes for gaps in ordinals.
15789            while _next_ordinal_to_read < 1 {
15790                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15791                _next_ordinal_to_read += 1;
15792                next_offset += envelope_size;
15793            }
15794
15795            let next_out_of_line = decoder.next_out_of_line();
15796            let handles_before = decoder.remaining_handles();
15797            if let Some((inlined, num_bytes, num_handles)) =
15798                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15799            {
15800                let member_inline_size =
15801                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15802                if inlined != (member_inline_size <= 4) {
15803                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15804                }
15805                let inner_offset;
15806                let mut inner_depth = depth.clone();
15807                if inlined {
15808                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15809                    inner_offset = next_offset;
15810                } else {
15811                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15812                    inner_depth.increment()?;
15813                }
15814                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
15815                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
15816                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15817                {
15818                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15819                }
15820                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15821                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15822                }
15823            }
15824
15825            next_offset += envelope_size;
15826            _next_ordinal_to_read += 1;
15827            if next_offset >= end_offset {
15828                return Ok(());
15829            }
15830
15831            // Decode unknown envelopes for gaps in ordinals.
15832            while _next_ordinal_to_read < 2 {
15833                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15834                _next_ordinal_to_read += 1;
15835                next_offset += envelope_size;
15836            }
15837
15838            let next_out_of_line = decoder.next_out_of_line();
15839            let handles_before = decoder.remaining_handles();
15840            if let Some((inlined, num_bytes, num_handles)) =
15841                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15842            {
15843                let member_inline_size =
15844                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
15845                        decoder.context,
15846                    );
15847                if inlined != (member_inline_size <= 4) {
15848                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15849                }
15850                let inner_offset;
15851                let mut inner_depth = depth.clone();
15852                if inlined {
15853                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15854                    inner_offset = next_offset;
15855                } else {
15856                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15857                    inner_depth.increment()?;
15858                }
15859                let val_ref = self
15860                    .source_name
15861                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
15862                fidl::decode!(
15863                    fidl::encoding::BoundedString<100>,
15864                    D,
15865                    val_ref,
15866                    decoder,
15867                    inner_offset,
15868                    inner_depth
15869                )?;
15870                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15871                {
15872                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15873                }
15874                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15875                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15876                }
15877            }
15878
15879            next_offset += envelope_size;
15880            _next_ordinal_to_read += 1;
15881            if next_offset >= end_offset {
15882                return Ok(());
15883            }
15884
15885            // Decode unknown envelopes for gaps in ordinals.
15886            while _next_ordinal_to_read < 3 {
15887                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15888                _next_ordinal_to_read += 1;
15889                next_offset += envelope_size;
15890            }
15891
15892            let next_out_of_line = decoder.next_out_of_line();
15893            let handles_before = decoder.remaining_handles();
15894            if let Some((inlined, num_bytes, num_handles)) =
15895                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15896            {
15897                let member_inline_size =
15898                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15899                if inlined != (member_inline_size <= 4) {
15900                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15901                }
15902                let inner_offset;
15903                let mut inner_depth = depth.clone();
15904                if inlined {
15905                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15906                    inner_offset = next_offset;
15907                } else {
15908                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15909                    inner_depth.increment()?;
15910                }
15911                let val_ref = self.target.get_or_insert_with(|| fidl::new_empty!(Ref, D));
15912                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
15913                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15914                {
15915                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15916                }
15917                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15918                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15919                }
15920            }
15921
15922            next_offset += envelope_size;
15923            _next_ordinal_to_read += 1;
15924            if next_offset >= end_offset {
15925                return Ok(());
15926            }
15927
15928            // Decode unknown envelopes for gaps in ordinals.
15929            while _next_ordinal_to_read < 4 {
15930                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15931                _next_ordinal_to_read += 1;
15932                next_offset += envelope_size;
15933            }
15934
15935            let next_out_of_line = decoder.next_out_of_line();
15936            let handles_before = decoder.remaining_handles();
15937            if let Some((inlined, num_bytes, num_handles)) =
15938                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15939            {
15940                let member_inline_size =
15941                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
15942                        decoder.context,
15943                    );
15944                if inlined != (member_inline_size <= 4) {
15945                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15946                }
15947                let inner_offset;
15948                let mut inner_depth = depth.clone();
15949                if inlined {
15950                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15951                    inner_offset = next_offset;
15952                } else {
15953                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15954                    inner_depth.increment()?;
15955                }
15956                let val_ref = self
15957                    .target_name
15958                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
15959                fidl::decode!(
15960                    fidl::encoding::BoundedString<100>,
15961                    D,
15962                    val_ref,
15963                    decoder,
15964                    inner_offset,
15965                    inner_depth
15966                )?;
15967                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15968                {
15969                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15970                }
15971                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15972                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15973                }
15974            }
15975
15976            next_offset += envelope_size;
15977            _next_ordinal_to_read += 1;
15978            if next_offset >= end_offset {
15979                return Ok(());
15980            }
15981
15982            // Decode unknown envelopes for gaps in ordinals.
15983            while _next_ordinal_to_read < 5 {
15984                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15985                _next_ordinal_to_read += 1;
15986                next_offset += envelope_size;
15987            }
15988
15989            let next_out_of_line = decoder.next_out_of_line();
15990            let handles_before = decoder.remaining_handles();
15991            if let Some((inlined, num_bytes, num_handles)) =
15992                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15993            {
15994                let member_inline_size = <fidl_fuchsia_io__common::Operations as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15995                if inlined != (member_inline_size <= 4) {
15996                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15997                }
15998                let inner_offset;
15999                let mut inner_depth = depth.clone();
16000                if inlined {
16001                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16002                    inner_offset = next_offset;
16003                } else {
16004                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16005                    inner_depth.increment()?;
16006                }
16007                let val_ref = self.rights.get_or_insert_with(|| {
16008                    fidl::new_empty!(fidl_fuchsia_io__common::Operations, D)
16009                });
16010                fidl::decode!(
16011                    fidl_fuchsia_io__common::Operations,
16012                    D,
16013                    val_ref,
16014                    decoder,
16015                    inner_offset,
16016                    inner_depth
16017                )?;
16018                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16019                {
16020                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
16021                }
16022                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16023                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16024                }
16025            }
16026
16027            next_offset += envelope_size;
16028            _next_ordinal_to_read += 1;
16029            if next_offset >= end_offset {
16030                return Ok(());
16031            }
16032
16033            // Decode unknown envelopes for gaps in ordinals.
16034            while _next_ordinal_to_read < 6 {
16035                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16036                _next_ordinal_to_read += 1;
16037                next_offset += envelope_size;
16038            }
16039
16040            let next_out_of_line = decoder.next_out_of_line();
16041            let handles_before = decoder.remaining_handles();
16042            if let Some((inlined, num_bytes, num_handles)) =
16043                fidl::encoding::decode_envelope_header(decoder, next_offset)?
16044            {
16045                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16046                if inlined != (member_inline_size <= 4) {
16047                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
16048                }
16049                let inner_offset;
16050                let mut inner_depth = depth.clone();
16051                if inlined {
16052                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16053                    inner_offset = next_offset;
16054                } else {
16055                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16056                    inner_depth.increment()?;
16057                }
16058                let val_ref = self.subdir.get_or_insert_with(|| {
16059                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
16060                });
16061                fidl::decode!(
16062                    fidl::encoding::BoundedString<1024>,
16063                    D,
16064                    val_ref,
16065                    decoder,
16066                    inner_offset,
16067                    inner_depth
16068                )?;
16069                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16070                {
16071                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
16072                }
16073                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16074                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16075                }
16076            }
16077
16078            next_offset += envelope_size;
16079            _next_ordinal_to_read += 1;
16080            if next_offset >= end_offset {
16081                return Ok(());
16082            }
16083
16084            // Decode unknown envelopes for gaps in ordinals.
16085            while _next_ordinal_to_read < 7 {
16086                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16087                _next_ordinal_to_read += 1;
16088                next_offset += envelope_size;
16089            }
16090
16091            let next_out_of_line = decoder.next_out_of_line();
16092            let handles_before = decoder.remaining_handles();
16093            if let Some((inlined, num_bytes, num_handles)) =
16094                fidl::encoding::decode_envelope_header(decoder, next_offset)?
16095            {
16096                let member_inline_size =
16097                    <DependencyType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16098                if inlined != (member_inline_size <= 4) {
16099                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
16100                }
16101                let inner_offset;
16102                let mut inner_depth = depth.clone();
16103                if inlined {
16104                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16105                    inner_offset = next_offset;
16106                } else {
16107                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16108                    inner_depth.increment()?;
16109                }
16110                let val_ref =
16111                    self.dependency_type.get_or_insert_with(|| fidl::new_empty!(DependencyType, D));
16112                fidl::decode!(DependencyType, D, val_ref, decoder, inner_offset, inner_depth)?;
16113                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16114                {
16115                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
16116                }
16117                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16118                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16119                }
16120            }
16121
16122            next_offset += envelope_size;
16123            _next_ordinal_to_read += 1;
16124            if next_offset >= end_offset {
16125                return Ok(());
16126            }
16127
16128            // Decode unknown envelopes for gaps in ordinals.
16129            while _next_ordinal_to_read < 8 {
16130                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16131                _next_ordinal_to_read += 1;
16132                next_offset += envelope_size;
16133            }
16134
16135            let next_out_of_line = decoder.next_out_of_line();
16136            let handles_before = decoder.remaining_handles();
16137            if let Some((inlined, num_bytes, num_handles)) =
16138                fidl::encoding::decode_envelope_header(decoder, next_offset)?
16139            {
16140                let member_inline_size =
16141                    <Availability as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16142                if inlined != (member_inline_size <= 4) {
16143                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
16144                }
16145                let inner_offset;
16146                let mut inner_depth = depth.clone();
16147                if inlined {
16148                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16149                    inner_offset = next_offset;
16150                } else {
16151                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16152                    inner_depth.increment()?;
16153                }
16154                let val_ref =
16155                    self.availability.get_or_insert_with(|| fidl::new_empty!(Availability, D));
16156                fidl::decode!(Availability, D, val_ref, decoder, inner_offset, inner_depth)?;
16157                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16158                {
16159                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
16160                }
16161                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16162                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16163                }
16164            }
16165
16166            next_offset += envelope_size;
16167            _next_ordinal_to_read += 1;
16168            if next_offset >= end_offset {
16169                return Ok(());
16170            }
16171
16172            // Decode unknown envelopes for gaps in ordinals.
16173            while _next_ordinal_to_read < 9 {
16174                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16175                _next_ordinal_to_read += 1;
16176                next_offset += envelope_size;
16177            }
16178
16179            let next_out_of_line = decoder.next_out_of_line();
16180            let handles_before = decoder.remaining_handles();
16181            if let Some((inlined, num_bytes, num_handles)) =
16182                fidl::encoding::decode_envelope_header(decoder, next_offset)?
16183            {
16184                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16185                if inlined != (member_inline_size <= 4) {
16186                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
16187                }
16188                let inner_offset;
16189                let mut inner_depth = depth.clone();
16190                if inlined {
16191                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16192                    inner_offset = next_offset;
16193                } else {
16194                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16195                    inner_depth.increment()?;
16196                }
16197                let val_ref = self.source_dictionary.get_or_insert_with(|| {
16198                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
16199                });
16200                fidl::decode!(
16201                    fidl::encoding::BoundedString<1024>,
16202                    D,
16203                    val_ref,
16204                    decoder,
16205                    inner_offset,
16206                    inner_depth
16207                )?;
16208                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16209                {
16210                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
16211                }
16212                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16213                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16214                }
16215            }
16216
16217            next_offset += envelope_size;
16218
16219            // Decode the remaining unknown envelopes.
16220            while next_offset < end_offset {
16221                _next_ordinal_to_read += 1;
16222                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16223                next_offset += envelope_size;
16224            }
16225
16226            Ok(())
16227        }
16228    }
16229
16230    impl OfferEventStream {
16231        #[inline(always)]
16232        fn max_ordinal_present(&self) -> u64 {
16233            if let Some(_) = self.availability {
16234                return 7;
16235            }
16236            if let Some(_) = self.target_name {
16237                return 5;
16238            }
16239            if let Some(_) = self.target {
16240                return 4;
16241            }
16242            if let Some(_) = self.scope {
16243                return 3;
16244            }
16245            if let Some(_) = self.source_name {
16246                return 2;
16247            }
16248            if let Some(_) = self.source {
16249                return 1;
16250            }
16251            0
16252        }
16253    }
16254
16255    impl fidl::encoding::ValueTypeMarker for OfferEventStream {
16256        type Borrowed<'a> = &'a Self;
16257        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
16258            value
16259        }
16260    }
16261
16262    unsafe impl fidl::encoding::TypeMarker for OfferEventStream {
16263        type Owned = Self;
16264
16265        #[inline(always)]
16266        fn inline_align(_context: fidl::encoding::Context) -> usize {
16267            8
16268        }
16269
16270        #[inline(always)]
16271        fn inline_size(_context: fidl::encoding::Context) -> usize {
16272            16
16273        }
16274    }
16275
16276    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<OfferEventStream, D>
16277        for &OfferEventStream
16278    {
16279        unsafe fn encode(
16280            self,
16281            encoder: &mut fidl::encoding::Encoder<'_, D>,
16282            offset: usize,
16283            mut depth: fidl::encoding::Depth,
16284        ) -> fidl::Result<()> {
16285            encoder.debug_check_bounds::<OfferEventStream>(offset);
16286            // Vector header
16287            let max_ordinal: u64 = self.max_ordinal_present();
16288            encoder.write_num(max_ordinal, offset);
16289            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
16290            // Calling encoder.out_of_line_offset(0) is not allowed.
16291            if max_ordinal == 0 {
16292                return Ok(());
16293            }
16294            depth.increment()?;
16295            let envelope_size = 8;
16296            let bytes_len = max_ordinal as usize * envelope_size;
16297            #[allow(unused_variables)]
16298            let offset = encoder.out_of_line_offset(bytes_len);
16299            let mut _prev_end_offset: usize = 0;
16300            if 1 > max_ordinal {
16301                return Ok(());
16302            }
16303
16304            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
16305            // are envelope_size bytes.
16306            let cur_offset: usize = (1 - 1) * envelope_size;
16307
16308            // Zero reserved fields.
16309            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16310
16311            // Safety:
16312            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
16313            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
16314            //   envelope_size bytes, there is always sufficient room.
16315            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
16316                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
16317                encoder,
16318                offset + cur_offset,
16319                depth,
16320            )?;
16321
16322            _prev_end_offset = cur_offset + envelope_size;
16323            if 2 > max_ordinal {
16324                return Ok(());
16325            }
16326
16327            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
16328            // are envelope_size bytes.
16329            let cur_offset: usize = (2 - 1) * envelope_size;
16330
16331            // Zero reserved fields.
16332            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16333
16334            // Safety:
16335            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
16336            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
16337            //   envelope_size bytes, there is always sufficient room.
16338            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
16339                self.source_name.as_ref().map(
16340                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
16341                ),
16342                encoder,
16343                offset + cur_offset,
16344                depth,
16345            )?;
16346
16347            _prev_end_offset = cur_offset + envelope_size;
16348            if 3 > max_ordinal {
16349                return Ok(());
16350            }
16351
16352            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
16353            // are envelope_size bytes.
16354            let cur_offset: usize = (3 - 1) * envelope_size;
16355
16356            // Zero reserved fields.
16357            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16358
16359            // Safety:
16360            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
16361            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
16362            //   envelope_size bytes, there is always sufficient room.
16363            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<Ref>, D>(
16364            self.scope.as_ref().map(<fidl::encoding::UnboundedVector<Ref> as fidl::encoding::ValueTypeMarker>::borrow),
16365            encoder, offset + cur_offset, depth
16366        )?;
16367
16368            _prev_end_offset = cur_offset + envelope_size;
16369            if 4 > max_ordinal {
16370                return Ok(());
16371            }
16372
16373            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
16374            // are envelope_size bytes.
16375            let cur_offset: usize = (4 - 1) * envelope_size;
16376
16377            // Zero reserved fields.
16378            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16379
16380            // Safety:
16381            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
16382            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
16383            //   envelope_size bytes, there is always sufficient room.
16384            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
16385                self.target.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
16386                encoder,
16387                offset + cur_offset,
16388                depth,
16389            )?;
16390
16391            _prev_end_offset = cur_offset + envelope_size;
16392            if 5 > max_ordinal {
16393                return Ok(());
16394            }
16395
16396            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
16397            // are envelope_size bytes.
16398            let cur_offset: usize = (5 - 1) * envelope_size;
16399
16400            // Zero reserved fields.
16401            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16402
16403            // Safety:
16404            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
16405            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
16406            //   envelope_size bytes, there is always sufficient room.
16407            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
16408                self.target_name.as_ref().map(
16409                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
16410                ),
16411                encoder,
16412                offset + cur_offset,
16413                depth,
16414            )?;
16415
16416            _prev_end_offset = cur_offset + envelope_size;
16417            if 7 > max_ordinal {
16418                return Ok(());
16419            }
16420
16421            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
16422            // are envelope_size bytes.
16423            let cur_offset: usize = (7 - 1) * envelope_size;
16424
16425            // Zero reserved fields.
16426            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16427
16428            // Safety:
16429            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
16430            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
16431            //   envelope_size bytes, there is always sufficient room.
16432            fidl::encoding::encode_in_envelope_optional::<Availability, D>(
16433                self.availability
16434                    .as_ref()
16435                    .map(<Availability as fidl::encoding::ValueTypeMarker>::borrow),
16436                encoder,
16437                offset + cur_offset,
16438                depth,
16439            )?;
16440
16441            _prev_end_offset = cur_offset + envelope_size;
16442
16443            Ok(())
16444        }
16445    }
16446
16447    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for OfferEventStream {
16448        #[inline(always)]
16449        fn new_empty() -> Self {
16450            Self::default()
16451        }
16452
16453        unsafe fn decode(
16454            &mut self,
16455            decoder: &mut fidl::encoding::Decoder<'_, D>,
16456            offset: usize,
16457            mut depth: fidl::encoding::Depth,
16458        ) -> fidl::Result<()> {
16459            decoder.debug_check_bounds::<Self>(offset);
16460            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
16461                None => return Err(fidl::Error::NotNullable),
16462                Some(len) => len,
16463            };
16464            // Calling decoder.out_of_line_offset(0) is not allowed.
16465            if len == 0 {
16466                return Ok(());
16467            };
16468            depth.increment()?;
16469            let envelope_size = 8;
16470            let bytes_len = len * envelope_size;
16471            let offset = decoder.out_of_line_offset(bytes_len)?;
16472            // Decode the envelope for each type.
16473            let mut _next_ordinal_to_read = 0;
16474            let mut next_offset = offset;
16475            let end_offset = offset + bytes_len;
16476            _next_ordinal_to_read += 1;
16477            if next_offset >= end_offset {
16478                return Ok(());
16479            }
16480
16481            // Decode unknown envelopes for gaps in ordinals.
16482            while _next_ordinal_to_read < 1 {
16483                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16484                _next_ordinal_to_read += 1;
16485                next_offset += envelope_size;
16486            }
16487
16488            let next_out_of_line = decoder.next_out_of_line();
16489            let handles_before = decoder.remaining_handles();
16490            if let Some((inlined, num_bytes, num_handles)) =
16491                fidl::encoding::decode_envelope_header(decoder, next_offset)?
16492            {
16493                let member_inline_size =
16494                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16495                if inlined != (member_inline_size <= 4) {
16496                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
16497                }
16498                let inner_offset;
16499                let mut inner_depth = depth.clone();
16500                if inlined {
16501                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16502                    inner_offset = next_offset;
16503                } else {
16504                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16505                    inner_depth.increment()?;
16506                }
16507                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
16508                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
16509                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16510                {
16511                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
16512                }
16513                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16514                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16515                }
16516            }
16517
16518            next_offset += envelope_size;
16519            _next_ordinal_to_read += 1;
16520            if next_offset >= end_offset {
16521                return Ok(());
16522            }
16523
16524            // Decode unknown envelopes for gaps in ordinals.
16525            while _next_ordinal_to_read < 2 {
16526                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16527                _next_ordinal_to_read += 1;
16528                next_offset += envelope_size;
16529            }
16530
16531            let next_out_of_line = decoder.next_out_of_line();
16532            let handles_before = decoder.remaining_handles();
16533            if let Some((inlined, num_bytes, num_handles)) =
16534                fidl::encoding::decode_envelope_header(decoder, next_offset)?
16535            {
16536                let member_inline_size =
16537                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
16538                        decoder.context,
16539                    );
16540                if inlined != (member_inline_size <= 4) {
16541                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
16542                }
16543                let inner_offset;
16544                let mut inner_depth = depth.clone();
16545                if inlined {
16546                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16547                    inner_offset = next_offset;
16548                } else {
16549                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16550                    inner_depth.increment()?;
16551                }
16552                let val_ref = self
16553                    .source_name
16554                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
16555                fidl::decode!(
16556                    fidl::encoding::BoundedString<100>,
16557                    D,
16558                    val_ref,
16559                    decoder,
16560                    inner_offset,
16561                    inner_depth
16562                )?;
16563                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16564                {
16565                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
16566                }
16567                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16568                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16569                }
16570            }
16571
16572            next_offset += envelope_size;
16573            _next_ordinal_to_read += 1;
16574            if next_offset >= end_offset {
16575                return Ok(());
16576            }
16577
16578            // Decode unknown envelopes for gaps in ordinals.
16579            while _next_ordinal_to_read < 3 {
16580                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16581                _next_ordinal_to_read += 1;
16582                next_offset += envelope_size;
16583            }
16584
16585            let next_out_of_line = decoder.next_out_of_line();
16586            let handles_before = decoder.remaining_handles();
16587            if let Some((inlined, num_bytes, num_handles)) =
16588                fidl::encoding::decode_envelope_header(decoder, next_offset)?
16589            {
16590                let member_inline_size = <fidl::encoding::UnboundedVector<Ref> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16591                if inlined != (member_inline_size <= 4) {
16592                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
16593                }
16594                let inner_offset;
16595                let mut inner_depth = depth.clone();
16596                if inlined {
16597                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16598                    inner_offset = next_offset;
16599                } else {
16600                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16601                    inner_depth.increment()?;
16602                }
16603                let val_ref = self.scope.get_or_insert_with(|| {
16604                    fidl::new_empty!(fidl::encoding::UnboundedVector<Ref>, D)
16605                });
16606                fidl::decode!(
16607                    fidl::encoding::UnboundedVector<Ref>,
16608                    D,
16609                    val_ref,
16610                    decoder,
16611                    inner_offset,
16612                    inner_depth
16613                )?;
16614                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16615                {
16616                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
16617                }
16618                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16619                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16620                }
16621            }
16622
16623            next_offset += envelope_size;
16624            _next_ordinal_to_read += 1;
16625            if next_offset >= end_offset {
16626                return Ok(());
16627            }
16628
16629            // Decode unknown envelopes for gaps in ordinals.
16630            while _next_ordinal_to_read < 4 {
16631                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16632                _next_ordinal_to_read += 1;
16633                next_offset += envelope_size;
16634            }
16635
16636            let next_out_of_line = decoder.next_out_of_line();
16637            let handles_before = decoder.remaining_handles();
16638            if let Some((inlined, num_bytes, num_handles)) =
16639                fidl::encoding::decode_envelope_header(decoder, next_offset)?
16640            {
16641                let member_inline_size =
16642                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16643                if inlined != (member_inline_size <= 4) {
16644                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
16645                }
16646                let inner_offset;
16647                let mut inner_depth = depth.clone();
16648                if inlined {
16649                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16650                    inner_offset = next_offset;
16651                } else {
16652                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16653                    inner_depth.increment()?;
16654                }
16655                let val_ref = self.target.get_or_insert_with(|| fidl::new_empty!(Ref, D));
16656                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
16657                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16658                {
16659                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
16660                }
16661                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16662                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16663                }
16664            }
16665
16666            next_offset += envelope_size;
16667            _next_ordinal_to_read += 1;
16668            if next_offset >= end_offset {
16669                return Ok(());
16670            }
16671
16672            // Decode unknown envelopes for gaps in ordinals.
16673            while _next_ordinal_to_read < 5 {
16674                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16675                _next_ordinal_to_read += 1;
16676                next_offset += envelope_size;
16677            }
16678
16679            let next_out_of_line = decoder.next_out_of_line();
16680            let handles_before = decoder.remaining_handles();
16681            if let Some((inlined, num_bytes, num_handles)) =
16682                fidl::encoding::decode_envelope_header(decoder, next_offset)?
16683            {
16684                let member_inline_size =
16685                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
16686                        decoder.context,
16687                    );
16688                if inlined != (member_inline_size <= 4) {
16689                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
16690                }
16691                let inner_offset;
16692                let mut inner_depth = depth.clone();
16693                if inlined {
16694                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16695                    inner_offset = next_offset;
16696                } else {
16697                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16698                    inner_depth.increment()?;
16699                }
16700                let val_ref = self
16701                    .target_name
16702                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
16703                fidl::decode!(
16704                    fidl::encoding::BoundedString<100>,
16705                    D,
16706                    val_ref,
16707                    decoder,
16708                    inner_offset,
16709                    inner_depth
16710                )?;
16711                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16712                {
16713                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
16714                }
16715                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16716                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16717                }
16718            }
16719
16720            next_offset += envelope_size;
16721            _next_ordinal_to_read += 1;
16722            if next_offset >= end_offset {
16723                return Ok(());
16724            }
16725
16726            // Decode unknown envelopes for gaps in ordinals.
16727            while _next_ordinal_to_read < 7 {
16728                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16729                _next_ordinal_to_read += 1;
16730                next_offset += envelope_size;
16731            }
16732
16733            let next_out_of_line = decoder.next_out_of_line();
16734            let handles_before = decoder.remaining_handles();
16735            if let Some((inlined, num_bytes, num_handles)) =
16736                fidl::encoding::decode_envelope_header(decoder, next_offset)?
16737            {
16738                let member_inline_size =
16739                    <Availability as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16740                if inlined != (member_inline_size <= 4) {
16741                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
16742                }
16743                let inner_offset;
16744                let mut inner_depth = depth.clone();
16745                if inlined {
16746                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16747                    inner_offset = next_offset;
16748                } else {
16749                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16750                    inner_depth.increment()?;
16751                }
16752                let val_ref =
16753                    self.availability.get_or_insert_with(|| fidl::new_empty!(Availability, D));
16754                fidl::decode!(Availability, D, val_ref, decoder, inner_offset, inner_depth)?;
16755                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16756                {
16757                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
16758                }
16759                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16760                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16761                }
16762            }
16763
16764            next_offset += envelope_size;
16765
16766            // Decode the remaining unknown envelopes.
16767            while next_offset < end_offset {
16768                _next_ordinal_to_read += 1;
16769                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16770                next_offset += envelope_size;
16771            }
16772
16773            Ok(())
16774        }
16775    }
16776
16777    impl OfferProtocol {
16778        #[inline(always)]
16779        fn max_ordinal_present(&self) -> u64 {
16780            if let Some(_) = self.source_dictionary {
16781                return 7;
16782            }
16783            if let Some(_) = self.availability {
16784                return 6;
16785            }
16786            if let Some(_) = self.dependency_type {
16787                return 5;
16788            }
16789            if let Some(_) = self.target_name {
16790                return 4;
16791            }
16792            if let Some(_) = self.target {
16793                return 3;
16794            }
16795            if let Some(_) = self.source_name {
16796                return 2;
16797            }
16798            if let Some(_) = self.source {
16799                return 1;
16800            }
16801            0
16802        }
16803    }
16804
16805    impl fidl::encoding::ValueTypeMarker for OfferProtocol {
16806        type Borrowed<'a> = &'a Self;
16807        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
16808            value
16809        }
16810    }
16811
16812    unsafe impl fidl::encoding::TypeMarker for OfferProtocol {
16813        type Owned = Self;
16814
16815        #[inline(always)]
16816        fn inline_align(_context: fidl::encoding::Context) -> usize {
16817            8
16818        }
16819
16820        #[inline(always)]
16821        fn inline_size(_context: fidl::encoding::Context) -> usize {
16822            16
16823        }
16824    }
16825
16826    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<OfferProtocol, D>
16827        for &OfferProtocol
16828    {
16829        unsafe fn encode(
16830            self,
16831            encoder: &mut fidl::encoding::Encoder<'_, D>,
16832            offset: usize,
16833            mut depth: fidl::encoding::Depth,
16834        ) -> fidl::Result<()> {
16835            encoder.debug_check_bounds::<OfferProtocol>(offset);
16836            // Vector header
16837            let max_ordinal: u64 = self.max_ordinal_present();
16838            encoder.write_num(max_ordinal, offset);
16839            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
16840            // Calling encoder.out_of_line_offset(0) is not allowed.
16841            if max_ordinal == 0 {
16842                return Ok(());
16843            }
16844            depth.increment()?;
16845            let envelope_size = 8;
16846            let bytes_len = max_ordinal as usize * envelope_size;
16847            #[allow(unused_variables)]
16848            let offset = encoder.out_of_line_offset(bytes_len);
16849            let mut _prev_end_offset: usize = 0;
16850            if 1 > max_ordinal {
16851                return Ok(());
16852            }
16853
16854            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
16855            // are envelope_size bytes.
16856            let cur_offset: usize = (1 - 1) * envelope_size;
16857
16858            // Zero reserved fields.
16859            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16860
16861            // Safety:
16862            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
16863            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
16864            //   envelope_size bytes, there is always sufficient room.
16865            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
16866                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
16867                encoder,
16868                offset + cur_offset,
16869                depth,
16870            )?;
16871
16872            _prev_end_offset = cur_offset + envelope_size;
16873            if 2 > max_ordinal {
16874                return Ok(());
16875            }
16876
16877            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
16878            // are envelope_size bytes.
16879            let cur_offset: usize = (2 - 1) * envelope_size;
16880
16881            // Zero reserved fields.
16882            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16883
16884            // Safety:
16885            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
16886            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
16887            //   envelope_size bytes, there is always sufficient room.
16888            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
16889                self.source_name.as_ref().map(
16890                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
16891                ),
16892                encoder,
16893                offset + cur_offset,
16894                depth,
16895            )?;
16896
16897            _prev_end_offset = cur_offset + envelope_size;
16898            if 3 > max_ordinal {
16899                return Ok(());
16900            }
16901
16902            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
16903            // are envelope_size bytes.
16904            let cur_offset: usize = (3 - 1) * envelope_size;
16905
16906            // Zero reserved fields.
16907            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16908
16909            // Safety:
16910            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
16911            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
16912            //   envelope_size bytes, there is always sufficient room.
16913            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
16914                self.target.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
16915                encoder,
16916                offset + cur_offset,
16917                depth,
16918            )?;
16919
16920            _prev_end_offset = cur_offset + envelope_size;
16921            if 4 > max_ordinal {
16922                return Ok(());
16923            }
16924
16925            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
16926            // are envelope_size bytes.
16927            let cur_offset: usize = (4 - 1) * envelope_size;
16928
16929            // Zero reserved fields.
16930            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16931
16932            // Safety:
16933            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
16934            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
16935            //   envelope_size bytes, there is always sufficient room.
16936            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
16937                self.target_name.as_ref().map(
16938                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
16939                ),
16940                encoder,
16941                offset + cur_offset,
16942                depth,
16943            )?;
16944
16945            _prev_end_offset = cur_offset + envelope_size;
16946            if 5 > max_ordinal {
16947                return Ok(());
16948            }
16949
16950            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
16951            // are envelope_size bytes.
16952            let cur_offset: usize = (5 - 1) * envelope_size;
16953
16954            // Zero reserved fields.
16955            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16956
16957            // Safety:
16958            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
16959            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
16960            //   envelope_size bytes, there is always sufficient room.
16961            fidl::encoding::encode_in_envelope_optional::<DependencyType, D>(
16962                self.dependency_type
16963                    .as_ref()
16964                    .map(<DependencyType as fidl::encoding::ValueTypeMarker>::borrow),
16965                encoder,
16966                offset + cur_offset,
16967                depth,
16968            )?;
16969
16970            _prev_end_offset = cur_offset + envelope_size;
16971            if 6 > max_ordinal {
16972                return Ok(());
16973            }
16974
16975            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
16976            // are envelope_size bytes.
16977            let cur_offset: usize = (6 - 1) * envelope_size;
16978
16979            // Zero reserved fields.
16980            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16981
16982            // Safety:
16983            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
16984            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
16985            //   envelope_size bytes, there is always sufficient room.
16986            fidl::encoding::encode_in_envelope_optional::<Availability, D>(
16987                self.availability
16988                    .as_ref()
16989                    .map(<Availability as fidl::encoding::ValueTypeMarker>::borrow),
16990                encoder,
16991                offset + cur_offset,
16992                depth,
16993            )?;
16994
16995            _prev_end_offset = cur_offset + envelope_size;
16996            if 7 > max_ordinal {
16997                return Ok(());
16998            }
16999
17000            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
17001            // are envelope_size bytes.
17002            let cur_offset: usize = (7 - 1) * envelope_size;
17003
17004            // Zero reserved fields.
17005            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17006
17007            // Safety:
17008            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
17009            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
17010            //   envelope_size bytes, there is always sufficient room.
17011            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
17012            self.source_dictionary.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
17013            encoder, offset + cur_offset, depth
17014        )?;
17015
17016            _prev_end_offset = cur_offset + envelope_size;
17017
17018            Ok(())
17019        }
17020    }
17021
17022    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for OfferProtocol {
17023        #[inline(always)]
17024        fn new_empty() -> Self {
17025            Self::default()
17026        }
17027
17028        unsafe fn decode(
17029            &mut self,
17030            decoder: &mut fidl::encoding::Decoder<'_, D>,
17031            offset: usize,
17032            mut depth: fidl::encoding::Depth,
17033        ) -> fidl::Result<()> {
17034            decoder.debug_check_bounds::<Self>(offset);
17035            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
17036                None => return Err(fidl::Error::NotNullable),
17037                Some(len) => len,
17038            };
17039            // Calling decoder.out_of_line_offset(0) is not allowed.
17040            if len == 0 {
17041                return Ok(());
17042            };
17043            depth.increment()?;
17044            let envelope_size = 8;
17045            let bytes_len = len * envelope_size;
17046            let offset = decoder.out_of_line_offset(bytes_len)?;
17047            // Decode the envelope for each type.
17048            let mut _next_ordinal_to_read = 0;
17049            let mut next_offset = offset;
17050            let end_offset = offset + bytes_len;
17051            _next_ordinal_to_read += 1;
17052            if next_offset >= end_offset {
17053                return Ok(());
17054            }
17055
17056            // Decode unknown envelopes for gaps in ordinals.
17057            while _next_ordinal_to_read < 1 {
17058                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17059                _next_ordinal_to_read += 1;
17060                next_offset += envelope_size;
17061            }
17062
17063            let next_out_of_line = decoder.next_out_of_line();
17064            let handles_before = decoder.remaining_handles();
17065            if let Some((inlined, num_bytes, num_handles)) =
17066                fidl::encoding::decode_envelope_header(decoder, next_offset)?
17067            {
17068                let member_inline_size =
17069                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
17070                if inlined != (member_inline_size <= 4) {
17071                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
17072                }
17073                let inner_offset;
17074                let mut inner_depth = depth.clone();
17075                if inlined {
17076                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17077                    inner_offset = next_offset;
17078                } else {
17079                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17080                    inner_depth.increment()?;
17081                }
17082                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
17083                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
17084                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17085                {
17086                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
17087                }
17088                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17089                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17090                }
17091            }
17092
17093            next_offset += envelope_size;
17094            _next_ordinal_to_read += 1;
17095            if next_offset >= end_offset {
17096                return Ok(());
17097            }
17098
17099            // Decode unknown envelopes for gaps in ordinals.
17100            while _next_ordinal_to_read < 2 {
17101                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17102                _next_ordinal_to_read += 1;
17103                next_offset += envelope_size;
17104            }
17105
17106            let next_out_of_line = decoder.next_out_of_line();
17107            let handles_before = decoder.remaining_handles();
17108            if let Some((inlined, num_bytes, num_handles)) =
17109                fidl::encoding::decode_envelope_header(decoder, next_offset)?
17110            {
17111                let member_inline_size =
17112                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
17113                        decoder.context,
17114                    );
17115                if inlined != (member_inline_size <= 4) {
17116                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
17117                }
17118                let inner_offset;
17119                let mut inner_depth = depth.clone();
17120                if inlined {
17121                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17122                    inner_offset = next_offset;
17123                } else {
17124                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17125                    inner_depth.increment()?;
17126                }
17127                let val_ref = self
17128                    .source_name
17129                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
17130                fidl::decode!(
17131                    fidl::encoding::BoundedString<100>,
17132                    D,
17133                    val_ref,
17134                    decoder,
17135                    inner_offset,
17136                    inner_depth
17137                )?;
17138                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17139                {
17140                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
17141                }
17142                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17143                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17144                }
17145            }
17146
17147            next_offset += envelope_size;
17148            _next_ordinal_to_read += 1;
17149            if next_offset >= end_offset {
17150                return Ok(());
17151            }
17152
17153            // Decode unknown envelopes for gaps in ordinals.
17154            while _next_ordinal_to_read < 3 {
17155                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17156                _next_ordinal_to_read += 1;
17157                next_offset += envelope_size;
17158            }
17159
17160            let next_out_of_line = decoder.next_out_of_line();
17161            let handles_before = decoder.remaining_handles();
17162            if let Some((inlined, num_bytes, num_handles)) =
17163                fidl::encoding::decode_envelope_header(decoder, next_offset)?
17164            {
17165                let member_inline_size =
17166                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
17167                if inlined != (member_inline_size <= 4) {
17168                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
17169                }
17170                let inner_offset;
17171                let mut inner_depth = depth.clone();
17172                if inlined {
17173                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17174                    inner_offset = next_offset;
17175                } else {
17176                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17177                    inner_depth.increment()?;
17178                }
17179                let val_ref = self.target.get_or_insert_with(|| fidl::new_empty!(Ref, D));
17180                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
17181                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17182                {
17183                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
17184                }
17185                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17186                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17187                }
17188            }
17189
17190            next_offset += envelope_size;
17191            _next_ordinal_to_read += 1;
17192            if next_offset >= end_offset {
17193                return Ok(());
17194            }
17195
17196            // Decode unknown envelopes for gaps in ordinals.
17197            while _next_ordinal_to_read < 4 {
17198                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17199                _next_ordinal_to_read += 1;
17200                next_offset += envelope_size;
17201            }
17202
17203            let next_out_of_line = decoder.next_out_of_line();
17204            let handles_before = decoder.remaining_handles();
17205            if let Some((inlined, num_bytes, num_handles)) =
17206                fidl::encoding::decode_envelope_header(decoder, next_offset)?
17207            {
17208                let member_inline_size =
17209                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
17210                        decoder.context,
17211                    );
17212                if inlined != (member_inline_size <= 4) {
17213                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
17214                }
17215                let inner_offset;
17216                let mut inner_depth = depth.clone();
17217                if inlined {
17218                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17219                    inner_offset = next_offset;
17220                } else {
17221                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17222                    inner_depth.increment()?;
17223                }
17224                let val_ref = self
17225                    .target_name
17226                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
17227                fidl::decode!(
17228                    fidl::encoding::BoundedString<100>,
17229                    D,
17230                    val_ref,
17231                    decoder,
17232                    inner_offset,
17233                    inner_depth
17234                )?;
17235                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17236                {
17237                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
17238                }
17239                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17240                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17241                }
17242            }
17243
17244            next_offset += envelope_size;
17245            _next_ordinal_to_read += 1;
17246            if next_offset >= end_offset {
17247                return Ok(());
17248            }
17249
17250            // Decode unknown envelopes for gaps in ordinals.
17251            while _next_ordinal_to_read < 5 {
17252                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17253                _next_ordinal_to_read += 1;
17254                next_offset += envelope_size;
17255            }
17256
17257            let next_out_of_line = decoder.next_out_of_line();
17258            let handles_before = decoder.remaining_handles();
17259            if let Some((inlined, num_bytes, num_handles)) =
17260                fidl::encoding::decode_envelope_header(decoder, next_offset)?
17261            {
17262                let member_inline_size =
17263                    <DependencyType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
17264                if inlined != (member_inline_size <= 4) {
17265                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
17266                }
17267                let inner_offset;
17268                let mut inner_depth = depth.clone();
17269                if inlined {
17270                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17271                    inner_offset = next_offset;
17272                } else {
17273                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17274                    inner_depth.increment()?;
17275                }
17276                let val_ref =
17277                    self.dependency_type.get_or_insert_with(|| fidl::new_empty!(DependencyType, D));
17278                fidl::decode!(DependencyType, D, val_ref, decoder, inner_offset, inner_depth)?;
17279                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17280                {
17281                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
17282                }
17283                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17284                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17285                }
17286            }
17287
17288            next_offset += envelope_size;
17289            _next_ordinal_to_read += 1;
17290            if next_offset >= end_offset {
17291                return Ok(());
17292            }
17293
17294            // Decode unknown envelopes for gaps in ordinals.
17295            while _next_ordinal_to_read < 6 {
17296                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17297                _next_ordinal_to_read += 1;
17298                next_offset += envelope_size;
17299            }
17300
17301            let next_out_of_line = decoder.next_out_of_line();
17302            let handles_before = decoder.remaining_handles();
17303            if let Some((inlined, num_bytes, num_handles)) =
17304                fidl::encoding::decode_envelope_header(decoder, next_offset)?
17305            {
17306                let member_inline_size =
17307                    <Availability as fidl::encoding::TypeMarker>::inline_size(decoder.context);
17308                if inlined != (member_inline_size <= 4) {
17309                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
17310                }
17311                let inner_offset;
17312                let mut inner_depth = depth.clone();
17313                if inlined {
17314                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17315                    inner_offset = next_offset;
17316                } else {
17317                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17318                    inner_depth.increment()?;
17319                }
17320                let val_ref =
17321                    self.availability.get_or_insert_with(|| fidl::new_empty!(Availability, D));
17322                fidl::decode!(Availability, D, val_ref, decoder, inner_offset, inner_depth)?;
17323                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17324                {
17325                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
17326                }
17327                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17328                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17329                }
17330            }
17331
17332            next_offset += envelope_size;
17333            _next_ordinal_to_read += 1;
17334            if next_offset >= end_offset {
17335                return Ok(());
17336            }
17337
17338            // Decode unknown envelopes for gaps in ordinals.
17339            while _next_ordinal_to_read < 7 {
17340                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17341                _next_ordinal_to_read += 1;
17342                next_offset += envelope_size;
17343            }
17344
17345            let next_out_of_line = decoder.next_out_of_line();
17346            let handles_before = decoder.remaining_handles();
17347            if let Some((inlined, num_bytes, num_handles)) =
17348                fidl::encoding::decode_envelope_header(decoder, next_offset)?
17349            {
17350                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
17351                if inlined != (member_inline_size <= 4) {
17352                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
17353                }
17354                let inner_offset;
17355                let mut inner_depth = depth.clone();
17356                if inlined {
17357                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17358                    inner_offset = next_offset;
17359                } else {
17360                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17361                    inner_depth.increment()?;
17362                }
17363                let val_ref = self.source_dictionary.get_or_insert_with(|| {
17364                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
17365                });
17366                fidl::decode!(
17367                    fidl::encoding::BoundedString<1024>,
17368                    D,
17369                    val_ref,
17370                    decoder,
17371                    inner_offset,
17372                    inner_depth
17373                )?;
17374                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17375                {
17376                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
17377                }
17378                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17379                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17380                }
17381            }
17382
17383            next_offset += envelope_size;
17384
17385            // Decode the remaining unknown envelopes.
17386            while next_offset < end_offset {
17387                _next_ordinal_to_read += 1;
17388                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17389                next_offset += envelope_size;
17390            }
17391
17392            Ok(())
17393        }
17394    }
17395
17396    impl OfferResolver {
17397        #[inline(always)]
17398        fn max_ordinal_present(&self) -> u64 {
17399            if let Some(_) = self.source_dictionary {
17400                return 5;
17401            }
17402            if let Some(_) = self.target_name {
17403                return 4;
17404            }
17405            if let Some(_) = self.target {
17406                return 3;
17407            }
17408            if let Some(_) = self.source_name {
17409                return 2;
17410            }
17411            if let Some(_) = self.source {
17412                return 1;
17413            }
17414            0
17415        }
17416    }
17417
17418    impl fidl::encoding::ValueTypeMarker for OfferResolver {
17419        type Borrowed<'a> = &'a Self;
17420        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
17421            value
17422        }
17423    }
17424
17425    unsafe impl fidl::encoding::TypeMarker for OfferResolver {
17426        type Owned = Self;
17427
17428        #[inline(always)]
17429        fn inline_align(_context: fidl::encoding::Context) -> usize {
17430            8
17431        }
17432
17433        #[inline(always)]
17434        fn inline_size(_context: fidl::encoding::Context) -> usize {
17435            16
17436        }
17437    }
17438
17439    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<OfferResolver, D>
17440        for &OfferResolver
17441    {
17442        unsafe fn encode(
17443            self,
17444            encoder: &mut fidl::encoding::Encoder<'_, D>,
17445            offset: usize,
17446            mut depth: fidl::encoding::Depth,
17447        ) -> fidl::Result<()> {
17448            encoder.debug_check_bounds::<OfferResolver>(offset);
17449            // Vector header
17450            let max_ordinal: u64 = self.max_ordinal_present();
17451            encoder.write_num(max_ordinal, offset);
17452            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
17453            // Calling encoder.out_of_line_offset(0) is not allowed.
17454            if max_ordinal == 0 {
17455                return Ok(());
17456            }
17457            depth.increment()?;
17458            let envelope_size = 8;
17459            let bytes_len = max_ordinal as usize * envelope_size;
17460            #[allow(unused_variables)]
17461            let offset = encoder.out_of_line_offset(bytes_len);
17462            let mut _prev_end_offset: usize = 0;
17463            if 1 > max_ordinal {
17464                return Ok(());
17465            }
17466
17467            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
17468            // are envelope_size bytes.
17469            let cur_offset: usize = (1 - 1) * envelope_size;
17470
17471            // Zero reserved fields.
17472            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17473
17474            // Safety:
17475            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
17476            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
17477            //   envelope_size bytes, there is always sufficient room.
17478            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
17479                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
17480                encoder,
17481                offset + cur_offset,
17482                depth,
17483            )?;
17484
17485            _prev_end_offset = cur_offset + envelope_size;
17486            if 2 > max_ordinal {
17487                return Ok(());
17488            }
17489
17490            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
17491            // are envelope_size bytes.
17492            let cur_offset: usize = (2 - 1) * envelope_size;
17493
17494            // Zero reserved fields.
17495            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17496
17497            // Safety:
17498            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
17499            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
17500            //   envelope_size bytes, there is always sufficient room.
17501            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
17502                self.source_name.as_ref().map(
17503                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
17504                ),
17505                encoder,
17506                offset + cur_offset,
17507                depth,
17508            )?;
17509
17510            _prev_end_offset = cur_offset + envelope_size;
17511            if 3 > max_ordinal {
17512                return Ok(());
17513            }
17514
17515            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
17516            // are envelope_size bytes.
17517            let cur_offset: usize = (3 - 1) * envelope_size;
17518
17519            // Zero reserved fields.
17520            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17521
17522            // Safety:
17523            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
17524            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
17525            //   envelope_size bytes, there is always sufficient room.
17526            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
17527                self.target.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
17528                encoder,
17529                offset + cur_offset,
17530                depth,
17531            )?;
17532
17533            _prev_end_offset = cur_offset + envelope_size;
17534            if 4 > max_ordinal {
17535                return Ok(());
17536            }
17537
17538            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
17539            // are envelope_size bytes.
17540            let cur_offset: usize = (4 - 1) * envelope_size;
17541
17542            // Zero reserved fields.
17543            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17544
17545            // Safety:
17546            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
17547            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
17548            //   envelope_size bytes, there is always sufficient room.
17549            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
17550                self.target_name.as_ref().map(
17551                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
17552                ),
17553                encoder,
17554                offset + cur_offset,
17555                depth,
17556            )?;
17557
17558            _prev_end_offset = cur_offset + envelope_size;
17559            if 5 > max_ordinal {
17560                return Ok(());
17561            }
17562
17563            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
17564            // are envelope_size bytes.
17565            let cur_offset: usize = (5 - 1) * envelope_size;
17566
17567            // Zero reserved fields.
17568            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17569
17570            // Safety:
17571            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
17572            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
17573            //   envelope_size bytes, there is always sufficient room.
17574            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
17575            self.source_dictionary.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
17576            encoder, offset + cur_offset, depth
17577        )?;
17578
17579            _prev_end_offset = cur_offset + envelope_size;
17580
17581            Ok(())
17582        }
17583    }
17584
17585    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for OfferResolver {
17586        #[inline(always)]
17587        fn new_empty() -> Self {
17588            Self::default()
17589        }
17590
17591        unsafe fn decode(
17592            &mut self,
17593            decoder: &mut fidl::encoding::Decoder<'_, D>,
17594            offset: usize,
17595            mut depth: fidl::encoding::Depth,
17596        ) -> fidl::Result<()> {
17597            decoder.debug_check_bounds::<Self>(offset);
17598            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
17599                None => return Err(fidl::Error::NotNullable),
17600                Some(len) => len,
17601            };
17602            // Calling decoder.out_of_line_offset(0) is not allowed.
17603            if len == 0 {
17604                return Ok(());
17605            };
17606            depth.increment()?;
17607            let envelope_size = 8;
17608            let bytes_len = len * envelope_size;
17609            let offset = decoder.out_of_line_offset(bytes_len)?;
17610            // Decode the envelope for each type.
17611            let mut _next_ordinal_to_read = 0;
17612            let mut next_offset = offset;
17613            let end_offset = offset + bytes_len;
17614            _next_ordinal_to_read += 1;
17615            if next_offset >= end_offset {
17616                return Ok(());
17617            }
17618
17619            // Decode unknown envelopes for gaps in ordinals.
17620            while _next_ordinal_to_read < 1 {
17621                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17622                _next_ordinal_to_read += 1;
17623                next_offset += envelope_size;
17624            }
17625
17626            let next_out_of_line = decoder.next_out_of_line();
17627            let handles_before = decoder.remaining_handles();
17628            if let Some((inlined, num_bytes, num_handles)) =
17629                fidl::encoding::decode_envelope_header(decoder, next_offset)?
17630            {
17631                let member_inline_size =
17632                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
17633                if inlined != (member_inline_size <= 4) {
17634                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
17635                }
17636                let inner_offset;
17637                let mut inner_depth = depth.clone();
17638                if inlined {
17639                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17640                    inner_offset = next_offset;
17641                } else {
17642                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17643                    inner_depth.increment()?;
17644                }
17645                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
17646                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
17647                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17648                {
17649                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
17650                }
17651                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17652                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17653                }
17654            }
17655
17656            next_offset += envelope_size;
17657            _next_ordinal_to_read += 1;
17658            if next_offset >= end_offset {
17659                return Ok(());
17660            }
17661
17662            // Decode unknown envelopes for gaps in ordinals.
17663            while _next_ordinal_to_read < 2 {
17664                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17665                _next_ordinal_to_read += 1;
17666                next_offset += envelope_size;
17667            }
17668
17669            let next_out_of_line = decoder.next_out_of_line();
17670            let handles_before = decoder.remaining_handles();
17671            if let Some((inlined, num_bytes, num_handles)) =
17672                fidl::encoding::decode_envelope_header(decoder, next_offset)?
17673            {
17674                let member_inline_size =
17675                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
17676                        decoder.context,
17677                    );
17678                if inlined != (member_inline_size <= 4) {
17679                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
17680                }
17681                let inner_offset;
17682                let mut inner_depth = depth.clone();
17683                if inlined {
17684                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17685                    inner_offset = next_offset;
17686                } else {
17687                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17688                    inner_depth.increment()?;
17689                }
17690                let val_ref = self
17691                    .source_name
17692                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
17693                fidl::decode!(
17694                    fidl::encoding::BoundedString<100>,
17695                    D,
17696                    val_ref,
17697                    decoder,
17698                    inner_offset,
17699                    inner_depth
17700                )?;
17701                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17702                {
17703                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
17704                }
17705                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17706                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17707                }
17708            }
17709
17710            next_offset += envelope_size;
17711            _next_ordinal_to_read += 1;
17712            if next_offset >= end_offset {
17713                return Ok(());
17714            }
17715
17716            // Decode unknown envelopes for gaps in ordinals.
17717            while _next_ordinal_to_read < 3 {
17718                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17719                _next_ordinal_to_read += 1;
17720                next_offset += envelope_size;
17721            }
17722
17723            let next_out_of_line = decoder.next_out_of_line();
17724            let handles_before = decoder.remaining_handles();
17725            if let Some((inlined, num_bytes, num_handles)) =
17726                fidl::encoding::decode_envelope_header(decoder, next_offset)?
17727            {
17728                let member_inline_size =
17729                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
17730                if inlined != (member_inline_size <= 4) {
17731                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
17732                }
17733                let inner_offset;
17734                let mut inner_depth = depth.clone();
17735                if inlined {
17736                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17737                    inner_offset = next_offset;
17738                } else {
17739                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17740                    inner_depth.increment()?;
17741                }
17742                let val_ref = self.target.get_or_insert_with(|| fidl::new_empty!(Ref, D));
17743                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
17744                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17745                {
17746                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
17747                }
17748                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17749                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17750                }
17751            }
17752
17753            next_offset += envelope_size;
17754            _next_ordinal_to_read += 1;
17755            if next_offset >= end_offset {
17756                return Ok(());
17757            }
17758
17759            // Decode unknown envelopes for gaps in ordinals.
17760            while _next_ordinal_to_read < 4 {
17761                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17762                _next_ordinal_to_read += 1;
17763                next_offset += envelope_size;
17764            }
17765
17766            let next_out_of_line = decoder.next_out_of_line();
17767            let handles_before = decoder.remaining_handles();
17768            if let Some((inlined, num_bytes, num_handles)) =
17769                fidl::encoding::decode_envelope_header(decoder, next_offset)?
17770            {
17771                let member_inline_size =
17772                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
17773                        decoder.context,
17774                    );
17775                if inlined != (member_inline_size <= 4) {
17776                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
17777                }
17778                let inner_offset;
17779                let mut inner_depth = depth.clone();
17780                if inlined {
17781                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17782                    inner_offset = next_offset;
17783                } else {
17784                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17785                    inner_depth.increment()?;
17786                }
17787                let val_ref = self
17788                    .target_name
17789                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
17790                fidl::decode!(
17791                    fidl::encoding::BoundedString<100>,
17792                    D,
17793                    val_ref,
17794                    decoder,
17795                    inner_offset,
17796                    inner_depth
17797                )?;
17798                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17799                {
17800                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
17801                }
17802                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17803                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17804                }
17805            }
17806
17807            next_offset += envelope_size;
17808            _next_ordinal_to_read += 1;
17809            if next_offset >= end_offset {
17810                return Ok(());
17811            }
17812
17813            // Decode unknown envelopes for gaps in ordinals.
17814            while _next_ordinal_to_read < 5 {
17815                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17816                _next_ordinal_to_read += 1;
17817                next_offset += envelope_size;
17818            }
17819
17820            let next_out_of_line = decoder.next_out_of_line();
17821            let handles_before = decoder.remaining_handles();
17822            if let Some((inlined, num_bytes, num_handles)) =
17823                fidl::encoding::decode_envelope_header(decoder, next_offset)?
17824            {
17825                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
17826                if inlined != (member_inline_size <= 4) {
17827                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
17828                }
17829                let inner_offset;
17830                let mut inner_depth = depth.clone();
17831                if inlined {
17832                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17833                    inner_offset = next_offset;
17834                } else {
17835                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17836                    inner_depth.increment()?;
17837                }
17838                let val_ref = self.source_dictionary.get_or_insert_with(|| {
17839                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
17840                });
17841                fidl::decode!(
17842                    fidl::encoding::BoundedString<1024>,
17843                    D,
17844                    val_ref,
17845                    decoder,
17846                    inner_offset,
17847                    inner_depth
17848                )?;
17849                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17850                {
17851                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
17852                }
17853                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17854                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17855                }
17856            }
17857
17858            next_offset += envelope_size;
17859
17860            // Decode the remaining unknown envelopes.
17861            while next_offset < end_offset {
17862                _next_ordinal_to_read += 1;
17863                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17864                next_offset += envelope_size;
17865            }
17866
17867            Ok(())
17868        }
17869    }
17870
17871    impl OfferRunner {
17872        #[inline(always)]
17873        fn max_ordinal_present(&self) -> u64 {
17874            if let Some(_) = self.source_dictionary {
17875                return 5;
17876            }
17877            if let Some(_) = self.target_name {
17878                return 4;
17879            }
17880            if let Some(_) = self.target {
17881                return 3;
17882            }
17883            if let Some(_) = self.source_name {
17884                return 2;
17885            }
17886            if let Some(_) = self.source {
17887                return 1;
17888            }
17889            0
17890        }
17891    }
17892
17893    impl fidl::encoding::ValueTypeMarker for OfferRunner {
17894        type Borrowed<'a> = &'a Self;
17895        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
17896            value
17897        }
17898    }
17899
17900    unsafe impl fidl::encoding::TypeMarker for OfferRunner {
17901        type Owned = Self;
17902
17903        #[inline(always)]
17904        fn inline_align(_context: fidl::encoding::Context) -> usize {
17905            8
17906        }
17907
17908        #[inline(always)]
17909        fn inline_size(_context: fidl::encoding::Context) -> usize {
17910            16
17911        }
17912    }
17913
17914    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<OfferRunner, D>
17915        for &OfferRunner
17916    {
17917        unsafe fn encode(
17918            self,
17919            encoder: &mut fidl::encoding::Encoder<'_, D>,
17920            offset: usize,
17921            mut depth: fidl::encoding::Depth,
17922        ) -> fidl::Result<()> {
17923            encoder.debug_check_bounds::<OfferRunner>(offset);
17924            // Vector header
17925            let max_ordinal: u64 = self.max_ordinal_present();
17926            encoder.write_num(max_ordinal, offset);
17927            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
17928            // Calling encoder.out_of_line_offset(0) is not allowed.
17929            if max_ordinal == 0 {
17930                return Ok(());
17931            }
17932            depth.increment()?;
17933            let envelope_size = 8;
17934            let bytes_len = max_ordinal as usize * envelope_size;
17935            #[allow(unused_variables)]
17936            let offset = encoder.out_of_line_offset(bytes_len);
17937            let mut _prev_end_offset: usize = 0;
17938            if 1 > max_ordinal {
17939                return Ok(());
17940            }
17941
17942            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
17943            // are envelope_size bytes.
17944            let cur_offset: usize = (1 - 1) * envelope_size;
17945
17946            // Zero reserved fields.
17947            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17948
17949            // Safety:
17950            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
17951            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
17952            //   envelope_size bytes, there is always sufficient room.
17953            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
17954                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
17955                encoder,
17956                offset + cur_offset,
17957                depth,
17958            )?;
17959
17960            _prev_end_offset = cur_offset + envelope_size;
17961            if 2 > max_ordinal {
17962                return Ok(());
17963            }
17964
17965            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
17966            // are envelope_size bytes.
17967            let cur_offset: usize = (2 - 1) * envelope_size;
17968
17969            // Zero reserved fields.
17970            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17971
17972            // Safety:
17973            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
17974            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
17975            //   envelope_size bytes, there is always sufficient room.
17976            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
17977                self.source_name.as_ref().map(
17978                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
17979                ),
17980                encoder,
17981                offset + cur_offset,
17982                depth,
17983            )?;
17984
17985            _prev_end_offset = cur_offset + envelope_size;
17986            if 3 > max_ordinal {
17987                return Ok(());
17988            }
17989
17990            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
17991            // are envelope_size bytes.
17992            let cur_offset: usize = (3 - 1) * envelope_size;
17993
17994            // Zero reserved fields.
17995            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17996
17997            // Safety:
17998            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
17999            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
18000            //   envelope_size bytes, there is always sufficient room.
18001            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
18002                self.target.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
18003                encoder,
18004                offset + cur_offset,
18005                depth,
18006            )?;
18007
18008            _prev_end_offset = cur_offset + envelope_size;
18009            if 4 > max_ordinal {
18010                return Ok(());
18011            }
18012
18013            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
18014            // are envelope_size bytes.
18015            let cur_offset: usize = (4 - 1) * envelope_size;
18016
18017            // Zero reserved fields.
18018            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18019
18020            // Safety:
18021            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
18022            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
18023            //   envelope_size bytes, there is always sufficient room.
18024            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
18025                self.target_name.as_ref().map(
18026                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
18027                ),
18028                encoder,
18029                offset + cur_offset,
18030                depth,
18031            )?;
18032
18033            _prev_end_offset = cur_offset + envelope_size;
18034            if 5 > max_ordinal {
18035                return Ok(());
18036            }
18037
18038            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
18039            // are envelope_size bytes.
18040            let cur_offset: usize = (5 - 1) * envelope_size;
18041
18042            // Zero reserved fields.
18043            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18044
18045            // Safety:
18046            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
18047            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
18048            //   envelope_size bytes, there is always sufficient room.
18049            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
18050            self.source_dictionary.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
18051            encoder, offset + cur_offset, depth
18052        )?;
18053
18054            _prev_end_offset = cur_offset + envelope_size;
18055
18056            Ok(())
18057        }
18058    }
18059
18060    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for OfferRunner {
18061        #[inline(always)]
18062        fn new_empty() -> Self {
18063            Self::default()
18064        }
18065
18066        unsafe fn decode(
18067            &mut self,
18068            decoder: &mut fidl::encoding::Decoder<'_, D>,
18069            offset: usize,
18070            mut depth: fidl::encoding::Depth,
18071        ) -> fidl::Result<()> {
18072            decoder.debug_check_bounds::<Self>(offset);
18073            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
18074                None => return Err(fidl::Error::NotNullable),
18075                Some(len) => len,
18076            };
18077            // Calling decoder.out_of_line_offset(0) is not allowed.
18078            if len == 0 {
18079                return Ok(());
18080            };
18081            depth.increment()?;
18082            let envelope_size = 8;
18083            let bytes_len = len * envelope_size;
18084            let offset = decoder.out_of_line_offset(bytes_len)?;
18085            // Decode the envelope for each type.
18086            let mut _next_ordinal_to_read = 0;
18087            let mut next_offset = offset;
18088            let end_offset = offset + bytes_len;
18089            _next_ordinal_to_read += 1;
18090            if next_offset >= end_offset {
18091                return Ok(());
18092            }
18093
18094            // Decode unknown envelopes for gaps in ordinals.
18095            while _next_ordinal_to_read < 1 {
18096                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18097                _next_ordinal_to_read += 1;
18098                next_offset += envelope_size;
18099            }
18100
18101            let next_out_of_line = decoder.next_out_of_line();
18102            let handles_before = decoder.remaining_handles();
18103            if let Some((inlined, num_bytes, num_handles)) =
18104                fidl::encoding::decode_envelope_header(decoder, next_offset)?
18105            {
18106                let member_inline_size =
18107                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
18108                if inlined != (member_inline_size <= 4) {
18109                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
18110                }
18111                let inner_offset;
18112                let mut inner_depth = depth.clone();
18113                if inlined {
18114                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18115                    inner_offset = next_offset;
18116                } else {
18117                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18118                    inner_depth.increment()?;
18119                }
18120                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
18121                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
18122                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18123                {
18124                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
18125                }
18126                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18127                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18128                }
18129            }
18130
18131            next_offset += envelope_size;
18132            _next_ordinal_to_read += 1;
18133            if next_offset >= end_offset {
18134                return Ok(());
18135            }
18136
18137            // Decode unknown envelopes for gaps in ordinals.
18138            while _next_ordinal_to_read < 2 {
18139                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18140                _next_ordinal_to_read += 1;
18141                next_offset += envelope_size;
18142            }
18143
18144            let next_out_of_line = decoder.next_out_of_line();
18145            let handles_before = decoder.remaining_handles();
18146            if let Some((inlined, num_bytes, num_handles)) =
18147                fidl::encoding::decode_envelope_header(decoder, next_offset)?
18148            {
18149                let member_inline_size =
18150                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
18151                        decoder.context,
18152                    );
18153                if inlined != (member_inline_size <= 4) {
18154                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
18155                }
18156                let inner_offset;
18157                let mut inner_depth = depth.clone();
18158                if inlined {
18159                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18160                    inner_offset = next_offset;
18161                } else {
18162                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18163                    inner_depth.increment()?;
18164                }
18165                let val_ref = self
18166                    .source_name
18167                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
18168                fidl::decode!(
18169                    fidl::encoding::BoundedString<100>,
18170                    D,
18171                    val_ref,
18172                    decoder,
18173                    inner_offset,
18174                    inner_depth
18175                )?;
18176                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18177                {
18178                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
18179                }
18180                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18181                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18182                }
18183            }
18184
18185            next_offset += envelope_size;
18186            _next_ordinal_to_read += 1;
18187            if next_offset >= end_offset {
18188                return Ok(());
18189            }
18190
18191            // Decode unknown envelopes for gaps in ordinals.
18192            while _next_ordinal_to_read < 3 {
18193                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18194                _next_ordinal_to_read += 1;
18195                next_offset += envelope_size;
18196            }
18197
18198            let next_out_of_line = decoder.next_out_of_line();
18199            let handles_before = decoder.remaining_handles();
18200            if let Some((inlined, num_bytes, num_handles)) =
18201                fidl::encoding::decode_envelope_header(decoder, next_offset)?
18202            {
18203                let member_inline_size =
18204                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
18205                if inlined != (member_inline_size <= 4) {
18206                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
18207                }
18208                let inner_offset;
18209                let mut inner_depth = depth.clone();
18210                if inlined {
18211                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18212                    inner_offset = next_offset;
18213                } else {
18214                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18215                    inner_depth.increment()?;
18216                }
18217                let val_ref = self.target.get_or_insert_with(|| fidl::new_empty!(Ref, D));
18218                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
18219                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18220                {
18221                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
18222                }
18223                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18224                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18225                }
18226            }
18227
18228            next_offset += envelope_size;
18229            _next_ordinal_to_read += 1;
18230            if next_offset >= end_offset {
18231                return Ok(());
18232            }
18233
18234            // Decode unknown envelopes for gaps in ordinals.
18235            while _next_ordinal_to_read < 4 {
18236                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18237                _next_ordinal_to_read += 1;
18238                next_offset += envelope_size;
18239            }
18240
18241            let next_out_of_line = decoder.next_out_of_line();
18242            let handles_before = decoder.remaining_handles();
18243            if let Some((inlined, num_bytes, num_handles)) =
18244                fidl::encoding::decode_envelope_header(decoder, next_offset)?
18245            {
18246                let member_inline_size =
18247                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
18248                        decoder.context,
18249                    );
18250                if inlined != (member_inline_size <= 4) {
18251                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
18252                }
18253                let inner_offset;
18254                let mut inner_depth = depth.clone();
18255                if inlined {
18256                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18257                    inner_offset = next_offset;
18258                } else {
18259                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18260                    inner_depth.increment()?;
18261                }
18262                let val_ref = self
18263                    .target_name
18264                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
18265                fidl::decode!(
18266                    fidl::encoding::BoundedString<100>,
18267                    D,
18268                    val_ref,
18269                    decoder,
18270                    inner_offset,
18271                    inner_depth
18272                )?;
18273                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18274                {
18275                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
18276                }
18277                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18278                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18279                }
18280            }
18281
18282            next_offset += envelope_size;
18283            _next_ordinal_to_read += 1;
18284            if next_offset >= end_offset {
18285                return Ok(());
18286            }
18287
18288            // Decode unknown envelopes for gaps in ordinals.
18289            while _next_ordinal_to_read < 5 {
18290                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18291                _next_ordinal_to_read += 1;
18292                next_offset += envelope_size;
18293            }
18294
18295            let next_out_of_line = decoder.next_out_of_line();
18296            let handles_before = decoder.remaining_handles();
18297            if let Some((inlined, num_bytes, num_handles)) =
18298                fidl::encoding::decode_envelope_header(decoder, next_offset)?
18299            {
18300                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
18301                if inlined != (member_inline_size <= 4) {
18302                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
18303                }
18304                let inner_offset;
18305                let mut inner_depth = depth.clone();
18306                if inlined {
18307                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18308                    inner_offset = next_offset;
18309                } else {
18310                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18311                    inner_depth.increment()?;
18312                }
18313                let val_ref = self.source_dictionary.get_or_insert_with(|| {
18314                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
18315                });
18316                fidl::decode!(
18317                    fidl::encoding::BoundedString<1024>,
18318                    D,
18319                    val_ref,
18320                    decoder,
18321                    inner_offset,
18322                    inner_depth
18323                )?;
18324                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18325                {
18326                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
18327                }
18328                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18329                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18330                }
18331            }
18332
18333            next_offset += envelope_size;
18334
18335            // Decode the remaining unknown envelopes.
18336            while next_offset < end_offset {
18337                _next_ordinal_to_read += 1;
18338                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18339                next_offset += envelope_size;
18340            }
18341
18342            Ok(())
18343        }
18344    }
18345
18346    impl OfferService {
18347        #[inline(always)]
18348        fn max_ordinal_present(&self) -> u64 {
18349            if let Some(_) = self.dependency_type {
18350                return 9;
18351            }
18352            if let Some(_) = self.source_dictionary {
18353                return 8;
18354            }
18355            if let Some(_) = self.availability {
18356                return 7;
18357            }
18358            if let Some(_) = self.renamed_instances {
18359                return 6;
18360            }
18361            if let Some(_) = self.source_instance_filter {
18362                return 5;
18363            }
18364            if let Some(_) = self.target_name {
18365                return 4;
18366            }
18367            if let Some(_) = self.target {
18368                return 3;
18369            }
18370            if let Some(_) = self.source_name {
18371                return 2;
18372            }
18373            if let Some(_) = self.source {
18374                return 1;
18375            }
18376            0
18377        }
18378    }
18379
18380    impl fidl::encoding::ValueTypeMarker for OfferService {
18381        type Borrowed<'a> = &'a Self;
18382        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
18383            value
18384        }
18385    }
18386
18387    unsafe impl fidl::encoding::TypeMarker for OfferService {
18388        type Owned = Self;
18389
18390        #[inline(always)]
18391        fn inline_align(_context: fidl::encoding::Context) -> usize {
18392            8
18393        }
18394
18395        #[inline(always)]
18396        fn inline_size(_context: fidl::encoding::Context) -> usize {
18397            16
18398        }
18399    }
18400
18401    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<OfferService, D>
18402        for &OfferService
18403    {
18404        unsafe fn encode(
18405            self,
18406            encoder: &mut fidl::encoding::Encoder<'_, D>,
18407            offset: usize,
18408            mut depth: fidl::encoding::Depth,
18409        ) -> fidl::Result<()> {
18410            encoder.debug_check_bounds::<OfferService>(offset);
18411            // Vector header
18412            let max_ordinal: u64 = self.max_ordinal_present();
18413            encoder.write_num(max_ordinal, offset);
18414            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
18415            // Calling encoder.out_of_line_offset(0) is not allowed.
18416            if max_ordinal == 0 {
18417                return Ok(());
18418            }
18419            depth.increment()?;
18420            let envelope_size = 8;
18421            let bytes_len = max_ordinal as usize * envelope_size;
18422            #[allow(unused_variables)]
18423            let offset = encoder.out_of_line_offset(bytes_len);
18424            let mut _prev_end_offset: usize = 0;
18425            if 1 > max_ordinal {
18426                return Ok(());
18427            }
18428
18429            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
18430            // are envelope_size bytes.
18431            let cur_offset: usize = (1 - 1) * envelope_size;
18432
18433            // Zero reserved fields.
18434            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18435
18436            // Safety:
18437            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
18438            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
18439            //   envelope_size bytes, there is always sufficient room.
18440            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
18441                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
18442                encoder,
18443                offset + cur_offset,
18444                depth,
18445            )?;
18446
18447            _prev_end_offset = cur_offset + envelope_size;
18448            if 2 > max_ordinal {
18449                return Ok(());
18450            }
18451
18452            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
18453            // are envelope_size bytes.
18454            let cur_offset: usize = (2 - 1) * envelope_size;
18455
18456            // Zero reserved fields.
18457            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18458
18459            // Safety:
18460            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
18461            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
18462            //   envelope_size bytes, there is always sufficient room.
18463            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
18464                self.source_name.as_ref().map(
18465                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
18466                ),
18467                encoder,
18468                offset + cur_offset,
18469                depth,
18470            )?;
18471
18472            _prev_end_offset = cur_offset + envelope_size;
18473            if 3 > max_ordinal {
18474                return Ok(());
18475            }
18476
18477            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
18478            // are envelope_size bytes.
18479            let cur_offset: usize = (3 - 1) * envelope_size;
18480
18481            // Zero reserved fields.
18482            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18483
18484            // Safety:
18485            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
18486            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
18487            //   envelope_size bytes, there is always sufficient room.
18488            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
18489                self.target.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
18490                encoder,
18491                offset + cur_offset,
18492                depth,
18493            )?;
18494
18495            _prev_end_offset = cur_offset + envelope_size;
18496            if 4 > max_ordinal {
18497                return Ok(());
18498            }
18499
18500            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
18501            // are envelope_size bytes.
18502            let cur_offset: usize = (4 - 1) * envelope_size;
18503
18504            // Zero reserved fields.
18505            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18506
18507            // Safety:
18508            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
18509            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
18510            //   envelope_size bytes, there is always sufficient room.
18511            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
18512                self.target_name.as_ref().map(
18513                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
18514                ),
18515                encoder,
18516                offset + cur_offset,
18517                depth,
18518            )?;
18519
18520            _prev_end_offset = cur_offset + envelope_size;
18521            if 5 > max_ordinal {
18522                return Ok(());
18523            }
18524
18525            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
18526            // are envelope_size bytes.
18527            let cur_offset: usize = (5 - 1) * envelope_size;
18528
18529            // Zero reserved fields.
18530            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18531
18532            // Safety:
18533            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
18534            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
18535            //   envelope_size bytes, there is always sufficient room.
18536            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<100>>, D>(
18537            self.source_instance_filter.as_ref().map(<fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<100>> as fidl::encoding::ValueTypeMarker>::borrow),
18538            encoder, offset + cur_offset, depth
18539        )?;
18540
18541            _prev_end_offset = cur_offset + envelope_size;
18542            if 6 > max_ordinal {
18543                return Ok(());
18544            }
18545
18546            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
18547            // are envelope_size bytes.
18548            let cur_offset: usize = (6 - 1) * envelope_size;
18549
18550            // Zero reserved fields.
18551            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18552
18553            // Safety:
18554            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
18555            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
18556            //   envelope_size bytes, there is always sufficient room.
18557            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<NameMapping>, D>(
18558            self.renamed_instances.as_ref().map(<fidl::encoding::UnboundedVector<NameMapping> as fidl::encoding::ValueTypeMarker>::borrow),
18559            encoder, offset + cur_offset, depth
18560        )?;
18561
18562            _prev_end_offset = cur_offset + envelope_size;
18563            if 7 > max_ordinal {
18564                return Ok(());
18565            }
18566
18567            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
18568            // are envelope_size bytes.
18569            let cur_offset: usize = (7 - 1) * envelope_size;
18570
18571            // Zero reserved fields.
18572            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18573
18574            // Safety:
18575            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
18576            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
18577            //   envelope_size bytes, there is always sufficient room.
18578            fidl::encoding::encode_in_envelope_optional::<Availability, D>(
18579                self.availability
18580                    .as_ref()
18581                    .map(<Availability as fidl::encoding::ValueTypeMarker>::borrow),
18582                encoder,
18583                offset + cur_offset,
18584                depth,
18585            )?;
18586
18587            _prev_end_offset = cur_offset + envelope_size;
18588            if 8 > max_ordinal {
18589                return Ok(());
18590            }
18591
18592            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
18593            // are envelope_size bytes.
18594            let cur_offset: usize = (8 - 1) * envelope_size;
18595
18596            // Zero reserved fields.
18597            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18598
18599            // Safety:
18600            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
18601            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
18602            //   envelope_size bytes, there is always sufficient room.
18603            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
18604            self.source_dictionary.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
18605            encoder, offset + cur_offset, depth
18606        )?;
18607
18608            _prev_end_offset = cur_offset + envelope_size;
18609            if 9 > max_ordinal {
18610                return Ok(());
18611            }
18612
18613            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
18614            // are envelope_size bytes.
18615            let cur_offset: usize = (9 - 1) * envelope_size;
18616
18617            // Zero reserved fields.
18618            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18619
18620            // Safety:
18621            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
18622            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
18623            //   envelope_size bytes, there is always sufficient room.
18624            fidl::encoding::encode_in_envelope_optional::<DependencyType, D>(
18625                self.dependency_type
18626                    .as_ref()
18627                    .map(<DependencyType as fidl::encoding::ValueTypeMarker>::borrow),
18628                encoder,
18629                offset + cur_offset,
18630                depth,
18631            )?;
18632
18633            _prev_end_offset = cur_offset + envelope_size;
18634
18635            Ok(())
18636        }
18637    }
18638
18639    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for OfferService {
18640        #[inline(always)]
18641        fn new_empty() -> Self {
18642            Self::default()
18643        }
18644
18645        unsafe fn decode(
18646            &mut self,
18647            decoder: &mut fidl::encoding::Decoder<'_, D>,
18648            offset: usize,
18649            mut depth: fidl::encoding::Depth,
18650        ) -> fidl::Result<()> {
18651            decoder.debug_check_bounds::<Self>(offset);
18652            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
18653                None => return Err(fidl::Error::NotNullable),
18654                Some(len) => len,
18655            };
18656            // Calling decoder.out_of_line_offset(0) is not allowed.
18657            if len == 0 {
18658                return Ok(());
18659            };
18660            depth.increment()?;
18661            let envelope_size = 8;
18662            let bytes_len = len * envelope_size;
18663            let offset = decoder.out_of_line_offset(bytes_len)?;
18664            // Decode the envelope for each type.
18665            let mut _next_ordinal_to_read = 0;
18666            let mut next_offset = offset;
18667            let end_offset = offset + bytes_len;
18668            _next_ordinal_to_read += 1;
18669            if next_offset >= end_offset {
18670                return Ok(());
18671            }
18672
18673            // Decode unknown envelopes for gaps in ordinals.
18674            while _next_ordinal_to_read < 1 {
18675                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18676                _next_ordinal_to_read += 1;
18677                next_offset += envelope_size;
18678            }
18679
18680            let next_out_of_line = decoder.next_out_of_line();
18681            let handles_before = decoder.remaining_handles();
18682            if let Some((inlined, num_bytes, num_handles)) =
18683                fidl::encoding::decode_envelope_header(decoder, next_offset)?
18684            {
18685                let member_inline_size =
18686                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
18687                if inlined != (member_inline_size <= 4) {
18688                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
18689                }
18690                let inner_offset;
18691                let mut inner_depth = depth.clone();
18692                if inlined {
18693                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18694                    inner_offset = next_offset;
18695                } else {
18696                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18697                    inner_depth.increment()?;
18698                }
18699                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
18700                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
18701                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18702                {
18703                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
18704                }
18705                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18706                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18707                }
18708            }
18709
18710            next_offset += envelope_size;
18711            _next_ordinal_to_read += 1;
18712            if next_offset >= end_offset {
18713                return Ok(());
18714            }
18715
18716            // Decode unknown envelopes for gaps in ordinals.
18717            while _next_ordinal_to_read < 2 {
18718                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18719                _next_ordinal_to_read += 1;
18720                next_offset += envelope_size;
18721            }
18722
18723            let next_out_of_line = decoder.next_out_of_line();
18724            let handles_before = decoder.remaining_handles();
18725            if let Some((inlined, num_bytes, num_handles)) =
18726                fidl::encoding::decode_envelope_header(decoder, next_offset)?
18727            {
18728                let member_inline_size =
18729                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
18730                        decoder.context,
18731                    );
18732                if inlined != (member_inline_size <= 4) {
18733                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
18734                }
18735                let inner_offset;
18736                let mut inner_depth = depth.clone();
18737                if inlined {
18738                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18739                    inner_offset = next_offset;
18740                } else {
18741                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18742                    inner_depth.increment()?;
18743                }
18744                let val_ref = self
18745                    .source_name
18746                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
18747                fidl::decode!(
18748                    fidl::encoding::BoundedString<100>,
18749                    D,
18750                    val_ref,
18751                    decoder,
18752                    inner_offset,
18753                    inner_depth
18754                )?;
18755                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18756                {
18757                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
18758                }
18759                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18760                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18761                }
18762            }
18763
18764            next_offset += envelope_size;
18765            _next_ordinal_to_read += 1;
18766            if next_offset >= end_offset {
18767                return Ok(());
18768            }
18769
18770            // Decode unknown envelopes for gaps in ordinals.
18771            while _next_ordinal_to_read < 3 {
18772                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18773                _next_ordinal_to_read += 1;
18774                next_offset += envelope_size;
18775            }
18776
18777            let next_out_of_line = decoder.next_out_of_line();
18778            let handles_before = decoder.remaining_handles();
18779            if let Some((inlined, num_bytes, num_handles)) =
18780                fidl::encoding::decode_envelope_header(decoder, next_offset)?
18781            {
18782                let member_inline_size =
18783                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
18784                if inlined != (member_inline_size <= 4) {
18785                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
18786                }
18787                let inner_offset;
18788                let mut inner_depth = depth.clone();
18789                if inlined {
18790                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18791                    inner_offset = next_offset;
18792                } else {
18793                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18794                    inner_depth.increment()?;
18795                }
18796                let val_ref = self.target.get_or_insert_with(|| fidl::new_empty!(Ref, D));
18797                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
18798                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18799                {
18800                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
18801                }
18802                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18803                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18804                }
18805            }
18806
18807            next_offset += envelope_size;
18808            _next_ordinal_to_read += 1;
18809            if next_offset >= end_offset {
18810                return Ok(());
18811            }
18812
18813            // Decode unknown envelopes for gaps in ordinals.
18814            while _next_ordinal_to_read < 4 {
18815                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18816                _next_ordinal_to_read += 1;
18817                next_offset += envelope_size;
18818            }
18819
18820            let next_out_of_line = decoder.next_out_of_line();
18821            let handles_before = decoder.remaining_handles();
18822            if let Some((inlined, num_bytes, num_handles)) =
18823                fidl::encoding::decode_envelope_header(decoder, next_offset)?
18824            {
18825                let member_inline_size =
18826                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
18827                        decoder.context,
18828                    );
18829                if inlined != (member_inline_size <= 4) {
18830                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
18831                }
18832                let inner_offset;
18833                let mut inner_depth = depth.clone();
18834                if inlined {
18835                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18836                    inner_offset = next_offset;
18837                } else {
18838                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18839                    inner_depth.increment()?;
18840                }
18841                let val_ref = self
18842                    .target_name
18843                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
18844                fidl::decode!(
18845                    fidl::encoding::BoundedString<100>,
18846                    D,
18847                    val_ref,
18848                    decoder,
18849                    inner_offset,
18850                    inner_depth
18851                )?;
18852                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18853                {
18854                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
18855                }
18856                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18857                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18858                }
18859            }
18860
18861            next_offset += envelope_size;
18862            _next_ordinal_to_read += 1;
18863            if next_offset >= end_offset {
18864                return Ok(());
18865            }
18866
18867            // Decode unknown envelopes for gaps in ordinals.
18868            while _next_ordinal_to_read < 5 {
18869                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18870                _next_ordinal_to_read += 1;
18871                next_offset += envelope_size;
18872            }
18873
18874            let next_out_of_line = decoder.next_out_of_line();
18875            let handles_before = decoder.remaining_handles();
18876            if let Some((inlined, num_bytes, num_handles)) =
18877                fidl::encoding::decode_envelope_header(decoder, next_offset)?
18878            {
18879                let member_inline_size = <fidl::encoding::UnboundedVector<
18880                    fidl::encoding::BoundedString<100>,
18881                > as fidl::encoding::TypeMarker>::inline_size(
18882                    decoder.context
18883                );
18884                if inlined != (member_inline_size <= 4) {
18885                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
18886                }
18887                let inner_offset;
18888                let mut inner_depth = depth.clone();
18889                if inlined {
18890                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18891                    inner_offset = next_offset;
18892                } else {
18893                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18894                    inner_depth.increment()?;
18895                }
18896                let val_ref = self.source_instance_filter.get_or_insert_with(|| {
18897                    fidl::new_empty!(
18898                        fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<100>>,
18899                        D
18900                    )
18901                });
18902                fidl::decode!(
18903                    fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<100>>,
18904                    D,
18905                    val_ref,
18906                    decoder,
18907                    inner_offset,
18908                    inner_depth
18909                )?;
18910                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18911                {
18912                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
18913                }
18914                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18915                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18916                }
18917            }
18918
18919            next_offset += envelope_size;
18920            _next_ordinal_to_read += 1;
18921            if next_offset >= end_offset {
18922                return Ok(());
18923            }
18924
18925            // Decode unknown envelopes for gaps in ordinals.
18926            while _next_ordinal_to_read < 6 {
18927                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18928                _next_ordinal_to_read += 1;
18929                next_offset += envelope_size;
18930            }
18931
18932            let next_out_of_line = decoder.next_out_of_line();
18933            let handles_before = decoder.remaining_handles();
18934            if let Some((inlined, num_bytes, num_handles)) =
18935                fidl::encoding::decode_envelope_header(decoder, next_offset)?
18936            {
18937                let member_inline_size = <fidl::encoding::UnboundedVector<NameMapping> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
18938                if inlined != (member_inline_size <= 4) {
18939                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
18940                }
18941                let inner_offset;
18942                let mut inner_depth = depth.clone();
18943                if inlined {
18944                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18945                    inner_offset = next_offset;
18946                } else {
18947                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18948                    inner_depth.increment()?;
18949                }
18950                let val_ref = self.renamed_instances.get_or_insert_with(|| {
18951                    fidl::new_empty!(fidl::encoding::UnboundedVector<NameMapping>, D)
18952                });
18953                fidl::decode!(
18954                    fidl::encoding::UnboundedVector<NameMapping>,
18955                    D,
18956                    val_ref,
18957                    decoder,
18958                    inner_offset,
18959                    inner_depth
18960                )?;
18961                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18962                {
18963                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
18964                }
18965                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18966                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18967                }
18968            }
18969
18970            next_offset += envelope_size;
18971            _next_ordinal_to_read += 1;
18972            if next_offset >= end_offset {
18973                return Ok(());
18974            }
18975
18976            // Decode unknown envelopes for gaps in ordinals.
18977            while _next_ordinal_to_read < 7 {
18978                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18979                _next_ordinal_to_read += 1;
18980                next_offset += envelope_size;
18981            }
18982
18983            let next_out_of_line = decoder.next_out_of_line();
18984            let handles_before = decoder.remaining_handles();
18985            if let Some((inlined, num_bytes, num_handles)) =
18986                fidl::encoding::decode_envelope_header(decoder, next_offset)?
18987            {
18988                let member_inline_size =
18989                    <Availability as fidl::encoding::TypeMarker>::inline_size(decoder.context);
18990                if inlined != (member_inline_size <= 4) {
18991                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
18992                }
18993                let inner_offset;
18994                let mut inner_depth = depth.clone();
18995                if inlined {
18996                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18997                    inner_offset = next_offset;
18998                } else {
18999                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19000                    inner_depth.increment()?;
19001                }
19002                let val_ref =
19003                    self.availability.get_or_insert_with(|| fidl::new_empty!(Availability, D));
19004                fidl::decode!(Availability, D, val_ref, decoder, inner_offset, inner_depth)?;
19005                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19006                {
19007                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
19008                }
19009                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19010                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19011                }
19012            }
19013
19014            next_offset += envelope_size;
19015            _next_ordinal_to_read += 1;
19016            if next_offset >= end_offset {
19017                return Ok(());
19018            }
19019
19020            // Decode unknown envelopes for gaps in ordinals.
19021            while _next_ordinal_to_read < 8 {
19022                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19023                _next_ordinal_to_read += 1;
19024                next_offset += envelope_size;
19025            }
19026
19027            let next_out_of_line = decoder.next_out_of_line();
19028            let handles_before = decoder.remaining_handles();
19029            if let Some((inlined, num_bytes, num_handles)) =
19030                fidl::encoding::decode_envelope_header(decoder, next_offset)?
19031            {
19032                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
19033                if inlined != (member_inline_size <= 4) {
19034                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
19035                }
19036                let inner_offset;
19037                let mut inner_depth = depth.clone();
19038                if inlined {
19039                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19040                    inner_offset = next_offset;
19041                } else {
19042                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19043                    inner_depth.increment()?;
19044                }
19045                let val_ref = self.source_dictionary.get_or_insert_with(|| {
19046                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
19047                });
19048                fidl::decode!(
19049                    fidl::encoding::BoundedString<1024>,
19050                    D,
19051                    val_ref,
19052                    decoder,
19053                    inner_offset,
19054                    inner_depth
19055                )?;
19056                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19057                {
19058                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
19059                }
19060                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19061                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19062                }
19063            }
19064
19065            next_offset += envelope_size;
19066            _next_ordinal_to_read += 1;
19067            if next_offset >= end_offset {
19068                return Ok(());
19069            }
19070
19071            // Decode unknown envelopes for gaps in ordinals.
19072            while _next_ordinal_to_read < 9 {
19073                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19074                _next_ordinal_to_read += 1;
19075                next_offset += envelope_size;
19076            }
19077
19078            let next_out_of_line = decoder.next_out_of_line();
19079            let handles_before = decoder.remaining_handles();
19080            if let Some((inlined, num_bytes, num_handles)) =
19081                fidl::encoding::decode_envelope_header(decoder, next_offset)?
19082            {
19083                let member_inline_size =
19084                    <DependencyType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
19085                if inlined != (member_inline_size <= 4) {
19086                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
19087                }
19088                let inner_offset;
19089                let mut inner_depth = depth.clone();
19090                if inlined {
19091                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19092                    inner_offset = next_offset;
19093                } else {
19094                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19095                    inner_depth.increment()?;
19096                }
19097                let val_ref =
19098                    self.dependency_type.get_or_insert_with(|| fidl::new_empty!(DependencyType, D));
19099                fidl::decode!(DependencyType, D, val_ref, decoder, inner_offset, inner_depth)?;
19100                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19101                {
19102                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
19103                }
19104                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19105                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19106                }
19107            }
19108
19109            next_offset += envelope_size;
19110
19111            // Decode the remaining unknown envelopes.
19112            while next_offset < end_offset {
19113                _next_ordinal_to_read += 1;
19114                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19115                next_offset += envelope_size;
19116            }
19117
19118            Ok(())
19119        }
19120    }
19121
19122    impl OfferStorage {
19123        #[inline(always)]
19124        fn max_ordinal_present(&self) -> u64 {
19125            if let Some(_) = self.availability {
19126                return 5;
19127            }
19128            if let Some(_) = self.target_name {
19129                return 4;
19130            }
19131            if let Some(_) = self.target {
19132                return 3;
19133            }
19134            if let Some(_) = self.source {
19135                return 2;
19136            }
19137            if let Some(_) = self.source_name {
19138                return 1;
19139            }
19140            0
19141        }
19142    }
19143
19144    impl fidl::encoding::ValueTypeMarker for OfferStorage {
19145        type Borrowed<'a> = &'a Self;
19146        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
19147            value
19148        }
19149    }
19150
19151    unsafe impl fidl::encoding::TypeMarker for OfferStorage {
19152        type Owned = Self;
19153
19154        #[inline(always)]
19155        fn inline_align(_context: fidl::encoding::Context) -> usize {
19156            8
19157        }
19158
19159        #[inline(always)]
19160        fn inline_size(_context: fidl::encoding::Context) -> usize {
19161            16
19162        }
19163    }
19164
19165    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<OfferStorage, D>
19166        for &OfferStorage
19167    {
19168        unsafe fn encode(
19169            self,
19170            encoder: &mut fidl::encoding::Encoder<'_, D>,
19171            offset: usize,
19172            mut depth: fidl::encoding::Depth,
19173        ) -> fidl::Result<()> {
19174            encoder.debug_check_bounds::<OfferStorage>(offset);
19175            // Vector header
19176            let max_ordinal: u64 = self.max_ordinal_present();
19177            encoder.write_num(max_ordinal, offset);
19178            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
19179            // Calling encoder.out_of_line_offset(0) is not allowed.
19180            if max_ordinal == 0 {
19181                return Ok(());
19182            }
19183            depth.increment()?;
19184            let envelope_size = 8;
19185            let bytes_len = max_ordinal as usize * envelope_size;
19186            #[allow(unused_variables)]
19187            let offset = encoder.out_of_line_offset(bytes_len);
19188            let mut _prev_end_offset: usize = 0;
19189            if 1 > max_ordinal {
19190                return Ok(());
19191            }
19192
19193            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
19194            // are envelope_size bytes.
19195            let cur_offset: usize = (1 - 1) * envelope_size;
19196
19197            // Zero reserved fields.
19198            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19199
19200            // Safety:
19201            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
19202            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
19203            //   envelope_size bytes, there is always sufficient room.
19204            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
19205                self.source_name.as_ref().map(
19206                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
19207                ),
19208                encoder,
19209                offset + cur_offset,
19210                depth,
19211            )?;
19212
19213            _prev_end_offset = cur_offset + envelope_size;
19214            if 2 > max_ordinal {
19215                return Ok(());
19216            }
19217
19218            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
19219            // are envelope_size bytes.
19220            let cur_offset: usize = (2 - 1) * envelope_size;
19221
19222            // Zero reserved fields.
19223            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19224
19225            // Safety:
19226            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
19227            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
19228            //   envelope_size bytes, there is always sufficient room.
19229            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
19230                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
19231                encoder,
19232                offset + cur_offset,
19233                depth,
19234            )?;
19235
19236            _prev_end_offset = cur_offset + envelope_size;
19237            if 3 > max_ordinal {
19238                return Ok(());
19239            }
19240
19241            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
19242            // are envelope_size bytes.
19243            let cur_offset: usize = (3 - 1) * envelope_size;
19244
19245            // Zero reserved fields.
19246            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19247
19248            // Safety:
19249            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
19250            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
19251            //   envelope_size bytes, there is always sufficient room.
19252            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
19253                self.target.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
19254                encoder,
19255                offset + cur_offset,
19256                depth,
19257            )?;
19258
19259            _prev_end_offset = cur_offset + envelope_size;
19260            if 4 > max_ordinal {
19261                return Ok(());
19262            }
19263
19264            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
19265            // are envelope_size bytes.
19266            let cur_offset: usize = (4 - 1) * envelope_size;
19267
19268            // Zero reserved fields.
19269            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19270
19271            // Safety:
19272            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
19273            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
19274            //   envelope_size bytes, there is always sufficient room.
19275            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
19276                self.target_name.as_ref().map(
19277                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
19278                ),
19279                encoder,
19280                offset + cur_offset,
19281                depth,
19282            )?;
19283
19284            _prev_end_offset = cur_offset + envelope_size;
19285            if 5 > max_ordinal {
19286                return Ok(());
19287            }
19288
19289            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
19290            // are envelope_size bytes.
19291            let cur_offset: usize = (5 - 1) * envelope_size;
19292
19293            // Zero reserved fields.
19294            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19295
19296            // Safety:
19297            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
19298            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
19299            //   envelope_size bytes, there is always sufficient room.
19300            fidl::encoding::encode_in_envelope_optional::<Availability, D>(
19301                self.availability
19302                    .as_ref()
19303                    .map(<Availability as fidl::encoding::ValueTypeMarker>::borrow),
19304                encoder,
19305                offset + cur_offset,
19306                depth,
19307            )?;
19308
19309            _prev_end_offset = cur_offset + envelope_size;
19310
19311            Ok(())
19312        }
19313    }
19314
19315    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for OfferStorage {
19316        #[inline(always)]
19317        fn new_empty() -> Self {
19318            Self::default()
19319        }
19320
19321        unsafe fn decode(
19322            &mut self,
19323            decoder: &mut fidl::encoding::Decoder<'_, D>,
19324            offset: usize,
19325            mut depth: fidl::encoding::Depth,
19326        ) -> fidl::Result<()> {
19327            decoder.debug_check_bounds::<Self>(offset);
19328            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
19329                None => return Err(fidl::Error::NotNullable),
19330                Some(len) => len,
19331            };
19332            // Calling decoder.out_of_line_offset(0) is not allowed.
19333            if len == 0 {
19334                return Ok(());
19335            };
19336            depth.increment()?;
19337            let envelope_size = 8;
19338            let bytes_len = len * envelope_size;
19339            let offset = decoder.out_of_line_offset(bytes_len)?;
19340            // Decode the envelope for each type.
19341            let mut _next_ordinal_to_read = 0;
19342            let mut next_offset = offset;
19343            let end_offset = offset + bytes_len;
19344            _next_ordinal_to_read += 1;
19345            if next_offset >= end_offset {
19346                return Ok(());
19347            }
19348
19349            // Decode unknown envelopes for gaps in ordinals.
19350            while _next_ordinal_to_read < 1 {
19351                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19352                _next_ordinal_to_read += 1;
19353                next_offset += envelope_size;
19354            }
19355
19356            let next_out_of_line = decoder.next_out_of_line();
19357            let handles_before = decoder.remaining_handles();
19358            if let Some((inlined, num_bytes, num_handles)) =
19359                fidl::encoding::decode_envelope_header(decoder, next_offset)?
19360            {
19361                let member_inline_size =
19362                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
19363                        decoder.context,
19364                    );
19365                if inlined != (member_inline_size <= 4) {
19366                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
19367                }
19368                let inner_offset;
19369                let mut inner_depth = depth.clone();
19370                if inlined {
19371                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19372                    inner_offset = next_offset;
19373                } else {
19374                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19375                    inner_depth.increment()?;
19376                }
19377                let val_ref = self
19378                    .source_name
19379                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
19380                fidl::decode!(
19381                    fidl::encoding::BoundedString<100>,
19382                    D,
19383                    val_ref,
19384                    decoder,
19385                    inner_offset,
19386                    inner_depth
19387                )?;
19388                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19389                {
19390                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
19391                }
19392                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19393                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19394                }
19395            }
19396
19397            next_offset += envelope_size;
19398            _next_ordinal_to_read += 1;
19399            if next_offset >= end_offset {
19400                return Ok(());
19401            }
19402
19403            // Decode unknown envelopes for gaps in ordinals.
19404            while _next_ordinal_to_read < 2 {
19405                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19406                _next_ordinal_to_read += 1;
19407                next_offset += envelope_size;
19408            }
19409
19410            let next_out_of_line = decoder.next_out_of_line();
19411            let handles_before = decoder.remaining_handles();
19412            if let Some((inlined, num_bytes, num_handles)) =
19413                fidl::encoding::decode_envelope_header(decoder, next_offset)?
19414            {
19415                let member_inline_size =
19416                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
19417                if inlined != (member_inline_size <= 4) {
19418                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
19419                }
19420                let inner_offset;
19421                let mut inner_depth = depth.clone();
19422                if inlined {
19423                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19424                    inner_offset = next_offset;
19425                } else {
19426                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19427                    inner_depth.increment()?;
19428                }
19429                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
19430                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
19431                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19432                {
19433                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
19434                }
19435                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19436                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19437                }
19438            }
19439
19440            next_offset += envelope_size;
19441            _next_ordinal_to_read += 1;
19442            if next_offset >= end_offset {
19443                return Ok(());
19444            }
19445
19446            // Decode unknown envelopes for gaps in ordinals.
19447            while _next_ordinal_to_read < 3 {
19448                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19449                _next_ordinal_to_read += 1;
19450                next_offset += envelope_size;
19451            }
19452
19453            let next_out_of_line = decoder.next_out_of_line();
19454            let handles_before = decoder.remaining_handles();
19455            if let Some((inlined, num_bytes, num_handles)) =
19456                fidl::encoding::decode_envelope_header(decoder, next_offset)?
19457            {
19458                let member_inline_size =
19459                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
19460                if inlined != (member_inline_size <= 4) {
19461                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
19462                }
19463                let inner_offset;
19464                let mut inner_depth = depth.clone();
19465                if inlined {
19466                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19467                    inner_offset = next_offset;
19468                } else {
19469                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19470                    inner_depth.increment()?;
19471                }
19472                let val_ref = self.target.get_or_insert_with(|| fidl::new_empty!(Ref, D));
19473                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
19474                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19475                {
19476                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
19477                }
19478                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19479                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19480                }
19481            }
19482
19483            next_offset += envelope_size;
19484            _next_ordinal_to_read += 1;
19485            if next_offset >= end_offset {
19486                return Ok(());
19487            }
19488
19489            // Decode unknown envelopes for gaps in ordinals.
19490            while _next_ordinal_to_read < 4 {
19491                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19492                _next_ordinal_to_read += 1;
19493                next_offset += envelope_size;
19494            }
19495
19496            let next_out_of_line = decoder.next_out_of_line();
19497            let handles_before = decoder.remaining_handles();
19498            if let Some((inlined, num_bytes, num_handles)) =
19499                fidl::encoding::decode_envelope_header(decoder, next_offset)?
19500            {
19501                let member_inline_size =
19502                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
19503                        decoder.context,
19504                    );
19505                if inlined != (member_inline_size <= 4) {
19506                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
19507                }
19508                let inner_offset;
19509                let mut inner_depth = depth.clone();
19510                if inlined {
19511                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19512                    inner_offset = next_offset;
19513                } else {
19514                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19515                    inner_depth.increment()?;
19516                }
19517                let val_ref = self
19518                    .target_name
19519                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
19520                fidl::decode!(
19521                    fidl::encoding::BoundedString<100>,
19522                    D,
19523                    val_ref,
19524                    decoder,
19525                    inner_offset,
19526                    inner_depth
19527                )?;
19528                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19529                {
19530                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
19531                }
19532                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19533                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19534                }
19535            }
19536
19537            next_offset += envelope_size;
19538            _next_ordinal_to_read += 1;
19539            if next_offset >= end_offset {
19540                return Ok(());
19541            }
19542
19543            // Decode unknown envelopes for gaps in ordinals.
19544            while _next_ordinal_to_read < 5 {
19545                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19546                _next_ordinal_to_read += 1;
19547                next_offset += envelope_size;
19548            }
19549
19550            let next_out_of_line = decoder.next_out_of_line();
19551            let handles_before = decoder.remaining_handles();
19552            if let Some((inlined, num_bytes, num_handles)) =
19553                fidl::encoding::decode_envelope_header(decoder, next_offset)?
19554            {
19555                let member_inline_size =
19556                    <Availability as fidl::encoding::TypeMarker>::inline_size(decoder.context);
19557                if inlined != (member_inline_size <= 4) {
19558                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
19559                }
19560                let inner_offset;
19561                let mut inner_depth = depth.clone();
19562                if inlined {
19563                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19564                    inner_offset = next_offset;
19565                } else {
19566                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19567                    inner_depth.increment()?;
19568                }
19569                let val_ref =
19570                    self.availability.get_or_insert_with(|| fidl::new_empty!(Availability, D));
19571                fidl::decode!(Availability, D, val_ref, decoder, inner_offset, inner_depth)?;
19572                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19573                {
19574                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
19575                }
19576                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19577                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19578                }
19579            }
19580
19581            next_offset += envelope_size;
19582
19583            // Decode the remaining unknown envelopes.
19584            while next_offset < end_offset {
19585                _next_ordinal_to_read += 1;
19586                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19587                next_offset += envelope_size;
19588            }
19589
19590            Ok(())
19591        }
19592    }
19593
19594    impl Program {
19595        #[inline(always)]
19596        fn max_ordinal_present(&self) -> u64 {
19597            if let Some(_) = self.info {
19598                return 2;
19599            }
19600            if let Some(_) = self.runner {
19601                return 1;
19602            }
19603            0
19604        }
19605    }
19606
19607    impl fidl::encoding::ValueTypeMarker for Program {
19608        type Borrowed<'a> = &'a Self;
19609        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
19610            value
19611        }
19612    }
19613
19614    unsafe impl fidl::encoding::TypeMarker for Program {
19615        type Owned = Self;
19616
19617        #[inline(always)]
19618        fn inline_align(_context: fidl::encoding::Context) -> usize {
19619            8
19620        }
19621
19622        #[inline(always)]
19623        fn inline_size(_context: fidl::encoding::Context) -> usize {
19624            16
19625        }
19626    }
19627
19628    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Program, D> for &Program {
19629        unsafe fn encode(
19630            self,
19631            encoder: &mut fidl::encoding::Encoder<'_, D>,
19632            offset: usize,
19633            mut depth: fidl::encoding::Depth,
19634        ) -> fidl::Result<()> {
19635            encoder.debug_check_bounds::<Program>(offset);
19636            // Vector header
19637            let max_ordinal: u64 = self.max_ordinal_present();
19638            encoder.write_num(max_ordinal, offset);
19639            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
19640            // Calling encoder.out_of_line_offset(0) is not allowed.
19641            if max_ordinal == 0 {
19642                return Ok(());
19643            }
19644            depth.increment()?;
19645            let envelope_size = 8;
19646            let bytes_len = max_ordinal as usize * envelope_size;
19647            #[allow(unused_variables)]
19648            let offset = encoder.out_of_line_offset(bytes_len);
19649            let mut _prev_end_offset: usize = 0;
19650            if 1 > max_ordinal {
19651                return Ok(());
19652            }
19653
19654            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
19655            // are envelope_size bytes.
19656            let cur_offset: usize = (1 - 1) * envelope_size;
19657
19658            // Zero reserved fields.
19659            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19660
19661            // Safety:
19662            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
19663            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
19664            //   envelope_size bytes, there is always sufficient room.
19665            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
19666                self.runner.as_ref().map(
19667                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
19668                ),
19669                encoder,
19670                offset + cur_offset,
19671                depth,
19672            )?;
19673
19674            _prev_end_offset = cur_offset + envelope_size;
19675            if 2 > max_ordinal {
19676                return Ok(());
19677            }
19678
19679            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
19680            // are envelope_size bytes.
19681            let cur_offset: usize = (2 - 1) * envelope_size;
19682
19683            // Zero reserved fields.
19684            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19685
19686            // Safety:
19687            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
19688            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
19689            //   envelope_size bytes, there is always sufficient room.
19690            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_data__common::Dictionary, D>(
19691            self.info.as_ref().map(<fidl_fuchsia_data__common::Dictionary as fidl::encoding::ValueTypeMarker>::borrow),
19692            encoder, offset + cur_offset, depth
19693        )?;
19694
19695            _prev_end_offset = cur_offset + envelope_size;
19696
19697            Ok(())
19698        }
19699    }
19700
19701    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Program {
19702        #[inline(always)]
19703        fn new_empty() -> Self {
19704            Self::default()
19705        }
19706
19707        unsafe fn decode(
19708            &mut self,
19709            decoder: &mut fidl::encoding::Decoder<'_, D>,
19710            offset: usize,
19711            mut depth: fidl::encoding::Depth,
19712        ) -> fidl::Result<()> {
19713            decoder.debug_check_bounds::<Self>(offset);
19714            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
19715                None => return Err(fidl::Error::NotNullable),
19716                Some(len) => len,
19717            };
19718            // Calling decoder.out_of_line_offset(0) is not allowed.
19719            if len == 0 {
19720                return Ok(());
19721            };
19722            depth.increment()?;
19723            let envelope_size = 8;
19724            let bytes_len = len * envelope_size;
19725            let offset = decoder.out_of_line_offset(bytes_len)?;
19726            // Decode the envelope for each type.
19727            let mut _next_ordinal_to_read = 0;
19728            let mut next_offset = offset;
19729            let end_offset = offset + bytes_len;
19730            _next_ordinal_to_read += 1;
19731            if next_offset >= end_offset {
19732                return Ok(());
19733            }
19734
19735            // Decode unknown envelopes for gaps in ordinals.
19736            while _next_ordinal_to_read < 1 {
19737                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19738                _next_ordinal_to_read += 1;
19739                next_offset += envelope_size;
19740            }
19741
19742            let next_out_of_line = decoder.next_out_of_line();
19743            let handles_before = decoder.remaining_handles();
19744            if let Some((inlined, num_bytes, num_handles)) =
19745                fidl::encoding::decode_envelope_header(decoder, next_offset)?
19746            {
19747                let member_inline_size =
19748                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
19749                        decoder.context,
19750                    );
19751                if inlined != (member_inline_size <= 4) {
19752                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
19753                }
19754                let inner_offset;
19755                let mut inner_depth = depth.clone();
19756                if inlined {
19757                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19758                    inner_offset = next_offset;
19759                } else {
19760                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19761                    inner_depth.increment()?;
19762                }
19763                let val_ref = self
19764                    .runner
19765                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
19766                fidl::decode!(
19767                    fidl::encoding::BoundedString<100>,
19768                    D,
19769                    val_ref,
19770                    decoder,
19771                    inner_offset,
19772                    inner_depth
19773                )?;
19774                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19775                {
19776                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
19777                }
19778                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19779                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19780                }
19781            }
19782
19783            next_offset += envelope_size;
19784            _next_ordinal_to_read += 1;
19785            if next_offset >= end_offset {
19786                return Ok(());
19787            }
19788
19789            // Decode unknown envelopes for gaps in ordinals.
19790            while _next_ordinal_to_read < 2 {
19791                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19792                _next_ordinal_to_read += 1;
19793                next_offset += envelope_size;
19794            }
19795
19796            let next_out_of_line = decoder.next_out_of_line();
19797            let handles_before = decoder.remaining_handles();
19798            if let Some((inlined, num_bytes, num_handles)) =
19799                fidl::encoding::decode_envelope_header(decoder, next_offset)?
19800            {
19801                let member_inline_size = <fidl_fuchsia_data__common::Dictionary as fidl::encoding::TypeMarker>::inline_size(decoder.context);
19802                if inlined != (member_inline_size <= 4) {
19803                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
19804                }
19805                let inner_offset;
19806                let mut inner_depth = depth.clone();
19807                if inlined {
19808                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19809                    inner_offset = next_offset;
19810                } else {
19811                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19812                    inner_depth.increment()?;
19813                }
19814                let val_ref = self.info.get_or_insert_with(|| {
19815                    fidl::new_empty!(fidl_fuchsia_data__common::Dictionary, D)
19816                });
19817                fidl::decode!(
19818                    fidl_fuchsia_data__common::Dictionary,
19819                    D,
19820                    val_ref,
19821                    decoder,
19822                    inner_offset,
19823                    inner_depth
19824                )?;
19825                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19826                {
19827                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
19828                }
19829                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19830                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19831                }
19832            }
19833
19834            next_offset += envelope_size;
19835
19836            // Decode the remaining unknown envelopes.
19837            while next_offset < end_offset {
19838                _next_ordinal_to_read += 1;
19839                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19840                next_offset += envelope_size;
19841            }
19842
19843            Ok(())
19844        }
19845    }
19846
19847    impl Protocol {
19848        #[inline(always)]
19849        fn max_ordinal_present(&self) -> u64 {
19850            if let Some(_) = self.delivery {
19851                return 3;
19852            }
19853            if let Some(_) = self.source_path {
19854                return 2;
19855            }
19856            if let Some(_) = self.name {
19857                return 1;
19858            }
19859            0
19860        }
19861    }
19862
19863    impl fidl::encoding::ValueTypeMarker for Protocol {
19864        type Borrowed<'a> = &'a Self;
19865        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
19866            value
19867        }
19868    }
19869
19870    unsafe impl fidl::encoding::TypeMarker for Protocol {
19871        type Owned = Self;
19872
19873        #[inline(always)]
19874        fn inline_align(_context: fidl::encoding::Context) -> usize {
19875            8
19876        }
19877
19878        #[inline(always)]
19879        fn inline_size(_context: fidl::encoding::Context) -> usize {
19880            16
19881        }
19882    }
19883
19884    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Protocol, D> for &Protocol {
19885        unsafe fn encode(
19886            self,
19887            encoder: &mut fidl::encoding::Encoder<'_, D>,
19888            offset: usize,
19889            mut depth: fidl::encoding::Depth,
19890        ) -> fidl::Result<()> {
19891            encoder.debug_check_bounds::<Protocol>(offset);
19892            // Vector header
19893            let max_ordinal: u64 = self.max_ordinal_present();
19894            encoder.write_num(max_ordinal, offset);
19895            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
19896            // Calling encoder.out_of_line_offset(0) is not allowed.
19897            if max_ordinal == 0 {
19898                return Ok(());
19899            }
19900            depth.increment()?;
19901            let envelope_size = 8;
19902            let bytes_len = max_ordinal as usize * envelope_size;
19903            #[allow(unused_variables)]
19904            let offset = encoder.out_of_line_offset(bytes_len);
19905            let mut _prev_end_offset: usize = 0;
19906            if 1 > max_ordinal {
19907                return Ok(());
19908            }
19909
19910            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
19911            // are envelope_size bytes.
19912            let cur_offset: usize = (1 - 1) * envelope_size;
19913
19914            // Zero reserved fields.
19915            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19916
19917            // Safety:
19918            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
19919            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
19920            //   envelope_size bytes, there is always sufficient room.
19921            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
19922                self.name.as_ref().map(
19923                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
19924                ),
19925                encoder,
19926                offset + cur_offset,
19927                depth,
19928            )?;
19929
19930            _prev_end_offset = cur_offset + envelope_size;
19931            if 2 > max_ordinal {
19932                return Ok(());
19933            }
19934
19935            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
19936            // are envelope_size bytes.
19937            let cur_offset: usize = (2 - 1) * envelope_size;
19938
19939            // Zero reserved fields.
19940            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19941
19942            // Safety:
19943            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
19944            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
19945            //   envelope_size bytes, there is always sufficient room.
19946            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
19947            self.source_path.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
19948            encoder, offset + cur_offset, depth
19949        )?;
19950
19951            _prev_end_offset = cur_offset + envelope_size;
19952            if 3 > max_ordinal {
19953                return Ok(());
19954            }
19955
19956            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
19957            // are envelope_size bytes.
19958            let cur_offset: usize = (3 - 1) * envelope_size;
19959
19960            // Zero reserved fields.
19961            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19962
19963            // Safety:
19964            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
19965            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
19966            //   envelope_size bytes, there is always sufficient room.
19967            fidl::encoding::encode_in_envelope_optional::<DeliveryType, D>(
19968                self.delivery
19969                    .as_ref()
19970                    .map(<DeliveryType as fidl::encoding::ValueTypeMarker>::borrow),
19971                encoder,
19972                offset + cur_offset,
19973                depth,
19974            )?;
19975
19976            _prev_end_offset = cur_offset + envelope_size;
19977
19978            Ok(())
19979        }
19980    }
19981
19982    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Protocol {
19983        #[inline(always)]
19984        fn new_empty() -> Self {
19985            Self::default()
19986        }
19987
19988        unsafe fn decode(
19989            &mut self,
19990            decoder: &mut fidl::encoding::Decoder<'_, D>,
19991            offset: usize,
19992            mut depth: fidl::encoding::Depth,
19993        ) -> fidl::Result<()> {
19994            decoder.debug_check_bounds::<Self>(offset);
19995            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
19996                None => return Err(fidl::Error::NotNullable),
19997                Some(len) => len,
19998            };
19999            // Calling decoder.out_of_line_offset(0) is not allowed.
20000            if len == 0 {
20001                return Ok(());
20002            };
20003            depth.increment()?;
20004            let envelope_size = 8;
20005            let bytes_len = len * envelope_size;
20006            let offset = decoder.out_of_line_offset(bytes_len)?;
20007            // Decode the envelope for each type.
20008            let mut _next_ordinal_to_read = 0;
20009            let mut next_offset = offset;
20010            let end_offset = offset + bytes_len;
20011            _next_ordinal_to_read += 1;
20012            if next_offset >= end_offset {
20013                return Ok(());
20014            }
20015
20016            // Decode unknown envelopes for gaps in ordinals.
20017            while _next_ordinal_to_read < 1 {
20018                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20019                _next_ordinal_to_read += 1;
20020                next_offset += envelope_size;
20021            }
20022
20023            let next_out_of_line = decoder.next_out_of_line();
20024            let handles_before = decoder.remaining_handles();
20025            if let Some((inlined, num_bytes, num_handles)) =
20026                fidl::encoding::decode_envelope_header(decoder, next_offset)?
20027            {
20028                let member_inline_size =
20029                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
20030                        decoder.context,
20031                    );
20032                if inlined != (member_inline_size <= 4) {
20033                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
20034                }
20035                let inner_offset;
20036                let mut inner_depth = depth.clone();
20037                if inlined {
20038                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20039                    inner_offset = next_offset;
20040                } else {
20041                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20042                    inner_depth.increment()?;
20043                }
20044                let val_ref = self
20045                    .name
20046                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
20047                fidl::decode!(
20048                    fidl::encoding::BoundedString<100>,
20049                    D,
20050                    val_ref,
20051                    decoder,
20052                    inner_offset,
20053                    inner_depth
20054                )?;
20055                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20056                {
20057                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
20058                }
20059                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20060                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20061                }
20062            }
20063
20064            next_offset += envelope_size;
20065            _next_ordinal_to_read += 1;
20066            if next_offset >= end_offset {
20067                return Ok(());
20068            }
20069
20070            // Decode unknown envelopes for gaps in ordinals.
20071            while _next_ordinal_to_read < 2 {
20072                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20073                _next_ordinal_to_read += 1;
20074                next_offset += envelope_size;
20075            }
20076
20077            let next_out_of_line = decoder.next_out_of_line();
20078            let handles_before = decoder.remaining_handles();
20079            if let Some((inlined, num_bytes, num_handles)) =
20080                fidl::encoding::decode_envelope_header(decoder, next_offset)?
20081            {
20082                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
20083                if inlined != (member_inline_size <= 4) {
20084                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
20085                }
20086                let inner_offset;
20087                let mut inner_depth = depth.clone();
20088                if inlined {
20089                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20090                    inner_offset = next_offset;
20091                } else {
20092                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20093                    inner_depth.increment()?;
20094                }
20095                let val_ref = self.source_path.get_or_insert_with(|| {
20096                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
20097                });
20098                fidl::decode!(
20099                    fidl::encoding::BoundedString<1024>,
20100                    D,
20101                    val_ref,
20102                    decoder,
20103                    inner_offset,
20104                    inner_depth
20105                )?;
20106                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20107                {
20108                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
20109                }
20110                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20111                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20112                }
20113            }
20114
20115            next_offset += envelope_size;
20116            _next_ordinal_to_read += 1;
20117            if next_offset >= end_offset {
20118                return Ok(());
20119            }
20120
20121            // Decode unknown envelopes for gaps in ordinals.
20122            while _next_ordinal_to_read < 3 {
20123                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20124                _next_ordinal_to_read += 1;
20125                next_offset += envelope_size;
20126            }
20127
20128            let next_out_of_line = decoder.next_out_of_line();
20129            let handles_before = decoder.remaining_handles();
20130            if let Some((inlined, num_bytes, num_handles)) =
20131                fidl::encoding::decode_envelope_header(decoder, next_offset)?
20132            {
20133                let member_inline_size =
20134                    <DeliveryType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
20135                if inlined != (member_inline_size <= 4) {
20136                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
20137                }
20138                let inner_offset;
20139                let mut inner_depth = depth.clone();
20140                if inlined {
20141                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20142                    inner_offset = next_offset;
20143                } else {
20144                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20145                    inner_depth.increment()?;
20146                }
20147                let val_ref =
20148                    self.delivery.get_or_insert_with(|| fidl::new_empty!(DeliveryType, D));
20149                fidl::decode!(DeliveryType, D, val_ref, decoder, inner_offset, inner_depth)?;
20150                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20151                {
20152                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
20153                }
20154                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20155                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20156                }
20157            }
20158
20159            next_offset += envelope_size;
20160
20161            // Decode the remaining unknown envelopes.
20162            while next_offset < end_offset {
20163                _next_ordinal_to_read += 1;
20164                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20165                next_offset += envelope_size;
20166            }
20167
20168            Ok(())
20169        }
20170    }
20171
20172    impl Resolver {
20173        #[inline(always)]
20174        fn max_ordinal_present(&self) -> u64 {
20175            if let Some(_) = self.source_path {
20176                return 2;
20177            }
20178            if let Some(_) = self.name {
20179                return 1;
20180            }
20181            0
20182        }
20183    }
20184
20185    impl fidl::encoding::ValueTypeMarker for Resolver {
20186        type Borrowed<'a> = &'a Self;
20187        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
20188            value
20189        }
20190    }
20191
20192    unsafe impl fidl::encoding::TypeMarker for Resolver {
20193        type Owned = Self;
20194
20195        #[inline(always)]
20196        fn inline_align(_context: fidl::encoding::Context) -> usize {
20197            8
20198        }
20199
20200        #[inline(always)]
20201        fn inline_size(_context: fidl::encoding::Context) -> usize {
20202            16
20203        }
20204    }
20205
20206    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Resolver, D> for &Resolver {
20207        unsafe fn encode(
20208            self,
20209            encoder: &mut fidl::encoding::Encoder<'_, D>,
20210            offset: usize,
20211            mut depth: fidl::encoding::Depth,
20212        ) -> fidl::Result<()> {
20213            encoder.debug_check_bounds::<Resolver>(offset);
20214            // Vector header
20215            let max_ordinal: u64 = self.max_ordinal_present();
20216            encoder.write_num(max_ordinal, offset);
20217            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
20218            // Calling encoder.out_of_line_offset(0) is not allowed.
20219            if max_ordinal == 0 {
20220                return Ok(());
20221            }
20222            depth.increment()?;
20223            let envelope_size = 8;
20224            let bytes_len = max_ordinal as usize * envelope_size;
20225            #[allow(unused_variables)]
20226            let offset = encoder.out_of_line_offset(bytes_len);
20227            let mut _prev_end_offset: usize = 0;
20228            if 1 > max_ordinal {
20229                return Ok(());
20230            }
20231
20232            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
20233            // are envelope_size bytes.
20234            let cur_offset: usize = (1 - 1) * envelope_size;
20235
20236            // Zero reserved fields.
20237            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
20238
20239            // Safety:
20240            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
20241            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
20242            //   envelope_size bytes, there is always sufficient room.
20243            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
20244                self.name.as_ref().map(
20245                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
20246                ),
20247                encoder,
20248                offset + cur_offset,
20249                depth,
20250            )?;
20251
20252            _prev_end_offset = cur_offset + envelope_size;
20253            if 2 > max_ordinal {
20254                return Ok(());
20255            }
20256
20257            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
20258            // are envelope_size bytes.
20259            let cur_offset: usize = (2 - 1) * envelope_size;
20260
20261            // Zero reserved fields.
20262            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
20263
20264            // Safety:
20265            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
20266            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
20267            //   envelope_size bytes, there is always sufficient room.
20268            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
20269            self.source_path.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
20270            encoder, offset + cur_offset, depth
20271        )?;
20272
20273            _prev_end_offset = cur_offset + envelope_size;
20274
20275            Ok(())
20276        }
20277    }
20278
20279    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Resolver {
20280        #[inline(always)]
20281        fn new_empty() -> Self {
20282            Self::default()
20283        }
20284
20285        unsafe fn decode(
20286            &mut self,
20287            decoder: &mut fidl::encoding::Decoder<'_, D>,
20288            offset: usize,
20289            mut depth: fidl::encoding::Depth,
20290        ) -> fidl::Result<()> {
20291            decoder.debug_check_bounds::<Self>(offset);
20292            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
20293                None => return Err(fidl::Error::NotNullable),
20294                Some(len) => len,
20295            };
20296            // Calling decoder.out_of_line_offset(0) is not allowed.
20297            if len == 0 {
20298                return Ok(());
20299            };
20300            depth.increment()?;
20301            let envelope_size = 8;
20302            let bytes_len = len * envelope_size;
20303            let offset = decoder.out_of_line_offset(bytes_len)?;
20304            // Decode the envelope for each type.
20305            let mut _next_ordinal_to_read = 0;
20306            let mut next_offset = offset;
20307            let end_offset = offset + bytes_len;
20308            _next_ordinal_to_read += 1;
20309            if next_offset >= end_offset {
20310                return Ok(());
20311            }
20312
20313            // Decode unknown envelopes for gaps in ordinals.
20314            while _next_ordinal_to_read < 1 {
20315                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20316                _next_ordinal_to_read += 1;
20317                next_offset += envelope_size;
20318            }
20319
20320            let next_out_of_line = decoder.next_out_of_line();
20321            let handles_before = decoder.remaining_handles();
20322            if let Some((inlined, num_bytes, num_handles)) =
20323                fidl::encoding::decode_envelope_header(decoder, next_offset)?
20324            {
20325                let member_inline_size =
20326                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
20327                        decoder.context,
20328                    );
20329                if inlined != (member_inline_size <= 4) {
20330                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
20331                }
20332                let inner_offset;
20333                let mut inner_depth = depth.clone();
20334                if inlined {
20335                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20336                    inner_offset = next_offset;
20337                } else {
20338                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20339                    inner_depth.increment()?;
20340                }
20341                let val_ref = self
20342                    .name
20343                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
20344                fidl::decode!(
20345                    fidl::encoding::BoundedString<100>,
20346                    D,
20347                    val_ref,
20348                    decoder,
20349                    inner_offset,
20350                    inner_depth
20351                )?;
20352                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20353                {
20354                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
20355                }
20356                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20357                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20358                }
20359            }
20360
20361            next_offset += envelope_size;
20362            _next_ordinal_to_read += 1;
20363            if next_offset >= end_offset {
20364                return Ok(());
20365            }
20366
20367            // Decode unknown envelopes for gaps in ordinals.
20368            while _next_ordinal_to_read < 2 {
20369                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20370                _next_ordinal_to_read += 1;
20371                next_offset += envelope_size;
20372            }
20373
20374            let next_out_of_line = decoder.next_out_of_line();
20375            let handles_before = decoder.remaining_handles();
20376            if let Some((inlined, num_bytes, num_handles)) =
20377                fidl::encoding::decode_envelope_header(decoder, next_offset)?
20378            {
20379                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
20380                if inlined != (member_inline_size <= 4) {
20381                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
20382                }
20383                let inner_offset;
20384                let mut inner_depth = depth.clone();
20385                if inlined {
20386                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20387                    inner_offset = next_offset;
20388                } else {
20389                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20390                    inner_depth.increment()?;
20391                }
20392                let val_ref = self.source_path.get_or_insert_with(|| {
20393                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
20394                });
20395                fidl::decode!(
20396                    fidl::encoding::BoundedString<1024>,
20397                    D,
20398                    val_ref,
20399                    decoder,
20400                    inner_offset,
20401                    inner_depth
20402                )?;
20403                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20404                {
20405                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
20406                }
20407                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20408                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20409                }
20410            }
20411
20412            next_offset += envelope_size;
20413
20414            // Decode the remaining unknown envelopes.
20415            while next_offset < end_offset {
20416                _next_ordinal_to_read += 1;
20417                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20418                next_offset += envelope_size;
20419            }
20420
20421            Ok(())
20422        }
20423    }
20424
20425    impl ResolverRegistration {
20426        #[inline(always)]
20427        fn max_ordinal_present(&self) -> u64 {
20428            if let Some(_) = self.scheme {
20429                return 3;
20430            }
20431            if let Some(_) = self.source {
20432                return 2;
20433            }
20434            if let Some(_) = self.resolver {
20435                return 1;
20436            }
20437            0
20438        }
20439    }
20440
20441    impl fidl::encoding::ValueTypeMarker for ResolverRegistration {
20442        type Borrowed<'a> = &'a Self;
20443        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
20444            value
20445        }
20446    }
20447
20448    unsafe impl fidl::encoding::TypeMarker for ResolverRegistration {
20449        type Owned = Self;
20450
20451        #[inline(always)]
20452        fn inline_align(_context: fidl::encoding::Context) -> usize {
20453            8
20454        }
20455
20456        #[inline(always)]
20457        fn inline_size(_context: fidl::encoding::Context) -> usize {
20458            16
20459        }
20460    }
20461
20462    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ResolverRegistration, D>
20463        for &ResolverRegistration
20464    {
20465        unsafe fn encode(
20466            self,
20467            encoder: &mut fidl::encoding::Encoder<'_, D>,
20468            offset: usize,
20469            mut depth: fidl::encoding::Depth,
20470        ) -> fidl::Result<()> {
20471            encoder.debug_check_bounds::<ResolverRegistration>(offset);
20472            // Vector header
20473            let max_ordinal: u64 = self.max_ordinal_present();
20474            encoder.write_num(max_ordinal, offset);
20475            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
20476            // Calling encoder.out_of_line_offset(0) is not allowed.
20477            if max_ordinal == 0 {
20478                return Ok(());
20479            }
20480            depth.increment()?;
20481            let envelope_size = 8;
20482            let bytes_len = max_ordinal as usize * envelope_size;
20483            #[allow(unused_variables)]
20484            let offset = encoder.out_of_line_offset(bytes_len);
20485            let mut _prev_end_offset: usize = 0;
20486            if 1 > max_ordinal {
20487                return Ok(());
20488            }
20489
20490            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
20491            // are envelope_size bytes.
20492            let cur_offset: usize = (1 - 1) * envelope_size;
20493
20494            // Zero reserved fields.
20495            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
20496
20497            // Safety:
20498            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
20499            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
20500            //   envelope_size bytes, there is always sufficient room.
20501            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
20502                self.resolver.as_ref().map(
20503                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
20504                ),
20505                encoder,
20506                offset + cur_offset,
20507                depth,
20508            )?;
20509
20510            _prev_end_offset = cur_offset + envelope_size;
20511            if 2 > max_ordinal {
20512                return Ok(());
20513            }
20514
20515            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
20516            // are envelope_size bytes.
20517            let cur_offset: usize = (2 - 1) * envelope_size;
20518
20519            // Zero reserved fields.
20520            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
20521
20522            // Safety:
20523            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
20524            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
20525            //   envelope_size bytes, there is always sufficient room.
20526            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
20527                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
20528                encoder,
20529                offset + cur_offset,
20530                depth,
20531            )?;
20532
20533            _prev_end_offset = cur_offset + envelope_size;
20534            if 3 > max_ordinal {
20535                return Ok(());
20536            }
20537
20538            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
20539            // are envelope_size bytes.
20540            let cur_offset: usize = (3 - 1) * envelope_size;
20541
20542            // Zero reserved fields.
20543            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
20544
20545            // Safety:
20546            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
20547            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
20548            //   envelope_size bytes, there is always sufficient room.
20549            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
20550                self.scheme.as_ref().map(
20551                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
20552                ),
20553                encoder,
20554                offset + cur_offset,
20555                depth,
20556            )?;
20557
20558            _prev_end_offset = cur_offset + envelope_size;
20559
20560            Ok(())
20561        }
20562    }
20563
20564    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ResolverRegistration {
20565        #[inline(always)]
20566        fn new_empty() -> Self {
20567            Self::default()
20568        }
20569
20570        unsafe fn decode(
20571            &mut self,
20572            decoder: &mut fidl::encoding::Decoder<'_, D>,
20573            offset: usize,
20574            mut depth: fidl::encoding::Depth,
20575        ) -> fidl::Result<()> {
20576            decoder.debug_check_bounds::<Self>(offset);
20577            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
20578                None => return Err(fidl::Error::NotNullable),
20579                Some(len) => len,
20580            };
20581            // Calling decoder.out_of_line_offset(0) is not allowed.
20582            if len == 0 {
20583                return Ok(());
20584            };
20585            depth.increment()?;
20586            let envelope_size = 8;
20587            let bytes_len = len * envelope_size;
20588            let offset = decoder.out_of_line_offset(bytes_len)?;
20589            // Decode the envelope for each type.
20590            let mut _next_ordinal_to_read = 0;
20591            let mut next_offset = offset;
20592            let end_offset = offset + bytes_len;
20593            _next_ordinal_to_read += 1;
20594            if next_offset >= end_offset {
20595                return Ok(());
20596            }
20597
20598            // Decode unknown envelopes for gaps in ordinals.
20599            while _next_ordinal_to_read < 1 {
20600                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20601                _next_ordinal_to_read += 1;
20602                next_offset += envelope_size;
20603            }
20604
20605            let next_out_of_line = decoder.next_out_of_line();
20606            let handles_before = decoder.remaining_handles();
20607            if let Some((inlined, num_bytes, num_handles)) =
20608                fidl::encoding::decode_envelope_header(decoder, next_offset)?
20609            {
20610                let member_inline_size =
20611                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
20612                        decoder.context,
20613                    );
20614                if inlined != (member_inline_size <= 4) {
20615                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
20616                }
20617                let inner_offset;
20618                let mut inner_depth = depth.clone();
20619                if inlined {
20620                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20621                    inner_offset = next_offset;
20622                } else {
20623                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20624                    inner_depth.increment()?;
20625                }
20626                let val_ref = self
20627                    .resolver
20628                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
20629                fidl::decode!(
20630                    fidl::encoding::BoundedString<100>,
20631                    D,
20632                    val_ref,
20633                    decoder,
20634                    inner_offset,
20635                    inner_depth
20636                )?;
20637                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20638                {
20639                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
20640                }
20641                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20642                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20643                }
20644            }
20645
20646            next_offset += envelope_size;
20647            _next_ordinal_to_read += 1;
20648            if next_offset >= end_offset {
20649                return Ok(());
20650            }
20651
20652            // Decode unknown envelopes for gaps in ordinals.
20653            while _next_ordinal_to_read < 2 {
20654                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20655                _next_ordinal_to_read += 1;
20656                next_offset += envelope_size;
20657            }
20658
20659            let next_out_of_line = decoder.next_out_of_line();
20660            let handles_before = decoder.remaining_handles();
20661            if let Some((inlined, num_bytes, num_handles)) =
20662                fidl::encoding::decode_envelope_header(decoder, next_offset)?
20663            {
20664                let member_inline_size =
20665                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
20666                if inlined != (member_inline_size <= 4) {
20667                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
20668                }
20669                let inner_offset;
20670                let mut inner_depth = depth.clone();
20671                if inlined {
20672                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20673                    inner_offset = next_offset;
20674                } else {
20675                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20676                    inner_depth.increment()?;
20677                }
20678                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
20679                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
20680                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20681                {
20682                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
20683                }
20684                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20685                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20686                }
20687            }
20688
20689            next_offset += envelope_size;
20690            _next_ordinal_to_read += 1;
20691            if next_offset >= end_offset {
20692                return Ok(());
20693            }
20694
20695            // Decode unknown envelopes for gaps in ordinals.
20696            while _next_ordinal_to_read < 3 {
20697                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20698                _next_ordinal_to_read += 1;
20699                next_offset += envelope_size;
20700            }
20701
20702            let next_out_of_line = decoder.next_out_of_line();
20703            let handles_before = decoder.remaining_handles();
20704            if let Some((inlined, num_bytes, num_handles)) =
20705                fidl::encoding::decode_envelope_header(decoder, next_offset)?
20706            {
20707                let member_inline_size =
20708                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
20709                        decoder.context,
20710                    );
20711                if inlined != (member_inline_size <= 4) {
20712                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
20713                }
20714                let inner_offset;
20715                let mut inner_depth = depth.clone();
20716                if inlined {
20717                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20718                    inner_offset = next_offset;
20719                } else {
20720                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20721                    inner_depth.increment()?;
20722                }
20723                let val_ref = self
20724                    .scheme
20725                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
20726                fidl::decode!(
20727                    fidl::encoding::BoundedString<100>,
20728                    D,
20729                    val_ref,
20730                    decoder,
20731                    inner_offset,
20732                    inner_depth
20733                )?;
20734                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20735                {
20736                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
20737                }
20738                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20739                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20740                }
20741            }
20742
20743            next_offset += envelope_size;
20744
20745            // Decode the remaining unknown envelopes.
20746            while next_offset < end_offset {
20747                _next_ordinal_to_read += 1;
20748                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20749                next_offset += envelope_size;
20750            }
20751
20752            Ok(())
20753        }
20754    }
20755
20756    impl Runner {
20757        #[inline(always)]
20758        fn max_ordinal_present(&self) -> u64 {
20759            if let Some(_) = self.source_path {
20760                return 2;
20761            }
20762            if let Some(_) = self.name {
20763                return 1;
20764            }
20765            0
20766        }
20767    }
20768
20769    impl fidl::encoding::ValueTypeMarker for Runner {
20770        type Borrowed<'a> = &'a Self;
20771        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
20772            value
20773        }
20774    }
20775
20776    unsafe impl fidl::encoding::TypeMarker for Runner {
20777        type Owned = Self;
20778
20779        #[inline(always)]
20780        fn inline_align(_context: fidl::encoding::Context) -> usize {
20781            8
20782        }
20783
20784        #[inline(always)]
20785        fn inline_size(_context: fidl::encoding::Context) -> usize {
20786            16
20787        }
20788    }
20789
20790    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Runner, D> for &Runner {
20791        unsafe fn encode(
20792            self,
20793            encoder: &mut fidl::encoding::Encoder<'_, D>,
20794            offset: usize,
20795            mut depth: fidl::encoding::Depth,
20796        ) -> fidl::Result<()> {
20797            encoder.debug_check_bounds::<Runner>(offset);
20798            // Vector header
20799            let max_ordinal: u64 = self.max_ordinal_present();
20800            encoder.write_num(max_ordinal, offset);
20801            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
20802            // Calling encoder.out_of_line_offset(0) is not allowed.
20803            if max_ordinal == 0 {
20804                return Ok(());
20805            }
20806            depth.increment()?;
20807            let envelope_size = 8;
20808            let bytes_len = max_ordinal as usize * envelope_size;
20809            #[allow(unused_variables)]
20810            let offset = encoder.out_of_line_offset(bytes_len);
20811            let mut _prev_end_offset: usize = 0;
20812            if 1 > max_ordinal {
20813                return Ok(());
20814            }
20815
20816            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
20817            // are envelope_size bytes.
20818            let cur_offset: usize = (1 - 1) * envelope_size;
20819
20820            // Zero reserved fields.
20821            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
20822
20823            // Safety:
20824            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
20825            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
20826            //   envelope_size bytes, there is always sufficient room.
20827            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
20828                self.name.as_ref().map(
20829                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
20830                ),
20831                encoder,
20832                offset + cur_offset,
20833                depth,
20834            )?;
20835
20836            _prev_end_offset = cur_offset + envelope_size;
20837            if 2 > max_ordinal {
20838                return Ok(());
20839            }
20840
20841            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
20842            // are envelope_size bytes.
20843            let cur_offset: usize = (2 - 1) * envelope_size;
20844
20845            // Zero reserved fields.
20846            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
20847
20848            // Safety:
20849            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
20850            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
20851            //   envelope_size bytes, there is always sufficient room.
20852            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
20853            self.source_path.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
20854            encoder, offset + cur_offset, depth
20855        )?;
20856
20857            _prev_end_offset = cur_offset + envelope_size;
20858
20859            Ok(())
20860        }
20861    }
20862
20863    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Runner {
20864        #[inline(always)]
20865        fn new_empty() -> Self {
20866            Self::default()
20867        }
20868
20869        unsafe fn decode(
20870            &mut self,
20871            decoder: &mut fidl::encoding::Decoder<'_, D>,
20872            offset: usize,
20873            mut depth: fidl::encoding::Depth,
20874        ) -> fidl::Result<()> {
20875            decoder.debug_check_bounds::<Self>(offset);
20876            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
20877                None => return Err(fidl::Error::NotNullable),
20878                Some(len) => len,
20879            };
20880            // Calling decoder.out_of_line_offset(0) is not allowed.
20881            if len == 0 {
20882                return Ok(());
20883            };
20884            depth.increment()?;
20885            let envelope_size = 8;
20886            let bytes_len = len * envelope_size;
20887            let offset = decoder.out_of_line_offset(bytes_len)?;
20888            // Decode the envelope for each type.
20889            let mut _next_ordinal_to_read = 0;
20890            let mut next_offset = offset;
20891            let end_offset = offset + bytes_len;
20892            _next_ordinal_to_read += 1;
20893            if next_offset >= end_offset {
20894                return Ok(());
20895            }
20896
20897            // Decode unknown envelopes for gaps in ordinals.
20898            while _next_ordinal_to_read < 1 {
20899                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20900                _next_ordinal_to_read += 1;
20901                next_offset += envelope_size;
20902            }
20903
20904            let next_out_of_line = decoder.next_out_of_line();
20905            let handles_before = decoder.remaining_handles();
20906            if let Some((inlined, num_bytes, num_handles)) =
20907                fidl::encoding::decode_envelope_header(decoder, next_offset)?
20908            {
20909                let member_inline_size =
20910                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
20911                        decoder.context,
20912                    );
20913                if inlined != (member_inline_size <= 4) {
20914                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
20915                }
20916                let inner_offset;
20917                let mut inner_depth = depth.clone();
20918                if inlined {
20919                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20920                    inner_offset = next_offset;
20921                } else {
20922                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20923                    inner_depth.increment()?;
20924                }
20925                let val_ref = self
20926                    .name
20927                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
20928                fidl::decode!(
20929                    fidl::encoding::BoundedString<100>,
20930                    D,
20931                    val_ref,
20932                    decoder,
20933                    inner_offset,
20934                    inner_depth
20935                )?;
20936                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20937                {
20938                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
20939                }
20940                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20941                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20942                }
20943            }
20944
20945            next_offset += envelope_size;
20946            _next_ordinal_to_read += 1;
20947            if next_offset >= end_offset {
20948                return Ok(());
20949            }
20950
20951            // Decode unknown envelopes for gaps in ordinals.
20952            while _next_ordinal_to_read < 2 {
20953                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20954                _next_ordinal_to_read += 1;
20955                next_offset += envelope_size;
20956            }
20957
20958            let next_out_of_line = decoder.next_out_of_line();
20959            let handles_before = decoder.remaining_handles();
20960            if let Some((inlined, num_bytes, num_handles)) =
20961                fidl::encoding::decode_envelope_header(decoder, next_offset)?
20962            {
20963                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
20964                if inlined != (member_inline_size <= 4) {
20965                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
20966                }
20967                let inner_offset;
20968                let mut inner_depth = depth.clone();
20969                if inlined {
20970                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20971                    inner_offset = next_offset;
20972                } else {
20973                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20974                    inner_depth.increment()?;
20975                }
20976                let val_ref = self.source_path.get_or_insert_with(|| {
20977                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
20978                });
20979                fidl::decode!(
20980                    fidl::encoding::BoundedString<1024>,
20981                    D,
20982                    val_ref,
20983                    decoder,
20984                    inner_offset,
20985                    inner_depth
20986                )?;
20987                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20988                {
20989                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
20990                }
20991                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20992                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20993                }
20994            }
20995
20996            next_offset += envelope_size;
20997
20998            // Decode the remaining unknown envelopes.
20999            while next_offset < end_offset {
21000                _next_ordinal_to_read += 1;
21001                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21002                next_offset += envelope_size;
21003            }
21004
21005            Ok(())
21006        }
21007    }
21008
21009    impl RunnerRegistration {
21010        #[inline(always)]
21011        fn max_ordinal_present(&self) -> u64 {
21012            if let Some(_) = self.target_name {
21013                return 3;
21014            }
21015            if let Some(_) = self.source {
21016                return 2;
21017            }
21018            if let Some(_) = self.source_name {
21019                return 1;
21020            }
21021            0
21022        }
21023    }
21024
21025    impl fidl::encoding::ValueTypeMarker for RunnerRegistration {
21026        type Borrowed<'a> = &'a Self;
21027        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
21028            value
21029        }
21030    }
21031
21032    unsafe impl fidl::encoding::TypeMarker for RunnerRegistration {
21033        type Owned = Self;
21034
21035        #[inline(always)]
21036        fn inline_align(_context: fidl::encoding::Context) -> usize {
21037            8
21038        }
21039
21040        #[inline(always)]
21041        fn inline_size(_context: fidl::encoding::Context) -> usize {
21042            16
21043        }
21044    }
21045
21046    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<RunnerRegistration, D>
21047        for &RunnerRegistration
21048    {
21049        unsafe fn encode(
21050            self,
21051            encoder: &mut fidl::encoding::Encoder<'_, D>,
21052            offset: usize,
21053            mut depth: fidl::encoding::Depth,
21054        ) -> fidl::Result<()> {
21055            encoder.debug_check_bounds::<RunnerRegistration>(offset);
21056            // Vector header
21057            let max_ordinal: u64 = self.max_ordinal_present();
21058            encoder.write_num(max_ordinal, offset);
21059            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
21060            // Calling encoder.out_of_line_offset(0) is not allowed.
21061            if max_ordinal == 0 {
21062                return Ok(());
21063            }
21064            depth.increment()?;
21065            let envelope_size = 8;
21066            let bytes_len = max_ordinal as usize * envelope_size;
21067            #[allow(unused_variables)]
21068            let offset = encoder.out_of_line_offset(bytes_len);
21069            let mut _prev_end_offset: usize = 0;
21070            if 1 > max_ordinal {
21071                return Ok(());
21072            }
21073
21074            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
21075            // are envelope_size bytes.
21076            let cur_offset: usize = (1 - 1) * envelope_size;
21077
21078            // Zero reserved fields.
21079            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
21080
21081            // Safety:
21082            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
21083            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
21084            //   envelope_size bytes, there is always sufficient room.
21085            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
21086                self.source_name.as_ref().map(
21087                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
21088                ),
21089                encoder,
21090                offset + cur_offset,
21091                depth,
21092            )?;
21093
21094            _prev_end_offset = cur_offset + envelope_size;
21095            if 2 > max_ordinal {
21096                return Ok(());
21097            }
21098
21099            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
21100            // are envelope_size bytes.
21101            let cur_offset: usize = (2 - 1) * envelope_size;
21102
21103            // Zero reserved fields.
21104            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
21105
21106            // Safety:
21107            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
21108            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
21109            //   envelope_size bytes, there is always sufficient room.
21110            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
21111                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
21112                encoder,
21113                offset + cur_offset,
21114                depth,
21115            )?;
21116
21117            _prev_end_offset = cur_offset + envelope_size;
21118            if 3 > max_ordinal {
21119                return Ok(());
21120            }
21121
21122            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
21123            // are envelope_size bytes.
21124            let cur_offset: usize = (3 - 1) * envelope_size;
21125
21126            // Zero reserved fields.
21127            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
21128
21129            // Safety:
21130            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
21131            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
21132            //   envelope_size bytes, there is always sufficient room.
21133            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
21134                self.target_name.as_ref().map(
21135                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
21136                ),
21137                encoder,
21138                offset + cur_offset,
21139                depth,
21140            )?;
21141
21142            _prev_end_offset = cur_offset + envelope_size;
21143
21144            Ok(())
21145        }
21146    }
21147
21148    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RunnerRegistration {
21149        #[inline(always)]
21150        fn new_empty() -> Self {
21151            Self::default()
21152        }
21153
21154        unsafe fn decode(
21155            &mut self,
21156            decoder: &mut fidl::encoding::Decoder<'_, D>,
21157            offset: usize,
21158            mut depth: fidl::encoding::Depth,
21159        ) -> fidl::Result<()> {
21160            decoder.debug_check_bounds::<Self>(offset);
21161            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
21162                None => return Err(fidl::Error::NotNullable),
21163                Some(len) => len,
21164            };
21165            // Calling decoder.out_of_line_offset(0) is not allowed.
21166            if len == 0 {
21167                return Ok(());
21168            };
21169            depth.increment()?;
21170            let envelope_size = 8;
21171            let bytes_len = len * envelope_size;
21172            let offset = decoder.out_of_line_offset(bytes_len)?;
21173            // Decode the envelope for each type.
21174            let mut _next_ordinal_to_read = 0;
21175            let mut next_offset = offset;
21176            let end_offset = offset + bytes_len;
21177            _next_ordinal_to_read += 1;
21178            if next_offset >= end_offset {
21179                return Ok(());
21180            }
21181
21182            // Decode unknown envelopes for gaps in ordinals.
21183            while _next_ordinal_to_read < 1 {
21184                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21185                _next_ordinal_to_read += 1;
21186                next_offset += envelope_size;
21187            }
21188
21189            let next_out_of_line = decoder.next_out_of_line();
21190            let handles_before = decoder.remaining_handles();
21191            if let Some((inlined, num_bytes, num_handles)) =
21192                fidl::encoding::decode_envelope_header(decoder, next_offset)?
21193            {
21194                let member_inline_size =
21195                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
21196                        decoder.context,
21197                    );
21198                if inlined != (member_inline_size <= 4) {
21199                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
21200                }
21201                let inner_offset;
21202                let mut inner_depth = depth.clone();
21203                if inlined {
21204                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21205                    inner_offset = next_offset;
21206                } else {
21207                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21208                    inner_depth.increment()?;
21209                }
21210                let val_ref = self
21211                    .source_name
21212                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
21213                fidl::decode!(
21214                    fidl::encoding::BoundedString<100>,
21215                    D,
21216                    val_ref,
21217                    decoder,
21218                    inner_offset,
21219                    inner_depth
21220                )?;
21221                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21222                {
21223                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
21224                }
21225                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21226                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21227                }
21228            }
21229
21230            next_offset += envelope_size;
21231            _next_ordinal_to_read += 1;
21232            if next_offset >= end_offset {
21233                return Ok(());
21234            }
21235
21236            // Decode unknown envelopes for gaps in ordinals.
21237            while _next_ordinal_to_read < 2 {
21238                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21239                _next_ordinal_to_read += 1;
21240                next_offset += envelope_size;
21241            }
21242
21243            let next_out_of_line = decoder.next_out_of_line();
21244            let handles_before = decoder.remaining_handles();
21245            if let Some((inlined, num_bytes, num_handles)) =
21246                fidl::encoding::decode_envelope_header(decoder, next_offset)?
21247            {
21248                let member_inline_size =
21249                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
21250                if inlined != (member_inline_size <= 4) {
21251                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
21252                }
21253                let inner_offset;
21254                let mut inner_depth = depth.clone();
21255                if inlined {
21256                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21257                    inner_offset = next_offset;
21258                } else {
21259                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21260                    inner_depth.increment()?;
21261                }
21262                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
21263                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
21264                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21265                {
21266                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
21267                }
21268                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21269                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21270                }
21271            }
21272
21273            next_offset += envelope_size;
21274            _next_ordinal_to_read += 1;
21275            if next_offset >= end_offset {
21276                return Ok(());
21277            }
21278
21279            // Decode unknown envelopes for gaps in ordinals.
21280            while _next_ordinal_to_read < 3 {
21281                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21282                _next_ordinal_to_read += 1;
21283                next_offset += envelope_size;
21284            }
21285
21286            let next_out_of_line = decoder.next_out_of_line();
21287            let handles_before = decoder.remaining_handles();
21288            if let Some((inlined, num_bytes, num_handles)) =
21289                fidl::encoding::decode_envelope_header(decoder, next_offset)?
21290            {
21291                let member_inline_size =
21292                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
21293                        decoder.context,
21294                    );
21295                if inlined != (member_inline_size <= 4) {
21296                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
21297                }
21298                let inner_offset;
21299                let mut inner_depth = depth.clone();
21300                if inlined {
21301                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21302                    inner_offset = next_offset;
21303                } else {
21304                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21305                    inner_depth.increment()?;
21306                }
21307                let val_ref = self
21308                    .target_name
21309                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
21310                fidl::decode!(
21311                    fidl::encoding::BoundedString<100>,
21312                    D,
21313                    val_ref,
21314                    decoder,
21315                    inner_offset,
21316                    inner_depth
21317                )?;
21318                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21319                {
21320                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
21321                }
21322                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21323                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21324                }
21325            }
21326
21327            next_offset += envelope_size;
21328
21329            // Decode the remaining unknown envelopes.
21330            while next_offset < end_offset {
21331                _next_ordinal_to_read += 1;
21332                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21333                next_offset += envelope_size;
21334            }
21335
21336            Ok(())
21337        }
21338    }
21339
21340    impl Service {
21341        #[inline(always)]
21342        fn max_ordinal_present(&self) -> u64 {
21343            if let Some(_) = self.source_path {
21344                return 2;
21345            }
21346            if let Some(_) = self.name {
21347                return 1;
21348            }
21349            0
21350        }
21351    }
21352
21353    impl fidl::encoding::ValueTypeMarker for Service {
21354        type Borrowed<'a> = &'a Self;
21355        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
21356            value
21357        }
21358    }
21359
21360    unsafe impl fidl::encoding::TypeMarker for Service {
21361        type Owned = Self;
21362
21363        #[inline(always)]
21364        fn inline_align(_context: fidl::encoding::Context) -> usize {
21365            8
21366        }
21367
21368        #[inline(always)]
21369        fn inline_size(_context: fidl::encoding::Context) -> usize {
21370            16
21371        }
21372    }
21373
21374    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Service, D> for &Service {
21375        unsafe fn encode(
21376            self,
21377            encoder: &mut fidl::encoding::Encoder<'_, D>,
21378            offset: usize,
21379            mut depth: fidl::encoding::Depth,
21380        ) -> fidl::Result<()> {
21381            encoder.debug_check_bounds::<Service>(offset);
21382            // Vector header
21383            let max_ordinal: u64 = self.max_ordinal_present();
21384            encoder.write_num(max_ordinal, offset);
21385            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
21386            // Calling encoder.out_of_line_offset(0) is not allowed.
21387            if max_ordinal == 0 {
21388                return Ok(());
21389            }
21390            depth.increment()?;
21391            let envelope_size = 8;
21392            let bytes_len = max_ordinal as usize * envelope_size;
21393            #[allow(unused_variables)]
21394            let offset = encoder.out_of_line_offset(bytes_len);
21395            let mut _prev_end_offset: usize = 0;
21396            if 1 > max_ordinal {
21397                return Ok(());
21398            }
21399
21400            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
21401            // are envelope_size bytes.
21402            let cur_offset: usize = (1 - 1) * envelope_size;
21403
21404            // Zero reserved fields.
21405            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
21406
21407            // Safety:
21408            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
21409            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
21410            //   envelope_size bytes, there is always sufficient room.
21411            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
21412                self.name.as_ref().map(
21413                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
21414                ),
21415                encoder,
21416                offset + cur_offset,
21417                depth,
21418            )?;
21419
21420            _prev_end_offset = cur_offset + envelope_size;
21421            if 2 > max_ordinal {
21422                return Ok(());
21423            }
21424
21425            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
21426            // are envelope_size bytes.
21427            let cur_offset: usize = (2 - 1) * envelope_size;
21428
21429            // Zero reserved fields.
21430            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
21431
21432            // Safety:
21433            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
21434            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
21435            //   envelope_size bytes, there is always sufficient room.
21436            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
21437            self.source_path.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
21438            encoder, offset + cur_offset, depth
21439        )?;
21440
21441            _prev_end_offset = cur_offset + envelope_size;
21442
21443            Ok(())
21444        }
21445    }
21446
21447    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Service {
21448        #[inline(always)]
21449        fn new_empty() -> Self {
21450            Self::default()
21451        }
21452
21453        unsafe fn decode(
21454            &mut self,
21455            decoder: &mut fidl::encoding::Decoder<'_, D>,
21456            offset: usize,
21457            mut depth: fidl::encoding::Depth,
21458        ) -> fidl::Result<()> {
21459            decoder.debug_check_bounds::<Self>(offset);
21460            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
21461                None => return Err(fidl::Error::NotNullable),
21462                Some(len) => len,
21463            };
21464            // Calling decoder.out_of_line_offset(0) is not allowed.
21465            if len == 0 {
21466                return Ok(());
21467            };
21468            depth.increment()?;
21469            let envelope_size = 8;
21470            let bytes_len = len * envelope_size;
21471            let offset = decoder.out_of_line_offset(bytes_len)?;
21472            // Decode the envelope for each type.
21473            let mut _next_ordinal_to_read = 0;
21474            let mut next_offset = offset;
21475            let end_offset = offset + bytes_len;
21476            _next_ordinal_to_read += 1;
21477            if next_offset >= end_offset {
21478                return Ok(());
21479            }
21480
21481            // Decode unknown envelopes for gaps in ordinals.
21482            while _next_ordinal_to_read < 1 {
21483                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21484                _next_ordinal_to_read += 1;
21485                next_offset += envelope_size;
21486            }
21487
21488            let next_out_of_line = decoder.next_out_of_line();
21489            let handles_before = decoder.remaining_handles();
21490            if let Some((inlined, num_bytes, num_handles)) =
21491                fidl::encoding::decode_envelope_header(decoder, next_offset)?
21492            {
21493                let member_inline_size =
21494                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
21495                        decoder.context,
21496                    );
21497                if inlined != (member_inline_size <= 4) {
21498                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
21499                }
21500                let inner_offset;
21501                let mut inner_depth = depth.clone();
21502                if inlined {
21503                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21504                    inner_offset = next_offset;
21505                } else {
21506                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21507                    inner_depth.increment()?;
21508                }
21509                let val_ref = self
21510                    .name
21511                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
21512                fidl::decode!(
21513                    fidl::encoding::BoundedString<100>,
21514                    D,
21515                    val_ref,
21516                    decoder,
21517                    inner_offset,
21518                    inner_depth
21519                )?;
21520                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21521                {
21522                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
21523                }
21524                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21525                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21526                }
21527            }
21528
21529            next_offset += envelope_size;
21530            _next_ordinal_to_read += 1;
21531            if next_offset >= end_offset {
21532                return Ok(());
21533            }
21534
21535            // Decode unknown envelopes for gaps in ordinals.
21536            while _next_ordinal_to_read < 2 {
21537                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21538                _next_ordinal_to_read += 1;
21539                next_offset += envelope_size;
21540            }
21541
21542            let next_out_of_line = decoder.next_out_of_line();
21543            let handles_before = decoder.remaining_handles();
21544            if let Some((inlined, num_bytes, num_handles)) =
21545                fidl::encoding::decode_envelope_header(decoder, next_offset)?
21546            {
21547                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
21548                if inlined != (member_inline_size <= 4) {
21549                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
21550                }
21551                let inner_offset;
21552                let mut inner_depth = depth.clone();
21553                if inlined {
21554                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21555                    inner_offset = next_offset;
21556                } else {
21557                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21558                    inner_depth.increment()?;
21559                }
21560                let val_ref = self.source_path.get_or_insert_with(|| {
21561                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
21562                });
21563                fidl::decode!(
21564                    fidl::encoding::BoundedString<1024>,
21565                    D,
21566                    val_ref,
21567                    decoder,
21568                    inner_offset,
21569                    inner_depth
21570                )?;
21571                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21572                {
21573                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
21574                }
21575                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21576                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21577                }
21578            }
21579
21580            next_offset += envelope_size;
21581
21582            // Decode the remaining unknown envelopes.
21583            while next_offset < end_offset {
21584                _next_ordinal_to_read += 1;
21585                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21586                next_offset += envelope_size;
21587            }
21588
21589            Ok(())
21590        }
21591    }
21592
21593    impl Storage {
21594        #[inline(always)]
21595        fn max_ordinal_present(&self) -> u64 {
21596            if let Some(_) = self.storage_id {
21597                return 5;
21598            }
21599            if let Some(_) = self.subdir {
21600                return 4;
21601            }
21602            if let Some(_) = self.backing_dir {
21603                return 3;
21604            }
21605            if let Some(_) = self.source {
21606                return 2;
21607            }
21608            if let Some(_) = self.name {
21609                return 1;
21610            }
21611            0
21612        }
21613    }
21614
21615    impl fidl::encoding::ValueTypeMarker for Storage {
21616        type Borrowed<'a> = &'a Self;
21617        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
21618            value
21619        }
21620    }
21621
21622    unsafe impl fidl::encoding::TypeMarker for Storage {
21623        type Owned = Self;
21624
21625        #[inline(always)]
21626        fn inline_align(_context: fidl::encoding::Context) -> usize {
21627            8
21628        }
21629
21630        #[inline(always)]
21631        fn inline_size(_context: fidl::encoding::Context) -> usize {
21632            16
21633        }
21634    }
21635
21636    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Storage, D> for &Storage {
21637        unsafe fn encode(
21638            self,
21639            encoder: &mut fidl::encoding::Encoder<'_, D>,
21640            offset: usize,
21641            mut depth: fidl::encoding::Depth,
21642        ) -> fidl::Result<()> {
21643            encoder.debug_check_bounds::<Storage>(offset);
21644            // Vector header
21645            let max_ordinal: u64 = self.max_ordinal_present();
21646            encoder.write_num(max_ordinal, offset);
21647            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
21648            // Calling encoder.out_of_line_offset(0) is not allowed.
21649            if max_ordinal == 0 {
21650                return Ok(());
21651            }
21652            depth.increment()?;
21653            let envelope_size = 8;
21654            let bytes_len = max_ordinal as usize * envelope_size;
21655            #[allow(unused_variables)]
21656            let offset = encoder.out_of_line_offset(bytes_len);
21657            let mut _prev_end_offset: usize = 0;
21658            if 1 > max_ordinal {
21659                return Ok(());
21660            }
21661
21662            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
21663            // are envelope_size bytes.
21664            let cur_offset: usize = (1 - 1) * envelope_size;
21665
21666            // Zero reserved fields.
21667            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
21668
21669            // Safety:
21670            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
21671            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
21672            //   envelope_size bytes, there is always sufficient room.
21673            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
21674                self.name.as_ref().map(
21675                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
21676                ),
21677                encoder,
21678                offset + cur_offset,
21679                depth,
21680            )?;
21681
21682            _prev_end_offset = cur_offset + envelope_size;
21683            if 2 > max_ordinal {
21684                return Ok(());
21685            }
21686
21687            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
21688            // are envelope_size bytes.
21689            let cur_offset: usize = (2 - 1) * envelope_size;
21690
21691            // Zero reserved fields.
21692            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
21693
21694            // Safety:
21695            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
21696            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
21697            //   envelope_size bytes, there is always sufficient room.
21698            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
21699                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
21700                encoder,
21701                offset + cur_offset,
21702                depth,
21703            )?;
21704
21705            _prev_end_offset = cur_offset + envelope_size;
21706            if 3 > max_ordinal {
21707                return Ok(());
21708            }
21709
21710            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
21711            // are envelope_size bytes.
21712            let cur_offset: usize = (3 - 1) * envelope_size;
21713
21714            // Zero reserved fields.
21715            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
21716
21717            // Safety:
21718            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
21719            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
21720            //   envelope_size bytes, there is always sufficient room.
21721            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
21722                self.backing_dir.as_ref().map(
21723                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
21724                ),
21725                encoder,
21726                offset + cur_offset,
21727                depth,
21728            )?;
21729
21730            _prev_end_offset = cur_offset + envelope_size;
21731            if 4 > max_ordinal {
21732                return Ok(());
21733            }
21734
21735            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
21736            // are envelope_size bytes.
21737            let cur_offset: usize = (4 - 1) * envelope_size;
21738
21739            // Zero reserved fields.
21740            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
21741
21742            // Safety:
21743            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
21744            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
21745            //   envelope_size bytes, there is always sufficient room.
21746            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
21747            self.subdir.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
21748            encoder, offset + cur_offset, depth
21749        )?;
21750
21751            _prev_end_offset = cur_offset + envelope_size;
21752            if 5 > max_ordinal {
21753                return Ok(());
21754            }
21755
21756            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
21757            // are envelope_size bytes.
21758            let cur_offset: usize = (5 - 1) * envelope_size;
21759
21760            // Zero reserved fields.
21761            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
21762
21763            // Safety:
21764            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
21765            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
21766            //   envelope_size bytes, there is always sufficient room.
21767            fidl::encoding::encode_in_envelope_optional::<StorageId, D>(
21768                self.storage_id
21769                    .as_ref()
21770                    .map(<StorageId as fidl::encoding::ValueTypeMarker>::borrow),
21771                encoder,
21772                offset + cur_offset,
21773                depth,
21774            )?;
21775
21776            _prev_end_offset = cur_offset + envelope_size;
21777
21778            Ok(())
21779        }
21780    }
21781
21782    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Storage {
21783        #[inline(always)]
21784        fn new_empty() -> Self {
21785            Self::default()
21786        }
21787
21788        unsafe fn decode(
21789            &mut self,
21790            decoder: &mut fidl::encoding::Decoder<'_, D>,
21791            offset: usize,
21792            mut depth: fidl::encoding::Depth,
21793        ) -> fidl::Result<()> {
21794            decoder.debug_check_bounds::<Self>(offset);
21795            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
21796                None => return Err(fidl::Error::NotNullable),
21797                Some(len) => len,
21798            };
21799            // Calling decoder.out_of_line_offset(0) is not allowed.
21800            if len == 0 {
21801                return Ok(());
21802            };
21803            depth.increment()?;
21804            let envelope_size = 8;
21805            let bytes_len = len * envelope_size;
21806            let offset = decoder.out_of_line_offset(bytes_len)?;
21807            // Decode the envelope for each type.
21808            let mut _next_ordinal_to_read = 0;
21809            let mut next_offset = offset;
21810            let end_offset = offset + bytes_len;
21811            _next_ordinal_to_read += 1;
21812            if next_offset >= end_offset {
21813                return Ok(());
21814            }
21815
21816            // Decode unknown envelopes for gaps in ordinals.
21817            while _next_ordinal_to_read < 1 {
21818                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21819                _next_ordinal_to_read += 1;
21820                next_offset += envelope_size;
21821            }
21822
21823            let next_out_of_line = decoder.next_out_of_line();
21824            let handles_before = decoder.remaining_handles();
21825            if let Some((inlined, num_bytes, num_handles)) =
21826                fidl::encoding::decode_envelope_header(decoder, next_offset)?
21827            {
21828                let member_inline_size =
21829                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
21830                        decoder.context,
21831                    );
21832                if inlined != (member_inline_size <= 4) {
21833                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
21834                }
21835                let inner_offset;
21836                let mut inner_depth = depth.clone();
21837                if inlined {
21838                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21839                    inner_offset = next_offset;
21840                } else {
21841                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21842                    inner_depth.increment()?;
21843                }
21844                let val_ref = self
21845                    .name
21846                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
21847                fidl::decode!(
21848                    fidl::encoding::BoundedString<100>,
21849                    D,
21850                    val_ref,
21851                    decoder,
21852                    inner_offset,
21853                    inner_depth
21854                )?;
21855                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21856                {
21857                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
21858                }
21859                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21860                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21861                }
21862            }
21863
21864            next_offset += envelope_size;
21865            _next_ordinal_to_read += 1;
21866            if next_offset >= end_offset {
21867                return Ok(());
21868            }
21869
21870            // Decode unknown envelopes for gaps in ordinals.
21871            while _next_ordinal_to_read < 2 {
21872                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21873                _next_ordinal_to_read += 1;
21874                next_offset += envelope_size;
21875            }
21876
21877            let next_out_of_line = decoder.next_out_of_line();
21878            let handles_before = decoder.remaining_handles();
21879            if let Some((inlined, num_bytes, num_handles)) =
21880                fidl::encoding::decode_envelope_header(decoder, next_offset)?
21881            {
21882                let member_inline_size =
21883                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
21884                if inlined != (member_inline_size <= 4) {
21885                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
21886                }
21887                let inner_offset;
21888                let mut inner_depth = depth.clone();
21889                if inlined {
21890                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21891                    inner_offset = next_offset;
21892                } else {
21893                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21894                    inner_depth.increment()?;
21895                }
21896                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
21897                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
21898                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21899                {
21900                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
21901                }
21902                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21903                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21904                }
21905            }
21906
21907            next_offset += envelope_size;
21908            _next_ordinal_to_read += 1;
21909            if next_offset >= end_offset {
21910                return Ok(());
21911            }
21912
21913            // Decode unknown envelopes for gaps in ordinals.
21914            while _next_ordinal_to_read < 3 {
21915                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21916                _next_ordinal_to_read += 1;
21917                next_offset += envelope_size;
21918            }
21919
21920            let next_out_of_line = decoder.next_out_of_line();
21921            let handles_before = decoder.remaining_handles();
21922            if let Some((inlined, num_bytes, num_handles)) =
21923                fidl::encoding::decode_envelope_header(decoder, next_offset)?
21924            {
21925                let member_inline_size =
21926                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
21927                        decoder.context,
21928                    );
21929                if inlined != (member_inline_size <= 4) {
21930                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
21931                }
21932                let inner_offset;
21933                let mut inner_depth = depth.clone();
21934                if inlined {
21935                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21936                    inner_offset = next_offset;
21937                } else {
21938                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21939                    inner_depth.increment()?;
21940                }
21941                let val_ref = self
21942                    .backing_dir
21943                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
21944                fidl::decode!(
21945                    fidl::encoding::BoundedString<100>,
21946                    D,
21947                    val_ref,
21948                    decoder,
21949                    inner_offset,
21950                    inner_depth
21951                )?;
21952                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21953                {
21954                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
21955                }
21956                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21957                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21958                }
21959            }
21960
21961            next_offset += envelope_size;
21962            _next_ordinal_to_read += 1;
21963            if next_offset >= end_offset {
21964                return Ok(());
21965            }
21966
21967            // Decode unknown envelopes for gaps in ordinals.
21968            while _next_ordinal_to_read < 4 {
21969                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21970                _next_ordinal_to_read += 1;
21971                next_offset += envelope_size;
21972            }
21973
21974            let next_out_of_line = decoder.next_out_of_line();
21975            let handles_before = decoder.remaining_handles();
21976            if let Some((inlined, num_bytes, num_handles)) =
21977                fidl::encoding::decode_envelope_header(decoder, next_offset)?
21978            {
21979                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
21980                if inlined != (member_inline_size <= 4) {
21981                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
21982                }
21983                let inner_offset;
21984                let mut inner_depth = depth.clone();
21985                if inlined {
21986                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21987                    inner_offset = next_offset;
21988                } else {
21989                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21990                    inner_depth.increment()?;
21991                }
21992                let val_ref = self.subdir.get_or_insert_with(|| {
21993                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
21994                });
21995                fidl::decode!(
21996                    fidl::encoding::BoundedString<1024>,
21997                    D,
21998                    val_ref,
21999                    decoder,
22000                    inner_offset,
22001                    inner_depth
22002                )?;
22003                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22004                {
22005                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
22006                }
22007                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22008                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22009                }
22010            }
22011
22012            next_offset += envelope_size;
22013            _next_ordinal_to_read += 1;
22014            if next_offset >= end_offset {
22015                return Ok(());
22016            }
22017
22018            // Decode unknown envelopes for gaps in ordinals.
22019            while _next_ordinal_to_read < 5 {
22020                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22021                _next_ordinal_to_read += 1;
22022                next_offset += envelope_size;
22023            }
22024
22025            let next_out_of_line = decoder.next_out_of_line();
22026            let handles_before = decoder.remaining_handles();
22027            if let Some((inlined, num_bytes, num_handles)) =
22028                fidl::encoding::decode_envelope_header(decoder, next_offset)?
22029            {
22030                let member_inline_size =
22031                    <StorageId as fidl::encoding::TypeMarker>::inline_size(decoder.context);
22032                if inlined != (member_inline_size <= 4) {
22033                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
22034                }
22035                let inner_offset;
22036                let mut inner_depth = depth.clone();
22037                if inlined {
22038                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22039                    inner_offset = next_offset;
22040                } else {
22041                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22042                    inner_depth.increment()?;
22043                }
22044                let val_ref = self.storage_id.get_or_insert_with(|| fidl::new_empty!(StorageId, D));
22045                fidl::decode!(StorageId, D, val_ref, decoder, inner_offset, inner_depth)?;
22046                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22047                {
22048                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
22049                }
22050                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22051                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22052                }
22053            }
22054
22055            next_offset += envelope_size;
22056
22057            // Decode the remaining unknown envelopes.
22058            while next_offset < end_offset {
22059                _next_ordinal_to_read += 1;
22060                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22061                next_offset += envelope_size;
22062            }
22063
22064            Ok(())
22065        }
22066    }
22067
22068    impl UseConfiguration {
22069        #[inline(always)]
22070        fn max_ordinal_present(&self) -> u64 {
22071            if let Some(_) = self.source_dictionary {
22072                return 7;
22073            }
22074            if let Some(_) = self.default {
22075                return 6;
22076            }
22077            if let Some(_) = self.type_ {
22078                return 5;
22079            }
22080            if let Some(_) = self.availability {
22081                return 4;
22082            }
22083            if let Some(_) = self.target_name {
22084                return 3;
22085            }
22086            if let Some(_) = self.source_name {
22087                return 2;
22088            }
22089            if let Some(_) = self.source {
22090                return 1;
22091            }
22092            0
22093        }
22094    }
22095
22096    impl fidl::encoding::ValueTypeMarker for UseConfiguration {
22097        type Borrowed<'a> = &'a Self;
22098        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
22099            value
22100        }
22101    }
22102
22103    unsafe impl fidl::encoding::TypeMarker for UseConfiguration {
22104        type Owned = Self;
22105
22106        #[inline(always)]
22107        fn inline_align(_context: fidl::encoding::Context) -> usize {
22108            8
22109        }
22110
22111        #[inline(always)]
22112        fn inline_size(_context: fidl::encoding::Context) -> usize {
22113            16
22114        }
22115    }
22116
22117    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<UseConfiguration, D>
22118        for &UseConfiguration
22119    {
22120        unsafe fn encode(
22121            self,
22122            encoder: &mut fidl::encoding::Encoder<'_, D>,
22123            offset: usize,
22124            mut depth: fidl::encoding::Depth,
22125        ) -> fidl::Result<()> {
22126            encoder.debug_check_bounds::<UseConfiguration>(offset);
22127            // Vector header
22128            let max_ordinal: u64 = self.max_ordinal_present();
22129            encoder.write_num(max_ordinal, offset);
22130            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
22131            // Calling encoder.out_of_line_offset(0) is not allowed.
22132            if max_ordinal == 0 {
22133                return Ok(());
22134            }
22135            depth.increment()?;
22136            let envelope_size = 8;
22137            let bytes_len = max_ordinal as usize * envelope_size;
22138            #[allow(unused_variables)]
22139            let offset = encoder.out_of_line_offset(bytes_len);
22140            let mut _prev_end_offset: usize = 0;
22141            if 1 > max_ordinal {
22142                return Ok(());
22143            }
22144
22145            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
22146            // are envelope_size bytes.
22147            let cur_offset: usize = (1 - 1) * envelope_size;
22148
22149            // Zero reserved fields.
22150            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22151
22152            // Safety:
22153            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
22154            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
22155            //   envelope_size bytes, there is always sufficient room.
22156            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
22157                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
22158                encoder,
22159                offset + cur_offset,
22160                depth,
22161            )?;
22162
22163            _prev_end_offset = cur_offset + envelope_size;
22164            if 2 > max_ordinal {
22165                return Ok(());
22166            }
22167
22168            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
22169            // are envelope_size bytes.
22170            let cur_offset: usize = (2 - 1) * envelope_size;
22171
22172            // Zero reserved fields.
22173            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22174
22175            // Safety:
22176            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
22177            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
22178            //   envelope_size bytes, there is always sufficient room.
22179            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
22180                self.source_name.as_ref().map(
22181                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
22182                ),
22183                encoder,
22184                offset + cur_offset,
22185                depth,
22186            )?;
22187
22188            _prev_end_offset = cur_offset + envelope_size;
22189            if 3 > max_ordinal {
22190                return Ok(());
22191            }
22192
22193            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
22194            // are envelope_size bytes.
22195            let cur_offset: usize = (3 - 1) * envelope_size;
22196
22197            // Zero reserved fields.
22198            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22199
22200            // Safety:
22201            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
22202            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
22203            //   envelope_size bytes, there is always sufficient room.
22204            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
22205                self.target_name.as_ref().map(
22206                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
22207                ),
22208                encoder,
22209                offset + cur_offset,
22210                depth,
22211            )?;
22212
22213            _prev_end_offset = cur_offset + envelope_size;
22214            if 4 > max_ordinal {
22215                return Ok(());
22216            }
22217
22218            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
22219            // are envelope_size bytes.
22220            let cur_offset: usize = (4 - 1) * envelope_size;
22221
22222            // Zero reserved fields.
22223            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22224
22225            // Safety:
22226            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
22227            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
22228            //   envelope_size bytes, there is always sufficient room.
22229            fidl::encoding::encode_in_envelope_optional::<Availability, D>(
22230                self.availability
22231                    .as_ref()
22232                    .map(<Availability as fidl::encoding::ValueTypeMarker>::borrow),
22233                encoder,
22234                offset + cur_offset,
22235                depth,
22236            )?;
22237
22238            _prev_end_offset = cur_offset + envelope_size;
22239            if 5 > max_ordinal {
22240                return Ok(());
22241            }
22242
22243            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
22244            // are envelope_size bytes.
22245            let cur_offset: usize = (5 - 1) * envelope_size;
22246
22247            // Zero reserved fields.
22248            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22249
22250            // Safety:
22251            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
22252            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
22253            //   envelope_size bytes, there is always sufficient room.
22254            fidl::encoding::encode_in_envelope_optional::<ConfigType, D>(
22255                self.type_.as_ref().map(<ConfigType as fidl::encoding::ValueTypeMarker>::borrow),
22256                encoder,
22257                offset + cur_offset,
22258                depth,
22259            )?;
22260
22261            _prev_end_offset = cur_offset + envelope_size;
22262            if 6 > max_ordinal {
22263                return Ok(());
22264            }
22265
22266            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
22267            // are envelope_size bytes.
22268            let cur_offset: usize = (6 - 1) * envelope_size;
22269
22270            // Zero reserved fields.
22271            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22272
22273            // Safety:
22274            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
22275            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
22276            //   envelope_size bytes, there is always sufficient room.
22277            fidl::encoding::encode_in_envelope_optional::<ConfigValue, D>(
22278                self.default.as_ref().map(<ConfigValue as fidl::encoding::ValueTypeMarker>::borrow),
22279                encoder,
22280                offset + cur_offset,
22281                depth,
22282            )?;
22283
22284            _prev_end_offset = cur_offset + envelope_size;
22285            if 7 > max_ordinal {
22286                return Ok(());
22287            }
22288
22289            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
22290            // are envelope_size bytes.
22291            let cur_offset: usize = (7 - 1) * envelope_size;
22292
22293            // Zero reserved fields.
22294            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22295
22296            // Safety:
22297            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
22298            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
22299            //   envelope_size bytes, there is always sufficient room.
22300            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
22301            self.source_dictionary.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
22302            encoder, offset + cur_offset, depth
22303        )?;
22304
22305            _prev_end_offset = cur_offset + envelope_size;
22306
22307            Ok(())
22308        }
22309    }
22310
22311    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for UseConfiguration {
22312        #[inline(always)]
22313        fn new_empty() -> Self {
22314            Self::default()
22315        }
22316
22317        unsafe fn decode(
22318            &mut self,
22319            decoder: &mut fidl::encoding::Decoder<'_, D>,
22320            offset: usize,
22321            mut depth: fidl::encoding::Depth,
22322        ) -> fidl::Result<()> {
22323            decoder.debug_check_bounds::<Self>(offset);
22324            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
22325                None => return Err(fidl::Error::NotNullable),
22326                Some(len) => len,
22327            };
22328            // Calling decoder.out_of_line_offset(0) is not allowed.
22329            if len == 0 {
22330                return Ok(());
22331            };
22332            depth.increment()?;
22333            let envelope_size = 8;
22334            let bytes_len = len * envelope_size;
22335            let offset = decoder.out_of_line_offset(bytes_len)?;
22336            // Decode the envelope for each type.
22337            let mut _next_ordinal_to_read = 0;
22338            let mut next_offset = offset;
22339            let end_offset = offset + bytes_len;
22340            _next_ordinal_to_read += 1;
22341            if next_offset >= end_offset {
22342                return Ok(());
22343            }
22344
22345            // Decode unknown envelopes for gaps in ordinals.
22346            while _next_ordinal_to_read < 1 {
22347                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22348                _next_ordinal_to_read += 1;
22349                next_offset += envelope_size;
22350            }
22351
22352            let next_out_of_line = decoder.next_out_of_line();
22353            let handles_before = decoder.remaining_handles();
22354            if let Some((inlined, num_bytes, num_handles)) =
22355                fidl::encoding::decode_envelope_header(decoder, next_offset)?
22356            {
22357                let member_inline_size =
22358                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
22359                if inlined != (member_inline_size <= 4) {
22360                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
22361                }
22362                let inner_offset;
22363                let mut inner_depth = depth.clone();
22364                if inlined {
22365                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22366                    inner_offset = next_offset;
22367                } else {
22368                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22369                    inner_depth.increment()?;
22370                }
22371                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
22372                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
22373                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22374                {
22375                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
22376                }
22377                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22378                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22379                }
22380            }
22381
22382            next_offset += envelope_size;
22383            _next_ordinal_to_read += 1;
22384            if next_offset >= end_offset {
22385                return Ok(());
22386            }
22387
22388            // Decode unknown envelopes for gaps in ordinals.
22389            while _next_ordinal_to_read < 2 {
22390                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22391                _next_ordinal_to_read += 1;
22392                next_offset += envelope_size;
22393            }
22394
22395            let next_out_of_line = decoder.next_out_of_line();
22396            let handles_before = decoder.remaining_handles();
22397            if let Some((inlined, num_bytes, num_handles)) =
22398                fidl::encoding::decode_envelope_header(decoder, next_offset)?
22399            {
22400                let member_inline_size =
22401                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
22402                        decoder.context,
22403                    );
22404                if inlined != (member_inline_size <= 4) {
22405                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
22406                }
22407                let inner_offset;
22408                let mut inner_depth = depth.clone();
22409                if inlined {
22410                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22411                    inner_offset = next_offset;
22412                } else {
22413                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22414                    inner_depth.increment()?;
22415                }
22416                let val_ref = self
22417                    .source_name
22418                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
22419                fidl::decode!(
22420                    fidl::encoding::BoundedString<100>,
22421                    D,
22422                    val_ref,
22423                    decoder,
22424                    inner_offset,
22425                    inner_depth
22426                )?;
22427                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22428                {
22429                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
22430                }
22431                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22432                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22433                }
22434            }
22435
22436            next_offset += envelope_size;
22437            _next_ordinal_to_read += 1;
22438            if next_offset >= end_offset {
22439                return Ok(());
22440            }
22441
22442            // Decode unknown envelopes for gaps in ordinals.
22443            while _next_ordinal_to_read < 3 {
22444                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22445                _next_ordinal_to_read += 1;
22446                next_offset += envelope_size;
22447            }
22448
22449            let next_out_of_line = decoder.next_out_of_line();
22450            let handles_before = decoder.remaining_handles();
22451            if let Some((inlined, num_bytes, num_handles)) =
22452                fidl::encoding::decode_envelope_header(decoder, next_offset)?
22453            {
22454                let member_inline_size =
22455                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
22456                        decoder.context,
22457                    );
22458                if inlined != (member_inline_size <= 4) {
22459                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
22460                }
22461                let inner_offset;
22462                let mut inner_depth = depth.clone();
22463                if inlined {
22464                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22465                    inner_offset = next_offset;
22466                } else {
22467                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22468                    inner_depth.increment()?;
22469                }
22470                let val_ref = self
22471                    .target_name
22472                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
22473                fidl::decode!(
22474                    fidl::encoding::BoundedString<100>,
22475                    D,
22476                    val_ref,
22477                    decoder,
22478                    inner_offset,
22479                    inner_depth
22480                )?;
22481                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22482                {
22483                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
22484                }
22485                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22486                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22487                }
22488            }
22489
22490            next_offset += envelope_size;
22491            _next_ordinal_to_read += 1;
22492            if next_offset >= end_offset {
22493                return Ok(());
22494            }
22495
22496            // Decode unknown envelopes for gaps in ordinals.
22497            while _next_ordinal_to_read < 4 {
22498                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22499                _next_ordinal_to_read += 1;
22500                next_offset += envelope_size;
22501            }
22502
22503            let next_out_of_line = decoder.next_out_of_line();
22504            let handles_before = decoder.remaining_handles();
22505            if let Some((inlined, num_bytes, num_handles)) =
22506                fidl::encoding::decode_envelope_header(decoder, next_offset)?
22507            {
22508                let member_inline_size =
22509                    <Availability as fidl::encoding::TypeMarker>::inline_size(decoder.context);
22510                if inlined != (member_inline_size <= 4) {
22511                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
22512                }
22513                let inner_offset;
22514                let mut inner_depth = depth.clone();
22515                if inlined {
22516                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22517                    inner_offset = next_offset;
22518                } else {
22519                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22520                    inner_depth.increment()?;
22521                }
22522                let val_ref =
22523                    self.availability.get_or_insert_with(|| fidl::new_empty!(Availability, D));
22524                fidl::decode!(Availability, D, val_ref, decoder, inner_offset, inner_depth)?;
22525                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22526                {
22527                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
22528                }
22529                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22530                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22531                }
22532            }
22533
22534            next_offset += envelope_size;
22535            _next_ordinal_to_read += 1;
22536            if next_offset >= end_offset {
22537                return Ok(());
22538            }
22539
22540            // Decode unknown envelopes for gaps in ordinals.
22541            while _next_ordinal_to_read < 5 {
22542                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22543                _next_ordinal_to_read += 1;
22544                next_offset += envelope_size;
22545            }
22546
22547            let next_out_of_line = decoder.next_out_of_line();
22548            let handles_before = decoder.remaining_handles();
22549            if let Some((inlined, num_bytes, num_handles)) =
22550                fidl::encoding::decode_envelope_header(decoder, next_offset)?
22551            {
22552                let member_inline_size =
22553                    <ConfigType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
22554                if inlined != (member_inline_size <= 4) {
22555                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
22556                }
22557                let inner_offset;
22558                let mut inner_depth = depth.clone();
22559                if inlined {
22560                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22561                    inner_offset = next_offset;
22562                } else {
22563                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22564                    inner_depth.increment()?;
22565                }
22566                let val_ref = self.type_.get_or_insert_with(|| fidl::new_empty!(ConfigType, D));
22567                fidl::decode!(ConfigType, D, val_ref, decoder, inner_offset, inner_depth)?;
22568                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22569                {
22570                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
22571                }
22572                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22573                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22574                }
22575            }
22576
22577            next_offset += envelope_size;
22578            _next_ordinal_to_read += 1;
22579            if next_offset >= end_offset {
22580                return Ok(());
22581            }
22582
22583            // Decode unknown envelopes for gaps in ordinals.
22584            while _next_ordinal_to_read < 6 {
22585                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22586                _next_ordinal_to_read += 1;
22587                next_offset += envelope_size;
22588            }
22589
22590            let next_out_of_line = decoder.next_out_of_line();
22591            let handles_before = decoder.remaining_handles();
22592            if let Some((inlined, num_bytes, num_handles)) =
22593                fidl::encoding::decode_envelope_header(decoder, next_offset)?
22594            {
22595                let member_inline_size =
22596                    <ConfigValue as fidl::encoding::TypeMarker>::inline_size(decoder.context);
22597                if inlined != (member_inline_size <= 4) {
22598                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
22599                }
22600                let inner_offset;
22601                let mut inner_depth = depth.clone();
22602                if inlined {
22603                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22604                    inner_offset = next_offset;
22605                } else {
22606                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22607                    inner_depth.increment()?;
22608                }
22609                let val_ref = self.default.get_or_insert_with(|| fidl::new_empty!(ConfigValue, D));
22610                fidl::decode!(ConfigValue, D, val_ref, decoder, inner_offset, inner_depth)?;
22611                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22612                {
22613                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
22614                }
22615                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22616                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22617                }
22618            }
22619
22620            next_offset += envelope_size;
22621            _next_ordinal_to_read += 1;
22622            if next_offset >= end_offset {
22623                return Ok(());
22624            }
22625
22626            // Decode unknown envelopes for gaps in ordinals.
22627            while _next_ordinal_to_read < 7 {
22628                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22629                _next_ordinal_to_read += 1;
22630                next_offset += envelope_size;
22631            }
22632
22633            let next_out_of_line = decoder.next_out_of_line();
22634            let handles_before = decoder.remaining_handles();
22635            if let Some((inlined, num_bytes, num_handles)) =
22636                fidl::encoding::decode_envelope_header(decoder, next_offset)?
22637            {
22638                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
22639                if inlined != (member_inline_size <= 4) {
22640                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
22641                }
22642                let inner_offset;
22643                let mut inner_depth = depth.clone();
22644                if inlined {
22645                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22646                    inner_offset = next_offset;
22647                } else {
22648                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22649                    inner_depth.increment()?;
22650                }
22651                let val_ref = self.source_dictionary.get_or_insert_with(|| {
22652                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
22653                });
22654                fidl::decode!(
22655                    fidl::encoding::BoundedString<1024>,
22656                    D,
22657                    val_ref,
22658                    decoder,
22659                    inner_offset,
22660                    inner_depth
22661                )?;
22662                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22663                {
22664                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
22665                }
22666                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22667                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22668                }
22669            }
22670
22671            next_offset += envelope_size;
22672
22673            // Decode the remaining unknown envelopes.
22674            while next_offset < end_offset {
22675                _next_ordinal_to_read += 1;
22676                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22677                next_offset += envelope_size;
22678            }
22679
22680            Ok(())
22681        }
22682    }
22683
22684    impl UseDictionary {
22685        #[inline(always)]
22686        fn max_ordinal_present(&self) -> u64 {
22687            if let Some(_) = self.source_dictionary {
22688                return 8;
22689            }
22690            if let Some(_) = self.availability {
22691                return 7;
22692            }
22693            if let Some(_) = self.dependency_type {
22694                return 6;
22695            }
22696            if let Some(_) = self.target_path {
22697                return 3;
22698            }
22699            if let Some(_) = self.source_name {
22700                return 2;
22701            }
22702            if let Some(_) = self.source {
22703                return 1;
22704            }
22705            0
22706        }
22707    }
22708
22709    impl fidl::encoding::ValueTypeMarker for UseDictionary {
22710        type Borrowed<'a> = &'a Self;
22711        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
22712            value
22713        }
22714    }
22715
22716    unsafe impl fidl::encoding::TypeMarker for UseDictionary {
22717        type Owned = Self;
22718
22719        #[inline(always)]
22720        fn inline_align(_context: fidl::encoding::Context) -> usize {
22721            8
22722        }
22723
22724        #[inline(always)]
22725        fn inline_size(_context: fidl::encoding::Context) -> usize {
22726            16
22727        }
22728    }
22729
22730    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<UseDictionary, D>
22731        for &UseDictionary
22732    {
22733        unsafe fn encode(
22734            self,
22735            encoder: &mut fidl::encoding::Encoder<'_, D>,
22736            offset: usize,
22737            mut depth: fidl::encoding::Depth,
22738        ) -> fidl::Result<()> {
22739            encoder.debug_check_bounds::<UseDictionary>(offset);
22740            // Vector header
22741            let max_ordinal: u64 = self.max_ordinal_present();
22742            encoder.write_num(max_ordinal, offset);
22743            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
22744            // Calling encoder.out_of_line_offset(0) is not allowed.
22745            if max_ordinal == 0 {
22746                return Ok(());
22747            }
22748            depth.increment()?;
22749            let envelope_size = 8;
22750            let bytes_len = max_ordinal as usize * envelope_size;
22751            #[allow(unused_variables)]
22752            let offset = encoder.out_of_line_offset(bytes_len);
22753            let mut _prev_end_offset: usize = 0;
22754            if 1 > max_ordinal {
22755                return Ok(());
22756            }
22757
22758            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
22759            // are envelope_size bytes.
22760            let cur_offset: usize = (1 - 1) * envelope_size;
22761
22762            // Zero reserved fields.
22763            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22764
22765            // Safety:
22766            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
22767            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
22768            //   envelope_size bytes, there is always sufficient room.
22769            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
22770                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
22771                encoder,
22772                offset + cur_offset,
22773                depth,
22774            )?;
22775
22776            _prev_end_offset = cur_offset + envelope_size;
22777            if 2 > max_ordinal {
22778                return Ok(());
22779            }
22780
22781            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
22782            // are envelope_size bytes.
22783            let cur_offset: usize = (2 - 1) * envelope_size;
22784
22785            // Zero reserved fields.
22786            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22787
22788            // Safety:
22789            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
22790            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
22791            //   envelope_size bytes, there is always sufficient room.
22792            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
22793                self.source_name.as_ref().map(
22794                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
22795                ),
22796                encoder,
22797                offset + cur_offset,
22798                depth,
22799            )?;
22800
22801            _prev_end_offset = cur_offset + envelope_size;
22802            if 3 > max_ordinal {
22803                return Ok(());
22804            }
22805
22806            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
22807            // are envelope_size bytes.
22808            let cur_offset: usize = (3 - 1) * envelope_size;
22809
22810            // Zero reserved fields.
22811            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22812
22813            // Safety:
22814            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
22815            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
22816            //   envelope_size bytes, there is always sufficient room.
22817            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
22818            self.target_path.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
22819            encoder, offset + cur_offset, depth
22820        )?;
22821
22822            _prev_end_offset = cur_offset + envelope_size;
22823            if 6 > max_ordinal {
22824                return Ok(());
22825            }
22826
22827            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
22828            // are envelope_size bytes.
22829            let cur_offset: usize = (6 - 1) * envelope_size;
22830
22831            // Zero reserved fields.
22832            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22833
22834            // Safety:
22835            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
22836            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
22837            //   envelope_size bytes, there is always sufficient room.
22838            fidl::encoding::encode_in_envelope_optional::<DependencyType, D>(
22839                self.dependency_type
22840                    .as_ref()
22841                    .map(<DependencyType as fidl::encoding::ValueTypeMarker>::borrow),
22842                encoder,
22843                offset + cur_offset,
22844                depth,
22845            )?;
22846
22847            _prev_end_offset = cur_offset + envelope_size;
22848            if 7 > max_ordinal {
22849                return Ok(());
22850            }
22851
22852            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
22853            // are envelope_size bytes.
22854            let cur_offset: usize = (7 - 1) * envelope_size;
22855
22856            // Zero reserved fields.
22857            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22858
22859            // Safety:
22860            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
22861            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
22862            //   envelope_size bytes, there is always sufficient room.
22863            fidl::encoding::encode_in_envelope_optional::<Availability, D>(
22864                self.availability
22865                    .as_ref()
22866                    .map(<Availability as fidl::encoding::ValueTypeMarker>::borrow),
22867                encoder,
22868                offset + cur_offset,
22869                depth,
22870            )?;
22871
22872            _prev_end_offset = cur_offset + envelope_size;
22873            if 8 > max_ordinal {
22874                return Ok(());
22875            }
22876
22877            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
22878            // are envelope_size bytes.
22879            let cur_offset: usize = (8 - 1) * envelope_size;
22880
22881            // Zero reserved fields.
22882            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22883
22884            // Safety:
22885            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
22886            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
22887            //   envelope_size bytes, there is always sufficient room.
22888            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
22889            self.source_dictionary.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
22890            encoder, offset + cur_offset, depth
22891        )?;
22892
22893            _prev_end_offset = cur_offset + envelope_size;
22894
22895            Ok(())
22896        }
22897    }
22898
22899    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for UseDictionary {
22900        #[inline(always)]
22901        fn new_empty() -> Self {
22902            Self::default()
22903        }
22904
22905        unsafe fn decode(
22906            &mut self,
22907            decoder: &mut fidl::encoding::Decoder<'_, D>,
22908            offset: usize,
22909            mut depth: fidl::encoding::Depth,
22910        ) -> fidl::Result<()> {
22911            decoder.debug_check_bounds::<Self>(offset);
22912            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
22913                None => return Err(fidl::Error::NotNullable),
22914                Some(len) => len,
22915            };
22916            // Calling decoder.out_of_line_offset(0) is not allowed.
22917            if len == 0 {
22918                return Ok(());
22919            };
22920            depth.increment()?;
22921            let envelope_size = 8;
22922            let bytes_len = len * envelope_size;
22923            let offset = decoder.out_of_line_offset(bytes_len)?;
22924            // Decode the envelope for each type.
22925            let mut _next_ordinal_to_read = 0;
22926            let mut next_offset = offset;
22927            let end_offset = offset + bytes_len;
22928            _next_ordinal_to_read += 1;
22929            if next_offset >= end_offset {
22930                return Ok(());
22931            }
22932
22933            // Decode unknown envelopes for gaps in ordinals.
22934            while _next_ordinal_to_read < 1 {
22935                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22936                _next_ordinal_to_read += 1;
22937                next_offset += envelope_size;
22938            }
22939
22940            let next_out_of_line = decoder.next_out_of_line();
22941            let handles_before = decoder.remaining_handles();
22942            if let Some((inlined, num_bytes, num_handles)) =
22943                fidl::encoding::decode_envelope_header(decoder, next_offset)?
22944            {
22945                let member_inline_size =
22946                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
22947                if inlined != (member_inline_size <= 4) {
22948                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
22949                }
22950                let inner_offset;
22951                let mut inner_depth = depth.clone();
22952                if inlined {
22953                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22954                    inner_offset = next_offset;
22955                } else {
22956                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22957                    inner_depth.increment()?;
22958                }
22959                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
22960                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
22961                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22962                {
22963                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
22964                }
22965                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22966                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22967                }
22968            }
22969
22970            next_offset += envelope_size;
22971            _next_ordinal_to_read += 1;
22972            if next_offset >= end_offset {
22973                return Ok(());
22974            }
22975
22976            // Decode unknown envelopes for gaps in ordinals.
22977            while _next_ordinal_to_read < 2 {
22978                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22979                _next_ordinal_to_read += 1;
22980                next_offset += envelope_size;
22981            }
22982
22983            let next_out_of_line = decoder.next_out_of_line();
22984            let handles_before = decoder.remaining_handles();
22985            if let Some((inlined, num_bytes, num_handles)) =
22986                fidl::encoding::decode_envelope_header(decoder, next_offset)?
22987            {
22988                let member_inline_size =
22989                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
22990                        decoder.context,
22991                    );
22992                if inlined != (member_inline_size <= 4) {
22993                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
22994                }
22995                let inner_offset;
22996                let mut inner_depth = depth.clone();
22997                if inlined {
22998                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22999                    inner_offset = next_offset;
23000                } else {
23001                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
23002                    inner_depth.increment()?;
23003                }
23004                let val_ref = self
23005                    .source_name
23006                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
23007                fidl::decode!(
23008                    fidl::encoding::BoundedString<100>,
23009                    D,
23010                    val_ref,
23011                    decoder,
23012                    inner_offset,
23013                    inner_depth
23014                )?;
23015                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
23016                {
23017                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
23018                }
23019                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
23020                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
23021                }
23022            }
23023
23024            next_offset += envelope_size;
23025            _next_ordinal_to_read += 1;
23026            if next_offset >= end_offset {
23027                return Ok(());
23028            }
23029
23030            // Decode unknown envelopes for gaps in ordinals.
23031            while _next_ordinal_to_read < 3 {
23032                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23033                _next_ordinal_to_read += 1;
23034                next_offset += envelope_size;
23035            }
23036
23037            let next_out_of_line = decoder.next_out_of_line();
23038            let handles_before = decoder.remaining_handles();
23039            if let Some((inlined, num_bytes, num_handles)) =
23040                fidl::encoding::decode_envelope_header(decoder, next_offset)?
23041            {
23042                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
23043                if inlined != (member_inline_size <= 4) {
23044                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
23045                }
23046                let inner_offset;
23047                let mut inner_depth = depth.clone();
23048                if inlined {
23049                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
23050                    inner_offset = next_offset;
23051                } else {
23052                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
23053                    inner_depth.increment()?;
23054                }
23055                let val_ref = self.target_path.get_or_insert_with(|| {
23056                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
23057                });
23058                fidl::decode!(
23059                    fidl::encoding::BoundedString<1024>,
23060                    D,
23061                    val_ref,
23062                    decoder,
23063                    inner_offset,
23064                    inner_depth
23065                )?;
23066                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
23067                {
23068                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
23069                }
23070                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
23071                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
23072                }
23073            }
23074
23075            next_offset += envelope_size;
23076            _next_ordinal_to_read += 1;
23077            if next_offset >= end_offset {
23078                return Ok(());
23079            }
23080
23081            // Decode unknown envelopes for gaps in ordinals.
23082            while _next_ordinal_to_read < 6 {
23083                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23084                _next_ordinal_to_read += 1;
23085                next_offset += envelope_size;
23086            }
23087
23088            let next_out_of_line = decoder.next_out_of_line();
23089            let handles_before = decoder.remaining_handles();
23090            if let Some((inlined, num_bytes, num_handles)) =
23091                fidl::encoding::decode_envelope_header(decoder, next_offset)?
23092            {
23093                let member_inline_size =
23094                    <DependencyType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
23095                if inlined != (member_inline_size <= 4) {
23096                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
23097                }
23098                let inner_offset;
23099                let mut inner_depth = depth.clone();
23100                if inlined {
23101                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
23102                    inner_offset = next_offset;
23103                } else {
23104                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
23105                    inner_depth.increment()?;
23106                }
23107                let val_ref =
23108                    self.dependency_type.get_or_insert_with(|| fidl::new_empty!(DependencyType, D));
23109                fidl::decode!(DependencyType, D, val_ref, decoder, inner_offset, inner_depth)?;
23110                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
23111                {
23112                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
23113                }
23114                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
23115                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
23116                }
23117            }
23118
23119            next_offset += envelope_size;
23120            _next_ordinal_to_read += 1;
23121            if next_offset >= end_offset {
23122                return Ok(());
23123            }
23124
23125            // Decode unknown envelopes for gaps in ordinals.
23126            while _next_ordinal_to_read < 7 {
23127                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23128                _next_ordinal_to_read += 1;
23129                next_offset += envelope_size;
23130            }
23131
23132            let next_out_of_line = decoder.next_out_of_line();
23133            let handles_before = decoder.remaining_handles();
23134            if let Some((inlined, num_bytes, num_handles)) =
23135                fidl::encoding::decode_envelope_header(decoder, next_offset)?
23136            {
23137                let member_inline_size =
23138                    <Availability as fidl::encoding::TypeMarker>::inline_size(decoder.context);
23139                if inlined != (member_inline_size <= 4) {
23140                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
23141                }
23142                let inner_offset;
23143                let mut inner_depth = depth.clone();
23144                if inlined {
23145                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
23146                    inner_offset = next_offset;
23147                } else {
23148                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
23149                    inner_depth.increment()?;
23150                }
23151                let val_ref =
23152                    self.availability.get_or_insert_with(|| fidl::new_empty!(Availability, D));
23153                fidl::decode!(Availability, D, val_ref, decoder, inner_offset, inner_depth)?;
23154                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
23155                {
23156                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
23157                }
23158                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
23159                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
23160                }
23161            }
23162
23163            next_offset += envelope_size;
23164            _next_ordinal_to_read += 1;
23165            if next_offset >= end_offset {
23166                return Ok(());
23167            }
23168
23169            // Decode unknown envelopes for gaps in ordinals.
23170            while _next_ordinal_to_read < 8 {
23171                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23172                _next_ordinal_to_read += 1;
23173                next_offset += envelope_size;
23174            }
23175
23176            let next_out_of_line = decoder.next_out_of_line();
23177            let handles_before = decoder.remaining_handles();
23178            if let Some((inlined, num_bytes, num_handles)) =
23179                fidl::encoding::decode_envelope_header(decoder, next_offset)?
23180            {
23181                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
23182                if inlined != (member_inline_size <= 4) {
23183                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
23184                }
23185                let inner_offset;
23186                let mut inner_depth = depth.clone();
23187                if inlined {
23188                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
23189                    inner_offset = next_offset;
23190                } else {
23191                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
23192                    inner_depth.increment()?;
23193                }
23194                let val_ref = self.source_dictionary.get_or_insert_with(|| {
23195                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
23196                });
23197                fidl::decode!(
23198                    fidl::encoding::BoundedString<1024>,
23199                    D,
23200                    val_ref,
23201                    decoder,
23202                    inner_offset,
23203                    inner_depth
23204                )?;
23205                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
23206                {
23207                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
23208                }
23209                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
23210                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
23211                }
23212            }
23213
23214            next_offset += envelope_size;
23215
23216            // Decode the remaining unknown envelopes.
23217            while next_offset < end_offset {
23218                _next_ordinal_to_read += 1;
23219                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23220                next_offset += envelope_size;
23221            }
23222
23223            Ok(())
23224        }
23225    }
23226
23227    impl UseDirectory {
23228        #[inline(always)]
23229        fn max_ordinal_present(&self) -> u64 {
23230            if let Some(_) = self.source_dictionary {
23231                return 8;
23232            }
23233            if let Some(_) = self.availability {
23234                return 7;
23235            }
23236            if let Some(_) = self.dependency_type {
23237                return 6;
23238            }
23239            if let Some(_) = self.subdir {
23240                return 5;
23241            }
23242            if let Some(_) = self.rights {
23243                return 4;
23244            }
23245            if let Some(_) = self.target_path {
23246                return 3;
23247            }
23248            if let Some(_) = self.source_name {
23249                return 2;
23250            }
23251            if let Some(_) = self.source {
23252                return 1;
23253            }
23254            0
23255        }
23256    }
23257
23258    impl fidl::encoding::ValueTypeMarker for UseDirectory {
23259        type Borrowed<'a> = &'a Self;
23260        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
23261            value
23262        }
23263    }
23264
23265    unsafe impl fidl::encoding::TypeMarker for UseDirectory {
23266        type Owned = Self;
23267
23268        #[inline(always)]
23269        fn inline_align(_context: fidl::encoding::Context) -> usize {
23270            8
23271        }
23272
23273        #[inline(always)]
23274        fn inline_size(_context: fidl::encoding::Context) -> usize {
23275            16
23276        }
23277    }
23278
23279    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<UseDirectory, D>
23280        for &UseDirectory
23281    {
23282        unsafe fn encode(
23283            self,
23284            encoder: &mut fidl::encoding::Encoder<'_, D>,
23285            offset: usize,
23286            mut depth: fidl::encoding::Depth,
23287        ) -> fidl::Result<()> {
23288            encoder.debug_check_bounds::<UseDirectory>(offset);
23289            // Vector header
23290            let max_ordinal: u64 = self.max_ordinal_present();
23291            encoder.write_num(max_ordinal, offset);
23292            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
23293            // Calling encoder.out_of_line_offset(0) is not allowed.
23294            if max_ordinal == 0 {
23295                return Ok(());
23296            }
23297            depth.increment()?;
23298            let envelope_size = 8;
23299            let bytes_len = max_ordinal as usize * envelope_size;
23300            #[allow(unused_variables)]
23301            let offset = encoder.out_of_line_offset(bytes_len);
23302            let mut _prev_end_offset: usize = 0;
23303            if 1 > max_ordinal {
23304                return Ok(());
23305            }
23306
23307            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
23308            // are envelope_size bytes.
23309            let cur_offset: usize = (1 - 1) * envelope_size;
23310
23311            // Zero reserved fields.
23312            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
23313
23314            // Safety:
23315            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
23316            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
23317            //   envelope_size bytes, there is always sufficient room.
23318            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
23319                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
23320                encoder,
23321                offset + cur_offset,
23322                depth,
23323            )?;
23324
23325            _prev_end_offset = cur_offset + envelope_size;
23326            if 2 > max_ordinal {
23327                return Ok(());
23328            }
23329
23330            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
23331            // are envelope_size bytes.
23332            let cur_offset: usize = (2 - 1) * envelope_size;
23333
23334            // Zero reserved fields.
23335            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
23336
23337            // Safety:
23338            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
23339            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
23340            //   envelope_size bytes, there is always sufficient room.
23341            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
23342                self.source_name.as_ref().map(
23343                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
23344                ),
23345                encoder,
23346                offset + cur_offset,
23347                depth,
23348            )?;
23349
23350            _prev_end_offset = cur_offset + envelope_size;
23351            if 3 > max_ordinal {
23352                return Ok(());
23353            }
23354
23355            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
23356            // are envelope_size bytes.
23357            let cur_offset: usize = (3 - 1) * envelope_size;
23358
23359            // Zero reserved fields.
23360            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
23361
23362            // Safety:
23363            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
23364            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
23365            //   envelope_size bytes, there is always sufficient room.
23366            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
23367            self.target_path.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
23368            encoder, offset + cur_offset, depth
23369        )?;
23370
23371            _prev_end_offset = cur_offset + envelope_size;
23372            if 4 > max_ordinal {
23373                return Ok(());
23374            }
23375
23376            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
23377            // are envelope_size bytes.
23378            let cur_offset: usize = (4 - 1) * envelope_size;
23379
23380            // Zero reserved fields.
23381            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
23382
23383            // Safety:
23384            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
23385            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
23386            //   envelope_size bytes, there is always sufficient room.
23387            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_io__common::Operations, D>(
23388            self.rights.as_ref().map(<fidl_fuchsia_io__common::Operations as fidl::encoding::ValueTypeMarker>::borrow),
23389            encoder, offset + cur_offset, depth
23390        )?;
23391
23392            _prev_end_offset = cur_offset + envelope_size;
23393            if 5 > max_ordinal {
23394                return Ok(());
23395            }
23396
23397            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
23398            // are envelope_size bytes.
23399            let cur_offset: usize = (5 - 1) * envelope_size;
23400
23401            // Zero reserved fields.
23402            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
23403
23404            // Safety:
23405            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
23406            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
23407            //   envelope_size bytes, there is always sufficient room.
23408            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
23409            self.subdir.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
23410            encoder, offset + cur_offset, depth
23411        )?;
23412
23413            _prev_end_offset = cur_offset + envelope_size;
23414            if 6 > max_ordinal {
23415                return Ok(());
23416            }
23417
23418            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
23419            // are envelope_size bytes.
23420            let cur_offset: usize = (6 - 1) * envelope_size;
23421
23422            // Zero reserved fields.
23423            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
23424
23425            // Safety:
23426            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
23427            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
23428            //   envelope_size bytes, there is always sufficient room.
23429            fidl::encoding::encode_in_envelope_optional::<DependencyType, D>(
23430                self.dependency_type
23431                    .as_ref()
23432                    .map(<DependencyType as fidl::encoding::ValueTypeMarker>::borrow),
23433                encoder,
23434                offset + cur_offset,
23435                depth,
23436            )?;
23437
23438            _prev_end_offset = cur_offset + envelope_size;
23439            if 7 > max_ordinal {
23440                return Ok(());
23441            }
23442
23443            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
23444            // are envelope_size bytes.
23445            let cur_offset: usize = (7 - 1) * envelope_size;
23446
23447            // Zero reserved fields.
23448            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
23449
23450            // Safety:
23451            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
23452            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
23453            //   envelope_size bytes, there is always sufficient room.
23454            fidl::encoding::encode_in_envelope_optional::<Availability, D>(
23455                self.availability
23456                    .as_ref()
23457                    .map(<Availability as fidl::encoding::ValueTypeMarker>::borrow),
23458                encoder,
23459                offset + cur_offset,
23460                depth,
23461            )?;
23462
23463            _prev_end_offset = cur_offset + envelope_size;
23464            if 8 > max_ordinal {
23465                return Ok(());
23466            }
23467
23468            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
23469            // are envelope_size bytes.
23470            let cur_offset: usize = (8 - 1) * envelope_size;
23471
23472            // Zero reserved fields.
23473            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
23474
23475            // Safety:
23476            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
23477            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
23478            //   envelope_size bytes, there is always sufficient room.
23479            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
23480            self.source_dictionary.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
23481            encoder, offset + cur_offset, depth
23482        )?;
23483
23484            _prev_end_offset = cur_offset + envelope_size;
23485
23486            Ok(())
23487        }
23488    }
23489
23490    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for UseDirectory {
23491        #[inline(always)]
23492        fn new_empty() -> Self {
23493            Self::default()
23494        }
23495
23496        unsafe fn decode(
23497            &mut self,
23498            decoder: &mut fidl::encoding::Decoder<'_, D>,
23499            offset: usize,
23500            mut depth: fidl::encoding::Depth,
23501        ) -> fidl::Result<()> {
23502            decoder.debug_check_bounds::<Self>(offset);
23503            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
23504                None => return Err(fidl::Error::NotNullable),
23505                Some(len) => len,
23506            };
23507            // Calling decoder.out_of_line_offset(0) is not allowed.
23508            if len == 0 {
23509                return Ok(());
23510            };
23511            depth.increment()?;
23512            let envelope_size = 8;
23513            let bytes_len = len * envelope_size;
23514            let offset = decoder.out_of_line_offset(bytes_len)?;
23515            // Decode the envelope for each type.
23516            let mut _next_ordinal_to_read = 0;
23517            let mut next_offset = offset;
23518            let end_offset = offset + bytes_len;
23519            _next_ordinal_to_read += 1;
23520            if next_offset >= end_offset {
23521                return Ok(());
23522            }
23523
23524            // Decode unknown envelopes for gaps in ordinals.
23525            while _next_ordinal_to_read < 1 {
23526                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23527                _next_ordinal_to_read += 1;
23528                next_offset += envelope_size;
23529            }
23530
23531            let next_out_of_line = decoder.next_out_of_line();
23532            let handles_before = decoder.remaining_handles();
23533            if let Some((inlined, num_bytes, num_handles)) =
23534                fidl::encoding::decode_envelope_header(decoder, next_offset)?
23535            {
23536                let member_inline_size =
23537                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
23538                if inlined != (member_inline_size <= 4) {
23539                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
23540                }
23541                let inner_offset;
23542                let mut inner_depth = depth.clone();
23543                if inlined {
23544                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
23545                    inner_offset = next_offset;
23546                } else {
23547                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
23548                    inner_depth.increment()?;
23549                }
23550                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
23551                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
23552                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
23553                {
23554                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
23555                }
23556                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
23557                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
23558                }
23559            }
23560
23561            next_offset += envelope_size;
23562            _next_ordinal_to_read += 1;
23563            if next_offset >= end_offset {
23564                return Ok(());
23565            }
23566
23567            // Decode unknown envelopes for gaps in ordinals.
23568            while _next_ordinal_to_read < 2 {
23569                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23570                _next_ordinal_to_read += 1;
23571                next_offset += envelope_size;
23572            }
23573
23574            let next_out_of_line = decoder.next_out_of_line();
23575            let handles_before = decoder.remaining_handles();
23576            if let Some((inlined, num_bytes, num_handles)) =
23577                fidl::encoding::decode_envelope_header(decoder, next_offset)?
23578            {
23579                let member_inline_size =
23580                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
23581                        decoder.context,
23582                    );
23583                if inlined != (member_inline_size <= 4) {
23584                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
23585                }
23586                let inner_offset;
23587                let mut inner_depth = depth.clone();
23588                if inlined {
23589                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
23590                    inner_offset = next_offset;
23591                } else {
23592                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
23593                    inner_depth.increment()?;
23594                }
23595                let val_ref = self
23596                    .source_name
23597                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
23598                fidl::decode!(
23599                    fidl::encoding::BoundedString<100>,
23600                    D,
23601                    val_ref,
23602                    decoder,
23603                    inner_offset,
23604                    inner_depth
23605                )?;
23606                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
23607                {
23608                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
23609                }
23610                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
23611                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
23612                }
23613            }
23614
23615            next_offset += envelope_size;
23616            _next_ordinal_to_read += 1;
23617            if next_offset >= end_offset {
23618                return Ok(());
23619            }
23620
23621            // Decode unknown envelopes for gaps in ordinals.
23622            while _next_ordinal_to_read < 3 {
23623                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23624                _next_ordinal_to_read += 1;
23625                next_offset += envelope_size;
23626            }
23627
23628            let next_out_of_line = decoder.next_out_of_line();
23629            let handles_before = decoder.remaining_handles();
23630            if let Some((inlined, num_bytes, num_handles)) =
23631                fidl::encoding::decode_envelope_header(decoder, next_offset)?
23632            {
23633                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
23634                if inlined != (member_inline_size <= 4) {
23635                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
23636                }
23637                let inner_offset;
23638                let mut inner_depth = depth.clone();
23639                if inlined {
23640                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
23641                    inner_offset = next_offset;
23642                } else {
23643                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
23644                    inner_depth.increment()?;
23645                }
23646                let val_ref = self.target_path.get_or_insert_with(|| {
23647                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
23648                });
23649                fidl::decode!(
23650                    fidl::encoding::BoundedString<1024>,
23651                    D,
23652                    val_ref,
23653                    decoder,
23654                    inner_offset,
23655                    inner_depth
23656                )?;
23657                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
23658                {
23659                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
23660                }
23661                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
23662                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
23663                }
23664            }
23665
23666            next_offset += envelope_size;
23667            _next_ordinal_to_read += 1;
23668            if next_offset >= end_offset {
23669                return Ok(());
23670            }
23671
23672            // Decode unknown envelopes for gaps in ordinals.
23673            while _next_ordinal_to_read < 4 {
23674                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23675                _next_ordinal_to_read += 1;
23676                next_offset += envelope_size;
23677            }
23678
23679            let next_out_of_line = decoder.next_out_of_line();
23680            let handles_before = decoder.remaining_handles();
23681            if let Some((inlined, num_bytes, num_handles)) =
23682                fidl::encoding::decode_envelope_header(decoder, next_offset)?
23683            {
23684                let member_inline_size = <fidl_fuchsia_io__common::Operations as fidl::encoding::TypeMarker>::inline_size(decoder.context);
23685                if inlined != (member_inline_size <= 4) {
23686                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
23687                }
23688                let inner_offset;
23689                let mut inner_depth = depth.clone();
23690                if inlined {
23691                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
23692                    inner_offset = next_offset;
23693                } else {
23694                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
23695                    inner_depth.increment()?;
23696                }
23697                let val_ref = self.rights.get_or_insert_with(|| {
23698                    fidl::new_empty!(fidl_fuchsia_io__common::Operations, D)
23699                });
23700                fidl::decode!(
23701                    fidl_fuchsia_io__common::Operations,
23702                    D,
23703                    val_ref,
23704                    decoder,
23705                    inner_offset,
23706                    inner_depth
23707                )?;
23708                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
23709                {
23710                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
23711                }
23712                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
23713                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
23714                }
23715            }
23716
23717            next_offset += envelope_size;
23718            _next_ordinal_to_read += 1;
23719            if next_offset >= end_offset {
23720                return Ok(());
23721            }
23722
23723            // Decode unknown envelopes for gaps in ordinals.
23724            while _next_ordinal_to_read < 5 {
23725                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23726                _next_ordinal_to_read += 1;
23727                next_offset += envelope_size;
23728            }
23729
23730            let next_out_of_line = decoder.next_out_of_line();
23731            let handles_before = decoder.remaining_handles();
23732            if let Some((inlined, num_bytes, num_handles)) =
23733                fidl::encoding::decode_envelope_header(decoder, next_offset)?
23734            {
23735                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
23736                if inlined != (member_inline_size <= 4) {
23737                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
23738                }
23739                let inner_offset;
23740                let mut inner_depth = depth.clone();
23741                if inlined {
23742                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
23743                    inner_offset = next_offset;
23744                } else {
23745                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
23746                    inner_depth.increment()?;
23747                }
23748                let val_ref = self.subdir.get_or_insert_with(|| {
23749                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
23750                });
23751                fidl::decode!(
23752                    fidl::encoding::BoundedString<1024>,
23753                    D,
23754                    val_ref,
23755                    decoder,
23756                    inner_offset,
23757                    inner_depth
23758                )?;
23759                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
23760                {
23761                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
23762                }
23763                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
23764                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
23765                }
23766            }
23767
23768            next_offset += envelope_size;
23769            _next_ordinal_to_read += 1;
23770            if next_offset >= end_offset {
23771                return Ok(());
23772            }
23773
23774            // Decode unknown envelopes for gaps in ordinals.
23775            while _next_ordinal_to_read < 6 {
23776                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23777                _next_ordinal_to_read += 1;
23778                next_offset += envelope_size;
23779            }
23780
23781            let next_out_of_line = decoder.next_out_of_line();
23782            let handles_before = decoder.remaining_handles();
23783            if let Some((inlined, num_bytes, num_handles)) =
23784                fidl::encoding::decode_envelope_header(decoder, next_offset)?
23785            {
23786                let member_inline_size =
23787                    <DependencyType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
23788                if inlined != (member_inline_size <= 4) {
23789                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
23790                }
23791                let inner_offset;
23792                let mut inner_depth = depth.clone();
23793                if inlined {
23794                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
23795                    inner_offset = next_offset;
23796                } else {
23797                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
23798                    inner_depth.increment()?;
23799                }
23800                let val_ref =
23801                    self.dependency_type.get_or_insert_with(|| fidl::new_empty!(DependencyType, D));
23802                fidl::decode!(DependencyType, D, val_ref, decoder, inner_offset, inner_depth)?;
23803                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
23804                {
23805                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
23806                }
23807                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
23808                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
23809                }
23810            }
23811
23812            next_offset += envelope_size;
23813            _next_ordinal_to_read += 1;
23814            if next_offset >= end_offset {
23815                return Ok(());
23816            }
23817
23818            // Decode unknown envelopes for gaps in ordinals.
23819            while _next_ordinal_to_read < 7 {
23820                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23821                _next_ordinal_to_read += 1;
23822                next_offset += envelope_size;
23823            }
23824
23825            let next_out_of_line = decoder.next_out_of_line();
23826            let handles_before = decoder.remaining_handles();
23827            if let Some((inlined, num_bytes, num_handles)) =
23828                fidl::encoding::decode_envelope_header(decoder, next_offset)?
23829            {
23830                let member_inline_size =
23831                    <Availability as fidl::encoding::TypeMarker>::inline_size(decoder.context);
23832                if inlined != (member_inline_size <= 4) {
23833                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
23834                }
23835                let inner_offset;
23836                let mut inner_depth = depth.clone();
23837                if inlined {
23838                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
23839                    inner_offset = next_offset;
23840                } else {
23841                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
23842                    inner_depth.increment()?;
23843                }
23844                let val_ref =
23845                    self.availability.get_or_insert_with(|| fidl::new_empty!(Availability, D));
23846                fidl::decode!(Availability, D, val_ref, decoder, inner_offset, inner_depth)?;
23847                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
23848                {
23849                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
23850                }
23851                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
23852                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
23853                }
23854            }
23855
23856            next_offset += envelope_size;
23857            _next_ordinal_to_read += 1;
23858            if next_offset >= end_offset {
23859                return Ok(());
23860            }
23861
23862            // Decode unknown envelopes for gaps in ordinals.
23863            while _next_ordinal_to_read < 8 {
23864                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23865                _next_ordinal_to_read += 1;
23866                next_offset += envelope_size;
23867            }
23868
23869            let next_out_of_line = decoder.next_out_of_line();
23870            let handles_before = decoder.remaining_handles();
23871            if let Some((inlined, num_bytes, num_handles)) =
23872                fidl::encoding::decode_envelope_header(decoder, next_offset)?
23873            {
23874                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
23875                if inlined != (member_inline_size <= 4) {
23876                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
23877                }
23878                let inner_offset;
23879                let mut inner_depth = depth.clone();
23880                if inlined {
23881                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
23882                    inner_offset = next_offset;
23883                } else {
23884                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
23885                    inner_depth.increment()?;
23886                }
23887                let val_ref = self.source_dictionary.get_or_insert_with(|| {
23888                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
23889                });
23890                fidl::decode!(
23891                    fidl::encoding::BoundedString<1024>,
23892                    D,
23893                    val_ref,
23894                    decoder,
23895                    inner_offset,
23896                    inner_depth
23897                )?;
23898                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
23899                {
23900                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
23901                }
23902                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
23903                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
23904                }
23905            }
23906
23907            next_offset += envelope_size;
23908
23909            // Decode the remaining unknown envelopes.
23910            while next_offset < end_offset {
23911                _next_ordinal_to_read += 1;
23912                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23913                next_offset += envelope_size;
23914            }
23915
23916            Ok(())
23917        }
23918    }
23919
23920    impl UseEventStream {
23921        #[inline(always)]
23922        fn max_ordinal_present(&self) -> u64 {
23923            if let Some(_) = self.filter {
23924                return 6;
23925            }
23926            if let Some(_) = self.availability {
23927                return 5;
23928            }
23929            if let Some(_) = self.target_path {
23930                return 4;
23931            }
23932            if let Some(_) = self.scope {
23933                return 3;
23934            }
23935            if let Some(_) = self.source {
23936                return 2;
23937            }
23938            if let Some(_) = self.source_name {
23939                return 1;
23940            }
23941            0
23942        }
23943    }
23944
23945    impl fidl::encoding::ValueTypeMarker for UseEventStream {
23946        type Borrowed<'a> = &'a Self;
23947        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
23948            value
23949        }
23950    }
23951
23952    unsafe impl fidl::encoding::TypeMarker for UseEventStream {
23953        type Owned = Self;
23954
23955        #[inline(always)]
23956        fn inline_align(_context: fidl::encoding::Context) -> usize {
23957            8
23958        }
23959
23960        #[inline(always)]
23961        fn inline_size(_context: fidl::encoding::Context) -> usize {
23962            16
23963        }
23964    }
23965
23966    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<UseEventStream, D>
23967        for &UseEventStream
23968    {
23969        unsafe fn encode(
23970            self,
23971            encoder: &mut fidl::encoding::Encoder<'_, D>,
23972            offset: usize,
23973            mut depth: fidl::encoding::Depth,
23974        ) -> fidl::Result<()> {
23975            encoder.debug_check_bounds::<UseEventStream>(offset);
23976            // Vector header
23977            let max_ordinal: u64 = self.max_ordinal_present();
23978            encoder.write_num(max_ordinal, offset);
23979            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
23980            // Calling encoder.out_of_line_offset(0) is not allowed.
23981            if max_ordinal == 0 {
23982                return Ok(());
23983            }
23984            depth.increment()?;
23985            let envelope_size = 8;
23986            let bytes_len = max_ordinal as usize * envelope_size;
23987            #[allow(unused_variables)]
23988            let offset = encoder.out_of_line_offset(bytes_len);
23989            let mut _prev_end_offset: usize = 0;
23990            if 1 > max_ordinal {
23991                return Ok(());
23992            }
23993
23994            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
23995            // are envelope_size bytes.
23996            let cur_offset: usize = (1 - 1) * envelope_size;
23997
23998            // Zero reserved fields.
23999            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
24000
24001            // Safety:
24002            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
24003            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
24004            //   envelope_size bytes, there is always sufficient room.
24005            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
24006                self.source_name.as_ref().map(
24007                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
24008                ),
24009                encoder,
24010                offset + cur_offset,
24011                depth,
24012            )?;
24013
24014            _prev_end_offset = cur_offset + envelope_size;
24015            if 2 > max_ordinal {
24016                return Ok(());
24017            }
24018
24019            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
24020            // are envelope_size bytes.
24021            let cur_offset: usize = (2 - 1) * envelope_size;
24022
24023            // Zero reserved fields.
24024            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
24025
24026            // Safety:
24027            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
24028            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
24029            //   envelope_size bytes, there is always sufficient room.
24030            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
24031                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
24032                encoder,
24033                offset + cur_offset,
24034                depth,
24035            )?;
24036
24037            _prev_end_offset = cur_offset + envelope_size;
24038            if 3 > max_ordinal {
24039                return Ok(());
24040            }
24041
24042            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
24043            // are envelope_size bytes.
24044            let cur_offset: usize = (3 - 1) * envelope_size;
24045
24046            // Zero reserved fields.
24047            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
24048
24049            // Safety:
24050            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
24051            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
24052            //   envelope_size bytes, there is always sufficient room.
24053            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<Ref>, D>(
24054            self.scope.as_ref().map(<fidl::encoding::UnboundedVector<Ref> as fidl::encoding::ValueTypeMarker>::borrow),
24055            encoder, offset + cur_offset, depth
24056        )?;
24057
24058            _prev_end_offset = cur_offset + envelope_size;
24059            if 4 > max_ordinal {
24060                return Ok(());
24061            }
24062
24063            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
24064            // are envelope_size bytes.
24065            let cur_offset: usize = (4 - 1) * envelope_size;
24066
24067            // Zero reserved fields.
24068            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
24069
24070            // Safety:
24071            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
24072            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
24073            //   envelope_size bytes, there is always sufficient room.
24074            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
24075                self.target_path.as_ref().map(
24076                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
24077                ),
24078                encoder,
24079                offset + cur_offset,
24080                depth,
24081            )?;
24082
24083            _prev_end_offset = cur_offset + envelope_size;
24084            if 5 > max_ordinal {
24085                return Ok(());
24086            }
24087
24088            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
24089            // are envelope_size bytes.
24090            let cur_offset: usize = (5 - 1) * envelope_size;
24091
24092            // Zero reserved fields.
24093            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
24094
24095            // Safety:
24096            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
24097            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
24098            //   envelope_size bytes, there is always sufficient room.
24099            fidl::encoding::encode_in_envelope_optional::<Availability, D>(
24100                self.availability
24101                    .as_ref()
24102                    .map(<Availability as fidl::encoding::ValueTypeMarker>::borrow),
24103                encoder,
24104                offset + cur_offset,
24105                depth,
24106            )?;
24107
24108            _prev_end_offset = cur_offset + envelope_size;
24109            if 6 > max_ordinal {
24110                return Ok(());
24111            }
24112
24113            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
24114            // are envelope_size bytes.
24115            let cur_offset: usize = (6 - 1) * envelope_size;
24116
24117            // Zero reserved fields.
24118            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
24119
24120            // Safety:
24121            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
24122            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
24123            //   envelope_size bytes, there is always sufficient room.
24124            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_data__common::Dictionary, D>(
24125            self.filter.as_ref().map(<fidl_fuchsia_data__common::Dictionary as fidl::encoding::ValueTypeMarker>::borrow),
24126            encoder, offset + cur_offset, depth
24127        )?;
24128
24129            _prev_end_offset = cur_offset + envelope_size;
24130
24131            Ok(())
24132        }
24133    }
24134
24135    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for UseEventStream {
24136        #[inline(always)]
24137        fn new_empty() -> Self {
24138            Self::default()
24139        }
24140
24141        unsafe fn decode(
24142            &mut self,
24143            decoder: &mut fidl::encoding::Decoder<'_, D>,
24144            offset: usize,
24145            mut depth: fidl::encoding::Depth,
24146        ) -> fidl::Result<()> {
24147            decoder.debug_check_bounds::<Self>(offset);
24148            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
24149                None => return Err(fidl::Error::NotNullable),
24150                Some(len) => len,
24151            };
24152            // Calling decoder.out_of_line_offset(0) is not allowed.
24153            if len == 0 {
24154                return Ok(());
24155            };
24156            depth.increment()?;
24157            let envelope_size = 8;
24158            let bytes_len = len * envelope_size;
24159            let offset = decoder.out_of_line_offset(bytes_len)?;
24160            // Decode the envelope for each type.
24161            let mut _next_ordinal_to_read = 0;
24162            let mut next_offset = offset;
24163            let end_offset = offset + bytes_len;
24164            _next_ordinal_to_read += 1;
24165            if next_offset >= end_offset {
24166                return Ok(());
24167            }
24168
24169            // Decode unknown envelopes for gaps in ordinals.
24170            while _next_ordinal_to_read < 1 {
24171                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24172                _next_ordinal_to_read += 1;
24173                next_offset += envelope_size;
24174            }
24175
24176            let next_out_of_line = decoder.next_out_of_line();
24177            let handles_before = decoder.remaining_handles();
24178            if let Some((inlined, num_bytes, num_handles)) =
24179                fidl::encoding::decode_envelope_header(decoder, next_offset)?
24180            {
24181                let member_inline_size =
24182                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
24183                        decoder.context,
24184                    );
24185                if inlined != (member_inline_size <= 4) {
24186                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
24187                }
24188                let inner_offset;
24189                let mut inner_depth = depth.clone();
24190                if inlined {
24191                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
24192                    inner_offset = next_offset;
24193                } else {
24194                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
24195                    inner_depth.increment()?;
24196                }
24197                let val_ref = self
24198                    .source_name
24199                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
24200                fidl::decode!(
24201                    fidl::encoding::BoundedString<100>,
24202                    D,
24203                    val_ref,
24204                    decoder,
24205                    inner_offset,
24206                    inner_depth
24207                )?;
24208                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
24209                {
24210                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
24211                }
24212                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
24213                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
24214                }
24215            }
24216
24217            next_offset += envelope_size;
24218            _next_ordinal_to_read += 1;
24219            if next_offset >= end_offset {
24220                return Ok(());
24221            }
24222
24223            // Decode unknown envelopes for gaps in ordinals.
24224            while _next_ordinal_to_read < 2 {
24225                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24226                _next_ordinal_to_read += 1;
24227                next_offset += envelope_size;
24228            }
24229
24230            let next_out_of_line = decoder.next_out_of_line();
24231            let handles_before = decoder.remaining_handles();
24232            if let Some((inlined, num_bytes, num_handles)) =
24233                fidl::encoding::decode_envelope_header(decoder, next_offset)?
24234            {
24235                let member_inline_size =
24236                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
24237                if inlined != (member_inline_size <= 4) {
24238                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
24239                }
24240                let inner_offset;
24241                let mut inner_depth = depth.clone();
24242                if inlined {
24243                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
24244                    inner_offset = next_offset;
24245                } else {
24246                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
24247                    inner_depth.increment()?;
24248                }
24249                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
24250                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
24251                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
24252                {
24253                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
24254                }
24255                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
24256                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
24257                }
24258            }
24259
24260            next_offset += envelope_size;
24261            _next_ordinal_to_read += 1;
24262            if next_offset >= end_offset {
24263                return Ok(());
24264            }
24265
24266            // Decode unknown envelopes for gaps in ordinals.
24267            while _next_ordinal_to_read < 3 {
24268                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24269                _next_ordinal_to_read += 1;
24270                next_offset += envelope_size;
24271            }
24272
24273            let next_out_of_line = decoder.next_out_of_line();
24274            let handles_before = decoder.remaining_handles();
24275            if let Some((inlined, num_bytes, num_handles)) =
24276                fidl::encoding::decode_envelope_header(decoder, next_offset)?
24277            {
24278                let member_inline_size = <fidl::encoding::UnboundedVector<Ref> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
24279                if inlined != (member_inline_size <= 4) {
24280                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
24281                }
24282                let inner_offset;
24283                let mut inner_depth = depth.clone();
24284                if inlined {
24285                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
24286                    inner_offset = next_offset;
24287                } else {
24288                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
24289                    inner_depth.increment()?;
24290                }
24291                let val_ref = self.scope.get_or_insert_with(|| {
24292                    fidl::new_empty!(fidl::encoding::UnboundedVector<Ref>, D)
24293                });
24294                fidl::decode!(
24295                    fidl::encoding::UnboundedVector<Ref>,
24296                    D,
24297                    val_ref,
24298                    decoder,
24299                    inner_offset,
24300                    inner_depth
24301                )?;
24302                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
24303                {
24304                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
24305                }
24306                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
24307                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
24308                }
24309            }
24310
24311            next_offset += envelope_size;
24312            _next_ordinal_to_read += 1;
24313            if next_offset >= end_offset {
24314                return Ok(());
24315            }
24316
24317            // Decode unknown envelopes for gaps in ordinals.
24318            while _next_ordinal_to_read < 4 {
24319                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24320                _next_ordinal_to_read += 1;
24321                next_offset += envelope_size;
24322            }
24323
24324            let next_out_of_line = decoder.next_out_of_line();
24325            let handles_before = decoder.remaining_handles();
24326            if let Some((inlined, num_bytes, num_handles)) =
24327                fidl::encoding::decode_envelope_header(decoder, next_offset)?
24328            {
24329                let member_inline_size =
24330                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
24331                        decoder.context,
24332                    );
24333                if inlined != (member_inline_size <= 4) {
24334                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
24335                }
24336                let inner_offset;
24337                let mut inner_depth = depth.clone();
24338                if inlined {
24339                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
24340                    inner_offset = next_offset;
24341                } else {
24342                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
24343                    inner_depth.increment()?;
24344                }
24345                let val_ref = self
24346                    .target_path
24347                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
24348                fidl::decode!(
24349                    fidl::encoding::BoundedString<100>,
24350                    D,
24351                    val_ref,
24352                    decoder,
24353                    inner_offset,
24354                    inner_depth
24355                )?;
24356                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
24357                {
24358                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
24359                }
24360                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
24361                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
24362                }
24363            }
24364
24365            next_offset += envelope_size;
24366            _next_ordinal_to_read += 1;
24367            if next_offset >= end_offset {
24368                return Ok(());
24369            }
24370
24371            // Decode unknown envelopes for gaps in ordinals.
24372            while _next_ordinal_to_read < 5 {
24373                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24374                _next_ordinal_to_read += 1;
24375                next_offset += envelope_size;
24376            }
24377
24378            let next_out_of_line = decoder.next_out_of_line();
24379            let handles_before = decoder.remaining_handles();
24380            if let Some((inlined, num_bytes, num_handles)) =
24381                fidl::encoding::decode_envelope_header(decoder, next_offset)?
24382            {
24383                let member_inline_size =
24384                    <Availability as fidl::encoding::TypeMarker>::inline_size(decoder.context);
24385                if inlined != (member_inline_size <= 4) {
24386                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
24387                }
24388                let inner_offset;
24389                let mut inner_depth = depth.clone();
24390                if inlined {
24391                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
24392                    inner_offset = next_offset;
24393                } else {
24394                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
24395                    inner_depth.increment()?;
24396                }
24397                let val_ref =
24398                    self.availability.get_or_insert_with(|| fidl::new_empty!(Availability, D));
24399                fidl::decode!(Availability, D, val_ref, decoder, inner_offset, inner_depth)?;
24400                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
24401                {
24402                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
24403                }
24404                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
24405                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
24406                }
24407            }
24408
24409            next_offset += envelope_size;
24410            _next_ordinal_to_read += 1;
24411            if next_offset >= end_offset {
24412                return Ok(());
24413            }
24414
24415            // Decode unknown envelopes for gaps in ordinals.
24416            while _next_ordinal_to_read < 6 {
24417                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24418                _next_ordinal_to_read += 1;
24419                next_offset += envelope_size;
24420            }
24421
24422            let next_out_of_line = decoder.next_out_of_line();
24423            let handles_before = decoder.remaining_handles();
24424            if let Some((inlined, num_bytes, num_handles)) =
24425                fidl::encoding::decode_envelope_header(decoder, next_offset)?
24426            {
24427                let member_inline_size = <fidl_fuchsia_data__common::Dictionary as fidl::encoding::TypeMarker>::inline_size(decoder.context);
24428                if inlined != (member_inline_size <= 4) {
24429                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
24430                }
24431                let inner_offset;
24432                let mut inner_depth = depth.clone();
24433                if inlined {
24434                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
24435                    inner_offset = next_offset;
24436                } else {
24437                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
24438                    inner_depth.increment()?;
24439                }
24440                let val_ref = self.filter.get_or_insert_with(|| {
24441                    fidl::new_empty!(fidl_fuchsia_data__common::Dictionary, D)
24442                });
24443                fidl::decode!(
24444                    fidl_fuchsia_data__common::Dictionary,
24445                    D,
24446                    val_ref,
24447                    decoder,
24448                    inner_offset,
24449                    inner_depth
24450                )?;
24451                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
24452                {
24453                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
24454                }
24455                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
24456                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
24457                }
24458            }
24459
24460            next_offset += envelope_size;
24461
24462            // Decode the remaining unknown envelopes.
24463            while next_offset < end_offset {
24464                _next_ordinal_to_read += 1;
24465                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24466                next_offset += envelope_size;
24467            }
24468
24469            Ok(())
24470        }
24471    }
24472
24473    impl UseProtocol {
24474        #[inline(always)]
24475        fn max_ordinal_present(&self) -> u64 {
24476            if let Some(_) = self.numbered_handle {
24477                return 7;
24478            }
24479            if let Some(_) = self.source_dictionary {
24480                return 6;
24481            }
24482            if let Some(_) = self.availability {
24483                return 5;
24484            }
24485            if let Some(_) = self.dependency_type {
24486                return 4;
24487            }
24488            if let Some(_) = self.target_path {
24489                return 3;
24490            }
24491            if let Some(_) = self.source_name {
24492                return 2;
24493            }
24494            if let Some(_) = self.source {
24495                return 1;
24496            }
24497            0
24498        }
24499    }
24500
24501    impl fidl::encoding::ValueTypeMarker for UseProtocol {
24502        type Borrowed<'a> = &'a Self;
24503        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
24504            value
24505        }
24506    }
24507
24508    unsafe impl fidl::encoding::TypeMarker for UseProtocol {
24509        type Owned = Self;
24510
24511        #[inline(always)]
24512        fn inline_align(_context: fidl::encoding::Context) -> usize {
24513            8
24514        }
24515
24516        #[inline(always)]
24517        fn inline_size(_context: fidl::encoding::Context) -> usize {
24518            16
24519        }
24520    }
24521
24522    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<UseProtocol, D>
24523        for &UseProtocol
24524    {
24525        unsafe fn encode(
24526            self,
24527            encoder: &mut fidl::encoding::Encoder<'_, D>,
24528            offset: usize,
24529            mut depth: fidl::encoding::Depth,
24530        ) -> fidl::Result<()> {
24531            encoder.debug_check_bounds::<UseProtocol>(offset);
24532            // Vector header
24533            let max_ordinal: u64 = self.max_ordinal_present();
24534            encoder.write_num(max_ordinal, offset);
24535            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
24536            // Calling encoder.out_of_line_offset(0) is not allowed.
24537            if max_ordinal == 0 {
24538                return Ok(());
24539            }
24540            depth.increment()?;
24541            let envelope_size = 8;
24542            let bytes_len = max_ordinal as usize * envelope_size;
24543            #[allow(unused_variables)]
24544            let offset = encoder.out_of_line_offset(bytes_len);
24545            let mut _prev_end_offset: usize = 0;
24546            if 1 > max_ordinal {
24547                return Ok(());
24548            }
24549
24550            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
24551            // are envelope_size bytes.
24552            let cur_offset: usize = (1 - 1) * envelope_size;
24553
24554            // Zero reserved fields.
24555            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
24556
24557            // Safety:
24558            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
24559            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
24560            //   envelope_size bytes, there is always sufficient room.
24561            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
24562                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
24563                encoder,
24564                offset + cur_offset,
24565                depth,
24566            )?;
24567
24568            _prev_end_offset = cur_offset + envelope_size;
24569            if 2 > max_ordinal {
24570                return Ok(());
24571            }
24572
24573            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
24574            // are envelope_size bytes.
24575            let cur_offset: usize = (2 - 1) * envelope_size;
24576
24577            // Zero reserved fields.
24578            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
24579
24580            // Safety:
24581            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
24582            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
24583            //   envelope_size bytes, there is always sufficient room.
24584            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
24585                self.source_name.as_ref().map(
24586                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
24587                ),
24588                encoder,
24589                offset + cur_offset,
24590                depth,
24591            )?;
24592
24593            _prev_end_offset = cur_offset + envelope_size;
24594            if 3 > max_ordinal {
24595                return Ok(());
24596            }
24597
24598            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
24599            // are envelope_size bytes.
24600            let cur_offset: usize = (3 - 1) * envelope_size;
24601
24602            // Zero reserved fields.
24603            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
24604
24605            // Safety:
24606            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
24607            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
24608            //   envelope_size bytes, there is always sufficient room.
24609            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
24610            self.target_path.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
24611            encoder, offset + cur_offset, depth
24612        )?;
24613
24614            _prev_end_offset = cur_offset + envelope_size;
24615            if 4 > max_ordinal {
24616                return Ok(());
24617            }
24618
24619            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
24620            // are envelope_size bytes.
24621            let cur_offset: usize = (4 - 1) * envelope_size;
24622
24623            // Zero reserved fields.
24624            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
24625
24626            // Safety:
24627            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
24628            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
24629            //   envelope_size bytes, there is always sufficient room.
24630            fidl::encoding::encode_in_envelope_optional::<DependencyType, D>(
24631                self.dependency_type
24632                    .as_ref()
24633                    .map(<DependencyType as fidl::encoding::ValueTypeMarker>::borrow),
24634                encoder,
24635                offset + cur_offset,
24636                depth,
24637            )?;
24638
24639            _prev_end_offset = cur_offset + envelope_size;
24640            if 5 > max_ordinal {
24641                return Ok(());
24642            }
24643
24644            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
24645            // are envelope_size bytes.
24646            let cur_offset: usize = (5 - 1) * envelope_size;
24647
24648            // Zero reserved fields.
24649            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
24650
24651            // Safety:
24652            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
24653            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
24654            //   envelope_size bytes, there is always sufficient room.
24655            fidl::encoding::encode_in_envelope_optional::<Availability, D>(
24656                self.availability
24657                    .as_ref()
24658                    .map(<Availability as fidl::encoding::ValueTypeMarker>::borrow),
24659                encoder,
24660                offset + cur_offset,
24661                depth,
24662            )?;
24663
24664            _prev_end_offset = cur_offset + envelope_size;
24665            if 6 > max_ordinal {
24666                return Ok(());
24667            }
24668
24669            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
24670            // are envelope_size bytes.
24671            let cur_offset: usize = (6 - 1) * envelope_size;
24672
24673            // Zero reserved fields.
24674            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
24675
24676            // Safety:
24677            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
24678            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
24679            //   envelope_size bytes, there is always sufficient room.
24680            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
24681            self.source_dictionary.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
24682            encoder, offset + cur_offset, depth
24683        )?;
24684
24685            _prev_end_offset = cur_offset + envelope_size;
24686            if 7 > max_ordinal {
24687                return Ok(());
24688            }
24689
24690            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
24691            // are envelope_size bytes.
24692            let cur_offset: usize = (7 - 1) * envelope_size;
24693
24694            // Zero reserved fields.
24695            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
24696
24697            // Safety:
24698            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
24699            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
24700            //   envelope_size bytes, there is always sufficient room.
24701            fidl::encoding::encode_in_envelope_optional::<u8, D>(
24702                self.numbered_handle.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
24703                encoder,
24704                offset + cur_offset,
24705                depth,
24706            )?;
24707
24708            _prev_end_offset = cur_offset + envelope_size;
24709
24710            Ok(())
24711        }
24712    }
24713
24714    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for UseProtocol {
24715        #[inline(always)]
24716        fn new_empty() -> Self {
24717            Self::default()
24718        }
24719
24720        unsafe fn decode(
24721            &mut self,
24722            decoder: &mut fidl::encoding::Decoder<'_, D>,
24723            offset: usize,
24724            mut depth: fidl::encoding::Depth,
24725        ) -> fidl::Result<()> {
24726            decoder.debug_check_bounds::<Self>(offset);
24727            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
24728                None => return Err(fidl::Error::NotNullable),
24729                Some(len) => len,
24730            };
24731            // Calling decoder.out_of_line_offset(0) is not allowed.
24732            if len == 0 {
24733                return Ok(());
24734            };
24735            depth.increment()?;
24736            let envelope_size = 8;
24737            let bytes_len = len * envelope_size;
24738            let offset = decoder.out_of_line_offset(bytes_len)?;
24739            // Decode the envelope for each type.
24740            let mut _next_ordinal_to_read = 0;
24741            let mut next_offset = offset;
24742            let end_offset = offset + bytes_len;
24743            _next_ordinal_to_read += 1;
24744            if next_offset >= end_offset {
24745                return Ok(());
24746            }
24747
24748            // Decode unknown envelopes for gaps in ordinals.
24749            while _next_ordinal_to_read < 1 {
24750                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24751                _next_ordinal_to_read += 1;
24752                next_offset += envelope_size;
24753            }
24754
24755            let next_out_of_line = decoder.next_out_of_line();
24756            let handles_before = decoder.remaining_handles();
24757            if let Some((inlined, num_bytes, num_handles)) =
24758                fidl::encoding::decode_envelope_header(decoder, next_offset)?
24759            {
24760                let member_inline_size =
24761                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
24762                if inlined != (member_inline_size <= 4) {
24763                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
24764                }
24765                let inner_offset;
24766                let mut inner_depth = depth.clone();
24767                if inlined {
24768                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
24769                    inner_offset = next_offset;
24770                } else {
24771                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
24772                    inner_depth.increment()?;
24773                }
24774                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
24775                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
24776                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
24777                {
24778                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
24779                }
24780                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
24781                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
24782                }
24783            }
24784
24785            next_offset += envelope_size;
24786            _next_ordinal_to_read += 1;
24787            if next_offset >= end_offset {
24788                return Ok(());
24789            }
24790
24791            // Decode unknown envelopes for gaps in ordinals.
24792            while _next_ordinal_to_read < 2 {
24793                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24794                _next_ordinal_to_read += 1;
24795                next_offset += envelope_size;
24796            }
24797
24798            let next_out_of_line = decoder.next_out_of_line();
24799            let handles_before = decoder.remaining_handles();
24800            if let Some((inlined, num_bytes, num_handles)) =
24801                fidl::encoding::decode_envelope_header(decoder, next_offset)?
24802            {
24803                let member_inline_size =
24804                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
24805                        decoder.context,
24806                    );
24807                if inlined != (member_inline_size <= 4) {
24808                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
24809                }
24810                let inner_offset;
24811                let mut inner_depth = depth.clone();
24812                if inlined {
24813                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
24814                    inner_offset = next_offset;
24815                } else {
24816                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
24817                    inner_depth.increment()?;
24818                }
24819                let val_ref = self
24820                    .source_name
24821                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
24822                fidl::decode!(
24823                    fidl::encoding::BoundedString<100>,
24824                    D,
24825                    val_ref,
24826                    decoder,
24827                    inner_offset,
24828                    inner_depth
24829                )?;
24830                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
24831                {
24832                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
24833                }
24834                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
24835                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
24836                }
24837            }
24838
24839            next_offset += envelope_size;
24840            _next_ordinal_to_read += 1;
24841            if next_offset >= end_offset {
24842                return Ok(());
24843            }
24844
24845            // Decode unknown envelopes for gaps in ordinals.
24846            while _next_ordinal_to_read < 3 {
24847                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24848                _next_ordinal_to_read += 1;
24849                next_offset += envelope_size;
24850            }
24851
24852            let next_out_of_line = decoder.next_out_of_line();
24853            let handles_before = decoder.remaining_handles();
24854            if let Some((inlined, num_bytes, num_handles)) =
24855                fidl::encoding::decode_envelope_header(decoder, next_offset)?
24856            {
24857                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
24858                if inlined != (member_inline_size <= 4) {
24859                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
24860                }
24861                let inner_offset;
24862                let mut inner_depth = depth.clone();
24863                if inlined {
24864                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
24865                    inner_offset = next_offset;
24866                } else {
24867                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
24868                    inner_depth.increment()?;
24869                }
24870                let val_ref = self.target_path.get_or_insert_with(|| {
24871                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
24872                });
24873                fidl::decode!(
24874                    fidl::encoding::BoundedString<1024>,
24875                    D,
24876                    val_ref,
24877                    decoder,
24878                    inner_offset,
24879                    inner_depth
24880                )?;
24881                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
24882                {
24883                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
24884                }
24885                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
24886                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
24887                }
24888            }
24889
24890            next_offset += envelope_size;
24891            _next_ordinal_to_read += 1;
24892            if next_offset >= end_offset {
24893                return Ok(());
24894            }
24895
24896            // Decode unknown envelopes for gaps in ordinals.
24897            while _next_ordinal_to_read < 4 {
24898                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24899                _next_ordinal_to_read += 1;
24900                next_offset += envelope_size;
24901            }
24902
24903            let next_out_of_line = decoder.next_out_of_line();
24904            let handles_before = decoder.remaining_handles();
24905            if let Some((inlined, num_bytes, num_handles)) =
24906                fidl::encoding::decode_envelope_header(decoder, next_offset)?
24907            {
24908                let member_inline_size =
24909                    <DependencyType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
24910                if inlined != (member_inline_size <= 4) {
24911                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
24912                }
24913                let inner_offset;
24914                let mut inner_depth = depth.clone();
24915                if inlined {
24916                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
24917                    inner_offset = next_offset;
24918                } else {
24919                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
24920                    inner_depth.increment()?;
24921                }
24922                let val_ref =
24923                    self.dependency_type.get_or_insert_with(|| fidl::new_empty!(DependencyType, D));
24924                fidl::decode!(DependencyType, D, val_ref, decoder, inner_offset, inner_depth)?;
24925                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
24926                {
24927                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
24928                }
24929                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
24930                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
24931                }
24932            }
24933
24934            next_offset += envelope_size;
24935            _next_ordinal_to_read += 1;
24936            if next_offset >= end_offset {
24937                return Ok(());
24938            }
24939
24940            // Decode unknown envelopes for gaps in ordinals.
24941            while _next_ordinal_to_read < 5 {
24942                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24943                _next_ordinal_to_read += 1;
24944                next_offset += envelope_size;
24945            }
24946
24947            let next_out_of_line = decoder.next_out_of_line();
24948            let handles_before = decoder.remaining_handles();
24949            if let Some((inlined, num_bytes, num_handles)) =
24950                fidl::encoding::decode_envelope_header(decoder, next_offset)?
24951            {
24952                let member_inline_size =
24953                    <Availability as fidl::encoding::TypeMarker>::inline_size(decoder.context);
24954                if inlined != (member_inline_size <= 4) {
24955                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
24956                }
24957                let inner_offset;
24958                let mut inner_depth = depth.clone();
24959                if inlined {
24960                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
24961                    inner_offset = next_offset;
24962                } else {
24963                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
24964                    inner_depth.increment()?;
24965                }
24966                let val_ref =
24967                    self.availability.get_or_insert_with(|| fidl::new_empty!(Availability, D));
24968                fidl::decode!(Availability, D, val_ref, decoder, inner_offset, inner_depth)?;
24969                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
24970                {
24971                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
24972                }
24973                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
24974                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
24975                }
24976            }
24977
24978            next_offset += envelope_size;
24979            _next_ordinal_to_read += 1;
24980            if next_offset >= end_offset {
24981                return Ok(());
24982            }
24983
24984            // Decode unknown envelopes for gaps in ordinals.
24985            while _next_ordinal_to_read < 6 {
24986                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24987                _next_ordinal_to_read += 1;
24988                next_offset += envelope_size;
24989            }
24990
24991            let next_out_of_line = decoder.next_out_of_line();
24992            let handles_before = decoder.remaining_handles();
24993            if let Some((inlined, num_bytes, num_handles)) =
24994                fidl::encoding::decode_envelope_header(decoder, next_offset)?
24995            {
24996                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
24997                if inlined != (member_inline_size <= 4) {
24998                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
24999                }
25000                let inner_offset;
25001                let mut inner_depth = depth.clone();
25002                if inlined {
25003                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
25004                    inner_offset = next_offset;
25005                } else {
25006                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
25007                    inner_depth.increment()?;
25008                }
25009                let val_ref = self.source_dictionary.get_or_insert_with(|| {
25010                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
25011                });
25012                fidl::decode!(
25013                    fidl::encoding::BoundedString<1024>,
25014                    D,
25015                    val_ref,
25016                    decoder,
25017                    inner_offset,
25018                    inner_depth
25019                )?;
25020                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
25021                {
25022                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
25023                }
25024                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
25025                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
25026                }
25027            }
25028
25029            next_offset += envelope_size;
25030            _next_ordinal_to_read += 1;
25031            if next_offset >= end_offset {
25032                return Ok(());
25033            }
25034
25035            // Decode unknown envelopes for gaps in ordinals.
25036            while _next_ordinal_to_read < 7 {
25037                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25038                _next_ordinal_to_read += 1;
25039                next_offset += envelope_size;
25040            }
25041
25042            let next_out_of_line = decoder.next_out_of_line();
25043            let handles_before = decoder.remaining_handles();
25044            if let Some((inlined, num_bytes, num_handles)) =
25045                fidl::encoding::decode_envelope_header(decoder, next_offset)?
25046            {
25047                let member_inline_size =
25048                    <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
25049                if inlined != (member_inline_size <= 4) {
25050                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
25051                }
25052                let inner_offset;
25053                let mut inner_depth = depth.clone();
25054                if inlined {
25055                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
25056                    inner_offset = next_offset;
25057                } else {
25058                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
25059                    inner_depth.increment()?;
25060                }
25061                let val_ref = self.numbered_handle.get_or_insert_with(|| fidl::new_empty!(u8, D));
25062                fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
25063                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
25064                {
25065                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
25066                }
25067                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
25068                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
25069                }
25070            }
25071
25072            next_offset += envelope_size;
25073
25074            // Decode the remaining unknown envelopes.
25075            while next_offset < end_offset {
25076                _next_ordinal_to_read += 1;
25077                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25078                next_offset += envelope_size;
25079            }
25080
25081            Ok(())
25082        }
25083    }
25084
25085    impl UseRunner {
25086        #[inline(always)]
25087        fn max_ordinal_present(&self) -> u64 {
25088            if let Some(_) = self.source_dictionary {
25089                return 3;
25090            }
25091            if let Some(_) = self.source_name {
25092                return 2;
25093            }
25094            if let Some(_) = self.source {
25095                return 1;
25096            }
25097            0
25098        }
25099    }
25100
25101    impl fidl::encoding::ValueTypeMarker for UseRunner {
25102        type Borrowed<'a> = &'a Self;
25103        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
25104            value
25105        }
25106    }
25107
25108    unsafe impl fidl::encoding::TypeMarker for UseRunner {
25109        type Owned = Self;
25110
25111        #[inline(always)]
25112        fn inline_align(_context: fidl::encoding::Context) -> usize {
25113            8
25114        }
25115
25116        #[inline(always)]
25117        fn inline_size(_context: fidl::encoding::Context) -> usize {
25118            16
25119        }
25120    }
25121
25122    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<UseRunner, D>
25123        for &UseRunner
25124    {
25125        unsafe fn encode(
25126            self,
25127            encoder: &mut fidl::encoding::Encoder<'_, D>,
25128            offset: usize,
25129            mut depth: fidl::encoding::Depth,
25130        ) -> fidl::Result<()> {
25131            encoder.debug_check_bounds::<UseRunner>(offset);
25132            // Vector header
25133            let max_ordinal: u64 = self.max_ordinal_present();
25134            encoder.write_num(max_ordinal, offset);
25135            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
25136            // Calling encoder.out_of_line_offset(0) is not allowed.
25137            if max_ordinal == 0 {
25138                return Ok(());
25139            }
25140            depth.increment()?;
25141            let envelope_size = 8;
25142            let bytes_len = max_ordinal as usize * envelope_size;
25143            #[allow(unused_variables)]
25144            let offset = encoder.out_of_line_offset(bytes_len);
25145            let mut _prev_end_offset: usize = 0;
25146            if 1 > max_ordinal {
25147                return Ok(());
25148            }
25149
25150            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
25151            // are envelope_size bytes.
25152            let cur_offset: usize = (1 - 1) * envelope_size;
25153
25154            // Zero reserved fields.
25155            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
25156
25157            // Safety:
25158            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
25159            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
25160            //   envelope_size bytes, there is always sufficient room.
25161            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
25162                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
25163                encoder,
25164                offset + cur_offset,
25165                depth,
25166            )?;
25167
25168            _prev_end_offset = cur_offset + envelope_size;
25169            if 2 > max_ordinal {
25170                return Ok(());
25171            }
25172
25173            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
25174            // are envelope_size bytes.
25175            let cur_offset: usize = (2 - 1) * envelope_size;
25176
25177            // Zero reserved fields.
25178            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
25179
25180            // Safety:
25181            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
25182            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
25183            //   envelope_size bytes, there is always sufficient room.
25184            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
25185                self.source_name.as_ref().map(
25186                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
25187                ),
25188                encoder,
25189                offset + cur_offset,
25190                depth,
25191            )?;
25192
25193            _prev_end_offset = cur_offset + envelope_size;
25194            if 3 > max_ordinal {
25195                return Ok(());
25196            }
25197
25198            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
25199            // are envelope_size bytes.
25200            let cur_offset: usize = (3 - 1) * envelope_size;
25201
25202            // Zero reserved fields.
25203            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
25204
25205            // Safety:
25206            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
25207            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
25208            //   envelope_size bytes, there is always sufficient room.
25209            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
25210            self.source_dictionary.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
25211            encoder, offset + cur_offset, depth
25212        )?;
25213
25214            _prev_end_offset = cur_offset + envelope_size;
25215
25216            Ok(())
25217        }
25218    }
25219
25220    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for UseRunner {
25221        #[inline(always)]
25222        fn new_empty() -> Self {
25223            Self::default()
25224        }
25225
25226        unsafe fn decode(
25227            &mut self,
25228            decoder: &mut fidl::encoding::Decoder<'_, D>,
25229            offset: usize,
25230            mut depth: fidl::encoding::Depth,
25231        ) -> fidl::Result<()> {
25232            decoder.debug_check_bounds::<Self>(offset);
25233            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
25234                None => return Err(fidl::Error::NotNullable),
25235                Some(len) => len,
25236            };
25237            // Calling decoder.out_of_line_offset(0) is not allowed.
25238            if len == 0 {
25239                return Ok(());
25240            };
25241            depth.increment()?;
25242            let envelope_size = 8;
25243            let bytes_len = len * envelope_size;
25244            let offset = decoder.out_of_line_offset(bytes_len)?;
25245            // Decode the envelope for each type.
25246            let mut _next_ordinal_to_read = 0;
25247            let mut next_offset = offset;
25248            let end_offset = offset + bytes_len;
25249            _next_ordinal_to_read += 1;
25250            if next_offset >= end_offset {
25251                return Ok(());
25252            }
25253
25254            // Decode unknown envelopes for gaps in ordinals.
25255            while _next_ordinal_to_read < 1 {
25256                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25257                _next_ordinal_to_read += 1;
25258                next_offset += envelope_size;
25259            }
25260
25261            let next_out_of_line = decoder.next_out_of_line();
25262            let handles_before = decoder.remaining_handles();
25263            if let Some((inlined, num_bytes, num_handles)) =
25264                fidl::encoding::decode_envelope_header(decoder, next_offset)?
25265            {
25266                let member_inline_size =
25267                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
25268                if inlined != (member_inline_size <= 4) {
25269                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
25270                }
25271                let inner_offset;
25272                let mut inner_depth = depth.clone();
25273                if inlined {
25274                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
25275                    inner_offset = next_offset;
25276                } else {
25277                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
25278                    inner_depth.increment()?;
25279                }
25280                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
25281                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
25282                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
25283                {
25284                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
25285                }
25286                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
25287                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
25288                }
25289            }
25290
25291            next_offset += envelope_size;
25292            _next_ordinal_to_read += 1;
25293            if next_offset >= end_offset {
25294                return Ok(());
25295            }
25296
25297            // Decode unknown envelopes for gaps in ordinals.
25298            while _next_ordinal_to_read < 2 {
25299                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25300                _next_ordinal_to_read += 1;
25301                next_offset += envelope_size;
25302            }
25303
25304            let next_out_of_line = decoder.next_out_of_line();
25305            let handles_before = decoder.remaining_handles();
25306            if let Some((inlined, num_bytes, num_handles)) =
25307                fidl::encoding::decode_envelope_header(decoder, next_offset)?
25308            {
25309                let member_inline_size =
25310                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
25311                        decoder.context,
25312                    );
25313                if inlined != (member_inline_size <= 4) {
25314                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
25315                }
25316                let inner_offset;
25317                let mut inner_depth = depth.clone();
25318                if inlined {
25319                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
25320                    inner_offset = next_offset;
25321                } else {
25322                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
25323                    inner_depth.increment()?;
25324                }
25325                let val_ref = self
25326                    .source_name
25327                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
25328                fidl::decode!(
25329                    fidl::encoding::BoundedString<100>,
25330                    D,
25331                    val_ref,
25332                    decoder,
25333                    inner_offset,
25334                    inner_depth
25335                )?;
25336                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
25337                {
25338                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
25339                }
25340                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
25341                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
25342                }
25343            }
25344
25345            next_offset += envelope_size;
25346            _next_ordinal_to_read += 1;
25347            if next_offset >= end_offset {
25348                return Ok(());
25349            }
25350
25351            // Decode unknown envelopes for gaps in ordinals.
25352            while _next_ordinal_to_read < 3 {
25353                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25354                _next_ordinal_to_read += 1;
25355                next_offset += envelope_size;
25356            }
25357
25358            let next_out_of_line = decoder.next_out_of_line();
25359            let handles_before = decoder.remaining_handles();
25360            if let Some((inlined, num_bytes, num_handles)) =
25361                fidl::encoding::decode_envelope_header(decoder, next_offset)?
25362            {
25363                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
25364                if inlined != (member_inline_size <= 4) {
25365                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
25366                }
25367                let inner_offset;
25368                let mut inner_depth = depth.clone();
25369                if inlined {
25370                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
25371                    inner_offset = next_offset;
25372                } else {
25373                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
25374                    inner_depth.increment()?;
25375                }
25376                let val_ref = self.source_dictionary.get_or_insert_with(|| {
25377                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
25378                });
25379                fidl::decode!(
25380                    fidl::encoding::BoundedString<1024>,
25381                    D,
25382                    val_ref,
25383                    decoder,
25384                    inner_offset,
25385                    inner_depth
25386                )?;
25387                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
25388                {
25389                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
25390                }
25391                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
25392                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
25393                }
25394            }
25395
25396            next_offset += envelope_size;
25397
25398            // Decode the remaining unknown envelopes.
25399            while next_offset < end_offset {
25400                _next_ordinal_to_read += 1;
25401                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25402                next_offset += envelope_size;
25403            }
25404
25405            Ok(())
25406        }
25407    }
25408
25409    impl UseService {
25410        #[inline(always)]
25411        fn max_ordinal_present(&self) -> u64 {
25412            if let Some(_) = self.source_dictionary {
25413                return 6;
25414            }
25415            if let Some(_) = self.availability {
25416                return 5;
25417            }
25418            if let Some(_) = self.dependency_type {
25419                return 4;
25420            }
25421            if let Some(_) = self.target_path {
25422                return 3;
25423            }
25424            if let Some(_) = self.source_name {
25425                return 2;
25426            }
25427            if let Some(_) = self.source {
25428                return 1;
25429            }
25430            0
25431        }
25432    }
25433
25434    impl fidl::encoding::ValueTypeMarker for UseService {
25435        type Borrowed<'a> = &'a Self;
25436        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
25437            value
25438        }
25439    }
25440
25441    unsafe impl fidl::encoding::TypeMarker for UseService {
25442        type Owned = Self;
25443
25444        #[inline(always)]
25445        fn inline_align(_context: fidl::encoding::Context) -> usize {
25446            8
25447        }
25448
25449        #[inline(always)]
25450        fn inline_size(_context: fidl::encoding::Context) -> usize {
25451            16
25452        }
25453    }
25454
25455    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<UseService, D>
25456        for &UseService
25457    {
25458        unsafe fn encode(
25459            self,
25460            encoder: &mut fidl::encoding::Encoder<'_, D>,
25461            offset: usize,
25462            mut depth: fidl::encoding::Depth,
25463        ) -> fidl::Result<()> {
25464            encoder.debug_check_bounds::<UseService>(offset);
25465            // Vector header
25466            let max_ordinal: u64 = self.max_ordinal_present();
25467            encoder.write_num(max_ordinal, offset);
25468            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
25469            // Calling encoder.out_of_line_offset(0) is not allowed.
25470            if max_ordinal == 0 {
25471                return Ok(());
25472            }
25473            depth.increment()?;
25474            let envelope_size = 8;
25475            let bytes_len = max_ordinal as usize * envelope_size;
25476            #[allow(unused_variables)]
25477            let offset = encoder.out_of_line_offset(bytes_len);
25478            let mut _prev_end_offset: usize = 0;
25479            if 1 > max_ordinal {
25480                return Ok(());
25481            }
25482
25483            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
25484            // are envelope_size bytes.
25485            let cur_offset: usize = (1 - 1) * envelope_size;
25486
25487            // Zero reserved fields.
25488            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
25489
25490            // Safety:
25491            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
25492            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
25493            //   envelope_size bytes, there is always sufficient room.
25494            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
25495                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
25496                encoder,
25497                offset + cur_offset,
25498                depth,
25499            )?;
25500
25501            _prev_end_offset = cur_offset + envelope_size;
25502            if 2 > max_ordinal {
25503                return Ok(());
25504            }
25505
25506            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
25507            // are envelope_size bytes.
25508            let cur_offset: usize = (2 - 1) * envelope_size;
25509
25510            // Zero reserved fields.
25511            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
25512
25513            // Safety:
25514            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
25515            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
25516            //   envelope_size bytes, there is always sufficient room.
25517            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
25518                self.source_name.as_ref().map(
25519                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
25520                ),
25521                encoder,
25522                offset + cur_offset,
25523                depth,
25524            )?;
25525
25526            _prev_end_offset = cur_offset + envelope_size;
25527            if 3 > max_ordinal {
25528                return Ok(());
25529            }
25530
25531            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
25532            // are envelope_size bytes.
25533            let cur_offset: usize = (3 - 1) * envelope_size;
25534
25535            // Zero reserved fields.
25536            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
25537
25538            // Safety:
25539            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
25540            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
25541            //   envelope_size bytes, there is always sufficient room.
25542            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
25543            self.target_path.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
25544            encoder, offset + cur_offset, depth
25545        )?;
25546
25547            _prev_end_offset = cur_offset + envelope_size;
25548            if 4 > max_ordinal {
25549                return Ok(());
25550            }
25551
25552            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
25553            // are envelope_size bytes.
25554            let cur_offset: usize = (4 - 1) * envelope_size;
25555
25556            // Zero reserved fields.
25557            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
25558
25559            // Safety:
25560            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
25561            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
25562            //   envelope_size bytes, there is always sufficient room.
25563            fidl::encoding::encode_in_envelope_optional::<DependencyType, D>(
25564                self.dependency_type
25565                    .as_ref()
25566                    .map(<DependencyType as fidl::encoding::ValueTypeMarker>::borrow),
25567                encoder,
25568                offset + cur_offset,
25569                depth,
25570            )?;
25571
25572            _prev_end_offset = cur_offset + envelope_size;
25573            if 5 > max_ordinal {
25574                return Ok(());
25575            }
25576
25577            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
25578            // are envelope_size bytes.
25579            let cur_offset: usize = (5 - 1) * envelope_size;
25580
25581            // Zero reserved fields.
25582            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
25583
25584            // Safety:
25585            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
25586            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
25587            //   envelope_size bytes, there is always sufficient room.
25588            fidl::encoding::encode_in_envelope_optional::<Availability, D>(
25589                self.availability
25590                    .as_ref()
25591                    .map(<Availability as fidl::encoding::ValueTypeMarker>::borrow),
25592                encoder,
25593                offset + cur_offset,
25594                depth,
25595            )?;
25596
25597            _prev_end_offset = cur_offset + envelope_size;
25598            if 6 > max_ordinal {
25599                return Ok(());
25600            }
25601
25602            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
25603            // are envelope_size bytes.
25604            let cur_offset: usize = (6 - 1) * envelope_size;
25605
25606            // Zero reserved fields.
25607            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
25608
25609            // Safety:
25610            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
25611            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
25612            //   envelope_size bytes, there is always sufficient room.
25613            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
25614            self.source_dictionary.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
25615            encoder, offset + cur_offset, depth
25616        )?;
25617
25618            _prev_end_offset = cur_offset + envelope_size;
25619
25620            Ok(())
25621        }
25622    }
25623
25624    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for UseService {
25625        #[inline(always)]
25626        fn new_empty() -> Self {
25627            Self::default()
25628        }
25629
25630        unsafe fn decode(
25631            &mut self,
25632            decoder: &mut fidl::encoding::Decoder<'_, D>,
25633            offset: usize,
25634            mut depth: fidl::encoding::Depth,
25635        ) -> fidl::Result<()> {
25636            decoder.debug_check_bounds::<Self>(offset);
25637            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
25638                None => return Err(fidl::Error::NotNullable),
25639                Some(len) => len,
25640            };
25641            // Calling decoder.out_of_line_offset(0) is not allowed.
25642            if len == 0 {
25643                return Ok(());
25644            };
25645            depth.increment()?;
25646            let envelope_size = 8;
25647            let bytes_len = len * envelope_size;
25648            let offset = decoder.out_of_line_offset(bytes_len)?;
25649            // Decode the envelope for each type.
25650            let mut _next_ordinal_to_read = 0;
25651            let mut next_offset = offset;
25652            let end_offset = offset + bytes_len;
25653            _next_ordinal_to_read += 1;
25654            if next_offset >= end_offset {
25655                return Ok(());
25656            }
25657
25658            // Decode unknown envelopes for gaps in ordinals.
25659            while _next_ordinal_to_read < 1 {
25660                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25661                _next_ordinal_to_read += 1;
25662                next_offset += envelope_size;
25663            }
25664
25665            let next_out_of_line = decoder.next_out_of_line();
25666            let handles_before = decoder.remaining_handles();
25667            if let Some((inlined, num_bytes, num_handles)) =
25668                fidl::encoding::decode_envelope_header(decoder, next_offset)?
25669            {
25670                let member_inline_size =
25671                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
25672                if inlined != (member_inline_size <= 4) {
25673                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
25674                }
25675                let inner_offset;
25676                let mut inner_depth = depth.clone();
25677                if inlined {
25678                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
25679                    inner_offset = next_offset;
25680                } else {
25681                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
25682                    inner_depth.increment()?;
25683                }
25684                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
25685                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
25686                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
25687                {
25688                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
25689                }
25690                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
25691                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
25692                }
25693            }
25694
25695            next_offset += envelope_size;
25696            _next_ordinal_to_read += 1;
25697            if next_offset >= end_offset {
25698                return Ok(());
25699            }
25700
25701            // Decode unknown envelopes for gaps in ordinals.
25702            while _next_ordinal_to_read < 2 {
25703                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25704                _next_ordinal_to_read += 1;
25705                next_offset += envelope_size;
25706            }
25707
25708            let next_out_of_line = decoder.next_out_of_line();
25709            let handles_before = decoder.remaining_handles();
25710            if let Some((inlined, num_bytes, num_handles)) =
25711                fidl::encoding::decode_envelope_header(decoder, next_offset)?
25712            {
25713                let member_inline_size =
25714                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
25715                        decoder.context,
25716                    );
25717                if inlined != (member_inline_size <= 4) {
25718                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
25719                }
25720                let inner_offset;
25721                let mut inner_depth = depth.clone();
25722                if inlined {
25723                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
25724                    inner_offset = next_offset;
25725                } else {
25726                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
25727                    inner_depth.increment()?;
25728                }
25729                let val_ref = self
25730                    .source_name
25731                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
25732                fidl::decode!(
25733                    fidl::encoding::BoundedString<100>,
25734                    D,
25735                    val_ref,
25736                    decoder,
25737                    inner_offset,
25738                    inner_depth
25739                )?;
25740                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
25741                {
25742                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
25743                }
25744                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
25745                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
25746                }
25747            }
25748
25749            next_offset += envelope_size;
25750            _next_ordinal_to_read += 1;
25751            if next_offset >= end_offset {
25752                return Ok(());
25753            }
25754
25755            // Decode unknown envelopes for gaps in ordinals.
25756            while _next_ordinal_to_read < 3 {
25757                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25758                _next_ordinal_to_read += 1;
25759                next_offset += envelope_size;
25760            }
25761
25762            let next_out_of_line = decoder.next_out_of_line();
25763            let handles_before = decoder.remaining_handles();
25764            if let Some((inlined, num_bytes, num_handles)) =
25765                fidl::encoding::decode_envelope_header(decoder, next_offset)?
25766            {
25767                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
25768                if inlined != (member_inline_size <= 4) {
25769                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
25770                }
25771                let inner_offset;
25772                let mut inner_depth = depth.clone();
25773                if inlined {
25774                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
25775                    inner_offset = next_offset;
25776                } else {
25777                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
25778                    inner_depth.increment()?;
25779                }
25780                let val_ref = self.target_path.get_or_insert_with(|| {
25781                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
25782                });
25783                fidl::decode!(
25784                    fidl::encoding::BoundedString<1024>,
25785                    D,
25786                    val_ref,
25787                    decoder,
25788                    inner_offset,
25789                    inner_depth
25790                )?;
25791                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
25792                {
25793                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
25794                }
25795                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
25796                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
25797                }
25798            }
25799
25800            next_offset += envelope_size;
25801            _next_ordinal_to_read += 1;
25802            if next_offset >= end_offset {
25803                return Ok(());
25804            }
25805
25806            // Decode unknown envelopes for gaps in ordinals.
25807            while _next_ordinal_to_read < 4 {
25808                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25809                _next_ordinal_to_read += 1;
25810                next_offset += envelope_size;
25811            }
25812
25813            let next_out_of_line = decoder.next_out_of_line();
25814            let handles_before = decoder.remaining_handles();
25815            if let Some((inlined, num_bytes, num_handles)) =
25816                fidl::encoding::decode_envelope_header(decoder, next_offset)?
25817            {
25818                let member_inline_size =
25819                    <DependencyType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
25820                if inlined != (member_inline_size <= 4) {
25821                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
25822                }
25823                let inner_offset;
25824                let mut inner_depth = depth.clone();
25825                if inlined {
25826                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
25827                    inner_offset = next_offset;
25828                } else {
25829                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
25830                    inner_depth.increment()?;
25831                }
25832                let val_ref =
25833                    self.dependency_type.get_or_insert_with(|| fidl::new_empty!(DependencyType, D));
25834                fidl::decode!(DependencyType, D, val_ref, decoder, inner_offset, inner_depth)?;
25835                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
25836                {
25837                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
25838                }
25839                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
25840                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
25841                }
25842            }
25843
25844            next_offset += envelope_size;
25845            _next_ordinal_to_read += 1;
25846            if next_offset >= end_offset {
25847                return Ok(());
25848            }
25849
25850            // Decode unknown envelopes for gaps in ordinals.
25851            while _next_ordinal_to_read < 5 {
25852                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25853                _next_ordinal_to_read += 1;
25854                next_offset += envelope_size;
25855            }
25856
25857            let next_out_of_line = decoder.next_out_of_line();
25858            let handles_before = decoder.remaining_handles();
25859            if let Some((inlined, num_bytes, num_handles)) =
25860                fidl::encoding::decode_envelope_header(decoder, next_offset)?
25861            {
25862                let member_inline_size =
25863                    <Availability as fidl::encoding::TypeMarker>::inline_size(decoder.context);
25864                if inlined != (member_inline_size <= 4) {
25865                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
25866                }
25867                let inner_offset;
25868                let mut inner_depth = depth.clone();
25869                if inlined {
25870                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
25871                    inner_offset = next_offset;
25872                } else {
25873                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
25874                    inner_depth.increment()?;
25875                }
25876                let val_ref =
25877                    self.availability.get_or_insert_with(|| fidl::new_empty!(Availability, D));
25878                fidl::decode!(Availability, D, val_ref, decoder, inner_offset, inner_depth)?;
25879                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
25880                {
25881                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
25882                }
25883                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
25884                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
25885                }
25886            }
25887
25888            next_offset += envelope_size;
25889            _next_ordinal_to_read += 1;
25890            if next_offset >= end_offset {
25891                return Ok(());
25892            }
25893
25894            // Decode unknown envelopes for gaps in ordinals.
25895            while _next_ordinal_to_read < 6 {
25896                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25897                _next_ordinal_to_read += 1;
25898                next_offset += envelope_size;
25899            }
25900
25901            let next_out_of_line = decoder.next_out_of_line();
25902            let handles_before = decoder.remaining_handles();
25903            if let Some((inlined, num_bytes, num_handles)) =
25904                fidl::encoding::decode_envelope_header(decoder, next_offset)?
25905            {
25906                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
25907                if inlined != (member_inline_size <= 4) {
25908                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
25909                }
25910                let inner_offset;
25911                let mut inner_depth = depth.clone();
25912                if inlined {
25913                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
25914                    inner_offset = next_offset;
25915                } else {
25916                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
25917                    inner_depth.increment()?;
25918                }
25919                let val_ref = self.source_dictionary.get_or_insert_with(|| {
25920                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
25921                });
25922                fidl::decode!(
25923                    fidl::encoding::BoundedString<1024>,
25924                    D,
25925                    val_ref,
25926                    decoder,
25927                    inner_offset,
25928                    inner_depth
25929                )?;
25930                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
25931                {
25932                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
25933                }
25934                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
25935                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
25936                }
25937            }
25938
25939            next_offset += envelope_size;
25940
25941            // Decode the remaining unknown envelopes.
25942            while next_offset < end_offset {
25943                _next_ordinal_to_read += 1;
25944                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25945                next_offset += envelope_size;
25946            }
25947
25948            Ok(())
25949        }
25950    }
25951
25952    impl UseStorage {
25953        #[inline(always)]
25954        fn max_ordinal_present(&self) -> u64 {
25955            if let Some(_) = self.availability {
25956                return 3;
25957            }
25958            if let Some(_) = self.target_path {
25959                return 2;
25960            }
25961            if let Some(_) = self.source_name {
25962                return 1;
25963            }
25964            0
25965        }
25966    }
25967
25968    impl fidl::encoding::ValueTypeMarker for UseStorage {
25969        type Borrowed<'a> = &'a Self;
25970        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
25971            value
25972        }
25973    }
25974
25975    unsafe impl fidl::encoding::TypeMarker for UseStorage {
25976        type Owned = Self;
25977
25978        #[inline(always)]
25979        fn inline_align(_context: fidl::encoding::Context) -> usize {
25980            8
25981        }
25982
25983        #[inline(always)]
25984        fn inline_size(_context: fidl::encoding::Context) -> usize {
25985            16
25986        }
25987    }
25988
25989    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<UseStorage, D>
25990        for &UseStorage
25991    {
25992        unsafe fn encode(
25993            self,
25994            encoder: &mut fidl::encoding::Encoder<'_, D>,
25995            offset: usize,
25996            mut depth: fidl::encoding::Depth,
25997        ) -> fidl::Result<()> {
25998            encoder.debug_check_bounds::<UseStorage>(offset);
25999            // Vector header
26000            let max_ordinal: u64 = self.max_ordinal_present();
26001            encoder.write_num(max_ordinal, offset);
26002            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
26003            // Calling encoder.out_of_line_offset(0) is not allowed.
26004            if max_ordinal == 0 {
26005                return Ok(());
26006            }
26007            depth.increment()?;
26008            let envelope_size = 8;
26009            let bytes_len = max_ordinal as usize * envelope_size;
26010            #[allow(unused_variables)]
26011            let offset = encoder.out_of_line_offset(bytes_len);
26012            let mut _prev_end_offset: usize = 0;
26013            if 1 > max_ordinal {
26014                return Ok(());
26015            }
26016
26017            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
26018            // are envelope_size bytes.
26019            let cur_offset: usize = (1 - 1) * envelope_size;
26020
26021            // Zero reserved fields.
26022            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
26023
26024            // Safety:
26025            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
26026            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
26027            //   envelope_size bytes, there is always sufficient room.
26028            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
26029                self.source_name.as_ref().map(
26030                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
26031                ),
26032                encoder,
26033                offset + cur_offset,
26034                depth,
26035            )?;
26036
26037            _prev_end_offset = cur_offset + envelope_size;
26038            if 2 > max_ordinal {
26039                return Ok(());
26040            }
26041
26042            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
26043            // are envelope_size bytes.
26044            let cur_offset: usize = (2 - 1) * envelope_size;
26045
26046            // Zero reserved fields.
26047            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
26048
26049            // Safety:
26050            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
26051            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
26052            //   envelope_size bytes, there is always sufficient room.
26053            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
26054            self.target_path.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
26055            encoder, offset + cur_offset, depth
26056        )?;
26057
26058            _prev_end_offset = cur_offset + envelope_size;
26059            if 3 > max_ordinal {
26060                return Ok(());
26061            }
26062
26063            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
26064            // are envelope_size bytes.
26065            let cur_offset: usize = (3 - 1) * envelope_size;
26066
26067            // Zero reserved fields.
26068            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
26069
26070            // Safety:
26071            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
26072            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
26073            //   envelope_size bytes, there is always sufficient room.
26074            fidl::encoding::encode_in_envelope_optional::<Availability, D>(
26075                self.availability
26076                    .as_ref()
26077                    .map(<Availability as fidl::encoding::ValueTypeMarker>::borrow),
26078                encoder,
26079                offset + cur_offset,
26080                depth,
26081            )?;
26082
26083            _prev_end_offset = cur_offset + envelope_size;
26084
26085            Ok(())
26086        }
26087    }
26088
26089    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for UseStorage {
26090        #[inline(always)]
26091        fn new_empty() -> Self {
26092            Self::default()
26093        }
26094
26095        unsafe fn decode(
26096            &mut self,
26097            decoder: &mut fidl::encoding::Decoder<'_, D>,
26098            offset: usize,
26099            mut depth: fidl::encoding::Depth,
26100        ) -> fidl::Result<()> {
26101            decoder.debug_check_bounds::<Self>(offset);
26102            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
26103                None => return Err(fidl::Error::NotNullable),
26104                Some(len) => len,
26105            };
26106            // Calling decoder.out_of_line_offset(0) is not allowed.
26107            if len == 0 {
26108                return Ok(());
26109            };
26110            depth.increment()?;
26111            let envelope_size = 8;
26112            let bytes_len = len * envelope_size;
26113            let offset = decoder.out_of_line_offset(bytes_len)?;
26114            // Decode the envelope for each type.
26115            let mut _next_ordinal_to_read = 0;
26116            let mut next_offset = offset;
26117            let end_offset = offset + bytes_len;
26118            _next_ordinal_to_read += 1;
26119            if next_offset >= end_offset {
26120                return Ok(());
26121            }
26122
26123            // Decode unknown envelopes for gaps in ordinals.
26124            while _next_ordinal_to_read < 1 {
26125                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
26126                _next_ordinal_to_read += 1;
26127                next_offset += envelope_size;
26128            }
26129
26130            let next_out_of_line = decoder.next_out_of_line();
26131            let handles_before = decoder.remaining_handles();
26132            if let Some((inlined, num_bytes, num_handles)) =
26133                fidl::encoding::decode_envelope_header(decoder, next_offset)?
26134            {
26135                let member_inline_size =
26136                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
26137                        decoder.context,
26138                    );
26139                if inlined != (member_inline_size <= 4) {
26140                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
26141                }
26142                let inner_offset;
26143                let mut inner_depth = depth.clone();
26144                if inlined {
26145                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
26146                    inner_offset = next_offset;
26147                } else {
26148                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
26149                    inner_depth.increment()?;
26150                }
26151                let val_ref = self
26152                    .source_name
26153                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
26154                fidl::decode!(
26155                    fidl::encoding::BoundedString<100>,
26156                    D,
26157                    val_ref,
26158                    decoder,
26159                    inner_offset,
26160                    inner_depth
26161                )?;
26162                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
26163                {
26164                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
26165                }
26166                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
26167                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
26168                }
26169            }
26170
26171            next_offset += envelope_size;
26172            _next_ordinal_to_read += 1;
26173            if next_offset >= end_offset {
26174                return Ok(());
26175            }
26176
26177            // Decode unknown envelopes for gaps in ordinals.
26178            while _next_ordinal_to_read < 2 {
26179                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
26180                _next_ordinal_to_read += 1;
26181                next_offset += envelope_size;
26182            }
26183
26184            let next_out_of_line = decoder.next_out_of_line();
26185            let handles_before = decoder.remaining_handles();
26186            if let Some((inlined, num_bytes, num_handles)) =
26187                fidl::encoding::decode_envelope_header(decoder, next_offset)?
26188            {
26189                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
26190                if inlined != (member_inline_size <= 4) {
26191                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
26192                }
26193                let inner_offset;
26194                let mut inner_depth = depth.clone();
26195                if inlined {
26196                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
26197                    inner_offset = next_offset;
26198                } else {
26199                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
26200                    inner_depth.increment()?;
26201                }
26202                let val_ref = self.target_path.get_or_insert_with(|| {
26203                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
26204                });
26205                fidl::decode!(
26206                    fidl::encoding::BoundedString<1024>,
26207                    D,
26208                    val_ref,
26209                    decoder,
26210                    inner_offset,
26211                    inner_depth
26212                )?;
26213                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
26214                {
26215                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
26216                }
26217                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
26218                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
26219                }
26220            }
26221
26222            next_offset += envelope_size;
26223            _next_ordinal_to_read += 1;
26224            if next_offset >= end_offset {
26225                return Ok(());
26226            }
26227
26228            // Decode unknown envelopes for gaps in ordinals.
26229            while _next_ordinal_to_read < 3 {
26230                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
26231                _next_ordinal_to_read += 1;
26232                next_offset += envelope_size;
26233            }
26234
26235            let next_out_of_line = decoder.next_out_of_line();
26236            let handles_before = decoder.remaining_handles();
26237            if let Some((inlined, num_bytes, num_handles)) =
26238                fidl::encoding::decode_envelope_header(decoder, next_offset)?
26239            {
26240                let member_inline_size =
26241                    <Availability as fidl::encoding::TypeMarker>::inline_size(decoder.context);
26242                if inlined != (member_inline_size <= 4) {
26243                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
26244                }
26245                let inner_offset;
26246                let mut inner_depth = depth.clone();
26247                if inlined {
26248                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
26249                    inner_offset = next_offset;
26250                } else {
26251                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
26252                    inner_depth.increment()?;
26253                }
26254                let val_ref =
26255                    self.availability.get_or_insert_with(|| fidl::new_empty!(Availability, D));
26256                fidl::decode!(Availability, D, val_ref, decoder, inner_offset, inner_depth)?;
26257                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
26258                {
26259                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
26260                }
26261                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
26262                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
26263                }
26264            }
26265
26266            next_offset += envelope_size;
26267
26268            // Decode the remaining unknown envelopes.
26269            while next_offset < end_offset {
26270                _next_ordinal_to_read += 1;
26271                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
26272                next_offset += envelope_size;
26273            }
26274
26275            Ok(())
26276        }
26277    }
26278
26279    impl fidl::encoding::ValueTypeMarker for Capability {
26280        type Borrowed<'a> = &'a Self;
26281        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
26282            value
26283        }
26284    }
26285
26286    unsafe impl fidl::encoding::TypeMarker for Capability {
26287        type Owned = Self;
26288
26289        #[inline(always)]
26290        fn inline_align(_context: fidl::encoding::Context) -> usize {
26291            8
26292        }
26293
26294        #[inline(always)]
26295        fn inline_size(_context: fidl::encoding::Context) -> usize {
26296            16
26297        }
26298    }
26299
26300    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Capability, D>
26301        for &Capability
26302    {
26303        #[inline]
26304        unsafe fn encode(
26305            self,
26306            encoder: &mut fidl::encoding::Encoder<'_, D>,
26307            offset: usize,
26308            _depth: fidl::encoding::Depth,
26309        ) -> fidl::Result<()> {
26310            encoder.debug_check_bounds::<Capability>(offset);
26311            encoder.write_num::<u64>(self.ordinal(), offset);
26312            match self {
26313                Capability::Service(ref val) => fidl::encoding::encode_in_envelope::<Service, D>(
26314                    <Service as fidl::encoding::ValueTypeMarker>::borrow(val),
26315                    encoder,
26316                    offset + 8,
26317                    _depth,
26318                ),
26319                Capability::Protocol(ref val) => fidl::encoding::encode_in_envelope::<Protocol, D>(
26320                    <Protocol as fidl::encoding::ValueTypeMarker>::borrow(val),
26321                    encoder,
26322                    offset + 8,
26323                    _depth,
26324                ),
26325                Capability::Directory(ref val) => {
26326                    fidl::encoding::encode_in_envelope::<Directory, D>(
26327                        <Directory as fidl::encoding::ValueTypeMarker>::borrow(val),
26328                        encoder,
26329                        offset + 8,
26330                        _depth,
26331                    )
26332                }
26333                Capability::Storage(ref val) => fidl::encoding::encode_in_envelope::<Storage, D>(
26334                    <Storage as fidl::encoding::ValueTypeMarker>::borrow(val),
26335                    encoder,
26336                    offset + 8,
26337                    _depth,
26338                ),
26339                Capability::Runner(ref val) => fidl::encoding::encode_in_envelope::<Runner, D>(
26340                    <Runner as fidl::encoding::ValueTypeMarker>::borrow(val),
26341                    encoder,
26342                    offset + 8,
26343                    _depth,
26344                ),
26345                Capability::Resolver(ref val) => fidl::encoding::encode_in_envelope::<Resolver, D>(
26346                    <Resolver as fidl::encoding::ValueTypeMarker>::borrow(val),
26347                    encoder,
26348                    offset + 8,
26349                    _depth,
26350                ),
26351                Capability::EventStream(ref val) => {
26352                    fidl::encoding::encode_in_envelope::<EventStream, D>(
26353                        <EventStream as fidl::encoding::ValueTypeMarker>::borrow(val),
26354                        encoder,
26355                        offset + 8,
26356                        _depth,
26357                    )
26358                }
26359                Capability::Dictionary(ref val) => {
26360                    fidl::encoding::encode_in_envelope::<Dictionary, D>(
26361                        <Dictionary as fidl::encoding::ValueTypeMarker>::borrow(val),
26362                        encoder,
26363                        offset + 8,
26364                        _depth,
26365                    )
26366                }
26367                Capability::Config(ref val) => {
26368                    fidl::encoding::encode_in_envelope::<Configuration, D>(
26369                        <Configuration as fidl::encoding::ValueTypeMarker>::borrow(val),
26370                        encoder,
26371                        offset + 8,
26372                        _depth,
26373                    )
26374                }
26375                Capability::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
26376            }
26377        }
26378    }
26379
26380    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Capability {
26381        #[inline(always)]
26382        fn new_empty() -> Self {
26383            Self::__SourceBreaking { unknown_ordinal: 0 }
26384        }
26385
26386        #[inline]
26387        unsafe fn decode(
26388            &mut self,
26389            decoder: &mut fidl::encoding::Decoder<'_, D>,
26390            offset: usize,
26391            mut depth: fidl::encoding::Depth,
26392        ) -> fidl::Result<()> {
26393            decoder.debug_check_bounds::<Self>(offset);
26394            #[allow(unused_variables)]
26395            let next_out_of_line = decoder.next_out_of_line();
26396            let handles_before = decoder.remaining_handles();
26397            let (ordinal, inlined, num_bytes, num_handles) =
26398                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
26399
26400            let member_inline_size = match ordinal {
26401                1 => <Service as fidl::encoding::TypeMarker>::inline_size(decoder.context),
26402                2 => <Protocol as fidl::encoding::TypeMarker>::inline_size(decoder.context),
26403                3 => <Directory as fidl::encoding::TypeMarker>::inline_size(decoder.context),
26404                4 => <Storage as fidl::encoding::TypeMarker>::inline_size(decoder.context),
26405                5 => <Runner as fidl::encoding::TypeMarker>::inline_size(decoder.context),
26406                6 => <Resolver as fidl::encoding::TypeMarker>::inline_size(decoder.context),
26407                8 => <EventStream as fidl::encoding::TypeMarker>::inline_size(decoder.context),
26408                9 => <Dictionary as fidl::encoding::TypeMarker>::inline_size(decoder.context),
26409                10 => <Configuration as fidl::encoding::TypeMarker>::inline_size(decoder.context),
26410                0 => return Err(fidl::Error::UnknownUnionTag),
26411                _ => num_bytes as usize,
26412            };
26413
26414            if inlined != (member_inline_size <= 4) {
26415                return Err(fidl::Error::InvalidInlineBitInEnvelope);
26416            }
26417            let _inner_offset;
26418            if inlined {
26419                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
26420                _inner_offset = offset + 8;
26421            } else {
26422                depth.increment()?;
26423                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
26424            }
26425            match ordinal {
26426                1 => {
26427                    #[allow(irrefutable_let_patterns)]
26428                    if let Capability::Service(_) = self {
26429                        // Do nothing, read the value into the object
26430                    } else {
26431                        // Initialize `self` to the right variant
26432                        *self = Capability::Service(fidl::new_empty!(Service, D));
26433                    }
26434                    #[allow(irrefutable_let_patterns)]
26435                    if let Capability::Service(ref mut val) = self {
26436                        fidl::decode!(Service, D, val, decoder, _inner_offset, depth)?;
26437                    } else {
26438                        unreachable!()
26439                    }
26440                }
26441                2 => {
26442                    #[allow(irrefutable_let_patterns)]
26443                    if let Capability::Protocol(_) = self {
26444                        // Do nothing, read the value into the object
26445                    } else {
26446                        // Initialize `self` to the right variant
26447                        *self = Capability::Protocol(fidl::new_empty!(Protocol, D));
26448                    }
26449                    #[allow(irrefutable_let_patterns)]
26450                    if let Capability::Protocol(ref mut val) = self {
26451                        fidl::decode!(Protocol, D, val, decoder, _inner_offset, depth)?;
26452                    } else {
26453                        unreachable!()
26454                    }
26455                }
26456                3 => {
26457                    #[allow(irrefutable_let_patterns)]
26458                    if let Capability::Directory(_) = self {
26459                        // Do nothing, read the value into the object
26460                    } else {
26461                        // Initialize `self` to the right variant
26462                        *self = Capability::Directory(fidl::new_empty!(Directory, D));
26463                    }
26464                    #[allow(irrefutable_let_patterns)]
26465                    if let Capability::Directory(ref mut val) = self {
26466                        fidl::decode!(Directory, D, val, decoder, _inner_offset, depth)?;
26467                    } else {
26468                        unreachable!()
26469                    }
26470                }
26471                4 => {
26472                    #[allow(irrefutable_let_patterns)]
26473                    if let Capability::Storage(_) = self {
26474                        // Do nothing, read the value into the object
26475                    } else {
26476                        // Initialize `self` to the right variant
26477                        *self = Capability::Storage(fidl::new_empty!(Storage, D));
26478                    }
26479                    #[allow(irrefutable_let_patterns)]
26480                    if let Capability::Storage(ref mut val) = self {
26481                        fidl::decode!(Storage, D, val, decoder, _inner_offset, depth)?;
26482                    } else {
26483                        unreachable!()
26484                    }
26485                }
26486                5 => {
26487                    #[allow(irrefutable_let_patterns)]
26488                    if let Capability::Runner(_) = self {
26489                        // Do nothing, read the value into the object
26490                    } else {
26491                        // Initialize `self` to the right variant
26492                        *self = Capability::Runner(fidl::new_empty!(Runner, D));
26493                    }
26494                    #[allow(irrefutable_let_patterns)]
26495                    if let Capability::Runner(ref mut val) = self {
26496                        fidl::decode!(Runner, D, val, decoder, _inner_offset, depth)?;
26497                    } else {
26498                        unreachable!()
26499                    }
26500                }
26501                6 => {
26502                    #[allow(irrefutable_let_patterns)]
26503                    if let Capability::Resolver(_) = self {
26504                        // Do nothing, read the value into the object
26505                    } else {
26506                        // Initialize `self` to the right variant
26507                        *self = Capability::Resolver(fidl::new_empty!(Resolver, D));
26508                    }
26509                    #[allow(irrefutable_let_patterns)]
26510                    if let Capability::Resolver(ref mut val) = self {
26511                        fidl::decode!(Resolver, D, val, decoder, _inner_offset, depth)?;
26512                    } else {
26513                        unreachable!()
26514                    }
26515                }
26516                8 => {
26517                    #[allow(irrefutable_let_patterns)]
26518                    if let Capability::EventStream(_) = self {
26519                        // Do nothing, read the value into the object
26520                    } else {
26521                        // Initialize `self` to the right variant
26522                        *self = Capability::EventStream(fidl::new_empty!(EventStream, D));
26523                    }
26524                    #[allow(irrefutable_let_patterns)]
26525                    if let Capability::EventStream(ref mut val) = self {
26526                        fidl::decode!(EventStream, D, val, decoder, _inner_offset, depth)?;
26527                    } else {
26528                        unreachable!()
26529                    }
26530                }
26531                9 => {
26532                    #[allow(irrefutable_let_patterns)]
26533                    if let Capability::Dictionary(_) = self {
26534                        // Do nothing, read the value into the object
26535                    } else {
26536                        // Initialize `self` to the right variant
26537                        *self = Capability::Dictionary(fidl::new_empty!(Dictionary, D));
26538                    }
26539                    #[allow(irrefutable_let_patterns)]
26540                    if let Capability::Dictionary(ref mut val) = self {
26541                        fidl::decode!(Dictionary, D, val, decoder, _inner_offset, depth)?;
26542                    } else {
26543                        unreachable!()
26544                    }
26545                }
26546                10 => {
26547                    #[allow(irrefutable_let_patterns)]
26548                    if let Capability::Config(_) = self {
26549                        // Do nothing, read the value into the object
26550                    } else {
26551                        // Initialize `self` to the right variant
26552                        *self = Capability::Config(fidl::new_empty!(Configuration, D));
26553                    }
26554                    #[allow(irrefutable_let_patterns)]
26555                    if let Capability::Config(ref mut val) = self {
26556                        fidl::decode!(Configuration, D, val, decoder, _inner_offset, depth)?;
26557                    } else {
26558                        unreachable!()
26559                    }
26560                }
26561                #[allow(deprecated)]
26562                ordinal => {
26563                    for _ in 0..num_handles {
26564                        decoder.drop_next_handle()?;
26565                    }
26566                    *self = Capability::__SourceBreaking { unknown_ordinal: ordinal };
26567                }
26568            }
26569            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
26570                return Err(fidl::Error::InvalidNumBytesInEnvelope);
26571            }
26572            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
26573                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
26574            }
26575            Ok(())
26576        }
26577    }
26578
26579    impl fidl::encoding::ValueTypeMarker for ConfigChecksum {
26580        type Borrowed<'a> = &'a Self;
26581        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
26582            value
26583        }
26584    }
26585
26586    unsafe impl fidl::encoding::TypeMarker for ConfigChecksum {
26587        type Owned = Self;
26588
26589        #[inline(always)]
26590        fn inline_align(_context: fidl::encoding::Context) -> usize {
26591            8
26592        }
26593
26594        #[inline(always)]
26595        fn inline_size(_context: fidl::encoding::Context) -> usize {
26596            16
26597        }
26598    }
26599
26600    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ConfigChecksum, D>
26601        for &ConfigChecksum
26602    {
26603        #[inline]
26604        unsafe fn encode(
26605            self,
26606            encoder: &mut fidl::encoding::Encoder<'_, D>,
26607            offset: usize,
26608            _depth: fidl::encoding::Depth,
26609        ) -> fidl::Result<()> {
26610            encoder.debug_check_bounds::<ConfigChecksum>(offset);
26611            encoder.write_num::<u64>(self.ordinal(), offset);
26612            match self {
26613                ConfigChecksum::Sha256(ref val) => fidl::encoding::encode_in_envelope::<
26614                    fidl::encoding::Array<u8, 32>,
26615                    D,
26616                >(
26617                    <fidl::encoding::Array<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow(val),
26618                    encoder,
26619                    offset + 8,
26620                    _depth,
26621                ),
26622                ConfigChecksum::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
26623            }
26624        }
26625    }
26626
26627    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ConfigChecksum {
26628        #[inline(always)]
26629        fn new_empty() -> Self {
26630            Self::__SourceBreaking { unknown_ordinal: 0 }
26631        }
26632
26633        #[inline]
26634        unsafe fn decode(
26635            &mut self,
26636            decoder: &mut fidl::encoding::Decoder<'_, D>,
26637            offset: usize,
26638            mut depth: fidl::encoding::Depth,
26639        ) -> fidl::Result<()> {
26640            decoder.debug_check_bounds::<Self>(offset);
26641            #[allow(unused_variables)]
26642            let next_out_of_line = decoder.next_out_of_line();
26643            let handles_before = decoder.remaining_handles();
26644            let (ordinal, inlined, num_bytes, num_handles) =
26645                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
26646
26647            let member_inline_size = match ordinal {
26648                1 => <fidl::encoding::Array<u8, 32> as fidl::encoding::TypeMarker>::inline_size(
26649                    decoder.context,
26650                ),
26651                0 => return Err(fidl::Error::UnknownUnionTag),
26652                _ => num_bytes as usize,
26653            };
26654
26655            if inlined != (member_inline_size <= 4) {
26656                return Err(fidl::Error::InvalidInlineBitInEnvelope);
26657            }
26658            let _inner_offset;
26659            if inlined {
26660                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
26661                _inner_offset = offset + 8;
26662            } else {
26663                depth.increment()?;
26664                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
26665            }
26666            match ordinal {
26667                1 => {
26668                    #[allow(irrefutable_let_patterns)]
26669                    if let ConfigChecksum::Sha256(_) = self {
26670                        // Do nothing, read the value into the object
26671                    } else {
26672                        // Initialize `self` to the right variant
26673                        *self = ConfigChecksum::Sha256(
26674                            fidl::new_empty!(fidl::encoding::Array<u8, 32>, D),
26675                        );
26676                    }
26677                    #[allow(irrefutable_let_patterns)]
26678                    if let ConfigChecksum::Sha256(ref mut val) = self {
26679                        fidl::decode!(fidl::encoding::Array<u8, 32>, D, val, decoder, _inner_offset, depth)?;
26680                    } else {
26681                        unreachable!()
26682                    }
26683                }
26684                #[allow(deprecated)]
26685                ordinal => {
26686                    for _ in 0..num_handles {
26687                        decoder.drop_next_handle()?;
26688                    }
26689                    *self = ConfigChecksum::__SourceBreaking { unknown_ordinal: ordinal };
26690                }
26691            }
26692            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
26693                return Err(fidl::Error::InvalidNumBytesInEnvelope);
26694            }
26695            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
26696                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
26697            }
26698            Ok(())
26699        }
26700    }
26701
26702    impl fidl::encoding::ValueTypeMarker for ConfigSingleValue {
26703        type Borrowed<'a> = &'a Self;
26704        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
26705            value
26706        }
26707    }
26708
26709    unsafe impl fidl::encoding::TypeMarker for ConfigSingleValue {
26710        type Owned = Self;
26711
26712        #[inline(always)]
26713        fn inline_align(_context: fidl::encoding::Context) -> usize {
26714            8
26715        }
26716
26717        #[inline(always)]
26718        fn inline_size(_context: fidl::encoding::Context) -> usize {
26719            16
26720        }
26721    }
26722
26723    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ConfigSingleValue, D>
26724        for &ConfigSingleValue
26725    {
26726        #[inline]
26727        unsafe fn encode(
26728            self,
26729            encoder: &mut fidl::encoding::Encoder<'_, D>,
26730            offset: usize,
26731            _depth: fidl::encoding::Depth,
26732        ) -> fidl::Result<()> {
26733            encoder.debug_check_bounds::<ConfigSingleValue>(offset);
26734            encoder.write_num::<u64>(self.ordinal(), offset);
26735            match self {
26736                ConfigSingleValue::Bool(ref val) => fidl::encoding::encode_in_envelope::<bool, D>(
26737                    <bool as fidl::encoding::ValueTypeMarker>::borrow(val),
26738                    encoder,
26739                    offset + 8,
26740                    _depth,
26741                ),
26742                ConfigSingleValue::Uint8(ref val) => fidl::encoding::encode_in_envelope::<u8, D>(
26743                    <u8 as fidl::encoding::ValueTypeMarker>::borrow(val),
26744                    encoder,
26745                    offset + 8,
26746                    _depth,
26747                ),
26748                ConfigSingleValue::Uint16(ref val) => fidl::encoding::encode_in_envelope::<u16, D>(
26749                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(val),
26750                    encoder,
26751                    offset + 8,
26752                    _depth,
26753                ),
26754                ConfigSingleValue::Uint32(ref val) => fidl::encoding::encode_in_envelope::<u32, D>(
26755                    <u32 as fidl::encoding::ValueTypeMarker>::borrow(val),
26756                    encoder,
26757                    offset + 8,
26758                    _depth,
26759                ),
26760                ConfigSingleValue::Uint64(ref val) => fidl::encoding::encode_in_envelope::<u64, D>(
26761                    <u64 as fidl::encoding::ValueTypeMarker>::borrow(val),
26762                    encoder,
26763                    offset + 8,
26764                    _depth,
26765                ),
26766                ConfigSingleValue::Int8(ref val) => fidl::encoding::encode_in_envelope::<i8, D>(
26767                    <i8 as fidl::encoding::ValueTypeMarker>::borrow(val),
26768                    encoder,
26769                    offset + 8,
26770                    _depth,
26771                ),
26772                ConfigSingleValue::Int16(ref val) => fidl::encoding::encode_in_envelope::<i16, D>(
26773                    <i16 as fidl::encoding::ValueTypeMarker>::borrow(val),
26774                    encoder,
26775                    offset + 8,
26776                    _depth,
26777                ),
26778                ConfigSingleValue::Int32(ref val) => fidl::encoding::encode_in_envelope::<i32, D>(
26779                    <i32 as fidl::encoding::ValueTypeMarker>::borrow(val),
26780                    encoder,
26781                    offset + 8,
26782                    _depth,
26783                ),
26784                ConfigSingleValue::Int64(ref val) => fidl::encoding::encode_in_envelope::<i64, D>(
26785                    <i64 as fidl::encoding::ValueTypeMarker>::borrow(val),
26786                    encoder,
26787                    offset + 8,
26788                    _depth,
26789                ),
26790                ConfigSingleValue::String(ref val) => fidl::encoding::encode_in_envelope::<
26791                    fidl::encoding::UnboundedString,
26792                    D,
26793                >(
26794                    <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow(
26795                        val,
26796                    ),
26797                    encoder,
26798                    offset + 8,
26799                    _depth,
26800                ),
26801                ConfigSingleValue::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
26802            }
26803        }
26804    }
26805
26806    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ConfigSingleValue {
26807        #[inline(always)]
26808        fn new_empty() -> Self {
26809            Self::__SourceBreaking { unknown_ordinal: 0 }
26810        }
26811
26812        #[inline]
26813        unsafe fn decode(
26814            &mut self,
26815            decoder: &mut fidl::encoding::Decoder<'_, D>,
26816            offset: usize,
26817            mut depth: fidl::encoding::Depth,
26818        ) -> fidl::Result<()> {
26819            decoder.debug_check_bounds::<Self>(offset);
26820            #[allow(unused_variables)]
26821            let next_out_of_line = decoder.next_out_of_line();
26822            let handles_before = decoder.remaining_handles();
26823            let (ordinal, inlined, num_bytes, num_handles) =
26824                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
26825
26826            let member_inline_size = match ordinal {
26827                1 => <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context),
26828                2 => <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
26829                3 => <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
26830                4 => <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
26831                5 => <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
26832                6 => <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
26833                7 => <i16 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
26834                8 => <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
26835                9 => <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
26836                10 => <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
26837                    decoder.context,
26838                ),
26839                0 => return Err(fidl::Error::UnknownUnionTag),
26840                _ => num_bytes as usize,
26841            };
26842
26843            if inlined != (member_inline_size <= 4) {
26844                return Err(fidl::Error::InvalidInlineBitInEnvelope);
26845            }
26846            let _inner_offset;
26847            if inlined {
26848                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
26849                _inner_offset = offset + 8;
26850            } else {
26851                depth.increment()?;
26852                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
26853            }
26854            match ordinal {
26855                1 => {
26856                    #[allow(irrefutable_let_patterns)]
26857                    if let ConfigSingleValue::Bool(_) = self {
26858                        // Do nothing, read the value into the object
26859                    } else {
26860                        // Initialize `self` to the right variant
26861                        *self = ConfigSingleValue::Bool(fidl::new_empty!(bool, D));
26862                    }
26863                    #[allow(irrefutable_let_patterns)]
26864                    if let ConfigSingleValue::Bool(ref mut val) = self {
26865                        fidl::decode!(bool, D, val, decoder, _inner_offset, depth)?;
26866                    } else {
26867                        unreachable!()
26868                    }
26869                }
26870                2 => {
26871                    #[allow(irrefutable_let_patterns)]
26872                    if let ConfigSingleValue::Uint8(_) = self {
26873                        // Do nothing, read the value into the object
26874                    } else {
26875                        // Initialize `self` to the right variant
26876                        *self = ConfigSingleValue::Uint8(fidl::new_empty!(u8, D));
26877                    }
26878                    #[allow(irrefutable_let_patterns)]
26879                    if let ConfigSingleValue::Uint8(ref mut val) = self {
26880                        fidl::decode!(u8, D, val, decoder, _inner_offset, depth)?;
26881                    } else {
26882                        unreachable!()
26883                    }
26884                }
26885                3 => {
26886                    #[allow(irrefutable_let_patterns)]
26887                    if let ConfigSingleValue::Uint16(_) = self {
26888                        // Do nothing, read the value into the object
26889                    } else {
26890                        // Initialize `self` to the right variant
26891                        *self = ConfigSingleValue::Uint16(fidl::new_empty!(u16, D));
26892                    }
26893                    #[allow(irrefutable_let_patterns)]
26894                    if let ConfigSingleValue::Uint16(ref mut val) = self {
26895                        fidl::decode!(u16, D, val, decoder, _inner_offset, depth)?;
26896                    } else {
26897                        unreachable!()
26898                    }
26899                }
26900                4 => {
26901                    #[allow(irrefutable_let_patterns)]
26902                    if let ConfigSingleValue::Uint32(_) = self {
26903                        // Do nothing, read the value into the object
26904                    } else {
26905                        // Initialize `self` to the right variant
26906                        *self = ConfigSingleValue::Uint32(fidl::new_empty!(u32, D));
26907                    }
26908                    #[allow(irrefutable_let_patterns)]
26909                    if let ConfigSingleValue::Uint32(ref mut val) = self {
26910                        fidl::decode!(u32, D, val, decoder, _inner_offset, depth)?;
26911                    } else {
26912                        unreachable!()
26913                    }
26914                }
26915                5 => {
26916                    #[allow(irrefutable_let_patterns)]
26917                    if let ConfigSingleValue::Uint64(_) = self {
26918                        // Do nothing, read the value into the object
26919                    } else {
26920                        // Initialize `self` to the right variant
26921                        *self = ConfigSingleValue::Uint64(fidl::new_empty!(u64, D));
26922                    }
26923                    #[allow(irrefutable_let_patterns)]
26924                    if let ConfigSingleValue::Uint64(ref mut val) = self {
26925                        fidl::decode!(u64, D, val, decoder, _inner_offset, depth)?;
26926                    } else {
26927                        unreachable!()
26928                    }
26929                }
26930                6 => {
26931                    #[allow(irrefutable_let_patterns)]
26932                    if let ConfigSingleValue::Int8(_) = self {
26933                        // Do nothing, read the value into the object
26934                    } else {
26935                        // Initialize `self` to the right variant
26936                        *self = ConfigSingleValue::Int8(fidl::new_empty!(i8, D));
26937                    }
26938                    #[allow(irrefutable_let_patterns)]
26939                    if let ConfigSingleValue::Int8(ref mut val) = self {
26940                        fidl::decode!(i8, D, val, decoder, _inner_offset, depth)?;
26941                    } else {
26942                        unreachable!()
26943                    }
26944                }
26945                7 => {
26946                    #[allow(irrefutable_let_patterns)]
26947                    if let ConfigSingleValue::Int16(_) = self {
26948                        // Do nothing, read the value into the object
26949                    } else {
26950                        // Initialize `self` to the right variant
26951                        *self = ConfigSingleValue::Int16(fidl::new_empty!(i16, D));
26952                    }
26953                    #[allow(irrefutable_let_patterns)]
26954                    if let ConfigSingleValue::Int16(ref mut val) = self {
26955                        fidl::decode!(i16, D, val, decoder, _inner_offset, depth)?;
26956                    } else {
26957                        unreachable!()
26958                    }
26959                }
26960                8 => {
26961                    #[allow(irrefutable_let_patterns)]
26962                    if let ConfigSingleValue::Int32(_) = self {
26963                        // Do nothing, read the value into the object
26964                    } else {
26965                        // Initialize `self` to the right variant
26966                        *self = ConfigSingleValue::Int32(fidl::new_empty!(i32, D));
26967                    }
26968                    #[allow(irrefutable_let_patterns)]
26969                    if let ConfigSingleValue::Int32(ref mut val) = self {
26970                        fidl::decode!(i32, D, val, decoder, _inner_offset, depth)?;
26971                    } else {
26972                        unreachable!()
26973                    }
26974                }
26975                9 => {
26976                    #[allow(irrefutable_let_patterns)]
26977                    if let ConfigSingleValue::Int64(_) = self {
26978                        // Do nothing, read the value into the object
26979                    } else {
26980                        // Initialize `self` to the right variant
26981                        *self = ConfigSingleValue::Int64(fidl::new_empty!(i64, D));
26982                    }
26983                    #[allow(irrefutable_let_patterns)]
26984                    if let ConfigSingleValue::Int64(ref mut val) = self {
26985                        fidl::decode!(i64, D, val, decoder, _inner_offset, depth)?;
26986                    } else {
26987                        unreachable!()
26988                    }
26989                }
26990                10 => {
26991                    #[allow(irrefutable_let_patterns)]
26992                    if let ConfigSingleValue::String(_) = self {
26993                        // Do nothing, read the value into the object
26994                    } else {
26995                        // Initialize `self` to the right variant
26996                        *self = ConfigSingleValue::String(fidl::new_empty!(
26997                            fidl::encoding::UnboundedString,
26998                            D
26999                        ));
27000                    }
27001                    #[allow(irrefutable_let_patterns)]
27002                    if let ConfigSingleValue::String(ref mut val) = self {
27003                        fidl::decode!(
27004                            fidl::encoding::UnboundedString,
27005                            D,
27006                            val,
27007                            decoder,
27008                            _inner_offset,
27009                            depth
27010                        )?;
27011                    } else {
27012                        unreachable!()
27013                    }
27014                }
27015                #[allow(deprecated)]
27016                ordinal => {
27017                    for _ in 0..num_handles {
27018                        decoder.drop_next_handle()?;
27019                    }
27020                    *self = ConfigSingleValue::__SourceBreaking { unknown_ordinal: ordinal };
27021                }
27022            }
27023            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
27024                return Err(fidl::Error::InvalidNumBytesInEnvelope);
27025            }
27026            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
27027                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
27028            }
27029            Ok(())
27030        }
27031    }
27032
27033    impl fidl::encoding::ValueTypeMarker for ConfigValue {
27034        type Borrowed<'a> = &'a Self;
27035        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
27036            value
27037        }
27038    }
27039
27040    unsafe impl fidl::encoding::TypeMarker for ConfigValue {
27041        type Owned = Self;
27042
27043        #[inline(always)]
27044        fn inline_align(_context: fidl::encoding::Context) -> usize {
27045            8
27046        }
27047
27048        #[inline(always)]
27049        fn inline_size(_context: fidl::encoding::Context) -> usize {
27050            16
27051        }
27052    }
27053
27054    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ConfigValue, D>
27055        for &ConfigValue
27056    {
27057        #[inline]
27058        unsafe fn encode(
27059            self,
27060            encoder: &mut fidl::encoding::Encoder<'_, D>,
27061            offset: usize,
27062            _depth: fidl::encoding::Depth,
27063        ) -> fidl::Result<()> {
27064            encoder.debug_check_bounds::<ConfigValue>(offset);
27065            encoder.write_num::<u64>(self.ordinal(), offset);
27066            match self {
27067                ConfigValue::Single(ref val) => {
27068                    fidl::encoding::encode_in_envelope::<ConfigSingleValue, D>(
27069                        <ConfigSingleValue as fidl::encoding::ValueTypeMarker>::borrow(val),
27070                        encoder,
27071                        offset + 8,
27072                        _depth,
27073                    )
27074                }
27075                ConfigValue::Vector(ref val) => {
27076                    fidl::encoding::encode_in_envelope::<ConfigVectorValue, D>(
27077                        <ConfigVectorValue as fidl::encoding::ValueTypeMarker>::borrow(val),
27078                        encoder,
27079                        offset + 8,
27080                        _depth,
27081                    )
27082                }
27083                ConfigValue::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
27084            }
27085        }
27086    }
27087
27088    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ConfigValue {
27089        #[inline(always)]
27090        fn new_empty() -> Self {
27091            Self::__SourceBreaking { unknown_ordinal: 0 }
27092        }
27093
27094        #[inline]
27095        unsafe fn decode(
27096            &mut self,
27097            decoder: &mut fidl::encoding::Decoder<'_, D>,
27098            offset: usize,
27099            mut depth: fidl::encoding::Depth,
27100        ) -> fidl::Result<()> {
27101            decoder.debug_check_bounds::<Self>(offset);
27102            #[allow(unused_variables)]
27103            let next_out_of_line = decoder.next_out_of_line();
27104            let handles_before = decoder.remaining_handles();
27105            let (ordinal, inlined, num_bytes, num_handles) =
27106                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
27107
27108            let member_inline_size = match ordinal {
27109                1 => {
27110                    <ConfigSingleValue as fidl::encoding::TypeMarker>::inline_size(decoder.context)
27111                }
27112                2 => {
27113                    <ConfigVectorValue as fidl::encoding::TypeMarker>::inline_size(decoder.context)
27114                }
27115                0 => return Err(fidl::Error::UnknownUnionTag),
27116                _ => num_bytes as usize,
27117            };
27118
27119            if inlined != (member_inline_size <= 4) {
27120                return Err(fidl::Error::InvalidInlineBitInEnvelope);
27121            }
27122            let _inner_offset;
27123            if inlined {
27124                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
27125                _inner_offset = offset + 8;
27126            } else {
27127                depth.increment()?;
27128                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
27129            }
27130            match ordinal {
27131                1 => {
27132                    #[allow(irrefutable_let_patterns)]
27133                    if let ConfigValue::Single(_) = self {
27134                        // Do nothing, read the value into the object
27135                    } else {
27136                        // Initialize `self` to the right variant
27137                        *self = ConfigValue::Single(fidl::new_empty!(ConfigSingleValue, D));
27138                    }
27139                    #[allow(irrefutable_let_patterns)]
27140                    if let ConfigValue::Single(ref mut val) = self {
27141                        fidl::decode!(ConfigSingleValue, D, val, decoder, _inner_offset, depth)?;
27142                    } else {
27143                        unreachable!()
27144                    }
27145                }
27146                2 => {
27147                    #[allow(irrefutable_let_patterns)]
27148                    if let ConfigValue::Vector(_) = self {
27149                        // Do nothing, read the value into the object
27150                    } else {
27151                        // Initialize `self` to the right variant
27152                        *self = ConfigValue::Vector(fidl::new_empty!(ConfigVectorValue, D));
27153                    }
27154                    #[allow(irrefutable_let_patterns)]
27155                    if let ConfigValue::Vector(ref mut val) = self {
27156                        fidl::decode!(ConfigVectorValue, D, val, decoder, _inner_offset, depth)?;
27157                    } else {
27158                        unreachable!()
27159                    }
27160                }
27161                #[allow(deprecated)]
27162                ordinal => {
27163                    for _ in 0..num_handles {
27164                        decoder.drop_next_handle()?;
27165                    }
27166                    *self = ConfigValue::__SourceBreaking { unknown_ordinal: ordinal };
27167                }
27168            }
27169            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
27170                return Err(fidl::Error::InvalidNumBytesInEnvelope);
27171            }
27172            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
27173                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
27174            }
27175            Ok(())
27176        }
27177    }
27178
27179    impl fidl::encoding::ValueTypeMarker for ConfigValueSource {
27180        type Borrowed<'a> = &'a Self;
27181        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
27182            value
27183        }
27184    }
27185
27186    unsafe impl fidl::encoding::TypeMarker for ConfigValueSource {
27187        type Owned = Self;
27188
27189        #[inline(always)]
27190        fn inline_align(_context: fidl::encoding::Context) -> usize {
27191            8
27192        }
27193
27194        #[inline(always)]
27195        fn inline_size(_context: fidl::encoding::Context) -> usize {
27196            16
27197        }
27198    }
27199
27200    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ConfigValueSource, D>
27201        for &ConfigValueSource
27202    {
27203        #[inline]
27204        unsafe fn encode(
27205            self,
27206            encoder: &mut fidl::encoding::Encoder<'_, D>,
27207            offset: usize,
27208            _depth: fidl::encoding::Depth,
27209        ) -> fidl::Result<()> {
27210            encoder.debug_check_bounds::<ConfigValueSource>(offset);
27211            encoder.write_num::<u64>(self.ordinal(), offset);
27212            match self {
27213                ConfigValueSource::PackagePath(ref val) => fidl::encoding::encode_in_envelope::<
27214                    fidl::encoding::UnboundedString,
27215                    D,
27216                >(
27217                    <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow(
27218                        val,
27219                    ),
27220                    encoder,
27221                    offset + 8,
27222                    _depth,
27223                ),
27224                ConfigValueSource::Capabilities(ref val) => {
27225                    fidl::encoding::encode_in_envelope::<ConfigSourceCapabilities, D>(
27226                        <ConfigSourceCapabilities as fidl::encoding::ValueTypeMarker>::borrow(val),
27227                        encoder,
27228                        offset + 8,
27229                        _depth,
27230                    )
27231                }
27232                ConfigValueSource::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
27233            }
27234        }
27235    }
27236
27237    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ConfigValueSource {
27238        #[inline(always)]
27239        fn new_empty() -> Self {
27240            Self::__SourceBreaking { unknown_ordinal: 0 }
27241        }
27242
27243        #[inline]
27244        unsafe fn decode(
27245            &mut self,
27246            decoder: &mut fidl::encoding::Decoder<'_, D>,
27247            offset: usize,
27248            mut depth: fidl::encoding::Depth,
27249        ) -> fidl::Result<()> {
27250            decoder.debug_check_bounds::<Self>(offset);
27251            #[allow(unused_variables)]
27252            let next_out_of_line = decoder.next_out_of_line();
27253            let handles_before = decoder.remaining_handles();
27254            let (ordinal, inlined, num_bytes, num_handles) =
27255                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
27256
27257            let member_inline_size = match ordinal {
27258                1 => <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
27259                    decoder.context,
27260                ),
27261                2 => <ConfigSourceCapabilities as fidl::encoding::TypeMarker>::inline_size(
27262                    decoder.context,
27263                ),
27264                0 => return Err(fidl::Error::UnknownUnionTag),
27265                _ => num_bytes as usize,
27266            };
27267
27268            if inlined != (member_inline_size <= 4) {
27269                return Err(fidl::Error::InvalidInlineBitInEnvelope);
27270            }
27271            let _inner_offset;
27272            if inlined {
27273                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
27274                _inner_offset = offset + 8;
27275            } else {
27276                depth.increment()?;
27277                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
27278            }
27279            match ordinal {
27280                1 => {
27281                    #[allow(irrefutable_let_patterns)]
27282                    if let ConfigValueSource::PackagePath(_) = self {
27283                        // Do nothing, read the value into the object
27284                    } else {
27285                        // Initialize `self` to the right variant
27286                        *self = ConfigValueSource::PackagePath(fidl::new_empty!(
27287                            fidl::encoding::UnboundedString,
27288                            D
27289                        ));
27290                    }
27291                    #[allow(irrefutable_let_patterns)]
27292                    if let ConfigValueSource::PackagePath(ref mut val) = self {
27293                        fidl::decode!(
27294                            fidl::encoding::UnboundedString,
27295                            D,
27296                            val,
27297                            decoder,
27298                            _inner_offset,
27299                            depth
27300                        )?;
27301                    } else {
27302                        unreachable!()
27303                    }
27304                }
27305                2 => {
27306                    #[allow(irrefutable_let_patterns)]
27307                    if let ConfigValueSource::Capabilities(_) = self {
27308                        // Do nothing, read the value into the object
27309                    } else {
27310                        // Initialize `self` to the right variant
27311                        *self = ConfigValueSource::Capabilities(fidl::new_empty!(
27312                            ConfigSourceCapabilities,
27313                            D
27314                        ));
27315                    }
27316                    #[allow(irrefutable_let_patterns)]
27317                    if let ConfigValueSource::Capabilities(ref mut val) = self {
27318                        fidl::decode!(
27319                            ConfigSourceCapabilities,
27320                            D,
27321                            val,
27322                            decoder,
27323                            _inner_offset,
27324                            depth
27325                        )?;
27326                    } else {
27327                        unreachable!()
27328                    }
27329                }
27330                #[allow(deprecated)]
27331                ordinal => {
27332                    for _ in 0..num_handles {
27333                        decoder.drop_next_handle()?;
27334                    }
27335                    *self = ConfigValueSource::__SourceBreaking { unknown_ordinal: ordinal };
27336                }
27337            }
27338            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
27339                return Err(fidl::Error::InvalidNumBytesInEnvelope);
27340            }
27341            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
27342                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
27343            }
27344            Ok(())
27345        }
27346    }
27347
27348    impl fidl::encoding::ValueTypeMarker for ConfigVectorValue {
27349        type Borrowed<'a> = &'a Self;
27350        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
27351            value
27352        }
27353    }
27354
27355    unsafe impl fidl::encoding::TypeMarker for ConfigVectorValue {
27356        type Owned = Self;
27357
27358        #[inline(always)]
27359        fn inline_align(_context: fidl::encoding::Context) -> usize {
27360            8
27361        }
27362
27363        #[inline(always)]
27364        fn inline_size(_context: fidl::encoding::Context) -> usize {
27365            16
27366        }
27367    }
27368
27369    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ConfigVectorValue, D>
27370        for &ConfigVectorValue
27371    {
27372        #[inline]
27373        unsafe fn encode(
27374            self,
27375            encoder: &mut fidl::encoding::Encoder<'_, D>,
27376            offset: usize,
27377            _depth: fidl::encoding::Depth,
27378        ) -> fidl::Result<()> {
27379            encoder.debug_check_bounds::<ConfigVectorValue>(offset);
27380            encoder.write_num::<u64>(self.ordinal(), offset);
27381            match self {
27382            ConfigVectorValue::BoolVector(ref val) => {
27383                fidl::encoding::encode_in_envelope::<fidl::encoding::UnboundedVector<bool>, D>(
27384                    <fidl::encoding::UnboundedVector<bool> as fidl::encoding::ValueTypeMarker>::borrow(val),
27385                    encoder, offset + 8, _depth
27386                )
27387            }
27388            ConfigVectorValue::Uint8Vector(ref val) => {
27389                fidl::encoding::encode_in_envelope::<fidl::encoding::UnboundedVector<u8>, D>(
27390                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(val),
27391                    encoder, offset + 8, _depth
27392                )
27393            }
27394            ConfigVectorValue::Uint16Vector(ref val) => {
27395                fidl::encoding::encode_in_envelope::<fidl::encoding::UnboundedVector<u16>, D>(
27396                    <fidl::encoding::UnboundedVector<u16> as fidl::encoding::ValueTypeMarker>::borrow(val),
27397                    encoder, offset + 8, _depth
27398                )
27399            }
27400            ConfigVectorValue::Uint32Vector(ref val) => {
27401                fidl::encoding::encode_in_envelope::<fidl::encoding::UnboundedVector<u32>, D>(
27402                    <fidl::encoding::UnboundedVector<u32> as fidl::encoding::ValueTypeMarker>::borrow(val),
27403                    encoder, offset + 8, _depth
27404                )
27405            }
27406            ConfigVectorValue::Uint64Vector(ref val) => {
27407                fidl::encoding::encode_in_envelope::<fidl::encoding::UnboundedVector<u64>, D>(
27408                    <fidl::encoding::UnboundedVector<u64> as fidl::encoding::ValueTypeMarker>::borrow(val),
27409                    encoder, offset + 8, _depth
27410                )
27411            }
27412            ConfigVectorValue::Int8Vector(ref val) => {
27413                fidl::encoding::encode_in_envelope::<fidl::encoding::UnboundedVector<i8>, D>(
27414                    <fidl::encoding::UnboundedVector<i8> as fidl::encoding::ValueTypeMarker>::borrow(val),
27415                    encoder, offset + 8, _depth
27416                )
27417            }
27418            ConfigVectorValue::Int16Vector(ref val) => {
27419                fidl::encoding::encode_in_envelope::<fidl::encoding::UnboundedVector<i16>, D>(
27420                    <fidl::encoding::UnboundedVector<i16> as fidl::encoding::ValueTypeMarker>::borrow(val),
27421                    encoder, offset + 8, _depth
27422                )
27423            }
27424            ConfigVectorValue::Int32Vector(ref val) => {
27425                fidl::encoding::encode_in_envelope::<fidl::encoding::UnboundedVector<i32>, D>(
27426                    <fidl::encoding::UnboundedVector<i32> as fidl::encoding::ValueTypeMarker>::borrow(val),
27427                    encoder, offset + 8, _depth
27428                )
27429            }
27430            ConfigVectorValue::Int64Vector(ref val) => {
27431                fidl::encoding::encode_in_envelope::<fidl::encoding::UnboundedVector<i64>, D>(
27432                    <fidl::encoding::UnboundedVector<i64> as fidl::encoding::ValueTypeMarker>::borrow(val),
27433                    encoder, offset + 8, _depth
27434                )
27435            }
27436            ConfigVectorValue::StringVector(ref val) => {
27437                fidl::encoding::encode_in_envelope::<fidl::encoding::UnboundedVector<fidl::encoding::UnboundedString>, D>(
27438                    <fidl::encoding::UnboundedVector<fidl::encoding::UnboundedString> as fidl::encoding::ValueTypeMarker>::borrow(val),
27439                    encoder, offset + 8, _depth
27440                )
27441            }
27442            ConfigVectorValue::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
27443        }
27444        }
27445    }
27446
27447    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ConfigVectorValue {
27448        #[inline(always)]
27449        fn new_empty() -> Self {
27450            Self::__SourceBreaking { unknown_ordinal: 0 }
27451        }
27452
27453        #[inline]
27454        unsafe fn decode(
27455            &mut self,
27456            decoder: &mut fidl::encoding::Decoder<'_, D>,
27457            offset: usize,
27458            mut depth: fidl::encoding::Depth,
27459        ) -> fidl::Result<()> {
27460            decoder.debug_check_bounds::<Self>(offset);
27461            #[allow(unused_variables)]
27462            let next_out_of_line = decoder.next_out_of_line();
27463            let handles_before = decoder.remaining_handles();
27464            let (ordinal, inlined, num_bytes, num_handles) =
27465                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
27466
27467            let member_inline_size = match ordinal {
27468            1 => <fidl::encoding::UnboundedVector<bool> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
27469            2 => <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
27470            3 => <fidl::encoding::UnboundedVector<u16> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
27471            4 => <fidl::encoding::UnboundedVector<u32> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
27472            5 => <fidl::encoding::UnboundedVector<u64> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
27473            6 => <fidl::encoding::UnboundedVector<i8> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
27474            7 => <fidl::encoding::UnboundedVector<i16> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
27475            8 => <fidl::encoding::UnboundedVector<i32> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
27476            9 => <fidl::encoding::UnboundedVector<i64> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
27477            10 => <fidl::encoding::UnboundedVector<fidl::encoding::UnboundedString> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
27478            0 => return Err(fidl::Error::UnknownUnionTag),
27479            _ => num_bytes as usize,
27480        };
27481
27482            if inlined != (member_inline_size <= 4) {
27483                return Err(fidl::Error::InvalidInlineBitInEnvelope);
27484            }
27485            let _inner_offset;
27486            if inlined {
27487                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
27488                _inner_offset = offset + 8;
27489            } else {
27490                depth.increment()?;
27491                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
27492            }
27493            match ordinal {
27494                1 => {
27495                    #[allow(irrefutable_let_patterns)]
27496                    if let ConfigVectorValue::BoolVector(_) = self {
27497                        // Do nothing, read the value into the object
27498                    } else {
27499                        // Initialize `self` to the right variant
27500                        *self = ConfigVectorValue::BoolVector(fidl::new_empty!(
27501                            fidl::encoding::UnboundedVector<bool>,
27502                            D
27503                        ));
27504                    }
27505                    #[allow(irrefutable_let_patterns)]
27506                    if let ConfigVectorValue::BoolVector(ref mut val) = self {
27507                        fidl::decode!(
27508                            fidl::encoding::UnboundedVector<bool>,
27509                            D,
27510                            val,
27511                            decoder,
27512                            _inner_offset,
27513                            depth
27514                        )?;
27515                    } else {
27516                        unreachable!()
27517                    }
27518                }
27519                2 => {
27520                    #[allow(irrefutable_let_patterns)]
27521                    if let ConfigVectorValue::Uint8Vector(_) = self {
27522                        // Do nothing, read the value into the object
27523                    } else {
27524                        // Initialize `self` to the right variant
27525                        *self = ConfigVectorValue::Uint8Vector(fidl::new_empty!(
27526                            fidl::encoding::UnboundedVector<u8>,
27527                            D
27528                        ));
27529                    }
27530                    #[allow(irrefutable_let_patterns)]
27531                    if let ConfigVectorValue::Uint8Vector(ref mut val) = self {
27532                        fidl::decode!(
27533                            fidl::encoding::UnboundedVector<u8>,
27534                            D,
27535                            val,
27536                            decoder,
27537                            _inner_offset,
27538                            depth
27539                        )?;
27540                    } else {
27541                        unreachable!()
27542                    }
27543                }
27544                3 => {
27545                    #[allow(irrefutable_let_patterns)]
27546                    if let ConfigVectorValue::Uint16Vector(_) = self {
27547                        // Do nothing, read the value into the object
27548                    } else {
27549                        // Initialize `self` to the right variant
27550                        *self = ConfigVectorValue::Uint16Vector(fidl::new_empty!(
27551                            fidl::encoding::UnboundedVector<u16>,
27552                            D
27553                        ));
27554                    }
27555                    #[allow(irrefutable_let_patterns)]
27556                    if let ConfigVectorValue::Uint16Vector(ref mut val) = self {
27557                        fidl::decode!(
27558                            fidl::encoding::UnboundedVector<u16>,
27559                            D,
27560                            val,
27561                            decoder,
27562                            _inner_offset,
27563                            depth
27564                        )?;
27565                    } else {
27566                        unreachable!()
27567                    }
27568                }
27569                4 => {
27570                    #[allow(irrefutable_let_patterns)]
27571                    if let ConfigVectorValue::Uint32Vector(_) = self {
27572                        // Do nothing, read the value into the object
27573                    } else {
27574                        // Initialize `self` to the right variant
27575                        *self = ConfigVectorValue::Uint32Vector(fidl::new_empty!(
27576                            fidl::encoding::UnboundedVector<u32>,
27577                            D
27578                        ));
27579                    }
27580                    #[allow(irrefutable_let_patterns)]
27581                    if let ConfigVectorValue::Uint32Vector(ref mut val) = self {
27582                        fidl::decode!(
27583                            fidl::encoding::UnboundedVector<u32>,
27584                            D,
27585                            val,
27586                            decoder,
27587                            _inner_offset,
27588                            depth
27589                        )?;
27590                    } else {
27591                        unreachable!()
27592                    }
27593                }
27594                5 => {
27595                    #[allow(irrefutable_let_patterns)]
27596                    if let ConfigVectorValue::Uint64Vector(_) = self {
27597                        // Do nothing, read the value into the object
27598                    } else {
27599                        // Initialize `self` to the right variant
27600                        *self = ConfigVectorValue::Uint64Vector(fidl::new_empty!(
27601                            fidl::encoding::UnboundedVector<u64>,
27602                            D
27603                        ));
27604                    }
27605                    #[allow(irrefutable_let_patterns)]
27606                    if let ConfigVectorValue::Uint64Vector(ref mut val) = self {
27607                        fidl::decode!(
27608                            fidl::encoding::UnboundedVector<u64>,
27609                            D,
27610                            val,
27611                            decoder,
27612                            _inner_offset,
27613                            depth
27614                        )?;
27615                    } else {
27616                        unreachable!()
27617                    }
27618                }
27619                6 => {
27620                    #[allow(irrefutable_let_patterns)]
27621                    if let ConfigVectorValue::Int8Vector(_) = self {
27622                        // Do nothing, read the value into the object
27623                    } else {
27624                        // Initialize `self` to the right variant
27625                        *self = ConfigVectorValue::Int8Vector(fidl::new_empty!(
27626                            fidl::encoding::UnboundedVector<i8>,
27627                            D
27628                        ));
27629                    }
27630                    #[allow(irrefutable_let_patterns)]
27631                    if let ConfigVectorValue::Int8Vector(ref mut val) = self {
27632                        fidl::decode!(
27633                            fidl::encoding::UnboundedVector<i8>,
27634                            D,
27635                            val,
27636                            decoder,
27637                            _inner_offset,
27638                            depth
27639                        )?;
27640                    } else {
27641                        unreachable!()
27642                    }
27643                }
27644                7 => {
27645                    #[allow(irrefutable_let_patterns)]
27646                    if let ConfigVectorValue::Int16Vector(_) = self {
27647                        // Do nothing, read the value into the object
27648                    } else {
27649                        // Initialize `self` to the right variant
27650                        *self = ConfigVectorValue::Int16Vector(fidl::new_empty!(
27651                            fidl::encoding::UnboundedVector<i16>,
27652                            D
27653                        ));
27654                    }
27655                    #[allow(irrefutable_let_patterns)]
27656                    if let ConfigVectorValue::Int16Vector(ref mut val) = self {
27657                        fidl::decode!(
27658                            fidl::encoding::UnboundedVector<i16>,
27659                            D,
27660                            val,
27661                            decoder,
27662                            _inner_offset,
27663                            depth
27664                        )?;
27665                    } else {
27666                        unreachable!()
27667                    }
27668                }
27669                8 => {
27670                    #[allow(irrefutable_let_patterns)]
27671                    if let ConfigVectorValue::Int32Vector(_) = self {
27672                        // Do nothing, read the value into the object
27673                    } else {
27674                        // Initialize `self` to the right variant
27675                        *self = ConfigVectorValue::Int32Vector(fidl::new_empty!(
27676                            fidl::encoding::UnboundedVector<i32>,
27677                            D
27678                        ));
27679                    }
27680                    #[allow(irrefutable_let_patterns)]
27681                    if let ConfigVectorValue::Int32Vector(ref mut val) = self {
27682                        fidl::decode!(
27683                            fidl::encoding::UnboundedVector<i32>,
27684                            D,
27685                            val,
27686                            decoder,
27687                            _inner_offset,
27688                            depth
27689                        )?;
27690                    } else {
27691                        unreachable!()
27692                    }
27693                }
27694                9 => {
27695                    #[allow(irrefutable_let_patterns)]
27696                    if let ConfigVectorValue::Int64Vector(_) = self {
27697                        // Do nothing, read the value into the object
27698                    } else {
27699                        // Initialize `self` to the right variant
27700                        *self = ConfigVectorValue::Int64Vector(fidl::new_empty!(
27701                            fidl::encoding::UnboundedVector<i64>,
27702                            D
27703                        ));
27704                    }
27705                    #[allow(irrefutable_let_patterns)]
27706                    if let ConfigVectorValue::Int64Vector(ref mut val) = self {
27707                        fidl::decode!(
27708                            fidl::encoding::UnboundedVector<i64>,
27709                            D,
27710                            val,
27711                            decoder,
27712                            _inner_offset,
27713                            depth
27714                        )?;
27715                    } else {
27716                        unreachable!()
27717                    }
27718                }
27719                10 => {
27720                    #[allow(irrefutable_let_patterns)]
27721                    if let ConfigVectorValue::StringVector(_) = self {
27722                        // Do nothing, read the value into the object
27723                    } else {
27724                        // Initialize `self` to the right variant
27725                        *self = ConfigVectorValue::StringVector(fidl::new_empty!(
27726                            fidl::encoding::UnboundedVector<fidl::encoding::UnboundedString>,
27727                            D
27728                        ));
27729                    }
27730                    #[allow(irrefutable_let_patterns)]
27731                    if let ConfigVectorValue::StringVector(ref mut val) = self {
27732                        fidl::decode!(
27733                            fidl::encoding::UnboundedVector<fidl::encoding::UnboundedString>,
27734                            D,
27735                            val,
27736                            decoder,
27737                            _inner_offset,
27738                            depth
27739                        )?;
27740                    } else {
27741                        unreachable!()
27742                    }
27743                }
27744                #[allow(deprecated)]
27745                ordinal => {
27746                    for _ in 0..num_handles {
27747                        decoder.drop_next_handle()?;
27748                    }
27749                    *self = ConfigVectorValue::__SourceBreaking { unknown_ordinal: ordinal };
27750                }
27751            }
27752            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
27753                return Err(fidl::Error::InvalidNumBytesInEnvelope);
27754            }
27755            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
27756                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
27757            }
27758            Ok(())
27759        }
27760    }
27761
27762    impl fidl::encoding::ValueTypeMarker for DebugRegistration {
27763        type Borrowed<'a> = &'a Self;
27764        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
27765            value
27766        }
27767    }
27768
27769    unsafe impl fidl::encoding::TypeMarker for DebugRegistration {
27770        type Owned = Self;
27771
27772        #[inline(always)]
27773        fn inline_align(_context: fidl::encoding::Context) -> usize {
27774            8
27775        }
27776
27777        #[inline(always)]
27778        fn inline_size(_context: fidl::encoding::Context) -> usize {
27779            16
27780        }
27781    }
27782
27783    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DebugRegistration, D>
27784        for &DebugRegistration
27785    {
27786        #[inline]
27787        unsafe fn encode(
27788            self,
27789            encoder: &mut fidl::encoding::Encoder<'_, D>,
27790            offset: usize,
27791            _depth: fidl::encoding::Depth,
27792        ) -> fidl::Result<()> {
27793            encoder.debug_check_bounds::<DebugRegistration>(offset);
27794            encoder.write_num::<u64>(self.ordinal(), offset);
27795            match self {
27796                DebugRegistration::Protocol(ref val) => {
27797                    fidl::encoding::encode_in_envelope::<DebugProtocolRegistration, D>(
27798                        <DebugProtocolRegistration as fidl::encoding::ValueTypeMarker>::borrow(val),
27799                        encoder,
27800                        offset + 8,
27801                        _depth,
27802                    )
27803                }
27804                DebugRegistration::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
27805            }
27806        }
27807    }
27808
27809    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DebugRegistration {
27810        #[inline(always)]
27811        fn new_empty() -> Self {
27812            Self::__SourceBreaking { unknown_ordinal: 0 }
27813        }
27814
27815        #[inline]
27816        unsafe fn decode(
27817            &mut self,
27818            decoder: &mut fidl::encoding::Decoder<'_, D>,
27819            offset: usize,
27820            mut depth: fidl::encoding::Depth,
27821        ) -> fidl::Result<()> {
27822            decoder.debug_check_bounds::<Self>(offset);
27823            #[allow(unused_variables)]
27824            let next_out_of_line = decoder.next_out_of_line();
27825            let handles_before = decoder.remaining_handles();
27826            let (ordinal, inlined, num_bytes, num_handles) =
27827                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
27828
27829            let member_inline_size = match ordinal {
27830                1 => <DebugProtocolRegistration as fidl::encoding::TypeMarker>::inline_size(
27831                    decoder.context,
27832                ),
27833                0 => return Err(fidl::Error::UnknownUnionTag),
27834                _ => num_bytes as usize,
27835            };
27836
27837            if inlined != (member_inline_size <= 4) {
27838                return Err(fidl::Error::InvalidInlineBitInEnvelope);
27839            }
27840            let _inner_offset;
27841            if inlined {
27842                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
27843                _inner_offset = offset + 8;
27844            } else {
27845                depth.increment()?;
27846                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
27847            }
27848            match ordinal {
27849                1 => {
27850                    #[allow(irrefutable_let_patterns)]
27851                    if let DebugRegistration::Protocol(_) = self {
27852                        // Do nothing, read the value into the object
27853                    } else {
27854                        // Initialize `self` to the right variant
27855                        *self = DebugRegistration::Protocol(fidl::new_empty!(
27856                            DebugProtocolRegistration,
27857                            D
27858                        ));
27859                    }
27860                    #[allow(irrefutable_let_patterns)]
27861                    if let DebugRegistration::Protocol(ref mut val) = self {
27862                        fidl::decode!(
27863                            DebugProtocolRegistration,
27864                            D,
27865                            val,
27866                            decoder,
27867                            _inner_offset,
27868                            depth
27869                        )?;
27870                    } else {
27871                        unreachable!()
27872                    }
27873                }
27874                #[allow(deprecated)]
27875                ordinal => {
27876                    for _ in 0..num_handles {
27877                        decoder.drop_next_handle()?;
27878                    }
27879                    *self = DebugRegistration::__SourceBreaking { unknown_ordinal: ordinal };
27880                }
27881            }
27882            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
27883                return Err(fidl::Error::InvalidNumBytesInEnvelope);
27884            }
27885            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
27886                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
27887            }
27888            Ok(())
27889        }
27890    }
27891
27892    impl fidl::encoding::ValueTypeMarker for Expose {
27893        type Borrowed<'a> = &'a Self;
27894        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
27895            value
27896        }
27897    }
27898
27899    unsafe impl fidl::encoding::TypeMarker for Expose {
27900        type Owned = Self;
27901
27902        #[inline(always)]
27903        fn inline_align(_context: fidl::encoding::Context) -> usize {
27904            8
27905        }
27906
27907        #[inline(always)]
27908        fn inline_size(_context: fidl::encoding::Context) -> usize {
27909            16
27910        }
27911    }
27912
27913    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Expose, D> for &Expose {
27914        #[inline]
27915        unsafe fn encode(
27916            self,
27917            encoder: &mut fidl::encoding::Encoder<'_, D>,
27918            offset: usize,
27919            _depth: fidl::encoding::Depth,
27920        ) -> fidl::Result<()> {
27921            encoder.debug_check_bounds::<Expose>(offset);
27922            encoder.write_num::<u64>(self.ordinal(), offset);
27923            match self {
27924                Expose::Service(ref val) => fidl::encoding::encode_in_envelope::<ExposeService, D>(
27925                    <ExposeService as fidl::encoding::ValueTypeMarker>::borrow(val),
27926                    encoder,
27927                    offset + 8,
27928                    _depth,
27929                ),
27930                Expose::Protocol(ref val) => {
27931                    fidl::encoding::encode_in_envelope::<ExposeProtocol, D>(
27932                        <ExposeProtocol as fidl::encoding::ValueTypeMarker>::borrow(val),
27933                        encoder,
27934                        offset + 8,
27935                        _depth,
27936                    )
27937                }
27938                Expose::Directory(ref val) => {
27939                    fidl::encoding::encode_in_envelope::<ExposeDirectory, D>(
27940                        <ExposeDirectory as fidl::encoding::ValueTypeMarker>::borrow(val),
27941                        encoder,
27942                        offset + 8,
27943                        _depth,
27944                    )
27945                }
27946                Expose::Runner(ref val) => fidl::encoding::encode_in_envelope::<ExposeRunner, D>(
27947                    <ExposeRunner as fidl::encoding::ValueTypeMarker>::borrow(val),
27948                    encoder,
27949                    offset + 8,
27950                    _depth,
27951                ),
27952                Expose::Resolver(ref val) => {
27953                    fidl::encoding::encode_in_envelope::<ExposeResolver, D>(
27954                        <ExposeResolver as fidl::encoding::ValueTypeMarker>::borrow(val),
27955                        encoder,
27956                        offset + 8,
27957                        _depth,
27958                    )
27959                }
27960                Expose::Dictionary(ref val) => {
27961                    fidl::encoding::encode_in_envelope::<ExposeDictionary, D>(
27962                        <ExposeDictionary as fidl::encoding::ValueTypeMarker>::borrow(val),
27963                        encoder,
27964                        offset + 8,
27965                        _depth,
27966                    )
27967                }
27968                Expose::Config(ref val) => {
27969                    fidl::encoding::encode_in_envelope::<ExposeConfiguration, D>(
27970                        <ExposeConfiguration as fidl::encoding::ValueTypeMarker>::borrow(val),
27971                        encoder,
27972                        offset + 8,
27973                        _depth,
27974                    )
27975                }
27976                Expose::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
27977            }
27978        }
27979    }
27980
27981    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Expose {
27982        #[inline(always)]
27983        fn new_empty() -> Self {
27984            Self::__SourceBreaking { unknown_ordinal: 0 }
27985        }
27986
27987        #[inline]
27988        unsafe fn decode(
27989            &mut self,
27990            decoder: &mut fidl::encoding::Decoder<'_, D>,
27991            offset: usize,
27992            mut depth: fidl::encoding::Depth,
27993        ) -> fidl::Result<()> {
27994            decoder.debug_check_bounds::<Self>(offset);
27995            #[allow(unused_variables)]
27996            let next_out_of_line = decoder.next_out_of_line();
27997            let handles_before = decoder.remaining_handles();
27998            let (ordinal, inlined, num_bytes, num_handles) =
27999                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
28000
28001            let member_inline_size = match ordinal {
28002                1 => <ExposeService as fidl::encoding::TypeMarker>::inline_size(decoder.context),
28003                2 => <ExposeProtocol as fidl::encoding::TypeMarker>::inline_size(decoder.context),
28004                3 => <ExposeDirectory as fidl::encoding::TypeMarker>::inline_size(decoder.context),
28005                4 => <ExposeRunner as fidl::encoding::TypeMarker>::inline_size(decoder.context),
28006                5 => <ExposeResolver as fidl::encoding::TypeMarker>::inline_size(decoder.context),
28007                7 => <ExposeDictionary as fidl::encoding::TypeMarker>::inline_size(decoder.context),
28008                8 => <ExposeConfiguration as fidl::encoding::TypeMarker>::inline_size(
28009                    decoder.context,
28010                ),
28011                0 => return Err(fidl::Error::UnknownUnionTag),
28012                _ => num_bytes as usize,
28013            };
28014
28015            if inlined != (member_inline_size <= 4) {
28016                return Err(fidl::Error::InvalidInlineBitInEnvelope);
28017            }
28018            let _inner_offset;
28019            if inlined {
28020                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
28021                _inner_offset = offset + 8;
28022            } else {
28023                depth.increment()?;
28024                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
28025            }
28026            match ordinal {
28027                1 => {
28028                    #[allow(irrefutable_let_patterns)]
28029                    if let Expose::Service(_) = self {
28030                        // Do nothing, read the value into the object
28031                    } else {
28032                        // Initialize `self` to the right variant
28033                        *self = Expose::Service(fidl::new_empty!(ExposeService, D));
28034                    }
28035                    #[allow(irrefutable_let_patterns)]
28036                    if let Expose::Service(ref mut val) = self {
28037                        fidl::decode!(ExposeService, D, val, decoder, _inner_offset, depth)?;
28038                    } else {
28039                        unreachable!()
28040                    }
28041                }
28042                2 => {
28043                    #[allow(irrefutable_let_patterns)]
28044                    if let Expose::Protocol(_) = self {
28045                        // Do nothing, read the value into the object
28046                    } else {
28047                        // Initialize `self` to the right variant
28048                        *self = Expose::Protocol(fidl::new_empty!(ExposeProtocol, D));
28049                    }
28050                    #[allow(irrefutable_let_patterns)]
28051                    if let Expose::Protocol(ref mut val) = self {
28052                        fidl::decode!(ExposeProtocol, D, val, decoder, _inner_offset, depth)?;
28053                    } else {
28054                        unreachable!()
28055                    }
28056                }
28057                3 => {
28058                    #[allow(irrefutable_let_patterns)]
28059                    if let Expose::Directory(_) = self {
28060                        // Do nothing, read the value into the object
28061                    } else {
28062                        // Initialize `self` to the right variant
28063                        *self = Expose::Directory(fidl::new_empty!(ExposeDirectory, D));
28064                    }
28065                    #[allow(irrefutable_let_patterns)]
28066                    if let Expose::Directory(ref mut val) = self {
28067                        fidl::decode!(ExposeDirectory, D, val, decoder, _inner_offset, depth)?;
28068                    } else {
28069                        unreachable!()
28070                    }
28071                }
28072                4 => {
28073                    #[allow(irrefutable_let_patterns)]
28074                    if let Expose::Runner(_) = self {
28075                        // Do nothing, read the value into the object
28076                    } else {
28077                        // Initialize `self` to the right variant
28078                        *self = Expose::Runner(fidl::new_empty!(ExposeRunner, D));
28079                    }
28080                    #[allow(irrefutable_let_patterns)]
28081                    if let Expose::Runner(ref mut val) = self {
28082                        fidl::decode!(ExposeRunner, D, val, decoder, _inner_offset, depth)?;
28083                    } else {
28084                        unreachable!()
28085                    }
28086                }
28087                5 => {
28088                    #[allow(irrefutable_let_patterns)]
28089                    if let Expose::Resolver(_) = self {
28090                        // Do nothing, read the value into the object
28091                    } else {
28092                        // Initialize `self` to the right variant
28093                        *self = Expose::Resolver(fidl::new_empty!(ExposeResolver, D));
28094                    }
28095                    #[allow(irrefutable_let_patterns)]
28096                    if let Expose::Resolver(ref mut val) = self {
28097                        fidl::decode!(ExposeResolver, D, val, decoder, _inner_offset, depth)?;
28098                    } else {
28099                        unreachable!()
28100                    }
28101                }
28102                7 => {
28103                    #[allow(irrefutable_let_patterns)]
28104                    if let Expose::Dictionary(_) = self {
28105                        // Do nothing, read the value into the object
28106                    } else {
28107                        // Initialize `self` to the right variant
28108                        *self = Expose::Dictionary(fidl::new_empty!(ExposeDictionary, D));
28109                    }
28110                    #[allow(irrefutable_let_patterns)]
28111                    if let Expose::Dictionary(ref mut val) = self {
28112                        fidl::decode!(ExposeDictionary, D, val, decoder, _inner_offset, depth)?;
28113                    } else {
28114                        unreachable!()
28115                    }
28116                }
28117                8 => {
28118                    #[allow(irrefutable_let_patterns)]
28119                    if let Expose::Config(_) = self {
28120                        // Do nothing, read the value into the object
28121                    } else {
28122                        // Initialize `self` to the right variant
28123                        *self = Expose::Config(fidl::new_empty!(ExposeConfiguration, D));
28124                    }
28125                    #[allow(irrefutable_let_patterns)]
28126                    if let Expose::Config(ref mut val) = self {
28127                        fidl::decode!(ExposeConfiguration, D, val, decoder, _inner_offset, depth)?;
28128                    } else {
28129                        unreachable!()
28130                    }
28131                }
28132                #[allow(deprecated)]
28133                ordinal => {
28134                    for _ in 0..num_handles {
28135                        decoder.drop_next_handle()?;
28136                    }
28137                    *self = Expose::__SourceBreaking { unknown_ordinal: ordinal };
28138                }
28139            }
28140            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
28141                return Err(fidl::Error::InvalidNumBytesInEnvelope);
28142            }
28143            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
28144                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
28145            }
28146            Ok(())
28147        }
28148    }
28149
28150    impl fidl::encoding::ValueTypeMarker for LayoutConstraint {
28151        type Borrowed<'a> = &'a Self;
28152        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
28153            value
28154        }
28155    }
28156
28157    unsafe impl fidl::encoding::TypeMarker for LayoutConstraint {
28158        type Owned = Self;
28159
28160        #[inline(always)]
28161        fn inline_align(_context: fidl::encoding::Context) -> usize {
28162            8
28163        }
28164
28165        #[inline(always)]
28166        fn inline_size(_context: fidl::encoding::Context) -> usize {
28167            16
28168        }
28169    }
28170
28171    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<LayoutConstraint, D>
28172        for &LayoutConstraint
28173    {
28174        #[inline]
28175        unsafe fn encode(
28176            self,
28177            encoder: &mut fidl::encoding::Encoder<'_, D>,
28178            offset: usize,
28179            _depth: fidl::encoding::Depth,
28180        ) -> fidl::Result<()> {
28181            encoder.debug_check_bounds::<LayoutConstraint>(offset);
28182            encoder.write_num::<u64>(self.ordinal(), offset);
28183            match self {
28184                LayoutConstraint::MaxSize(ref val) => fidl::encoding::encode_in_envelope::<u32, D>(
28185                    <u32 as fidl::encoding::ValueTypeMarker>::borrow(val),
28186                    encoder,
28187                    offset + 8,
28188                    _depth,
28189                ),
28190                LayoutConstraint::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
28191            }
28192        }
28193    }
28194
28195    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for LayoutConstraint {
28196        #[inline(always)]
28197        fn new_empty() -> Self {
28198            Self::__SourceBreaking { unknown_ordinal: 0 }
28199        }
28200
28201        #[inline]
28202        unsafe fn decode(
28203            &mut self,
28204            decoder: &mut fidl::encoding::Decoder<'_, D>,
28205            offset: usize,
28206            mut depth: fidl::encoding::Depth,
28207        ) -> fidl::Result<()> {
28208            decoder.debug_check_bounds::<Self>(offset);
28209            #[allow(unused_variables)]
28210            let next_out_of_line = decoder.next_out_of_line();
28211            let handles_before = decoder.remaining_handles();
28212            let (ordinal, inlined, num_bytes, num_handles) =
28213                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
28214
28215            let member_inline_size = match ordinal {
28216                1 => <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
28217                0 => return Err(fidl::Error::UnknownUnionTag),
28218                _ => num_bytes as usize,
28219            };
28220
28221            if inlined != (member_inline_size <= 4) {
28222                return Err(fidl::Error::InvalidInlineBitInEnvelope);
28223            }
28224            let _inner_offset;
28225            if inlined {
28226                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
28227                _inner_offset = offset + 8;
28228            } else {
28229                depth.increment()?;
28230                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
28231            }
28232            match ordinal {
28233                1 => {
28234                    #[allow(irrefutable_let_patterns)]
28235                    if let LayoutConstraint::MaxSize(_) = self {
28236                        // Do nothing, read the value into the object
28237                    } else {
28238                        // Initialize `self` to the right variant
28239                        *self = LayoutConstraint::MaxSize(fidl::new_empty!(u32, D));
28240                    }
28241                    #[allow(irrefutable_let_patterns)]
28242                    if let LayoutConstraint::MaxSize(ref mut val) = self {
28243                        fidl::decode!(u32, D, val, decoder, _inner_offset, depth)?;
28244                    } else {
28245                        unreachable!()
28246                    }
28247                }
28248                #[allow(deprecated)]
28249                ordinal => {
28250                    for _ in 0..num_handles {
28251                        decoder.drop_next_handle()?;
28252                    }
28253                    *self = LayoutConstraint::__SourceBreaking { unknown_ordinal: ordinal };
28254                }
28255            }
28256            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
28257                return Err(fidl::Error::InvalidNumBytesInEnvelope);
28258            }
28259            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
28260                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
28261            }
28262            Ok(())
28263        }
28264    }
28265
28266    impl fidl::encoding::ValueTypeMarker for LayoutParameter {
28267        type Borrowed<'a> = &'a Self;
28268        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
28269            value
28270        }
28271    }
28272
28273    unsafe impl fidl::encoding::TypeMarker for LayoutParameter {
28274        type Owned = Self;
28275
28276        #[inline(always)]
28277        fn inline_align(_context: fidl::encoding::Context) -> usize {
28278            8
28279        }
28280
28281        #[inline(always)]
28282        fn inline_size(_context: fidl::encoding::Context) -> usize {
28283            16
28284        }
28285    }
28286
28287    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<LayoutParameter, D>
28288        for &LayoutParameter
28289    {
28290        #[inline]
28291        unsafe fn encode(
28292            self,
28293            encoder: &mut fidl::encoding::Encoder<'_, D>,
28294            offset: usize,
28295            _depth: fidl::encoding::Depth,
28296        ) -> fidl::Result<()> {
28297            encoder.debug_check_bounds::<LayoutParameter>(offset);
28298            encoder.write_num::<u64>(self.ordinal(), offset);
28299            match self {
28300                LayoutParameter::NestedType(ref val) => {
28301                    fidl::encoding::encode_in_envelope::<ConfigType, D>(
28302                        <ConfigType as fidl::encoding::ValueTypeMarker>::borrow(val),
28303                        encoder,
28304                        offset + 8,
28305                        _depth,
28306                    )
28307                }
28308                LayoutParameter::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
28309            }
28310        }
28311    }
28312
28313    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for LayoutParameter {
28314        #[inline(always)]
28315        fn new_empty() -> Self {
28316            Self::__SourceBreaking { unknown_ordinal: 0 }
28317        }
28318
28319        #[inline]
28320        unsafe fn decode(
28321            &mut self,
28322            decoder: &mut fidl::encoding::Decoder<'_, D>,
28323            offset: usize,
28324            mut depth: fidl::encoding::Depth,
28325        ) -> fidl::Result<()> {
28326            decoder.debug_check_bounds::<Self>(offset);
28327            #[allow(unused_variables)]
28328            let next_out_of_line = decoder.next_out_of_line();
28329            let handles_before = decoder.remaining_handles();
28330            let (ordinal, inlined, num_bytes, num_handles) =
28331                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
28332
28333            let member_inline_size = match ordinal {
28334                1 => <ConfigType as fidl::encoding::TypeMarker>::inline_size(decoder.context),
28335                0 => return Err(fidl::Error::UnknownUnionTag),
28336                _ => num_bytes as usize,
28337            };
28338
28339            if inlined != (member_inline_size <= 4) {
28340                return Err(fidl::Error::InvalidInlineBitInEnvelope);
28341            }
28342            let _inner_offset;
28343            if inlined {
28344                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
28345                _inner_offset = offset + 8;
28346            } else {
28347                depth.increment()?;
28348                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
28349            }
28350            match ordinal {
28351                1 => {
28352                    #[allow(irrefutable_let_patterns)]
28353                    if let LayoutParameter::NestedType(_) = self {
28354                        // Do nothing, read the value into the object
28355                    } else {
28356                        // Initialize `self` to the right variant
28357                        *self = LayoutParameter::NestedType(fidl::new_empty!(ConfigType, D));
28358                    }
28359                    #[allow(irrefutable_let_patterns)]
28360                    if let LayoutParameter::NestedType(ref mut val) = self {
28361                        fidl::decode!(ConfigType, D, val, decoder, _inner_offset, depth)?;
28362                    } else {
28363                        unreachable!()
28364                    }
28365                }
28366                #[allow(deprecated)]
28367                ordinal => {
28368                    for _ in 0..num_handles {
28369                        decoder.drop_next_handle()?;
28370                    }
28371                    *self = LayoutParameter::__SourceBreaking { unknown_ordinal: ordinal };
28372                }
28373            }
28374            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
28375                return Err(fidl::Error::InvalidNumBytesInEnvelope);
28376            }
28377            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
28378                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
28379            }
28380            Ok(())
28381        }
28382    }
28383
28384    impl fidl::encoding::ValueTypeMarker for Offer {
28385        type Borrowed<'a> = &'a Self;
28386        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
28387            value
28388        }
28389    }
28390
28391    unsafe impl fidl::encoding::TypeMarker for Offer {
28392        type Owned = Self;
28393
28394        #[inline(always)]
28395        fn inline_align(_context: fidl::encoding::Context) -> usize {
28396            8
28397        }
28398
28399        #[inline(always)]
28400        fn inline_size(_context: fidl::encoding::Context) -> usize {
28401            16
28402        }
28403    }
28404
28405    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Offer, D> for &Offer {
28406        #[inline]
28407        unsafe fn encode(
28408            self,
28409            encoder: &mut fidl::encoding::Encoder<'_, D>,
28410            offset: usize,
28411            _depth: fidl::encoding::Depth,
28412        ) -> fidl::Result<()> {
28413            encoder.debug_check_bounds::<Offer>(offset);
28414            encoder.write_num::<u64>(self.ordinal(), offset);
28415            match self {
28416                Offer::Service(ref val) => fidl::encoding::encode_in_envelope::<OfferService, D>(
28417                    <OfferService as fidl::encoding::ValueTypeMarker>::borrow(val),
28418                    encoder,
28419                    offset + 8,
28420                    _depth,
28421                ),
28422                Offer::Protocol(ref val) => fidl::encoding::encode_in_envelope::<OfferProtocol, D>(
28423                    <OfferProtocol as fidl::encoding::ValueTypeMarker>::borrow(val),
28424                    encoder,
28425                    offset + 8,
28426                    _depth,
28427                ),
28428                Offer::Directory(ref val) => {
28429                    fidl::encoding::encode_in_envelope::<OfferDirectory, D>(
28430                        <OfferDirectory as fidl::encoding::ValueTypeMarker>::borrow(val),
28431                        encoder,
28432                        offset + 8,
28433                        _depth,
28434                    )
28435                }
28436                Offer::Storage(ref val) => fidl::encoding::encode_in_envelope::<OfferStorage, D>(
28437                    <OfferStorage as fidl::encoding::ValueTypeMarker>::borrow(val),
28438                    encoder,
28439                    offset + 8,
28440                    _depth,
28441                ),
28442                Offer::Runner(ref val) => fidl::encoding::encode_in_envelope::<OfferRunner, D>(
28443                    <OfferRunner as fidl::encoding::ValueTypeMarker>::borrow(val),
28444                    encoder,
28445                    offset + 8,
28446                    _depth,
28447                ),
28448                Offer::Resolver(ref val) => fidl::encoding::encode_in_envelope::<OfferResolver, D>(
28449                    <OfferResolver as fidl::encoding::ValueTypeMarker>::borrow(val),
28450                    encoder,
28451                    offset + 8,
28452                    _depth,
28453                ),
28454                Offer::EventStream(ref val) => {
28455                    fidl::encoding::encode_in_envelope::<OfferEventStream, D>(
28456                        <OfferEventStream as fidl::encoding::ValueTypeMarker>::borrow(val),
28457                        encoder,
28458                        offset + 8,
28459                        _depth,
28460                    )
28461                }
28462                Offer::Dictionary(ref val) => {
28463                    fidl::encoding::encode_in_envelope::<OfferDictionary, D>(
28464                        <OfferDictionary as fidl::encoding::ValueTypeMarker>::borrow(val),
28465                        encoder,
28466                        offset + 8,
28467                        _depth,
28468                    )
28469                }
28470                Offer::Config(ref val) => {
28471                    fidl::encoding::encode_in_envelope::<OfferConfiguration, D>(
28472                        <OfferConfiguration as fidl::encoding::ValueTypeMarker>::borrow(val),
28473                        encoder,
28474                        offset + 8,
28475                        _depth,
28476                    )
28477                }
28478                Offer::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
28479            }
28480        }
28481    }
28482
28483    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Offer {
28484        #[inline(always)]
28485        fn new_empty() -> Self {
28486            Self::__SourceBreaking { unknown_ordinal: 0 }
28487        }
28488
28489        #[inline]
28490        unsafe fn decode(
28491            &mut self,
28492            decoder: &mut fidl::encoding::Decoder<'_, D>,
28493            offset: usize,
28494            mut depth: fidl::encoding::Depth,
28495        ) -> fidl::Result<()> {
28496            decoder.debug_check_bounds::<Self>(offset);
28497            #[allow(unused_variables)]
28498            let next_out_of_line = decoder.next_out_of_line();
28499            let handles_before = decoder.remaining_handles();
28500            let (ordinal, inlined, num_bytes, num_handles) =
28501                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
28502
28503            let member_inline_size = match ordinal {
28504                1 => <OfferService as fidl::encoding::TypeMarker>::inline_size(decoder.context),
28505                2 => <OfferProtocol as fidl::encoding::TypeMarker>::inline_size(decoder.context),
28506                3 => <OfferDirectory as fidl::encoding::TypeMarker>::inline_size(decoder.context),
28507                4 => <OfferStorage as fidl::encoding::TypeMarker>::inline_size(decoder.context),
28508                5 => <OfferRunner as fidl::encoding::TypeMarker>::inline_size(decoder.context),
28509                6 => <OfferResolver as fidl::encoding::TypeMarker>::inline_size(decoder.context),
28510                8 => <OfferEventStream as fidl::encoding::TypeMarker>::inline_size(decoder.context),
28511                9 => <OfferDictionary as fidl::encoding::TypeMarker>::inline_size(decoder.context),
28512                10 => {
28513                    <OfferConfiguration as fidl::encoding::TypeMarker>::inline_size(decoder.context)
28514                }
28515                0 => return Err(fidl::Error::UnknownUnionTag),
28516                _ => num_bytes as usize,
28517            };
28518
28519            if inlined != (member_inline_size <= 4) {
28520                return Err(fidl::Error::InvalidInlineBitInEnvelope);
28521            }
28522            let _inner_offset;
28523            if inlined {
28524                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
28525                _inner_offset = offset + 8;
28526            } else {
28527                depth.increment()?;
28528                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
28529            }
28530            match ordinal {
28531                1 => {
28532                    #[allow(irrefutable_let_patterns)]
28533                    if let Offer::Service(_) = self {
28534                        // Do nothing, read the value into the object
28535                    } else {
28536                        // Initialize `self` to the right variant
28537                        *self = Offer::Service(fidl::new_empty!(OfferService, D));
28538                    }
28539                    #[allow(irrefutable_let_patterns)]
28540                    if let Offer::Service(ref mut val) = self {
28541                        fidl::decode!(OfferService, D, val, decoder, _inner_offset, depth)?;
28542                    } else {
28543                        unreachable!()
28544                    }
28545                }
28546                2 => {
28547                    #[allow(irrefutable_let_patterns)]
28548                    if let Offer::Protocol(_) = self {
28549                        // Do nothing, read the value into the object
28550                    } else {
28551                        // Initialize `self` to the right variant
28552                        *self = Offer::Protocol(fidl::new_empty!(OfferProtocol, D));
28553                    }
28554                    #[allow(irrefutable_let_patterns)]
28555                    if let Offer::Protocol(ref mut val) = self {
28556                        fidl::decode!(OfferProtocol, D, val, decoder, _inner_offset, depth)?;
28557                    } else {
28558                        unreachable!()
28559                    }
28560                }
28561                3 => {
28562                    #[allow(irrefutable_let_patterns)]
28563                    if let Offer::Directory(_) = self {
28564                        // Do nothing, read the value into the object
28565                    } else {
28566                        // Initialize `self` to the right variant
28567                        *self = Offer::Directory(fidl::new_empty!(OfferDirectory, D));
28568                    }
28569                    #[allow(irrefutable_let_patterns)]
28570                    if let Offer::Directory(ref mut val) = self {
28571                        fidl::decode!(OfferDirectory, D, val, decoder, _inner_offset, depth)?;
28572                    } else {
28573                        unreachable!()
28574                    }
28575                }
28576                4 => {
28577                    #[allow(irrefutable_let_patterns)]
28578                    if let Offer::Storage(_) = self {
28579                        // Do nothing, read the value into the object
28580                    } else {
28581                        // Initialize `self` to the right variant
28582                        *self = Offer::Storage(fidl::new_empty!(OfferStorage, D));
28583                    }
28584                    #[allow(irrefutable_let_patterns)]
28585                    if let Offer::Storage(ref mut val) = self {
28586                        fidl::decode!(OfferStorage, D, val, decoder, _inner_offset, depth)?;
28587                    } else {
28588                        unreachable!()
28589                    }
28590                }
28591                5 => {
28592                    #[allow(irrefutable_let_patterns)]
28593                    if let Offer::Runner(_) = self {
28594                        // Do nothing, read the value into the object
28595                    } else {
28596                        // Initialize `self` to the right variant
28597                        *self = Offer::Runner(fidl::new_empty!(OfferRunner, D));
28598                    }
28599                    #[allow(irrefutable_let_patterns)]
28600                    if let Offer::Runner(ref mut val) = self {
28601                        fidl::decode!(OfferRunner, D, val, decoder, _inner_offset, depth)?;
28602                    } else {
28603                        unreachable!()
28604                    }
28605                }
28606                6 => {
28607                    #[allow(irrefutable_let_patterns)]
28608                    if let Offer::Resolver(_) = self {
28609                        // Do nothing, read the value into the object
28610                    } else {
28611                        // Initialize `self` to the right variant
28612                        *self = Offer::Resolver(fidl::new_empty!(OfferResolver, D));
28613                    }
28614                    #[allow(irrefutable_let_patterns)]
28615                    if let Offer::Resolver(ref mut val) = self {
28616                        fidl::decode!(OfferResolver, D, val, decoder, _inner_offset, depth)?;
28617                    } else {
28618                        unreachable!()
28619                    }
28620                }
28621                8 => {
28622                    #[allow(irrefutable_let_patterns)]
28623                    if let Offer::EventStream(_) = self {
28624                        // Do nothing, read the value into the object
28625                    } else {
28626                        // Initialize `self` to the right variant
28627                        *self = Offer::EventStream(fidl::new_empty!(OfferEventStream, D));
28628                    }
28629                    #[allow(irrefutable_let_patterns)]
28630                    if let Offer::EventStream(ref mut val) = self {
28631                        fidl::decode!(OfferEventStream, D, val, decoder, _inner_offset, depth)?;
28632                    } else {
28633                        unreachable!()
28634                    }
28635                }
28636                9 => {
28637                    #[allow(irrefutable_let_patterns)]
28638                    if let Offer::Dictionary(_) = self {
28639                        // Do nothing, read the value into the object
28640                    } else {
28641                        // Initialize `self` to the right variant
28642                        *self = Offer::Dictionary(fidl::new_empty!(OfferDictionary, D));
28643                    }
28644                    #[allow(irrefutable_let_patterns)]
28645                    if let Offer::Dictionary(ref mut val) = self {
28646                        fidl::decode!(OfferDictionary, D, val, decoder, _inner_offset, depth)?;
28647                    } else {
28648                        unreachable!()
28649                    }
28650                }
28651                10 => {
28652                    #[allow(irrefutable_let_patterns)]
28653                    if let Offer::Config(_) = self {
28654                        // Do nothing, read the value into the object
28655                    } else {
28656                        // Initialize `self` to the right variant
28657                        *self = Offer::Config(fidl::new_empty!(OfferConfiguration, D));
28658                    }
28659                    #[allow(irrefutable_let_patterns)]
28660                    if let Offer::Config(ref mut val) = self {
28661                        fidl::decode!(OfferConfiguration, D, val, decoder, _inner_offset, depth)?;
28662                    } else {
28663                        unreachable!()
28664                    }
28665                }
28666                #[allow(deprecated)]
28667                ordinal => {
28668                    for _ in 0..num_handles {
28669                        decoder.drop_next_handle()?;
28670                    }
28671                    *self = Offer::__SourceBreaking { unknown_ordinal: ordinal };
28672                }
28673            }
28674            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
28675                return Err(fidl::Error::InvalidNumBytesInEnvelope);
28676            }
28677            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
28678                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
28679            }
28680            Ok(())
28681        }
28682    }
28683
28684    impl fidl::encoding::ValueTypeMarker for Ref {
28685        type Borrowed<'a> = &'a Self;
28686        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
28687            value
28688        }
28689    }
28690
28691    unsafe impl fidl::encoding::TypeMarker for Ref {
28692        type Owned = Self;
28693
28694        #[inline(always)]
28695        fn inline_align(_context: fidl::encoding::Context) -> usize {
28696            8
28697        }
28698
28699        #[inline(always)]
28700        fn inline_size(_context: fidl::encoding::Context) -> usize {
28701            16
28702        }
28703    }
28704
28705    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Ref, D> for &Ref {
28706        #[inline]
28707        unsafe fn encode(
28708            self,
28709            encoder: &mut fidl::encoding::Encoder<'_, D>,
28710            offset: usize,
28711            _depth: fidl::encoding::Depth,
28712        ) -> fidl::Result<()> {
28713            encoder.debug_check_bounds::<Ref>(offset);
28714            encoder.write_num::<u64>(self.ordinal(), offset);
28715            match self {
28716                Ref::Parent(ref val) => fidl::encoding::encode_in_envelope::<ParentRef, D>(
28717                    <ParentRef as fidl::encoding::ValueTypeMarker>::borrow(val),
28718                    encoder,
28719                    offset + 8,
28720                    _depth,
28721                ),
28722                Ref::Self_(ref val) => fidl::encoding::encode_in_envelope::<SelfRef, D>(
28723                    <SelfRef as fidl::encoding::ValueTypeMarker>::borrow(val),
28724                    encoder,
28725                    offset + 8,
28726                    _depth,
28727                ),
28728                Ref::Child(ref val) => fidl::encoding::encode_in_envelope::<ChildRef, D>(
28729                    <ChildRef as fidl::encoding::ValueTypeMarker>::borrow(val),
28730                    encoder,
28731                    offset + 8,
28732                    _depth,
28733                ),
28734                Ref::Collection(ref val) => fidl::encoding::encode_in_envelope::<CollectionRef, D>(
28735                    <CollectionRef as fidl::encoding::ValueTypeMarker>::borrow(val),
28736                    encoder,
28737                    offset + 8,
28738                    _depth,
28739                ),
28740                Ref::Framework(ref val) => fidl::encoding::encode_in_envelope::<FrameworkRef, D>(
28741                    <FrameworkRef as fidl::encoding::ValueTypeMarker>::borrow(val),
28742                    encoder,
28743                    offset + 8,
28744                    _depth,
28745                ),
28746                Ref::Capability(ref val) => fidl::encoding::encode_in_envelope::<CapabilityRef, D>(
28747                    <CapabilityRef as fidl::encoding::ValueTypeMarker>::borrow(val),
28748                    encoder,
28749                    offset + 8,
28750                    _depth,
28751                ),
28752                Ref::Debug(ref val) => fidl::encoding::encode_in_envelope::<DebugRef, D>(
28753                    <DebugRef as fidl::encoding::ValueTypeMarker>::borrow(val),
28754                    encoder,
28755                    offset + 8,
28756                    _depth,
28757                ),
28758                Ref::VoidType(ref val) => fidl::encoding::encode_in_envelope::<VoidRef, D>(
28759                    <VoidRef as fidl::encoding::ValueTypeMarker>::borrow(val),
28760                    encoder,
28761                    offset + 8,
28762                    _depth,
28763                ),
28764                Ref::Environment(ref val) => {
28765                    fidl::encoding::encode_in_envelope::<EnvironmentRef, D>(
28766                        <EnvironmentRef as fidl::encoding::ValueTypeMarker>::borrow(val),
28767                        encoder,
28768                        offset + 8,
28769                        _depth,
28770                    )
28771                }
28772                Ref::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
28773            }
28774        }
28775    }
28776
28777    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Ref {
28778        #[inline(always)]
28779        fn new_empty() -> Self {
28780            Self::__SourceBreaking { unknown_ordinal: 0 }
28781        }
28782
28783        #[inline]
28784        unsafe fn decode(
28785            &mut self,
28786            decoder: &mut fidl::encoding::Decoder<'_, D>,
28787            offset: usize,
28788            mut depth: fidl::encoding::Depth,
28789        ) -> fidl::Result<()> {
28790            decoder.debug_check_bounds::<Self>(offset);
28791            #[allow(unused_variables)]
28792            let next_out_of_line = decoder.next_out_of_line();
28793            let handles_before = decoder.remaining_handles();
28794            let (ordinal, inlined, num_bytes, num_handles) =
28795                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
28796
28797            let member_inline_size = match ordinal {
28798                1 => <ParentRef as fidl::encoding::TypeMarker>::inline_size(decoder.context),
28799                2 => <SelfRef as fidl::encoding::TypeMarker>::inline_size(decoder.context),
28800                3 => <ChildRef as fidl::encoding::TypeMarker>::inline_size(decoder.context),
28801                4 => <CollectionRef as fidl::encoding::TypeMarker>::inline_size(decoder.context),
28802                5 => <FrameworkRef as fidl::encoding::TypeMarker>::inline_size(decoder.context),
28803                6 => <CapabilityRef as fidl::encoding::TypeMarker>::inline_size(decoder.context),
28804                7 => <DebugRef as fidl::encoding::TypeMarker>::inline_size(decoder.context),
28805                8 => <VoidRef as fidl::encoding::TypeMarker>::inline_size(decoder.context),
28806                9 => <EnvironmentRef as fidl::encoding::TypeMarker>::inline_size(decoder.context),
28807                0 => return Err(fidl::Error::UnknownUnionTag),
28808                _ => num_bytes as usize,
28809            };
28810
28811            if inlined != (member_inline_size <= 4) {
28812                return Err(fidl::Error::InvalidInlineBitInEnvelope);
28813            }
28814            let _inner_offset;
28815            if inlined {
28816                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
28817                _inner_offset = offset + 8;
28818            } else {
28819                depth.increment()?;
28820                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
28821            }
28822            match ordinal {
28823                1 => {
28824                    #[allow(irrefutable_let_patterns)]
28825                    if let Ref::Parent(_) = self {
28826                        // Do nothing, read the value into the object
28827                    } else {
28828                        // Initialize `self` to the right variant
28829                        *self = Ref::Parent(fidl::new_empty!(ParentRef, D));
28830                    }
28831                    #[allow(irrefutable_let_patterns)]
28832                    if let Ref::Parent(ref mut val) = self {
28833                        fidl::decode!(ParentRef, D, val, decoder, _inner_offset, depth)?;
28834                    } else {
28835                        unreachable!()
28836                    }
28837                }
28838                2 => {
28839                    #[allow(irrefutable_let_patterns)]
28840                    if let Ref::Self_(_) = self {
28841                        // Do nothing, read the value into the object
28842                    } else {
28843                        // Initialize `self` to the right variant
28844                        *self = Ref::Self_(fidl::new_empty!(SelfRef, D));
28845                    }
28846                    #[allow(irrefutable_let_patterns)]
28847                    if let Ref::Self_(ref mut val) = self {
28848                        fidl::decode!(SelfRef, D, val, decoder, _inner_offset, depth)?;
28849                    } else {
28850                        unreachable!()
28851                    }
28852                }
28853                3 => {
28854                    #[allow(irrefutable_let_patterns)]
28855                    if let Ref::Child(_) = self {
28856                        // Do nothing, read the value into the object
28857                    } else {
28858                        // Initialize `self` to the right variant
28859                        *self = Ref::Child(fidl::new_empty!(ChildRef, D));
28860                    }
28861                    #[allow(irrefutable_let_patterns)]
28862                    if let Ref::Child(ref mut val) = self {
28863                        fidl::decode!(ChildRef, D, val, decoder, _inner_offset, depth)?;
28864                    } else {
28865                        unreachable!()
28866                    }
28867                }
28868                4 => {
28869                    #[allow(irrefutable_let_patterns)]
28870                    if let Ref::Collection(_) = self {
28871                        // Do nothing, read the value into the object
28872                    } else {
28873                        // Initialize `self` to the right variant
28874                        *self = Ref::Collection(fidl::new_empty!(CollectionRef, D));
28875                    }
28876                    #[allow(irrefutable_let_patterns)]
28877                    if let Ref::Collection(ref mut val) = self {
28878                        fidl::decode!(CollectionRef, D, val, decoder, _inner_offset, depth)?;
28879                    } else {
28880                        unreachable!()
28881                    }
28882                }
28883                5 => {
28884                    #[allow(irrefutable_let_patterns)]
28885                    if let Ref::Framework(_) = self {
28886                        // Do nothing, read the value into the object
28887                    } else {
28888                        // Initialize `self` to the right variant
28889                        *self = Ref::Framework(fidl::new_empty!(FrameworkRef, D));
28890                    }
28891                    #[allow(irrefutable_let_patterns)]
28892                    if let Ref::Framework(ref mut val) = self {
28893                        fidl::decode!(FrameworkRef, D, val, decoder, _inner_offset, depth)?;
28894                    } else {
28895                        unreachable!()
28896                    }
28897                }
28898                6 => {
28899                    #[allow(irrefutable_let_patterns)]
28900                    if let Ref::Capability(_) = self {
28901                        // Do nothing, read the value into the object
28902                    } else {
28903                        // Initialize `self` to the right variant
28904                        *self = Ref::Capability(fidl::new_empty!(CapabilityRef, D));
28905                    }
28906                    #[allow(irrefutable_let_patterns)]
28907                    if let Ref::Capability(ref mut val) = self {
28908                        fidl::decode!(CapabilityRef, D, val, decoder, _inner_offset, depth)?;
28909                    } else {
28910                        unreachable!()
28911                    }
28912                }
28913                7 => {
28914                    #[allow(irrefutable_let_patterns)]
28915                    if let Ref::Debug(_) = self {
28916                        // Do nothing, read the value into the object
28917                    } else {
28918                        // Initialize `self` to the right variant
28919                        *self = Ref::Debug(fidl::new_empty!(DebugRef, D));
28920                    }
28921                    #[allow(irrefutable_let_patterns)]
28922                    if let Ref::Debug(ref mut val) = self {
28923                        fidl::decode!(DebugRef, D, val, decoder, _inner_offset, depth)?;
28924                    } else {
28925                        unreachable!()
28926                    }
28927                }
28928                8 => {
28929                    #[allow(irrefutable_let_patterns)]
28930                    if let Ref::VoidType(_) = self {
28931                        // Do nothing, read the value into the object
28932                    } else {
28933                        // Initialize `self` to the right variant
28934                        *self = Ref::VoidType(fidl::new_empty!(VoidRef, D));
28935                    }
28936                    #[allow(irrefutable_let_patterns)]
28937                    if let Ref::VoidType(ref mut val) = self {
28938                        fidl::decode!(VoidRef, D, val, decoder, _inner_offset, depth)?;
28939                    } else {
28940                        unreachable!()
28941                    }
28942                }
28943                9 => {
28944                    #[allow(irrefutable_let_patterns)]
28945                    if let Ref::Environment(_) = self {
28946                        // Do nothing, read the value into the object
28947                    } else {
28948                        // Initialize `self` to the right variant
28949                        *self = Ref::Environment(fidl::new_empty!(EnvironmentRef, D));
28950                    }
28951                    #[allow(irrefutable_let_patterns)]
28952                    if let Ref::Environment(ref mut val) = self {
28953                        fidl::decode!(EnvironmentRef, D, val, decoder, _inner_offset, depth)?;
28954                    } else {
28955                        unreachable!()
28956                    }
28957                }
28958                #[allow(deprecated)]
28959                ordinal => {
28960                    for _ in 0..num_handles {
28961                        decoder.drop_next_handle()?;
28962                    }
28963                    *self = Ref::__SourceBreaking { unknown_ordinal: ordinal };
28964                }
28965            }
28966            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
28967                return Err(fidl::Error::InvalidNumBytesInEnvelope);
28968            }
28969            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
28970                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
28971            }
28972            Ok(())
28973        }
28974    }
28975
28976    impl fidl::encoding::ValueTypeMarker for Use {
28977        type Borrowed<'a> = &'a Self;
28978        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
28979            value
28980        }
28981    }
28982
28983    unsafe impl fidl::encoding::TypeMarker for Use {
28984        type Owned = Self;
28985
28986        #[inline(always)]
28987        fn inline_align(_context: fidl::encoding::Context) -> usize {
28988            8
28989        }
28990
28991        #[inline(always)]
28992        fn inline_size(_context: fidl::encoding::Context) -> usize {
28993            16
28994        }
28995    }
28996
28997    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Use, D> for &Use {
28998        #[inline]
28999        unsafe fn encode(
29000            self,
29001            encoder: &mut fidl::encoding::Encoder<'_, D>,
29002            offset: usize,
29003            _depth: fidl::encoding::Depth,
29004        ) -> fidl::Result<()> {
29005            encoder.debug_check_bounds::<Use>(offset);
29006            encoder.write_num::<u64>(self.ordinal(), offset);
29007            match self {
29008                Use::Service(ref val) => fidl::encoding::encode_in_envelope::<UseService, D>(
29009                    <UseService as fidl::encoding::ValueTypeMarker>::borrow(val),
29010                    encoder,
29011                    offset + 8,
29012                    _depth,
29013                ),
29014                Use::Protocol(ref val) => fidl::encoding::encode_in_envelope::<UseProtocol, D>(
29015                    <UseProtocol as fidl::encoding::ValueTypeMarker>::borrow(val),
29016                    encoder,
29017                    offset + 8,
29018                    _depth,
29019                ),
29020                Use::Directory(ref val) => fidl::encoding::encode_in_envelope::<UseDirectory, D>(
29021                    <UseDirectory as fidl::encoding::ValueTypeMarker>::borrow(val),
29022                    encoder,
29023                    offset + 8,
29024                    _depth,
29025                ),
29026                Use::Storage(ref val) => fidl::encoding::encode_in_envelope::<UseStorage, D>(
29027                    <UseStorage as fidl::encoding::ValueTypeMarker>::borrow(val),
29028                    encoder,
29029                    offset + 8,
29030                    _depth,
29031                ),
29032                Use::EventStream(ref val) => {
29033                    fidl::encoding::encode_in_envelope::<UseEventStream, D>(
29034                        <UseEventStream as fidl::encoding::ValueTypeMarker>::borrow(val),
29035                        encoder,
29036                        offset + 8,
29037                        _depth,
29038                    )
29039                }
29040                Use::Runner(ref val) => fidl::encoding::encode_in_envelope::<UseRunner, D>(
29041                    <UseRunner as fidl::encoding::ValueTypeMarker>::borrow(val),
29042                    encoder,
29043                    offset + 8,
29044                    _depth,
29045                ),
29046                Use::Config(ref val) => fidl::encoding::encode_in_envelope::<UseConfiguration, D>(
29047                    <UseConfiguration as fidl::encoding::ValueTypeMarker>::borrow(val),
29048                    encoder,
29049                    offset + 8,
29050                    _depth,
29051                ),
29052                Use::Dictionary(ref val) => fidl::encoding::encode_in_envelope::<UseDictionary, D>(
29053                    <UseDictionary as fidl::encoding::ValueTypeMarker>::borrow(val),
29054                    encoder,
29055                    offset + 8,
29056                    _depth,
29057                ),
29058                Use::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
29059            }
29060        }
29061    }
29062
29063    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Use {
29064        #[inline(always)]
29065        fn new_empty() -> Self {
29066            Self::__SourceBreaking { unknown_ordinal: 0 }
29067        }
29068
29069        #[inline]
29070        unsafe fn decode(
29071            &mut self,
29072            decoder: &mut fidl::encoding::Decoder<'_, D>,
29073            offset: usize,
29074            mut depth: fidl::encoding::Depth,
29075        ) -> fidl::Result<()> {
29076            decoder.debug_check_bounds::<Self>(offset);
29077            #[allow(unused_variables)]
29078            let next_out_of_line = decoder.next_out_of_line();
29079            let handles_before = decoder.remaining_handles();
29080            let (ordinal, inlined, num_bytes, num_handles) =
29081                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
29082
29083            let member_inline_size = match ordinal {
29084                1 => <UseService as fidl::encoding::TypeMarker>::inline_size(decoder.context),
29085                2 => <UseProtocol as fidl::encoding::TypeMarker>::inline_size(decoder.context),
29086                3 => <UseDirectory as fidl::encoding::TypeMarker>::inline_size(decoder.context),
29087                4 => <UseStorage as fidl::encoding::TypeMarker>::inline_size(decoder.context),
29088                7 => <UseEventStream as fidl::encoding::TypeMarker>::inline_size(decoder.context),
29089                8 => <UseRunner as fidl::encoding::TypeMarker>::inline_size(decoder.context),
29090                9 => <UseConfiguration as fidl::encoding::TypeMarker>::inline_size(decoder.context),
29091                10 => <UseDictionary as fidl::encoding::TypeMarker>::inline_size(decoder.context),
29092                0 => return Err(fidl::Error::UnknownUnionTag),
29093                _ => num_bytes as usize,
29094            };
29095
29096            if inlined != (member_inline_size <= 4) {
29097                return Err(fidl::Error::InvalidInlineBitInEnvelope);
29098            }
29099            let _inner_offset;
29100            if inlined {
29101                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
29102                _inner_offset = offset + 8;
29103            } else {
29104                depth.increment()?;
29105                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
29106            }
29107            match ordinal {
29108                1 => {
29109                    #[allow(irrefutable_let_patterns)]
29110                    if let Use::Service(_) = self {
29111                        // Do nothing, read the value into the object
29112                    } else {
29113                        // Initialize `self` to the right variant
29114                        *self = Use::Service(fidl::new_empty!(UseService, D));
29115                    }
29116                    #[allow(irrefutable_let_patterns)]
29117                    if let Use::Service(ref mut val) = self {
29118                        fidl::decode!(UseService, D, val, decoder, _inner_offset, depth)?;
29119                    } else {
29120                        unreachable!()
29121                    }
29122                }
29123                2 => {
29124                    #[allow(irrefutable_let_patterns)]
29125                    if let Use::Protocol(_) = self {
29126                        // Do nothing, read the value into the object
29127                    } else {
29128                        // Initialize `self` to the right variant
29129                        *self = Use::Protocol(fidl::new_empty!(UseProtocol, D));
29130                    }
29131                    #[allow(irrefutable_let_patterns)]
29132                    if let Use::Protocol(ref mut val) = self {
29133                        fidl::decode!(UseProtocol, D, val, decoder, _inner_offset, depth)?;
29134                    } else {
29135                        unreachable!()
29136                    }
29137                }
29138                3 => {
29139                    #[allow(irrefutable_let_patterns)]
29140                    if let Use::Directory(_) = self {
29141                        // Do nothing, read the value into the object
29142                    } else {
29143                        // Initialize `self` to the right variant
29144                        *self = Use::Directory(fidl::new_empty!(UseDirectory, D));
29145                    }
29146                    #[allow(irrefutable_let_patterns)]
29147                    if let Use::Directory(ref mut val) = self {
29148                        fidl::decode!(UseDirectory, D, val, decoder, _inner_offset, depth)?;
29149                    } else {
29150                        unreachable!()
29151                    }
29152                }
29153                4 => {
29154                    #[allow(irrefutable_let_patterns)]
29155                    if let Use::Storage(_) = self {
29156                        // Do nothing, read the value into the object
29157                    } else {
29158                        // Initialize `self` to the right variant
29159                        *self = Use::Storage(fidl::new_empty!(UseStorage, D));
29160                    }
29161                    #[allow(irrefutable_let_patterns)]
29162                    if let Use::Storage(ref mut val) = self {
29163                        fidl::decode!(UseStorage, D, val, decoder, _inner_offset, depth)?;
29164                    } else {
29165                        unreachable!()
29166                    }
29167                }
29168                7 => {
29169                    #[allow(irrefutable_let_patterns)]
29170                    if let Use::EventStream(_) = self {
29171                        // Do nothing, read the value into the object
29172                    } else {
29173                        // Initialize `self` to the right variant
29174                        *self = Use::EventStream(fidl::new_empty!(UseEventStream, D));
29175                    }
29176                    #[allow(irrefutable_let_patterns)]
29177                    if let Use::EventStream(ref mut val) = self {
29178                        fidl::decode!(UseEventStream, D, val, decoder, _inner_offset, depth)?;
29179                    } else {
29180                        unreachable!()
29181                    }
29182                }
29183                8 => {
29184                    #[allow(irrefutable_let_patterns)]
29185                    if let Use::Runner(_) = self {
29186                        // Do nothing, read the value into the object
29187                    } else {
29188                        // Initialize `self` to the right variant
29189                        *self = Use::Runner(fidl::new_empty!(UseRunner, D));
29190                    }
29191                    #[allow(irrefutable_let_patterns)]
29192                    if let Use::Runner(ref mut val) = self {
29193                        fidl::decode!(UseRunner, D, val, decoder, _inner_offset, depth)?;
29194                    } else {
29195                        unreachable!()
29196                    }
29197                }
29198                9 => {
29199                    #[allow(irrefutable_let_patterns)]
29200                    if let Use::Config(_) = self {
29201                        // Do nothing, read the value into the object
29202                    } else {
29203                        // Initialize `self` to the right variant
29204                        *self = Use::Config(fidl::new_empty!(UseConfiguration, D));
29205                    }
29206                    #[allow(irrefutable_let_patterns)]
29207                    if let Use::Config(ref mut val) = self {
29208                        fidl::decode!(UseConfiguration, D, val, decoder, _inner_offset, depth)?;
29209                    } else {
29210                        unreachable!()
29211                    }
29212                }
29213                10 => {
29214                    #[allow(irrefutable_let_patterns)]
29215                    if let Use::Dictionary(_) = self {
29216                        // Do nothing, read the value into the object
29217                    } else {
29218                        // Initialize `self` to the right variant
29219                        *self = Use::Dictionary(fidl::new_empty!(UseDictionary, D));
29220                    }
29221                    #[allow(irrefutable_let_patterns)]
29222                    if let Use::Dictionary(ref mut val) = self {
29223                        fidl::decode!(UseDictionary, D, val, decoder, _inner_offset, depth)?;
29224                    } else {
29225                        unreachable!()
29226                    }
29227                }
29228                #[allow(deprecated)]
29229                ordinal => {
29230                    for _ in 0..num_handles {
29231                        decoder.drop_next_handle()?;
29232                    }
29233                    *self = Use::__SourceBreaking { unknown_ordinal: ordinal };
29234                }
29235            }
29236            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
29237                return Err(fidl::Error::InvalidNumBytesInEnvelope);
29238            }
29239            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
29240                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
29241            }
29242            Ok(())
29243        }
29244    }
29245}